import Toybox.Lang; import Toybox.WatchUi; class KittieCatsSettingsView extends WatchUi.Menu2 { private var themeMenuItem; function initialize() { Menu2.initialize(null); Menu2.setTitle(Rez.Strings.SettingsTitle); self.themeMenuItem = new WatchUi.MenuItem(Rez.Strings.SettingsTheme, "", "theme", null); Menu2.addItem(self.themeMenuItem); // TODO add settings for low power mode } function onShow() { var currentTheme = ThemeManager.getInstance().getLocalizedCurrentTheme(); self.themeMenuItem.setSubLabel(currentTheme.Name); } } class KittieCatsSettingsMenuDelegate extends WatchUi.Menu2InputDelegate { function initialize() { Menu2InputDelegate.initialize(); } function onSelect(item) { var id = item.getId(); switch (id) { case "theme": { var themes = ThemeManager.getInstance().getLocalizedThemes(); var currentTheme = ThemeManager.getInstance().getLocalizedCurrentTheme(); // Not sure if I like the picker UI, but it'll do for now WatchUi.pushView(new Picker({ :title => new WatchUi.Text({ :text => Rez.Strings.SettingsTheme }), :pattern => [new ThemePickerFactory(themes)], :defaults => [themes.indexOf(currentTheme)] }), new ThemePickerDelegate(), WatchUi.SLIDE_LEFT); break; } } } function onBack() { WatchUi.popView(WatchUi.SLIDE_IMMEDIATE); } } class ThemePickerFactory extends WatchUi.PickerFactory { private var themes as Array; function initialize(themes) { PickerFactory.initialize(); self.themes = themes; } function getDrawable(item, isSelected) { return new WatchUi.Text({ :text => self.themes[item].Name, :color => Graphics.COLOR_WHITE, :font => Graphics.FONT_SMALL, :justification => Graphics.TEXT_JUSTIFY_LEFT }); } function getSize() { return self.themes.size(); } function getValue(item) { return self.themes[item].Id; } } class ThemePickerDelegate extends WatchUi.PickerDelegate { function initialize() { PickerDelegate.initialize(); } function onAccept(values) { ThemeManager.getInstance().setCurrentThemeId(values[0]); WatchUi.popView(WatchUi.SLIDE_DOWN); return true; } function onCancel() { return true; } }