Settings now complete.

This commit is contained in:
Chris 2019-01-14 17:51:03 +01:00
parent 0ecff3f823
commit 9dee59f61a
6 changed files with 83 additions and 39 deletions

View File

@ -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";

View File

@ -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);
}
}
}

View File

@ -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;
}

View File

@ -5,11 +5,10 @@
android:orientation="vertical">
<Button xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/tasker_add_button"
android:id="@+id/tasker_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:onClick="resetearBD"
android:text="@string/tasker_add">
</Button>
</RelativeLayout >

View File

@ -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">
</Button>
</RelativeLayout >

View File

@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
android:key="act_tasker_task_group">
<PreferenceCategory android:key="tasker_event">
<Preference
android:key="tasker_info"
@ -14,16 +15,13 @@
android:key="act_tasker_threshold"
android:summary="@string/tasker_threshold_sum"
android:title="@string/tasker_threshold" />
<Preference
<nodomain.freeyourgadget.gadgetbridge.tasker.settings.ButtonPreference
android:key="act_tasker_task_add"
android:summary="@string/tasker_task_sum"
android:title="@string/tasker_task"
android:widgetLayout="@layout/tasker_add_button"></Preference>
</PreferenceCategory>
<PreferenceCategory android:key="act_tasker_task_group">
<EditTextPreference
android:key="act_tasker_task_remove"
android:summary="@string/tasker_task_name"
android:widgetLayout="@layout/tasker_remove_button" />
android:widgetLayout="@layout/tasker_add_button"></nodomain.freeyourgadget.gadgetbridge.tasker.settings.ButtonPreference>
</PreferenceCategory>
<EditTextPreference
android:key="act_tasker_task"
android:summary="@string/tasker_task_name" />
</PreferenceScreen>