mirror of
https://github.com/libretro/RetroArch
synced 2025-03-03 13:14:04 +00:00
(iOS) Change way setting menu items are created
This commit is contained in:
parent
eb74d1fe4e
commit
6548c303e7
@ -53,16 +53,6 @@
|
||||
+ (RAMenuItemBasic*)itemWithDescription:(NSString*)description association:(id)userdata action:(void (^)())action detail:(NSString* (^)())detail;
|
||||
@end
|
||||
|
||||
/*********************************************/
|
||||
/* RAMenuItemBooleanSetting */
|
||||
/* A simple menu item that displays the */
|
||||
/* state, and allows editing, of a boolean */
|
||||
/* setting. */
|
||||
/*********************************************/
|
||||
@interface RAMenuItemBooleanSetting : NSObject<RAMenuItemBase>
|
||||
@property (nonatomic) const rarch_setting_t* setting;
|
||||
@end
|
||||
|
||||
/*********************************************/
|
||||
/* RAMenuItemGeneralSetting */
|
||||
/* A simple menu item that displays the */
|
||||
@ -72,6 +62,19 @@
|
||||
@interface RAMenuItemGeneralSetting : NSObject<RAMenuItemBase>
|
||||
@property (nonatomic) const rarch_setting_t* setting;
|
||||
@property (nonatomic, weak) UITableView* parentTable;
|
||||
+ (id)itemForSetting:(const rarch_setting_t*)setting;
|
||||
- (id)initWithSetting:(const rarch_setting_t*)setting;
|
||||
@end
|
||||
|
||||
/*********************************************/
|
||||
/* RAMenuItemBooleanSetting */
|
||||
/* A simple menu item that displays the */
|
||||
/* state, and allows editing, of a boolean */
|
||||
/* setting. */
|
||||
/*********************************************/
|
||||
@interface RAMenuItemBooleanSetting : NSObject<RAMenuItemBase>
|
||||
@property (nonatomic) const rarch_setting_t* setting;
|
||||
- (id)initWithSetting:(const rarch_setting_t*)setting;
|
||||
@end
|
||||
|
||||
/*********************************************/
|
||||
|
144
apple/iOS/menu.m
144
apple/iOS/menu.m
@ -114,54 +114,6 @@
|
||||
|
||||
@end
|
||||
|
||||
/*********************************************/
|
||||
/* RAMenuItemBooleanSetting */
|
||||
/* A simple menu item that displays the */
|
||||
/* state, and allows editing, of a boolean */
|
||||
/* setting. */
|
||||
/*********************************************/
|
||||
@implementation RAMenuItemBooleanSetting
|
||||
|
||||
+ (RAMenuItemBooleanSetting*)itemForSetting:(const rarch_setting_t*)setting
|
||||
{
|
||||
RAMenuItemBooleanSetting* item = [RAMenuItemBooleanSetting new];
|
||||
item.setting = setting;
|
||||
return item;
|
||||
}
|
||||
|
||||
- (UITableViewCell*)cellForTableView:(UITableView*)tableView
|
||||
{
|
||||
static NSString* const cell_id = @"boolean_setting";
|
||||
|
||||
UITableViewCell* result = [tableView dequeueReusableCellWithIdentifier:cell_id];
|
||||
if (!result)
|
||||
{
|
||||
result = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:cell_id];
|
||||
result.selectionStyle = UITableViewCellSelectionStyleNone;
|
||||
result.accessoryView = [UISwitch new];
|
||||
}
|
||||
|
||||
result.textLabel.text = @(self.setting->short_description);
|
||||
[(id)result.accessoryView removeTarget:nil action:NULL forControlEvents:UIControlEventValueChanged];
|
||||
[(id)result.accessoryView addTarget:self action:@selector(handleBooleanSwitch:) forControlEvents:UIControlEventValueChanged];
|
||||
|
||||
if (self.setting)
|
||||
[(id)result.accessoryView setOn:*self.setting->value.boolean];
|
||||
return result;
|
||||
}
|
||||
|
||||
- (void)handleBooleanSwitch:(UISwitch*)swt
|
||||
{
|
||||
if (self.setting)
|
||||
*self.setting->value.boolean = swt.on ? true : false;
|
||||
}
|
||||
|
||||
- (void)wasSelectedOnTableView:(UITableView*)tableView ofController:(UIViewController*)controller
|
||||
{
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
/*********************************************/
|
||||
/* RAMenuItemGeneralSetting */
|
||||
/* A simple menu item that displays the */
|
||||
@ -174,10 +126,17 @@
|
||||
|
||||
@implementation RAMenuItemGeneralSetting
|
||||
|
||||
+ (RAMenuItemGeneralSetting*)itemForSetting:(const rarch_setting_t*)setting
|
||||
+ (id)itemForSetting:(const rarch_setting_t*)setting
|
||||
{
|
||||
RAMenuItemGeneralSetting* item = [RAMenuItemGeneralSetting new];
|
||||
item.setting = setting;
|
||||
switch (setting->type)
|
||||
{
|
||||
case ST_BOOL: return [[RAMenuItemBooleanSetting alloc] initWithSetting:setting];
|
||||
case ST_PATH: return [[RAMenuItemPathSetting alloc] initWithSetting:setting];
|
||||
case ST_BIND: return [[RAMenuItemBindSetting alloc] initWithSetting:setting];
|
||||
default: break;
|
||||
}
|
||||
|
||||
RAMenuItemGeneralSetting* item = [[RAMenuItemGeneralSetting alloc] initWithSetting:setting];
|
||||
|
||||
if (item.setting->type == ST_INT || item.setting->type == ST_UINT || item.setting->type == ST_FLOAT)
|
||||
item.formatter = [[RANumberFormatter alloc] initWithSetting:item.setting];
|
||||
@ -185,6 +144,16 @@
|
||||
return item;
|
||||
}
|
||||
|
||||
- (id)initWithSetting:(const rarch_setting_t*)setting
|
||||
{
|
||||
if ((self = [super init]))
|
||||
{
|
||||
self.setting = setting;
|
||||
}
|
||||
|
||||
return self;
|
||||
}
|
||||
|
||||
- (UITableViewCell*)cellForTableView:(UITableView*)tableView
|
||||
{
|
||||
static NSString* const cell_id = @"string_setting";
|
||||
@ -234,6 +203,57 @@
|
||||
|
||||
@end
|
||||
|
||||
/*********************************************/
|
||||
/* RAMenuItemBooleanSetting */
|
||||
/* A simple menu item that displays the */
|
||||
/* state, and allows editing, of a boolean */
|
||||
/* setting. */
|
||||
/*********************************************/
|
||||
@implementation RAMenuItemBooleanSetting
|
||||
|
||||
- (id)initWithSetting:(const rarch_setting_t*)setting
|
||||
{
|
||||
if ((self = [super init]))
|
||||
{
|
||||
self.setting = setting;
|
||||
}
|
||||
|
||||
return self;
|
||||
}
|
||||
|
||||
- (UITableViewCell*)cellForTableView:(UITableView*)tableView
|
||||
{
|
||||
static NSString* const cell_id = @"boolean_setting";
|
||||
|
||||
UITableViewCell* result = [tableView dequeueReusableCellWithIdentifier:cell_id];
|
||||
if (!result)
|
||||
{
|
||||
result = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:cell_id];
|
||||
result.selectionStyle = UITableViewCellSelectionStyleNone;
|
||||
result.accessoryView = [UISwitch new];
|
||||
}
|
||||
|
||||
result.textLabel.text = @(self.setting->short_description);
|
||||
[(id)result.accessoryView removeTarget:nil action:NULL forControlEvents:UIControlEventValueChanged];
|
||||
[(id)result.accessoryView addTarget:self action:@selector(handleBooleanSwitch:) forControlEvents:UIControlEventValueChanged];
|
||||
|
||||
if (self.setting)
|
||||
[(id)result.accessoryView setOn:*self.setting->value.boolean];
|
||||
return result;
|
||||
}
|
||||
|
||||
- (void)handleBooleanSwitch:(UISwitch*)swt
|
||||
{
|
||||
if (self.setting)
|
||||
*self.setting->value.boolean = swt.on ? true : false;
|
||||
}
|
||||
|
||||
- (void)wasSelectedOnTableView:(UITableView*)tableView ofController:(UIViewController*)controller
|
||||
{
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
/*********************************************/
|
||||
/* RAMenuItemPathSetting */
|
||||
/* A menu item that displays and allows */
|
||||
@ -242,13 +262,6 @@
|
||||
@interface RAMenuItemPathSetting() <RADirectoryListDelegate> @end
|
||||
@implementation RAMenuItemPathSetting
|
||||
|
||||
+ (RAMenuItemPathSetting*)itemForSetting:(const rarch_setting_t*)setting
|
||||
{
|
||||
RAMenuItemPathSetting* item = [RAMenuItemPathSetting new];
|
||||
item.setting = setting;
|
||||
return item;
|
||||
}
|
||||
|
||||
- (void)wasSelectedOnTableView:(UITableView*)tableView ofController:(UIViewController*)controller
|
||||
{
|
||||
RADirectoryList* list = [[RADirectoryList alloc] initWithPath:nil delegate:self];
|
||||
@ -279,13 +292,6 @@
|
||||
|
||||
@implementation RAMenuItemBindSetting
|
||||
|
||||
+ (RAMenuItemBindSetting*)itemForSetting:(const rarch_setting_t*)setting
|
||||
{
|
||||
RAMenuItemBindSetting* item = [RAMenuItemBindSetting new];
|
||||
item.setting = setting;
|
||||
return item;
|
||||
}
|
||||
|
||||
- (void)wasSelectedOnTableView:(UITableView *)tableView ofController:(UIViewController *)controller
|
||||
{
|
||||
self.alert = [[UIAlertView alloc] initWithTitle:@"RetroArch"
|
||||
@ -491,14 +497,8 @@
|
||||
if (settings.count)
|
||||
[self.sections addObject:settings];
|
||||
}
|
||||
else if (i->type == ST_BOOL)
|
||||
[settings addObject:[RAMenuItemBooleanSetting itemForSetting:i]];
|
||||
else if (i->type == ST_INT || i->type == ST_UINT || i->type == ST_FLOAT || i->type == ST_STRING)
|
||||
else
|
||||
[settings addObject:[RAMenuItemGeneralSetting itemForSetting:i]];
|
||||
else if (i->type == ST_PATH)
|
||||
[settings addObject:[RAMenuItemPathSetting itemForSetting:i]];
|
||||
else if (i->type == ST_BIND)
|
||||
[settings addObject:[RAMenuItemBindSetting itemForSetting:i]];
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user