From 9dee59f61a4f6e6fb7ec538c45cdd1079997b912 Mon Sep 17 00:00:00 2001 From: Chris Date: Mon, 14 Jan 2019 17:51:03 +0100 Subject: [PATCH] Settings now complete. --- .../tasker/service/TaskerConstants.java | 2 +- .../tasker/settings/ButtonPreference.java | 47 ++++++++++++++++ .../tasker/settings/TaskerEventActivity.java | 53 ++++++++++--------- app/src/main/res/layout/tasker_add_button.xml | 3 +- .../main/res/layout/tasker_remove_button.xml | 1 - .../main/res/xml/tasker_event_preferences.xml | 16 +++--- 6 files changed, 83 insertions(+), 39 deletions(-) create mode 100644 app/src/main/java/nodomain/freeyourgadget/gadgetbridge/tasker/settings/ButtonPreference.java diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/tasker/service/TaskerConstants.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/tasker/service/TaskerConstants.java index bd31d39d0..9071fc115 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/tasker/service/TaskerConstants.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/tasker/service/TaskerConstants.java @@ -23,7 +23,7 @@ public class TaskerConstants { public static final String ACTIVITY_THRESHOLD = "act_tasker_threshold"; public static final String ACTIVITY_TASK_ADD = "act_tasker_task_add"; - public static final String ACTIVITY_TASK_REMOVE = "act_tasker_task_remove"; + public static final String ACTIVITY_TASK = "act_tasker_task"; public static final String ACTIVITY_THESHOLD_ENABELD = "act_tasker_threshold_enabled"; public static final String ACTIVITY_TASKS = "act_tasker_task_group"; diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/tasker/settings/ButtonPreference.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/tasker/settings/ButtonPreference.java new file mode 100644 index 000000000..d5909c9f9 --- /dev/null +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/tasker/settings/ButtonPreference.java @@ -0,0 +1,47 @@ +package nodomain.freeyourgadget.gadgetbridge.tasker.settings; + +import android.content.Context; +import android.preference.EditTextPreference; +import android.util.AttributeSet; +import android.view.View; +import android.widget.Button; + +import nodomain.freeyourgadget.gadgetbridge.R; + +public class ButtonPreference extends EditTextPreference { + + private View.OnClickListener onClickListener; + private Button button; + + public ButtonPreference(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + } + + public ButtonPreference(Context context, AttributeSet attrs) { + super(context, attrs); + } + + public ButtonPreference(Context context) { + super(context); + } + + @Override + protected void onBindView(View view) { + super.onBindView(view); + View button = view.findViewById(R.id.tasker_button); + if (button != null) { + button.setOnClickListener(onClickListener); + this.button = (Button) button; + } + } + + public void setOnClickListener(View.OnClickListener clickListener) { + this.onClickListener = clickListener; + } + + public void setButtonText(int resourceId) { + if (button != null) { + button.setText(resourceId); + } + } +} diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/tasker/settings/TaskerEventActivity.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/tasker/settings/TaskerEventActivity.java index 95d9ace71..52678c006 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/tasker/settings/TaskerEventActivity.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/tasker/settings/TaskerEventActivity.java @@ -5,11 +5,12 @@ import android.os.Bundle; import android.preference.EditTextPreference; import android.preference.Preference; import android.preference.PreferenceCategory; +import android.preference.PreferenceScreen; +import android.view.View; import nodomain.freeyourgadget.gadgetbridge.GBApplication; import nodomain.freeyourgadget.gadgetbridge.R; import nodomain.freeyourgadget.gadgetbridge.activities.AbstractSettingsActivity; -import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; import nodomain.freeyourgadget.gadgetbridge.tasker.event.TaskerEventType; import nodomain.freeyourgadget.gadgetbridge.tasker.service.TaskerConstants; import nodomain.freeyourgadget.gadgetbridge.util.Prefs; @@ -27,38 +28,31 @@ public class TaskerEventActivity extends AbstractSettingsActivity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.tasker_event_preferences); + } + + @Override + protected void onPostCreate(Bundle savedInstanceState) { + super.onPostCreate(savedInstanceState); device = (TaskerConstants.TaskerDevice) getIntent().getSerializableExtra(TaskerConstants.DEVICE_INTENT); eventType = (TaskerEventType) getIntent().getSerializableExtra(TaskerConstants.EVENT_INTENT); - final PreferenceCategory tasks = (PreferenceCategory) findPreference(TaskerConstants.ACTIVITY_TASKS); - Preference addTaskButton = findPreference(TaskerConstants.ACTIVITY_TASK_ADD); - final EditTextPreference removeTaskButton = (EditTextPreference) findPreference(TaskerConstants.ACTIVITY_TASK_REMOVE); + final PreferenceScreen tasks = (PreferenceScreen) findPreference(TaskerConstants.ACTIVITY_TASKS); + ButtonPreference addTaskButton = (ButtonPreference) findPreference(TaskerConstants.ACTIVITY_TASK_ADD); + final EditTextPreference taskNamePreference = (EditTextPreference) findPreference(TaskerConstants.ACTIVITY_TASK); final Preference thresholdEnabled = findPreference(TaskerConstants.ACTIVITY_THESHOLD_ENABELD); - addTaskButton.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { + addTaskButton.setOnClickListener(new View.OnClickListener() { @Override - public boolean onPreferenceClick(Preference preference) { + public void onClick(View v) { if (prefs.getBoolean(thresholdEnabled.getKey(), false)) { - tasks.addPreference(task(tasks, removeTaskButton)); + tasks.addPreference(task(tasks, taskNamePreference)); } - return true; - } - }); - removeTaskButton.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { - @Override - public boolean onPreferenceClick(Preference preference) { - return tasks.removePreference(preference); } }); thresholdEnabled.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { @Override public boolean onPreferenceChange(Preference preference, Object newValue) { - if (newValue.equals(Boolean.TRUE)) { - for (int i = 1; i < tasks.getPreferenceCount(); i++) { - int identifier = Resources.getSystem().getIdentifier("preference", "layout", "android"); - removeTaskButton.setWidgetLayoutResource(identifier); - } - } else { - for (int i = 1; i < tasks.getPreferenceCount(); i++) { - tasks.removePreference(tasks.getPreference(i)); + if (newValue.equals(Boolean.FALSE)) { + for (int i = 2; i < tasks.getPreferenceCount(); i++) { + tasks.removePreference(tasks.getPreference(tasks.getPreferenceCount())); } } return true; @@ -66,12 +60,19 @@ public class TaskerEventActivity extends AbstractSettingsActivity { }); } - private Preference task(PreferenceCategory tasks, Preference build) { - EditTextPreference task = new EditTextPreference(this); - task.setKey(TaskerConstants.ACTIVITY_TASK_REMOVE + "_" + tasks.getPreferenceCount()); + private Preference task(final PreferenceScreen tasks, Preference build) { + final ButtonPreference task = new ButtonPreference(this); + task.setKey(TaskerConstants.ACTIVITY_TASK + "_" + tasks.getPreferenceCount()); task.setTitle(build.getTitle()); task.setSummary(build.getSummary()); - task.setWidgetLayoutResource(build.getWidgetLayoutResource()); + task.setButtonText(R.string.tasker_remove); + task.setWidgetLayoutResource(R.layout.tasker_add_button); + task.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + tasks.removePreference(task); + } + }); return task; } diff --git a/app/src/main/res/layout/tasker_add_button.xml b/app/src/main/res/layout/tasker_add_button.xml index ff11fb82d..1498ee169 100644 --- a/app/src/main/res/layout/tasker_add_button.xml +++ b/app/src/main/res/layout/tasker_add_button.xml @@ -5,11 +5,10 @@ android:orientation="vertical"> \ No newline at end of file diff --git a/app/src/main/res/layout/tasker_remove_button.xml b/app/src/main/res/layout/tasker_remove_button.xml index b64157233..2d5e79188 100644 --- a/app/src/main/res/layout/tasker_remove_button.xml +++ b/app/src/main/res/layout/tasker_remove_button.xml @@ -9,7 +9,6 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" - android:onClick="resetearBD" android:text="@string/tasker_remove"> \ No newline at end of file diff --git a/app/src/main/res/xml/tasker_event_preferences.xml b/app/src/main/res/xml/tasker_event_preferences.xml index efd2fb387..43b838068 100644 --- a/app/src/main/res/xml/tasker_event_preferences.xml +++ b/app/src/main/res/xml/tasker_event_preferences.xml @@ -1,5 +1,6 @@ - + - - - - + android:widgetLayout="@layout/tasker_add_button"> + \ No newline at end of file