mirror of
https://github.com/M66B/FairEmail.git
synced 2026-03-28 03:46:00 +01:00
Added log type selection dialog
This commit is contained in:
@@ -19,6 +19,7 @@ package eu.faircode.email;
|
||||
Copyright 2018-2021 by Marcel Bokhorst (M66B)
|
||||
*/
|
||||
|
||||
import android.content.DialogInterface;
|
||||
import android.content.SharedPreferences;
|
||||
import android.os.Bundle;
|
||||
import android.preference.PreferenceManager;
|
||||
@@ -26,12 +27,12 @@ import android.view.LayoutInflater;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuInflater;
|
||||
import android.view.MenuItem;
|
||||
import android.view.SubMenu;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.appcompat.app.AlertDialog;
|
||||
import androidx.constraintlayout.widget.Group;
|
||||
import androidx.lifecycle.Observer;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
@@ -153,13 +154,6 @@ public class FragmentLogs extends FragmentBase {
|
||||
menu.findItem(R.id.menu_show).setVisible(all);
|
||||
menu.findItem(R.id.menu_clear).setVisible(all);
|
||||
|
||||
List<EntityLog.Type> types = getTypes();
|
||||
SubMenu smenu = menu.findItem(R.id.menu_show).getSubMenu();
|
||||
smenu.clear();
|
||||
for (EntityLog.Type type : EntityLog.Type.values())
|
||||
smenu.add(1, type.ordinal(), type.ordinal(), type.toString())
|
||||
.setCheckable(true).setChecked(types.contains(type));
|
||||
|
||||
super.onPrepareOptionsMenu(menu);
|
||||
}
|
||||
|
||||
@@ -176,10 +170,8 @@ public class FragmentLogs extends FragmentBase {
|
||||
item.setChecked(enabled);
|
||||
onMenuAutoScoll(enabled);
|
||||
return true;
|
||||
} else if (item.getGroupId() == 1 && item.isCheckable()) {
|
||||
boolean enabled = !item.isChecked();
|
||||
item.setChecked(enabled);
|
||||
onMenuShowTypes(item.getOrder(), enabled);
|
||||
} else if (itemId == R.id.menu_show) {
|
||||
onMenuShow();
|
||||
} else if (itemId == R.id.menu_clear) {
|
||||
onMenuClear();
|
||||
return true;
|
||||
@@ -196,26 +188,46 @@ public class FragmentLogs extends FragmentBase {
|
||||
autoScroll = enabled;
|
||||
}
|
||||
|
||||
private void onMenuShowTypes(int ordinal, boolean enabled) {
|
||||
private void onMenuShow() {
|
||||
String[] titles = new String[EntityLog.Type.values().length];
|
||||
boolean[] states = new boolean[EntityLog.Type.values().length];
|
||||
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext());
|
||||
String name = EntityLog.Type.values()[ordinal].toString().toLowerCase(Locale.ROOT);
|
||||
prefs.edit().putBoolean("show_log_" + name, enabled).apply();
|
||||
adapter.setTypes(getTypes());
|
||||
for (int i = 0; i < EntityLog.Type.values().length; i++) {
|
||||
EntityLog.Type type = EntityLog.Type.values()[i];
|
||||
titles[i] = type.toString();
|
||||
String name = type.toString().toLowerCase(Locale.ROOT);
|
||||
states[i] = prefs.getBoolean("show_log_" + name, true);
|
||||
}
|
||||
|
||||
new AlertDialog.Builder(getContext())
|
||||
.setTitle(R.string.title_unhide)
|
||||
.setMultiChoiceItems(titles, states, new DialogInterface.OnMultiChoiceClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialogInterface, int pos, boolean checked) {
|
||||
EntityLog.Type type = EntityLog.Type.values()[pos];
|
||||
prefs.edit().putBoolean(getKey(type), checked).apply();
|
||||
adapter.setTypes(getTypes());
|
||||
}
|
||||
})
|
||||
.setPositiveButton(R.string.title_setup_done, null)
|
||||
.show();
|
||||
}
|
||||
|
||||
private List<EntityLog.Type> getTypes() {
|
||||
List<EntityLog.Type> types = new ArrayList<>();
|
||||
|
||||
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext());
|
||||
for (EntityLog.Type type : EntityLog.Type.values()) {
|
||||
String name = type.toString().toLowerCase(Locale.ROOT);
|
||||
if (prefs.getBoolean("show_log_" + name, true))
|
||||
for (EntityLog.Type type : EntityLog.Type.values())
|
||||
if (prefs.getBoolean(getKey(type), true))
|
||||
types.add(type);
|
||||
}
|
||||
|
||||
return types;
|
||||
}
|
||||
|
||||
private String getKey(EntityLog.Type type) {
|
||||
return "show_log_" + type.toString().toLowerCase(Locale.ROOT);
|
||||
}
|
||||
|
||||
private void onMenuClear() {
|
||||
EntityLog.clear(getContext());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user