mirror of
https://github.com/ArcaneChat/android.git
synced 2026-07-03 14:05:24 +02:00
implement messages deletion
This commit is contained in:
@@ -179,6 +179,10 @@
|
||||
<item quantity="one">This will permanently delete the selected message.</item>
|
||||
<item quantity="other">This will permanently delete all %1$d selected messages.</item>
|
||||
</plurals>
|
||||
<plurals name="ConversationFragment_this_will_delete_n_selected_messages_here_and_on_server">
|
||||
<item quantity="one">This will permanently delete the selected message here and on the server.</item>
|
||||
<item quantity="other">This will permanently delete all %1$d selected messages here and one the server.</item>
|
||||
</plurals>
|
||||
<string name="ConversationFragment_save_to_sd_card">Save to storage?</string>
|
||||
<plurals name="ConversationFragment_saving_n_media_to_storage_warning">
|
||||
<item quantity="one">Saving this media to storage will allow any other apps on your device to access it.\n\nContinue?</item>
|
||||
|
||||
@@ -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<DcMsg> 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;
|
||||
|
||||
@@ -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<MessageRecord, Void, Void>(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);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user