package de.thedevstack.conversationsplus.ui.listeners; import android.app.PendingIntent; import android.net.Uri; import android.widget.Toast; import de.thedevstack.conversationsplus.ConversationsPlusApplication; import de.thedevstack.conversationsplus.ConversationsPlusPreferences; import de.thedevstack.conversationsplus.enums.UserDecision; import eu.siacs.conversations.R; import eu.siacs.conversations.entities.Conversation; import eu.siacs.conversations.entities.Message; import eu.siacs.conversations.services.XmppConnectionService; import eu.siacs.conversations.ui.UiCallback; import eu.siacs.conversations.ui.XmppActivity; /** * Created by tzur on 31.10.2015. */ public class ResizePictureUserDecisionListener implements UserDecisionListener { protected Uri uri; protected final Conversation conversation; protected final UiCallback callback; protected final XmppConnectionService xmppConnectionService; protected final Toast prepareFileToast; protected final XmppActivity activity; public ResizePictureUserDecisionListener(XmppActivity activity, Conversation conversation, XmppConnectionService xmppConnectionService) { this.xmppConnectionService = xmppConnectionService; this.conversation = conversation; this.activity = activity; this.prepareFileToast = Toast.makeText(ConversationsPlusApplication.getAppContext(), ConversationsPlusApplication.getInstance().getText(R.string.preparing_image), Toast.LENGTH_LONG); this.callback = new UiCallback() { @Override public void userInputRequried(PendingIntent pi, Message object) { hidePrepareFileToast(); } @Override public void success(Message message) { ResizePictureUserDecisionListener.this.xmppConnectionService.sendMessage(message); } @Override public void error(int error, Message message) { hidePrepareFileToast(); ResizePictureUserDecisionListener.this.activity.displayErrorDialog(error); } protected void hidePrepareFileToast() { ResizePictureUserDecisionListener.this.activity.runOnUiThread(new Runnable() { @Override public void run() { ResizePictureUserDecisionListener.this.prepareFileToast.cancel(); } }); } }; } public ResizePictureUserDecisionListener(XmppActivity activity, Conversation conversation, Uri uri, XmppConnectionService xmppConnectionService) { this(activity, conversation, xmppConnectionService); this.uri = uri; } public void setUri(Uri uri) { this.uri = uri; } protected void showPrepareFileToast() { activity.runOnUiThread(new Runnable() { @Override public void run() { prepareFileToast.show(); } }); } @Override public void onYes() { this.showPrepareFileToast(); xmppConnectionService.attachImageToConversation(this.conversation, this.uri, this.callback); } @Override public void onNo() { this.showPrepareFileToast(); xmppConnectionService.attachImageToConversationWithoutResizing(this.conversation, this.uri, this.callback); } @Override public void onRemember(UserDecision decision) { ConversationsPlusPreferences.applyResizePicture(decision); } }