Fixes FS#229: prompt for confirmation before deleting a file

This commit is contained in:
steckbrief 2016-08-23 11:34:14 +02:00
parent ad096f4bfd
commit 14e28d1e9a
4 changed files with 41 additions and 9 deletions

View file

@ -68,6 +68,7 @@ import de.thedevstack.conversationsplus.ui.adapter.MessageAdapter;
import de.thedevstack.conversationsplus.ui.adapter.MessageAdapter.OnContactPictureClicked;
import de.thedevstack.conversationsplus.ui.adapter.MessageAdapter.OnContactPictureLongClicked;
import de.thedevstack.conversationsplus.ui.listeners.ConversationSwipeRefreshListener;
import de.thedevstack.conversationsplus.ui.listeners.DeleteFileCallback;
import de.thedevstack.conversationsplus.ui.listeners.SimpleUserDecisionCallback;
import de.thedevstack.conversationsplus.ui.listeners.UserDecisionListener;
import de.thedevstack.conversationsplus.utils.GeoHelper;
@ -588,7 +589,7 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa
public boolean onContextItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.msg_ctx_menu_delete_remote_file:
new SimpleConfirmDialog(getActivity(), "Are you sure?", new DeleteRemoteFileService(selectedMessage)).show();
new SimpleConfirmDialog(getActivity(), R.string.cplus_are_you_sure, new DeleteRemoteFileService(selectedMessage)).show();
return true;
case R.id.msg_ctx_mnu_details:
new MessageDetailsDialog(getActivity(), selectedMessage).show();
@ -615,7 +616,7 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa
retryDecryption(selectedMessage);
return true;
case R.id.delete_file:
deleteFile(selectedMessage);
new SimpleConfirmDialog(getActivity(), R.string.cplus_are_you_sure, new DeleteFileCallback(selectedMessage)).show();
return true;
default:
return super.onContextItemSelected(item);
@ -654,13 +655,6 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa
}
}
private void deleteFile(Message message) {
if (FileBackend.deleteFile(message, activity.xmppConnectionService)) {
message.setTransferable(new TransferablePlaceholder(Transferable.STATUS_DELETED));
activity.xmppConnectionService.updateConversationUi();
}
}
private void resendMessage(Message message) {
if (message.getType() == Message.TYPE_FILE || message.getType() == Message.TYPE_IMAGE) {
DownloadableFile file = FileBackend.getFile(message);

View file

@ -0,0 +1,36 @@
package de.thedevstack.conversationsplus.ui.listeners;
import de.thedevstack.conversationsplus.entities.Message;
import de.thedevstack.conversationsplus.entities.Transferable;
import de.thedevstack.conversationsplus.entities.TransferablePlaceholder;
import de.thedevstack.conversationsplus.persistance.FileBackend;
import de.thedevstack.conversationsplus.utils.UiUpdateHelper;
import de.thedevstack.conversationsplus.utils.XmppConnectionServiceAccessor;
/**
* Created by steckbrief on 23.08.2016.
*/
public class DeleteFileCallback implements SimpleUserDecisionCallback {
private final Message message;
public DeleteFileCallback(Message message) {
this.message = message;
}
private void deleteFile() {
if (FileBackend.deleteFile(this.message, XmppConnectionServiceAccessor.xmppConnectionService)) {
this.message.setTransferable(new TransferablePlaceholder(Transferable.STATUS_DELETED));
UiUpdateHelper.updateConversationUi();
}
}
@Override
public void onYes() {
this.deleteFile();
}
@Override
public void onNo() {
// Nothing to do
}
}

View file

@ -634,4 +634,5 @@
<string name="no_keys_just_confirm">Du vertraust diesem Kontakt bereits. Durch Auswählen von \"Fertig\" bestätigst du, dass %s Teil dieser Konferenz ist.</string>
<string name="select_image_and_crop">Bild auswählen und zuschneiden</string>
<string name="this_account_is_disabled">Du hast diesen Account deaktiviert</string>
<string name="cplus_are_you_sure">Bist du dir sicher?</string>
</resources>

View file

@ -675,4 +675,5 @@
<string name="no_application_to_share_uri">No application found to share URI</string>
<string name="share_uri_with">Share URI with…</string>
<string name="delete_remote_file_x">Delete remote file</string>
<string name="cplus_are_you_sure">Are you sure?</string>
</resources>