From 7c057156f7b34bbd897bd9b5642f6fa895d8fcdc Mon Sep 17 00:00:00 2001 From: tom79 Date: Tue, 22 Aug 2017 09:02:40 +0200 Subject: [PATCH] Improves account picker menu --- .../gouv/etalab/mastodon/helper/Helper.java | 34 +++++++++++-------- .../etalab/mastodon/sqlite/AccountDAO.java | 2 +- .../main/res/menu/activity_main_drawer.xml | 8 ----- 3 files changed, 20 insertions(+), 24 deletions(-) diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/helper/Helper.java b/app/src/main/java/fr/gouv/etalab/mastodon/helper/Helper.java index 25c856ae8..3a4803e73 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/helper/Helper.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/helper/Helper.java @@ -733,9 +733,6 @@ public class Helper { if( currrentUserId == null) return; - MenuItem menu_account = navigationView.getMenu().findItem(R.id.nav_account_list); - MenuItem nav_main_com = navigationView.getMenu().findItem(R.id.nav_main_com); - MenuItem nav_main_opt= navigationView.getMenu().findItem(R.id.nav_main_opt); final SharedPreferences sharedpreferences = activity.getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE); int theme = sharedpreferences.getInt(Helper.SET_THEME, Helper.THEME_DARK); if( theme == Helper.THEME_DARK){ @@ -749,19 +746,25 @@ public class Helper { } if( !menuAccountsOpened ){ - arrow.setImageResource(R.drawable.ic_arrow_drop_up); - SQLiteDatabase db = Sqlite.getInstance(activity, Sqlite.DB_NAME, null, Sqlite.DB_VERSION).open(); - menu_account.setVisible(true); - nav_main_com.setVisible(false); - nav_main_opt.setVisible(false); final List accounts = new AccountDAO(activity, db).getAllAccount(); - SubMenu navigationViewSub = navigationView.getMenu().findItem(R.id.nav_account_list).getSubMenu(); - navigationViewSub.clear(); + String lastInstance = ""; + navigationView.getMenu().clear(); + navigationView.inflateMenu(R.menu.menu_accounts); + Menu mainMenu = navigationView.getMenu(); + SubMenu currentSubmenu = null; + int i = 0; for(final Account account: accounts) { if( !currrentUserId.equals(account.getId()) ) { - final MenuItem item = navigationViewSub.add("@" + account.getAcct() + "@" + account.getInstance()); + if( !lastInstance.equals(account.getInstance())){ + currentSubmenu = mainMenu.addSubMenu(0, i, i,account.getInstance().toUpperCase()); + i++; + } + if( currentSubmenu == null) + continue; + final MenuItem item = currentSubmenu.add("@" + account.getAcct()); + //final MenuItem item = mainMenu.addSubMenu("@" + account.getAcct()).add("@" + account.getAcct()); ImageLoader imageLoader; DisplayImageOptions options = new DisplayImageOptions.Builder().displayer(new SimpleBitmapDisplayer()).cacheInMemory(false) .cacheOnDisk(true).resetViewBeforeLoading(true).build(); @@ -832,7 +835,9 @@ public class Helper { } } - MenuItem addItem = navigationViewSub.add(R.string.add_account); + i++; + currentSubmenu = mainMenu.addSubMenu(0, i, i,""); + MenuItem addItem = currentSubmenu.add(R.string.add_account); addItem.setIcon(R.drawable.ic_person_add); addItem.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() { @Override @@ -844,9 +849,8 @@ public class Helper { } }); }else{ - menu_account.setVisible(false); - nav_main_com.setVisible(true); - nav_main_opt.setVisible(true); + navigationView.getMenu().clear(); + navigationView.inflateMenu(R.menu.activity_main_drawer); arrow.setImageResource(R.drawable.ic_arrow_drop_down); SQLiteDatabase db = Sqlite.getInstance(activity, Sqlite.DB_NAME, null, Sqlite.DB_VERSION).open(); String userId = sharedpreferences.getString(Helper.PREF_KEY_ID, null); diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/sqlite/AccountDAO.java b/app/src/main/java/fr/gouv/etalab/mastodon/sqlite/AccountDAO.java index 55867d1e4..e0d46ebc8 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/sqlite/AccountDAO.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/sqlite/AccountDAO.java @@ -155,7 +155,7 @@ public class AccountDAO { public List getAllAccount(){ try { - Cursor c = db.query(Sqlite.TABLE_USER_ACCOUNT, null, null, null, null, null, null, null); + Cursor c = db.query(Sqlite.TABLE_USER_ACCOUNT, null, null, null, null, null, Sqlite.COL_INSTANCE + " ASC", null); return cursorToListUser(c); } catch (Exception e) { return null; diff --git a/app/src/main/res/menu/activity_main_drawer.xml b/app/src/main/res/menu/activity_main_drawer.xml index 2389caccc..3dda9f489 100644 --- a/app/src/main/res/menu/activity_main_drawer.xml +++ b/app/src/main/res/menu/activity_main_drawer.xml @@ -1,13 +1,5 @@ - - - - - -