diff --git a/app/src/main/java/eu/faircode/email/ActivityView.java b/app/src/main/java/eu/faircode/email/ActivityView.java index 3220c620c7..7fd5656306 100644 --- a/app/src/main/java/eu/faircode/email/ActivityView.java +++ b/app/src/main/java/eu/faircode/email/ActivityView.java @@ -47,12 +47,8 @@ import android.text.TextUtils; import android.view.LayoutInflater; import android.view.MenuItem; import android.view.View; -import android.view.ViewGroup; import android.widget.AdapterView; -import android.widget.ArrayAdapter; -import android.widget.ImageView; import android.widget.ListView; -import android.widget.TextView; import android.widget.Toast; import com.google.android.material.snackbar.Snackbar; @@ -88,7 +84,6 @@ import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; import javax.net.ssl.HttpsURLConnection; -import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.app.ActionBarDrawerToggle; import androidx.constraintlayout.widget.Group; @@ -278,7 +273,7 @@ public class ActivityView extends ActivityBilling implements FragmentManager.OnB return; last = accounts; - ArrayAdapterDrawer drawerArray = new ArrayAdapterDrawer(ActivityView.this); + DrawerAdapter drawerArray = new DrawerAdapter(ActivityView.this); final Collator collator = Collator.getInstance(Locale.getDefault()); collator.setStrength(Collator.SECONDARY); // Case insensitive, process accents etc @@ -992,82 +987,6 @@ public class ActivityView extends ActivityBilling implements FragmentManager.OnB fragmentTransaction.commit(); } - private class DrawerItem { - private int layout; - private int id; - private int icon; - private Integer color; - private String title; - private boolean highlight; - private Object data; - - DrawerItem(int layout) { - this.id = 0; - this.layout = layout; - } - - DrawerItem(Context context, int layout, int icon, int title) { - this.layout = layout; - this.id = title; - this.icon = icon; - this.title = context.getString(title); - } - - DrawerItem(int layout, int id, int icon, Integer color, String title, boolean highlight, Object data) { - this.layout = layout; - this.id = id; - this.icon = icon; - this.color = color; - this.title = title; - this.highlight = highlight; - this.data = data; - } - - public int getId() { - return this.id; - } - - public Object getData() { - return this.data; - } - } - - private static class ArrayAdapterDrawer extends ArrayAdapter { - ArrayAdapterDrawer(@NonNull Context context) { - super(context, -1); - } - - @NonNull - public View getView(int position, View convertView, @NonNull ViewGroup parent) { - DrawerItem item = getItem(position); - View row = LayoutInflater.from(getContext()).inflate(item.layout, null); - - ImageView iv = row.findViewById(R.id.ivItem); - TextView tv = row.findViewById(R.id.tvItem); - - if (iv != null) { - iv.setImageResource(item.icon); - if (item.color != null) - iv.setColorFilter(item.color); - } - - if (tv != null) { - tv.setText(item.title); - - tv.setTextColor(Helper.resolveColor(getContext(), item.highlight ? R.attr.colorUnread : android.R.attr.textColorSecondary - )); - } - - return row; - } - - @Override - public boolean isEnabled(int position) { - DrawerItem item = getItem(position); - return (item != null && item.id != 0); - } - } - BroadcastReceiver receiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { diff --git a/app/src/main/java/eu/faircode/email/DrawerAdapter.java b/app/src/main/java/eu/faircode/email/DrawerAdapter.java new file mode 100644 index 0000000000..94b521c21f --- /dev/null +++ b/app/src/main/java/eu/faircode/email/DrawerAdapter.java @@ -0,0 +1,47 @@ +package eu.faircode.email; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ArrayAdapter; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; + +public class DrawerAdapter extends ArrayAdapter { + DrawerAdapter(@NonNull Context context) { + super(context, -1); + } + + @NonNull + public View getView(int position, View convertView, @NonNull ViewGroup parent) { + DrawerItem item = getItem(position); + View row = LayoutInflater.from(getContext()).inflate(item.getLayout(), null); + + ImageView iv = row.findViewById(R.id.ivItem); + TextView tv = row.findViewById(R.id.tvItem); + + if (iv != null) { + iv.setImageResource(item.getIcon()); + if (item.getColor() != null) + iv.setColorFilter(item.getColor()); + } + + if (tv != null) { + tv.setText(item.getTitle()); + + tv.setTextColor(Helper.resolveColor(getContext(), + item.getHighlight() ? R.attr.colorUnread : android.R.attr.textColorSecondary)); + } + + return row; + } + + @Override + public boolean isEnabled(int position) { + DrawerItem item = getItem(position); + return (item != null && item.getId() != 0); + } +} diff --git a/app/src/main/java/eu/faircode/email/DrawerItem.java b/app/src/main/java/eu/faircode/email/DrawerItem.java new file mode 100644 index 0000000000..7616026aa3 --- /dev/null +++ b/app/src/main/java/eu/faircode/email/DrawerItem.java @@ -0,0 +1,63 @@ +package eu.faircode.email; + +import android.content.Context; + +public class DrawerItem { + private int layout; + private int id; + private int icon; + private Integer color; + private String title; + private boolean highlight; + private Object data; + + DrawerItem(int layout) { + this.id = 0; + this.layout = layout; + } + + DrawerItem(Context context, int layout, int icon, int title) { + this.layout = layout; + this.id = title; + this.icon = icon; + this.title = context.getString(title); + } + + DrawerItem(int layout, int id, int icon, Integer color, String title, boolean highlight, Object data) { + this.layout = layout; + this.id = id; + this.icon = icon; + this.color = color; + this.title = title; + this.highlight = highlight; + this.data = data; + } + + int getLayout() { + return this.layout; + } + + int getId() { + return this.id; + } + + int getIcon() { + return this.icon; + } + + Integer getColor() { + return this.color; + } + + String getTitle() { + return this.title; + } + + boolean getHighlight() { + return this.highlight; + } + + Object getData() { + return this.data; + } +}