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 b447f326e..24e8e7756 100644 --- a/app/src/main/java/app/fedilab/android/activities/BaseMainActivity.java +++ b/app/src/main/java/app/fedilab/android/activities/BaseMainActivity.java @@ -18,8 +18,11 @@ import android.Manifest; import android.annotation.SuppressLint; import android.app.Activity; import android.app.ActivityManager; +import android.content.BroadcastReceiver; +import android.content.Context; import android.content.DialogInterface; import android.content.Intent; +import android.content.IntentFilter; import android.content.SharedPreferences; import android.content.pm.PackageManager; import android.database.sqlite.SQLiteDatabase; @@ -41,6 +44,7 @@ import androidx.fragment.app.FragmentManager; import androidx.fragment.app.FragmentStatePagerAdapter; import androidx.core.content.ContextCompat; import androidx.core.view.GravityCompat; +import androidx.localbroadcastmanager.content.LocalBroadcastManager; import androidx.viewpager.widget.ViewPager; import androidx.drawerlayout.widget.DrawerLayout; import androidx.appcompat.app.ActionBarDrawerToggle; @@ -162,7 +166,7 @@ public abstract class BaseMainActivity extends BaseActivity private final int PICK_IMPORT = 5556; private AlertDialog.Builder dialogBuilderOptin; private List timelines; - + private BroadcastReceiver hidde_menu; public static HashMap mPageReferenceMap = new HashMap<>(); private static boolean notificationChecked = false; @@ -662,9 +666,56 @@ public abstract class BaseMainActivity extends BaseActivity changeDrawableColor(getApplicationContext(), R.drawable.ic_recently_added,R.color.dark_text); } - if( social == UpdateAccountInfoAsyncTask.SOCIAL.MASTODON || social == UpdateAccountInfoAsyncTask.SOCIAL.PLEROMA) + boolean live_notification = sharedpreferences.getBoolean(Helper.SET_LIVE_NOTIFICATIONS, true); + + if( live_notification && (social == UpdateAccountInfoAsyncTask.SOCIAL.MASTODON || social == UpdateAccountInfoAsyncTask.SOCIAL.PLEROMA)) startSreaming(); + if( hidde_menu != null) + LocalBroadcastManager.getInstance(getApplicationContext()).unregisterReceiver(hidde_menu); + hidde_menu = new BroadcastReceiver() { + @Override + public void onReceive(Context context, Intent intent) { + Bundle b = intent.getExtras(); + assert b != null; + String menu = b.getString("menu"); + if( menu != null){ + if( menu.equals("hide_admin")){ + NavigationView navigationView = findViewById(R.id.nav_view); + MenuItem admin = navigationView.getMenu().findItem(R.id.nav_administration); + if( admin != null){ + admin.setVisible(false); + } + }else if(menu.equals("show_admin")){ + NavigationView navigationView = findViewById(R.id.nav_view); + MenuItem admin = navigationView.getMenu().findItem(R.id.nav_administration); + if( admin != null){ + admin.setVisible(true); + } + }else if(menu.equals("hide_news")){ + NavigationView navigationView = findViewById(R.id.nav_view); + MenuItem news = navigationView.getMenu().findItem(R.id.nav_news); + if( news != null){ + news.setVisible(false); + } + }else if(menu.equals("show_news")){ + NavigationView navigationView = findViewById(R.id.nav_view); + MenuItem news = navigationView.getMenu().findItem(R.id.nav_news); + if( news != null){ + news.setVisible(true); + } + }else if(menu.equals("show_list_button")){ + displayTimelineMoreButton(true); + }else if(menu.equals("hide_list_button")){ + displayTimelineMoreButton(false); + }else if(menu.equals("theme")){ + recreate(); + } + } + + } + }; + LocalBroadcastManager.getInstance(getApplicationContext()).registerReceiver(hidde_menu, new IntentFilter(Helper.RECEIVE_HIDE_ITEM)); toolbar_search.setOnQueryTextListener(new SearchView.OnQueryTextListener() { @Override @@ -1521,6 +1572,8 @@ public abstract class BaseMainActivity extends BaseActivity boolean backgroundProcess = sharedpreferences.getBoolean(Helper.SET_KEEP_BACKGROUND_PROCESS, true); if(!backgroundProcess) sendBroadcast(new Intent("StopLiveNotificationService")); + if( hidde_menu != null) + LocalBroadcastManager.getInstance(getApplicationContext()).unregisterReceiver(hidde_menu); PreferenceManager.getDefaultSharedPreferences(this).edit().putBoolean("isMainActivityRunning", false).apply(); } 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 d603e666a..9b738411e 100644 --- a/app/src/main/java/app/fedilab/android/fragments/ContentSettingsFragment.java +++ b/app/src/main/java/app/fedilab/android/fragments/ContentSettingsFragment.java @@ -62,11 +62,14 @@ import androidx.appcompat.app.AlertDialog; import androidx.appcompat.widget.SwitchCompat; import androidx.core.content.ContextCompat; import androidx.fragment.app.Fragment; +import androidx.localbroadcastmanager.content.LocalBroadcastManager; import com.google.android.material.navigation.NavigationView; import com.google.common.collect.ImmutableSet; import org.jetbrains.annotations.NotNull; +import org.json.JSONException; +import org.json.JSONObject; import java.io.File; import java.util.ArrayList; @@ -81,6 +84,7 @@ import app.fedilab.android.animatemenu.interfaces.ScreenShotable; import app.fedilab.android.asynctasks.DownloadTrackingDomainsAsyncTask; import app.fedilab.android.asynctasks.UpdateAccountInfoAsyncTask; import app.fedilab.android.client.Entities.Account; +import app.fedilab.android.client.Entities.Status; import app.fedilab.android.filelister.FileListerDialog; import app.fedilab.android.filelister.OnFileSelectedListener; import app.fedilab.android.helper.Helper; @@ -451,6 +455,15 @@ public class ContentSettingsFragment extends Fragment implements ScreenShotable SharedPreferences.Editor editor = sharedpreferences.edit(); editor.putBoolean(Helper.SET_DISPLAY_ADMIN_MENU + userId + instance, set_display_admin_menu.isChecked()); editor.apply(); + Bundle b = new Bundle(); + if( set_display_admin_menu.isChecked()){ + b.putString("menu", "show_admin"); + }else{ + b.putString("menu", "hide_admin"); + } + Intent intentBC = new Intent(Helper.RECEIVE_HIDE_ITEM); + intentBC.putExtras(b); + LocalBroadcastManager.getInstance(context).sendBroadcast(intentBC); } }); @@ -676,6 +689,15 @@ public class ContentSettingsFragment extends Fragment implements ScreenShotable SharedPreferences.Editor editor = sharedpreferences.edit(); editor.putBoolean(Helper.SET_DISPLAY_TIMELINE_IN_LIST, set_display_timeline_in_list.isChecked()); editor.apply(); + Bundle b = new Bundle(); + if( set_display_timeline_in_list.isChecked()){ + b.putString("menu", "show_list_button"); + }else{ + b.putString("menu", "hide_list_button"); + } + Intent intentBC = new Intent(Helper.RECEIVE_HIDE_ITEM); + intentBC.putExtras(b); + LocalBroadcastManager.getInstance(context).sendBroadcast(intentBC); } }); @@ -688,13 +710,17 @@ public class ContentSettingsFragment extends Fragment implements ScreenShotable @Override public void onClick(View v) { SharedPreferences.Editor editor = sharedpreferences.edit(); - editor.putBoolean(Helper.SET_DISPLAY_TIMELINE_IN_LIST, set_display_news.isChecked()); + editor.putBoolean(Helper.SET_DISPLAY_NEWS_FROM_FEDILAB, set_display_news.isChecked()); editor.apply(); - NavigationView navigationView = ((MainActivity) context).findViewById(R.id.nav_view); - MenuItem news = navigationView.getMenu().findItem(R.id.nav_news); - if( news != null){ - news.setVisible(set_display_news.isChecked()); + 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); } }); @@ -974,16 +1000,17 @@ public class ContentSettingsFragment extends Fragment implements ScreenShotable final CheckBox set_embedded_browser = rootView.findViewById(R.id.set_embedded_browser); final LinearLayout set_javascript_container = rootView.findViewById(R.id.set_javascript_container); final CheckBox set_custom_tabs = rootView.findViewById(R.id.set_custom_tabs); + final LinearLayout custom_tabs_container = rootView.findViewById(R.id.custom_tabs_container); final SwitchCompat set_javascript = rootView.findViewById(R.id.set_javascript); boolean javascript = sharedpreferences.getBoolean(Helper.SET_JAVASCRIPT, true); boolean embedded_browser = sharedpreferences.getBoolean(Helper.SET_EMBEDDED_BROWSER, true); boolean custom_tabs = sharedpreferences.getBoolean(Helper.SET_CUSTOM_TABS, true); if( !embedded_browser){ set_javascript_container.setVisibility(View.GONE); - set_custom_tabs.setVisibility(View.VISIBLE); + custom_tabs_container.setVisibility(View.VISIBLE); }else{ set_javascript_container.setVisibility(View.VISIBLE); - set_custom_tabs.setVisibility(View.GONE); + custom_tabs_container.setVisibility(View.GONE); } set_embedded_browser.setChecked(embedded_browser); set_embedded_browser.setOnClickListener(new View.OnClickListener() { @@ -994,10 +1021,10 @@ public class ContentSettingsFragment extends Fragment implements ScreenShotable editor.apply(); if( !set_embedded_browser.isChecked()){ set_javascript_container.setVisibility(View.GONE); - set_custom_tabs.setVisibility(View.VISIBLE); + custom_tabs_container.setVisibility(View.VISIBLE); }else{ set_javascript_container.setVisibility(View.VISIBLE); - set_custom_tabs.setVisibility(View.GONE); + custom_tabs_container.setVisibility(View.GONE); } } }); @@ -1116,7 +1143,12 @@ public class ContentSettingsFragment extends Fragment implements ScreenShotable editor.apply(); break; } - ((MainActivity) context).recreate(); + Bundle b = new Bundle(); + b.putString("menu", "theme"); + Intent intentBC = new Intent(Helper.RECEIVE_HIDE_ITEM); + intentBC.putExtras(b); + LocalBroadcastManager.getInstance(context).sendBroadcast(intentBC); + ((SettingsActivity) context).recreate(); } count1++; } 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 79e8d16a7..62a90928e 100644 --- a/app/src/main/java/app/fedilab/android/helper/Helper.java +++ b/app/src/main/java/app/fedilab/android/helper/Helper.java @@ -454,7 +454,7 @@ public class Helper { public static final String RECEIVE_FEDERATED_DATA = "receive_federated_data"; public static final String RECEIVE_LOCAL_DATA = "receive_local_data"; public static final String RECEIVE_PICTURE = "receive_picture"; - + public static final String RECEIVE_HIDE_ITEM = "receive_hide_item"; //User agent public static final String USER_AGENT = "Fedilab/"+ BuildConfig.VERSION_NAME + " Android/"+ Build.VERSION.RELEASE; diff --git a/app/src/main/res/layout/fragment_settings_reveal.xml b/app/src/main/res/layout/fragment_settings_reveal.xml index 603b3431f..d773c13c5 100644 --- a/app/src/main/res/layout/fragment_settings_reveal.xml +++ b/app/src/main/res/layout/fragment_settings_reveal.xml @@ -1181,13 +1181,41 @@ android:layout_height="wrap_content" style="@style/Base.Widget.AppCompat.Button.Colored" android:text="@string/update_tracking_domains" /> - f + android:id="@+id/custom_tabs_container" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="@dimen/settings_checkbox_margin" + android:layout_marginBottom="@dimen/settings_checkbox_margin" + android:orientation="horizontal"> + + + + + + + + Default Directory Folder Create folder + Use your favourite browser inside the application. By disabling, links will be opened externally %d vote