tor-android/app/src/main/java/org/torproject/android/ui/hiddenservices/dialogs/HSActionsDialog.java

131 lines
5.3 KiB
Java
Raw Normal View History

2016-11-24 02:56:11 +01:00
package org.torproject.android.ui.hiddenservices.dialogs;
2016-11-20 03:20:14 +01:00
import android.app.Dialog;
2016-11-20 04:39:34 +01:00
import android.content.ClipData;
import android.content.ClipboardManager;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
2016-11-20 03:20:14 +01:00
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v4.app.DialogFragment;
import android.support.v7.app.AlertDialog;
import android.view.View;
import android.widget.Button;
2016-11-20 04:39:34 +01:00
import android.widget.Toast;
2016-11-20 03:20:14 +01:00
import org.torproject.android.R;
2016-11-24 02:56:11 +01:00
import org.torproject.android.ui.hiddenservices.backup.BackupUtils;
2016-12-08 15:22:53 +01:00
import org.torproject.android.ui.hiddenservices.permissions.PermissionManager;
2016-11-20 03:20:14 +01:00
public class HSActionsDialog extends DialogFragment {
2016-11-24 22:22:04 +01:00
public static final int WRITE_EXTERNAL_STORAGE_FROM_ACTION_DIALOG = 2;
2016-11-20 03:20:14 +01:00
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
2016-11-20 04:39:34 +01:00
final Bundle arguments = getArguments();
2016-11-20 03:20:14 +01:00
final View dialog_view = getActivity().getLayoutInflater().inflate(R.layout.layout_hs_actions, null);
final AlertDialog actionDialog = new AlertDialog.Builder(getActivity())
.setView(dialog_view)
.setTitle(R.string.hidden_services)
.create();
2016-11-20 22:51:36 +01:00
Button backup = (Button) dialog_view.findViewById(R.id.btn_hs_backup);
backup.setOnClickListener(new View.OnClickListener() {
2016-11-20 03:20:14 +01:00
public void onClick(View v) {
2016-11-20 04:39:34 +01:00
Context mContext = v.getContext();
2016-11-20 22:51:36 +01:00
2016-12-08 15:22:53 +01:00
if (PermissionManager.isLollipopOrHigher()
2016-11-24 02:22:41 +01:00
&& !PermissionManager.hasExternalWritePermission(mContext)) {
2016-11-24 22:22:04 +01:00
2016-12-08 15:22:53 +01:00
PermissionManager.requestExternalWritePermissions(
2016-11-24 22:22:04 +01:00
getActivity(), WRITE_EXTERNAL_STORAGE_FROM_ACTION_DIALOG);
2016-11-20 22:51:36 +01:00
return;
}
2016-11-22 22:37:34 +01:00
BackupUtils hsutils = new BackupUtils(mContext);
2016-11-23 21:20:50 +01:00
String backupPath = hsutils.createZipBackup(Integer.parseInt(arguments.getString("port")));
2016-11-20 04:39:34 +01:00
if (backupPath == null || backupPath.length() < 1) {
Toast.makeText(mContext, R.string.error, Toast.LENGTH_LONG).show();
actionDialog.dismiss();
return;
}
2016-11-24 02:22:41 +01:00
Toast.makeText(mContext, R.string.backup_saved_at_external_storage, Toast.LENGTH_LONG).show();
2016-11-20 04:39:34 +01:00
2016-11-20 23:56:17 +01:00
Uri selectedUri = Uri.parse(backupPath.substring(0, backupPath.lastIndexOf("/")));
2016-11-20 04:39:34 +01:00
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(selectedUri, "resource/folder");
if (intent.resolveActivityInfo(mContext.getPackageManager(), 0) != null) {
startActivity(intent);
} else {
Toast.makeText(mContext, R.string.filemanager_not_available, Toast.LENGTH_LONG).show();
}
2016-11-20 03:20:14 +01:00
actionDialog.dismiss();
}
});
2016-11-20 04:39:34 +01:00
Button copy = (Button) dialog_view.findViewById(R.id.btn_hs_clipboard);
copy.setOnClickListener(new View.OnClickListener() {
2016-11-20 03:20:14 +01:00
public void onClick(View v) {
2016-11-20 04:39:34 +01:00
Context mContext = v.getContext();
ClipboardManager clipboard = (ClipboardManager) mContext.getSystemService(Context.CLIPBOARD_SERVICE);
ClipData clip = ClipData.newPlainText("onion", arguments.getString("onion"));
clipboard.setPrimaryClip(clip);
Toast.makeText(mContext, R.string.done, Toast.LENGTH_LONG).show();
2016-11-20 03:20:14 +01:00
actionDialog.dismiss();
}
});
Button showAuth = (Button) dialog_view.findViewById(R.id.bt_hs_show_auth);
showAuth.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
String auth_cookie_value = arguments.getString("auth_cookie_value");
2016-12-05 21:14:15 +01:00
if (arguments.getInt("auth_cookie") == 1) {
if (auth_cookie_value == null || auth_cookie_value.length() < 1) {
Toast.makeText(
v.getContext(), R.string.please_restart_Orbot_to_enable_the_changes, Toast.LENGTH_LONG
).show();
} else {
2016-12-05 21:14:15 +01:00
HSCookieDialog dialog = new HSCookieDialog();
dialog.setArguments(arguments);
dialog.show(getFragmentManager(), "HSCookieDialog");
}
} else {
Toast.makeText(
v.getContext(), R.string.auth_cookie_was_not_configured, Toast.LENGTH_LONG
).show();
}
actionDialog.dismiss();
}
});
2016-11-20 03:20:14 +01:00
Button delete = (Button) dialog_view.findViewById(R.id.btn_hs_delete);
delete.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
2016-11-28 23:25:19 +01:00
HSDeleteDialog dialog = new HSDeleteDialog();
dialog.setArguments(arguments);
dialog.show(getFragmentManager(), "HSDeleteDialog");
2016-11-20 03:20:14 +01:00
actionDialog.dismiss();
}
});
2016-11-20 04:39:34 +01:00
Button cancel = (Button) dialog_view.findViewById(R.id.btn_hs_cancel);
cancel.setOnClickListener(new View.OnClickListener() {
2016-11-20 03:20:14 +01:00
public void onClick(View v) {
actionDialog.dismiss();
}
});
return actionDialog;
}
}