Some improvements with handler

This commit is contained in:
tom79 2019-07-03 17:28:17 +02:00
parent e03e7b5660
commit 02a807c48c
5 changed files with 133 additions and 19 deletions

View File

@ -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<ManageTimelines> timelines;
private BroadcastReceiver hidde_menu;
public static HashMap<Integer, Fragment> 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();
}

View File

@ -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++;
}

View File

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

View File

@ -1181,13 +1181,41 @@
android:layout_height="wrap_content"
style="@style/Base.Widget.AppCompat.Button.Colored"
android:text="@string/update_tracking_domains" />
<CheckBox
<LinearLayout
android:visibility="gone"
android:layout_marginTop="10dp"
android:id="@+id/set_custom_tabs"
android:layout_width="wrap_content"
android:text="@string/custom_tabs"
android:layout_height="wrap_content" />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">
<CheckBox
android:id="@+id/set_custom_tabs"
android:layout_width="wrap_content"
android:textSize="16sp"
android:layout_height="wrap_content" />
<LinearLayout
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:textSize="16sp"
android:text="@string/custom_tabs"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:textColor="@color/mastodonC2"
android:text="@string/custom_tabs_indication"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
</LinearLayout>
<LinearLayout

View File

@ -1107,6 +1107,7 @@
<string name="default_directory">Default Directory</string>
<string name="folder">Folder</string>
<string name="create_folder">Create folder</string>
<string name="custom_tabs_indication">Use your favourite browser inside the application. By disabling, links will be opened externally</string>
<plurals name="number_of_vote">
<item quantity="one">%d vote</item>