add action menu icon option to toggle message bookmark

This commit is contained in:
adbenitez
2025-03-12 17:06:18 +01:00
parent e6988e3f61
commit b4b12862fd
4 changed files with 31 additions and 3 deletions
@@ -327,6 +327,7 @@ public class ConversationFragment extends MessageSelectorFragment
menu.findItem(R.id.menu_context_edit).setVisible(false);
menu.findItem(R.id.menu_context_reply_privately).setVisible(false);
menu.findItem(R.id.menu_add_to_home_screen).setVisible(false);
menu.findItem(R.id.menu_toggle_save).setVisible(false);
} else {
DcMsg messageRecord = messageRecords.iterator().next();
DcChat chat = getListAdapter().getChat();
@@ -339,6 +340,9 @@ public class ConversationFragment extends MessageSelectorFragment
boolean showReplyPrivately = chat.isMultiUser() && !messageRecord.isOutgoing() && canReply;
menu.findItem(R.id.menu_context_reply_privately).setVisible(showReplyPrivately);
menu.findItem(R.id.menu_add_to_home_screen).setVisible(messageRecord.getType() == DcMsg.DC_MSG_WEBXDC);
menu.findItem(R.id.menu_toggle_save).setVisible(messageRecord.canSave() && !chat.isSelfTalk());
menu.findItem(R.id.menu_toggle_save).setIcon(messageRecord.getSavedMsgId() == 0 ? R.drawable.baseline_bookmark_24 : R.drawable.baseline_bookmark_border_24);
}
// if one of the selected items cannot be saved, disable saving.
@@ -496,6 +500,15 @@ public class ConversationFragment extends MessageSelectorFragment
}
}
private void handleToggleSave(final Set<DcMsg> messageRecords) {
DcMsg msg = getSelectedMessageRecord(messageRecords);
if (msg.getSavedMsgId() != 0) {
dcContext.deleteMsgs(new int[]{msg.getSavedMsgId()});
} else {
dcContext.saveMsgs(new int[]{msg.getId()});
}
}
private void reloadList() {
reloadList(false);
}
@@ -988,9 +1001,12 @@ public class ConversationFragment extends MessageSelectorFragment
} else if (itemId == R.id.menu_resend) {
handleResendMessage(getListAdapter().getSelectedItems());
return true;
} else if (itemId == R.id.menu_toggle_save) {
handleToggleSave(getListAdapter().getSelectedItems());
actionMode.finish();
return true;
}
return false;
return false;
}
}
@@ -27,6 +27,7 @@ public class ConversationAdaptiveActionsToolbar extends Toolbar {
private static final int ID_ACTION_2 = R.id.menu_context_copy;
private static final int ID_ACTION_3 = R.id.menu_context_share;
private static final int ID_ACTION_4 = R.id.menu_context_forward;
private static final int ID_ACTION_5 = R.id.menu_toggle_save;
private final int maxShown;
@@ -79,7 +80,8 @@ public class ConversationAdaptiveActionsToolbar extends Toolbar {
boolean showAsAction = item.getItemId() == ID_ACTION_1
|| item.getItemId() == ID_ACTION_2
|| item.getItemId() == ID_ACTION_3
|| item.getItemId() == ID_ACTION_4;
|| item.getItemId() == ID_ACTION_4
|| item.getItemId() == ID_ACTION_5;
if (showAsAction && item.isVisible() && nItemsToShow > 0) {
item.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
@@ -0,0 +1,5 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android" android:height="24dp" android:tint="#FFFFFF" android:viewportHeight="24" android:viewportWidth="24" android:width="24dp">
<path android:fillColor="@android:color/white" android:pathData="M17,3L7,3c-1.1,0 -1.99,0.9 -1.99,2L5,21l7,-3 7,3L19,5c0,-1.1 -0.9,-2 -2,-2zM17,18l-5,-2.18L7,18L7,5h10v13z"/>
</vector>
@@ -5,6 +5,11 @@
android:icon="@drawable/ic_create_white_24dp"
app:showAsAction="ifRoom" />
<item android:title="@string/save"
android:id="@+id/menu_toggle_save"
android:icon="@drawable/baseline_bookmark_24"
app:showAsAction="ifRoom" />
<item android:title="@string/menu_copy_text_to_clipboard"
android:id="@+id/menu_context_copy"
android:icon="?menu_copy_icon"