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