From 8ecc32829b6132a79b9599f3bcbb2e6c2495b913 Mon Sep 17 00:00:00 2001 From: JG-Cody Date: Sat, 10 Jul 2021 15:14:19 +0200 Subject: [PATCH] tabname changes now tabname can not be empty tabname duplicates are not allowed changed inputfield texts to hints drawer now closes when custom tab is clicked tabdialog headers are renamed tabdialog inputfields is now own xml added hint do console-command-textinput --- .../de/jg_cody/Teraplex/MainActivity.java | 131 ++++++++++++++---- app/src/main/res/anim/dialog_in.xml | 5 + app/src/main/res/anim/dialog_out.xml | 29 ++++ .../res/layout/addbuttondialog_single.xml | 6 +- .../res/layout/addbuttonsdialog_double.xml | 10 +- app/src/main/res/layout/addheadlinedialog.xml | 2 +- app/src/main/res/layout/addtabdialog.xml | 16 +++ app/src/main/res/layout/fragment_konsole.xml | 1 + app/src/main/res/values/strings.xml | 2 +- app/src/main/res/values/themes.xml | 7 +- 10 files changed, 171 insertions(+), 38 deletions(-) create mode 100644 app/src/main/res/anim/dialog_in.xml create mode 100644 app/src/main/res/anim/dialog_out.xml create mode 100644 app/src/main/res/layout/addtabdialog.xml 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 65c1dc4..ffb53cf 100644 --- a/app/src/main/java/de/jg_cody/Teraplex/MainActivity.java +++ b/app/src/main/java/de/jg_cody/Teraplex/MainActivity.java @@ -16,6 +16,7 @@ import android.graphics.Color; import android.graphics.Paint; 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; @@ -23,8 +24,10 @@ import android.provider.MediaStore; import android.text.SpannableString; import android.text.style.ForegroundColorSpan; import android.util.TypedValue; +import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuItem; +import android.view.View; import android.view.WindowManager; import android.widget.CompoundButton; import android.widget.EditText; @@ -36,6 +39,7 @@ import android.widget.Toast; import androidx.annotation.RequiresApi; import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.widget.Toolbar; +import androidx.core.view.GravityCompat; import androidx.drawerlayout.widget.DrawerLayout; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentTransaction; @@ -76,10 +80,10 @@ public class MainActivity extends AppCompatActivity { ListAdapter listAdapter; ListView listView; - + EditText editText_name; ArrayList items; - Map < String, MenuItem > tabitems = new HashMap<>(); + Map tabitems = new HashMap<>(); @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) @Override @@ -149,7 +153,7 @@ public class MainActivity extends AppCompatActivity { Toast.makeText(MainActivity.this, "Checked", Toast.LENGTH_LONG).show(); editmode = isChecked; Fragment currentFragment = getSupportFragmentManager().findFragmentById(R.id.nav_host_fragment); - NavHostFragment nhf = (NavHostFragment)currentFragment; + NavHostFragment nhf = (NavHostFragment) currentFragment; Fragment childfragment = nhf.getChildFragmentManager().getFragments().get(0); Toast.makeText(MainActivity.this, childfragment.toString(), Toast.LENGTH_LONG).show(); if (childfragment instanceof FlurFragment) { @@ -168,27 +172,71 @@ public class MainActivity extends AppCompatActivity { @Override public boolean onMenuItemClick(MenuItem item) { AlertDialog.Builder mBuilder = new AlertDialog.Builder(MainActivity.this); - mBuilder.setTitle("CHOOSE ELEMENT"); - EditText input = new EditText(MainActivity.this); - mBuilder.setView(input); + + + LayoutInflater inflater = getLayoutInflater(); + View view = inflater.inflate(R.layout.addtabdialog, null); + editText_name = view.findViewById(R.id.dialogtab_editText_name); + + + mBuilder.setView(view) + .setTitle(R.string.menu_add); mBuilder.setPositiveButton(R.string.menu_add, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { - String tabname = input.getText().toString(); - MenuItem item = navigationView.getMenu().add(R.id.dynamicgroup, Menu.NONE, 3,tabname); + String tabname = editText_name.getText().toString().trim(); + + SharedPreferences p = getSharedPreferences("appsettings", MODE_PRIVATE); + Set tabs = new HashSet<>(p.getStringSet("tabs", new HashSet<>())); + 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("TABNAME") + .setMessage("DER TABNAME EXISTIERT BEREITS!") + + // 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(); + Objects.requireNonNull(mDialog.getWindow()).setBackgroundDrawableResource(R.drawable.button_round); + mDialog.getWindow().getAttributes().windowAnimations = R.style.DialogAnimation; //style id + mDialog.show(); + 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("TABNAME") + .setMessage("UNGÜLTIGER TABNAME") + + // 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(); + Objects.requireNonNull(mDialog.getWindow()).setBackgroundDrawableResource(R.drawable.button_round); + mDialog.getWindow().getAttributes().windowAnimations = R.style.DialogAnimation; //style id + mDialog.show(); + return; + } + MenuItem item = navigationView.getMenu().add(R.id.dynamicgroup, Menu.NONE, 3, tabname); item.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { + DrawerLayout mDrawerLayout; + mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); + mDrawerLayout.closeDrawer(GravityCompat.START); + Objects.requireNonNull(getSupportActionBar()).setTitle(tabname); Fragment currentFragment = getSupportFragmentManager().findFragmentById(R.id.nav_host_fragment); - NavHostFragment nhf = (NavHostFragment)currentFragment; - nhf .getChildFragmentManager().beginTransaction().replace(R.id.nav_host_fragment, new FlurFragment(tabname)).commit(); + NavHostFragment nhf = (NavHostFragment) currentFragment; + nhf.getChildFragmentManager().beginTransaction().replace(R.id.nav_host_fragment, new FlurFragment(tabname)).commit(); return true; } }); tabitems.put(tabname, item); - SharedPreferences p = getSharedPreferences("appsettings", MODE_PRIVATE); - Set tabs = new HashSet<>(p.getStringSet("tabs", new HashSet<>())); + tabs.add(tabname); SharedPreferences.Editor editor = p.edit(); editor.putStringSet("tabs", tabs); @@ -196,8 +244,15 @@ public class MainActivity extends AppCompatActivity { } }); + mBuilder.setNegativeButton("CANCEL", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialogInterface, int i) { + + } + }); AlertDialog mDialog = mBuilder.create(); Objects.requireNonNull(mDialog.getWindow()).setBackgroundDrawableResource(R.drawable.button_round); + mDialog.getWindow().getAttributes().windowAnimations = R.style.DialogAnimation; //style id mDialog.show(); return true; } @@ -207,22 +262,42 @@ public class MainActivity extends AppCompatActivity { public boolean onMenuItemClick(MenuItem item) { SharedPreferences p = getSharedPreferences("appsettings", MODE_PRIVATE); Set tabs = new HashSet<>(p.getStringSet("tabs", new HashSet<>())); + Set selectedTabs = new HashSet<>(); String[] tabsarray = tabs.toArray(new String[0]); AlertDialog.Builder mBuilder = new AlertDialog.Builder(MainActivity.this); - mBuilder.setTitle("CHOOSE ELEMENT"); - mBuilder.setSingleChoiceItems(tabsarray, -1, new DialogInterface.OnClickListener() { + mBuilder.setTitle(R.string.menu_remove); + + mBuilder.setMultiChoiceItems(tabsarray, null, new DialogInterface.OnMultiChoiceClickListener() { @RequiresApi(api = Build.VERSION_CODES.KITKAT) + @Override + public void onClick(DialogInterface dialogInterface, int i, boolean isChecked) { + String selectedItem = tabsarray[i]; + if (isChecked) { + selectedTabs.add(selectedItem); + } else { + selectedTabs.remove(selectedItem); + } + } + }); + mBuilder.setPositiveButton("REMOVE", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { - String tab = tabsarray[i]; - tabs.remove(tab); + tabs.removeAll(selectedTabs); SharedPreferences.Editor editor = p.edit(); editor.putStringSet("tabs", tabs); - editor.remove("listItems." + tab); - editor.apply(); - navigationView.getMenu().removeItem(tabitems.get(tab).getItemId()); - tabitems.remove(tab); - dialogInterface.dismiss(); + for (String tab : selectedTabs) { + editor.remove("listItems." + tab); + editor.apply(); + navigationView.getMenu().removeItem(tabitems.get(tab).getItemId()); + tabitems.remove(tab); + dialogInterface.dismiss(); + } + } + }); + mBuilder.setNegativeButton("CANCEL", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialogInterface, int i) { + } }); AlertDialog mDialog = mBuilder.create(); @@ -232,14 +307,18 @@ public class MainActivity extends AppCompatActivity { } }); Set tabs = new HashSet<>(p.getStringSet("tabs", new HashSet<>())); - for (String tab: tabs){ - MenuItem item = navigationView.getMenu().add(R.id.dynamicgroup, Menu.NONE, 3,tab); + for (String tab : tabs) { + MenuItem item = navigationView.getMenu().add(R.id.dynamicgroup, Menu.NONE, 3, tab); item.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { + DrawerLayout mDrawerLayout; + mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); + mDrawerLayout.closeDrawer(GravityCompat.START); + Objects.requireNonNull(getSupportActionBar()).setTitle(tab); Fragment currentFragment = getSupportFragmentManager().findFragmentById(R.id.nav_host_fragment); - NavHostFragment nhf = (NavHostFragment)currentFragment; - nhf .getChildFragmentManager().beginTransaction().replace(R.id.nav_host_fragment, new FlurFragment(tab)).commit(); + NavHostFragment nhf = (NavHostFragment) currentFragment; + nhf.getChildFragmentManager().beginTransaction().replace(R.id.nav_host_fragment, new FlurFragment(tab)).commit(); return true; } }); @@ -247,8 +326,6 @@ public class MainActivity extends AppCompatActivity { } - - } diff --git a/app/src/main/res/anim/dialog_in.xml b/app/src/main/res/anim/dialog_in.xml new file mode 100644 index 0000000..79b9b56 --- /dev/null +++ b/app/src/main/res/anim/dialog_in.xml @@ -0,0 +1,5 @@ + + \ No newline at end of file diff --git a/app/src/main/res/anim/dialog_out.xml b/app/src/main/res/anim/dialog_out.xml new file mode 100644 index 0000000..ea91fbe --- /dev/null +++ b/app/src/main/res/anim/dialog_out.xml @@ -0,0 +1,29 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/addbuttondialog_single.xml b/app/src/main/res/layout/addbuttondialog_single.xml index 5308cd6..effbbeb 100644 --- a/app/src/main/res/layout/addbuttondialog_single.xml +++ b/app/src/main/res/layout/addbuttondialog_single.xml @@ -11,7 +11,7 @@ android:layout_height="wrap_content" android:ems="10" android:inputType="textPersonName" - android:text="Name" /> + android:hint="NAME" /> + android:hint="BUTTON" /> + android:hint="COMMAND" /> diff --git a/app/src/main/res/layout/addbuttonsdialog_double.xml b/app/src/main/res/layout/addbuttonsdialog_double.xml index 981e4fe..1f8cf1f 100644 --- a/app/src/main/res/layout/addbuttonsdialog_double.xml +++ b/app/src/main/res/layout/addbuttonsdialog_double.xml @@ -12,7 +12,7 @@ android:layout_height="wrap_content" android:ems="10" android:inputType="textPersonName" - android:text="Name" /> + android:hint="NAME" /> + android:hint="COMMAND1" /> + android:hint="BUTTON1" /> + android:hint="COMMAND2" /> + android:hint="BUTTON2" /> \ No newline at end of file diff --git a/app/src/main/res/layout/addheadlinedialog.xml b/app/src/main/res/layout/addheadlinedialog.xml index 35c8e8c..bf3eb56 100644 --- a/app/src/main/res/layout/addheadlinedialog.xml +++ b/app/src/main/res/layout/addheadlinedialog.xml @@ -11,6 +11,6 @@ android:layout_height="wrap_content" android:ems="10" android:inputType="textPersonName" - android:text="Name" /> + android:hint="NAME" /> diff --git a/app/src/main/res/layout/addtabdialog.xml b/app/src/main/res/layout/addtabdialog.xml new file mode 100644 index 0000000..77c27cf --- /dev/null +++ b/app/src/main/res/layout/addtabdialog.xml @@ -0,0 +1,16 @@ + + + + + + diff --git a/app/src/main/res/layout/fragment_konsole.xml b/app/src/main/res/layout/fragment_konsole.xml index 55bac20..b2fbdb8 100644 --- a/app/src/main/res/layout/fragment_konsole.xml +++ b/app/src/main/res/layout/fragment_konsole.xml @@ -74,6 +74,7 @@ android:layout_height="wrap_content" android:backgroundTint="@color/mtrl_btn_text_color_selector" android:ems="10" + android:hint="COMMAND" android:inputType="text" android:textColor="@color/mtrl_btn_text_color_selector" android:textColorHint="@color/mtrl_btn_text_color_selector" diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 100a16b..3eced1e 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -72,7 +72,7 @@ HALL KITCHEN ADD TAB - REMOVE TAB + REMOVE TABS SETTINGS QUESTION diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml index 2d3c191..c7d0103 100644 --- a/app/src/main/res/values/themes.xml +++ b/app/src/main/res/values/themes.xml @@ -20,9 +20,14 @@ @style/ActionPopupMenuStyle - +