diff --git a/app/src/main/java/de/jg_cody/Teraplex/MainActivity.java b/app/src/main/java/de/jg_cody/Teraplex/MainActivity.java index 45176c3..52aa67c 100644 --- a/app/src/main/java/de/jg_cody/Teraplex/MainActivity.java +++ b/app/src/main/java/de/jg_cody/Teraplex/MainActivity.java @@ -65,9 +65,9 @@ import java.util.Objects; import de.jg_cody.Teraplex.ui.credits.CreditsFragment; import de.jg_cody.Teraplex.ui.settings.SettingsFragment; -import de.jg_cody.Teraplex.ui.tabs.TabsFragment; import de.jg_cody.Teraplex.ui.tabs.ListAdapter; import de.jg_cody.Teraplex.ui.tabs.ListItem; +import de.jg_cody.Teraplex.ui.tabs.TabsFragment; public class MainActivity extends AppCompatActivity { @@ -216,8 +216,14 @@ public class MainActivity extends AppCompatActivity { // Specifying a listener allows you to take an action before dismissing the dialog. // The dialog is automatically dismissed when a dialog button is clicked. - .setPositiveButton(android.R.string.yes, null ) - .create(); + .setPositiveButton(getString(R.string.ok), new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialogInterface, int i) { + Vibrator vr = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE); + assert vr != null; + vr.vibrate(100); + } + }).create(); Objects.requireNonNull(mDialog.getWindow()).setBackgroundDrawableResource(R.drawable.button_round); mDialog.getWindow().getAttributes().windowAnimations = R.style.DialogAnimation; //style id mDialog.show(); @@ -232,8 +238,14 @@ public class MainActivity extends AppCompatActivity { // Specifying a listener allows you to take an action before dismissing the dialog. // The dialog is automatically dismissed when a dialog button is clicked. - .setPositiveButton(android.R.string.yes, null ) - .create(); + .setPositiveButton(getString(R.string.ok), new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialogInterface, int i) { + Vibrator vr = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE); + assert vr != null; + vr.vibrate(100); + } + }).create(); Objects.requireNonNull(mDialog.getWindow()).setBackgroundDrawableResource(R.drawable.button_round); mDialog.getWindow().getAttributes().windowAnimations = R.style.DialogAnimation; //style id mDialog.show(); @@ -461,8 +473,36 @@ public class MainActivity extends AppCompatActivity { public void menurighttopdocumentation(MenuItem i) { Vibrator vr = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE); vr.vibrate(100); - Intent in = new Intent(Intent.ACTION_VIEW, Uri.parse("https://www.jg-cody.de/")); - startActivity(in); + AlertDialog mDialog = new AlertDialog.Builder(this) + .setTitle(getString(R.string.menu_documentation)) + .setMessage(getString(R.string.you_will_be_redirected)) + + // Specifying a listener allows you to take an action before dismissing the dialog. + // The dialog is automatically dismissed when a dialog button is clicked. + .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int which) { + Vibrator vr = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE); + vr.vibrate(100); + Intent in = new Intent(Intent.ACTION_VIEW, Uri.parse("https://www.jg-cody.de/")); + startActivity(in); + } + }) + + // A null listener allows the button to dismiss the dialog and take no further action. + .setNegativeButton(getString(R.string.cancel), new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialogInterface, int i) { + Vibrator vr = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE); + assert vr != null; + vr.vibrate(100); + + } + }).create(); + Objects.requireNonNull(mDialog.getWindow()).setBackgroundDrawableResource(R.drawable.button_round); + mDialog.getWindow().getAttributes().windowAnimations = R.style.DialogAnimation; //style id + mDialog.show(); + + } public void menurighttopcloseapp(MenuItem i) { diff --git a/app/src/main/java/de/jg_cody/Teraplex/ui/home/HomeFragment.java b/app/src/main/java/de/jg_cody/Teraplex/ui/home/HomeFragment.java index d6e6c96..bd6c8a7 100644 --- a/app/src/main/java/de/jg_cody/Teraplex/ui/home/HomeFragment.java +++ b/app/src/main/java/de/jg_cody/Teraplex/ui/home/HomeFragment.java @@ -124,8 +124,14 @@ public class HomeFragment extends Fragment { // Specifying a listener allows you to take an action before dismissing the dialog. // The dialog is automatically dismissed when a dialog button is clicked. - .setPositiveButton(android.R.string.yes, null) - .create(); + .setPositiveButton(getString(R.string.ok), new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialogInterface, int i) { + Vibrator vr = (Vibrator) requireContext().getSystemService(Context.VIBRATOR_SERVICE); + assert vr != null; + vr.vibrate(100); + } + }).create(); Objects.requireNonNull(mDialog.getWindow()).setBackgroundDrawableResource(R.drawable.button_round); mDialog.getWindow().getAttributes().windowAnimations = R.style.DialogAnimation; //style id mDialog.show(); @@ -154,7 +160,7 @@ public class HomeFragment extends Fragment { channel.connect(3 * 1000); session.disconnect(); System.out.println("DISCONNECT"); - getActivity().runOnUiThread(new Runnable() { + requireActivity().runOnUiThread(new Runnable() { @Override public void run() { Toast.makeText(getContext(), "CONNECTED", Toast.LENGTH_SHORT).show(); @@ -179,11 +185,27 @@ public class HomeFragment extends Fragment { } }); } catch (Exception e) { - getActivity().runOnUiThread(new Runnable() { + requireActivity().runOnUiThread(new Runnable() { @Override public void run() { e.printStackTrace(); - Toast.makeText(getContext(), "INVALID INPUT", Toast.LENGTH_SHORT).show(); + AlertDialog mDialog = new AlertDialog.Builder(getContext()) + .setTitle(getString(R.string.unable_to_connect)) + .setMessage(getString(R.string.try_again)) + + // Specifying a listener allows you to take an action before dismissing the dialog. + // The dialog is automatically dismissed when a dialog button is clicked. + .setPositiveButton(getString(R.string.ok), new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialogInterface, int i) { + Vibrator vr = (Vibrator) requireContext().getSystemService(Context.VIBRATOR_SERVICE); + assert vr != null; + vr.vibrate(100); + } + }).create(); + Objects.requireNonNull(mDialog.getWindow()).setBackgroundDrawableResource(R.drawable.button_round); + mDialog.getWindow().getAttributes().windowAnimations = R.style.DialogAnimation; //style id + mDialog.show(); } }); @@ -233,7 +255,7 @@ public class HomeFragment extends Fragment { // Specifying a listener allows you to take an action before dismissing the dialog. // The dialog is automatically dismissed when a dialog button is clicked. - .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() { + .setPositiveButton(getString(R.string.yes), new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { Vibrator vr = (Vibrator) v.getContext().getSystemService(Context.VIBRATOR_SERVICE); assert vr != null; @@ -251,8 +273,14 @@ public class HomeFragment extends Fragment { }) // A null listener allows the button to dismiss the dialog and take no further action. - .setNegativeButton(android.R.string.no, null) - .create(); + .setNegativeButton(getString(R.string.no), new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialogInterface, int i) { + Vibrator vr = (Vibrator) requireContext().getSystemService(Context.VIBRATOR_SERVICE); + assert vr != null; + vr.vibrate(100); + } + }).create(); Objects.requireNonNull(mDialog.getWindow()).setBackgroundDrawableResource(R.drawable.button_round); mDialog.getWindow().getAttributes().windowAnimations = R.style.DialogAnimation; //style id mDialog.show(); @@ -293,8 +321,14 @@ public class HomeFragment extends Fragment { }) // A null listener allows the button to dismiss the dialog and take no further action. - .setNegativeButton(android.R.string.no, null) - .create(); + .setNegativeButton(getString(R.string.no), new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialogInterface, int i) { + Vibrator vr = (Vibrator) requireContext().getSystemService(Context.VIBRATOR_SERVICE); + assert vr != null; + vr.vibrate(100); + } + }).create(); Objects.requireNonNull(mDialog.getWindow()).setBackgroundDrawableResource(R.drawable.button_round); mDialog.getWindow().getAttributes().windowAnimations = R.style.DialogAnimation; //style id mDialog.show(); @@ -307,7 +341,7 @@ public class HomeFragment extends Fragment { togglepassword.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View view, MotionEvent motionEvent) { - if (isPasswordVisible == true) { + if (isPasswordVisible) { passwordInput.setTransformationMethod(HideReturnsTransformationMethod.getInstance()); isPasswordVisible = false; } else { diff --git a/app/src/main/java/de/jg_cody/Teraplex/ui/settings/SettingsFragment.java b/app/src/main/java/de/jg_cody/Teraplex/ui/settings/SettingsFragment.java index 2d1d5af..2728d05 100644 --- a/app/src/main/java/de/jg_cody/Teraplex/ui/settings/SettingsFragment.java +++ b/app/src/main/java/de/jg_cody/Teraplex/ui/settings/SettingsFragment.java @@ -91,8 +91,14 @@ public class SettingsFragment extends Fragment { }) // A null listener allows the button to dismiss the dialog and take no further action. - .setNegativeButton(android.R.string.no, null) - .create(); + .setNegativeButton(getString(R.string.cancel), new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialogInterface, int i) { + Vibrator vr = (Vibrator) requireContext().getSystemService(Context.VIBRATOR_SERVICE); + assert vr != null; + vr.vibrate(100); + } + }).create(); Objects.requireNonNull(mDialog.getWindow()).setBackgroundDrawableResource(R.drawable.button_round); mDialog.getWindow().getAttributes().windowAnimations = R.style.DialogAnimation; //style id mDialog.show(); diff --git a/app/src/main/java/de/jg_cody/Teraplex/ui/terminal/TerminalFragment.java b/app/src/main/java/de/jg_cody/Teraplex/ui/terminal/TerminalFragment.java index dcb82f5..d75ee0e 100644 --- a/app/src/main/java/de/jg_cody/Teraplex/ui/terminal/TerminalFragment.java +++ b/app/src/main/java/de/jg_cody/Teraplex/ui/terminal/TerminalFragment.java @@ -1,8 +1,11 @@ package de.jg_cody.Teraplex.ui.terminal; +import android.app.AlertDialog; import android.content.Context; +import android.content.DialogInterface; import android.content.SharedPreferences; import android.os.Bundle; +import android.os.Vibrator; import android.view.KeyEvent; import android.view.LayoutInflater; import android.view.View; @@ -18,6 +21,8 @@ import androidx.annotation.NonNull; import androidx.fragment.app.Fragment; import androidx.lifecycle.ViewModelProvider; +import java.util.Objects; + import de.jg_cody.Teraplex.R; public class TerminalFragment extends Fragment { @@ -42,8 +47,24 @@ public class TerminalFragment extends Fragment { user = prefs.getString("user", null); password = prefs.getString("password", null); ip = prefs.getString("ip", null); - if (user == null || ip == null) { - Toast.makeText(getContext(), getString(R.string.login_saved), Toast.LENGTH_SHORT).show(); + if (user == null || ip == null || password == null) { + AlertDialog mDialog = new AlertDialog.Builder(getContext()) + .setTitle(getString(R.string.unable_to_connect)) + .setMessage(getString(R.string.please_login)) + + // Specifying a listener allows you to take an action before dismissing the dialog. + // The dialog is automatically dismissed when a dialog button is clicked. + .setPositiveButton(getString(R.string.ok), new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialogInterface, int i) { + Vibrator vr = (Vibrator) requireContext().getSystemService(Context.VIBRATOR_SERVICE); + assert vr != null; + vr.vibrate(100); + } + }).create(); + Objects.requireNonNull(mDialog.getWindow()).setBackgroundDrawableResource(R.drawable.button_round); + mDialog.getWindow().getAttributes().windowAnimations = R.style.DialogAnimation; //style id + mDialog.show(); } else { @@ -74,7 +95,6 @@ public class TerminalFragment extends Fragment { { if (terminal != null) { terminal.sendTerminalCommand(terminal_edit_text.getText().toString()); - Toast.makeText(getContext(), getString(R.string.login_saved), Toast.LENGTH_SHORT).show(); } handled=true; diff --git a/app/src/main/res/layout/fragment_terminal.xml b/app/src/main/res/layout/fragment_terminal.xml index 7c7ad2f..6701ed2 100644 --- a/app/src/main/res/layout/fragment_terminal.xml +++ b/app/src/main/res/layout/fragment_terminal.xml @@ -56,7 +56,7 @@ android:layout_marginStart="10dp" android:layout_marginBottom="10dp" android:ems="10" - android:hint="type commands" + android:hint="TYPE YOUR COMMAND" android:imeOptions="actionDone" android:inputType="text" android:textColor="#FFFFFF" @@ -71,6 +71,7 @@ android:layout_marginEnd="10dp" android:layout_marginBottom="10dp" android:background="@drawable/button_right" + app:backgroundTint="@null" android:text="SEND" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" /> diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index d798896..adbfdae 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -24,17 +24,17 @@ INPUTFIELDS CANT BE EMPTY! LOGIN-DATA SAVED! - //konsole + //terminal CONSOLE SEND COMMAND SERVERCOMMANDS REBOOT SHUTDOWN + UNABLE TO CONNECT + PLEASE TRY AGAIN - //zeitgesteuerte kommandos - TIMED COMMANDS + //main COMMAND - SET TIMED COMMAND //settings COLORS @@ -70,6 +70,8 @@ ADD TAB REMOVE TABS + //menus + YOU WILL BE REDIRECTED TO THE APP-DOCUMENTATION ON OUR WEBSITE SETTINGS QUESTION ABOUT @@ -77,6 +79,8 @@ LANGUAGE CLOSE + YES + NO OK CANCEL INVALID INPUT