From 342b99c77db4db8b0df47a4a98f98c95c6485fcc Mon Sep 17 00:00:00 2001 From: pelya Date: Thu, 19 May 2011 17:29:03 +0300 Subject: [PATCH] Started refactoring SDL startup menu --- project/java/Settings.java | 141 ++++++++++++++++++++++++------------- 1 file changed, 94 insertions(+), 47 deletions(-) diff --git a/project/java/Settings.java b/project/java/Settings.java index ce0cc6fc2..a62377d93 100644 --- a/project/java/Settings.java +++ b/project/java/Settings.java @@ -326,7 +326,36 @@ class Settings } // =============================================================================================== - + + public static abstract class Menu + { + abstract void run(final MainActivity p); + void goBack(final MainActivity p) + { + if(menuStack.isEmpty()) + { + Save(p); + p.startDownloader(); + } + else + { + Menu c = menuStack.remove(menuStack.size() - 1); + c.run(p); + } + } + abstract String title(final MainActivity p); + String innerTitle(final MainActivity p) + { + return title(p); + } + boolean enabled() + { + return true; + } + } + + static ArrayList menuStack = new ArrayList (); + public static void showConfig(final MainActivity p) { settingsChanged = true; @@ -347,12 +376,26 @@ class Settings Globals.OptionalDataDownload[0] = true; } - showConfigMainMenu(p); + new MainMenu().run(p); + } + + static void showConfigMainMenu(final MainActivity p) + { + menuStack.clear(); + new MainMenu().run(p); } static int MainMenuLastSelected = 0; - static void showConfigMainMenu(final MainActivity p) + static class MainMenu extends Menu { + String title(final MainActivity p) + { + return p.getResources().getString(R.string.device_config); + } + void run (final MainActivity p) + { + menuStack.add(this); + ArrayList items = new ArrayList (); items.add(p.getResources().getString(R.string.storage_question)); @@ -384,7 +427,7 @@ class Settings items.add(p.getResources().getString(R.string.ok)); AlertDialog.Builder builder = new AlertDialog.Builder(p); - builder.setTitle(p.getResources().getString(R.string.device_config)); + builder.setTitle(title(p)); //builder.setSingleChoiceItems(items.toArray(new CharSequence[0]), MainMenuLastSelected, new DialogInterface.OnClickListener() builder.setItems(items.toArray(new CharSequence[0]), new DialogInterface.OnClickListener() { @@ -452,8 +495,9 @@ class Settings if( item == selected ) { - Save(p); - p.startDownloader(); + if(!menuStack.isEmpty()) + menuStack.remove(menuStack.size() - 1); + goBack(p); } } }); @@ -461,14 +505,16 @@ class Settings { public void onCancel(DialogInterface dialog) { - Save(p); - p.startDownloader(); + if(!menuStack.isEmpty()) + menuStack.remove(menuStack.size() - 1); + goBack(p); } }); AlertDialog alert = builder.create(); alert.setOwnerActivity(p); alert.show(); } + } static int MouseConfigMainMenuLastSelected = 0; static void showMouseConfigMainMenu(final MainActivity p) @@ -1038,45 +1084,6 @@ class Settings } static void showDisplaySizeConfig(final MainActivity p) - { - final CharSequence[] items = { p.getResources().getString(R.string.leftclick_normal), - p.getResources().getString(R.string.leftclick_near_cursor), - p.getResources().getString(R.string.leftclick_multitouch), - p.getResources().getString(R.string.leftclick_pressure), - p.getResources().getString(R.string.rightclick_key), - p.getResources().getString(R.string.leftclick_timeout), - p.getResources().getString(R.string.leftclick_tap), - p.getResources().getString(R.string.leftclick_tap_or_timeout) }; - - AlertDialog.Builder builder = new AlertDialog.Builder(p); - builder.setTitle(R.string.leftclick_question); - builder.setSingleChoiceItems(items, Globals.LeftClickMethod, new DialogInterface.OnClickListener() - { - public void onClick(DialogInterface dialog, int item) - { - Globals.LeftClickMethod = item; - dialog.dismiss(); - if( item == Mouse.LEFT_CLICK_WITH_KEY ) - p.keyListener = new KeyRemapToolMouseClick(p, true); - else if( item == Mouse.LEFT_CLICK_WITH_TIMEOUT || item == Mouse.LEFT_CLICK_WITH_TAP_OR_TIMEOUT ) - showLeftClickTimeoutConfig(p); - else - showMouseConfigMainMenu(p); - } - }); - builder.setOnCancelListener(new DialogInterface.OnCancelListener() - { - public void onCancel(DialogInterface dialog) - { - showConfigMainMenu(p); - } - }); - AlertDialog alert = builder.create(); - alert.setOwnerActivity(p); - alert.show(); - } - - static void showLeftClickConfig(final MainActivity p) { final CharSequence[] items = { p.getResources().getString(R.string.display_size_large), p.getResources().getString(R.string.display_size_small) }; @@ -1087,6 +1094,8 @@ class Settings { public void onClick(DialogInterface dialog, int item) { + Globals.LeftClickMethod = item; + dialog.dismiss(); if( item == 0 ) { Globals.LeftClickMethod = Mouse.LEFT_CLICK_WITH_TAP_OR_TIMEOUT; @@ -1124,6 +1133,44 @@ class Settings alert.show(); } + static void showLeftClickConfig(final MainActivity p) + { + final CharSequence[] items = { p.getResources().getString(R.string.leftclick_normal), + p.getResources().getString(R.string.leftclick_near_cursor), + p.getResources().getString(R.string.leftclick_multitouch), + p.getResources().getString(R.string.leftclick_pressure), + p.getResources().getString(R.string.rightclick_key), + p.getResources().getString(R.string.leftclick_timeout), + p.getResources().getString(R.string.leftclick_tap), + p.getResources().getString(R.string.leftclick_tap_or_timeout) }; + + AlertDialog.Builder builder = new AlertDialog.Builder(p); + builder.setTitle(R.string.leftclick_question); + builder.setSingleChoiceItems(items, Globals.LeftClickMethod, new DialogInterface.OnClickListener() + { + public void onClick(DialogInterface dialog, int item) + { + dialog.dismiss(); + if( item == Mouse.LEFT_CLICK_WITH_KEY ) + p.keyListener = new KeyRemapToolMouseClick(p, true); + else if( item == Mouse.LEFT_CLICK_WITH_TIMEOUT || item == Mouse.LEFT_CLICK_WITH_TAP_OR_TIMEOUT ) + showLeftClickTimeoutConfig(p); + else + showMouseConfigMainMenu(p); + } + }); + builder.setOnCancelListener(new DialogInterface.OnCancelListener() + { + public void onCancel(DialogInterface dialog) + { + showConfigMainMenu(p); + } + }); + AlertDialog alert = builder.create(); + alert.setOwnerActivity(p); + alert.show(); + } + static void showLeftClickTimeoutConfig(final MainActivity p) { final CharSequence[] items = { p.getResources().getString(R.string.leftclick_timeout_time_0), p.getResources().getString(R.string.leftclick_timeout_time_1),