diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index edb0347..2d97e40 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -9,7 +9,7 @@ android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> - + diff --git a/app/src/main/java/j4ckall/rxflux/App.java b/app/src/main/java/j4ckall/rxflux/App.java new file mode 100644 index 0000000..381edd7 --- /dev/null +++ b/app/src/main/java/j4ckall/rxflux/App.java @@ -0,0 +1,30 @@ +package j4ckall.rxflux; + +import android.app.Application; + +import j4ckall.rxflux.lib.flux.Dispatcher; + +/** + * Application Class + * + * @author matsumoto_k + */ +public class App extends Application { + + private static App instance = null; + private static final Dispatcher dispatcher = new Dispatcher(); + + @Override + public void onCreate() { + super.onCreate(); + instance = this; + } + + public static App get() { + return instance; + } + + public static Dispatcher getDispatcher() { + return dispatcher; + } +} diff --git a/app/src/main/java/j4ckall/rxflux/MainActivity.java b/app/src/main/java/j4ckall/rxflux/MainActivity.java deleted file mode 100644 index 058c091..0000000 --- a/app/src/main/java/j4ckall/rxflux/MainActivity.java +++ /dev/null @@ -1,13 +0,0 @@ -package j4ckall.rxflux; - -import android.support.v7.app.AppCompatActivity; -import android.os.Bundle; - -public class MainActivity extends AppCompatActivity { - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_main); - } -} diff --git a/app/src/main/java/j4ckall/rxflux/ui/MainAction.java b/app/src/main/java/j4ckall/rxflux/ui/MainAction.java new file mode 100644 index 0000000..0345719 --- /dev/null +++ b/app/src/main/java/j4ckall/rxflux/ui/MainAction.java @@ -0,0 +1,14 @@ +package j4ckall.rxflux.ui; + +import j4ckall.rxflux.lib.flux.Action; + +/** + * MainActivityのAction + * + * @author matsumoto_k + */ +public enum MainAction implements Action.Key { + COUNT_UP, + COUNT_DOWN, + INITIALIZE +} diff --git a/app/src/main/java/j4ckall/rxflux/ui/MainActionCreater.java b/app/src/main/java/j4ckall/rxflux/ui/MainActionCreater.java new file mode 100644 index 0000000..53cd302 --- /dev/null +++ b/app/src/main/java/j4ckall/rxflux/ui/MainActionCreater.java @@ -0,0 +1,28 @@ +package j4ckall.rxflux.ui; + +import j4ckall.rxflux.App; +import j4ckall.rxflux.lib.flux.ActionCreater; + +/** + * MainActivityのActionを生成するクラス + * + * @author matsumoto_k + */ +public class MainActionCreater extends ActionCreater { + + public MainActionCreater() { + super(App.getDispatcher()); + } + + public void countUp(int num) { + dispatch(MainAction.COUNT_UP, num); + } + + public void countDown(int num) { + dispatch(MainAction.COUNT_DOWN, num); + } + + public void initialize(int num) { + dispatch(MainAction.INITIALIZE, num); + } +} diff --git a/app/src/main/java/j4ckall/rxflux/ui/MainActivity.java b/app/src/main/java/j4ckall/rxflux/ui/MainActivity.java new file mode 100644 index 0000000..cde3c29 --- /dev/null +++ b/app/src/main/java/j4ckall/rxflux/ui/MainActivity.java @@ -0,0 +1,35 @@ +package j4ckall.rxflux.ui; + +import android.os.Bundle; +import android.support.v7.app.AppCompatActivity; +import android.widget.TextView; + +import j4ckall.rxflux.R; + +public class MainActivity extends AppCompatActivity { + + private MainStore mainStore = new MainStore(); + private MainActionCreater mainActionCreater = new MainActionCreater(); + private TextView countText = null; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_main); + countText = findViewById(R.id.text_count); + + findViewById(R.id.btn_plus).setOnClickListener(__ -> { + mainActionCreater.countUp(1); + }); + + findViewById(R.id.btn_minus).setOnClickListener(__ -> { + mainActionCreater.countDown(1); + }); + + mainStore.observeOnMainThread(action -> { + countText.setText(mainStore.getCount().toString()); + }); + + mainActionCreater.initialize(0); + } +} diff --git a/app/src/main/java/j4ckall/rxflux/ui/MainStore.java b/app/src/main/java/j4ckall/rxflux/ui/MainStore.java new file mode 100644 index 0000000..259e5bb --- /dev/null +++ b/app/src/main/java/j4ckall/rxflux/ui/MainStore.java @@ -0,0 +1,35 @@ +package j4ckall.rxflux.ui; + +import j4ckall.rxflux.App; +import j4ckall.rxflux.lib.flux.Store; + +/** + * MainActivityの状態を保持するクラス + * + * @author matsumoto_k + */ +public class MainStore extends Store { + + private int count; + private boolean initialize = false; + + public MainStore() { + super(App.getDispatcher()); + + on(MainAction.COUNT_UP, action -> { + count += (Integer) action.value; + }); + + on(MainAction.COUNT_DOWN, action -> { + count -= (Integer) action.value; + }); + + on(MainAction.INITIALIZE, action -> { + count = (Integer) action.value; + }); + } + + public Integer getCount() { + return count; + } +} diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index dff2b3f..8d342f8 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -4,7 +4,7 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" - tools:context="j4ckall.rxflux.MainActivity"> + tools:context="j4ckall.rxflux.ui.MainActivity">