Refactoring

pull/197/head
M66B 4 years ago
parent c12a92e873
commit 1a4232b1ad

@ -227,7 +227,7 @@ public class AdapterContact extends RecyclerView.Adapter<AdapterContact.ViewHold
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.R && // should be system whitelisted
share.resolveActivity(context.getPackageManager()) != null)
popupMenu.getMenu().add(Menu.NONE, R.string.title_share, 2, R.string.title_share);
if (ShortcutManagerCompat.isRequestPinShortcutSupported(context))
if (Shortcuts.can(context))
popupMenu.getMenu().add(Menu.NONE, R.string.title_pin, 3, R.string.title_pin);
popupMenu.getMenu().add(Menu.NONE, R.string.title_advanced_edit_name, 4, R.string.title_advanced_edit_name);
popupMenu.getMenu().add(Menu.NONE, R.string.title_delete, 5, R.string.title_delete);

@ -26,11 +26,8 @@ import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.res.ColorStateList;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Typeface;
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.os.Bundle;
import android.provider.Settings;
@ -57,7 +54,6 @@ import androidx.appcompat.widget.PopupMenu;
import androidx.constraintlayout.widget.Group;
import androidx.core.content.pm.ShortcutInfoCompat;
import androidx.core.content.pm.ShortcutManagerCompat;
import androidx.core.graphics.drawable.IconCompat;
import androidx.fragment.app.Fragment;
import androidx.lifecycle.Lifecycle;
import androidx.lifecycle.LifecycleObserver;
@ -573,7 +569,7 @@ public class AdapterFolder extends RecyclerView.Adapter<AdapterFolder.ViewHolder
popupMenu.getMenu().add(Menu.NONE, R.string.title_create_sub_folder, order++, R.string.title_create_sub_folder)
.setEnabled(folder.inferiors);
if (ShortcutManagerCompat.isRequestPinShortcutSupported(context))
if (Shortcuts.can(context))
popupMenu.getMenu().add(Menu.NONE, R.string.title_pin, order++, R.string.title_pin);
if (!folder.selectable && debug)
@ -965,31 +961,7 @@ public class AdapterFolder extends RecyclerView.Adapter<AdapterFolder.ViewHolder
}
private void onActionPinFolder() {
Intent view = new Intent(context, ActivityView.class);
view.setAction("folder:" + folder.id);
view.putExtra("account", folder.account);
view.putExtra("type", folder.type);
view.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
int resid = EntityFolder.getIcon(folder.type);
Drawable d = context.getDrawable(resid);
Bitmap bm = Bitmap.createBitmap(
d.getIntrinsicWidth(),
d.getIntrinsicHeight(),
Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bm);
d.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());
d.setTint(folder.color == null ? Color.DKGRAY : folder.color);
d.draw(canvas);
IconCompat icon = IconCompat.createWithBitmap(bm);
String id = "folder:" + folder.id;
ShortcutInfoCompat.Builder builder = new ShortcutInfoCompat.Builder(context, id)
.setIcon(icon)
.setShortLabel(folder.getDisplayName(context))
.setLongLabel(folder.getDisplayName(context))
.setIntent(view);
ShortcutInfoCompat.Builder builder = Shortcuts.getFolder(context, folder);
ShortcutManagerCompat.requestPinShortcut(context, builder.build(), null);
}

