mirror of
https://github.com/M66B/FairEmail.git
synced 2026-04-01 22:56:33 +02:00
Added AI summarization
This commit is contained in:
@@ -478,6 +478,7 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
|
||||
private ImageButton ibSearchText;
|
||||
private ImageButton ibSearch;
|
||||
private ImageButton ibTranslate;
|
||||
private ImageButton ibSummarize;
|
||||
private ImageButton ibFullScreen;
|
||||
private ImageButton ibForceLight;
|
||||
private ImageButton ibImportance;
|
||||
@@ -927,6 +928,7 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
|
||||
ibSearchText = vsBody.findViewById(R.id.ibSearchText);
|
||||
ibSearch = vsBody.findViewById(R.id.ibSearch);
|
||||
ibTranslate = vsBody.findViewById(R.id.ibTranslate);
|
||||
ibSummarize = vsBody.findViewById(R.id.ibSummarize);
|
||||
ibFullScreen = vsBody.findViewById(R.id.ibFullScreen);
|
||||
ibForceLight = vsBody.findViewById(R.id.ibForceLight);
|
||||
ibImportance = vsBody.findViewById(R.id.ibImportance);
|
||||
@@ -1099,6 +1101,7 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
|
||||
ibSearch.setOnClickListener(this);
|
||||
ibTranslate.setOnClickListener(this);
|
||||
ibTranslate.setOnLongClickListener(this);
|
||||
ibSummarize.setOnClickListener(this);
|
||||
ibFullScreen.setOnClickListener(this);
|
||||
ibForceLight.setOnClickListener(this);
|
||||
ibImportance.setOnClickListener(this);
|
||||
@@ -1221,6 +1224,7 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
|
||||
ibSearch.setOnClickListener(null);
|
||||
ibTranslate.setOnClickListener(null);
|
||||
ibTranslate.setOnLongClickListener(null);
|
||||
ibSummarize.setOnClickListener(null);
|
||||
ibFullScreen.setOnClickListener(null);
|
||||
ibForceLight.setOnClickListener(null);
|
||||
ibImportance.setOnClickListener(null);
|
||||
@@ -1839,6 +1843,7 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
|
||||
ibSearchText.setVisibility(View.GONE);
|
||||
ibSearch.setVisibility(View.GONE);
|
||||
ibTranslate.setVisibility(View.GONE);
|
||||
ibSummarize.setVisibility(View.GONE);
|
||||
ibFullScreen.setVisibility(View.GONE);
|
||||
ibForceLight.setVisibility(View.GONE);
|
||||
ibImportance.setVisibility(View.GONE);
|
||||
@@ -2135,6 +2140,7 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
|
||||
ibSearchText.setVisibility(View.GONE);
|
||||
ibSearch.setVisibility(View.GONE);
|
||||
ibTranslate.setVisibility(View.GONE);
|
||||
ibSummarize.setVisibility(View.GONE);
|
||||
ibFullScreen.setVisibility(View.GONE);
|
||||
ibForceLight.setVisibility(View.GONE);
|
||||
ibImportance.setVisibility(View.GONE);
|
||||
@@ -2349,6 +2355,7 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
|
||||
boolean button_hide = prefs.getBoolean("button_hide", false);
|
||||
boolean button_importance = prefs.getBoolean("button_importance", false);
|
||||
boolean button_translate = prefs.getBoolean("button_translate", true);
|
||||
boolean button_summarize = prefs.getBoolean("button_summarize", false);
|
||||
boolean button_full_screen = prefs.getBoolean("button_full_screen", false);
|
||||
boolean button_force_light = prefs.getBoolean("button_force_light", true);
|
||||
boolean button_search = prefs.getBoolean("button_search", false);
|
||||
@@ -2389,6 +2396,7 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
|
||||
ibSearchText.setVisibility(tools && !outbox && button_search_text && message.content ? View.VISIBLE : View.GONE);
|
||||
ibSearch.setVisibility(tools && !outbox && button_search && (froms > 0 || tos > 0) ? View.VISIBLE : View.GONE);
|
||||
ibTranslate.setVisibility(tools && !outbox && button_translate && DeepL.isAvailable(context) && message.content ? View.VISIBLE : View.GONE);
|
||||
ibSummarize.setVisibility(tools && !outbox && button_summarize && (OpenAI.isAvailable(context) || Gemini.isAvailable(context)) && message.content ? View.VISIBLE : View.GONE);
|
||||
ibFullScreen.setVisibility(tools && full && button_full_screen && message.content ? View.VISIBLE : View.GONE);
|
||||
ibForceLight.setVisibility(tools && full && dark && button_force_light && message.content ? View.VISIBLE : View.GONE);
|
||||
ibForceLight.setImageLevel(!(canDarken || fake_dark) || force_light ? 1 : 0);
|
||||
@@ -4529,6 +4537,8 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
|
||||
onSearchContact(message, false);
|
||||
} else if (id == R.id.ibTranslate) {
|
||||
onActionTranslate(message);
|
||||
} else if (id == R.id.ibSummarize) {
|
||||
onActionSummarize(message);
|
||||
} else if (id == R.id.ibFullScreen)
|
||||
onActionOpenFull(message);
|
||||
else if (id == R.id.ibForceLight) {
|
||||
@@ -6239,6 +6249,8 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
|
||||
popupMenu.getMenu().findItem(R.id.menu_search_in_text).setEnabled(message.content && !full);
|
||||
popupMenu.getMenu().findItem(R.id.menu_translate).setVisible(
|
||||
DeepL.isAvailable(context) && message.content);
|
||||
popupMenu.getMenu().findItem(R.id.menu_summarize).setVisible(
|
||||
(OpenAI.isAvailable(context) || Gemini.isAvailable(context)) && message.content);
|
||||
|
||||
popupMenu.getMenu().findItem(R.id.menu_force_light).setVisible(full && dark);
|
||||
popupMenu.getMenu().findItem(R.id.menu_force_light).setChecked(force_light);
|
||||
@@ -6348,6 +6360,9 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
|
||||
} else if (itemId == R.id.menu_translate) {
|
||||
onActionTranslate(message);
|
||||
return true;
|
||||
} else if (itemId == R.id.menu_summarize) {
|
||||
onActionSummarize(message);
|
||||
return true;
|
||||
} else if (itemId == R.id.menu_force_light) {
|
||||
onActionForceLight(message);
|
||||
return true;
|
||||
@@ -7256,6 +7271,15 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
|
||||
}
|
||||
}
|
||||
|
||||
private void onActionSummarize(TupleMessageEx message) {
|
||||
Bundle args = new Bundle();
|
||||
args.putLong("id", message.id);
|
||||
|
||||
FragmentDialogSummarize fragment = new FragmentDialogSummarize();
|
||||
fragment.setArguments(args);
|
||||
fragment.show(parentFragment.getParentFragmentManager(), "message:summary");
|
||||
}
|
||||
|
||||
private void onActionForceLight(TupleMessageEx message) {
|
||||
if (canDarken || fake_dark) {
|
||||
boolean force_light = !properties.getValue("force_light", message.id);
|
||||
|
||||
Reference in New Issue
Block a user