aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRoy Ben Shabat <Roy.mail.net@gmail.com>2019-04-10 00:46:55 +0300
committerRoy Ben Shabat <Roy.mail.net@gmail.com>2019-04-10 00:46:55 +0300
commit76e9404d4bc07e59651a7a3093ce0a7eba5372ed (patch)
tree3610530964fda890707839f5d840a9edd206d838
parentaa9ea3afea21a3b95ef4f725fc2424d0ac367c7d (diff)
downloadTango-76e9404d4bc07e59651a7a3093ce0a7eba5372ed.tar.gz
Tango-76e9404d4bc07e59651a7a3093ce0a7eba5372ed.zip
Working on TCC..
-rw-r--r--Software/Android_Studio/ColorCapture/app/src/main/AndroidManifest.xml3
-rw-r--r--Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/controls/ToggleImageButton.java42
-rw-r--r--Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/dagger/ApplicationComponent.java11
-rw-r--r--Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/dagger/NavigationModule.java4
-rw-r--r--Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/dagger/ViewModelsModule.java12
-rw-r--r--Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/mvvm/ActivityBase.java12
-rw-r--r--Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/mvvm/BindingAdapters.java35
-rw-r--r--Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/mvvm/DependencyProperty.java13
-rw-r--r--Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/mvvm/ExtendedObject.java4
-rw-r--r--Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/navigation/AndroidNavigationProvider.java93
-rw-r--r--Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/navigation/INavigationProvider.java16
-rw-r--r--Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/navigation/NavigationActivity.java (renamed from Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/navigation/NavigationView.java)5
-rw-r--r--Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/navigation/NavigationFragment.java7
-rw-r--r--Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/capture/CaptureFragment.java88
-rw-r--r--Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/home/HomeFragment.java84
-rw-r--r--Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/home/HomeFragmentVM.java31
-rw-r--r--Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/home/IHomeFragment.java10
-rw-r--r--Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/loading/ILoadingActivity.java (renamed from Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/loading/ILoadingFragment.java)2
-rw-r--r--Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/loading/LoadingActivity.java56
-rw-r--r--Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/loading/LoadingActivityVM.java (renamed from Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/loading/LoadingFragmentVM.java)41
-rw-r--r--Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/loading/LoadingFragment.java45
-rw-r--r--Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/main/MainActivity.java109
-rw-r--r--Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/main/MainActivityVM.java71
-rw-r--r--Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/mycolors/IMyColorsFragment.java9
-rw-r--r--Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/mycolors/MyColorsFragment.java35
-rw-r--r--Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/mycolors/MyColorsFragmentVM.java17
-rw-r--r--Software/Android_Studio/ColorCapture/app/src/main/res/anim/zoom_in.xml8
-rw-r--r--Software/Android_Studio/ColorCapture/app/src/main/res/anim/zoom_out.xml11
-rw-r--r--Software/Android_Studio/ColorCapture/app/src/main/res/layout/activity_loading.xml (renamed from Software/Android_Studio/ColorCapture/app/src/main/res/layout/fragment_loading.xml)7
-rw-r--r--Software/Android_Studio/ColorCapture/app/src/main/res/layout/activity_main.xml6
-rw-r--r--Software/Android_Studio/ColorCapture/app/src/main/res/layout/fragment_mycolors.xml (renamed from Software/Android_Studio/ColorCapture/app/src/main/res/layout/fragment_home.xml)26
-rw-r--r--Software/Android_Studio/ColorCapture/app/src/main/res/values/styles.xml10
32 files changed, 551 insertions, 372 deletions
diff --git a/Software/Android_Studio/ColorCapture/app/src/main/AndroidManifest.xml b/Software/Android_Studio/ColorCapture/app/src/main/AndroidManifest.xml
index f0e6277c9..df39e776f 100644
--- a/Software/Android_Studio/ColorCapture/app/src/main/AndroidManifest.xml
+++ b/Software/Android_Studio/ColorCapture/app/src/main/AndroidManifest.xml
@@ -25,13 +25,14 @@
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="false"
android:theme="@style/AppTheme">
- <activity android:name=".views.main.MainActivity">
+ <activity android:name=".views.loading.LoadingActivity" android:noHistory="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
+ <activity android:name=".views.main.MainActivity"></activity>
</application>
</manifest> \ No newline at end of file
diff --git a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/controls/ToggleImageButton.java b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/controls/ToggleImageButton.java
index 466b6de7e..e23f3e7e7 100644
--- a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/controls/ToggleImageButton.java
+++ b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/controls/ToggleImageButton.java
@@ -4,16 +4,25 @@ import android.content.Context;
import android.content.res.TypedArray;
import android.databinding.BindingAdapter;
import android.databinding.BindingMethod;
+import android.databinding.BindingMethods;
import android.databinding.InverseBindingAdapter;
import android.databinding.InverseBindingListener;
import android.databinding.InverseBindingMethod;
import android.databinding.InverseBindingMethods;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
+import android.util.Log;
import android.widget.Checkable;
+import android.widget.CompoundButton;
import com.twine.colorcapture.R;
+@BindingMethods({
+ @BindingMethod(type = ToggleImageButton.class, attribute = "checked", method = "setChecked"),
+})
+@InverseBindingMethods({
+ @InverseBindingMethod(type = ToggleImageButton.class, attribute = "checked", method = "getChecked"),
+})
public class ToggleImageButton extends android.support.v7.widget.AppCompatImageButton implements Checkable
{
private OnCheckedChangeListener onCheckedChangeListener;
@@ -57,6 +66,7 @@ public class ToggleImageButton extends android.support.v7.widget.AppCompatImageB
@Override
public void setChecked(boolean checked)
{
+ Log.d("DATA BINDING", "setChecked: ");
setSelected(checked);
if (checked)
@@ -74,6 +84,12 @@ public class ToggleImageButton extends android.support.v7.widget.AppCompatImageB
}
}
+ public Boolean getChecked()
+ {
+ Log.d("DATA BINDING", "getChecked: ");
+ return isChecked();
+ }
+
@Override
public void toggle()
{
@@ -83,7 +99,15 @@ public class ToggleImageButton extends android.support.v7.widget.AppCompatImageB
@Override
public boolean performClick()
{
- toggle();
+ if (!isChecked())
+ {
+ setChecked(true);
+ }
+ else
+ {
+ return true;
+ }
+
return super.performClick();
}
@@ -102,21 +126,23 @@ public class ToggleImageButton extends android.support.v7.widget.AppCompatImageB
public void onCheckedChanged(ToggleImageButton buttonView, boolean isChecked);
}
- @BindingAdapter(value = "cccAttrChanged")
- public static void createCheckedBinding(ToggleImageButton btn, InverseBindingListener listener)
+ @BindingAdapter(value = "checkedAttrChanged")
+ public static void setListener(ToggleImageButton btn, final InverseBindingListener attrChange)
{
- btn.setOnCheckedChangeListener((e, r) -> listener.onChange());
+ btn.setOnCheckedChangeListener((e, r) -> attrChange.onChange());
}
- @BindingAdapter("ccc")
- public static void setChecked(ToggleImageButton view, boolean value)
+ @BindingAdapter("checked")
+ public static void setChecked(ToggleImageButton view, Boolean value)
{
+ Log.d("DATA BINDING", "setChecked: ");
view.setChecked(value);
}
- @InverseBindingAdapter(attribute = "ccc")
- public static boolean getChecked(ToggleImageButton view)
+ @InverseBindingAdapter(attribute = "checked")
+ public static Boolean getChecked(ToggleImageButton view)
{
+ Log.d("DATA BINDING", "getChecked: ");
return view.isChecked();
}
}
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 b3a790039..700cb74ca 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,8 +1,8 @@
package com.twine.colorcapture.dagger;
import com.twine.colorcapture.views.capture.CaptureFragment;
-import com.twine.colorcapture.views.home.HomeFragment;
-import com.twine.colorcapture.views.loading.LoadingFragment;
+import com.twine.colorcapture.views.mycolors.MyColorsFragment;
+import com.twine.colorcapture.views.loading.LoadingActivity;
import com.twine.colorcapture.views.main.MainActivity;
import com.twine.colorcapture.views.main.MainActivityVM;
@@ -18,14 +18,11 @@ import dagger.Component;
@Component(modules = {ApplicationModule.class, ViewModelsModule.class, EventBusModule.class, NotificationModule.class, NavigationModule.class})
public interface ApplicationComponent
{
-
void inject(MainActivity view);
- void inject(LoadingFragment view);
+ void inject(LoadingActivity view);
- void inject(HomeFragment view);
+ void inject(MyColorsFragment view);
void inject(CaptureFragment view);
-
- MainActivityVM provideMainActivityVM();
}
diff --git a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/dagger/NavigationModule.java b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/dagger/NavigationModule.java
index 476f248e0..7ccb6b06e 100644
--- a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/dagger/NavigationModule.java
+++ b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/dagger/NavigationModule.java
@@ -14,8 +14,8 @@ public class NavigationModule
{
@Provides
@Singleton
- public INavigationProvider provideNavigation()
+ public INavigationProvider provideNavigation(Context context)
{
- return new AndroidNavigationProvider();
+ return new AndroidNavigationProvider(context);
}
}
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 ff2e83a61..5726fdb71 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
@@ -4,8 +4,8 @@ import com.squareup.otto.Bus;
import com.twine.colorcapture.navigation.INavigationProvider;
import com.twine.colorcapture.notification.INotificationProvider;
import com.twine.colorcapture.views.capture.CaptureFragmentVM;
-import com.twine.colorcapture.views.home.HomeFragmentVM;
-import com.twine.colorcapture.views.loading.LoadingFragmentVM;
+import com.twine.colorcapture.views.loading.LoadingActivityVM;
+import com.twine.colorcapture.views.mycolors.MyColorsFragmentVM;
import com.twine.colorcapture.views.main.MainActivityVM;
import javax.inject.Singleton;
@@ -30,16 +30,16 @@ public class ViewModelsModule
@Provides
@Singleton
- public LoadingFragmentVM provideLoadingFragmentVM(Bus eventBus, INotificationProvider notificationProvider, INavigationProvider navigationProvider)
+ public LoadingActivityVM provideLoadingFragmentVM(Bus eventBus, INotificationProvider notificationProvider, INavigationProvider navigationProvider)
{
- return new LoadingFragmentVM(eventBus, notificationProvider, navigationProvider);
+ return new LoadingActivityVM(eventBus, notificationProvider, navigationProvider);
}
@Provides
@Singleton
- public HomeFragmentVM provideHomeFragmentVM(Bus eventBus, INotificationProvider notificationProvider, INavigationProvider navigationProvider)
+ public MyColorsFragmentVM provideMyColorsFragmentVM(Bus eventBus, INotificationProvider notificationProvider, INavigationProvider navigationProvider)
{
- return new HomeFragmentVM(navigationProvider);
+ return new MyColorsFragmentVM(navigationProvider);
}
@Provides
diff --git a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/mvvm/ActivityBase.java b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/mvvm/ActivityBase.java
index 386d9c525..7878d1b81 100644
--- a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/mvvm/ActivityBase.java
+++ b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/mvvm/ActivityBase.java
@@ -6,11 +6,14 @@ import android.databinding.ViewDataBinding;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
+import android.view.Window;
+import android.view.WindowManager;
import android.widget.EditText;
import android.widget.Toast;
import com.mobsandgeeks.saripaar.ValidationError;
import com.mobsandgeeks.saripaar.Validator;
+import com.twine.colorcapture.R;
import java.lang.reflect.Method;
import java.util.List;
@@ -48,7 +51,14 @@ public abstract class ActivityBase<BindingView extends ViewDataBinding, VM exten
public BindingView binding;
@Override
- protected void onCreate(Bundle savedInstanceState) {
+ protected void onCreate(Bundle savedInstanceState)
+ {
+ Window window = getWindow();
+ window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
+ window.setStatusBarColor(getResources().getColor(R.color.colorPrimaryBackground));
+
+ overridePendingTransition(R.anim.zoom_in,R.anim.zoom_out);
+
super.onCreate(savedInstanceState);
inject();
diff --git a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/mvvm/BindingAdapters.java b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/mvvm/BindingAdapters.java
index 41bfb052b..30cc259d6 100644
--- a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/mvvm/BindingAdapters.java
+++ b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/mvvm/BindingAdapters.java
@@ -1,9 +1,42 @@
package com.twine.colorcapture.mvvm;
+import android.databinding.BindingAdapter;
import android.databinding.BindingConversion;
+import android.databinding.BindingMethod;
+import android.databinding.BindingMethods;
+import android.databinding.InverseBindingAdapter;
+import android.databinding.InverseBindingListener;
import android.databinding.InverseBindingMethod;
+import android.databinding.InverseBindingMethods;
+import android.util.Log;
+import com.twine.colorcapture.controls.ToggleImageButton;
+
+//@BindingMethods({
+// @BindingMethod(type = ToggleImageButton.class, attribute = "checked", method = "setChecked"),
+//})
+//@InverseBindingMethods({
+// @InverseBindingMethod(type = ToggleImageButton.class, attribute = "checked", method = "getChecked"),
+//})
public class BindingAdapters
{
-
+// @BindingAdapter(value = "checkedAttrChanged")
+// public static void setListener(ToggleImageButton btn, final InverseBindingListener attrChange)
+// {
+// btn.setOnCheckedChangeListener((e, r) -> attrChange.onChange());
+// }
+//
+// @BindingAdapter("checked")
+// public static void setChecked(ToggleImageButton view, Boolean value)
+// {
+// Log.d("DATA BINDING", "setChecked: ");
+// view.setChecked(value);
+// }
+//
+// @InverseBindingAdapter(attribute = "checked")
+// public static Boolean getChecked(ToggleImageButton view)
+// {
+// Log.d("DATA BINDING", "getChecked: ");
+// return view.isChecked();
+// }
}
diff --git a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/mvvm/DependencyProperty.java b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/mvvm/DependencyProperty.java
index 6856c071d..930e16dec 100644
--- a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/mvvm/DependencyProperty.java
+++ b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/mvvm/DependencyProperty.java
@@ -5,6 +5,7 @@ import android.databinding.ObservableField;
public class DependencyProperty <T> extends ObservableField<T>
{
private boolean blockNotify;
+ private boolean blockCallback;
/**
* The interface On property changed callback.
@@ -76,6 +77,14 @@ public class DependencyProperty <T> extends ObservableField<T>
{
blockNotify = true;
set(value);
+ blockNotify = false;
+ }
+
+ public void setNoCallback(T value)
+ {
+ blockCallback = true;
+ set(value);
+ blockCallback = false;
}
@Override
@@ -85,8 +94,6 @@ public class DependencyProperty <T> extends ObservableField<T>
{
super.notifyChange();
}
-
- blockNotify = false;
}
private void init()
@@ -98,7 +105,7 @@ public class DependencyProperty <T> extends ObservableField<T>
@Override
public void onPropertyChanged(android.databinding.Observable observable, int i)
{
- if (that.callback != null)
+ if (that.callback != null && !that.blockCallback)
{
that.callback.onPropertyChanged(that, that.get());
}
diff --git a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/mvvm/ExtendedObject.java b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/mvvm/ExtendedObject.java
index 8ee60bec7..184c4fb6d 100644
--- a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/mvvm/ExtendedObject.java
+++ b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/mvvm/ExtendedObject.java
@@ -1,6 +1,8 @@
package com.twine.colorcapture.mvvm;
-public class ExtendedObject
+import android.databinding.BaseObservable;
+
+public class ExtendedObject extends BaseObservable
{
}
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 175a99b77..88cee5a8f 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
@@ -2,6 +2,8 @@ package com.twine.colorcapture.navigation;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
+import android.content.Context;
+import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
@@ -10,6 +12,12 @@ import com.twine.colorcapture.mvvm.ExtendedObject;
import com.twine.colorcapture.mvvm.FragmentBase;
import com.twine.colorcapture.core.IAction1;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import javax.inject.Inject;
+
/**
* Represents an android navigation provider.
*/
@@ -17,31 +25,39 @@ public class AndroidNavigationProvider extends ExtendedObject implements INaviga
{
private AppCompatActivity activity;
private FragmentBase currentFragment;
+ private String currentFragmentName;
private int fragment_container;
- private String basePackagePath;
+ private String basePackagePath = "com.twine.colorcapture.views";
private boolean isFirst = true;
-
+ private Context context;
+ private List<FragmentNavigatedListener> fragmentNavigatedListeners;
+
+ @Inject
+ public AndroidNavigationProvider(Context context)
+ {
+ this.context = context;
+ fragmentNavigatedListeners = new ArrayList<>();
+ }
+
@Override
- public void registerNavigationActivity(AppCompatActivity activity, int fragmentContainerId, String basePackagePath)
+ public void registerNavigationActivity(AppCompatActivity activity, int fragmentContainerId)
{
this.activity = activity;
this.fragment_container = fragmentContainerId;
- this.basePackagePath = basePackagePath;
}
-
@Override
- public void navigateTo(Enum fragmentValue, boolean addToHistory)
+ public void navigateTo(NavigationFragment fragmentValue, boolean addToHistory)
{
navigateTo(fragmentValue.name(),addToHistory);
}
@Override
- public void navigateTo(Enum fragmentValue, IAction1<FragmentBase> onCreateListener, boolean addToHistory)
+ public void navigateTo(NavigationFragment fragmentValue, IAction1<FragmentBase> onCreateListener, boolean addToHistory)
{
navigateTo(fragmentValue.name(), onCreateListener,addToHistory);
}
-
+
@Override
public void navigateTo(String fragmentName, boolean addToHistory)
{
@@ -56,7 +72,23 @@ public class AndroidNavigationProvider extends ExtendedObject implements INaviga
//logManager.log(new NullPointerException("No navigation activity registered."));
return;
}
-
+
+ boolean reverseAnimation = false;
+
+
+ if (currentFragmentName != null)
+ {
+ List<NavigationFragment> values = Arrays.asList(NavigationFragment.values());
+
+ int newIndex = values.indexOf(NavigationFragment.valueOf(fragmentName));
+ int oldIndex = values.indexOf(NavigationFragment.valueOf(currentFragmentName));
+
+ if (oldIndex > newIndex) {
+ reverseAnimation = true;
+ }
+ }
+
+ String originalName = fragmentName;
fragmentName = basePackagePath + "." + fragmentName.toLowerCase() + "." + fragmentName + "Fragment";
FragmentManager fragmentManager = activity.getFragmentManager();
@@ -107,7 +139,14 @@ public class AndroidNavigationProvider extends ExtendedObject implements INaviga
if (!isFirst)
{
- fragmentTransaction.setCustomAnimations(R.animator.slide_in_left, R.animator.slide_out_left, R.animator.slide_out_right, R.animator.slide_in_right);
+ if (!reverseAnimation)
+ {
+ fragmentTransaction.setCustomAnimations(R.animator.slide_out_right, R.animator.slide_in_right , R.animator.slide_in_left, R.animator.slide_out_left);
+ }
+ else
+ {
+ fragmentTransaction.setCustomAnimations(R.animator.slide_in_left, R.animator.slide_out_left, R.animator.slide_out_right, R.animator.slide_in_right);
+ }
}
isFirst = false;
@@ -131,5 +170,39 @@ public class AndroidNavigationProvider extends ExtendedObject implements INaviga
// }
currentFragment = fragment;
+ currentFragmentName = originalName;
+
+ NavigationFragment f = NavigationFragment.valueOf(originalName);
+ for (FragmentNavigatedListener listener : fragmentNavigatedListeners)
+ {
+ listener.onNavigated(f);
+ }
+
+ }
+
+ @Override
+ public void navigateTo(NavigationActivity activityValue, boolean addToHistory)
+ {
+ String name = activityValue.name();
+ String activityName = basePackagePath + "." + name.toLowerCase() + "." + name + "Activity";
+ try {
+ Class cls = Class.forName(activityName);
+ Intent intent = new Intent(context, cls);
+
+ if (!addToHistory) {
+ intent.setFlags(intent.getFlags() | Intent.FLAG_ACTIVITY_NO_HISTORY);
+ }
+
+ context.startActivity(intent);
+
+ } catch (ClassNotFoundException e) {
+ e.printStackTrace();
+ }
+ }
+
+ @Override
+ public void addFragmentNavigationListener(FragmentNavigatedListener listener)
+ {
+ fragmentNavigatedListeners.add(listener);
}
}
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 a6567d576..60440d4e3 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
@@ -10,14 +10,18 @@ import com.twine.colorcapture.core.IAction1;
*/
public interface INavigationProvider
{
+ interface FragmentNavigatedListener
+ {
+ void onNavigated(NavigationFragment fragment);
+ }
+
/**
* Register navigation activity.
*
* @param activity the activity
* @param fragmentContainerId the fragment container id
- * @param basePackagePath the base package path
*/
- void registerNavigationActivity(AppCompatActivity activity, int fragmentContainerId, String basePackagePath);
+ void registerNavigationActivity(AppCompatActivity activity, int fragmentContainerId);
/**
* Navigate to the specified fragment name.
@@ -39,7 +43,7 @@ public interface INavigationProvider
*
* @param fragmentValue the fragment value
*/
- void navigateTo(Enum fragmentValue, boolean addToHistory);
+ void navigateTo(NavigationFragment fragmentValue, boolean addToHistory);
/**
* Navigate to to the specified enum value fragment name.
@@ -47,5 +51,9 @@ public interface INavigationProvider
* @param fragmentValue the fragment value
* @param onCreateListener the on create listener
*/
- void navigateTo(Enum fragmentValue, IAction1<FragmentBase> onCreateListener, boolean addToHistory);
+ void navigateTo(NavigationFragment fragmentValue, IAction1<FragmentBase> onCreateListener, boolean addToHistory);
+
+ void navigateTo(NavigationActivity activityValue, boolean addToHistory);
+
+ void addFragmentNavigationListener(FragmentNavigatedListener listener);
}
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/NavigationActivity.java
index d336d1930..b03f688bc 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/NavigationActivity.java
@@ -1,8 +1,7 @@
package com.twine.colorcapture.navigation;
-public enum NavigationView
+public enum NavigationActivity
{
Loading,
- Home,
- Capture,
+ Main,
}
diff --git a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/navigation/NavigationFragment.java b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/navigation/NavigationFragment.java
new file mode 100644
index 000000000..65a6d38e7
--- /dev/null
+++ b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/navigation/NavigationFragment.java
@@ -0,0 +1,7 @@
+package com.twine.colorcapture.navigation;
+
+public enum NavigationFragment
+{
+ MyColors,
+ Capture,
+}
diff --git a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/capture/CaptureFragment.java b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/capture/CaptureFragment.java
index 87e5c56cd..f09e6448f 100644
--- a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/capture/CaptureFragment.java
+++ b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/capture/CaptureFragment.java
@@ -1,7 +1,9 @@
package com.twine.colorcapture.views.capture;
+import android.Manifest;
import android.animation.ObjectAnimator;
import android.animation.ValueAnimator;
+import android.content.pm.PackageManager;
import android.graphics.Bitmap;
import android.graphics.ImageFormat;
import android.hardware.Camera;
@@ -10,6 +12,9 @@ import android.hardware.Camera.Size;
import android.os.Build;
import android.os.Handler;
import android.os.Looper;
+import android.support.annotation.NonNull;
+import android.support.v4.app.ActivityCompat;
+import android.support.v4.content.ContextCompat;
import android.util.Log;
import android.view.Surface;
import android.view.SurfaceHolder;
@@ -23,6 +28,7 @@ import android.widget.ImageView;
import com.twine.colorcapture.App;
import com.twine.colorcapture.R;
+import com.twine.colorcapture.core.IAction1;
import com.twine.colorcapture.core.Task.TaskBuilder;
import com.twine.colorcapture.databinding.FragmentCaptureBinding;
import com.twine.colorcapture.mvvm.FragmentBase;
@@ -46,6 +52,7 @@ public class CaptureFragment extends FragmentBase<FragmentCaptureBinding, Captur
private Handler mHandler;
private SurfaceView surfaceView;
private ICaptureFragmentListener listener;
+ private IAction1<Boolean> cameraAccessAction;
ObjectAnimator animator;
View scannerLayout;
View scannerBar;
@@ -60,24 +67,30 @@ public class CaptureFragment extends FragmentBase<FragmentCaptureBinding, Captur
protected void onCreated()
{
super.onCreated();
-
- imagePreview = getView().findViewById(R.id.imagePreview);
- imagewrappedPreview = getView().findViewById(R.id.imagePreviewWrapped);
-
- surfaceView = new SurfaceView(this.getActivity());
-
- SurfaceHolder camHolder = surfaceView.getHolder();
- camHolder.addCallback(this);
- camHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
-
- FrameLayout surfraceFrame = (FrameLayout) getView().findViewById(R.id.surfaceViewFrame);
-
- startScanAnimation();
-
- new Handler().postDelayed(() ->
+
+ requestCameraAccess((granted) ->
{
- surfraceFrame.addView(surfaceView, new FrameLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
- }, 500);
+ if (granted)
+ {
+ imagePreview = getView().findViewById(R.id.imagePreview);
+ imagewrappedPreview = getView().findViewById(R.id.imagePreviewWrapped);
+
+ surfaceView = new SurfaceView(this.getActivity());
+
+ SurfaceHolder camHolder = surfaceView.getHolder();
+ camHolder.addCallback(this);
+ camHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
+
+ FrameLayout surfraceFrame = (FrameLayout) getView().findViewById(R.id.surfaceViewFrame);
+
+ startScanAnimation();
+
+ new Handler().postDelayed(() ->
+ {
+ surfraceFrame.addView(surfaceView, new FrameLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
+ }, 500);
+ }
+ });
}
private void startScanAnimation()
@@ -275,4 +288,45 @@ public class CaptureFragment extends FragmentBase<FragmentCaptureBinding, Captur
imagePreview.setImageBitmap(frameBitmap);
imagewrappedPreview.setImageBitmap(correctedBitmap);
}
+
+ public void requestCameraAccess(IAction1<Boolean> action)
+ {
+ cameraAccessAction = action;
+
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN)
+ {
+ if (ContextCompat.checkSelfPermission(this.getActivity(), Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED)
+ {
+ ActivityCompat.requestPermissions(this.getActivity(),
+ new String[]{Manifest.permission.CAMERA},
+ 1);
+ }
+ else
+ {
+ cameraAccessAction.invoke(true);
+ }
+ }
+ }
+
+ @Override
+ public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults)
+ {
+ super.onRequestPermissionsResult(requestCode, permissions, grantResults);
+
+ switch (requestCode)
+ {
+ case 1:
+ {
+ if (grantResults.length > 0
+ && grantResults[0] == PackageManager.PERMISSION_GRANTED)
+ {
+ cameraAccessAction.invoke(true);
+ }
+ else
+ {
+ cameraAccessAction.invoke(false);
+ }
+ }
+ }
+ }
} \ No newline at end of file
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
deleted file mode 100644
index 4dc05b81d..000000000
--- a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/home/HomeFragment.java
+++ /dev/null
@@ -1,84 +0,0 @@
-package com.twine.colorcapture.views.home;
-
-import android.Manifest;
-import android.content.pm.PackageManager;
-import android.os.Build;
-import android.support.annotation.NonNull;
-import android.support.v4.app.ActivityCompat;
-import android.support.v4.content.ContextCompat;
-
-import com.twine.colorcapture.App;
-import com.twine.colorcapture.R;
-import com.twine.colorcapture.core.IAction1;
-import com.twine.colorcapture.databinding.FragmentHomeBinding;
-import com.twine.colorcapture.mvvm.FragmentBase;
-
-public class HomeFragment extends FragmentBase<FragmentHomeBinding, HomeFragmentVM> implements IHomeFragment
-{
- private IAction1<Boolean> cameraAccessAction;
-
- 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";
- }
-
- @Override
- public void requestCameraAccess(IAction1<Boolean> action)
- {
- cameraAccessAction = action;
-
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN)
- {
- if (ContextCompat.checkSelfPermission(this.getActivity(), Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED)
- {
- ActivityCompat.requestPermissions(this.getActivity(),
- new String[]{Manifest.permission.CAMERA},
- 1);
- }
- else
- {
- cameraAccessAction.invoke(true);
- }
- }
- }
-
- @Override
- public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults)
- {
- super.onRequestPermissionsResult(requestCode, permissions, grantResults);
-
- switch (requestCode)
- {
- case 1:
- {
- if (grantResults.length > 0
- && grantResults[0] == PackageManager.PERMISSION_GRANTED)
- {
- cameraAccessAction.invoke(true);
- }
- else
- {
- cameraAccessAction.invoke(false);
- }
- }
- }
- }
-}
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
deleted file mode 100644
index d7b8e3ba7..000000000
--- a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/home/HomeFragmentVM.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package com.twine.colorcapture.views.home;
-
-import com.twine.colorcapture.mvvm.RelayCommand;
-import com.twine.colorcapture.mvvm.ViewModelBase;
-import com.twine.colorcapture.navigation.INavigationProvider;
-import com.twine.colorcapture.navigation.NavigationView;
-
-import javax.inject.Inject;
-
-public class HomeFragmentVM extends ViewModelBase<IHomeFragment>
-{
- private INavigationProvider navigationProvider;
- public RelayCommand startCaptureCommand;
-
- @Inject
- public HomeFragmentVM(INavigationProvider navigationProvider)
- {
- this.navigationProvider = navigationProvider;
-
- startCaptureCommand = new RelayCommand(() ->
- {
- view.requestCameraAccess((granted) ->
- {
- if (granted)
- {
- this.navigationProvider.navigateTo(NavigationView.Capture, true);
- }
- });
- });
- }
-}
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
deleted file mode 100644
index 17f94c7db..000000000
--- a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/home/IHomeFragment.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package com.twine.colorcapture.views.home;
-
-import com.twine.colorcapture.core.IAction;
-import com.twine.colorcapture.core.IAction1;
-import com.twine.colorcapture.mvvm.IView;
-
-public interface IHomeFragment extends IView
-{
- void requestCameraAccess(IAction1<Boolean> action);
-}
diff --git a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/loading/ILoadingFragment.java b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/loading/ILoadingActivity.java
index b887f59e2..a9d7d44ce 100644
--- a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/loading/ILoadingFragment.java
+++ b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/loading/ILoadingActivity.java
@@ -2,6 +2,6 @@ package com.twine.colorcapture.views.loading;
import com.twine.colorcapture.mvvm.IView;
-public interface ILoadingFragment extends IView
+public interface ILoadingActivity extends IView
{
}
diff --git a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/loading/LoadingActivity.java b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/loading/LoadingActivity.java
new file mode 100644
index 000000000..1f14b0d0c
--- /dev/null
+++ b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/loading/LoadingActivity.java
@@ -0,0 +1,56 @@
+package com.twine.colorcapture.views.loading;
+
+
+import android.app.Fragment;
+import android.content.Intent;
+import android.os.Bundle;
+import android.os.Handler;
+import android.view.Window;
+import android.view.WindowManager;
+
+import com.twine.colorcapture.App;
+import com.twine.colorcapture.R;
+import com.twine.colorcapture.databinding.ActivityLoadingBinding;
+import com.twine.colorcapture.mvvm.ActivityBase;
+import com.twine.colorcapture.navigation.INavigationProvider;
+import com.twine.colorcapture.navigation.NavigationActivity;
+import com.twine.colorcapture.views.main.MainActivity;
+
+import javax.inject.Inject;
+
+import io.reactivex.functions.Consumer;
+
+/**
+ * A simple {@link Fragment} subclass.
+ */
+public class LoadingActivity extends ActivityBase<ActivityLoadingBinding, LoadingActivityVM> implements ILoadingActivity
+{
+ @Inject
+ public INavigationProvider navigationProvider;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState)
+ {
+ super.onCreate(savedInstanceState);
+
+ new Handler().postDelayed(() ->
+ {
+// Intent intent = new Intent(getApplicationContext(), MainActivity.class);
+// intent.setFlags(intent.getFlags() | Intent.FLAG_ACTIVITY_NO_HISTORY);
+// startActivity(intent);
+
+ navigationProvider.navigateTo(NavigationActivity.Main,true);
+
+ },5000);
+ }
+
+ @Override
+ protected int getLayoutId() {
+ return R.layout.activity_loading;
+ }
+
+ @Override
+ protected void inject() {
+ App.getComponent().inject(this);
+ }
+}
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/LoadingActivityVM.java
index 39a93450e..fcf4aaac7 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/LoadingActivityVM.java
@@ -1,24 +1,23 @@
package com.twine.colorcapture.views.loading;
import android.os.CountDownTimer;
-import android.os.Handler;
import com.squareup.otto.Bus;
import com.twine.colorcapture.mvvm.DependencyProperty;
import com.twine.colorcapture.mvvm.ViewModelBase;
import com.twine.colorcapture.navigation.INavigationProvider;
-import com.twine.colorcapture.navigation.NavigationView;
+import com.twine.colorcapture.navigation.NavigationFragment;
import com.twine.colorcapture.notification.INotificationProvider;
import javax.inject.Inject;
-public class LoadingFragmentVM extends ViewModelBase<ILoadingFragment>
+public class LoadingActivityVM extends ViewModelBase<ILoadingActivity>
{
private INavigationProvider navigationProvider;
public DependencyProperty<Integer> loadingProgress;
@Inject
- public LoadingFragmentVM(Bus eventBus, INotificationProvider notificationProvider, INavigationProvider navigationProvider)
+ public LoadingActivityVM(Bus eventBus, INotificationProvider notificationProvider, INavigationProvider navigationProvider)
{
this.navigationProvider = navigationProvider;
@@ -27,25 +26,25 @@ public class LoadingFragmentVM extends ViewModelBase<ILoadingFragment>
}
@Override
- protected void onViewAttached(ILoadingFragment view)
+ protected void onViewAttached(ILoadingActivity view)
{
super.onViewAttached(view);
- new CountDownTimer(5000,50)
- {
-
- @Override
- public void onTick(long l) {
-
- loadingProgress.set(loadingProgress.get() + 50);
- }
-
- @Override
- public void onFinish() {
-
- loadingProgress.set(2000);
- navigationProvider.navigateTo(NavigationView.Capture, false);
- }
- }.start();
+// new CountDownTimer(5000,50)
+// {
+//
+// @Override
+// public void onTick(long l) {
+//
+// loadingProgress.set(loadingProgress.get() + 50);
+// }
+//
+// @Override
+// public void onFinish() {
+//
+// loadingProgress.set(2000);
+// navigationProvider.navigateTo(NavigationFragment.MyColors, false);
+// }
+// }.start();
}
}
diff --git a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/loading/LoadingFragment.java b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/loading/LoadingFragment.java
deleted file mode 100644
index 4a549b59b..000000000
--- a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/loading/LoadingFragment.java
+++ /dev/null
@@ -1,45 +0,0 @@
-package com.twine.colorcapture.views.loading;
-
-
-import android.app.Fragment;
-import android.os.Bundle;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-
-import com.twine.colorcapture.App;
-import com.twine.colorcapture.R;
-import com.twine.colorcapture.databinding.FragmentLoadingBinding;
-import com.twine.colorcapture.mvvm.FragmentBase;
-
-import io.reactivex.functions.Consumer;
-
-/**
- * A simple {@link Fragment} subclass.
- */
-public class LoadingFragment extends FragmentBase<FragmentLoadingBinding, LoadingFragmentVM> implements ILoadingFragment
-{
-
- public LoadingFragment()
- {
- // Required empty public constructor
- }
-
- @Override
- protected int getLayoutId()
- {
- return R.layout.fragment_loading;
- }
-
- @Override
- protected void inject()
- {
- App.getComponent().inject(this);
- }
-
- @Override
- public String getTitle()
- {
- return "Loading";
- }
-}
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 5ff99751f..61bf052b1 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,143 +1,78 @@
package com.twine.colorcapture.views.main;
-import android.app.FragmentTransaction;
-import android.graphics.Color;
import android.os.Bundle;
-import android.os.Handler;
import android.support.v4.widget.DrawerLayout;
import android.util.Log;
import android.view.Gravity;
import android.view.View;
-import android.view.Window;
-import android.view.WindowManager;
-import android.view.animation.AlphaAnimation;
-import android.view.animation.Animation;
-import android.view.animation.Animation.AnimationListener;
-import android.view.animation.ScaleAnimation;
-import android.widget.Button;
-import android.widget.FrameLayout;
import android.widget.LinearLayout;
import com.twine.colorcapture.App;
import com.twine.colorcapture.R;
import com.twine.colorcapture.controls.ToggleImageButton;
-import com.twine.colorcapture.core.IAction;
-import com.twine.colorcapture.core.Task;
import com.twine.colorcapture.databinding.ActivityMainBinding;
import com.twine.colorcapture.mvvm.ActivityBase;
import com.twine.colorcapture.navigation.INavigationProvider;
-import com.twine.colorcapture.navigation.NavigationView;
-import com.twine.onboarding.PaperOnboardingFragment;
-import com.twine.onboarding.PaperOnboardingPage;
-
-import java.util.ArrayList;
+import com.twine.colorcapture.navigation.NavigationFragment;
import javax.inject.Inject;
import butterknife.BindView;
-import butterknife.ButterKnife;
public class MainActivity extends ActivityBase<ActivityMainBinding, MainActivityVM> implements IMainActivity
{
- private boolean displayOnboarding = false;
-
+
@Inject
public INavigationProvider navigationProvider;
-
+
@BindView(R.id.btnMenu)
ToggleImageButton btnMenu;
-
+
@BindView(R.id.header)
LinearLayout frameHeader;
-
+
@BindView(R.id.drawerLayout)
DrawerLayout drawerLayout;
-
+
// Used to load the 'native-lib' library on application startup.
- static
- {
+ static {
System.loadLibrary("opencv_java3");
System.loadLibrary("native-lib");
}
-
+
@Override
protected void onCreate(Bundle savedInstanceState)
{
- Window window = getWindow();
- window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
- window.setStatusBarColor(getResources().getColor(R.color.colorPrimaryBackground));
-
super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
-
- ButterKnife.bind(this);
-
- navigationProvider.registerNavigationActivity(this, R.id.fragment_container, "com.twine.colorcapture.views");
-
- if (displayOnboarding)
- {
- PaperOnboardingPage scr1 = new PaperOnboardingPage("Welcome to true color capture",
- "All hotels and hostels are sorted by hospitality rating",
- Color.parseColor("#678FB4"), R.drawable.hand_fabric, R.drawable.onboarding_pager_round_icon);
- PaperOnboardingPage scr2 = new PaperOnboardingPage("Banks",
- "We carefully verify all banks before add them into the app",
- Color.parseColor("#65B0B4"), R.drawable.hand_phone, R.drawable.onboarding_pager_round_icon);
- PaperOnboardingPage scr3 = new PaperOnboardingPage("Stores",
- "All local stores are categorized for your convenience",
- Color.parseColor("#9B90BC"), R.drawable.take_picture, R.drawable.onboarding_pager_round_icon);
-
- ArrayList<PaperOnboardingPage> elements = new ArrayList<>();
- elements.add(scr1);
- elements.add(scr2);
- elements.add(scr3);
-
- PaperOnboardingFragment onboardingFragment = PaperOnboardingFragment.newInstance(elements);
-
- onboardingFragment.setOnRightOutListener(() ->
- {
- showHeader();
- navigationProvider.navigateTo(NavigationView.Loading, false);
-
- });
-
- FragmentTransaction fragmentTransaction = this.getFragmentManager().beginTransaction();
- fragmentTransaction.add(R.id.fragment_container, onboardingFragment);
- fragmentTransaction.commit();
- }
- else
- {
- new Handler().postDelayed(this::showHeader,5000);
- navigationProvider.navigateTo(NavigationView.Loading, false);
- }
-
+
+ navigationProvider.registerNavigationActivity(this, R.id.fragment_container);
+
Log.d("TCC", "Registering event listener...");
-
+
btnMenu.setOnClickListener((x) ->
{
Log.d("TCC", "Clicked...");
drawerLayout.openDrawer(Gravity.START);
});
+
+ navigationProvider.navigateTo(NavigationFragment.Capture, false);
}
-
+
@Override
- protected int getLayoutId()
- {
+ protected int getLayoutId() {
return R.layout.activity_main;
}
-
+
@Override
- protected void inject()
- {
+ protected void inject() {
App.getComponent().inject(this);
}
-
- private void showHeader()
- {
+
+ private void showHeader() {
frameHeader.setVisibility(View.VISIBLE);
}
-
- private void hideHeader()
- {
+
+ private void hideHeader() {
frameHeader.setVisibility(View.GONE);
}
}
diff --git a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/main/MainActivityVM.java b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/main/MainActivityVM.java
index c07e59aaf..9410f4174 100644
--- a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/main/MainActivityVM.java
+++ b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/main/MainActivityVM.java
@@ -2,46 +2,97 @@ package com.twine.colorcapture.views.main;
import com.squareup.otto.Bus;
import com.twine.colorcapture.mvvm.DependencyProperty;
-import com.twine.colorcapture.mvvm.RelayCommand;
import com.twine.colorcapture.mvvm.ViewModelBase;
import com.twine.colorcapture.navigation.INavigationProvider;
-import com.twine.colorcapture.navigation.NavigationView;
+import com.twine.colorcapture.navigation.NavigationFragment;
import com.twine.colorcapture.notification.INotificationProvider;
import javax.inject.Inject;
public class MainActivityVM extends ViewModelBase<IMainActivity>
{
+ public enum CurrentTab
+ {
+ More,
+ Capture,
+ MyColors
+ }
+
private INavigationProvider navigationProvider;
+ private CurrentTab currentTab;
public DependencyProperty<Boolean> isMoreToggled;
public DependencyProperty<Boolean> isCaptureToggled;
public DependencyProperty<Boolean> isMyColorsToggled;
-
+
@Inject
public MainActivityVM(Bus eventBus, INotificationProvider notificationProvider, INavigationProvider navigationProvider)
{
this.navigationProvider = navigationProvider;
isMoreToggled = new DependencyProperty<Boolean>(false,this::onMoreToggled);
- isCaptureToggled = new DependencyProperty<Boolean>(true,this::onCaptureToggled);
+ isCaptureToggled = new DependencyProperty<Boolean>(false,this::onCaptureToggled);
isMyColorsToggled = new DependencyProperty<Boolean>(false,this::onMyColorsToggled);
+ currentTab = CurrentTab.Capture;
+ setCurrentTab(currentTab);
+ navigationProvider.addFragmentNavigationListener(this::onNavigation);
+ }
+
+ private void onNavigation(NavigationFragment navigationFragment)
+ {
+ if (navigationFragment == NavigationFragment.Capture && currentTab != CurrentTab.Capture)
+ {
+ isMoreToggled.setNoCallback(false);
+ isMyColorsToggled.setNoCallback(false);
+ isCaptureToggled.setNoCallback(true);
+ }
}
private void onMyColorsToggled(DependencyProperty<Boolean> booleanDependencyProperty, Boolean value)
{
- isMoreToggled.set(false);
- isCaptureToggled.set(false);
+ setCurrentTab(CurrentTab.MyColors);
}
private void onCaptureToggled(DependencyProperty<Boolean> booleanDependencyProperty, Boolean value)
{
- isMoreToggled.set(false);
- isMyColorsToggled.set(false);
+ setCurrentTab(CurrentTab.Capture);
}
private void onMoreToggled(DependencyProperty<Boolean> booleanDependencyProperty, Boolean value)
{
- isCaptureToggled.set(false);
- isMyColorsToggled.set(false);
+ setCurrentTab(CurrentTab.More);
+ }
+
+ private void setCurrentTab(CurrentTab tab)
+ {
+ currentTab = tab;
+
+ if (tab == CurrentTab.More)
+ {
+ if (isMoreToggled.get())
+ {
+ isCaptureToggled.setNoCallback(false);
+ isMyColorsToggled.setNoCallback(false);
+ }
+ isMoreToggled.setNoCallback(true);
+ }
+ else if (tab == CurrentTab.Capture)
+ {
+ if (isCaptureToggled.get())
+ {
+ isMoreToggled.setNoCallback(false);
+ isMyColorsToggled.setNoCallback(false);
+ navigationProvider.navigateTo(NavigationFragment.Capture,false);
+ }
+ isCaptureToggled.setNoCallback(true);
+ }
+ else if (tab == CurrentTab.MyColors)
+ {
+ if (isMyColorsToggled.get()) {
+ isMoreToggled.setNoCallback(false);
+ isCaptureToggled.setNoCallback(false);
+ navigationProvider.navigateTo(NavigationFragment.MyColors,false);
+ }
+ isMyColorsToggled.setNoCallback(true);
+ }
}
}
diff --git a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/mycolors/IMyColorsFragment.java b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/mycolors/IMyColorsFragment.java
new file mode 100644
index 000000000..27f9c0419
--- /dev/null
+++ b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/mycolors/IMyColorsFragment.java
@@ -0,0 +1,9 @@
+package com.twine.colorcapture.views.mycolors;
+
+import com.twine.colorcapture.core.IAction1;
+import com.twine.colorcapture.mvvm.IView;
+
+public interface IMyColorsFragment extends IView
+{
+
+}
diff --git a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/mycolors/MyColorsFragment.java b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/mycolors/MyColorsFragment.java
new file mode 100644
index 000000000..8df527308
--- /dev/null
+++ b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/mycolors/MyColorsFragment.java
@@ -0,0 +1,35 @@
+package com.twine.colorcapture.views.mycolors;
+
+import com.twine.colorcapture.App;
+import com.twine.colorcapture.R;
+import com.twine.colorcapture.core.IAction1;
+import com.twine.colorcapture.mvvm.FragmentBase;
+import com.twine.colorcapture.databinding.FragmentMycolorsBinding;
+
+public class MyColorsFragment extends FragmentBase<FragmentMycolorsBinding, MyColorsFragmentVM> implements IMyColorsFragment
+{
+ private IAction1<Boolean> cameraAccessAction;
+
+ public MyColorsFragment()
+ {
+ // Required empty public constructor
+ }
+
+ @Override
+ protected int getLayoutId()
+ {
+ return R.layout.fragment_mycolors;
+ }
+
+ @Override
+ protected void inject()
+ {
+ App.getComponent().inject(this);
+ }
+
+ @Override
+ public String getTitle()
+ {
+ return "MyColors";
+ }
+}
diff --git a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/mycolors/MyColorsFragmentVM.java b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/mycolors/MyColorsFragmentVM.java
new file mode 100644
index 000000000..9a2358516
--- /dev/null
+++ b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/mycolors/MyColorsFragmentVM.java
@@ -0,0 +1,17 @@
+package com.twine.colorcapture.views.mycolors;
+
+import com.twine.colorcapture.mvvm.ViewModelBase;
+import com.twine.colorcapture.navigation.INavigationProvider;
+
+import javax.inject.Inject;
+
+public class MyColorsFragmentVM extends ViewModelBase<IMyColorsFragment>
+{
+ private INavigationProvider navigationProvider;
+
+ @Inject
+ public MyColorsFragmentVM(INavigationProvider navigationProvider)
+ {
+ this.navigationProvider = navigationProvider;
+ }
+}
diff --git a/Software/Android_Studio/ColorCapture/app/src/main/res/anim/zoom_in.xml b/Software/Android_Studio/ColorCapture/app/src/main/res/anim/zoom_in.xml
new file mode 100644
index 000000000..d6b3668d3
--- /dev/null
+++ b/Software/Android_Studio/ColorCapture/app/src/main/res/anim/zoom_in.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<set xmlns:android="http://schemas.android.com/apk/res/android"
+ android:interpolator="@android:anim/decelerate_interpolator">
+ <scale android:fromXScale="2.0" android:toXScale="1.0"
+ android:fromYScale="2.0" android:toYScale="1.0"
+ android:pivotX="50%p" android:pivotY="50%p"
+ android:duration="@android:integer/config_mediumAnimTime" />
+</set> \ No newline at end of file
diff --git a/Software/Android_Studio/ColorCapture/app/src/main/res/anim/zoom_out.xml b/Software/Android_Studio/ColorCapture/app/src/main/res/anim/zoom_out.xml
new file mode 100644
index 000000000..02008bb2a
--- /dev/null
+++ b/Software/Android_Studio/ColorCapture/app/src/main/res/anim/zoom_out.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<set xmlns:android="http://schemas.android.com/apk/res/android"
+ android:interpolator="@android:anim/decelerate_interpolator"
+ android:zAdjustment="top">
+ <scale android:fromXScale="1.0" android:toXScale=".5"
+ android:fromYScale="1.0" android:toYScale=".5"
+ android:pivotX="50%p" android:pivotY="50%p"
+ android:duration="@android:integer/config_mediumAnimTime" />
+ <alpha android:fromAlpha="1.0" android:toAlpha="0"
+ android:duration="@android:integer/config_mediumAnimTime"/>
+</set> \ No newline at end of file
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/activity_loading.xml
index a301532a2..9fb6a6d0e 100644
--- a/Software/Android_Studio/ColorCapture/app/src/main/res/layout/fragment_loading.xml
+++ b/Software/Android_Studio/ColorCapture/app/src/main/res/layout/activity_loading.xml
@@ -1,5 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+
<layout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:bind="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
@@ -7,7 +8,7 @@
<variable
name="vm"
- type="com.twine.colorcapture.views.loading.LoadingFragmentVM" />
+ type="com.twine.colorcapture.views.loading.LoadingActivityVM" />
</data>
<FrameLayout
@@ -21,7 +22,7 @@
android:layoutDirection="ltr"
android:paddingLeft="40dp"
android:paddingRight="40dp"
- tools:context="com.twine.colorcapture.views.loading.LoadingFragment">
+ tools:context="com.twine.colorcapture.views.loading.LoadingActivity">
<!--<TextView-->
diff --git a/Software/Android_Studio/ColorCapture/app/src/main/res/layout/activity_main.xml b/Software/Android_Studio/ColorCapture/app/src/main/res/layout/activity_main.xml
index e650b8328..d2e2f89c1 100644
--- a/Software/Android_Studio/ColorCapture/app/src/main/res/layout/activity_main.xml
+++ b/Software/Android_Studio/ColorCapture/app/src/main/res/layout/activity_main.xml
@@ -44,7 +44,7 @@
android:background="@color/colorTransparent"
bind:normalImage="@drawable/more_normal"
bind:checkedImage="@drawable/more_selected"
- bind:ccc="@={vm.isMoreToggled}"/>
+ bind:checked="@={vm.isMoreToggled}"/>
<Space
android:layout_width="0dp"
@@ -60,7 +60,7 @@
android:background="@color/colorTransparent"
bind:normalImage="@drawable/twinesnap_normal"
bind:checkedImage="@drawable/twinesnap_selected"
- bind:ccc="@={vm.isCaptureToggled}"/>
+ bind:checked="@={vm.isCaptureToggled}"/>
<Space
android:layout_width="0dp"
@@ -77,7 +77,7 @@
android:background="@color/colorTransparent"
bind:normalImage="@drawable/my_colors"
bind:checkedImage="@drawable/selected"
- bind:ccc="@={vm.isMyColorsToggled}"
+ bind:checked="@={vm.isMyColorsToggled}"
/>
</LinearLayout>
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_mycolors.xml
index f62a2f6f2..edc10f2ce 100644
--- a/Software/Android_Studio/ColorCapture/app/src/main/res/layout/fragment_home.xml
+++ b/Software/Android_Studio/ColorCapture/app/src/main/res/layout/fragment_mycolors.xml
@@ -6,7 +6,7 @@
<data>
<variable
name="vm"
- type="com.twine.colorcapture.views.home.HomeFragmentVM" />
+ type="com.twine.colorcapture.views.mycolors.MyColorsFragmentVM" />
</data>
<RelativeLayout
@@ -15,7 +15,7 @@
android:layout_height="match_parent"
android:paddingLeft="40dp"
android:paddingRight="40dp"
- tools:context="com.twine.colorcapture.views.home.HomeFragment">
+ tools:context="com.twine.colorcapture.views.mycolors.MyColorsFragment">
<TextView
@@ -24,19 +24,19 @@
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
- android:text="Home View"
+ android:text="My Colors"
android:textSize="30sp"
- tools:text="Home View" />
+ tools:text="My Colors" />
- <Button
- android:id="@+id/btnStart"
- android:layout_width="150dp"
- android:layout_height="wrap_content"
- android:layout_alignParentBottom="true"
- android:layout_centerHorizontal="true"
- android:layout_marginBottom="36dp"
- android:text="Start"
- bind:command="@{vm.startCaptureCommand}" />
+ <!--<Button-->
+ <!--android:id="@+id/btnStart"-->
+ <!--android:layout_width="150dp"-->
+ <!--android:layout_height="wrap_content"-->
+ <!--android:layout_alignParentBottom="true"-->
+ <!--android:layout_centerHorizontal="true"-->
+ <!--android:layout_marginBottom="36dp"-->
+ <!--android:text="Start"-->
+ <!--bind:command="@{vm.startCaptureCommand}" />-->
</RelativeLayout>
</layout>
diff --git a/Software/Android_Studio/ColorCapture/app/src/main/res/values/styles.xml b/Software/Android_Studio/ColorCapture/app/src/main/res/values/styles.xml
index 1b6d287fa..10dfcc040 100644
--- a/Software/Android_Studio/ColorCapture/app/src/main/res/values/styles.xml
+++ b/Software/Android_Studio/ColorCapture/app/src/main/res/values/styles.xml
@@ -1,6 +1,16 @@
<resources>
+ <style name="WindowAnimationTransition">
+ <item name="android:windowEnterAnimation">@android:anim/fade_in</item>
+ <item name="android:windowExitAnimation">@android:anim/fade_out</item>
+ </style>
+
<style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
+
+ <!-- enable window content transitions -->
+ <!--<item name="android:windowActivityTransitions">true</item>-->
+ <!--<item name="android:windowAnimationStyle">@style/WindowAnimationTransition</item>-->
+
<!-- Customize your theme here. -->
<!--<item name="colorPrimary">@color/colorPrimary</item>-->
<!--<item name="colorPrimaryDark">@color/colorPrimaryDark</item>-->