diff --git a/app/src/androidTest/java/ryey/easer/skills/operation/intent/IntentOperationDataTest.java b/app/src/androidTest/java/ryey/easer/skills/operation/intent/IntentOperationDataTest.java index 9e3d9e850..1de7924df 100644 --- a/app/src/androidTest/java/ryey/easer/skills/operation/intent/IntentOperationDataTest.java +++ b/app/src/androidTest/java/ryey/easer/skills/operation/intent/IntentOperationDataTest.java @@ -19,6 +19,8 @@ package ryey.easer.skills.operation.intent; +import static org.junit.Assert.assertEquals; + import android.os.Parcel; import org.junit.Test; @@ -27,21 +29,57 @@ import ryey.easer.plugin.PluginDataFormat; import ryey.easer.skills.TestHelper; -import static org.junit.Assert.assertEquals; - public class IntentOperationDataTest { @Test - public void testParcel() { - IntentOperationData dummyData = new IntentOperationDataFactory().dummyData(); + public void testParcelActivity() { + IntentOperationData dummyData = new ActivityOperationDataFactory().dummyData(); + Parcel parcel = TestHelper.writeToParcel(dummyData); + IntentOperationData parceledData = IntentOperationData.CREATOR.createFromParcel(parcel); + assertEquals(dummyData, parceledData); + } + + @Test + public void testSerializeActivity() throws Exception { + ActivityOperationDataFactory factory = new ActivityOperationDataFactory(); + IntentOperationData dummyData = factory.dummyData(); + for (PluginDataFormat format : PluginDataFormat.values()) { + String serialized_data = dummyData.serialize(format); + IntentOperationData parsed_data = factory.parse(serialized_data, format, C.VERSION_CURRENT); + assertEquals(dummyData, parsed_data); + } + } + + @Test + public void testParcelBroadcast() { + IntentOperationData dummyData = new BroadcastOperationDataFactory().dummyData(); + Parcel parcel = TestHelper.writeToParcel(dummyData); + IntentOperationData parceledData = IntentOperationData.CREATOR.createFromParcel(parcel); + assertEquals(dummyData, parceledData); + } + + @Test + public void testSerializeBroadcast() throws Exception { + BroadcastOperationDataFactory factory = new BroadcastOperationDataFactory(); + IntentOperationData dummyData = factory.dummyData(); + for (PluginDataFormat format : PluginDataFormat.values()) { + String serialized_data = dummyData.serialize(format); + IntentOperationData parsed_data = factory.parse(serialized_data, format, C.VERSION_CURRENT); + assertEquals(dummyData, parsed_data); + } + } + + @Test + public void testParcelService() { + IntentOperationData dummyData = new ServiceOperationDataFactory().dummyData(); Parcel parcel = TestHelper.writeToParcel(dummyData); IntentOperationData parceledData = IntentOperationData.CREATOR.createFromParcel(parcel); assertEquals(dummyData, parceledData); } @Test - public void testSerialize() throws Exception { - IntentOperationDataFactory factory = new IntentOperationDataFactory(); + public void testSerializeService() throws Exception { + ServiceOperationDataFactory factory = new ServiceOperationDataFactory(); IntentOperationData dummyData = factory.dummyData(); for (PluginDataFormat format : PluginDataFormat.values()) { String serialized_data = dummyData.serialize(format); diff --git a/app/src/main/java/ryey/easer/skills/LocalSkillRegistry.java b/app/src/main/java/ryey/easer/skills/LocalSkillRegistry.java index 25ca7d660..9c10fcef3 100644 --- a/app/src/main/java/ryey/easer/skills/LocalSkillRegistry.java +++ b/app/src/main/java/ryey/easer/skills/LocalSkillRegistry.java @@ -58,14 +58,13 @@ import ryey.easer.skills.operation.bluetooth.BluetoothOperationSkill; import ryey.easer.skills.operation.bluetooth_connect.BluetoothConnectOperationSkill; import ryey.easer.skills.operation.brightness.BrightnessOperationSkill; -import ryey.easer.skills.operation.intent.IntentOperationSkill; import ryey.easer.skills.operation.cellular.CellularOperationSkill; import ryey.easer.skills.operation.command.CommandOperationSkill; import ryey.easer.skills.operation.hotspot.HotspotOperationSkill; import ryey.easer.skills.operation.http_request.HttpRequestOperationSkill; -import ryey.easer.skills.operation.intent.operations.ActivityOperationSkill; -import ryey.easer.skills.operation.intent.operations.BroadcastOperationSkill; -import ryey.easer.skills.operation.intent.operations.ServiceOperationSkill; +import ryey.easer.skills.operation.intent.ActivityOperationSkill; +import ryey.easer.skills.operation.intent.BroadcastOperationSkill; +import ryey.easer.skills.operation.intent.ServiceOperationSkill; import ryey.easer.skills.operation.launch_app.LaunchAppOperationSkill; import ryey.easer.skills.operation.media_control.MediaControlOperationSkill; import ryey.easer.skills.operation.network_transmission.NetworkTransmissionOperationSkill; diff --git a/app/src/main/java/ryey/easer/skills/operation/intent/ActivityLoader.java b/app/src/main/java/ryey/easer/skills/operation/intent/ActivityLoader.java new file mode 100644 index 000000000..02da62449 --- /dev/null +++ b/app/src/main/java/ryey/easer/skills/operation/intent/ActivityLoader.java @@ -0,0 +1,18 @@ +package ryey.easer.skills.operation.intent; + +import android.content.Context; + +import androidx.annotation.NonNull; + +public class ActivityLoader extends IntentLoader { + + public ActivityLoader(@NonNull Context context) { + super(context); + } + + @Override + public void _load(@NonNull ActivityOperationData data, @NonNull OnResultCallback callback) { + context.startActivity(this.getIntent(data)); + callback.onResult(true); + } +} diff --git a/app/src/main/java/ryey/easer/skills/operation/intent/ActivityOperationData.java b/app/src/main/java/ryey/easer/skills/operation/intent/ActivityOperationData.java new file mode 100644 index 000000000..56eeae23b --- /dev/null +++ b/app/src/main/java/ryey/easer/skills/operation/intent/ActivityOperationData.java @@ -0,0 +1,24 @@ +package ryey.easer.skills.operation.intent; + +import androidx.annotation.NonNull; + +import ryey.easer.commons.local_skill.IllegalStorageDataException; +import ryey.easer.commons.local_skill.dynamics.SolidDynamicsAssignment; +import ryey.easer.commons.local_skill.operationskill.OperationData; +import ryey.easer.plugin.PluginDataFormat; + +public class ActivityOperationData extends IntentOperationData { + ActivityOperationData(IntentData data) { + super(data); + } + + public ActivityOperationData(@NonNull String data, @NonNull PluginDataFormat format, int version) throws IllegalStorageDataException { + super(data, format, version); + } + + @NonNull + @Override + public OperationData applyDynamics(SolidDynamicsAssignment dynamicsAssignment) { + return new ActivityOperationData(((IntentOperationData) super.applyDynamics(dynamicsAssignment)).data); + } +} diff --git a/app/src/main/java/ryey/easer/skills/operation/intent/ActivityOperationDataFactory.java b/app/src/main/java/ryey/easer/skills/operation/intent/ActivityOperationDataFactory.java new file mode 100644 index 000000000..1a2582cb0 --- /dev/null +++ b/app/src/main/java/ryey/easer/skills/operation/intent/ActivityOperationDataFactory.java @@ -0,0 +1,27 @@ +package ryey.easer.skills.operation.intent; + +import androidx.annotation.NonNull; + +import ryey.easer.commons.local_skill.IllegalStorageDataException; +import ryey.easer.commons.local_skill.operationskill.OperationDataFactory; +import ryey.easer.plugin.PluginDataFormat; + +public class ActivityOperationDataFactory implements OperationDataFactory { + @NonNull + @Override + public Class dataClass() { + return ActivityOperationData.class; + } + + @NonNull + @Override + public ActivityOperationData dummyData() { + return new ActivityOperationData(IntentOperationDataUtil.getDummyIntentData()); + } + + @NonNull + @Override + public ActivityOperationData parse(@NonNull String data, @NonNull PluginDataFormat format, int version) throws IllegalStorageDataException { + return new ActivityOperationData(data, format, version); + } +} diff --git a/app/src/main/java/ryey/easer/skills/operation/intent/operations/ActivityOperationSkill.java b/app/src/main/java/ryey/easer/skills/operation/intent/ActivityOperationSkill.java similarity index 51% rename from app/src/main/java/ryey/easer/skills/operation/intent/operations/ActivityOperationSkill.java rename to app/src/main/java/ryey/easer/skills/operation/intent/ActivityOperationSkill.java index db8b430be..cf56d89c5 100644 --- a/app/src/main/java/ryey/easer/skills/operation/intent/operations/ActivityOperationSkill.java +++ b/app/src/main/java/ryey/easer/skills/operation/intent/ActivityOperationSkill.java @@ -1,4 +1,4 @@ -package ryey.easer.skills.operation.intent.operations; +package ryey.easer.skills.operation.intent; import android.content.Context; @@ -6,12 +6,10 @@ import ryey.easer.R; import ryey.easer.commons.local_skill.SkillView; +import ryey.easer.commons.local_skill.operationskill.OperationDataFactory; import ryey.easer.skills.operation.OperationLoader; -import ryey.easer.skills.operation.intent.IntentOperationData; -import ryey.easer.skills.operation.intent.IntentOperationSkill; -import ryey.easer.skills.operation.intent.IntentSkillViewFragment; -public class ActivityOperationSkill extends IntentOperationSkill { +public class ActivityOperationSkill extends IntentOperationSkill { @NonNull @Override public String id() { @@ -26,17 +24,19 @@ public int name() { @NonNull @Override - public OperationLoader loader(@NonNull Context context) { + public OperationLoader loader(@NonNull Context context) { return new ActivityLoader(context); } @NonNull @Override - public SkillView view() { - return new DummyIntentSkillViewFragment(); + public OperationDataFactory dataFactory() { + return new ActivityOperationDataFactory(); } - public static class DummyIntentSkillViewFragment extends IntentSkillViewFragment { - + @NonNull + @Override + public SkillView view() { + return new ActivitySkillViewFragment(); } } diff --git a/app/src/main/java/ryey/easer/skills/operation/intent/ActivitySkillViewFragment.java b/app/src/main/java/ryey/easer/skills/operation/intent/ActivitySkillViewFragment.java new file mode 100644 index 000000000..b4e1f8ca3 --- /dev/null +++ b/app/src/main/java/ryey/easer/skills/operation/intent/ActivitySkillViewFragment.java @@ -0,0 +1,13 @@ +package ryey.easer.skills.operation.intent; + +import androidx.annotation.NonNull; + +import ryey.easer.commons.local_skill.InvalidDataInputException; + +public class ActivitySkillViewFragment extends IntentSkillViewFragment { + @NonNull + @Override + public ActivityOperationData getData() throws InvalidDataInputException { + return new ActivityOperationData(super.getIntentData()); + } +} diff --git a/app/src/main/java/ryey/easer/skills/operation/intent/operations/BroadcastLoader.java b/app/src/main/java/ryey/easer/skills/operation/intent/BroadcastLoader.java similarity index 74% rename from app/src/main/java/ryey/easer/skills/operation/intent/operations/BroadcastLoader.java rename to app/src/main/java/ryey/easer/skills/operation/intent/BroadcastLoader.java index 80b6f6d1d..52b862a13 100644 --- a/app/src/main/java/ryey/easer/skills/operation/intent/operations/BroadcastLoader.java +++ b/app/src/main/java/ryey/easer/skills/operation/intent/BroadcastLoader.java @@ -17,24 +17,21 @@ * along with Easer. If not, see . */ -package ryey.easer.skills.operation.intent.operations; +package ryey.easer.skills.operation.intent; import android.content.Context; import androidx.annotation.NonNull; import ryey.easer.commons.local_skill.ValidData; -import ryey.easer.skills.operation.intent.IntentLoader; -import ryey.easer.skills.operation.intent.IntentOperationData; -public class BroadcastLoader extends IntentLoader { +public class BroadcastLoader extends IntentLoader { public BroadcastLoader(Context context) { super(context); } @Override - public void _load(@ValidData @NonNull IntentOperationData data, @NonNull OnResultCallback callback) { - + public void _load(@ValidData @NonNull BroadcastOperationData data, @NonNull OnResultCallback callback) { context.sendBroadcast(this.getIntent(data)); callback.onResult(true); } diff --git a/app/src/main/java/ryey/easer/skills/operation/intent/BroadcastOperationData.java b/app/src/main/java/ryey/easer/skills/operation/intent/BroadcastOperationData.java new file mode 100644 index 000000000..65f9c7b02 --- /dev/null +++ b/app/src/main/java/ryey/easer/skills/operation/intent/BroadcastOperationData.java @@ -0,0 +1,24 @@ +package ryey.easer.skills.operation.intent; + +import androidx.annotation.NonNull; + +import ryey.easer.commons.local_skill.IllegalStorageDataException; +import ryey.easer.commons.local_skill.dynamics.SolidDynamicsAssignment; +import ryey.easer.commons.local_skill.operationskill.OperationData; +import ryey.easer.plugin.PluginDataFormat; + +public class BroadcastOperationData extends IntentOperationData { + BroadcastOperationData(IntentData data) { + super(data); + } + + public BroadcastOperationData(@NonNull String data, @NonNull PluginDataFormat format, int version) throws IllegalStorageDataException { + super(data, format, version); + } + + @NonNull + @Override + public OperationData applyDynamics(SolidDynamicsAssignment dynamicsAssignment) { + return new BroadcastOperationData(((IntentOperationData) super.applyDynamics(dynamicsAssignment)).data); + } +} diff --git a/app/src/main/java/ryey/easer/skills/operation/intent/BroadcastOperationDataFactory.java b/app/src/main/java/ryey/easer/skills/operation/intent/BroadcastOperationDataFactory.java new file mode 100644 index 000000000..195575b98 --- /dev/null +++ b/app/src/main/java/ryey/easer/skills/operation/intent/BroadcastOperationDataFactory.java @@ -0,0 +1,28 @@ +package ryey.easer.skills.operation.intent; + +import androidx.annotation.NonNull; + +import ryey.easer.commons.local_skill.IllegalStorageDataException; +import ryey.easer.commons.local_skill.operationskill.OperationDataFactory; +import ryey.easer.plugin.PluginDataFormat; + +public class BroadcastOperationDataFactory implements OperationDataFactory { + + @NonNull + @Override + public Class dataClass() { + return BroadcastOperationData.class; + } + + @NonNull + @Override + public BroadcastOperationData dummyData() { + return new BroadcastOperationData(IntentOperationDataUtil.getDummyIntentData()); + } + + @NonNull + @Override + public BroadcastOperationData parse(@NonNull String data, @NonNull PluginDataFormat format, int version) throws IllegalStorageDataException { + return new BroadcastOperationData(data, format, version); + } +} diff --git a/app/src/main/java/ryey/easer/skills/operation/intent/operations/BroadcastOperationSkill.java b/app/src/main/java/ryey/easer/skills/operation/intent/BroadcastOperationSkill.java similarity index 51% rename from app/src/main/java/ryey/easer/skills/operation/intent/operations/BroadcastOperationSkill.java rename to app/src/main/java/ryey/easer/skills/operation/intent/BroadcastOperationSkill.java index d15f78b6d..5f8f06c3a 100644 --- a/app/src/main/java/ryey/easer/skills/operation/intent/operations/BroadcastOperationSkill.java +++ b/app/src/main/java/ryey/easer/skills/operation/intent/BroadcastOperationSkill.java @@ -1,4 +1,4 @@ -package ryey.easer.skills.operation.intent.operations; +package ryey.easer.skills.operation.intent; import android.content.Context; @@ -6,12 +6,10 @@ import ryey.easer.R; import ryey.easer.commons.local_skill.SkillView; +import ryey.easer.commons.local_skill.operationskill.OperationDataFactory; import ryey.easer.skills.operation.OperationLoader; -import ryey.easer.skills.operation.intent.IntentOperationData; -import ryey.easer.skills.operation.intent.IntentOperationSkill; -import ryey.easer.skills.operation.intent.IntentSkillViewFragment; -public class BroadcastOperationSkill extends IntentOperationSkill { +public class BroadcastOperationSkill extends IntentOperationSkill { @NonNull @Override public String id() { @@ -26,18 +24,20 @@ public int name() { @NonNull @Override - public OperationLoader loader(@NonNull Context context) { + public OperationLoader loader(@NonNull Context context) { return new BroadcastLoader(context); } @NonNull @Override - public SkillView view() { - return new DummyIntentSkillViewFragment(); + public OperationDataFactory dataFactory() { + return new BroadcastOperationDataFactory(); } - public static class DummyIntentSkillViewFragment extends IntentSkillViewFragment - { - + @NonNull + @Override + public SkillView view() { + return new BroadcastSkillViewFragment(); } + } diff --git a/app/src/main/java/ryey/easer/skills/operation/intent/BroadcastSkillViewFragment.java b/app/src/main/java/ryey/easer/skills/operation/intent/BroadcastSkillViewFragment.java new file mode 100644 index 000000000..0ab9370b1 --- /dev/null +++ b/app/src/main/java/ryey/easer/skills/operation/intent/BroadcastSkillViewFragment.java @@ -0,0 +1,13 @@ +package ryey.easer.skills.operation.intent; + +import androidx.annotation.NonNull; + +import ryey.easer.commons.local_skill.InvalidDataInputException; + +public class BroadcastSkillViewFragment extends IntentSkillViewFragment { + @NonNull + @Override + public BroadcastOperationData getData() throws InvalidDataInputException { + return new BroadcastOperationData(super.getIntentData()); + } +} diff --git a/app/src/main/java/ryey/easer/skills/operation/intent/IntentOperationData.java b/app/src/main/java/ryey/easer/skills/operation/intent/IntentOperationData.java index 9f5b04bd8..1dae6e23c 100644 --- a/app/src/main/java/ryey/easer/skills/operation/intent/IntentOperationData.java +++ b/app/src/main/java/ryey/easer/skills/operation/intent/IntentOperationData.java @@ -33,13 +33,13 @@ public class IntentOperationData implements OperationData { private static final String DATA = "data"; private static final String EXTRAS = "extras"; - IntentData data = new IntentData(); + protected IntentData data = new IntentData(); - IntentOperationData(IntentData data) { + protected IntentOperationData(IntentData data) { this.data = data; } - IntentOperationData(@NonNull String data, @NonNull PluginDataFormat format, int version) throws IllegalStorageDataException { + protected IntentOperationData(@NonNull String data, @NonNull PluginDataFormat format, int version) throws IllegalStorageDataException { parse(data, format, version); } diff --git a/app/src/main/java/ryey/easer/skills/operation/intent/IntentOperationDataFactory.java b/app/src/main/java/ryey/easer/skills/operation/intent/IntentOperationDataFactory.java deleted file mode 100644 index f25e27b3d..000000000 --- a/app/src/main/java/ryey/easer/skills/operation/intent/IntentOperationDataFactory.java +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright (c) 2016 - 2019 Rui Zhao - * - * This file is part of Easer. - * - * Easer is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Easer is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Easer. If not, see . - */ - -package ryey.easer.skills.operation.intent; - -import android.net.Uri; - -import androidx.annotation.NonNull; - -import java.util.ArrayList; - -import ryey.easer.commons.local_skill.IllegalStorageDataException; -import ryey.easer.commons.local_skill.ValidData; -import ryey.easer.commons.local_skill.operationskill.OperationDataFactory; -import ryey.easer.plugin.PluginDataFormat; -import ryey.easer.skills.reusable.ExtraItem; -import ryey.easer.skills.reusable.Extras; - -class IntentOperationDataFactory implements OperationDataFactory { - @NonNull - @Override - public Class dataClass() { - return IntentOperationData.class; - } - - @ValidData - @NonNull - @Override - public IntentOperationData dummyData() { - IntentData intentData = new IntentData(); - intentData.action = "testAction"; - intentData.category = new ArrayList<>(); - intentData.category.add("testCategory"); - intentData.type = "myType"; - intentData.data = Uri.parse("myprot://seg1/seg2"); - ArrayList extras = new ArrayList<>(); - ExtraItem extraItem = new ExtraItem("extra_key1", "extra_value1", "string"); - extras.add(extraItem); - intentData.extras = Extras.mayConstruct(extras); - return new IntentOperationData(intentData); - } - - @ValidData - @NonNull - @Override - public IntentOperationData parse(@NonNull String data, @NonNull PluginDataFormat format, int version) throws IllegalStorageDataException { - return new IntentOperationData(data, format, version); - } -} diff --git a/app/src/main/java/ryey/easer/skills/operation/intent/IntentOperationDataUtil.java b/app/src/main/java/ryey/easer/skills/operation/intent/IntentOperationDataUtil.java new file mode 100644 index 000000000..f40e96323 --- /dev/null +++ b/app/src/main/java/ryey/easer/skills/operation/intent/IntentOperationDataUtil.java @@ -0,0 +1,24 @@ +package ryey.easer.skills.operation.intent; + +import android.net.Uri; + +import java.util.ArrayList; + +import ryey.easer.skills.reusable.ExtraItem; +import ryey.easer.skills.reusable.Extras; + +public class IntentOperationDataUtil { + public static IntentData getDummyIntentData() { + IntentData intentData = new IntentData(); + intentData.action = "testAction"; + intentData.category = new ArrayList<>(); + intentData.category.add("testCategory"); + intentData.type = "myType"; + intentData.data = Uri.parse("myprot://seg1/seg2"); + ArrayList extras = new ArrayList<>(); + ExtraItem extraItem = new ExtraItem("extra_key1", "extra_value1", "string"); + extras.add(extraItem); + intentData.extras = Extras.mayConstruct(extras); + return intentData; + } +} diff --git a/app/src/main/java/ryey/easer/skills/operation/intent/IntentOperationSkill.java b/app/src/main/java/ryey/easer/skills/operation/intent/IntentOperationSkill.java index 2a5e8c829..9797810ba 100644 --- a/app/src/main/java/ryey/easer/skills/operation/intent/IntentOperationSkill.java +++ b/app/src/main/java/ryey/easer/skills/operation/intent/IntentOperationSkill.java @@ -32,9 +32,7 @@ import ryey.easer.plugin.operation.Category; -public abstract class IntentOperationSkill implements OperationSkill { - - +public abstract class IntentOperationSkill implements OperationSkill { @Override public boolean isCompatible(@NonNull final Context context) { @@ -66,21 +64,15 @@ public Boolean checkPermissions(@NonNull Context context) { @Override public void requestPermissions(@NonNull Activity activity, int requestCode) { - } @NonNull @Override - public OperationDataFactory dataFactory() { - return new IntentOperationDataFactory(); - - } + public abstract OperationDataFactory dataFactory(); @NonNull @Override - public SkillView view() { - return new IntentSkillViewFragment(); - } + public abstract SkillView view(); } diff --git a/app/src/main/java/ryey/easer/skills/operation/intent/IntentSkillViewFragment.java b/app/src/main/java/ryey/easer/skills/operation/intent/IntentSkillViewFragment.java index 8d70ec9e1..4ccfffbfb 100644 --- a/app/src/main/java/ryey/easer/skills/operation/intent/IntentSkillViewFragment.java +++ b/app/src/main/java/ryey/easer/skills/operation/intent/IntentSkillViewFragment.java @@ -36,7 +36,7 @@ import ryey.easer.skills.SkillViewFragment; import ryey.easer.skills.reusable.EditExtraFragment; -public class IntentSkillViewFragment extends SkillViewFragment { +public abstract class IntentSkillViewFragment extends SkillViewFragment { private EditText m_text_action; private EditText m_text_category; private EditText m_text_type; @@ -57,7 +57,7 @@ public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup c } @Override - protected void _fill(@ValidData @NonNull IntentOperationData data) { + protected void _fill(@ValidData @NonNull T data) { IntentData rdata = data.data; m_text_action.setText(rdata.action); m_text_category.setText(Utils.StringCollectionToString(rdata.category, false)); @@ -70,15 +70,15 @@ protected void _fill(@ValidData @NonNull IntentOperationData data) { @ValidData @NonNull @Override - public IntentOperationData getData() throws InvalidDataInputException { + public abstract T getData() throws InvalidDataInputException; + + protected IntentData getIntentData() { IntentData data = new IntentData(); data.action = m_text_action.getText().toString(); data.category = Utils.stringToStringList(m_text_category.getText().toString()); data.type = m_text_type.getText().toString(); data.data = Uri.parse(m_text_data.getText().toString()); data.extras = editExtraFragment.getExtras(); - IntentOperationData broadcastOperationData = new IntentOperationData(data); - return broadcastOperationData; + return data; } - } diff --git a/app/src/main/java/ryey/easer/skills/operation/intent/ServiceLoader.java b/app/src/main/java/ryey/easer/skills/operation/intent/ServiceLoader.java new file mode 100644 index 000000000..8d7c9ffc0 --- /dev/null +++ b/app/src/main/java/ryey/easer/skills/operation/intent/ServiceLoader.java @@ -0,0 +1,17 @@ +package ryey.easer.skills.operation.intent; + +import android.content.Context; + +import androidx.annotation.NonNull; + +public class ServiceLoader extends IntentLoader { + public ServiceLoader(@NonNull Context context) { + super(context); + } + + @Override + public void _load(@NonNull ServiceOperationData data, @NonNull OnResultCallback callback) { + context.startService(this.getIntent(data)); + callback.onResult(true); + } +} diff --git a/app/src/main/java/ryey/easer/skills/operation/intent/ServiceOperationData.java b/app/src/main/java/ryey/easer/skills/operation/intent/ServiceOperationData.java new file mode 100644 index 000000000..a3ecf4967 --- /dev/null +++ b/app/src/main/java/ryey/easer/skills/operation/intent/ServiceOperationData.java @@ -0,0 +1,24 @@ +package ryey.easer.skills.operation.intent; + +import androidx.annotation.NonNull; + +import ryey.easer.commons.local_skill.IllegalStorageDataException; +import ryey.easer.commons.local_skill.dynamics.SolidDynamicsAssignment; +import ryey.easer.commons.local_skill.operationskill.OperationData; +import ryey.easer.plugin.PluginDataFormat; + +public class ServiceOperationData extends IntentOperationData { + ServiceOperationData(IntentData data) { + super(data); + } + + public ServiceOperationData(@NonNull String data, @NonNull PluginDataFormat format, int version) throws IllegalStorageDataException { + super(data, format, version); + } + + @NonNull + @Override + public OperationData applyDynamics(SolidDynamicsAssignment dynamicsAssignment) { + return new ServiceOperationData(((IntentOperationData) super.applyDynamics(dynamicsAssignment)).data); + } +} diff --git a/app/src/main/java/ryey/easer/skills/operation/intent/ServiceOperationDataFactory.java b/app/src/main/java/ryey/easer/skills/operation/intent/ServiceOperationDataFactory.java new file mode 100644 index 000000000..9cb63e672 --- /dev/null +++ b/app/src/main/java/ryey/easer/skills/operation/intent/ServiceOperationDataFactory.java @@ -0,0 +1,27 @@ +package ryey.easer.skills.operation.intent; + +import androidx.annotation.NonNull; + +import ryey.easer.commons.local_skill.IllegalStorageDataException; +import ryey.easer.commons.local_skill.operationskill.OperationDataFactory; +import ryey.easer.plugin.PluginDataFormat; + +public class ServiceOperationDataFactory implements OperationDataFactory { + @NonNull + @Override + public Class dataClass() { + return ServiceOperationData.class; + } + + @NonNull + @Override + public ServiceOperationData dummyData() { + return new ServiceOperationData(IntentOperationDataUtil.getDummyIntentData()); + } + + @NonNull + @Override + public ServiceOperationData parse(@NonNull String data, @NonNull PluginDataFormat format, int version) throws IllegalStorageDataException { + return new ServiceOperationData(data, format, version); + } +} diff --git a/app/src/main/java/ryey/easer/skills/operation/intent/ServiceOperationSkill.java b/app/src/main/java/ryey/easer/skills/operation/intent/ServiceOperationSkill.java new file mode 100644 index 000000000..9c0437cf7 --- /dev/null +++ b/app/src/main/java/ryey/easer/skills/operation/intent/ServiceOperationSkill.java @@ -0,0 +1,42 @@ +package ryey.easer.skills.operation.intent; + +import android.content.Context; + +import androidx.annotation.NonNull; + +import ryey.easer.R; +import ryey.easer.commons.local_skill.SkillView; +import ryey.easer.commons.local_skill.operationskill.OperationDataFactory; +import ryey.easer.skills.operation.OperationLoader; + +public class ServiceOperationSkill extends IntentOperationSkill { + @NonNull + @Override + public String id() { + return "start_service"; + } + + @Override + public int name() { + return R.string.operation_start_service; + } + + + @NonNull + @Override + public OperationLoader loader(@NonNull Context context) { + return new ServiceLoader(context); + } + + @NonNull + @Override + public OperationDataFactory dataFactory() { + return new ServiceOperationDataFactory(); + } + + @NonNull + @Override + public SkillView view() { + return new ServiceSkillViewFragment(); + } +} diff --git a/app/src/main/java/ryey/easer/skills/operation/intent/ServiceSkillViewFragment.java b/app/src/main/java/ryey/easer/skills/operation/intent/ServiceSkillViewFragment.java new file mode 100644 index 000000000..bd59f7f99 --- /dev/null +++ b/app/src/main/java/ryey/easer/skills/operation/intent/ServiceSkillViewFragment.java @@ -0,0 +1,13 @@ +package ryey.easer.skills.operation.intent; + +import androidx.annotation.NonNull; + +import ryey.easer.commons.local_skill.InvalidDataInputException; + +public class ServiceSkillViewFragment extends IntentSkillViewFragment { + @NonNull + @Override + public ServiceOperationData getData() throws InvalidDataInputException { + return new ServiceOperationData(super.getIntentData()); + } +} diff --git a/app/src/main/java/ryey/easer/skills/operation/intent/operations/ActivityLoader.java b/app/src/main/java/ryey/easer/skills/operation/intent/operations/ActivityLoader.java deleted file mode 100644 index 3fcbb87dc..000000000 --- a/app/src/main/java/ryey/easer/skills/operation/intent/operations/ActivityLoader.java +++ /dev/null @@ -1,22 +0,0 @@ -package ryey.easer.skills.operation.intent.operations; - -import android.content.Context; - -import androidx.annotation.NonNull; - -import ryey.easer.skills.operation.intent.IntentLoader; -import ryey.easer.skills.operation.intent.IntentOperationData; - -public class ActivityLoader extends IntentLoader { - - public ActivityLoader(@NonNull Context context) { - super(context); - } - - @Override - public void _load(@NonNull IntentOperationData data, @NonNull OnResultCallback callback) { - - context.startActivity(this.getIntent(data)); - callback.onResult(true); - } -} diff --git a/app/src/main/java/ryey/easer/skills/operation/intent/operations/ServiceLoader.java b/app/src/main/java/ryey/easer/skills/operation/intent/operations/ServiceLoader.java deleted file mode 100644 index 593c17217..000000000 --- a/app/src/main/java/ryey/easer/skills/operation/intent/operations/ServiceLoader.java +++ /dev/null @@ -1,20 +0,0 @@ -package ryey.easer.skills.operation.intent.operations; - -import android.content.Context; - -import androidx.annotation.NonNull; - -import ryey.easer.skills.operation.intent.IntentLoader; -import ryey.easer.skills.operation.intent.IntentOperationData; - -public class ServiceLoader extends IntentLoader { - public ServiceLoader(@NonNull Context context) { - super(context); - } - - @Override - public void _load(@NonNull IntentOperationData data, @NonNull OnResultCallback callback) { - context.startService(this.getIntent(data)); - callback.onResult(true); - } -} diff --git a/app/src/main/java/ryey/easer/skills/operation/intent/operations/ServiceOperationSkill.java b/app/src/main/java/ryey/easer/skills/operation/intent/operations/ServiceOperationSkill.java deleted file mode 100644 index 8e7922d6f..000000000 --- a/app/src/main/java/ryey/easer/skills/operation/intent/operations/ServiceOperationSkill.java +++ /dev/null @@ -1,43 +0,0 @@ -package ryey.easer.skills.operation.intent.operations; - -import android.content.Context; - -import androidx.annotation.NonNull; - -import ryey.easer.R; -import ryey.easer.commons.local_skill.SkillView; -import ryey.easer.skills.operation.OperationLoader; -import ryey.easer.skills.operation.intent.IntentOperationData; -import ryey.easer.skills.operation.intent.IntentOperationSkill; -import ryey.easer.skills.operation.intent.IntentSkillViewFragment; - -public class ServiceOperationSkill extends IntentOperationSkill { - @NonNull - @Override - public String id() { - return "start_service"; - } - - @Override - public int name() { - return R.string.operation_start_service; - } - - - @NonNull - @Override - public OperationLoader loader(@NonNull Context context) { - return new ServiceLoader(context); - } - - @NonNull - @Override - public SkillView view() { - return new DummyIntentSkillViewFragment(); - } - - public static class DummyIntentSkillViewFragment extends IntentSkillViewFragment - { - - } -}