From 37fa2ec042354ddcf047d0d033c88853b3aae985 Mon Sep 17 00:00:00 2001 From: tom79 Date: Wed, 28 Aug 2019 16:21:50 +0200 Subject: [PATCH] Manage menu + intents #278 --- .../android/activities/BaseMainActivity.java | 23 -------- .../android/activities/HideItemActivity.java | 33 +++++------ .../android/activities/SettingsActivity.java | 7 ++- .../fragments/ContentSettingsFragment.java | 24 -------- .../app/fedilab/android/helper/Helper.java | 57 ++++++------------- .../fedilab/android/sqlite/MainMenuDAO.java | 14 ++--- .../app/fedilab/android/sqlite/Sqlite.java | 1 + app/src/main/res/drawable/ic_menu_menu.xml | 5 ++ .../res/layout/activity_hide_menu_items.xml | 5 -- 9 files changed, 53 insertions(+), 116 deletions(-) create mode 100644 app/src/main/res/drawable/ic_menu_menu.xml diff --git a/app/src/main/java/app/fedilab/android/activities/BaseMainActivity.java b/app/src/main/java/app/fedilab/android/activities/BaseMainActivity.java index 57317b862..844790fc6 100644 --- a/app/src/main/java/app/fedilab/android/activities/BaseMainActivity.java +++ b/app/src/main/java/app/fedilab/android/activities/BaseMainActivity.java @@ -1168,30 +1168,7 @@ public abstract class BaseMainActivity extends BaseActivity } else { navigationView.getMenu().findItem(R.id.nav_follow_request).setVisible(false); } - MenuItem news = navigationView.getMenu().findItem(R.id.nav_news); - if( news != null){ - boolean display_news = sharedpreferences.getBoolean(Helper.SET_DISPLAY_NEWS_FROM_FEDILAB, true); - if( ! display_news ){ - news.setVisible(false); - } - } - if (account.isLocked()) { - navigationView.getMenu().findItem(R.id.nav_follow_request).setVisible(true); - } else { - navigationView.getMenu().findItem(R.id.nav_follow_request).setVisible(false); - } - //Check instance release for lists - String instanceVersion = sharedpreferences.getString(Helper.INSTANCE_VERSION + userId + instance, null); - if (instanceVersion != null) { - Version currentVersion = new Version(instanceVersion); - Version minVersion = new Version("2.1"); - if (currentVersion.compareTo(minVersion) == 1 || currentVersion.equals(minVersion)) { - navigationView.getMenu().findItem(R.id.nav_list).setVisible(true); - } else { - navigationView.getMenu().findItem(R.id.nav_list).setVisible(false); - } - } if (!BuildConfig.DONATIONS) { MenuItem openCollectiveItem = navigationView.getMenu().findItem(R.id.nav_opencollective); if( openCollectiveItem != null){ diff --git a/app/src/main/java/app/fedilab/android/activities/HideItemActivity.java b/app/src/main/java/app/fedilab/android/activities/HideItemActivity.java index 1afc91a18..abae0c900 100644 --- a/app/src/main/java/app/fedilab/android/activities/HideItemActivity.java +++ b/app/src/main/java/app/fedilab/android/activities/HideItemActivity.java @@ -91,7 +91,9 @@ public class HideItemActivity extends BaseActivity { SQLiteDatabase db = Sqlite.getInstance(HideItemActivity.this, Sqlite.DB_NAME, null, Sqlite.DB_VERSION).open(); MainMenuItem mainMenu = new MainMenuDAO(getApplicationContext(), db).getMainMenu(); - + if( mainMenu == null){ + mainMenu = new MainMenuItem(); + } CheckBox nav_news = findViewById(R.id.nav_news); CheckBox nav_list = findViewById(R.id.nav_list); CheckBox nav_scheduled = findViewById(R.id.nav_scheduled); @@ -100,13 +102,13 @@ public class HideItemActivity extends BaseActivity { CheckBox nav_peertube = findViewById(R.id.nav_peertube); CheckBox nav_filters = findViewById(R.id.nav_filters); CheckBox nav_who_to_follow = findViewById(R.id.nav_who_to_follow); - CheckBox nav_administration = findViewById(R.id.nav_administration); CheckBox nav_blocked = findViewById(R.id.nav_blocked); CheckBox nav_muted = findViewById(R.id.nav_muted); CheckBox nav_blocked_domains = findViewById(R.id.nav_blocked_domains); CheckBox nav_how_to = findViewById(R.id.nav_how_to); Button validate = findViewById(R.id.validate); + nav_news.setChecked(mainMenu.isNav_news()); nav_list.setChecked(mainMenu.isNav_list()); nav_scheduled.setChecked(mainMenu.isNav_scheduled()); @@ -115,7 +117,6 @@ public class HideItemActivity extends BaseActivity { nav_peertube.setChecked(mainMenu.isNav_peertube()); nav_filters.setChecked(mainMenu.isNav_filters()); nav_who_to_follow.setChecked(mainMenu.isNav_how_to_follow()); - nav_administration.setChecked(mainMenu.isNav_administration()); nav_blocked.setChecked(mainMenu.isNav_blocked()); nav_muted.setChecked(mainMenu.isNav_muted()); nav_blocked_domains.setChecked(mainMenu.isNav_blocked_domains()); @@ -124,20 +125,20 @@ public class HideItemActivity extends BaseActivity { validate.setOnClickListener(view -> { MainMenuItem mainMenuItem = new MainMenuItem(); - nav_news.setChecked(nav_news.isChecked()); - nav_list.setChecked(nav_list.isChecked()); - nav_scheduled.setChecked(nav_scheduled.isChecked()); - nav_archive.setChecked(nav_archive.isChecked()); - nav_archive_notifications.setChecked(nav_archive_notifications.isChecked()); - nav_peertube.setChecked(nav_peertube.isChecked()); - nav_filters.setChecked(nav_filters.isChecked()); - nav_who_to_follow.setChecked(nav_who_to_follow.isChecked()); - nav_administration.setChecked(nav_administration.isChecked()); - nav_blocked.setChecked(nav_blocked.isChecked()); - nav_muted.setChecked(nav_muted.isChecked()); - nav_blocked_domains.setChecked(nav_blocked_domains.isChecked()); - nav_how_to.setChecked(nav_how_to.isChecked()); + mainMenuItem.setNav_news(nav_news.isChecked()); + mainMenuItem.setNav_list(nav_list.isChecked()); + mainMenuItem.setNav_scheduled(nav_scheduled.isChecked()); + mainMenuItem.setNav_archive(nav_archive.isChecked()); + mainMenuItem.setNav_archive_notifications(nav_archive_notifications.isChecked()); + mainMenuItem.setNav_peertube(nav_peertube.isChecked()); + mainMenuItem.setNav_filters(nav_filters.isChecked()); + mainMenuItem.setNav_how_to_follow(nav_who_to_follow.isChecked()); + mainMenuItem.setNav_blocked(nav_blocked.isChecked()); + mainMenuItem.setNav_muted(nav_muted.isChecked()); + mainMenuItem.setNav_blocked_domains(nav_blocked_domains.isChecked()); + mainMenuItem.setNav_howto(nav_how_to.isChecked()); MainMenuItem mainMenuItem1 = new MainMenuDAO(getApplicationContext(), db).getMainMenu(); + if( mainMenuItem1 != null){ new MainMenuDAO(getApplicationContext(), db).updateMenu(mainMenuItem); }else{ diff --git a/app/src/main/java/app/fedilab/android/activities/SettingsActivity.java b/app/src/main/java/app/fedilab/android/activities/SettingsActivity.java index af6a70199..61abbaab4 100644 --- a/app/src/main/java/app/fedilab/android/activities/SettingsActivity.java +++ b/app/src/main/java/app/fedilab/android/activities/SettingsActivity.java @@ -184,7 +184,7 @@ public class SettingsActivity extends BaseActivity implements ViewAnimator.ViewA SlideMenuItem menuItemEdit = new SlideMenuItem(ContentSettingsFragment.type.COMPOSE, R.drawable.ic_edit_black_menu); SlideMenuItem menuItemBattery = new SlideMenuItem(ContentSettingsFragment.type.BATTERY, R.drawable.ic_battery_alert_menu); SlideMenuItem menuLanguage = new SlideMenuItem(ContentSettingsFragment.type.LANGUAGE, R.drawable.ic_translate_menu); - + SlideMenuItem menuMenu = new SlideMenuItem(ContentSettingsFragment.type.MENU, R.drawable.ic_menu_menu); list.add(menuItemClose); list.add(menuItemTimeline); list.add(menuItemNotification); @@ -192,6 +192,7 @@ public class SettingsActivity extends BaseActivity implements ViewAnimator.ViewA list.add(menuItemBattery); list.add(menuItemEdit); if( MainActivity.social == UpdateAccountInfoAsyncTask.SOCIAL.MASTODON || MainActivity.social == UpdateAccountInfoAsyncTask.SOCIAL.PLEROMA){ + list.add(menuMenu); list.add(menuItemAdmin); } list.add(menuLanguage); @@ -238,6 +239,10 @@ public class SettingsActivity extends BaseActivity implements ViewAnimator.ViewA Intent intent = new Intent(getApplicationContext(), LanguageActivity.class); startActivity(intent); type = previous; + }else if( type == ContentSettingsFragment.type.MENU){ + Intent intent = new Intent(getApplicationContext(), HideItemActivity.class); + startActivity(intent); + type = previous; } View view = findViewById(R.id.content_frame); int finalRadius = Math.max(view.getWidth(), view.getHeight()); diff --git a/app/src/main/java/app/fedilab/android/fragments/ContentSettingsFragment.java b/app/src/main/java/app/fedilab/android/fragments/ContentSettingsFragment.java index dd026aefb..1f9b3d66b 100644 --- a/app/src/main/java/app/fedilab/android/fragments/ContentSettingsFragment.java +++ b/app/src/main/java/app/fedilab/android/fragments/ContentSettingsFragment.java @@ -761,30 +761,6 @@ public class ContentSettingsFragment extends Fragment implements ScreenShotable set_display_timeline_in_list_text.setOnClickListener(v -> set_display_timeline_in_list.performClick()); - boolean display_news = sharedpreferences.getBoolean(Helper.SET_DISPLAY_NEWS_FROM_FEDILAB, true); - final CheckBox set_display_news = rootView.findViewById(R.id.set_display_news); - set_display_news.setChecked(display_news); - - set_display_news.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - SharedPreferences.Editor editor = sharedpreferences.edit(); - editor.putBoolean(Helper.SET_DISPLAY_NEWS_FROM_FEDILAB, set_display_news.isChecked()); - editor.apply(); - Bundle b = new Bundle(); - if( set_display_news.isChecked()){ - b.putString("menu", "show_news"); - }else{ - b.putString("menu", "hide_news"); - } - Intent intentBC = new Intent(Helper.RECEIVE_HIDE_ITEM); - intentBC.putExtras(b); - LocalBroadcastManager.getInstance(context).sendBroadcast(intentBC); - } - }); - final LinearLayout set_display_news_text = rootView.findViewById(R.id.set_display_news_text); - set_display_news_text.setOnClickListener(v -> set_display_news.performClick()); - boolean send_crash_reports = sharedpreferences.getBoolean(Helper.SET_SEND_CRASH_REPORTS, false); final CheckBox set_enable_crash_report = rootView.findViewById(R.id.set_enable_crash_report); diff --git a/app/src/main/java/app/fedilab/android/helper/Helper.java b/app/src/main/java/app/fedilab/android/helper/Helper.java index ef8489dea..10e0626c2 100644 --- a/app/src/main/java/app/fedilab/android/helper/Helper.java +++ b/app/src/main/java/app/fedilab/android/helper/Helper.java @@ -361,7 +361,6 @@ public class Helper { public static final String SET_NOTIFICATION_ACTION = "set_notification_action"; public static final String SET_DISPLAY_CONTENT_AFTER_FM = "set_display_content_after_fm"; public static final String SET_FEATURED_TAGS ="set_featured_tags"; - public static final String SET_DISPLAY_NEWS_FROM_FEDILAB ="set_display_news_from_fedilab"; public static final String SET_SEND_CRASH_REPORTS ="set_send_crash_reports"; public static final String SET_FEATURED_TAG_ACTION ="set_featured_tag_action"; public static final String SET_HIDE_DELETE_BUTTON_ON_TAB = "set_hide_delete_notification_on_tab"; @@ -1563,44 +1562,47 @@ public class Helper { }else{ SQLiteDatabase db = Sqlite.getInstance(activity, Sqlite.DB_NAME, null, Sqlite.DB_VERSION).open(); MainMenuItem mainMenuItem = new MainMenuDAO(activity, db).getMainMenu(); + if (mainMenuItem == null){ + mainMenuItem = new MainMenuItem(); + } if( !mainMenuItem.isNav_list()){ - menu.getItem(R.id.nav_list).setVisible(false); + menu.findItem(R.id.nav_list).setVisible(false); } if( !mainMenuItem.isNav_administration()){ - menu.getItem(R.id.nav_administration).setVisible(false); + menu.findItem(R.id.nav_administration).setVisible(false); } if( !mainMenuItem.isNav_archive()){ - menu.getItem(R.id.nav_archive).setVisible(false); + menu.findItem(R.id.nav_archive).setVisible(false); } if( !mainMenuItem.isNav_archive_notifications()){ - menu.getItem(R.id.nav_archive_notifications).setVisible(false); + menu.findItem(R.id.nav_archive_notifications).setVisible(false); } if( !mainMenuItem.isNav_blocked()){ - menu.getItem(R.id.nav_blocked).setVisible(false); + menu.findItem(R.id.nav_blocked).setVisible(false); } if( !mainMenuItem.isNav_blocked_domains()){ - menu.getItem(R.id.nav_blocked_domains).setVisible(false); + menu.findItem(R.id.nav_blocked_domains).setVisible(false); } if( !mainMenuItem.isNav_filters()){ - menu.getItem(R.id.nav_filters).setVisible(false); + menu.findItem(R.id.nav_filters).setVisible(false); } if( !mainMenuItem.isNav_how_to_follow()){ - menu.getItem(R.id.nav_who_to_follow).setVisible(false); + menu.findItem(R.id.nav_who_to_follow).setVisible(false); } if( !mainMenuItem.isNav_howto()){ - menu.getItem(R.id.nav_how_to).setVisible(false); + menu.findItem(R.id.nav_how_to).setVisible(false); } if( !mainMenuItem.isNav_muted()){ - menu.getItem(R.id.nav_muted).setVisible(false); + menu.findItem(R.id.nav_muted).setVisible(false); } if( !mainMenuItem.isNav_news()){ - menu.getItem(R.id.nav_news).setVisible(false); + menu.findItem(R.id.nav_news).setVisible(false); } if( !mainMenuItem.isNav_peertube()){ - menu.getItem(R.id.nav_peertube).setVisible(false); + menu.findItem(R.id.nav_peertube).setVisible(false); } if( !mainMenuItem.isNav_scheduled()){ - menu.getItem(R.id.nav_scheduled).setVisible(false); + menu.findItem(R.id.nav_scheduled).setVisible(false); } } } @@ -3047,37 +3049,12 @@ public class Helper { if( navigationView.getMenu().findItem(R.id.nav_follow_request) != null) navigationView.getMenu().findItem(R.id.nav_follow_request).setVisible(false); } - MenuItem news = navigationView.getMenu().findItem(R.id.nav_news); - if( news != null){ - boolean display_news = sharedpreferences.getBoolean(Helper.SET_DISPLAY_NEWS_FROM_FEDILAB, true); - if( ! display_news ){ - news.setVisible(false); - } - } + if( MainActivity.social != UpdateAccountInfoAsyncTask.SOCIAL.MASTODON && MainActivity.social != UpdateAccountInfoAsyncTask.SOCIAL.PLEROMA){ MenuItem adminItem = navigationView.getMenu().findItem(R.id.nav_administration); if( adminItem != null){ adminItem.setVisible(false); } - }else{ - boolean display_admin_menu = sharedpreferences.getBoolean(Helper.SET_DISPLAY_ADMIN_MENU + userID + instance, false); - if( !display_admin_menu){ - MenuItem adminItem = navigationView.getMenu().findItem(R.id.nav_administration); - if( adminItem != null){ - adminItem.setVisible(false); - } - } - } - - } - String instanceVersion = sharedpreferences.getString(Helper.INSTANCE_VERSION + userID + instance, null); - if (instanceVersion != null && navigationView.getMenu().findItem(R.id.nav_list) != null) { - Version currentVersion = new Version(instanceVersion); - Version minVersion = new Version("2.1"); - if (currentVersion.compareTo(minVersion) == 1 || currentVersion.equals(minVersion)) { - navigationView.getMenu().findItem(R.id.nav_list).setVisible(true); - } else { - navigationView.getMenu().findItem(R.id.nav_list).setVisible(false); } } tableLayout.setVisibility(View.VISIBLE); diff --git a/app/src/main/java/app/fedilab/android/sqlite/MainMenuDAO.java b/app/src/main/java/app/fedilab/android/sqlite/MainMenuDAO.java index 0fed2e709..547e73631 100644 --- a/app/src/main/java/app/fedilab/android/sqlite/MainMenuDAO.java +++ b/app/src/main/java/app/fedilab/android/sqlite/MainMenuDAO.java @@ -19,6 +19,7 @@ import android.content.Context; import android.content.SharedPreferences; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; + import app.fedilab.android.client.Entities.MainMenuItem; import app.fedilab.android.helper.Helper; @@ -82,7 +83,6 @@ public class MainMenuDAO { SharedPreferences sharedpreferences = context.getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE); String userId = sharedpreferences.getString(Helper.PREF_KEY_ID, null); String instance = Helper.getLiveInstance(context); - ContentValues values = new ContentValues(); values.put(Sqlite.COL_INSTANCE, instance); values.put(Sqlite.COL_USER_ID, userId); @@ -146,6 +146,7 @@ public class MainMenuDAO { SharedPreferences sharedpreferences = context.getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE); String userId = sharedpreferences.getString(Helper.PREF_KEY_ID, null); String instance = Helper.getLiveInstance(context); + values.put(Sqlite.COL_INSTANCE, instance); values.put(Sqlite.COL_USER_ID, userId); values.put(Sqlite.COL_NAV_NEWS, mainMenuItem.isNav_news()?1:0); @@ -184,7 +185,7 @@ public class MainMenuDAO { Cursor c = db.query(Sqlite.TABLE_MAIN_MENU_ITEMS, null, Sqlite.COL_INSTANCE + " = '" + instance+ "' AND " + Sqlite.COL_USER_ID + " = '" + userId+ "'", null, null, null, null, "1"); return cursorToMainMenu(c); } catch (Exception e) { - return new MainMenuItem(); + return null; } } @@ -200,7 +201,8 @@ public class MainMenuDAO { Cursor c = db.query(Sqlite.TABLE_MAIN_MENU_ITEMS, null, Sqlite.COL_INSTANCE + " = '" + instance+ "' AND " + Sqlite.COL_USER_ID + " = '" + userId+ "'", null, null, null, null, "1"); return cursorToMainMenu(c); } catch (Exception e) { - return new MainMenuItem(); + e.printStackTrace(); + return null; } } @@ -209,17 +211,16 @@ public class MainMenuDAO { /*** * Method to hydrate main menu items from database * @param c Cursor - * @return List + * @return MainMenuItem */ private MainMenuItem cursorToMainMenu(Cursor c){ //No element found MainMenuItem mainMenuItem = new MainMenuItem(); if (c.getCount() == 0) { c.close(); - return mainMenuItem; + return null; } c.moveToFirst(); - mainMenuItem.setNav_administration(c.getInt(c.getColumnIndex(Sqlite.COL_NAV_ADMINISTRATION)) == 1); mainMenuItem.setNav_archive(c.getInt(c.getColumnIndex(Sqlite.COL_NAV_ARCHIVE)) == 1); mainMenuItem.setNav_archive_notifications(c.getInt(c.getColumnIndex(Sqlite.COL_NAV_ARCHIVE_NOTIFICATIONS)) == 1); @@ -233,7 +234,6 @@ public class MainMenuDAO { mainMenuItem.setNav_news(c.getInt(c.getColumnIndex(Sqlite.COL_NAV_NEWS)) == 1); mainMenuItem.setNav_peertube(c.getInt(c.getColumnIndex(Sqlite.COL_NAV_PEERTUBE)) == 1); mainMenuItem.setNav_scheduled(c.getInt(c.getColumnIndex(Sqlite.COL_NAV_SCHEDULED)) == 1); - //Close the cursor c.close(); return mainMenuItem; diff --git a/app/src/main/java/app/fedilab/android/sqlite/Sqlite.java b/app/src/main/java/app/fedilab/android/sqlite/Sqlite.java index 7c86085db..3e3df03b2 100644 --- a/app/src/main/java/app/fedilab/android/sqlite/Sqlite.java +++ b/app/src/main/java/app/fedilab/android/sqlite/Sqlite.java @@ -338,6 +338,7 @@ public class Sqlite extends SQLiteOpenHelper { private static final String CREATE_TABLE_MAIN_MENU_ITEMS = "CREATE TABLE " + TABLE_MAIN_MENU_ITEMS + "(" + COL_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + + COL_USER_ID + " TEXT NOT NULL, " + COL_INSTANCE + " TEXT NOT NULL, " + COL_NAV_NEWS + " INTEGER DEFAULT 1, " + COL_NAV_LIST + " INTEGER DEFAULT 1, " diff --git a/app/src/main/res/drawable/ic_menu_menu.xml b/app/src/main/res/drawable/ic_menu_menu.xml new file mode 100644 index 000000000..de103a677 --- /dev/null +++ b/app/src/main/res/drawable/ic_menu_menu.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/layout/activity_hide_menu_items.xml b/app/src/main/res/layout/activity_hide_menu_items.xml index d2c2bfd38..b4d64a3a8 100644 --- a/app/src/main/res/layout/activity_hide_menu_items.xml +++ b/app/src/main/res/layout/activity_hide_menu_items.xml @@ -106,11 +106,6 @@ android:text="@string/how_to_follow" android:layout_height="wrap_content" /> -