Manage menu + intents #278

This commit is contained in:
tom79 2019-08-28 16:21:50 +02:00
parent fa3f874826
commit 37fa2ec042
9 changed files with 53 additions and 116 deletions

View File

@ -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){

View File

@ -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{

View File

@ -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());

View File

@ -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);

View File

@ -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);

View File

@ -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<RemoteInstance>
* @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;

View File

@ -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, "

View File

@ -0,0 +1,5 @@
<vector android:height="24dp" android:tint="#FFFFFF"
android:viewportHeight="24.0" android:viewportWidth="24.0"
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#FF000000" android:pathData="M3,18h18v-2L3,16v2zM3,13h18v-2L3,11v2zM3,6v2h18L21,6L3,6z"/>
</vector>

View File

@ -106,11 +106,6 @@
android:text="@string/how_to_follow"
android:layout_height="wrap_content" />
<CheckBox
android:id="@+id/nav_administration"
android:layout_width="wrap_content"
android:text="@string/administration"
android:layout_height="wrap_content" />
<LinearLayout