From 8a01668048f2a261dd0ede2cc63db6862c6217b8 Mon Sep 17 00:00:00 2001 From: Roy Ben-Shabat Date: Sun, 18 Nov 2018 14:34:27 +0200 Subject: Working on android app. --- .../ColorCapture/app/src/main/cpp/native-lib.cpp | 12 +++++++- .../colorcapture/dagger/ApplicationComponent.java | 3 ++ .../colorcapture/dagger/ViewModelsModule.java | 13 +++++++-- .../com/twine/colorcapture/mvvm/ViewModelBase.java | 1 - .../navigation/AndroidNavigationProvider.java | 32 +++++++++++----------- .../navigation/INavigationProvider.java | 8 +++--- .../colorcapture/navigation/NavigationView.java | 1 + .../colorcapture/views/home/HomeFragment.java | 32 ++++++++++++++++++++++ .../colorcapture/views/home/HomeFragmentVM.java | 15 ++++++++++ .../colorcapture/views/home/IHomeFragment.java | 8 ++++++ .../views/loading/LoadingFragmentVM.java | 24 +++++++++++++++- .../colorcapture/views/main/MainActivity.java | 29 ++++++++++++++++++-- .../app/src/main/res/layout/fragment_home.xml | 31 +++++++++++++++++++++ .../app/src/main/res/layout/fragment_loading.xml | 12 ++++++++ .../Android_Studio/ColorCapture/settings.gradle | 2 +- 15 files changed, 195 insertions(+), 28 deletions(-) create mode 100644 Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/home/HomeFragment.java create mode 100644 Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/home/HomeFragmentVM.java create mode 100644 Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/home/IHomeFragment.java create mode 100644 Software/Android_Studio/ColorCapture/app/src/main/res/layout/fragment_home.xml (limited to 'Software/Android_Studio') diff --git a/Software/Android_Studio/ColorCapture/app/src/main/cpp/native-lib.cpp b/Software/Android_Studio/ColorCapture/app/src/main/cpp/native-lib.cpp index 760cfec13..6da71fd81 100644 --- a/Software/Android_Studio/ColorCapture/app/src/main/cpp/native-lib.cpp +++ b/Software/Android_Studio/ColorCapture/app/src/main/cpp/native-lib.cpp @@ -1,10 +1,20 @@ #include #include +#include +#include +#include +#include + +using namespace cv; extern "C" JNIEXPORT jstring JNICALL Java_com_twine_colorcapture_views_main_MainActivity_stringFromJNI( JNIEnv *env, - jobject /* this */) { + jobject /* this */) +{ + ColorCaptureLib capture; + Mat rgb; + std::string hello = "Hello from C++"; return env->NewStringUTF(hello.c_str()); } diff --git a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/dagger/ApplicationComponent.java b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/dagger/ApplicationComponent.java index 23a543fe3..1173c8751 100644 --- a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/dagger/ApplicationComponent.java +++ b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/dagger/ApplicationComponent.java @@ -1,5 +1,6 @@ package com.twine.colorcapture.dagger; +import com.twine.colorcapture.views.home.HomeFragment; import com.twine.colorcapture.views.loading.LoadingFragment; import com.twine.colorcapture.views.main.MainActivity; import com.twine.colorcapture.views.main.MainActivityVM; @@ -20,6 +21,8 @@ public interface ApplicationComponent void inject(MainActivity view); void inject(LoadingFragment view); + + void inject(HomeFragment view); MainActivityVM provideMainActivityVM(); } diff --git a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/dagger/ViewModelsModule.java b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/dagger/ViewModelsModule.java index fbf1eaf7c..41786b2a5 100644 --- a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/dagger/ViewModelsModule.java +++ b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/dagger/ViewModelsModule.java @@ -3,8 +3,10 @@ package com.twine.colorcapture.dagger; import com.squareup.otto.Bus; import com.twine.colorcapture.navigation.INavigationProvider; import com.twine.colorcapture.notification.INotificationProvider; +import com.twine.colorcapture.views.home.HomeFragmentVM; import com.twine.colorcapture.views.loading.LoadingFragmentVM; import com.twine.colorcapture.views.main.MainActivityVM; + import javax.inject.Singleton; import dagger.Module; @@ -27,8 +29,15 @@ public class ViewModelsModule @Provides @Singleton - public LoadingFragmentVM provideLoginFragmentVM(Bus eventBus, INotificationProvider notificationProvider) + public LoadingFragmentVM provideLoadingFragmentVM(Bus eventBus, INotificationProvider notificationProvider, INavigationProvider navigationProvider) + { + return new LoadingFragmentVM(eventBus, notificationProvider, navigationProvider); + } + + @Provides + @Singleton + public HomeFragmentVM provideHomeFragmentVM(Bus eventBus, INotificationProvider notificationProvider, INavigationProvider navigationProvider) { - return new LoadingFragmentVM(eventBus, notificationProvider); + return new HomeFragmentVM(); } } diff --git a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/mvvm/ViewModelBase.java b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/mvvm/ViewModelBase.java index 7e2edbb97..7edead907 100644 --- a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/mvvm/ViewModelBase.java +++ b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/mvvm/ViewModelBase.java @@ -11,7 +11,6 @@ import java.lang.reflect.Field; */ public abstract class ViewModelBase extends ExtendedObject { - /** * The View. */ diff --git a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/navigation/AndroidNavigationProvider.java b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/navigation/AndroidNavigationProvider.java index 71d6ba18f..68a6a3068 100644 --- a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/navigation/AndroidNavigationProvider.java +++ b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/navigation/AndroidNavigationProvider.java @@ -18,6 +18,7 @@ public class AndroidNavigationProvider extends ExtendedObject implements INaviga private FragmentBase currentFragment; private int fragment_container; private String basePackagePath; + private boolean isFirst = true; @Override public void registerNavigationActivity(AppCompatActivity activity, int fragmentContainerId, String basePackagePath) @@ -29,25 +30,25 @@ public class AndroidNavigationProvider extends ExtendedObject implements INaviga @Override - public void navigateTo(Enum fragmentValue) + public void navigateTo(Enum fragmentValue, boolean addToHistory) { - navigateTo(fragmentValue.name()); + navigateTo(fragmentValue.name(),addToHistory); } @Override - public void navigateTo(Enum fragmentValue, IAction1 onCreateListener) + public void navigateTo(Enum fragmentValue, IAction1 onCreateListener, boolean addToHistory) { - navigateTo(fragmentValue.name(), onCreateListener); + navigateTo(fragmentValue.name(), onCreateListener,addToHistory); } @Override - public void navigateTo(String fragmentName) + public void navigateTo(String fragmentName, boolean addToHistory) { - navigateTo(fragmentName, null); + navigateTo(fragmentName, null,addToHistory); } @Override - public void navigateTo(String fragmentName, IAction1 onCreateListener) + public void navigateTo(String fragmentName, IAction1 onCreateListener, boolean addToHistory) { if (activity == null) { @@ -61,24 +62,21 @@ public class AndroidNavigationProvider extends ExtendedObject implements INaviga FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); FragmentBase fragment; - boolean is_first = false; - fragment = (FragmentBase) fragmentManager.findFragmentByTag(fragmentName); if (fragment == null) { - is_first = true; - try { fragment = (FragmentBase) Class.forName(fragmentName).newInstance(); - } catch (Exception ex) + } + catch (Exception ex) { //logManager.log(ex,"Fragment " + fragmentName + " not found."); return; } } - + // Slide enterSlide = new Slide(); // enterSlide.setSlideEdge(Gravity.END); // enterSlide.setDuration(300); @@ -106,20 +104,22 @@ public class AndroidNavigationProvider extends ExtendedObject implements INaviga fragment.setOnCreateListener(onCreateListener); - if (!is_first) + if (!isFirst) { fragmentTransaction.setCustomAnimations(R.animator.slide_in_left, R.animator.slide_out_left, R.animator.slide_out_right, R.animator.slide_in_right); } + isFirst = false; + fragmentTransaction.replace(fragment_container, fragment); - if (!is_first) + if (addToHistory) { fragmentTransaction.addToBackStack(fragmentName); } fragmentTransaction.commit(); - + // try // { // //noinspection ConstantConditions diff --git a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/navigation/INavigationProvider.java b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/navigation/INavigationProvider.java index 4d787f102..a6567d576 100644 --- a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/navigation/INavigationProvider.java +++ b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/navigation/INavigationProvider.java @@ -24,7 +24,7 @@ public interface INavigationProvider * * @param fragmentName the fragment name */ - void navigateTo(String fragmentName); + void navigateTo(String fragmentName, boolean addToHistory); /** * Navigate to to the specified fragment name. @@ -32,14 +32,14 @@ public interface INavigationProvider * @param fragmentName the fragment name * @param onCreateListener the on create listener */ - void navigateTo(String fragmentName, IAction1 onCreateListener); + void navigateTo(String fragmentName, IAction1 onCreateListener, boolean addToHistory); /** * Navigate to to the specified enum value fragment name. * * @param fragmentValue the fragment value */ - void navigateTo(Enum fragmentValue); + void navigateTo(Enum fragmentValue, boolean addToHistory); /** * Navigate to to the specified enum value fragment name. @@ -47,5 +47,5 @@ public interface INavigationProvider * @param fragmentValue the fragment value * @param onCreateListener the on create listener */ - void navigateTo(Enum fragmentValue, IAction1 onCreateListener); + void navigateTo(Enum fragmentValue, IAction1 onCreateListener, boolean addToHistory); } diff --git a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/navigation/NavigationView.java b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/navigation/NavigationView.java index 6e875e7c1..ed9cce00f 100644 --- a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/navigation/NavigationView.java +++ b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/navigation/NavigationView.java @@ -3,4 +3,5 @@ package com.twine.colorcapture.navigation; public enum NavigationView { Loading, + Home, } diff --git a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/home/HomeFragment.java b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/home/HomeFragment.java new file mode 100644 index 000000000..d0294533e --- /dev/null +++ b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/home/HomeFragment.java @@ -0,0 +1,32 @@ +package com.twine.colorcapture.views.home; +import com.twine.colorcapture.App; +import com.twine.colorcapture.R; +import com.twine.colorcapture.databinding.FragmentHomeBinding; +import com.twine.colorcapture.mvvm.FragmentBase; + +public class HomeFragment extends FragmentBase implements IHomeFragment +{ + + public HomeFragment() + { + // Required empty public constructor + } + + @Override + protected int getLayoutId() + { + return R.layout.fragment_home; + } + + @Override + protected void inject() + { + App.getComponent().inject(this); + } + + @Override + public String getTitle() + { + return "Home"; + } +} diff --git a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/home/HomeFragmentVM.java b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/home/HomeFragmentVM.java new file mode 100644 index 000000000..048ea5265 --- /dev/null +++ b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/home/HomeFragmentVM.java @@ -0,0 +1,15 @@ +package com.twine.colorcapture.views.home; + +import com.twine.colorcapture.mvvm.ViewModelBase; + +import javax.inject.Inject; + +public class HomeFragmentVM extends ViewModelBase +{ + + @Inject + public HomeFragmentVM() + { + + } +} diff --git a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/home/IHomeFragment.java b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/home/IHomeFragment.java new file mode 100644 index 000000000..e4f94c04b --- /dev/null +++ b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/home/IHomeFragment.java @@ -0,0 +1,8 @@ +package com.twine.colorcapture.views.home; + +import com.twine.colorcapture.mvvm.IView; + +public interface IHomeFragment extends IView +{ + +} diff --git a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/loading/LoadingFragmentVM.java b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/loading/LoadingFragmentVM.java index 4884cd07f..fd80e792a 100644 --- a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/loading/LoadingFragmentVM.java +++ b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/loading/LoadingFragmentVM.java @@ -1,15 +1,37 @@ package com.twine.colorcapture.views.loading; +import android.os.Handler; + import com.squareup.otto.Bus; import com.twine.colorcapture.mvvm.ViewModelBase; +import com.twine.colorcapture.navigation.INavigationProvider; +import com.twine.colorcapture.navigation.NavigationView; import com.twine.colorcapture.notification.INotificationProvider; import javax.inject.Inject; public class LoadingFragmentVM extends ViewModelBase { + private INavigationProvider navigationProvider; + @Inject - public LoadingFragmentVM(Bus eventBus, INotificationProvider notificationProvider) { + public LoadingFragmentVM(Bus eventBus, INotificationProvider notificationProvider, INavigationProvider navigationProvider) + { + + this.navigationProvider = navigationProvider; + + } + @Override + protected void onViewAttached(ILoadingFragment view) + { + super.onViewAttached(view); + + new Handler().postDelayed(() -> + { + + navigationProvider.navigateTo(NavigationView.Home, false); + + }, 2000); } } diff --git a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/main/MainActivity.java b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/main/MainActivity.java index 1c6058755..9cebd1526 100644 --- a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/main/MainActivity.java +++ b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/main/MainActivity.java @@ -1,5 +1,7 @@ package com.twine.colorcapture.views.main; +import android.graphics.Color; +import android.support.v4.app.FragmentTransaction; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.TextView; @@ -11,6 +13,8 @@ import com.twine.colorcapture.mvvm.ActivityBase; import com.twine.colorcapture.navigation.INavigationProvider; import com.twine.colorcapture.navigation.NavigationView; +import java.util.ArrayList; + import javax.inject.Inject; public class MainActivity extends ActivityBase implements IMainActivity @@ -34,9 +38,30 @@ public class MainActivity extends ActivityBase elements = new ArrayList<>(); + elements.add(scr1); + elements.add(scr2); + elements.add(scr3); + + PaperOnboardingFragment onboardingFragment = PaperOnboardingFragment.newInstance(elements);*/ - navigationProvider.navigateTo(NavigationView.Loading); +/* FragmentTransaction fragmentTransaction = this.getFragmentManager().beginTransaction(); + fragmentTransaction.add(R.id.fragment_container, onboardingFragment); + fragmentTransaction.commit();*/ + + navigationProvider.registerNavigationActivity(this, R.id.fragment_container, "com.twine.colorcapture.views"); + + navigationProvider.navigateTo(NavigationView.Loading, false); } @Override diff --git a/Software/Android_Studio/ColorCapture/app/src/main/res/layout/fragment_home.xml b/Software/Android_Studio/ColorCapture/app/src/main/res/layout/fragment_home.xml new file mode 100644 index 000000000..b16bd7ebf --- /dev/null +++ b/Software/Android_Studio/ColorCapture/app/src/main/res/layout/fragment_home.xml @@ -0,0 +1,31 @@ + + + + + + + + + + + + diff --git a/Software/Android_Studio/ColorCapture/app/src/main/res/layout/fragment_loading.xml b/Software/Android_Studio/ColorCapture/app/src/main/res/layout/fragment_loading.xml index f3a2e57b8..be083149d 100644 --- a/Software/Android_Studio/ColorCapture/app/src/main/res/layout/fragment_loading.xml +++ b/Software/Android_Studio/ColorCapture/app/src/main/res/layout/fragment_loading.xml @@ -27,5 +27,17 @@ android:text="Loading View" android:textSize="30sp" tools:text="Loading View" /> + + diff --git a/Software/Android_Studio/ColorCapture/settings.gradle b/Software/Android_Studio/ColorCapture/settings.gradle index bdf2d88b9..e7b4def49 100644 --- a/Software/Android_Studio/ColorCapture/settings.gradle +++ b/Software/Android_Studio/ColorCapture/settings.gradle @@ -1 +1 @@ -include ':app', ':core' +include ':app' -- cgit v1.3.1