diff --git a/core/src/cz/nic/tablexia/Tablexia.java b/core/src/cz/nic/tablexia/Tablexia.java index b49376fd64354b95a204eb371cb00ac3477346ac..d9e0267cb0d7ce424ed127cdeb515017d312ddd6 100644 --- a/core/src/cz/nic/tablexia/Tablexia.java +++ b/core/src/cz/nic/tablexia/Tablexia.java @@ -110,7 +110,17 @@ public class Tablexia extends TablexiaApplication { addMenuController(menuController); } - @Override + @Override + public boolean onBackButtonDown() { + if(menuController != null && menuController.isMenuOpened()) { + menuController.closeAllMenus(); + return false; + } + + return true; + } + + @Override public void resize(int width, int height) { super.resize(width, height); if(menuController != null) { diff --git a/core/src/cz/nic/tablexia/TablexiaApplication.java b/core/src/cz/nic/tablexia/TablexiaApplication.java index 59abd0d824d8e399d3c3aa72532f845ff5dfa8ba..3884c7a994fd255bfe88bac156ccca1d78c2f516 100644 --- a/core/src/cz/nic/tablexia/TablexiaApplication.java +++ b/core/src/cz/nic/tablexia/TablexiaApplication.java @@ -183,12 +183,20 @@ public abstract class TablexiaApplication implements ApplicationListener { @Override public boolean keyDown(int keycode) { if (keycode == Input.Keys.BACK && screen != null && screenPrepared) { - screen.backButtonPressed(); + if(onBackButtonDown()) { + screen.backButtonPressed(); + } } return false; } }; + /** + * Override this method to handle back button down event on your own + * @return true if u want the event to be send to the current screen + */ + public boolean onBackButtonDown() { return true; } + //////////////////////////// SCREEN DIMMER @@ -472,6 +480,14 @@ public abstract class TablexiaApplication implements ApplicationListener { processNewScreen(screen); } + /** + * Returns whether or not is screen prepared + * @return screenPrepared + */ + public boolean isScreenPrepared() { + return screenPrepared; + } + /** * Change current screen to new screen with screen transaction. * If new screen is same as current screen no change is performed. diff --git a/core/src/cz/nic/tablexia/menu/MenuController.java b/core/src/cz/nic/tablexia/menu/MenuController.java index c75f1f45cfed86a44f4f818e52e8a6bf0a48cca4..01ce50d3df3a28a29c33baee5f9b31daa83d625d 100644 --- a/core/src/cz/nic/tablexia/menu/MenuController.java +++ b/core/src/cz/nic/tablexia/menu/MenuController.java @@ -68,6 +68,20 @@ public class MenuController extends Group implements Disposable { initMenu(UserMenu.class); } + public boolean isMenuOpened() { + for(AbstractMenu menu : menus.values()) { + if(menu.isMenuOpen()) return true; + } + + return false; + } + + public void closeAllMenus() { + for(AbstractMenu menu : menus.values()) { + menu.closeMenu(true, false); + } + } + public void initMenu (Class<? extends AbstractMenu> menuClass) { try { AbstractMenu menu = menuClass.getConstructor(Float.class, Float.class).newInstance(getWidth() * MAIN_MENU_WIDTH_RATIO, getHeight());