package org.thoughtcrime.securesms; import android.app.AlertDialog; import android.app.Dialog; import android.app.ProgressDialog; import android.content.Context; import android.content.DialogInterface; import android.os.AsyncTask; import android.os.Bundle; import android.support.v4.app.Fragment; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Toast; import org.thoughtcrime.securesms.crypto.MasterSecret; import org.thoughtcrime.securesms.database.NoExternalStorageException; import org.thoughtcrime.securesms.database.PlaintextBackupExporter; import org.thoughtcrime.securesms.util.Dialogs; import org.thoughtcrime.securesms.util.ResUtil; import java.io.IOException; public class ExportFragment extends Fragment { private static final int SUCCESS = 0; private static final int NO_SD_CARD = 1; private static final int IO_ERROR = 2; private MasterSecret masterSecret; public void setMasterSecret(MasterSecret masterSecret) { this.masterSecret = masterSecret; } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle bundle) { View layout = inflater.inflate(R.layout.export_fragment, container, false); // View exportEncryptedView = layout.findViewById(R.id.export_encrypted_backup); View exportPlaintextView = layout.findViewById(R.id.export_plaintext_backup); // exportEncryptedView.setOnClickListener(new View.OnClickListener() { // @Override // public void onClick(View v) { // handleExportEncryptedBackup(); // } // }); exportPlaintextView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { handleExportPlaintextBackup(); } }); return layout; } // private void handleExportEncryptedBackup() { // AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); // builder.setIcon(Dialogs.getDrawable(getActivity(), R.attr.dialog_info_icon)); // builder.setTitle(getActivity().getString(R.string.ExportFragment_export_to_sd_card)); // builder.setMessage(getActivity().getString(R.string.ExportFragment_this_will_export_your_encrypted_keys_settings_and_messages)); // builder.setPositiveButton(getActivity().getString(R.string.ExportFragment_export), new Dialog.OnClickListener() { // @Override // public void onClick(DialogInterface dialog, int which) { // new ExportEncryptedTask().execute(); // } // }); // builder.setNegativeButton(getActivity().getString(R.string.ExportFragment_cancel), null); // builder.show(); // } private void handleExportPlaintextBackup() { AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); builder.setIcon(ResUtil.getDrawable(getActivity(), R.attr.dialog_alert_icon)); builder.setTitle(getActivity().getString(R.string.ExportFragment_export_plaintext_to_sd_card)); builder.setMessage(getActivity().getString(R.string.ExportFragment_warning_this_will_export_the_plaintext_contents)); builder.setPositiveButton(getActivity().getString(R.string.ExportFragment_export), new Dialog.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { new ExportPlaintextTask().execute(); } }); builder.setNegativeButton(getActivity().getString(R.string.ExportFragment_cancel), null); builder.show(); } private class ExportPlaintextTask extends AsyncTask { private ProgressDialog dialog; @Override protected void onPreExecute() { dialog = ProgressDialog.show(getActivity(), getActivity().getString(R.string.ExportFragment_exporting), getActivity().getString(R.string.ExportFragment_exporting_plaintext_to_sd_card), true, false); } @Override protected Integer doInBackground(Void... params) { try { PlaintextBackupExporter.exportPlaintextToSd(getActivity(), masterSecret); return SUCCESS; } catch (NoExternalStorageException e) { Log.w("ExportFragment", e); return NO_SD_CARD; } catch (IOException e) { Log.w("ExportFragment", e); return IO_ERROR; } } @Override protected void onPostExecute(Integer result) { Context context = getActivity(); if (dialog != null) dialog.dismiss(); if (context == null) return; switch (result) { case NO_SD_CARD: Toast.makeText(context, context.getString(R.string.ExportFragment_error_unable_to_write_to_sd_card), Toast.LENGTH_LONG).show(); break; case IO_ERROR: Toast.makeText(context, context.getString(R.string.ExportFragment_error_while_writing_to_sd_card), Toast.LENGTH_LONG).show(); break; case SUCCESS: Toast.makeText(context, context.getString(R.string.ExportFragment_success), Toast.LENGTH_LONG).show(); break; } } } // private class ExportEncryptedTask extends AsyncTask { // private ProgressDialog dialog; // // @Override // protected void onPreExecute() { // dialog = ProgressDialog.show(getActivity(), // getActivity().getString(R.string.ExportFragment_exporting), // getActivity().getString(R.string.ExportFragment_exporting_keys_settings_and_messages), // true, false); // } // // @Override // protected void onPostExecute(Integer result) { // Context context = getActivity(); // // if (dialog != null) dialog.dismiss(); // // if (context == null) return; // // switch (result) { // case NO_SD_CARD: // Toast.makeText(context, // context.getString(R.string.ExportFragment_error_unable_to_write_to_sd_card), // Toast.LENGTH_LONG).show(); // break; // case IO_ERROR: // Toast.makeText(context, // context.getString(R.string.ExportFragment_error_while_writing_to_sd_card), // Toast.LENGTH_LONG).show(); // break; // case SUCCESS: // Toast.makeText(context, // context.getString(R.string.ExportFragment_success), // Toast.LENGTH_LONG).show(); // break; // } // } // // @Override // protected Integer doInBackground(Void... params) { // try { // EncryptedBackupExporter.exportToSd(getActivity()); // return SUCCESS; // } catch (NoExternalStorageException e) { // Log.w("ExportFragment", e); // return NO_SD_CARD; // } catch (IOException e) { // Log.w("ExportFragment", e); // return IO_ERROR; // } // } // } }