/* RetroArch - A frontend for libretro. * Copyright (C) 2013-2014 - Jason Fetters * Copyright (C) 2014-2015 - Jay McCarthy * * RetroArch is free software: you can redistribute it and/or modify it under the terms * of the GNU General Public License as published by the Free Software Found- * ation, either version 3 of the License, or (at your option) any later version. * * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along with RetroArch. * If not, see . */ #ifndef __APPLE_RARCH_IOS_MENU_H__ #define __APPLE_RARCH_IOS_MENU_H__ #include "../../playlist.h" #include "views.h" #include "../../settings_data.h" @protocol RAMenuItemBase - (UITableViewCell*)cellForTableView:(UITableView*)tableView; - (void)wasSelectedOnTableView:(UITableView*)tableView ofController:(UIViewController*)controller; @end /*********************************************/ /* RAMenuBase */ /* A menu class that displays RAMenuItemBase */ /* objects. */ /*********************************************/ @interface RAMenuBase : UITableViewController @property (nonatomic) NSMutableArray* sections; @property (nonatomic) BOOL hidesHeaders; - (id)initWithStyle:(UITableViewStyle)style; - (id)itemForIndexPath:(NSIndexPath*)indexPath; @end /*********************************************/ /* RAMenuItemBasic */ /* A simple menu item that displays a text */ /* description and calls a block object when */ /* selected. */ /*********************************************/ @interface RAMenuItemBasic : NSObject @property (nonatomic) NSString* description; @property (nonatomic) id userdata; @property (copy) void (^action)(id userdata); @property (copy) NSString* (^detail)(id userdata); + (RAMenuItemBasic*)itemWithDescription:(NSString*)description action:(void (^)())action; + (RAMenuItemBasic*)itemWithDescription:(NSString*)description action:(void (^)())action detail:(NSString* (^)())detail; + (RAMenuItemBasic*)itemWithDescription:(NSString*)description association:(id)userdata action:(void (^)())action detail:(NSString* (^)())detail; @end /*********************************************/ /* RAMenuItemGeneralSetting */ /* A simple menu item that displays the */ /* state, and allows editing, of a string or */ /* numeric setting. */ /*********************************************/ @interface RAMenuItemGeneralSetting : NSObject @property (nonatomic) rarch_setting_t* setting; @property (copy) void (^action)(); @property (nonatomic, weak) UITableView* parentTable; + (id)itemForSetting:(rarch_setting_t*)setting action:(void (^)())action; - (id)initWithSetting:(rarch_setting_t*)setting action:(void (^)())action; @end /*********************************************/ /* RAMenuItemBooleanSetting */ /* A simple menu item that displays the */ /* state, and allows editing, of a boolean */ /* setting. */ /*********************************************/ @interface RAMenuItemBooleanSetting : NSObject @property (nonatomic) rarch_setting_t* setting; @property (copy) void (^action)(); - (id)initWithSetting:(rarch_setting_t*)setting action:(void (^)())action; @end /*********************************************/ /* RAMenuItemPathSetting */ /* A menu item that displays and allows */ /* browsing for a path setting. */ /*********************************************/ @interface RAMenuItemPathSetting : RAMenuItemGeneralSetting @end /*********************************************/ /* RAMenuItemEnumSetting */ /* A menu item that displays and allows */ /* a setting to be set from a list of */ /* allowed choices. */ /*********************************************/ @interface RAMenuItemEnumSetting : RAMenuItemGeneralSetting @end /*********************************************/ /* RAMenuItemBindSetting */ /* A menu item that displays and allows */ /* mapping of a keybinding. */ /*********************************************/ @interface RAMenuItemBindSetting : RAMenuItemGeneralSetting @end /*********************************************/ /* RAMainMenu */ /* Menu object that is displayed immediately */ /* after startup. */ /*********************************************/ @interface RAMainMenu : RAMenuBase @property (nonatomic) NSString* core; @end #endif