This commit is contained in:
启星
2025-08-08 10:49:36 +08:00
parent 6400cf78bb
commit b5ce3d580a
8780 changed files with 978183 additions and 0 deletions

View File

@@ -0,0 +1,356 @@
//
// TUIChatConfig_Classic.h
// TUIChat
//
// Created by Tencent on 2024/7/16.
// Copyright © 2024 Tencent. All rights reserved.
#import <Foundation/Foundation.h>
#import "UIAlertController+TUICustomStyle.h"
#import "TUIChatShortcutMenuView.h"
#import "TUIInputMoreCellData.h"
#import <TIMCommon/TIMCommonModel.h>
#import <TIMCommon/TUIMessageCellLayout.h>
#import "TUIChatConfig.h"
NS_ASSUME_NONNULL_BEGIN
@class TUIMessageCellData;
typedef NS_ENUM(NSInteger, TUIAvatarStyle_Classic) {
TUIAvatarStyleRectangle,
TUIAvatarStyleCircle,
TUIAvatarStyleRoundedRectangle,
};
typedef NS_OPTIONS(NSInteger, TUIChatItemWhenLongPressMessage_Classic) {
TUIChatItemWhenLongPressMessage_Classic_None = 0,
TUIChatItemWhenLongPressMessage_Classic_Reply = 1 << 0,
TUIChatItemWhenLongPressMessage_Classic_EmojiReaction = 1 << 1,
TUIChatItemWhenLongPressMessage_Classic_Quote = 1 << 2,
TUIChatItemWhenLongPressMessage_Classic_Pin = 1 << 3,
TUIChatItemWhenLongPressMessage_Classic_Recall = 1 << 4,
TUIChatItemWhenLongPressMessage_Classic_Translate = 1 << 5,
TUIChatItemWhenLongPressMessage_Classic_Convert = 1 << 6,
TUIChatItemWhenLongPressMessage_Classic_Forward = 1 << 7,
TUIChatItemWhenLongPressMessage_Classic_Select = 1 << 8,
TUIChatItemWhenLongPressMessage_Classic_Copy = 1 << 9,
TUIChatItemWhenLongPressMessage_Classic_Delete = 1 << 10,
};
@protocol TUIChatConfigDelegate_Classic <NSObject>
/**
* Tells the delegate a user's avatar in the chat list is clicked.
* Returning YES indicates this event has been intercepted, and Chat will not process it further.
* Returning NO indicates this event is not intercepted, and Chat will continue to process it.
*/
- (BOOL)onUserAvatarClicked:(UIView *)view messageCellData:(TUIMessageCellData *)celldata;
/**
* Tells the delegate a user's avatar in the chat list is long pressed.
* Returning YES indicates that this event has been intercepted, and Chat will not process it further.
* Returning NO indicates that this event is not intercepted, and Chat will continue to process it.
*/
- (BOOL)onUserAvatarLongPressed:(UIView *)view messageCellData:(TUIMessageCellData *)celldata;
/**
* Tells the delegate a message in the chat list is clicked.
* Returning YES indicates that this event has been intercepted, and Chat will not process it further.
* Returning NO indicates that this event is not intercepted, and Chat will continue to process it.
*/
- (BOOL)onMessageClicked:(UIView *)view messageCellData:(TUIMessageCellData *)celldata;
/**
* Tells the delegate a message in the chat list is long pressed.
* Returning YES indicates that this event has been intercepted, and Chat will not process it further.
* Returning NO indicates that this event is not intercepted, and Chat will continue to process it.
*/
- (BOOL)onMessageLongPressed:(UIView *)view messageCellData:(TUIMessageCellData *)celldata;
@end
@interface TUIChatConfig_Classic : NSObject
+ (TUIChatConfig_Classic *)sharedConfig;
/**
* The object that acts as the delegate of the TUIChatMessageConfig_Minimalist.
*/
@property (nonatomic, weak) id<TUIChatConfigDelegate_Classic> delegate;
/**
* Customize the backgroud color of message list interface.
* This configuration takes effect in all message list interfaces.
*/
@property (nonatomic, strong) UIColor *backgroudColor;
/**
* Customize the backgroud image of message list interface.
* This configuration takes effect in all message list interfaces.
*/
@property (nonatomic, strong) UIImage *backgroudImage;
/**
* Customize the style of avatar.
* The default value is TUIAvatarStyleCircle.
* This configuration takes effect in all avatars.
*/
@property (nonatomic, assign) TUIAvatarStyle_Classic avatarStyle;
/**
* Customize the corner radius of the avatar.
* This configuration takes effect in all avatars.
*/
@property (nonatomic, assign) CGFloat avatarCornerRadius;
/**
* Display the group avatar in the nine-square grid style.
* The default value is YES.
* This configuration takes effect in all groups.
*/
@property (nonatomic, assign) BOOL enableGroupGridAvatar;
/**
* Default avatar image.
* This configuration takes effect in all avatars.
*/
@property (nonatomic, strong) UIImage *defaultAvatarImage;
/**
* Enable the display "Alice is typing..." on one-to-one chat interface.
* The default value is YES.
* This configuration takes effect in all one-to-one chat message list interfaces.
*/
@property (nonatomic, assign) BOOL enableTypingIndicator;
/**
* When sending a message, set this flag to require message read receipt.
* The default value is NO.
* This configuration takes effect in all chat message list interfaces.
*/
@property (nonatomic, assign) BOOL isMessageReadReceiptNeeded;
/**
* Hide the "Video Call" button in the message list header.
* The default value is NO.
*/
@property (nonatomic, assign) BOOL hideVideoCallButton;
/**
* Hide the "Audio Call" button in the message list header.
* The default value is NO.
*/
@property (nonatomic, assign) BOOL hideAudioCallButton;
/**
* Turn on audio and video call floating windows,
* The default value is YES.
*/
@property (nonatomic, assign) BOOL enableFloatWindowForCall;
/**
* Enable multi-terminal login function for audio and video calls
* The default value is NO.
*/
@property (nonatomic, assign) BOOL enableMultiDeviceForCall;
/**
* Set this parameter when the sender sends a message, and the receiver will not update the unread count after receiving the message.
* The default value is NO.
*/
@property (nonatomic, assign) BOOL isExcludedFromUnreadCount;
/**
* Set this parameter when the sender sends a message, and the receiver will not update the last message of the conversation after receiving the message.
* The default value is NO.
*/
@property (nonatomic, assign) BOOL isExcludedFromLastMessage;
/**
* Time interval within which a message can be recalled after being sent.
* The default value is 120 seconds.
* If you want to adjust this configuration, please modify the setting on Chat Console synchronously: https://trtc.io/document/34419?platform=web&product=chat&menulabel=uikit#message-recall-settings
*/
@property (nonatomic, assign) NSUInteger timeIntervalForAllowedMessageRecall;
/**
* Maximum audio recording duration, no more than 60s.
* The default value is 60 seconds.
*/
@property (nonatomic, assign) CGFloat maxAudioRecordDuration;
/**
* Maximum video recording duration, no more than 15s.
* The default value is 15 seconds.
*/
@property (nonatomic, assign) CGFloat maxVideoRecordDuration;
/**
* Enable custom ringtone.
* This config takes effect only for Android devices.
*/
@property (nonatomic, assign) BOOL enableAndroidCustomRing;
/**
* Hide the items in the pop-up menu when user presses the message.
*/
+ (void)hideItemsWhenLongPressMessage:(TUIChatItemWhenLongPressMessage_Classic)items;
/**
* Call this method to use speakers instead of handsets by default when playing voice messages.
*/
+ (void)setPlayingSoundMessageViaSpeakerByDefault;
/**
* Add a custom view at the top of the chat interface.
* This view will be displayed at the top of the message list and will not slide up.
*/
+ (void)setCustomTopView:(UIView *)view;
/**
* Register custom message.
* - Parameters:
* - businessID: Customized messages businessID, which is unique.
* - cellName: Customized message's MessagCell class name.
* - cellDataName: Customized message's MessagCellData class name.
*/
- (void)registerCustomMessage:(NSString *)businessID
messageCellClassName:(NSString *)cellName
messageCellDataClassName:(NSString *)cellDataName;
@end
@interface TUIChatConfig_Classic (MessageStyle)
/**
* The color of send text message.
*/
@property(nonatomic, assign) UIColor *sendTextMessageColor;
/**
* The font of send text message.
*/
@property(nonatomic, assign) UIFont *sendTextMessageFont;
/**
* The color of receive text message.
*/
@property(nonatomic, assign) UIColor *receiveTextMessageColor;
/**
* The font of receive text message.
*/
@property(nonatomic, assign) UIFont *receiveTextMessageFont;
/**
* The text color of system message.
*/
@property (nonatomic, strong) UIColor *systemMessageTextColor;
/**
* The font of system message.
*/
@property (nonatomic, strong) UIFont *systemMessageTextFont;
/**
* The background color of system message.
*/
@property (nonatomic, strong) UIColor *systemMessageBackgroundColor;
/**
* The font of user's nickname of received messages.
*/
@property (nonatomic, strong) UIFont *receiveNicknameFont;
/**
* The color of user's nickname of received messages.
*/
@property (nonatomic, strong) UIColor *receiveNicknameColor;
@end
@interface TUIChatConfig_Classic (MessageLayout)
/**
* Text message cell layout of my sent message.
*/
@property(nonatomic, assign, readonly) TUIMessageCellLayout *sendTextMessageLayout;
/**
* Text message cell layout of my received message.
*/
@property(nonatomic, assign, readonly) TUIMessageCellLayout *receiveTextMessageLayout;
/**
* Image message cell layout of my sent message.
*/
@property(nonatomic, assign, readonly) TUIMessageCellLayout *sendImageMessageLayout;
/**
* Image message cell layout of my received message.
*/
@property(nonatomic, assign, readonly) TUIMessageCellLayout *receiveImageMessageLayout;
/**
* Voice message cell layout of my sent message.
*/
@property(nonatomic, assign, readonly) TUIMessageCellLayout *sendVoiceMessageLayout;
/**
* Voice message cell layout of my received message.
*/
@property(nonatomic, assign, readonly) TUIMessageCellLayout *receiveVoiceMessageLayout;
/**
* Video message cell layout of my sent message.
*/
@property(nonatomic, assign, readonly) TUIMessageCellLayout *sendVideoMessageLayout;
/**
* Video message cell layout of my received message.
*/
@property(nonatomic, assign, readonly) TUIMessageCellLayout *receiveVideoMessageLayout;
/**
* Other message cell layout of my sent message.
*/
@property(nonatomic, assign, readonly) TUIMessageCellLayout *sendMessageLayout;
/**
* Other message cell layout of my received message.
*/
@property(nonatomic, assign, readonly) TUIMessageCellLayout *receiveMessageLayout;
/**
* System message cell layout.
*/
@property(nonatomic, assign, readonly) TUIMessageCellLayout *systemMessageLayout;
@end
@interface TUIChatConfig_Classic (MessageBubble)
/**
* Enable the message display in the bubble style.
* The default value is YES.
*/
@property(nonatomic, assign) BOOL enableMessageBubbleStyle;
/**
* Set the background image of the sent message bubble in consecutive message.
*/
@property (nonatomic, strong) UIImage *sendBubbleBackgroundImage;
/**
* Set the background image of the sent message bubble in highlight status.
*/
@property (nonatomic, strong) UIImage *sendHighlightBubbleBackgroundImage;
/**
* Set the light background image when the sent message bubble needs to flicker.
*/
@property (nonatomic, strong) UIImage *sendAnimateLightBubbleBackgroundImage;
/**
* Set the dark background image when the sent message bubble needs to flicker.
*/
@property (nonatomic, strong) UIImage *sendAnimateDarkBubbleBackgroundImage;
/**
* Set the background image of the sent error message bubble.
*/
@property (nonatomic, strong) UIImage *sendErrorBubbleBackgroundImage;
/**
* Set the background image of the received message bubble in consecutive message.
*/
@property (nonatomic, strong) UIImage *receiveBubbleBackgroundImage;
/**
* Set the background image of the received message bubble in highlight status.
*/
@property (nonatomic, strong) UIImage *receiveHighlightBubbleBackgroundImage;
/**
* Set the light background image when the received message bubble needs to flicker.
*/
@property (nonatomic, strong) UIImage *receiveAnimateLightBubbleBackgroundImage;
/**
* Set the dark background image when the received message bubble needs to flicker.
*/
@property (nonatomic, strong) UIImage *receiveAnimateDarkBubbleBackgroundImage;
/**
* Set the background image of the received error message bubble.
*/
@property (nonatomic, strong) UIImage *receiveErrorBubbleBackgroundImage;
@end
@interface TUIChatConfig_Classic (InputBar)
/**
* DataSource for inputBar.
*/
@property (nonatomic, weak) id<TUIChatInputBarConfigDataSource> inputBarDataSource;
/**
* DataSource for shortcutView above inputBar.
*/
@property (nonatomic, weak) id<TUIChatShortcutViewDataSource> shortcutViewDataSource;
/**
* Show the input bar in the message list interface.
* The default value is YES.
*/
@property(nonatomic, assign) BOOL showInputBar;
/**
* Hide items in more menu.
*/
+ (void)hideItemsInMoreMenu:(TUIChatInputBarMoreMenuItem)items;
/**
* Add sticker group.
*/
- (void)addStickerGroup:(TUIFaceGroup *)group;
@end
NS_ASSUME_NONNULL_END