@ -116,7 +116,6 @@ import androidx.core.content.FileProvider;
import androidx.core.content.pm.ShortcutInfoCompat;
import androidx.core.content.pm.ShortcutManagerCompat;
import androidx.core.graphics.ColorUtils;
import androidx.core.graphics.drawable.IconCompat;
import androidx.fragment.app.DialogFragment;
import androidx.fragment.app.Fragment;
import androidx.lifecycle.Lifecycle;
@ -1734,7 +1733,7 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
ibRule.setVisibility(tools && button_rule && !outbox && !message.folderReadOnly ? View.VISIBLE : View.GONE);
ibUnsubscribe.setVisibility(tools && button_unsubscribe && message.unsubscribe != null ? View.VISIBLE : View.GONE);
ibPrint.setVisibility(tools && button_print && hasWebView && message.content && Helper.canPrint(context) ? View.VISIBLE : View.GONE);
ibPin.setVisibility(tools && button_pin && ShortcutManagerCompat.isRequestPinShortcutSupported(context) ? View.VISIBLE : View.GONE);
ibPin.setVisibility(tools && button_pin && pin ? View.VISIBLE : View.GONE);
ibShare.setVisibility(tools && button_share && message.content ? View.VISIBLE : View.GONE);
ibEvent.setVisibility(tools && button_event && message.content ? View.VISIBLE : View.GONE);
ibSearch.setVisibility(tools && button_search && (froms > 0 || tos > 0) && !outbox ? View.VISIBLE : View.GONE);
@ -4168,7 +4167,7 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
popupMenu.getMenu().findItem(R.id.menu_manage_keywords).setVisible(message.accountProtocol == EntityAccount.TYPE_IMAP);
popupMenu.getMenu().findItem(R.id.menu_share).setEnabled(message.content);
popupMenu.getMenu().findItem(R.id.menu_pin).setVisible(ShortcutManagerCompat.isRequestPinShortcutSupported(context));
popupMenu.getMenu().findItem(R.id.menu_pin).setVisible(pin);
popupMenu.getMenu().findItem(R.id.menu_event).setEnabled(message.content);
popupMenu.getMenu().findItem(R.id.menu_print).setEnabled(hasWebView && message.content);
popupMenu.getMenu().findItem(R.id.menu_print).setVisible(Helper.canPrint(context));
@ -4928,43 +4927,8 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
@Override
protected void onExecuted(Bundle args, ContactInfo[] contactInfo) {
Intent thread = new Intent(context, ActivityView.class);
thread.setAction("thread:" + message.id);
thread.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
thread.putExtra("account", message.account);
thread.putExtra("folder", message.folder);
thread.putExtra("thread", message.thread);
thread.putExtra("filter_archive", true);
thread.putExtra("pinned", true);
Bitmap bm;
if (contactInfo[0].hasPhoto())
bm = contactInfo[0].getPhotoBitmap();
else {
int resid = R.drawable.baseline_mail_24;
Drawable d = context.getDrawable(resid);
bm = Bitmap.createBitmap(
d.getIntrinsicWidth(),
d.getIntrinsicHeight(),
Bitmap.Config.ARGB_8888);
}
String label;
if (!TextUtils.isEmpty(message.notes))
label = message.notes;
else if (!TextUtils.isEmpty(message.subject))
label = message.subject;
else
label = context.getString(R.string.app_name);
IconCompat icon = IconCompat.createWithBitmap(bm);
String id = "message:" + message.id;
ShortcutInfoCompat.Builder builder = new ShortcutInfoCompat.Builder(context, id)
.setIcon(icon)
.setShortLabel(label)
.setLongLabel(label)
.setIntent(thread);
ShortcutInfoCompat.Builder builder =
Shortcuts.getMessage(context, message, contactInfo);
ShortcutManagerCompat.requestPinShortcut(context, builder.build(), null);
}
@ -6915,9 +6879,7 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
final CheckBox cbUnsubscribe = dview.findViewById(R.id.cbUnsubscribe);
final CheckBox cbRule = dview.findViewById(R.id.cbRule);
cbPin.setVisibility(
ShortcutManagerCompat.isRequestPinShortcutSupported(context)
? View.VISIBLE : View.GONE);
cbPin.setVisibility(Shortcuts.can(context) ? View.VISIBLE : View.GONE);
cbJunk.setChecked(prefs.getBoolean("button_junk", true));
cbTrash.setChecked(prefs.getBoolean("button_trash", true));

@ -29,6 +29,9 @@ import android.content.pm.ShortcutManager;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
@ -219,4 +222,76 @@ class Shortcuts {
return builder;
}
@NonNull
static ShortcutInfoCompat.Builder getMessage(Context context, EntityMessage message, ContactInfo[] contactInfo) {
Intent thread = new Intent(context, ActivityView.class);
thread.setAction("thread:" + message.id);
thread.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
thread.putExtra("account", message.account);
thread.putExtra("folder", message.folder);
thread.putExtra("thread", message.thread);
thread.putExtra("filter_archive", true);
thread.putExtra("pinned", true);
Bitmap bm;
if (contactInfo[0].hasPhoto())
bm = contactInfo[0].getPhotoBitmap();
else {
int resid = R.drawable.baseline_mail_24;
Drawable d = context.getDrawable(resid);
bm = Bitmap.createBitmap(
d.getIntrinsicWidth(),
d.getIntrinsicHeight(),
Bitmap.Config.ARGB_8888);
}
String label;
if (!TextUtils.isEmpty(message.notes))
label = message.notes;
else if (!TextUtils.isEmpty(message.subject))
label = message.subject;
else
label = context.getString(R.string.app_name);
IconCompat icon = IconCompat.createWithBitmap(bm);
String id = "message:" + message.id;
return new ShortcutInfoCompat.Builder(context, id)
.setIcon(icon)
.setShortLabel(label)
.setLongLabel(label)
.setIntent(thread);
}
@NonNull
static ShortcutInfoCompat.Builder getFolder(Context context, EntityFolder folder) {
Intent view = new Intent(context, ActivityView.class);
view.setAction("folder:" + folder.id);
view.putExtra("account", folder.account);
view.putExtra("type", folder.type);
view.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
int resid = EntityFolder.getIcon(folder.type);
Drawable d = context.getDrawable(resid);
Bitmap bm = Bitmap.createBitmap(
d.getIntrinsicWidth(),
d.getIntrinsicHeight(),
Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bm);
d.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());
d.setTint(folder.color == null ? Color.DKGRAY : folder.color);
d.draw(canvas);
IconCompat icon = IconCompat.createWithBitmap(bm);
String id = "folder:" + folder.id;
return new ShortcutInfoCompat.Builder(context, id)
.setIcon(icon)
.setShortLabel(folder.getDisplayName(context))
.setLongLabel(folder.getDisplayName(context))
.setIntent(view);
}
static boolean can(Context context) {
return ShortcutManagerCompat.isRequestPinShortcutSupported(context);
}
}

Loading…
Cancel
Save