Added AI summarization

This commit is contained in:
M66B
2024-04-27 19:04:44 +02:00
parent 98326a520e
commit 93835d886b
10 changed files with 272 additions and 3 deletions

View File

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