diff --git a/app/src/main/java/org/torproject/android/ui/hs/HiddenServicesActivity.java b/app/src/main/java/org/torproject/android/ui/hs/HiddenServicesActivity.java index 85665fb6..ebf1ec31 100644 --- a/app/src/main/java/org/torproject/android/ui/hs/HiddenServicesActivity.java +++ b/app/src/main/java/org/torproject/android/ui/hs/HiddenServicesActivity.java @@ -5,7 +5,6 @@ import android.database.ContentObserver; import android.os.Bundle; import android.os.Handler; import android.support.design.widget.FloatingActionButton; -import android.support.design.widget.Snackbar; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; @@ -14,6 +13,7 @@ import android.view.View; import org.torproject.android.R; import org.torproject.android.ui.hs.adapters.HSAdapter; +import org.torproject.android.ui.hs.dialogs.HSDataDialog; import org.torproject.android.ui.hs.providers.HSContentProvider; public class HiddenServicesActivity extends AppCompatActivity { @@ -37,8 +37,8 @@ public class HiddenServicesActivity extends AppCompatActivity { fab.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { - Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) - .setAction("Action", null).show(); + HSDataDialog dialog = new HSDataDialog(); + dialog.show(getSupportFragmentManager(), "HSDataDialog"); } }); diff --git a/app/src/main/java/org/torproject/android/ui/hs/dialogs/HSDataDialog.java b/app/src/main/java/org/torproject/android/ui/hs/dialogs/HSDataDialog.java new file mode 100644 index 00000000..e62d2cb9 --- /dev/null +++ b/app/src/main/java/org/torproject/android/ui/hs/dialogs/HSDataDialog.java @@ -0,0 +1,84 @@ +package org.torproject.android.ui.hs.dialogs; + + +import android.app.Dialog; +import android.content.ContentResolver; +import android.content.ContentValues; +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; +import android.widget.EditText; +import android.widget.Toast; + +import org.torproject.android.R; +import org.torproject.android.ui.hs.providers.HSContentProvider; + +public class HSDataDialog extends DialogFragment { + + @NonNull + @Override + public Dialog onCreateDialog(Bundle savedInstanceState) { + // Get the layout + final View dialog_view = getActivity().getLayoutInflater().inflate(R.layout.dialog_hs_data, null); + + // Use the Builder class for convenient dialog construction + final AlertDialog serverDataDialog = new AlertDialog.Builder(getActivity()) + .setView(dialog_view) + .setTitle(R.string.hs_dialog_title) + .create(); + + // Buttons action + Button save = (Button) dialog_view.findViewById(R.id.HSDialogSave); + save.setOnClickListener(new View.OnClickListener() { + public void onClick(View v) { + String serverName = ((EditText) dialog_view.findViewById(R.id.hsName)).getText().toString(); + Integer serverPort = Integer.parseInt( + ((EditText) dialog_view.findViewById(R.id.serverPort)).getText().toString() + ); + + if (checkInput(serverPort)) { + saveData(serverName, serverPort); + serverDataDialog.dismiss(); + } + } + }); + + Button cancel = (Button) dialog_view.findViewById(R.id.HSDialogCancel); + cancel.setOnClickListener(new View.OnClickListener() { + public void onClick(View v) { + serverDataDialog.cancel(); + } + }); + + return serverDataDialog; + } + + private boolean checkInput(Integer port) { + boolean is_ok = true; + Integer error_msg = 0; + + if (port <= 1 || port > 65535) { + error_msg = R.string.invalid_port; + is_ok = false; + } + + if (!is_ok) { + Toast.makeText(getContext(), error_msg, Toast.LENGTH_SHORT).show(); + } + + return is_ok; + } + + private void saveData(String name, Integer port) { + ContentValues fields = new ContentValues(); + fields.put("name", name); + fields.put("port", port); + + ContentResolver cr = getContext().getContentResolver(); + + cr.insert(HSContentProvider.CONTENT_URI, fields); + } +} diff --git a/app/src/main/res/layout/dialog_hs_data.xml b/app/src/main/res/layout/dialog_hs_data.xml new file mode 100644 index 00000000..2f4daa6b --- /dev/null +++ b/app/src/main/res/layout/dialog_hs_data.xml @@ -0,0 +1,63 @@ + + + + + + + + + + + + + +