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.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}.
* <p>
* 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;
}
}

View File

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

View File

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

View File

@ -54,7 +54,7 @@ public class TaskerTask implements Runnable {
}
}
} 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>