1
0
mirror of https://github.com/danog/Telegram.git synced 2024-12-04 02:17:51 +01:00
Telegram/Watch/Extension/TGBotKeyboardController.m
2015-10-01 19:19:52 +03:00

107 lines
2.5 KiB
Objective-C

#import "TGBotKeyboardController.h"
#import "TGBridgeBotReplyMarkup.h"
#import "WKInterfaceTable+TGDataDrivenTable.h"
#import "TGBotKeyboardButtonController.h"
NSString *const TGBotKeyboardControllerIdentifier = @"TGBotKeyboardController";
@implementation TGBotKeyboardControllerContext
@end
@interface TGBotKeyboardController () <TGTableDataSource>
{
TGBotKeyboardControllerContext *_context;
TGBridgeBotReplyMarkup *_replyMarkup;
}
@end
@implementation TGBotKeyboardController
- (instancetype)init
{
self = [super init];
if (self != nil)
{
[self.table _setInitialHidden:true];
self.table.tableDataSource = self;
}
return self;
}
- (void)configureWithContext:(TGBotKeyboardControllerContext *)context
{
_context = context;
_replyMarkup = context.replyMarkup;
[self.table reloadData];
}
#pragma mark -
- (NSUInteger)numberOfRowsInTable:(WKInterfaceTable *)table section:(NSUInteger)section
{
return [self numberOfAvailableButtons];
}
- (Class)table:(WKInterfaceTable *)table rowControllerClassAtIndexPath:(TGIndexPath *)indexPath
{
return [TGBotKeyboardButtonController class];
}
- (void)table:(WKInterfaceTable *)table updateRowController:(TGBotKeyboardButtonController *)controller forIndexPath:(TGIndexPath *)indexPath
{
TGBridgeBotReplyMarkupButton *button = [self buttonForRow:indexPath.row];
[controller updateWithButton:button];
}
- (void)table:(WKInterfaceTable *)table didSelectRowAtIndexPath:(TGIndexPath *)indexPath
{
[self dismissController];
TGBridgeBotReplyMarkupButton *button = [self buttonForRow:indexPath.row];
if (_context.completionBlock != nil)
_context.completionBlock(button.text);
}
#pragma mark -
- (TGBridgeBotReplyMarkupButton *)buttonForRow:(NSUInteger)row
{
NSRange currentRange = NSMakeRange(0, 0);
for (TGBridgeBotReplyMarkupRow *markupRow in _replyMarkup.rows)
{
NSArray *buttons = markupRow.buttons;
currentRange = NSMakeRange(currentRange.location + currentRange.length, buttons.count);
NSInteger transposedRow = row - currentRange.location;
if (transposedRow >= 0 && transposedRow < currentRange.length)
return buttons[transposedRow];
}
return nil;
}
- (NSUInteger)numberOfAvailableButtons
{
NSUInteger count = 0;
for (TGBridgeBotReplyMarkupRow *row in _replyMarkup.rows)
count += row.buttons.count;
return count;
}
#pragma mark -
+ (NSString *)identifier
{
return TGBotKeyboardControllerIdentifier;
}
@end