From 71bb4d576cb5a0fa56461f533c576e2df40898f1 Mon Sep 17 00:00:00 2001 From: JG-Cody Date: Fri, 13 Aug 2021 20:07:25 +0200 Subject: [PATCH] prepared for editing existing buttons added dialogs + loading information into edittexts prepared for data export and import added dialogs for exportsettings --- .../Teraplex/AddButtonDialogSingle.java | 2 +- .../Teraplex/AddButtonsDialogDouble.java | 2 +- .../jg_cody/Teraplex/AddHeadlineDialog.java | 7 +- .../de/jg_cody/Teraplex/MainActivity.java | 2 +- .../ui/settings/SettingsFragment.java | 75 +++++++- .../jg_cody/Teraplex/ui/tabs/ListAdapter.java | 181 ++++++++++++++++-- .../Teraplex/ui/tabs/ListItemDouble.java | 2 +- app/src/main/res/layout/exportdialog.xml | 16 ++ app/src/main/res/layout/headline.xml | 4 +- app/src/main/res/layout/singlebutton.xml | 4 +- app/src/main/res/layout/space.xml | 14 ++ app/src/main/res/values/strings.xml | 1 + 12 files changed, 276 insertions(+), 34 deletions(-) create mode 100644 app/src/main/res/layout/exportdialog.xml 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 cf7c9a3..e22ae16 100644 --- a/app/src/main/java/de/jg_cody/Teraplex/AddButtonDialogSingle.java +++ b/app/src/main/java/de/jg_cody/Teraplex/AddButtonDialogSingle.java @@ -49,7 +49,7 @@ public class AddButtonDialogSingle extends DialogFragment { } }) - .setPositiveButton("ADD", new DialogInterface.OnClickListener() { + .setPositiveButton(R.string.add, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { String command = editText_command.getText().toString(); 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 d08b0e9..a3bc1f7 100644 --- a/app/src/main/java/de/jg_cody/Teraplex/AddButtonsDialogDouble.java +++ b/app/src/main/java/de/jg_cody/Teraplex/AddButtonsDialogDouble.java @@ -36,7 +36,7 @@ public class AddButtonsDialogDouble extends DialogFragment { builder.setView(view) .setTitle("ON/OFF BUTTON") .setNegativeButton(getString(R.string.cancel), null) - .setPositiveButton("ADD", new DialogInterface.OnClickListener() { + .setPositiveButton(R.string.add, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { String command1 = editText_command1.getText().toString(); 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 d03ee2f..a489540 100644 --- a/app/src/main/java/de/jg_cody/Teraplex/AddHeadlineDialog.java +++ b/app/src/main/java/de/jg_cody/Teraplex/AddHeadlineDialog.java @@ -39,12 +39,13 @@ public class AddHeadlineDialog extends DialogFragment { editText_name = view.findViewById(R.id.dialogheadline_editText_name); + builder.setView(view) - .setTitle("SINGLE BUTTON") - .setNegativeButton(getString(R.string.cancel), (dialogInterface, i) -> { + .setTitle(R.string.heading) + .setNegativeButton(R.string.cancel, (dialogInterface, i) -> { }) - .setPositiveButton("ADD", (dialogInterface, i) -> { + .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); 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 52aa67c..77382a3 100644 --- a/app/src/main/java/de/jg_cody/Teraplex/MainActivity.java +++ b/app/src/main/java/de/jg_cody/Teraplex/MainActivity.java @@ -186,7 +186,7 @@ public class MainActivity extends AppCompatActivity { mBuilder.setView(view) .setTitle(R.string.menu_add); - mBuilder.setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() { + mBuilder.setPositiveButton(R.string.add, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Vibrator vr = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE); 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 fe4d650..facf3f9 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 @@ -17,6 +17,7 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Button; +import android.widget.EditText; import android.widget.ImageView; import androidx.annotation.NonNull; @@ -33,6 +34,7 @@ import static android.content.Context.MODE_PRIVATE; public class SettingsFragment extends Fragment { + private EditText editExportFile_name; private SettingsViewModel settingsViewModel; public View onCreateView(@NonNull LayoutInflater inflater, @@ -67,7 +69,16 @@ public class SettingsFragment extends Fragment { assert vr != null; vr.vibrate(100); showExportDialog(); - + } + }); + Button Import = root.findViewById(R.id.button_import); + Import.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + Vibrator vr = (Vibrator) requireContext().getSystemService(Context.VIBRATOR_SERVICE); + assert vr != null; + vr.vibrate(100); + showImportDialog(); } }); Button Reset = root.findViewById(R.id.button_reset); @@ -283,9 +294,9 @@ public class SettingsFragment extends Fragment { final String[] listItems = {"EXPORT BACKGROUND", "EXPORT LANGUAGESETTINGS", "EXPORT THEMESETTINGS", "EXPORT TABS"}; AlertDialog.Builder mBuilder = new AlertDialog.Builder(getContext()); mBuilder.setTitle(getString(R.string.export_settings)); - mBuilder.setMultiChoiceItems(listItems, selection, new DialogInterface.OnClickListener() { + mBuilder.setMultiChoiceItems(listItems, null, new DialogInterface.OnMultiChoiceClickListener() { @Override - public void onClick(DialogInterface dialogInterface, int i) { + public void onClick(DialogInterface dialogInterface, int i, boolean b) { Vibrator vr = (Vibrator) requireContext().getSystemService(Context.VIBRATOR_SERVICE); assert vr != null; vr.vibrate(100); @@ -298,7 +309,57 @@ public class SettingsFragment extends Fragment { } else if (i == 3) { } - dialogInterface.dismiss(); + } + + }); + mBuilder.setPositiveButton(getString(R.string.button_export), new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialogInterface, int i) { + AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); + LayoutInflater inflater = requireActivity().getLayoutInflater(); + View view = inflater.inflate(R.layout.exportdialog, null); + + editExportFile_name = view.findViewById(R.id.dialogexport_editText_name); + + + builder.setView(view) + .setTitle("SINGLE BUTTON") + .setNegativeButton(getString(R.string.cancel), (dialogExport, r) -> { + + }) + .setPositiveButton(R.string.button_export, (dialogExport, r) -> { + String headline = editExportFile_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)) + + // 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; + } + + }); + + + AlertDialog mDialog = builder.create(); + Objects.requireNonNull(mDialog.getWindow()).setBackgroundDrawableResource(R.drawable.button_round); + mDialog.getWindow().getAttributes().windowAnimations = R.style.DialogAnimation; //style id + mDialog.show(); + } + } + ); + mBuilder.setNegativeButton(getString(R.string.cancel), new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialogInterface, int i) { + } }); AlertDialog mDialog = mBuilder.create(); @@ -306,6 +367,10 @@ public class SettingsFragment extends Fragment { mDialog.getWindow().getAttributes().windowAnimations = R.style.DialogAnimation; //style id mDialog.show(); } - + private void showImportDialog() { + Intent a = new Intent( + Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); + requireActivity().startActivityForResult(a, MainActivity.RESULT_LOAD_IMAGE); + } } \ No newline at end of file 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 3884fdf..1c1c7d8 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 @@ -1,12 +1,15 @@ 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; import android.widget.Button; +import android.widget.EditText; import android.widget.ImageView; -import android.widget.Toast; import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; @@ -16,12 +19,20 @@ import org.json.JSONException; import java.util.ArrayList; import java.util.Collections; +import java.util.Objects; +import de.jg_cody.Teraplex.AddButtonsDialogDouble; import de.jg_cody.Teraplex.MainActivity; import de.jg_cody.Teraplex.R; public class ListAdapter extends RecyclerView.Adapter { + private AddButtonsDialogDouble.AddButtonsDialogListenerDouble listener; + private EditText editText_name, editText_command, editText_command1, editText_button1, editText_command2, editText_button2, editText_button_name; + private TabsFragment frag; + + ListAdapter listAdapter; + public static final int SINGLEBUTTON = 0, DOUBLEBUTTON = 1, @@ -143,30 +154,162 @@ public class ListAdapter extends RecyclerView.Adapter { + + }) + .setPositiveButton(R.string.add, (dialogInterface, i) -> { + 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) + + // 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; + } + + }); + + + AlertDialog mDialog = builder.create(); + Objects.requireNonNull(mDialog.getWindow()).setBackgroundDrawableResource(R.drawable.button_round); + mDialog.getWindow().getAttributes().windowAnimations = R.style.DialogAnimation; //style id + mDialog.show(); break; } } - } - }); + + }}); switch(item.getType()) { case SINGLEBUTTON: { @@ -223,4 +366,6 @@ public class ListAdapter extends RecyclerView.Adapter + + + + + diff --git a/app/src/main/res/layout/headline.xml b/app/src/main/res/layout/headline.xml index 98c1f14..5c163a3 100644 --- a/app/src/main/res/layout/headline.xml +++ b/app/src/main/res/layout/headline.xml @@ -21,8 +21,8 @@ + + + + YES NO OK + ADD CANCEL INVALID INPUT TABNAME