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;
|
+ (RAMenuItemBasic*)itemWithDescription:(NSString*)description association:(id)userdata action:(void (^)())action detail:(NSString* (^)())detail;
|
||||||
@end
|
@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 */
|
/* RAMenuItemGeneralSetting */
|
||||||
/* A simple menu item that displays the */
|
/* A simple menu item that displays the */
|
||||||
@ -72,6 +62,19 @@
|
|||||||
@interface RAMenuItemGeneralSetting : NSObject<RAMenuItemBase>
|
@interface RAMenuItemGeneralSetting : NSObject<RAMenuItemBase>
|
||||||
@property (nonatomic) const rarch_setting_t* setting;
|
@property (nonatomic) const rarch_setting_t* setting;
|
||||||
@property (nonatomic, weak) UITableView* parentTable;
|
@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
|
@end
|
||||||
|
|
||||||
/*********************************************/
|
/*********************************************/
|
||||||
|
144
apple/iOS/menu.m
144
apple/iOS/menu.m
@ -114,54 +114,6 @@
|
|||||||
|
|
||||||
@end
|
@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 */
|
/* RAMenuItemGeneralSetting */
|
||||||
/* A simple menu item that displays the */
|
/* A simple menu item that displays the */
|
||||||
@ -174,10 +126,17 @@
|
|||||||
|
|
||||||
@implementation RAMenuItemGeneralSetting
|
@implementation RAMenuItemGeneralSetting
|
||||||
|
|
||||||
+ (RAMenuItemGeneralSetting*)itemForSetting:(const rarch_setting_t*)setting
|
+ (id)itemForSetting:(const rarch_setting_t*)setting
|
||||||
{
|
{
|
||||||
RAMenuItemGeneralSetting* item = [RAMenuItemGeneralSetting new];
|
switch (setting->type)
|
||||||
item.setting = setting;
|
{
|
||||||
|
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)
|
if (item.setting->type == ST_INT || item.setting->type == ST_UINT || item.setting->type == ST_FLOAT)
|
||||||
item.formatter = [[RANumberFormatter alloc] initWithSetting:item.setting];
|
item.formatter = [[RANumberFormatter alloc] initWithSetting:item.setting];
|
||||||
@ -185,6 +144,16 @@
|
|||||||
return item;
|
return item;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
- (id)initWithSetting:(const rarch_setting_t*)setting
|
||||||
|
{
|
||||||
|
if ((self = [super init]))
|
||||||
|
{
|
||||||
|
self.setting = setting;
|
||||||
|
}
|
||||||
|
|
||||||
|
return self;
|
||||||
|
}
|
||||||
|
|
||||||
- (UITableViewCell*)cellForTableView:(UITableView*)tableView
|
- (UITableViewCell*)cellForTableView:(UITableView*)tableView
|
||||||
{
|
{
|
||||||
static NSString* const cell_id = @"string_setting";
|
static NSString* const cell_id = @"string_setting";
|
||||||
@ -234,6 +203,57 @@
|
|||||||
|
|
||||||
@end
|
@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 */
|
/* RAMenuItemPathSetting */
|
||||||
/* A menu item that displays and allows */
|
/* A menu item that displays and allows */
|
||||||
@ -242,13 +262,6 @@
|
|||||||
@interface RAMenuItemPathSetting() <RADirectoryListDelegate> @end
|
@interface RAMenuItemPathSetting() <RADirectoryListDelegate> @end
|
||||||
@implementation RAMenuItemPathSetting
|
@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
|
- (void)wasSelectedOnTableView:(UITableView*)tableView ofController:(UIViewController*)controller
|
||||||
{
|
{
|
||||||
RADirectoryList* list = [[RADirectoryList alloc] initWithPath:nil delegate:self];
|
RADirectoryList* list = [[RADirectoryList alloc] initWithPath:nil delegate:self];
|
||||||
@ -279,13 +292,6 @@
|
|||||||
|
|
||||||
@implementation RAMenuItemBindSetting
|
@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
|
- (void)wasSelectedOnTableView:(UITableView *)tableView ofController:(UIViewController *)controller
|
||||||
{
|
{
|
||||||
self.alert = [[UIAlertView alloc] initWithTitle:@"RetroArch"
|
self.alert = [[UIAlertView alloc] initWithTitle:@"RetroArch"
|
||||||
@ -491,14 +497,8 @@
|
|||||||
if (settings.count)
|
if (settings.count)
|
||||||
[self.sections addObject:settings];
|
[self.sections addObject:settings];
|
||||||
}
|
}
|
||||||
else if (i->type == ST_BOOL)
|
else
|
||||||
[settings addObject:[RAMenuItemBooleanSetting itemForSetting:i]];
|
|
||||||
else if (i->type == ST_INT || i->type == ST_UINT || i->type == ST_FLOAT || i->type == ST_STRING)
|
|
||||||
[settings addObject:[RAMenuItemGeneralSetting itemForSetting:i]];
|
[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