Files
featherVoice/TUIKit/TIMCommon/CommonModel/TIMCommonModel.h
2025-08-08 10:49:36 +08:00

588 lines
18 KiB
Objective-C

//
// TIMCommonModel.h
// TIMCommon
//
// Created by cologne on 2023/3/14.
// Copyright © 2023 Tencent. All rights reserved.
//
#import <Foundation/Foundation.h>
#import <TUICore/TUICommonModel.h>
#import "TIMDefine.h"
NS_ASSUME_NONNULL_BEGIN
////////////////////////////////////////////////////////////////////////////////
//
// TUIPopView
//
/////////////////////////////////////////////////////////////////////////////////
@class TUIPopView;
@protocol TUIPopViewDelegate <NSObject>
- (void)popView:(TUIPopView *)popView didSelectRowAtIndex:(NSInteger)index;
@end
@interface TUIPopView : UIView
@property(nonatomic, strong) UITableView *tableView;
@property(nonatomic, assign) CGPoint arrowPoint;
@property(nonatomic, weak) id<TUIPopViewDelegate> delegate;
- (void)setData:(NSMutableArray *)data;
- (void)showInWindow:(UIWindow *)window;
@end
@interface TUIPopCellData : NSObject
@property(nonatomic, strong) UIImage *image;
@property(nonatomic, strong) NSString *title;
@end
@interface TUIPopCell : UITableViewCell
@property(nonatomic, strong) UIImageView *image;
@property(nonatomic, strong) UILabel *title;
+ (CGFloat)getHeight;
- (void)setData:(TUIPopCellData *)data;
@end
/////////////////////////////////////////////////////////////////////////////////
//
// TUIModifyView
//
/////////////////////////////////////////////////////////////////////////////////
@class TUIModifyView;
@protocol TUIModifyViewDelegate <NSObject>
- (void)modifyView:(TUIModifyView *)modifyView didModiyContent:(NSString *)content;
@end
@interface TUIModifyViewData : NSObject
@property(nonatomic, strong) NSString *title;
@property(nonatomic, strong) NSString *content;
@property(nonatomic, strong) NSString *desc;
@property(nonatomic, assign) BOOL enableNull;
@end
@interface TUIModifyView : UIView
@property(nonatomic, strong) UIView *container;
@property(nonatomic, strong) UILabel *title;
@property(nonatomic, strong) UITextField *content;
@property(nonatomic, strong) UILabel *descLabel;
@property(nonatomic, strong) UIButton *confirm;
@property(nonatomic, strong) UIView *hLine;
@property(nonatomic, weak) id<TUIModifyViewDelegate> delegate;
- (void)setData:(TUIModifyViewData *)data;
- (void)showInWindow:(UIWindow *)window;
@end
/////////////////////////////////////////////////////////////////////////////////
//
// TUINaviBarIndicatorView
//
/////////////////////////////////////////////////////////////////////////////////
@interface TUINaviBarIndicatorView : UIView
@property(nonatomic, strong) UIActivityIndicatorView *indicator;
@property(nonatomic, strong) UILabel *label;
@property(nonatomic, assign) CGFloat maxLabelLength;
- (void)setTitle:(NSString *)title;
- (void)startAnimating;
- (void)stopAnimating;
@end
/////////////////////////////////////////////////////////////////////////////////
//
// TUICommonCell & data
//
/////////////////////////////////////////////////////////////////////////////////
@interface TUICommonCellData : NSObject
@property(strong) NSString *reuseId;
@property(nonatomic, assign) SEL cselector;
@property(nonatomic, strong) NSDictionary *ext;
- (CGFloat)heightOfWidth:(CGFloat)width;
- (CGFloat)estimatedHeight;
@end
@interface TUICommonTableViewCell : UITableViewCell
@property(readonly) TUICommonCellData *data;
@property UIColor *colorWhenTouched;
@property BOOL changeColorWhenTouched;
- (void)fillWithData:(TUICommonCellData *)data;
@end
/////////////////////////////////////////////////////////////////////////////////
//
// TUICommonTextCell & data
//
/////////////////////////////////////////////////////////////////////////////////
@interface TUICommonTextCellData : TUICommonCellData
@property NSString *key;
@property NSString *value;
@property BOOL showAccessory;
@property UIColor *keyColor;
@property UIColor *valueColor;
@property BOOL enableMultiLineValue;
@property(nonatomic, assign) UIEdgeInsets keyEdgeInsets;
@end
@interface TUICommonTextCell : TUICommonTableViewCell
@property UILabel *keyLabel;
@property UILabel *valueLabel;
@property(readonly) TUICommonTextCellData *textData;
- (void)fillWithData:(TUICommonTextCellData *)data;
@end
/////////////////////////////////////////////////////////////////////////////////
//
// TUICommonSwitchCell & data
//
/////////////////////////////////////////////////////////////////////////////////
@interface TUICommonSwitchCellData : TUICommonCellData
@property NSString *title;
@property NSString *desc;
@property(getter=isOn) BOOL on;
@property CGFloat margin;
@property SEL cswitchSelector;
@property(nonatomic, assign) BOOL displaySeparatorLine;
@property(nonatomic, assign) BOOL disableChecked;
@end
@interface TUICommonSwitchCell : TUICommonTableViewCell
@property UILabel *titleLabel; // main title label
@property UILabel *descLabel; // detail title label below the main title label, used for explaining details
@property UISwitch *switcher;
@property(readonly) TUICommonSwitchCellData *switchData;
- (void)fillWithData:(TUICommonSwitchCellData *)data;
@end
/////////////////////////////////////////////////////////////////////////////////
//
// TUIButtonCell & data
//
/////////////////////////////////////////////////////////////////////////////////
typedef enum : NSUInteger {
ButtonGreen,
ButtonWhite,
ButtonRedText,
ButtonBule,
} TUIButtonStyle;
@interface TUIButtonCellData : TUICommonCellData
@property(nonatomic, strong) NSString *title;
@property SEL cbuttonSelector;
@property TUIButtonStyle style;
@property(nonatomic, strong) UIColor *textColor;
@property(nonatomic, assign) BOOL hideSeparatorLine;
@end
@interface TUIButtonCell : TUICommonTableViewCell
@property(nonatomic, strong) UIButton *button;
@property TUIButtonCellData *buttonData;
- (void)fillWithData:(TUIButtonCellData *)data;
@end
/////////////////////////////////////////////////////////////////////////////////
//
// TUIGroupPendencyCell & data
//
/////////////////////////////////////////////////////////////////////////////////
#define TUIGroupPendencyCellData_onPendencyChanged @"TUIGroupPendencyCellData_onPendencyChanged"
@interface TUIGroupPendencyCellData : TUICommonCellData
@property(nonatomic, strong) NSString *groupId;
@property(nonatomic, strong) NSString *fromUser;
@property(nonatomic, strong) NSString *toUser;
@property(readonly) V2TIMGroupApplication *pendencyItem;
@property NSURL *avatarUrl;
@property NSString *title;
/**
* The joining group introduction of the requester. Such as "Xiao Ming applied to join the group".
*/
@property NSString *requestMsg;
/**
* Agree or Not
* YES: Agree; NO: Indicates that the current request was not granted, but does not mean that the request has been denied.
*/
@property BOOL isAccepted;
/**
*
* Refuse or Not
* YES: Refuse; NO: Indicates that the current request is not denied, but does not mean that the request has been granted.
*/
@property BOOL isRejectd;
@property SEL cbuttonSelector;
- (instancetype)initWithPendency:(V2TIMGroupApplication *)args;
typedef void (^TUIGroupPendencyCellDataSuccessCallback)(void);
typedef void (^TUIGroupPendencyCellDataFailureCallback)(int code, NSString *msg);
- (void)agreeWithSuccess:(TUIGroupPendencyCellDataSuccessCallback)success
failure:(TUIGroupPendencyCellDataFailureCallback)failure;
- (void)rejectWithSuccess:(TUIGroupPendencyCellDataSuccessCallback)success
failure:(TUIGroupPendencyCellDataFailureCallback)failure;
- (void)accept;
- (void)reject;
@end
@interface TUIGroupPendencyCell : TUICommonTableViewCell
@property UIImageView *avatarView;
@property UILabel *titleLabel;
@property UILabel *addWordingLabel;
@property UIButton *agreeButton;
@property TUIGroupPendencyCellData *pendencyData;
- (void)fillWithData:(TUIGroupPendencyCellData *)pendencyData;
@end
/////////////////////////////////////////////////////////////////////////////////
//
// TUIFaceCell & data
//
/////////////////////////////////////////////////////////////////////////////////
/**
* 【Module name】 TUIFaceCellData
* 【Function description]】The name and local storage path of the stored emoticon.
*/
@interface TUIFaceCellData : NSObject
/**
* The name of emoticon
*/
@property(nonatomic, strong) NSString *name;
/**
* The localized name of the emoticon (the attribute used for internationalization, if it is empty or the length is 0, the name is displayed by default)
*/
@property(nonatomic, copy) NSString *localizableName;
/**
* The storage path of the emoticon cached locally.
*/
@property(nonatomic, strong) NSString *path;
@end
/**
* 【Module name】TUIFaceCell
* 【Function description】 Store the image of the emoticon, and initialize the Cell according to TUIFaceCellData.
* In the emoticon view, TUIFaceCell is the unit displayed on the interface.
*/
@interface TUIFaceCell : UICollectionViewCell
/**
* The image view for displaying emoticon
*/
@property(nonatomic, strong) UIImageView *face;
@property(nonatomic, strong) UIImage *staicImage;
@property(nonatomic, strong) UIImage *gifImage;
@property(nonatomic, copy) void(^longPressCallback)(UILongPressGestureRecognizer *recognizer);
- (void)setData:(TUIFaceCellData *)data;
@end
/////////////////////////////////////////////////////////////////////////////////
//
// TUIFaceGroup
//
/////////////////////////////////////////////////////////////////////////////////
/**
* 【Module name】 TUIFaceGroup
* 【Function description】 It is used to realize the grouping of emoticon, which is convenient for users to browse and select under different emoticon themes.
* This class stores the index of each emoticon group, so that FaceView can locate each emoticon group.
* At the same time, this class stores the path of all emoticon pictures in an emoticon group, and provides data such as the number of lines, the number of
* emoticons in each line, etc., to locate specific emoticons
*/
@interface TUIFaceGroup : NSObject
/**
* Index of emoticons group, begining with zero.
*/
@property(nonatomic, assign) int groupIndex;
/**
* The resource path of the entire expression group
*/
@property(nonatomic, strong) NSString *groupPath;
/**
* The number of lines of emoticons in the emoticon group
*/
@property(nonatomic, assign) int rowCount;
/**
* The number of emoticons contained in each line
*/
@property(nonatomic, assign) int itemCountPerRow;
@property(nonatomic, strong) NSMutableArray *faces;
@property(nonatomic, strong) NSDictionary *facesMap;
/**
* The flag of indicating whether to display the delete button
* When set to YES, FaceView will display a "delete" icon in the lower right corner of the emoticon view. Clicking the icon can delete the entered emoticon
* directly without evoking the keyboard.
*/
@property(nonatomic, assign) BOOL needBackDelete;
/**
* The path to the cover image of the emoticon group
*/
@property(nonatomic, strong) NSString *menuPath;
@property(nonatomic, strong) TUIFaceGroup *recentGroup;
@property(nonatomic, assign) BOOL isNeedAddInInputBar;
@property(nonatomic, copy) NSString *groupName;
@end
@interface TUIEmojiTextAttachment : NSTextAttachment
@property(nonatomic, strong) TUIFaceCellData *faceCellData;
@property(nonatomic, copy) NSString *emojiTag;
@property(nonatomic, assign) CGSize emojiSize; // For emoji image size
@end
/////////////////////////////////////////////////////////////////////////////////
//
// TUIUnReadView
//
/////////////////////////////////////////////////////////////////////////////////
@interface TUIUnReadView : UIView
/**
* The label of displaying unread message count
*/
@property(nonatomic, strong) UILabel *unReadLabel;
/**
* Set the unread message count
*/
- (void)setNum:(NSInteger)num;
@end
/////////////////////////////////////////////////////////////////////////////////
//
// TUIConversationPin
//
/////////////////////////////////////////////////////////////////////////////////
extern NSString *kTopConversationListChangedNotification;
@interface TUIConversationPin : NSObject
+ (instancetype)sharedInstance;
/**
*
* Getting the list of pinned conversations
*/
- (NSArray *)topConversationList;
/**
*
* Pin the conversation
*/
- (void)addTopConversation:(NSString *)conv callback:(void (^__nullable)(BOOL success, NSString *__nullable errorMessage))callback;
/**
*
* Remove pinned conversations
*/
- (void)removeTopConversation:(NSString *)conv callback:(void (^__nullable)(BOOL success, NSString *__nullable errorMessage))callback;
@end
/////////////////////////////////////////////////////////////////////////////////
//
// TUICommonContactSelectCellData
//
/////////////////////////////////////////////////////////////////////////////////
@interface TUICommonContactSelectCellData : TUICommonCellData
@property(nonatomic, strong) NSString *identifier;
@property(nonatomic, strong) NSString *title;
@property(nonatomic, strong) NSURL *avatarUrl;
@property(nonatomic, strong) UIImage *avatarImage;
@property(nonatomic, getter=isSelected) BOOL selected;
@property(nonatomic, getter=isEnabled) BOOL enabled;
@end
/////////////////////////////////////////////////////////////////////////////////
//
// TUICommonContactListPickerCell
//
/////////////////////////////////////////////////////////////////////////////////
@interface TUICommonContactListPickerCell : UICollectionViewCell
@property UIImageView *avatar;
@end
/////////////////////////////////////////////////////////////////////////////////
//
// TUIContactListPickerOnCancel
//
/////////////////////////////////////////////////////////////////////////////////
typedef void (^TUIContactListPickerOnCancel)(TUICommonContactSelectCellData *data);
@interface TUIContactListPicker : UIControl
@property(nonatomic, strong, readonly) UIButton *accessoryBtn;
@property(nonatomic, strong) NSArray<TUICommonContactSelectCellData *> *selectArray;
@property(nonatomic, copy) TUIContactListPickerOnCancel onCancel;
@end
/////////////////////////////////////////////////////////////////////////////////
//
// TUIProfileCardCell & vc
//
/////////////////////////////////////////////////////////////////////////////////
@class TUIProfileCardCell;
@protocol TUIProfileCardDelegate <NSObject>
- (void)didTapOnAvatar:(TUIProfileCardCell *)cell;
@end
@interface TUIProfileCardCellData : TUICommonCellData
@property(nonatomic, strong) UIImage *avatarImage;
@property(nonatomic, strong) NSURL *avatarUrl;
@property(nonatomic, strong) NSString *name;
@property(nonatomic, strong) NSString *identifier;
@property(nonatomic, strong) NSString *signature;
@property(nonatomic, strong) UIImage *genderIconImage;
@property(nonatomic, strong) NSString *genderString;
@property BOOL showAccessory;
@property BOOL showSignature;
@end
@interface TUIProfileCardCell : TUICommonTableViewCell
@property(nonatomic, strong) UIImageView *avatar;
@property(nonatomic, strong) UILabel *name;
@property(nonatomic, strong) UILabel *identifier;
@property(nonatomic, strong) UILabel *signature;
@property(nonatomic, strong) UIImageView *genderIcon;
@property(nonatomic, strong) TUIProfileCardCellData *cardData;
@property(nonatomic, weak) id<TUIProfileCardDelegate> delegate;
- (void)fillWithData:(TUIProfileCardCellData *)data;
@end
@interface TUIAvatarViewController : UIViewController
@property(nonatomic, strong) TUIProfileCardCellData *avatarData;
@end
typedef NS_ENUM(NSUInteger, TUISelectAvatarType) {
TUISelectAvatarTypeUserAvatar,
TUISelectAvatarTypeGroupAvatar,
TUISelectAvatarTypeCover,
TUISelectAvatarTypeConversationBackGroundCover,
};
@interface TUISelectAvatarCardItem : NSObject
@property(nonatomic, strong) NSString *posterUrlStr;
@property(nonatomic, assign) BOOL isSelect;
@property(nonatomic, copy) NSString *fullUrlStr;
@property(nonatomic, assign) BOOL isDefaultBackgroundItem;
@property(nonatomic, assign) BOOL isGroupGridAvatar;
@property(nonatomic, copy) NSString *createGroupType;
@property(nonatomic, strong) UIImage *cacheGroupGridAvatarImage;
@end
@interface TUISelectAvatarController : UIViewController
@property(nonatomic, copy) void (^selectCallBack)(NSString *urlStr);
@property(nonatomic, assign) TUISelectAvatarType selectAvatarType;
@property(nonatomic, copy) NSString *profilFaceURL;
@property(nonatomic, strong) UIImage *cacheGroupGridAvatarImage;
@property(nonatomic, copy) NSString *createGroupType;
@end
/////////////////////////////////////////////////////////////////////////////////
//
// TUICommonAvatarCell & Data
//
/////////////////////////////////////////////////////////////////////////////////
@interface TUICommonAvatarCellData : TUICommonCellData
;
@property(nonatomic, strong) NSString *key;
@property(nonatomic, strong) NSString *value;
@property BOOL showAccessory;
@property(nonatomic, strong) UIImage *avatarImage;
@property(nonatomic, strong) NSURL *avatarUrl;
@end
@interface TUICommonAvatarCell : TUICommonTableViewCell
@property UILabel *keyLabel;
@property UILabel *valueLabel;
@property UIImageView *avatar;
@property(readonly) TUICommonAvatarCellData *avatarData;
- (void)fillWithData:(TUICommonAvatarCellData *)avatarData;
@end
/////////////////////////////////////////////////////////////////////////////////
//
// TUIConversationGroupItem
//
/////////////////////////////////////////////////////////////////////////////////
extern NSUInteger kConversationMarkStarType;
@interface TUIConversationGroupItem : NSObject
@property(nonatomic, strong) NSString *groupName;
@property(nonatomic, assign) NSInteger unreadCount;
@property(nonatomic, assign) NSInteger groupIndex;
@property(nonatomic, assign) BOOL isShow;
@property(nonatomic, strong) UIButton *groupBtn;
@end
@interface TUISendMessageAppendParams : NSObject
@property (nonatomic, assign) BOOL isSendPushInfo;
@property (nonatomic, assign) BOOL isOnlineUserOnly;
@property (nonatomic, assign) V2TIMMessagePriority priority;
+ (instancetype)defaultConfig;
@end
NS_ASSUME_NONNULL_END