2015-10-01 18:19:52 +02:00
|
|
|
#import "TGConversationFooterController.h"
|
|
|
|
|
|
|
|
NSString *const TGConversationFooterIdentifier = @"TGConversationFooter";
|
|
|
|
|
|
|
|
@implementation TGConversationFooterController
|
|
|
|
|
|
|
|
- (void)setOptions:(TGConversationFooterOptions)options
|
|
|
|
{
|
|
|
|
[self setOptions:options animated:false];
|
|
|
|
}
|
|
|
|
|
|
|
|
- (void)setOptions:(TGConversationFooterOptions)options animated:(bool)animated
|
|
|
|
{
|
|
|
|
void (^changeBlock)() = ^
|
|
|
|
{
|
|
|
|
if (options == _options)
|
|
|
|
return;
|
|
|
|
|
|
|
|
_options = options;
|
|
|
|
|
|
|
|
bool isSendMessage = options & TGConversationFooterOptionsSendMessage;
|
|
|
|
bool isStartBot = options & TGConversationFooterOptionsStartBot;
|
|
|
|
bool isRestartBot = options & TGConversationFooterOptionsRestartBot;
|
|
|
|
bool isUnblock = options & TGConversationFooterOptionsUnblock;
|
|
|
|
bool isInactive = options & TGConversationFooterOptionsInactive;
|
|
|
|
|
|
|
|
bool hasCommandsButton = options & TGConversationFooterOptionsBotCommands;
|
|
|
|
bool hasKeyboardButton = options & TGConversationFooterOptionsBotKeyboard;
|
|
|
|
bool hasVoiceButton = options & TGConversationFooterOptionsVoice;
|
|
|
|
|
|
|
|
if (isSendMessage)
|
|
|
|
{
|
|
|
|
self.attachmentsGroup.hidden = false;
|
|
|
|
self.bottomButton.hidden = false;
|
2016-02-25 01:03:51 +01:00
|
|
|
self.bottomButton.title = TGLocalized(@"Watch.Conversation.Reply");
|
2015-10-01 18:19:52 +02:00
|
|
|
|
|
|
|
NSInteger buttonCount = 2;
|
|
|
|
CGFloat buttonWidth = 0.5f;
|
|
|
|
if (hasCommandsButton || hasKeyboardButton)
|
|
|
|
buttonCount += 1;
|
|
|
|
if (hasVoiceButton)
|
|
|
|
buttonCount += 1;
|
|
|
|
|
|
|
|
buttonWidth = 1.0f / buttonCount;
|
|
|
|
|
|
|
|
bool commandButtonHidden = (!hasCommandsButton && !hasKeyboardButton);
|
|
|
|
[self.commandsButton setHidden:commandButtonHidden];
|
|
|
|
[self.voiceButton setHidden:!hasVoiceButton];
|
|
|
|
|
|
|
|
if (!commandButtonHidden)
|
|
|
|
[self.commandsIcon setImageNamed:hasCommandsButton ? @"BotCommandIcon": @"BotKeyboardIcon"];
|
|
|
|
|
|
|
|
[self.commandsButton setRelativeWidth:commandButtonHidden ? 0.0 : buttonWidth withAdjustment:0];
|
|
|
|
[self.voiceButton setRelativeWidth:!hasVoiceButton ? 0.0 : buttonWidth withAdjustment:0];
|
|
|
|
[self.stickerButton setRelativeWidth:buttonWidth withAdjustment:0];
|
|
|
|
[self.locationButton setRelativeWidth:buttonWidth withAdjustment:0];
|
|
|
|
}
|
|
|
|
else if (isStartBot)
|
|
|
|
{
|
|
|
|
self.attachmentsGroup.hidden = true;
|
|
|
|
self.bottomButton.hidden = false;
|
|
|
|
self.bottomButton.title = TGLocalized(@"Bot.Start");
|
|
|
|
}
|
|
|
|
else if (isRestartBot)
|
|
|
|
{
|
|
|
|
self.attachmentsGroup.hidden = true;
|
|
|
|
self.bottomButton.hidden = false;
|
2016-02-25 01:03:51 +01:00
|
|
|
self.bottomButton.title = TGLocalized(@"Watch.Bot.Restart");
|
2015-10-01 18:19:52 +02:00
|
|
|
}
|
|
|
|
else if (isUnblock)
|
|
|
|
{
|
|
|
|
self.attachmentsGroup.hidden = true;
|
|
|
|
self.bottomButton.hidden = false;
|
2016-02-25 01:03:51 +01:00
|
|
|
self.bottomButton.title = TGLocalized(@"Watch.Conversation.Unblock");
|
2015-10-01 18:19:52 +02:00
|
|
|
}
|
|
|
|
else if (isInactive)
|
|
|
|
{
|
|
|
|
self.attachmentsGroup.hidden = true;
|
|
|
|
self.bottomButton.hidden = true;
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
if (animated)
|
|
|
|
self.animate(changeBlock);
|
|
|
|
else
|
|
|
|
changeBlock();
|
|
|
|
}
|
|
|
|
|
|
|
|
- (IBAction)commandsButtonPressedAction
|
|
|
|
{
|
|
|
|
if (self.commandsPressed != nil)
|
|
|
|
self.commandsPressed();
|
|
|
|
}
|
|
|
|
|
|
|
|
- (IBAction)stickerButtonPressedAction
|
|
|
|
{
|
|
|
|
if (self.stickerPressed != nil)
|
|
|
|
self.stickerPressed();
|
|
|
|
}
|
|
|
|
|
|
|
|
- (IBAction)locationButtonPressedAction
|
|
|
|
{
|
|
|
|
if (self.locationPressed != nil)
|
|
|
|
self.locationPressed();
|
|
|
|
}
|
|
|
|
|
|
|
|
- (IBAction)voiceButtonPressedAction
|
|
|
|
{
|
|
|
|
if (self.voicePressed != nil)
|
|
|
|
self.voicePressed();
|
|
|
|
}
|
|
|
|
|
|
|
|
- (IBAction)bottomButtonPressedAction
|
|
|
|
{
|
|
|
|
bool isSendMessage = _options & TGConversationFooterOptionsSendMessage;
|
|
|
|
bool isStartBot = _options & TGConversationFooterOptionsStartBot;
|
|
|
|
bool isRestartBot = _options & TGConversationFooterOptionsRestartBot;
|
|
|
|
bool isUnblock = _options & TGConversationFooterOptionsUnblock;
|
|
|
|
|
|
|
|
if (isSendMessage)
|
|
|
|
{
|
|
|
|
if (self.replyPressed != nil)
|
|
|
|
self.replyPressed();
|
|
|
|
}
|
|
|
|
else if (isStartBot)
|
|
|
|
{
|
|
|
|
if (self.startPressed != nil)
|
|
|
|
self.startPressed();
|
|
|
|
}
|
|
|
|
else if (isRestartBot)
|
|
|
|
{
|
|
|
|
if (self.restartPressed != nil)
|
|
|
|
self.restartPressed();
|
|
|
|
}
|
|
|
|
else if (isUnblock)
|
|
|
|
{
|
|
|
|
if (self.unblockPressed != nil)
|
|
|
|
self.unblockPressed();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
#pragma mark -
|
|
|
|
|
|
|
|
+ (NSString *)identifier
|
|
|
|
{
|
|
|
|
return TGConversationFooterIdentifier;
|
|
|
|
}
|
|
|
|
|
|
|
|
@end
|