Finished scope settings. Loading is still missing.

This commit is contained in:
nightoftune 2019-01-22 16:45:20 +01:00
parent a857be6c21
commit 3fb1c703a7
6 changed files with 109 additions and 79 deletions

View File

@ -4,6 +4,8 @@ import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import android.preference.Preference; import android.preference.Preference;
import android.preference.PreferenceCategory; import android.preference.PreferenceCategory;
import android.preference.PreferenceFragment;
import android.support.annotation.Nullable;
import nodomain.freeyourgadget.gadgetbridge.R; import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.activities.AbstractSettingsActivity; import nodomain.freeyourgadget.gadgetbridge.activities.AbstractSettingsActivity;
@ -11,7 +13,7 @@ import nodomain.freeyourgadget.gadgetbridge.tasker.plugin.TaskerConstants;
import nodomain.freeyourgadget.gadgetbridge.tasker.plugin.TaskerDevice; import nodomain.freeyourgadget.gadgetbridge.tasker.plugin.TaskerDevice;
/** /**
* Tasker main {@link AbstractSettingsActivity} builds an supported list of {@link TaskerConstants.TaskerDevice}. * Tasker main {@link AbstractSettingsActivity} builds an supported list of {@link TaskerDevice}.
* <p> * <p>
* Forwards to {@link TaskerEventsActivity}. * Forwards to {@link TaskerEventsActivity}.
*/ */
@ -19,6 +21,15 @@ public class TaskerActivity extends AbstractSettingsActivity {
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getFragmentManager().beginTransaction().replace(android.R.id.content,
new TaskerFragment()).commit();
}
public static class TaskerFragment extends PreferenceFragment {
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.tasker_preferences); addPreferencesFromResource(R.xml.tasker_preferences);
final PreferenceCategory group = (PreferenceCategory) findPreference(TaskerConstants.ACTIVITY_TASKER_GROUP); final PreferenceCategory group = (PreferenceCategory) findPreference(TaskerConstants.ACTIVITY_TASKER_GROUP);
@ -27,18 +38,13 @@ public class TaskerActivity extends AbstractSettingsActivity {
} }
} }
@Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
}
private Preference preference(final TaskerDevice device) { private Preference preference(final TaskerDevice device) {
Preference devicePreference = new Preference(this); Preference devicePreference = new Preference(getActivity());
devicePreference.setTitle(device.getType().getName()); devicePreference.setTitle(device.getType().getName());
devicePreference.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { devicePreference.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
@Override @Override
public boolean onPreferenceClick(Preference preference) { public boolean onPreferenceClick(Preference preference) {
Intent intent = new Intent(TaskerActivity.this, TaskerEventsActivity.class); Intent intent = new Intent(getActivity(), TaskerEventsActivity.class);
intent.putExtra(TaskerConstants.INTENT_DEVICE, device); intent.putExtra(TaskerConstants.INTENT_DEVICE, device);
startActivity(intent); startActivity(intent);
return true; return true;
@ -47,3 +53,4 @@ public class TaskerActivity extends AbstractSettingsActivity {
return devicePreference; return devicePreference;
} }
} }
}

View File

@ -1,5 +1,7 @@
package nodomain.freeyourgadget.gadgetbridge.tasker.settings.activities; package nodomain.freeyourgadget.gadgetbridge.tasker.settings.activities;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import android.preference.EditTextPreference; import android.preference.EditTextPreference;
import android.preference.Preference; import android.preference.Preference;
@ -7,6 +9,11 @@ import android.preference.PreferenceFragment;
import android.preference.PreferenceScreen; import android.preference.PreferenceScreen;
import android.preference.SwitchPreference; import android.preference.SwitchPreference;
import android.support.annotation.Nullable; import android.support.annotation.Nullable;
import android.support.v4.app.NavUtils;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.View; import android.view.View;
import java.util.ArrayList; import java.util.ArrayList;
@ -46,6 +53,19 @@ public class TaskerEventActivity extends AbstractSettingsActivity {
taskerEventFragment).commit(); taskerEventFragment).commit();
} }
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
Intent resultIntent = new Intent();
resultIntent.putExtra(TaskerConstants.INTENT_DEVICE, getIntent().getSerializableExtra(TaskerConstants.INTENT_DEVICE));
setResult(Activity.RESULT_OK, resultIntent);
finish();
return true;
}
return super.onOptionsItemSelected(item);
}
public static class TaskerEventFragment extends PreferenceFragment { public static class TaskerEventFragment extends PreferenceFragment {
private TaskerDevice device; private TaskerDevice device;
@ -62,6 +82,7 @@ public class TaskerEventActivity extends AbstractSettingsActivity {
@Override @Override
public void onCreate(@Nullable Bundle savedInstanceState) { public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
setPreferenceScreen(getPreferenceManager().createPreferenceScreen(getActivity()));
device = (TaskerDevice) getArguments().get(TaskerConstants.INTENT_DEVICE); device = (TaskerDevice) getArguments().get(TaskerConstants.INTENT_DEVICE);
eventType = (TaskerEventType) getArguments().get(TaskerConstants.INTENT_EVENT); eventType = (TaskerEventType) getArguments().get(TaskerConstants.INTENT_EVENT);
settings = device.getSpec().getSettings(eventType); settings = device.getSpec().getSettings(eventType);
@ -72,6 +93,11 @@ public class TaskerEventActivity extends AbstractSettingsActivity {
initTasks(); initTasks();
} }
@Override
public void onOptionsMenuClosed(Menu menu) {
super.onOptionsMenuClosed(menu);
}
private void initEnableEvent() { private void initEnableEvent() {
String key = scoped(TaskerConstants.ACTIVITY_EVENT_ENABLED); String key = scoped(TaskerConstants.ACTIVITY_EVENT_ENABLED);
enableEvent = new SwitchPreference(getActivity()); enableEvent = new SwitchPreference(getActivity());
@ -190,7 +216,7 @@ public class TaskerEventActivity extends AbstractSettingsActivity {
public String getTask(TaskerEvent event) { public String getTask(TaskerEvent event) {
if (event.getCount() < tasks.size()) { if (event.getCount() < tasks.size()) {
String text = tasks.get(event.getCount()).getText(); String text = tasks.get(event.getCount()).getText();
if (StringUtils.isEmpty(text)) { if (text == null || StringUtils.isEmpty(text)) {
throw new NoTaskDefinedException(); throw new NoTaskDefinedException();
} }
return text; return text;

View File

@ -1,11 +1,16 @@
package nodomain.freeyourgadget.gadgetbridge.tasker.settings.activities; package nodomain.freeyourgadget.gadgetbridge.tasker.settings.activities;
import android.app.Activity;
import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import android.preference.Preference; import android.preference.Preference;
import android.preference.PreferenceCategory; import android.preference.PreferenceFragment;
import android.preference.PreferenceManager;
import android.preference.PreferenceScreen;
import android.support.annotation.Nullable;
import android.view.KeyEvent;
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.activities.AbstractSettingsActivity; import nodomain.freeyourgadget.gadgetbridge.activities.AbstractSettingsActivity;
import nodomain.freeyourgadget.gadgetbridge.tasker.event.TaskerEventType; import nodomain.freeyourgadget.gadgetbridge.tasker.event.TaskerEventType;
import nodomain.freeyourgadget.gadgetbridge.tasker.plugin.TaskerConstants; import nodomain.freeyourgadget.gadgetbridge.tasker.plugin.TaskerConstants;
@ -18,31 +23,51 @@ import nodomain.freeyourgadget.gadgetbridge.tasker.plugin.TaskerDevice;
*/ */
public class TaskerEventsActivity extends AbstractSettingsActivity { public class TaskerEventsActivity extends AbstractSettingsActivity {
private TaskerDevice device;
public TaskerEventsActivity() {
}
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.tasker_events_preferences); TaskerEventsFragment taskerEventsFragment = new TaskerEventsFragment();
device = (TaskerDevice) getIntent().getSerializableExtra(TaskerConstants.INTENT_DEVICE); Bundle arguments = new Bundle();
PreferenceCategory category = (PreferenceCategory) findPreference(TaskerConstants.ACTIVITY_EVENT_GROUP); if (getIntent().hasExtra(TaskerConstants.INTENT_DEVICE)) {
arguments.putSerializable(TaskerConstants.INTENT_DEVICE, getIntent().getSerializableExtra(TaskerConstants.INTENT_DEVICE));
}
taskerEventsFragment.setArguments(arguments);
getFragmentManager().beginTransaction().replace(android.R.id.content,
taskerEventsFragment).commit();
}
public static class TaskerEventsFragment extends PreferenceFragment {
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setPreferenceScreen(getPreferenceManager().createPreferenceScreen(getActivity()));
if (getArguments().get(TaskerConstants.INTENT_DEVICE) == null) {
return;
}
final TaskerDevice device = (TaskerDevice) getArguments().get(TaskerConstants.INTENT_DEVICE);
for (final TaskerEventType eventType : device.getSpec().getSupportedTypes()) { for (final TaskerEventType eventType : device.getSpec().getSupportedTypes()) {
Preference preference = new Preference(this); Preference preference = new Preference(getActivity());
preference.setTitle(eventType.getLocalization()); preference.setTitle(eventType.getLocalization());
preference.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { preference.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
@Override @Override
public boolean onPreferenceClick(Preference preference) { public boolean onPreferenceClick(Preference preference) {
Intent intent = new Intent(TaskerEventsActivity.this, TaskerEventActivity.class); Intent intent = new Intent(getActivity(), TaskerEventActivity.class);
intent.putExtra(TaskerConstants.INTENT_EVENT, eventType); intent.putExtra(TaskerConstants.INTENT_EVENT, eventType);
intent.putExtra(TaskerConstants.INTENT_DEVICE, device); intent.putExtra(TaskerConstants.INTENT_DEVICE, device);
startActivity(intent); startActivityForResult(intent, 0);
return true; return true;
} }
}); });
category.addPreference(preference); getPreferenceScreen().addPreference(preference);
}
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
getArguments().putSerializable(TaskerConstants.INTENT_DEVICE, data.getSerializableExtra(TaskerConstants.INTENT_DEVICE));
} }
} }
} }

View File

@ -54,7 +54,7 @@ public class TaskerTask implements Runnable {
} }
} }
} catch (NoTaskDefinedException e) { } catch (NoTaskDefinedException e) {
TaskerUtil.noTaskDefinedInformation(); TaskerUtil.noTaskDefinedInformation().show();
} }
} }

View File

@ -1,22 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
android:key="act_tasker_task_group">
<SwitchPreference
android:key="act_tasker_event_enabled"
android:title="@string/tasker_event_enabled" />
<SwitchPreference
android:key="act_tasker_threshold_enabled"
android:title="@string/tasker_threshold_enable" />
<EditTextPreference
android:inputType="number"
android:key="act_tasker_threshold"
android:summary="@string/tasker_threshold_sum"
android:title="@string/tasker_threshold" />
<nodomain.freeyourgadget.gadgetbridge.tasker.settings.activities.ButtonPreference
android:key="act_tasker_task_add"
android:summary="@string/tasker_task_sum"
android:title="@string/tasker_task"></nodomain.freeyourgadget.gadgetbridge.tasker.settings.activities.ButtonPreference>
<EditTextPreference
android:key="act_tasker_task"
android:summary="@string/tasker_task_name" />
</PreferenceScreen>

View File

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory
android:key="act_event_group"
android:title="@string/tasker_events"></PreferenceCategory>
</PreferenceScreen>