diff --git a/res/values/strings.xml b/res/values/strings.xml index 6e94022f9..1541c70d0 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -179,6 +179,10 @@ This will permanently delete the selected message. This will permanently delete all %1$d selected messages. + + This will permanently delete the selected message here and on the server. + This will permanently delete all %1$d selected messages here and one the server. + Save to storage? Saving this media to storage will allow any other apps on your device to access it.\n\nContinue? diff --git a/src/com/b44t/messenger/DcMsg.java b/src/com/b44t/messenger/DcMsg.java index ce060e824..f66c27c4e 100644 --- a/src/com/b44t/messenger/DcMsg.java +++ b/src/com/b44t/messenger/DcMsg.java @@ -33,6 +33,7 @@ import org.thoughtcrime.securesms.recipients.RecipientProvider; import java.util.Collections; import java.util.List; +import java.util.Set; public class DcMsg { @@ -114,6 +115,15 @@ public class DcMsg { public native void setMediainfo (String author, String trackname); // aliases and higher-level tools + public static int[] msgSetToIds(final Set dcMsgs) { + int cnt = dcMsgs==null? 0 : dcMsgs.size(); + int[] ids = new int[cnt]; + int i = 0; + for (DcMsg dcMsg : dcMsgs) { + ids[i++] = dcMsg.getId(); + } + return ids; + } public boolean isOutgoing() { return getFromId() == DcContact.DC_CONTACT_ID_SELF; diff --git a/src/org/thoughtcrime/securesms/ConversationFragment.java b/src/org/thoughtcrime/securesms/ConversationFragment.java index 52d82f5d5..d1d940651 100644 --- a/src/org/thoughtcrime/securesms/ConversationFragment.java +++ b/src/org/thoughtcrime/securesms/ConversationFragment.java @@ -347,38 +347,14 @@ public class ConversationFragment extends Fragment builder.setIconAttribute(R.attr.dialog_alert_icon); builder.setTitle(getActivity().getResources().getQuantityString(R.plurals.ConversationFragment_delete_selected_messages, messagesCount, messagesCount)); - builder.setMessage(getActivity().getResources().getQuantityString(R.plurals.ConversationFragment_this_will_permanently_delete_all_n_selected_messages, messagesCount, messagesCount)); + builder.setMessage(getActivity().getResources().getQuantityString(R.plurals.ConversationFragment_this_will_delete_n_selected_messages_here_and_on_server, messagesCount, messagesCount)); builder.setCancelable(true); builder.setPositiveButton(R.string.delete, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { - /* TODO: delete messages - new ProgressDialogAsyncTask(getActivity(), - R.string.ConversationFragment_deleting, - R.string.ConversationFragment_deleting_messages) - { - @Override - protected Void doInBackground(MessageRecord... messageRecords) { - for (MessageRecord messageRecord : messageRecords) { - boolean threadDeleted; - - if (messageRecord.isMms()) { - threadDeleted = DatabaseFactory.getMmsDatabase(getActivity()).delete(messageRecord.getId()); - } else { - threadDeleted = DatabaseFactory.getSmsDatabase(getActivity()).deleteMessage(messageRecord.getId()); - } - - if (threadDeleted) { - threadId = -1; - listener.setThreadId(threadId); - } - } - - return null; - } - }.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, messageRecords.toArray(new MessageRecord[messageRecords.size()])); - */ + int[] ids = DcMsg.msgSetToIds(messageRecords); + dcContext.deleteMsgs(ids); } });