diff --git a/app/src/main/java/orgprivacy_friendly_apps/secuso/privacyfriendlybreakreminder/BreakReminder.java b/app/src/main/java/orgprivacy_friendly_apps/secuso/privacyfriendlybreakreminder/BreakReminder.java index 29ae33f..3746d6d 100644 --- a/app/src/main/java/orgprivacy_friendly_apps/secuso/privacyfriendlybreakreminder/BreakReminder.java +++ b/app/src/main/java/orgprivacy_friendly_apps/secuso/privacyfriendlybreakreminder/BreakReminder.java @@ -253,11 +253,11 @@ public class BreakReminder extends AppCompatActivity getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); //FIXME Add flag if New Profile or Resume - if (addNewProfile) { + //if (addNewProfile) { fillProfiles(); profileSpinner = (Spinner) findViewById(R.id.spinner); - addNewProfile = false; - } + // addNewProfile = false; + //} } @Override diff --git a/app/src/main/java/orgprivacy_friendly_apps/secuso/privacyfriendlybreakreminder/DynamicListPreference.java b/app/src/main/java/orgprivacy_friendly_apps/secuso/privacyfriendlybreakreminder/DynamicListPreference.java new file mode 100644 index 0000000..d191a53 --- /dev/null +++ b/app/src/main/java/orgprivacy_friendly_apps/secuso/privacyfriendlybreakreminder/DynamicListPreference.java @@ -0,0 +1,99 @@ +package orgprivacy_friendly_apps.secuso.privacyfriendlybreakreminder; + +import android.app.AlertDialog; +import android.content.Context; +import android.content.DialogInterface; +import android.content.SharedPreferences; +import android.os.Bundle; +import android.preference.ListPreference; +import android.preference.Preference; +import android.preference.PreferenceManager; +import android.util.AttributeSet; +import android.view.View; +import android.widget.ArrayAdapter; +import android.widget.Button; +import android.widget.ListAdapter; +import android.widget.ListView; +import android.widget.Toast; + + +public class DynamicListPreference extends ListPreference implements Preference.OnPreferenceChangeListener,DialogInterface.OnClickListener { + + Context mContext; + int currentProfile = 0; + + public DynamicListPreference(Context context, AttributeSet attrs) { + super(context, attrs); + mContext = context; + } + + + @Override + protected void onDialogClosed(boolean positiveResult) { + + System.out.println("Verzweiflung " + getValue()); + SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(mContext); + String[] allProfile = sharedPreferences.getString("profiles", "").split(";"); + + SharedPreferences.Editor editor = sharedPreferences.edit(); + //FIXME Deactivate the onPrefListener in SettingsActivity + for (int i = 0; i < allProfile.length; i++) { + if (allProfile[i].split(",")[0].equals(getValue())){ + editor.putString("name_text",allProfile[i].split(",")[0]); + editor.putString("work_value",allProfile[i].split(",")[1]); + editor.putString("break_value",allProfile[i].split(",")[2]); + editor.apply(); + } + + } + + } + + @Override + protected View onCreateDialogView() { + ListView view = new ListView(getContext()); + view.setAdapter(adapter()); + setEntries(entries()); + setEntryValues(entryValues()); + setValueIndex(currentProfile); + return view; + } + + + private ListAdapter adapter() { + return new ArrayAdapter(getContext(), android.R.layout.select_dialog_singlechoice); + } + + private CharSequence[] entries() { + //action to provide entry data in char sequence array for list + + SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(mContext); + String[] allProfiles = sharedPreferences.getString("profiles", "").split(";"); + CharSequence[] entries = new CharSequence[allProfiles.length]; + for (int i = 0; i < allProfiles.length; i++) { + String profileName = allProfiles[i].split(",")[0]; + entries[i] = profileName; + if (profileName.equals(sharedPreferences.getString("name_text", ""))) + currentProfile = i; + } + return entries; + } + + private CharSequence[] entryValues() { + //action to provide entry data in char sequence array for list + + SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(mContext); + String[] allProfiles = sharedPreferences.getString("profiles", "").split(";"); + CharSequence[] entries = new CharSequence[allProfiles.length]; + for (int i = 0; i < allProfiles.length; i++) { + String profileName = allProfiles[i].split(",")[0]; + entries[i] = "" + i; + } + return entries; + } + + @Override + public boolean onPreferenceChange(Preference preference, Object newValue) { + return true; + } +} diff --git a/app/src/main/java/orgprivacy_friendly_apps/secuso/privacyfriendlybreakreminder/SettingsActivity.java b/app/src/main/java/orgprivacy_friendly_apps/secuso/privacyfriendlybreakreminder/SettingsActivity.java index 0355e55..9541d79 100644 --- a/app/src/main/java/orgprivacy_friendly_apps/secuso/privacyfriendlybreakreminder/SettingsActivity.java +++ b/app/src/main/java/orgprivacy_friendly_apps/secuso/privacyfriendlybreakreminder/SettingsActivity.java @@ -186,6 +186,8 @@ public class SettingsActivity extends AppCompatPreferenceActivity { private SeekBarPreference _seekBarWork; private SeekBarPreference _seekBarBreak; + private DynamicListPreference dlp; + private String currentProfile = ""; @Override @@ -198,6 +200,8 @@ public class SettingsActivity extends AppCompatPreferenceActivity { _seekBarWork = (SeekBarPreference) this.findPreference("work_value"); _seekBarBreak = (SeekBarPreference) this.findPreference("break_value"); + dlp = (DynamicListPreference) this.findPreference("current_profile"); + // Set listener : getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this); @@ -235,12 +239,23 @@ public class SettingsActivity extends AppCompatPreferenceActivity { public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { + if(key.equals("current_profile")){ + System.out.println("HOOOOOOOOOOOOOLY SHIIIIIIIIIIIIT"); + } + + + System.out.println("--------We change something!!!!! Key: " + key); + // Set seekbar summary : int radius = PreferenceManager.getDefaultSharedPreferences(this.getActivity()).getInt("work_value", 50); _seekBarWork.setSummary(this.getString(R.string.settings_summary).replace("$1", "" + radius)); radius = PreferenceManager.getDefaultSharedPreferences(this.getActivity()).getInt("break_value", 10); _seekBarBreak.setSummary(this.getString(R.string.settings_summary).replace("$1", "" + radius)); + //FIXME Update the preferences of the selected profile + if (!key.equals("profiles")) + updateProfilesPreference(); + } @@ -248,12 +263,19 @@ public class SettingsActivity extends AppCompatPreferenceActivity { public void onPause() { getPreferenceManager().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this); + updateProfilesPreference(); + + super.onPause(); + } + + private void updateProfilesPreference() { int work_radius = PreferenceManager.getDefaultSharedPreferences(this.getActivity()).getInt("work_value", 50); int break_radius = PreferenceManager.getDefaultSharedPreferences(this.getActivity()).getInt("break_value", 10); String newProfileName = PreferenceManager.getDefaultSharedPreferences(this.getActivity()).getString("name_text", ""); String allProfiles = PreferenceManager.getDefaultSharedPreferences(this.getActivity()).getString("profiles", ""); System.out.println("SETTINGS ACTIVITY0: " + newProfileName + "," + work_radius + "," + break_radius); + System.out.println("SETTING ACTIVITY1: " + allProfiles); if (allProfiles.contains(newProfileName + "," + work_radius + "," + break_radius) && newProfileName.equals(currentProfile)) { //Nothing changes System.out.println("No changes for a profile in general settings"); @@ -264,16 +286,17 @@ public class SettingsActivity extends AppCompatPreferenceActivity { if (newProfileName.equals("")) { // Profile name empty System.out.println("EMPTY NAME IN SETTINGS ACTIVITY"); - Toast.makeText(this.getActivity(), R.string.settings_emptyName, Toast.LENGTH_SHORT).show(); + Toast.makeText(this.getActivity(), R.string.settings_emptyName, Toast.LENGTH_LONG).show(); editor.putString("name_text", currentProfile); editor.apply(); + findPreference("name_text").setSummary(currentProfile); } else if (currentProfile != newProfileName && prefContainsName(newProfileName)) { // Profile name exists already - Toast.makeText(this.getActivity(), R.string.settings_doubleName, Toast.LENGTH_SHORT).show(); + Toast.makeText(this.getActivity(), R.string.settings_doubleName, Toast.LENGTH_LONG).show(); editor.putString("name_text", currentProfile); editor.apply(); - + findPreference("name_text").setSummary(currentProfile); } else { String[] profiles = allProfiles.split(";"); @@ -289,11 +312,12 @@ public class SettingsActivity extends AppCompatPreferenceActivity { } editor.putString("profiles", builder.toString()); editor.apply(); + + currentProfile = newProfileName; } } - super.onPause(); } private boolean prefContainsName(String profileName) { diff --git a/app/src/main/res/drawable/circle.xml b/app/src/main/res/drawable/circle.xml new file mode 100644 index 0000000..346fd35 --- /dev/null +++ b/app/src/main/res/drawable/circle.xml @@ -0,0 +1,7 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/content_break_reminder.xml b/app/src/main/res/layout/content_break_reminder.xml index 5aff274..ba911e5 100644 --- a/app/src/main/res/layout/content_break_reminder.xml +++ b/app/src/main/res/layout/content_break_reminder.xml @@ -4,79 +4,66 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" + android:background="@color/white" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" app:layout_behavior="@string/appbar_scrolling_view_behavior" - android:background="@color/white" tools:context="orgprivacy_friendly_apps.secuso.privacyfriendlybreakreminder.BreakReminder" tools:showIn="@layout/app_bar_break_reminder"> + android:layout_marginTop="49dp" />