diff --git a/app/src/main/java/de/jg_cody/Teraplex/AddButtonDialogSingle.java b/app/src/main/java/de/jg_cody/Teraplex/AddButtonDialogSingle.java index 18ce9a3..6a6549b 100644 --- a/app/src/main/java/de/jg_cody/Teraplex/AddButtonDialogSingle.java +++ b/app/src/main/java/de/jg_cody/Teraplex/AddButtonDialogSingle.java @@ -1,12 +1,10 @@ package de.jg_cody.Teraplex; +import android.app.AlertDialog; import android.app.Dialog; import android.content.Context; import android.content.DialogInterface; -import android.media.MediaPlayer; import android.os.Bundle; -import android.app.AlertDialog; - import android.view.LayoutInflater; import android.view.View; import android.widget.EditText; @@ -56,8 +54,7 @@ public class AddButtonDialogSingle extends DialogFragment { String name = editText_name.getText().toString(); String button = editText_button_name.getText().toString(); if(command.isEmpty()||button.isEmpty()||name.isEmpty()){ - MediaPlayer mp = MediaPlayer.create(getContext(), R.raw.state_change_confirm_up); - mp.start(); + AlertDialog mDialog = new AlertDialog.Builder(getContext()) .setTitle(getString(R.string.invalid)) .setMessage(getString(R.string.inputfields_cant_be_empty)) diff --git a/app/src/main/java/de/jg_cody/Teraplex/AddButtonsDialogDouble.java b/app/src/main/java/de/jg_cody/Teraplex/AddButtonsDialogDouble.java index 19a6536..e0198cf 100644 --- a/app/src/main/java/de/jg_cody/Teraplex/AddButtonsDialogDouble.java +++ b/app/src/main/java/de/jg_cody/Teraplex/AddButtonsDialogDouble.java @@ -4,7 +4,6 @@ import android.app.AlertDialog; import android.app.Dialog; import android.content.Context; import android.content.DialogInterface; -import android.media.MediaPlayer; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; @@ -45,8 +44,7 @@ public class AddButtonsDialogDouble extends DialogFragment { String button1 = editText_button1.getText().toString(); String button2 = editText_button2.getText().toString(); if(command1.isEmpty()||command2.isEmpty()||name.isEmpty()||button1.isEmpty()||button2.isEmpty()){ - MediaPlayer mp = MediaPlayer.create(getContext(), R.raw.state_change_confirm_up); - mp.start(); + AlertDialog mDialog = new AlertDialog.Builder(getContext()) .setTitle(getString(R.string.invalid)) .setMessage(getString(R.string.inputfields_cant_be_empty)) diff --git a/app/src/main/java/de/jg_cody/Teraplex/AddHeadlineDialog.java b/app/src/main/java/de/jg_cody/Teraplex/AddHeadlineDialog.java index 16bed1e..87dff38 100644 --- a/app/src/main/java/de/jg_cody/Teraplex/AddHeadlineDialog.java +++ b/app/src/main/java/de/jg_cody/Teraplex/AddHeadlineDialog.java @@ -3,7 +3,6 @@ package de.jg_cody.Teraplex; import android.app.AlertDialog; import android.app.Dialog; import android.content.Context; -import android.media.MediaPlayer; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; @@ -45,8 +44,7 @@ public class AddHeadlineDialog extends DialogFragment { .setPositiveButton(R.string.add, (dialogInterface, i) -> { String headline = editText_name.getText().toString(); if(headline.isEmpty()){ - MediaPlayer mp = MediaPlayer.create(getContext(), R.raw.state_change_confirm_up); - mp.start(); + AlertDialog mDialog = new AlertDialog.Builder(getContext()) .setTitle(getString(R.string.invalid)) .setMessage(getString(R.string.inputfields_cant_be_empty)) 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 75f94ea..049b764 100644 --- a/app/src/main/java/de/jg_cody/Teraplex/MainActivity.java +++ b/app/src/main/java/de/jg_cody/Teraplex/MainActivity.java @@ -15,7 +15,6 @@ import android.graphics.Canvas; import android.graphics.Color; import android.graphics.RectF; import android.graphics.drawable.ColorDrawable; -import android.media.MediaPlayer; import android.net.Uri; import android.os.Build; import android.os.Bundle; @@ -56,7 +55,6 @@ import org.json.JSONObject; import java.io.BufferedReader; import java.io.ByteArrayOutputStream; import java.io.FileInputStream; -import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; @@ -214,8 +212,7 @@ public class MainActivity extends AppCompatActivity { } } if (tabs.contains(tabname)) { - MediaPlayer mp = MediaPlayer.create(MainActivity.this, R.raw.state_change_confirm_up); - mp.start(); + AlertDialog mDialog = new AlertDialog.Builder(MainActivity.this) .setTitle(getString(R.string.tabname)) .setMessage(getString(R.string.tabname_already_exist)) @@ -238,8 +235,7 @@ public class MainActivity extends AppCompatActivity { return; } if (tabname.isEmpty()) { - MediaPlayer mp = MediaPlayer.create(MainActivity.this, R.raw.state_change_confirm_up); - mp.start(); + AlertDialog mDialog = new AlertDialog.Builder(MainActivity.this) .setTitle(getString(R.string.tabname)) .setMessage(getString(R.string.invalid)) 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 0f3fbc8..e69cada 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 @@ -8,7 +8,6 @@ import android.content.DialogInterface; import android.content.SharedPreferences; import android.graphics.BitmapFactory; import android.graphics.drawable.BitmapDrawable; -import android.media.MediaPlayer; import android.os.Bundle; import android.os.Vibrator; import android.text.method.HideReturnsTransformationMethod; @@ -51,6 +50,7 @@ public class HomeFragment extends Fragment { Button loginButton; Button logoutButton; ImageView togglepassword; + ImageView backgroundoverlay_bottom; @@ -86,12 +86,14 @@ public class HomeFragment extends Fragment { reboot_Button = (Button) root.findViewById(R.id.reboot); shutdown_Button = (Button) root.findViewById(R.id.shutdown); togglepassword = (ImageView) root.findViewById(R.id.togglepassword); + backgroundoverlay_bottom = (ImageView) root.findViewById(R.id.backgroundoverlay_bottom); SharedPreferences t = requireContext().getSharedPreferences("appsettings", Context.MODE_PRIVATE); if (user == null || ip == null) { loginButton.setVisibility(View.VISIBLE); togglepassword.setVisibility(View.VISIBLE); reboot_Button.setVisibility(View.GONE); shutdown_Button.setVisibility(View.GONE); + backgroundoverlay_bottom.setVisibility(View.INVISIBLE); } else { loginButton.setVisibility(View.INVISIBLE); togglepassword.setVisibility(View.INVISIBLE); @@ -100,6 +102,7 @@ public class HomeFragment extends Fragment { passwordInput.setVisibility(View.GONE); reboot_Button.setVisibility(View.VISIBLE); shutdown_Button.setVisibility(View.VISIBLE); + backgroundoverlay_bottom.setVisibility(View.VISIBLE); } loginButton.setOnClickListener(new View.OnClickListener() { @Override @@ -110,8 +113,7 @@ public class HomeFragment extends Fragment { vr.vibrate(100); } if (userInput.getText().toString().trim().length() == 0 || ipInput.getText().toString().trim().length() == 0 || passwordInput.getText().toString().trim().length() == 0) { - MediaPlayer mp = MediaPlayer.create(getContext(), R.raw.state_change_confirm_up); - mp.start(); + AlertDialog mDialog = new AlertDialog.Builder(getContext()) .setTitle(getString(R.string.invalid)) .setMessage(getString(R.string.inputfields_cant_be_empty)) @@ -166,6 +168,7 @@ public class HomeFragment extends Fragment { login_data.setText(""); reboot_Button.setVisibility(View.GONE); shutdown_Button.setVisibility(View.GONE); + backgroundoverlay_bottom.setVisibility(View.INVISIBLE); } else { login_data.setText(getString(R.string.sie_sind_als_angemeldet).replace("{IP}", ip).replace("{USERNAME}", user)); @@ -177,6 +180,7 @@ public class HomeFragment extends Fragment { passwordInput.setVisibility(View.GONE); reboot_Button.setVisibility(View.VISIBLE); shutdown_Button.setVisibility(View.VISIBLE); + backgroundoverlay_bottom.setVisibility(View.VISIBLE); } } }); @@ -222,10 +226,12 @@ public class HomeFragment extends Fragment { passwordInput.setVisibility(View.VISIBLE); reboot_Button.setVisibility(View.GONE); shutdown_Button.setVisibility(View.GONE); + backgroundoverlay_bottom.setVisibility(View.INVISIBLE); } else { logoutButton.setVisibility(View.VISIBLE); reboot_Button.setVisibility(View.VISIBLE); shutdown_Button.setVisibility(View.VISIBLE); + backgroundoverlay_bottom.setVisibility(View.VISIBLE); } logoutButton.setOnClickListener(new View.OnClickListener() { @Override @@ -249,8 +255,7 @@ public class HomeFragment extends Fragment { assert vr != null; vr.vibrate(100); } - MediaPlayer mp = MediaPlayer.create(getContext(), R.raw.state_change_confirm_up); - mp.start(); + AlertDialog mDialog = new AlertDialog.Builder(getContext()) .setTitle(getString(R.string.restart_server)) .setMessage(getString(R.string.are_you_sure)) @@ -265,8 +270,7 @@ public class HomeFragment extends Fragment { vr.vibrate(100); } try { - MediaPlayer mp = MediaPlayer.create(getContext(), R.raw.state_change_confirm_down); - mp.start(); + Toast.makeText(getContext(), R.string.rebooting, Toast.LENGTH_SHORT).show(); SSH_connection.executeRemoteCommand(ip, user, password, "reboot"); } catch (Exception ignored) { @@ -303,8 +307,7 @@ public class HomeFragment extends Fragment { assert vr != null; vr.vibrate(100); } - MediaPlayer mp = MediaPlayer.create(getContext(), R.raw.state_change_confirm_up); - mp.start(); + AlertDialog mDialog = new AlertDialog.Builder(getContext()) .setTitle(getString(R.string.shutdown_server)) .setMessage(getString(R.string.are_you_sure)) @@ -319,8 +322,7 @@ public class HomeFragment extends Fragment { vr.vibrate(100); } try { - MediaPlayer mp = MediaPlayer.create(getContext(), R.raw.state_change_confirm_down); - mp.start(); + Toast.makeText(getContext(), R.string.shutting_down, Toast.LENGTH_SHORT).show(); SSH_connection.executeRemoteCommand(ip, user, password, "shutdown now"); } catch (Exception ignored) { 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 616be2a..204fffa 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 @@ -9,7 +9,6 @@ import android.content.SharedPreferences; import android.content.res.Configuration; import android.graphics.BitmapFactory; import android.graphics.drawable.BitmapDrawable; -import android.media.MediaPlayer; import android.os.Bundle; import android.os.Vibrator; import android.util.Base64; @@ -98,8 +97,7 @@ public class SettingsFragment extends Fragment { assert vr != null; vr.vibrate(100); } - MediaPlayer mp = MediaPlayer.create(getContext(), R.raw.alert_error); - mp.start(); + AlertDialog mDialog = new AlertDialog.Builder(getContext()) .setTitle(R.string.reset_app) .setMessage(R.string.are_you_sure_to_reset) diff --git a/app/src/main/java/de/jg_cody/Teraplex/ui/tabs/ListAdapter.java b/app/src/main/java/de/jg_cody/Teraplex/ui/tabs/ListAdapter.java index f5d79d2..e90e841 100644 --- a/app/src/main/java/de/jg_cody/Teraplex/ui/tabs/ListAdapter.java +++ b/app/src/main/java/de/jg_cody/Teraplex/ui/tabs/ListAdapter.java @@ -3,7 +3,6 @@ package de.jg_cody.Teraplex.ui.tabs; import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; -import android.media.MediaPlayer; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -181,8 +180,7 @@ public class ListAdapter extends RecyclerView.Adapter { String headline = editText_name.getText().toString(); if(headline.isEmpty()){ - MediaPlayer mp = MediaPlayer.create(v.getContext(), R.raw.state_change_confirm_up); - mp.start(); + AlertDialog mDialog = new AlertDialog.Builder(v.getContext()) .setTitle(R.string.invalid) .setMessage(R.string.inputfields_cant_be_empty) 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 1027a45..6602227 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 @@ -5,6 +5,8 @@ import android.content.Context; import android.content.DialogInterface; import android.content.SharedPreferences; import android.os.Bundle; +import android.os.Handler; +import android.os.Looper; import android.os.Vibrator; import android.view.LayoutInflater; import android.view.View; @@ -25,6 +27,8 @@ import de.jg_cody.Teraplex.R; public class TerminalFragment extends Fragment { + public static boolean atBottom = false; + public static String command; Button send_button; @@ -79,7 +83,16 @@ public class TerminalFragment extends Fragment { } if (terminal != null) { terminal.sendTerminalCommand(terminal_edit_text.getText().toString()); - } + if (atBottom) { + final Handler handler = new Handler(Looper.getMainLooper()); + handler.postDelayed(new Runnable() { + @Override + public void run() { + scrollView.fullScroll(View.FOCUS_DOWN); + } + + }, 500); + }} } @@ -119,13 +132,13 @@ public class TerminalFragment extends Fragment { @Override public void run() { - boolean atBottom = scrollView.getChildAt(0).getBottom() <= (scrollView.getHeight() + scrollView.getScrollY()); + atBottom = scrollView.getChildAt(0).getBottom() <= (scrollView.getHeight() + scrollView.getScrollY()); terminal_textView.setText(terminal.getTerminalOutput()); System.out.println(atBottom); terminal_textView.invalidate(); scrollView.invalidate(); - scrollView.fullScroll(View.FOCUS_DOWN); + //scrollView.fullScroll(View.FOCUS_DOWN); } }); diff --git a/app/src/main/res/layout/fragment_home.xml b/app/src/main/res/layout/fragment_home.xml index ec2ce15..cc28cc3 100644 --- a/app/src/main/res/layout/fragment_home.xml +++ b/app/src/main/res/layout/fragment_home.xml @@ -71,7 +71,7 @@ app:layout_constraintVertical_bias="0.0" /> @@ -56,6 +57,7 @@ android:layout_marginStart="10dp" android:layout_marginBottom="10dp" android:ems="10" + android:fontFamily="serif-monospace" android:hint="@string/command" android:imeOptions="actionDone" android:inputType="text" diff --git a/app/src/main/res/raw/alert_error.ogg b/app/src/main/res/raw/alert_error.ogg deleted file mode 100644 index 7573492..0000000 Binary files a/app/src/main/res/raw/alert_error.ogg and /dev/null differ diff --git a/app/src/main/res/raw/alert_ok.ogg b/app/src/main/res/raw/alert_ok.ogg deleted file mode 100644 index 670a0ba..0000000 Binary files a/app/src/main/res/raw/alert_ok.ogg and /dev/null differ diff --git a/app/src/main/res/raw/state_change_confirm_down.ogg b/app/src/main/res/raw/state_change_confirm_down.ogg deleted file mode 100644 index b2b5d58..0000000 Binary files a/app/src/main/res/raw/state_change_confirm_down.ogg and /dev/null differ diff --git a/app/src/main/res/raw/state_change_confirm_up.ogg b/app/src/main/res/raw/state_change_confirm_up.ogg deleted file mode 100644 index 36dd7e9..0000000 Binary files a/app/src/main/res/raw/state_change_confirm_up.ogg and /dev/null differ