diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/tasker/settings/activities/TaskerActivity.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/tasker/settings/activities/TaskerActivity.java index e13d970e0..5e244cada 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/tasker/settings/activities/TaskerActivity.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/tasker/settings/activities/TaskerActivity.java @@ -4,6 +4,8 @@ import android.content.Intent; import android.os.Bundle; import android.preference.Preference; import android.preference.PreferenceCategory; +import android.preference.PreferenceFragment; +import android.support.annotation.Nullable; import nodomain.freeyourgadget.gadgetbridge.R; import nodomain.freeyourgadget.gadgetbridge.activities.AbstractSettingsActivity; @@ -11,7 +13,7 @@ import nodomain.freeyourgadget.gadgetbridge.tasker.plugin.TaskerConstants; 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}. *

* Forwards to {@link TaskerEventsActivity}. */ @@ -20,30 +22,35 @@ public class TaskerActivity extends AbstractSettingsActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - addPreferencesFromResource(R.xml.tasker_preferences); - final PreferenceCategory group = (PreferenceCategory) findPreference(TaskerConstants.ACTIVITY_TASKER_GROUP); - for (TaskerDevice device : TaskerDevice.values()) { - group.addPreference(preference(device)); + 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); + addPreferencesFromResource(R.xml.tasker_preferences); + final PreferenceCategory group = (PreferenceCategory) findPreference(TaskerConstants.ACTIVITY_TASKER_GROUP); + for (TaskerDevice device : TaskerDevice.values()) { + group.addPreference(preference(device)); + } + } + + private Preference preference(final TaskerDevice device) { + Preference devicePreference = new Preference(getActivity()); + devicePreference.setTitle(device.getType().getName()); + devicePreference.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { + @Override + public boolean onPreferenceClick(Preference preference) { + Intent intent = new Intent(getActivity(), TaskerEventsActivity.class); + intent.putExtra(TaskerConstants.INTENT_DEVICE, device); + startActivity(intent); + return true; + } + }); + return devicePreference; } } - - @Override - protected void onPostCreate(Bundle savedInstanceState) { - super.onPostCreate(savedInstanceState); - } - - private Preference preference(final TaskerDevice device) { - Preference devicePreference = new Preference(this); - devicePreference.setTitle(device.getType().getName()); - devicePreference.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { - @Override - public boolean onPreferenceClick(Preference preference) { - Intent intent = new Intent(TaskerActivity.this, TaskerEventsActivity.class); - intent.putExtra(TaskerConstants.INTENT_DEVICE, device); - startActivity(intent); - return true; - } - }); - return devicePreference; - } } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/tasker/settings/activities/TaskerEventActivity.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/tasker/settings/activities/TaskerEventActivity.java index eeaa6359a..b153091f8 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/tasker/settings/activities/TaskerEventActivity.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/tasker/settings/activities/TaskerEventActivity.java @@ -1,5 +1,7 @@ package nodomain.freeyourgadget.gadgetbridge.tasker.settings.activities; +import android.app.Activity; +import android.content.Intent; import android.os.Bundle; import android.preference.EditTextPreference; import android.preference.Preference; @@ -7,6 +9,11 @@ import android.preference.PreferenceFragment; import android.preference.PreferenceScreen; import android.preference.SwitchPreference; 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 java.util.ArrayList; @@ -46,6 +53,19 @@ public class TaskerEventActivity extends AbstractSettingsActivity { 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 { private TaskerDevice device; @@ -62,6 +82,7 @@ public class TaskerEventActivity extends AbstractSettingsActivity { @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); + setPreferenceScreen(getPreferenceManager().createPreferenceScreen(getActivity())); device = (TaskerDevice) getArguments().get(TaskerConstants.INTENT_DEVICE); eventType = (TaskerEventType) getArguments().get(TaskerConstants.INTENT_EVENT); settings = device.getSpec().getSettings(eventType); @@ -72,6 +93,11 @@ public class TaskerEventActivity extends AbstractSettingsActivity { initTasks(); } + @Override + public void onOptionsMenuClosed(Menu menu) { + super.onOptionsMenuClosed(menu); + } + private void initEnableEvent() { String key = scoped(TaskerConstants.ACTIVITY_EVENT_ENABLED); enableEvent = new SwitchPreference(getActivity()); @@ -190,7 +216,7 @@ public class TaskerEventActivity extends AbstractSettingsActivity { public String getTask(TaskerEvent event) { if (event.getCount() < tasks.size()) { String text = tasks.get(event.getCount()).getText(); - if (StringUtils.isEmpty(text)) { + if (text == null || StringUtils.isEmpty(text)) { throw new NoTaskDefinedException(); } return text; diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/tasker/settings/activities/TaskerEventsActivity.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/tasker/settings/activities/TaskerEventsActivity.java index 302b1f908..86205e016 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/tasker/settings/activities/TaskerEventsActivity.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/tasker/settings/activities/TaskerEventsActivity.java @@ -1,11 +1,16 @@ package nodomain.freeyourgadget.gadgetbridge.tasker.settings.activities; +import android.app.Activity; +import android.content.Context; import android.content.Intent; import android.os.Bundle; 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.tasker.event.TaskerEventType; import nodomain.freeyourgadget.gadgetbridge.tasker.plugin.TaskerConstants; @@ -18,31 +23,51 @@ import nodomain.freeyourgadget.gadgetbridge.tasker.plugin.TaskerDevice; */ public class TaskerEventsActivity extends AbstractSettingsActivity { - private TaskerDevice device; - - public TaskerEventsActivity() { - } - @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - addPreferencesFromResource(R.xml.tasker_events_preferences); - device = (TaskerDevice) getIntent().getSerializableExtra(TaskerConstants.INTENT_DEVICE); - PreferenceCategory category = (PreferenceCategory) findPreference(TaskerConstants.ACTIVITY_EVENT_GROUP); - for (final TaskerEventType eventType : device.getSpec().getSupportedTypes()) { - Preference preference = new Preference(this); - preference.setTitle(eventType.getLocalization()); - preference.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { - @Override - public boolean onPreferenceClick(Preference preference) { - Intent intent = new Intent(TaskerEventsActivity.this, TaskerEventActivity.class); - intent.putExtra(TaskerConstants.INTENT_EVENT, eventType); - intent.putExtra(TaskerConstants.INTENT_DEVICE, device); - startActivity(intent); - return true; - } - }); - category.addPreference(preference); + TaskerEventsFragment taskerEventsFragment = new TaskerEventsFragment(); + Bundle arguments = new Bundle(); + 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()) { + Preference preference = new Preference(getActivity()); + preference.setTitle(eventType.getLocalization()); + preference.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { + @Override + public boolean onPreferenceClick(Preference preference) { + Intent intent = new Intent(getActivity(), TaskerEventActivity.class); + intent.putExtra(TaskerConstants.INTENT_EVENT, eventType); + intent.putExtra(TaskerConstants.INTENT_DEVICE, device); + startActivityForResult(intent, 0); + return true; + } + }); + 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)); } } } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/tasker/task/TaskerTask.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/tasker/task/TaskerTask.java index fe9da7921..b499113ea 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/tasker/task/TaskerTask.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/tasker/task/TaskerTask.java @@ -54,7 +54,7 @@ public class TaskerTask implements Runnable { } } } catch (NoTaskDefinedException e) { - TaskerUtil.noTaskDefinedInformation(); + TaskerUtil.noTaskDefinedInformation().show(); } } diff --git a/app/src/main/res/xml/tasker_event_preferences.xml b/app/src/main/res/xml/tasker_event_preferences.xml deleted file mode 100644 index 3b573a1b1..000000000 --- a/app/src/main/res/xml/tasker_event_preferences.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/xml/tasker_events_preferences.xml b/app/src/main/res/xml/tasker_events_preferences.xml deleted file mode 100644 index e87f236ea..000000000 --- a/app/src/main/res/xml/tasker_events_preferences.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - \ No newline at end of file