aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Software/Android_Studio/ColorCapture/app/build.gradle5
-rw-r--r--Software/Android_Studio/ColorCapture/app/src/main/AndroidManifest.xml2
-rw-r--r--Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/core/AnimationsHelper.java4
-rw-r--r--Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/dagger/ApplicationComponent.java4
-rw-r--r--Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/dagger/ViewModelsModule.java10
-rw-r--r--Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/mvvm/FragmentBase.java3
-rw-r--r--Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/mvvm/ViewModelBase.java33
-rw-r--r--Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/navigation/AndroidNavigationProvider.java62
-rw-r--r--Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/navigation/HideHeader.java12
-rw-r--r--Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/navigation/INavigationProvider.java6
-rw-r--r--Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/navigation/NavigationActivity.java1
-rw-r--r--Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/navigation/NavigationFragment.java6
-rw-r--r--Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/settings/SettingsManager.java18
-rw-r--r--Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/main/MainActivity.java1
-rw-r--r--Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/register/RegisterFragmentVM.java14
-rw-r--r--Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/result/IResultFragment.java2
-rw-r--r--Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/result/ResultFragment.java51
-rw-r--r--Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/result/ResultFragmentVM.java41
-rw-r--r--Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/sendtoemail/ISendToEmailFragment.java (renamed from Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/sendtoemail/ISendToEmailActivity.java)3
-rw-r--r--Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/sendtoemail/SendToEmailActivity.java36
-rw-r--r--Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/sendtoemail/SendToEmailActivityVM.java91
-rw-r--r--Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/sendtoemail/SendToEmailFragment.java57
-rw-r--r--Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/sendtoemail/SendToEmailFragmentVM.java106
-rw-r--r--Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/web/ITCCService.java4
-rw-r--r--Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/web/TCCService.java10
-rw-r--r--Software/Android_Studio/ColorCapture/app/src/main/res/layout/email_list_item.xml15
-rw-r--r--Software/Android_Studio/ColorCapture/app/src/main/res/layout/fragment_send_to_email.xml (renamed from Software/Android_Studio/ColorCapture/app/src/main/res/layout/activity_send_to_email.xml)71
-rw-r--r--Software/Android_Studio/ColorCapture/app/src/main/res/values/styles.xml15
-rw-r--r--Software/DB/TCC/TCC.mdfbin8388608 -> 8388608 bytes
-rw-r--r--Software/DB/TCC/TCC_log.ldfbin8388608 -> 8388608 bytes
-rw-r--r--Software/Visual_Studio/Tango.BL/ObservablesContextExtension.cs2
31 files changed, 476 insertions, 209 deletions
diff --git a/Software/Android_Studio/ColorCapture/app/build.gradle b/Software/Android_Studio/ColorCapture/app/build.gradle
index 00eadc9a6..8a0752b39 100644
--- a/Software/Android_Studio/ColorCapture/app/build.gradle
+++ b/Software/Android_Studio/ColorCapture/app/build.gradle
@@ -23,7 +23,7 @@ android {
buildTypes {
debug {
- buildConfigField "String", "WEB_SERVICE_ADDRESS", "\"http://192.168.1.229:45455/api/\""
+ buildConfigField "String", "WEB_SERVICE_ADDRESS", "\"http://10.100.102.88:45455/api/\""
buildConfigField "String", "WEB_SERVICE_APP_ID", "\"Tdf793i4ughsiduf8749509237885ehgfdlkghlT\""
}
@@ -115,6 +115,7 @@ dependencies {
implementation 'com.android.support:appcompat-v7:27.1.1'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
implementation 'com.android.support:support-v4:27.1.1'
+ compile 'com.android.support:design:27.1.1'
implementation 'android.arch.lifecycle:extensions:1.1.1'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
@@ -140,6 +141,8 @@ dependencies {
implementation 'com.github.yoanngoular:bitmapconverter:0.2.0'
compile 'com.github.CardinalNow:Android-CircleProgressIndicator:v0.2'
implementation 'com.github.florent37:shapeofview:1.3.2'
+ compile 'com.google.android.gms:play-services-gcm:16.1.0'
+ compile 'com.google.android.gms:play-services-auth:16.0.1'
}
diff --git a/Software/Android_Studio/ColorCapture/app/src/main/AndroidManifest.xml b/Software/Android_Studio/ColorCapture/app/src/main/AndroidManifest.xml
index 441817928..bbea0549e 100644
--- a/Software/Android_Studio/ColorCapture/app/src/main/AndroidManifest.xml
+++ b/Software/Android_Studio/ColorCapture/app/src/main/AndroidManifest.xml
@@ -46,7 +46,7 @@
</intent-filter>
</activity>
<activity android:name=".views.main.MainActivity"/>
- <activity android:name=".views.sendtoemail.SendToEmailActivity" />
+ <activity android:name=".views.sendtoemail.SendToEmailFragment" />
</application>
</manifest> \ No newline at end of file
diff --git a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/core/AnimationsHelper.java b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/core/AnimationsHelper.java
index 219056c1b..da640fffe 100644
--- a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/core/AnimationsHelper.java
+++ b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/core/AnimationsHelper.java
@@ -19,8 +19,8 @@ public class AnimationsHelper
public static void animateScale(View v, float startScale, float endScale, int duration, boolean keepResult, IAction onCompleted)
{
Animation anim = new ScaleAnimation(
- startScale, endScale, // Start and end values for the X axis scaling
- 1f, 1f, // Start and end values for the Y axis scaling
+ 1f, 1f, // Start and end values for the X axis scaling
+ startScale, endScale, // Start and end values for the Y axis scaling
Animation.RELATIVE_TO_SELF, 0f, // Pivot point of X scaling
Animation.RELATIVE_TO_SELF, 0f); // Pivot point of Y scaling
anim.setFillAfter(keepResult); // Needed to keep the result of the animation
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 db2848fa1..63852f2bc 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
@@ -13,7 +13,7 @@ import com.twine.colorcapture.views.main.MainActivity;
import com.twine.colorcapture.views.register.RegisterFragment;
import com.twine.colorcapture.views.rename.RenameFragment;
import com.twine.colorcapture.views.result.ResultFragment;
-import com.twine.colorcapture.views.sendtoemail.SendToEmailActivity;
+import com.twine.colorcapture.views.sendtoemail.SendToEmailFragment;
import com.twine.colorcapture.views.sendtomachine.SendToMachineFragment;
import javax.inject.Singleton;
@@ -56,5 +56,5 @@ public interface ApplicationComponent
void inject(RenameFragment renameFragment);
- void inject(SendToEmailActivity sendToEmailActivity);
+ void inject(SendToEmailFragment sendToEmailFragment);
}
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 6b99d7ead..8b43a5cec 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
@@ -16,7 +16,7 @@ import com.twine.colorcapture.views.main.MainActivityVM;
import com.twine.colorcapture.views.register.RegisterFragmentVM;
import com.twine.colorcapture.views.rename.RenameFragmentVM;
import com.twine.colorcapture.views.result.ResultFragmentVM;
-import com.twine.colorcapture.views.sendtoemail.SendToEmailActivityVM;
+import com.twine.colorcapture.views.sendtoemail.SendToEmailFragmentVM;
import com.twine.colorcapture.views.sendtomachine.SendToMachineFragmentVM;
import com.twine.colorcapture.web.ITCCService;
@@ -49,9 +49,9 @@ public class ViewModelsModule
@Provides
@Singleton
- public SendToEmailActivityVM provideSendToEmailActivityVM(Bus eventBus, INotificationProvider notificationProvider, INavigationProvider navigationProvider, ITCCService tccService)
+ public SendToEmailFragmentVM provideSendToEmailFragmentVM(Bus eventBus, INotificationProvider notificationProvider, INavigationProvider navigationProvider, ITCCService tccService)
{
- return new SendToEmailActivityVM(eventBus, navigationProvider, notificationProvider, tccService);
+ return new SendToEmailFragmentVM(eventBus, navigationProvider, notificationProvider, tccService);
}
@Provides
@@ -77,9 +77,9 @@ public class ViewModelsModule
@Provides
@Singleton
- public ResultFragmentVM provideResultFragmentVM(Bus eventBus, INavigationProvider navigationProvider, ITCCService tccService)
+ public ResultFragmentVM provideResultFragmentVM(Bus eventBus, INavigationProvider navigationProvider, INotificationProvider notificationProvider, ITCCService tccService)
{
- return new ResultFragmentVM(eventBus, navigationProvider, tccService);
+ return new ResultFragmentVM(eventBus, navigationProvider, notificationProvider, tccService);
}
@Provides
diff --git a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/mvvm/FragmentBase.java b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/mvvm/FragmentBase.java
index 12520c28e..00b07dbba 100644
--- a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/mvvm/FragmentBase.java
+++ b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/mvvm/FragmentBase.java
@@ -73,7 +73,8 @@ public abstract class FragmentBase<BindingView extends ViewDataBinding, VM exten
onCreateListener.invoke(this);
onCreateListener = null;
}
-
+
+
new Handler().postDelayed(() ->
{
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 a9f0550c0..c19baa1e6 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
@@ -19,26 +19,28 @@ public abstract class ViewModelBase<T extends IView> extends ExtendedObject
* The View.
*/
public T view; //TODO: Maybe use WeakReference<T> to not prevent garbage collector from disposing the activity ?
-
+
/**
* Attach view.
*
* @param view the view
*/
- public void attachView(T view) {
+ public void attachView(T view)
+ {
this.view = view;
onViewAttached(view);
}
-
+
/**
* On view attached.
*
* @param view the view
*/
- protected void onViewAttached(T view) {
- Log.i("MVVM",view.getClass().getSimpleName() + " attached to " + this.getClass().getSimpleName());
+ protected void onViewAttached(T view)
+ {
+ Log.i("MVVM", view.getClass().getSimpleName() + " attached to " + this.getClass().getSimpleName());
}
-
+
/**
* Invalidate commands.
*/
@@ -50,8 +52,9 @@ public abstract class ViewModelBase<T extends IView> extends ExtendedObject
{
try
{
- ((RelayCommand)field.get(this)).invalidateCommand();
- } catch (IllegalAccessException e)
+ ((RelayCommand) field.get(this)).invalidateCommand();
+ }
+ catch (IllegalAccessException e)
{
e.printStackTrace();
}
@@ -62,8 +65,10 @@ public abstract class ViewModelBase<T extends IView> extends ExtendedObject
protected void invokeUI(IAction action)
{
Handler handler = new Handler(Looper.getMainLooper());
- handler.post(new Runnable() {
- public void run() {
+ handler.post(new Runnable()
+ {
+ public void run()
+ {
try
{
action.invoke();
@@ -95,4 +100,12 @@ public abstract class ViewModelBase<T extends IView> extends ExtendedObject
{
onNavigatedFrom();
}
+
+ protected void closeActivity()
+ {
+ if (view instanceof ActivityBase)
+ {
+ ((ActivityBase) view).finish();
+ }
+ }
}
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 17904623a..a5c885a59 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
@@ -1,5 +1,6 @@
package com.twine.colorcapture.navigation;
+import android.animation.ValueAnimator;
import android.app.Activity;
import android.app.ActivityManager;
import android.app.FragmentManager;
@@ -9,8 +10,12 @@ import android.content.Intent;
import android.os.Handler;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
+import android.view.View;
+import android.view.ViewGroup;
import com.twine.colorcapture.R;
+import com.twine.colorcapture.core.AnimationsHelper;
+import com.twine.colorcapture.logging.LogManager;
import com.twine.colorcapture.mvvm.ActivityBase;
import com.twine.colorcapture.mvvm.ExtendedObject;
import com.twine.colorcapture.mvvm.FragmentBase;
@@ -22,6 +27,7 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Stack;
+import java.util.concurrent.atomic.AtomicBoolean;
import javax.inject.Inject;
@@ -30,7 +36,7 @@ import javax.inject.Inject;
*/
public class AndroidNavigationProvider extends ExtendedObject implements INavigationProvider
{
- private Activity activity;
+ private ActivityBase activity;
private FragmentBase currentFragment;
private String currentFragmentName;
private int fragment_container;
@@ -39,6 +45,8 @@ public class AndroidNavigationProvider extends ExtendedObject implements INaviga
private Context context;
private List<FragmentNavigatedListener> fragmentNavigatedListeners;
private Stack<NavigationFragment> history;
+ private View headerView;
+ private int headerHeight;
@Inject
public AndroidNavigationProvider(Context context)
@@ -49,13 +57,19 @@ public class AndroidNavigationProvider extends ExtendedObject implements INaviga
}
@Override
- public void registerNavigationActivity(Activity activity, int fragmentContainerId)
+ public void registerNavigationActivity(ActivityBase activity, int fragmentContainerId)
{
this.activity = activity;
this.fragment_container = fragmentContainerId;
}
@Override
+ public void registerHeader(View view)
+ {
+ headerView = view;
+ }
+
+ @Override
public void navigateTo(NavigationFragment fragmentValue, boolean pushCurrentToHistory, boolean pushNextToHistory)
{
navigateTo(fragmentValue.name(), pushCurrentToHistory, pushNextToHistory);
@@ -136,14 +150,16 @@ public class AndroidNavigationProvider extends ExtendedObject implements INaviga
boolean preventCurrentHistory = false;
boolean preventNextHistory = false;
+ AtomicBoolean hideHeader = new AtomicBoolean(false);
try
{
if (currentFragmentName != null)
{
- preventCurrentHistory = NavigationFragment.class.getField(currentFragmentName).getAnnotations().length > 0;
+ preventCurrentHistory = NavigationFragment.class.getField(currentFragmentName).getAnnotation(PreventHistory.class) != null;
}
- preventNextHistory = NavigationFragment.class.getField(fragmentName).getAnnotations().length > 0;
+ preventNextHistory = NavigationFragment.class.getField(fragmentName).getAnnotation(PreventHistory.class) != null;
+ hideHeader.set(NavigationFragment.class.getField(fragmentName).getAnnotation(HideHeader.class) != null);
}
catch (NoSuchFieldException e)
{
@@ -238,6 +254,44 @@ public class AndroidNavigationProvider extends ExtendedObject implements INaviga
((INavigationObjectReceiver) fragmentTo.getVM()).onNavigationObjectReceived(navigationObject);
}
+ if (headerHeight == 0)
+ {
+ headerHeight = headerView.getMeasuredHeight();
+ LogManager.log("Height is: " + headerHeight);
+ }
+
+ if (headerHeight > 0)
+ {
+ if (hideHeader.get())
+ {
+ int height = headerView.getMeasuredHeight();
+ ValueAnimator anim = ValueAnimator.ofInt(height, 0);
+ anim.addUpdateListener(valueAnimator ->
+ {
+ int val = (Integer) valueAnimator.getAnimatedValue();
+ ViewGroup.LayoutParams layoutParams = headerView.getLayoutParams();
+ layoutParams.height = val;
+ headerView.setLayoutParams(layoutParams);
+ });
+ anim.setDuration(300);
+ anim.start();
+ }
+ else
+ {
+ int height = headerView.getMeasuredHeight();
+ ValueAnimator anim = ValueAnimator.ofInt(height, headerHeight);
+ anim.addUpdateListener(valueAnimator ->
+ {
+ int val = (Integer) valueAnimator.getAnimatedValue();
+ ViewGroup.LayoutParams layoutParams = headerView.getLayoutParams();
+ layoutParams.height = val;
+ headerView.setLayoutParams(layoutParams);
+ });
+ anim.setDuration(300);
+ anim.start();
+ }
+ }
+
new Handler().postDelayed(() ->
{
diff --git a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/navigation/HideHeader.java b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/navigation/HideHeader.java
new file mode 100644
index 000000000..b4fc25efb
--- /dev/null
+++ b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/navigation/HideHeader.java
@@ -0,0 +1,12 @@
+package com.twine.colorcapture.navigation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Retention(RetentionPolicy.RUNTIME)
+@Target({ElementType.TYPE, ElementType.FIELD, ElementType.METHOD})
+public @interface HideHeader
+{
+}
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 da696cf6a..e25b7e50e 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
@@ -1,7 +1,9 @@
package com.twine.colorcapture.navigation;
import android.app.Activity;
+import android.view.View;
+import com.twine.colorcapture.mvvm.ActivityBase;
import com.twine.colorcapture.mvvm.FragmentBase;
import com.twine.colorcapture.core.IAction1;
@@ -21,7 +23,9 @@ public interface INavigationProvider
* @param activity the activity
* @param fragmentContainerId the fragment container id
*/
- void registerNavigationActivity(Activity activity, int fragmentContainerId);
+ void registerNavigationActivity(ActivityBase activity, int fragmentContainerId);
+
+ void registerHeader(View view);
/**
* Navigate to the specified fragment name.
diff --git a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/navigation/NavigationActivity.java b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/navigation/NavigationActivity.java
index 760e0f8b6..b03f688bc 100644
--- a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/navigation/NavigationActivity.java
+++ b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/navigation/NavigationActivity.java
@@ -4,5 +4,4 @@ public enum NavigationActivity
{
Loading,
Main,
- SendToEmail,
}
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
index 0731287e8..0d54f2bf4 100644
--- 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
@@ -10,6 +10,8 @@ public enum NavigationFragment
@PreventHistory
SendToMachine,
@PreventHistory
- Rename
-
+ Rename,
+ @PreventHistory
+ @HideHeader
+ SendToEmail,
}
diff --git a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/settings/SettingsManager.java b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/settings/SettingsManager.java
index b90f11a13..502c9f297 100644
--- a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/settings/SettingsManager.java
+++ b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/settings/SettingsManager.java
@@ -18,6 +18,23 @@ public class SettingsManager
private static SettingsManager instance;
private boolean isWelcomeScreenShown;
private List<ColorResult> results;
+ private String email;
+ private List<String> lastEmails;
+
+ public List<String> getLastEmails()
+ {
+ return lastEmails;
+ }
+
+ public String getEmail()
+ {
+ return email;
+ }
+
+ public void setEmail(String email)
+ {
+ this.email = email;
+ }
public boolean isWelcomeScreenShown()
{
@@ -92,5 +109,6 @@ public class SettingsManager
public SettingsManager()
{
results = new ArrayList<>();
+ lastEmails = new ArrayList<>();
}
}
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 f40b78a4b..4190175ce 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
@@ -58,6 +58,7 @@ public class MainActivity extends ActivityBase<ActivityMainBinding, MainActivity
protected void onCreating(Bundle savedInstanceState)
{
navigationProvider.registerNavigationActivity(this, R.id.fragment_container);
+ navigationProvider.registerHeader(frameHeader);
notificationProvider.registerMainActivity(this);
Log.d("TCC", "Registering event listener...");
diff --git a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/register/RegisterFragmentVM.java b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/register/RegisterFragmentVM.java
index 3002bf243..e328a4b77 100644
--- a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/register/RegisterFragmentVM.java
+++ b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/register/RegisterFragmentVM.java
@@ -14,6 +14,7 @@ import com.twine.colorcapture.notification.INotificationProvider;
import com.twine.colorcapture.utils.ThreadingUtils;
import com.twine.colorcapture.views.result.IResultFragment;
import com.twine.colorcapture.web.ITCCService;
+import com.twine.colorcapture.web.TCCService;
import com.twine.colorcapture.web.messages.MachineRegistrationResponse;
import java.util.concurrent.atomic.AtomicBoolean;
@@ -45,7 +46,7 @@ public class RegisterFragmentVM extends ViewModelBase<IResultFragment>
{
AtomicBoolean abort = new AtomicBoolean(false);
- ProgressDialogVM pVM = notificationProvider.showProgress("Register your system","Please wait while we register\nyour system...", (vm) ->
+ ProgressDialogVM pVM = notificationProvider.showProgress("Register your system", "Please wait while we register\nyour system...", (vm) ->
{
abort.set(true);
});
@@ -65,11 +66,10 @@ public class RegisterFragmentVM extends ViewModelBase<IResultFragment>
Log.i("REGISTER", "Registered !");
- notificationProvider.showSuccess("Registering your system","Your device has been succesfully\nregistred.",(e) ->
+ notificationProvider.showSuccess("Registering your system", "Your device has been successfully\nregistered.", (e) ->
{
- MachineRegisteredMessage msg = new MachineRegisteredMessage();
- msg.setMachineRegistrationResponse(response);
- eventBus.post(msg);
+ tccService.setRegistered(true);
+ tccService.setOrganizationMachines(response.getOrganizationMachines());
navigationProvider.navigateBack();
});
}
@@ -81,7 +81,9 @@ public class RegisterFragmentVM extends ViewModelBase<IResultFragment>
catch (Exception ex)
{
pVM.close();
- notificationProvider.showError("Registering your system","Device registration failed.\nPlease check your serial number.",(e) -> {});
+ notificationProvider.showError("Registering your system", "Device registration failed.\nPlease verify your serial number.", (e) ->
+ {
+ });
Log.i("REGISTER", ex.getMessage());
}
diff --git a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/result/IResultFragment.java b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/result/IResultFragment.java
index 2b7c40414..ea0e10604 100644
--- a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/result/IResultFragment.java
+++ b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/result/IResultFragment.java
@@ -1,7 +1,9 @@
package com.twine.colorcapture.views.result;
+import com.twine.colorcapture.core.IAction1;
import com.twine.colorcapture.mvvm.IView;
public interface IResultFragment extends IView
{
+ void getEmailAddress(IAction1<String> callback);
}
diff --git a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/result/ResultFragment.java b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/result/ResultFragment.java
index d634d2634..35aefd3d3 100644
--- a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/result/ResultFragment.java
+++ b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/result/ResultFragment.java
@@ -1,12 +1,24 @@
package com.twine.colorcapture.views.result;
+import android.accounts.AccountManager;
+import android.content.ActivityNotFoundException;
+import android.content.Intent;
+
+import com.google.android.gms.auth.GoogleAuthUtil;
+import com.google.android.gms.common.AccountPicker;
import com.twine.colorcapture.App;
import com.twine.colorcapture.R;
+import com.twine.colorcapture.core.IAction1;
import com.twine.colorcapture.databinding.FragmentResultBinding;
+import com.twine.colorcapture.logging.LogManager;
import com.twine.colorcapture.mvvm.FragmentBase;
-public class ResultFragment extends FragmentBase<FragmentResultBinding,ResultFragmentVM>
+import static android.app.Activity.RESULT_OK;
+
+public class ResultFragment extends FragmentBase<FragmentResultBinding, ResultFragmentVM> implements IResultFragment
{
+ private static final int REQUEST_CODE_EMAIL = 1;
+ private IAction1<String> emailAddressCallback;
@Override
protected int getLayoutId()
@@ -25,4 +37,41 @@ public class ResultFragment extends FragmentBase<FragmentResultBinding,ResultFra
{
return "Result";
}
+
+ @Override
+ public void getEmailAddress(IAction1<String> callback)
+ {
+ emailAddressCallback = callback;
+
+ try
+ {
+ Intent intent = AccountPicker.newChooseAccountIntent(null, null,
+ new String[]{GoogleAuthUtil.GOOGLE_ACCOUNT_TYPE}, false, null, null, null, null);
+ startActivityForResult(intent, REQUEST_CODE_EMAIL);
+ }
+ catch (ActivityNotFoundException e)
+ {
+ emailAddressCallback.invoke("error");
+ }
+ }
+
+ @Override
+ public void onActivityResult(int requestCode, int resultCode, Intent data)
+ {
+ super.onActivityResult(requestCode, resultCode, data);
+
+ try
+ {
+ if (requestCode == REQUEST_CODE_EMAIL && resultCode == RESULT_OK)
+ {
+ String accountName = data.getStringExtra(AccountManager.KEY_ACCOUNT_NAME);
+ emailAddressCallback.invoke(accountName);
+ }
+ }
+ catch (Exception ex)
+ {
+ LogManager.log(ex, "Error while trying to parse email address result.");
+ emailAddressCallback.invoke("error");
+ }
+ }
}
diff --git a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/result/ResultFragmentVM.java b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/result/ResultFragmentVM.java
index 4709cd532..a4b1bd2e7 100644
--- a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/result/ResultFragmentVM.java
+++ b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/result/ResultFragmentVM.java
@@ -4,6 +4,7 @@ import android.util.Log;
import com.squareup.otto.Bus;
import com.squareup.otto.Subscribe;
+import com.twine.colorcapture.logging.LogManager;
import com.twine.colorcapture.messages.MachineRegisteredMessage;
import com.twine.colorcapture.models.ColorResult;
import com.twine.colorcapture.models.ColorResultVM;
@@ -16,6 +17,7 @@ import com.twine.colorcapture.navigation.NavigationActivity;
import com.twine.colorcapture.navigation.NavigationFragment;
import com.twine.colorcapture.navigation.TabState;
import com.twine.colorcapture.navigation.TabStateManager;
+import com.twine.colorcapture.notification.INotificationProvider;
import com.twine.colorcapture.settings.SettingsManager;
import com.twine.colorcapture.web.ITCCService;
import com.twine.colorcapture.web.messages.DetectionResponse;
@@ -31,6 +33,7 @@ import javax.inject.Inject;
public class ResultFragmentVM extends ViewModelBase<IResultFragment> implements INavigationObjectReceiver<ColorResult>
{
private INavigationProvider navigationProvider;
+ private INotificationProvider notificationProvider;
private ITCCService tccService;
private Bus eventBus;
public ColorResult colorResult;
@@ -46,9 +49,10 @@ public class ResultFragmentVM extends ViewModelBase<IResultFragment> implements
@Inject
- public ResultFragmentVM(Bus eventBus, INavigationProvider navigationProvider, ITCCService tccService)
+ public ResultFragmentVM(Bus eventBus, INavigationProvider navigationProvider, INotificationProvider notificationProvider, ITCCService tccService)
{
this.navigationProvider = navigationProvider;
+ this.notificationProvider = notificationProvider;
this.tccService = tccService;
isCameraColorToggled = new DependencyProperty<>(false);
@@ -61,13 +65,6 @@ public class ResultFragmentVM extends ViewModelBase<IResultFragment> implements
registerMachineCommand = new RelayCommand(this::handlerRegisterMachineCommand);
this.eventBus = eventBus;
- eventBus.register(this);
- }
-
- @Subscribe
- public void handleMachineRegisteredMessage(MachineRegisteredMessage msg)
- {
- isMachineRegistred.set(true);
}
private void handlerRegisterMachineCommand()
@@ -87,7 +84,32 @@ public class ResultFragmentVM extends ViewModelBase<IResultFragment> implements
private void handleEmailCommand()
{
- navigationProvider.navigateWithObjectTo(NavigationActivity.SendToEmail, false, colorResult);
+ if (SettingsManager.getInstance().getEmail() == null)
+ {
+ view.getEmailAddress((address) ->
+ {
+ LogManager.log("Got email address: " + address);
+
+ if (address != null)
+ {
+ if (address.equals("error"))
+ {
+ notificationProvider.showError("Send to email", "An error occurred while trying to set your email address", (x) ->
+ {
+ });
+ return;
+ }
+
+ SettingsManager.getInstance().setEmail(address);
+ SettingsManager.save();
+ navigationProvider.navigateWithObjectTo(NavigationFragment.SendToEmail, true, false, colorResult);
+ }
+ });
+ }
+ else
+ {
+ navigationProvider.navigateWithObjectTo(NavigationFragment.SendToEmail, true, false, colorResult);
+ }
}
private void toggleCameraColor()
@@ -110,6 +132,7 @@ public class ResultFragmentVM extends ViewModelBase<IResultFragment> implements
try
{
isMachineRegistred.set(tccService.getDefinition().isRegistered());
+ boolean a = isMachineRegistred.get();
}
catch (Exception e)
{
diff --git a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/sendtoemail/ISendToEmailActivity.java b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/sendtoemail/ISendToEmailFragment.java
index 980d2eb49..c102f370d 100644
--- a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/sendtoemail/ISendToEmailActivity.java
+++ b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/sendtoemail/ISendToEmailFragment.java
@@ -2,6 +2,7 @@ package com.twine.colorcapture.views.sendtoemail;
import com.twine.colorcapture.mvvm.IView;
-public interface ISendToEmailActivity extends IView
+public interface ISendToEmailFragment extends IView
{
+
}
diff --git a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/sendtoemail/SendToEmailActivity.java b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/sendtoemail/SendToEmailActivity.java
deleted file mode 100644
index deff5b244..000000000
--- a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/sendtoemail/SendToEmailActivity.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package com.twine.colorcapture.views.sendtoemail;
-
-import android.app.Activity;
-import android.os.Bundle;
-
-import com.twine.colorcapture.App;
-import com.twine.colorcapture.R;
-import com.twine.colorcapture.databinding.ActivitySendToEmailBinding;
-import com.twine.colorcapture.mvvm.ActivityBase;
-import com.twine.colorcapture.notification.INotificationProvider;
-
-import javax.inject.Inject;
-
-public class SendToEmailActivity extends ActivityBase<ActivitySendToEmailBinding, SendToEmailActivityVM> implements ISendToEmailActivity
-{
- @Inject
- public INotificationProvider notificationProvider;
-
- @Override
- protected void onCreating(Bundle savedInstanceState)
- {
- notificationProvider.registerMainActivity(this);
- }
-
- @Override
- protected int getLayoutId()
- {
- return R.layout.activity_send_to_email;
- }
-
- @Override
- protected void inject()
- {
- App.getComponent().inject(this);
- }
-}
diff --git a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/sendtoemail/SendToEmailActivityVM.java b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/sendtoemail/SendToEmailActivityVM.java
deleted file mode 100644
index 6e17dc12d..000000000
--- a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/sendtoemail/SendToEmailActivityVM.java
+++ /dev/null
@@ -1,91 +0,0 @@
-package com.twine.colorcapture.views.sendtoemail;
-
-import com.squareup.otto.Bus;
-import com.squareup.otto.Subscribe;
-import com.twine.colorcapture.core.Task;
-import com.twine.colorcapture.dialogs.progress.ProgressDialogVM;
-import com.twine.colorcapture.models.ColorResult;
-import com.twine.colorcapture.mvvm.DependencyProperty;
-import com.twine.colorcapture.mvvm.RelayCommand;
-import com.twine.colorcapture.mvvm.ViewModelBase;
-import com.twine.colorcapture.navigation.INavigationObjectReceiver;
-import com.twine.colorcapture.navigation.INavigationProvider;
-import com.twine.colorcapture.notification.INotificationProvider;
-import com.twine.colorcapture.web.ITCCService;
-import com.twine.colorcapture.web.messages.ResultByEmailRequest;
-
-import java.util.concurrent.atomic.AtomicBoolean;
-
-public class SendToEmailActivityVM extends ViewModelBase<ISendToEmailActivity> implements INavigationObjectReceiver<ColorResult>
-{
- private INavigationProvider navigationProvider;
- private INotificationProvider notificationProvider;
- private ITCCService tccService;
-
- public RelayCommand sendCommand;
- public ColorResult colorResult;
- public DependencyProperty<String> to;
- public DependencyProperty<String> from;
- public DependencyProperty<String> message;
-
- public SendToEmailActivityVM(Bus eventBus, INavigationProvider navigationProvider, INotificationProvider notificationProvider, ITCCService tccService)
- {
- this.navigationProvider = navigationProvider;
- this.notificationProvider = notificationProvider;
- this.tccService = tccService;
-
- to = new DependencyProperty<>("");
- from = new DependencyProperty<>("");
- message = new DependencyProperty<>("");
-
- sendCommand = new RelayCommand(this::handleSendCommand);
- }
-
- private void handleSendCommand()
- {
- AtomicBoolean abort = new AtomicBoolean();
-
- ProgressDialogVM vm = notificationProvider.showProgress("Send to email", "Sending color result to " + to.get(), (x) ->
- {
- abort.set(true);
- });
-
- new Task.TaskBuilder().setAction(() ->
- {
- ResultByEmailRequest request = new ResultByEmailRequest();
- request.setDetectionResponse(colorResult.getDetectionResponse());
- request.setTo(to.get());
- request.setFrom(from.get());
- request.setMessage(message.get());
- tccService.sendResultByEmail(request);
- }).setError((ex) ->
- {
- if (!abort.get())
- {
- invokeUI(() ->
- {
- vm.close();
- notificationProvider.showError("Send to email", "An error occurred. Please try again later.", (x) ->
- {
- });
- });
- }
- }).setContinueWith(() ->
- {
- if (!abort.get())
- {
- vm.close();
- notificationProvider.showSuccess("Send to email", "Color result sent successfully", (x) ->
- {
- });
- navigationProvider.navigateBack();
- }
- }).build().start();
- }
-
- @Override
- public void onNavigationObjectReceived(ColorResult colorResult)
- {
- this.colorResult = colorResult;
- }
-}
diff --git a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/sendtoemail/SendToEmailFragment.java b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/sendtoemail/SendToEmailFragment.java
new file mode 100644
index 000000000..c34c3e71c
--- /dev/null
+++ b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/sendtoemail/SendToEmailFragment.java
@@ -0,0 +1,57 @@
+package com.twine.colorcapture.views.sendtoemail;
+
+import android.support.v7.widget.AppCompatAutoCompleteTextView;
+import android.widget.ArrayAdapter;
+
+import com.mobsandgeeks.saripaar.annotation.Email;
+import com.mobsandgeeks.saripaar.annotation.NotEmpty;
+import com.twine.colorcapture.App;
+import com.twine.colorcapture.R;
+import com.twine.colorcapture.databinding.FragmentSendToEmailBinding;
+import com.twine.colorcapture.mvvm.FragmentBase;
+import com.twine.colorcapture.notification.INotificationProvider;
+import com.twine.colorcapture.settings.SettingsManager;
+
+import java.util.List;
+
+import javax.inject.Inject;
+
+import butterknife.BindView;
+
+public class SendToEmailFragment extends FragmentBase<FragmentSendToEmailBinding, SendToEmailFragmentVM> implements ISendToEmailFragment
+{
+ @Inject
+ public INotificationProvider notificationProvider;
+
+ @BindView(R.id.txtEmailTo)
+ @NotEmpty
+ @Email(message = "Please enter a valid email address")
+ AppCompatAutoCompleteTextView txtEmailTo;
+
+ @Override
+ protected void onCreated()
+ {
+ super.onCreated();
+ List<String> arr = SettingsManager.getInstance().getLastEmails();
+ ArrayAdapter<String> adapter = new ArrayAdapter<>(this.getActivity(), R.layout.email_list_item, arr);
+ txtEmailTo.setAdapter(adapter);
+ }
+
+ @Override
+ protected int getLayoutId()
+ {
+ return R.layout.fragment_send_to_email;
+ }
+
+ @Override
+ protected void inject()
+ {
+ App.getComponent().inject(this);
+ }
+
+ @Override
+ public String getTitle()
+ {
+ return "Send To Email";
+ }
+}
diff --git a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/sendtoemail/SendToEmailFragmentVM.java b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/sendtoemail/SendToEmailFragmentVM.java
new file mode 100644
index 000000000..8638f8719
--- /dev/null
+++ b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/sendtoemail/SendToEmailFragmentVM.java
@@ -0,0 +1,106 @@
+package com.twine.colorcapture.views.sendtoemail;
+
+import com.squareup.otto.Bus;
+import com.twine.colorcapture.core.Task;
+import com.twine.colorcapture.dialogs.progress.ProgressDialogVM;
+import com.twine.colorcapture.models.ColorResult;
+import com.twine.colorcapture.mvvm.DependencyProperty;
+import com.twine.colorcapture.mvvm.RelayCommand;
+import com.twine.colorcapture.mvvm.ViewModelBase;
+import com.twine.colorcapture.navigation.INavigationObjectReceiver;
+import com.twine.colorcapture.navigation.INavigationProvider;
+import com.twine.colorcapture.notification.INotificationProvider;
+import com.twine.colorcapture.settings.SettingsManager;
+import com.twine.colorcapture.web.ITCCService;
+import com.twine.colorcapture.web.messages.ResultByEmailRequest;
+
+import java.util.List;
+import java.util.concurrent.atomic.AtomicBoolean;
+
+import static br.com.zbra.androidlinq.Linq.stream;
+
+public class SendToEmailFragmentVM extends ViewModelBase<ISendToEmailFragment> implements INavigationObjectReceiver<ColorResult>
+{
+ private INavigationProvider navigationProvider;
+ private INotificationProvider notificationProvider;
+ private ITCCService tccService;
+
+ public RelayCommand sendCommand;
+ public ColorResult colorResult;
+ public DependencyProperty<String> to;
+ public DependencyProperty<String> message;
+
+ public SendToEmailFragmentVM(Bus eventBus, INavigationProvider navigationProvider, INotificationProvider notificationProvider, ITCCService tccService)
+ {
+ this.navigationProvider = navigationProvider;
+ this.notificationProvider = notificationProvider;
+ this.tccService = tccService;
+
+ to = new DependencyProperty<>("");
+ message = new DependencyProperty<>("");
+
+ sendCommand = new RelayCommand(this::handleSendCommand);
+ }
+
+ private void handleSendCommand()
+ {
+ view.validateFields((valid) ->
+ {
+ if (valid)
+ {
+ AtomicBoolean abort = new AtomicBoolean();
+
+ ProgressDialogVM vm = notificationProvider.showProgress("Send to email", "Sending color result to " + to.get(), (x) ->
+ {
+ abort.set(true);
+ });
+
+ new Task.TaskBuilder().setAction(() ->
+ {
+ ResultByEmailRequest request = new ResultByEmailRequest();
+ request.setDetectionResponse(colorResult.getDetectionResponse());
+ request.setTo(to.get());
+ request.setFrom(SettingsManager.getInstance().getEmail());
+ request.setMessage(message.get());
+ tccService.sendResultByEmail(request);
+ }).setError((ex) ->
+ {
+ if (!abort.get())
+ {
+ invokeUI(() ->
+ {
+ vm.close();
+ notificationProvider.showError("Send to email", "Something bad happened. Please try again later.", (x) ->
+ {
+ });
+ });
+ }
+ }).setContinueWith(() ->
+ {
+ if (!abort.get())
+ {
+ List<String> emails = SettingsManager.getInstance().getLastEmails();
+
+ if (!stream(emails).any(x -> x.equals(to.get().trim())))
+ {
+ emails.add(to.get().trim());
+ SettingsManager.save();
+ }
+
+ vm.close();
+ notificationProvider.showSuccess("Send to email", "Your detected color result is on its way!", (x) ->
+ {
+ closeActivity();
+ });
+ }
+ }).build().start();
+ }
+ });
+ }
+
+ @Override
+ public void onNavigationObjectReceived(ColorResult colorResult)
+ {
+ this.colorResult = colorResult;
+ }
+}
diff --git a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/web/ITCCService.java b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/web/ITCCService.java
index 48f2f7a28..8e39fff8e 100644
--- a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/web/ITCCService.java
+++ b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/web/ITCCService.java
@@ -25,4 +25,8 @@ public interface ITCCService
boolean isRegistered();
List<String> getOrganizationMachines();
+
+ void setRegistered(boolean registered);
+
+ void setOrganizationMachines(List<String> organizationMachines);
}
diff --git a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/web/TCCService.java b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/web/TCCService.java
index 13a27bd34..b56eead39 100644
--- a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/web/TCCService.java
+++ b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/web/TCCService.java
@@ -219,4 +219,14 @@ public class TCCService implements ITCCService
{
return organizationMachines;
}
+
+ public void setRegistered(boolean registered)
+ {
+ isRegistered = registered;
+ }
+
+ public void setOrganizationMachines(List<String> organizationMachines)
+ {
+ this.organizationMachines = organizationMachines;
+ }
}
diff --git a/Software/Android_Studio/ColorCapture/app/src/main/res/layout/email_list_item.xml b/Software/Android_Studio/ColorCapture/app/src/main/res/layout/email_list_item.xml
new file mode 100644
index 000000000..b88603a1a
--- /dev/null
+++ b/Software/Android_Studio/ColorCapture/app/src/main/res/layout/email_list_item.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<TextView xmlns:android="http://schemas.android.com/apk/res/android"
+ android:background="@color/white"
+ android:id="@android:id/text1"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:minHeight="?android:attr/listPreferredItemHeight"
+ android:textAppearance="?android:attr/textAppearanceLarge"
+ android:textColor="@color/colorPrimaryBackground"
+ android:gravity="center_vertical"
+ android:paddingStart="14dip"
+ android:paddingEnd="15dip"
+ android:ellipsize="marquee"
+ /> \ No newline at end of file
diff --git a/Software/Android_Studio/ColorCapture/app/src/main/res/layout/activity_send_to_email.xml b/Software/Android_Studio/ColorCapture/app/src/main/res/layout/fragment_send_to_email.xml
index 22daa7b14..f1c00d44e 100644
--- a/Software/Android_Studio/ColorCapture/app/src/main/res/layout/activity_send_to_email.xml
+++ b/Software/Android_Studio/ColorCapture/app/src/main/res/layout/fragment_send_to_email.xml
@@ -8,14 +8,14 @@
<variable
name="vm"
- type="com.twine.colorcapture.views.sendtoemail.SendToEmailActivityVM" />
+ type="com.twine.colorcapture.views.sendtoemail.SendToEmailFragmentVM" />
</data>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layoutDirection="ltr"
- tools:context="com.twine.colorcapture.views.sendtoemail.SendToEmailActivity">
+ tools:context="com.twine.colorcapture.views.sendtoemail.SendToEmailFragment">
<FrameLayout
android:id="@+id/frameTitle"
@@ -31,7 +31,7 @@
android:layout_gravity="left|center"
android:fontFamily="@font/flexo_bold"
android:letterSpacing="0.07"
- android:text="Share your color"
+ android:text="Send To Email"
android:textSize="17.3sp" />
<android.support.v7.widget.AppCompatButton
@@ -104,49 +104,62 @@
android:layout_height="4dp"
android:background="@color/light_gray" />
- <android.support.v7.widget.AppCompatEditText
+ <android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:layout_margin="20dp"
- android:backgroundTint="@color/colorPrimaryBackground"
- android:fontFamily="@font/flexo_light"
- android:hint="To"
- android:inputType="textEmailAddress"
- android:letterSpacing="0.07"
- android:text="@={vm.to}"
- android:textColor="@color/colorPrimaryBackground"
android:textColorHint="@color/text_gray"
- android:textDirection="ltr"
- android:textSize="15.4sp" />
+ android:layout_marginTop="10dp">
- <android.support.v7.widget.AppCompatEditText
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_margin="20dp"
- android:backgroundTint="@color/colorPrimaryBackground"
- android:fontFamily="@font/flexo_light"
- android:hint="From"
- android:inputType="textEmailAddress"
- android:letterSpacing="0.07"
- android:text="@={vm.from}"
- android:textColor="@color/colorPrimaryBackground"
- android:textColorHint="@color/text_gray"
- android:textDirection="ltr"
- android:textSize="15.4sp" />
+ <!--<android.support.v7.widget.AppCompatEditText-->
+ <!--android:id="@+id/txtEmailTo"-->
+ <!--android:layout_width="match_parent"-->
+ <!--android:layout_height="wrap_content"-->
+ <!--android:layout_margin="20dp"-->
+ <!--android:backgroundTint="@color/colorPrimaryBackground"-->
+ <!--android:fontFamily="@font/flexo_light"-->
+ <!--android:hint="To"-->
+ <!--android:inputType="textEmailAddress"-->
+ <!--android:letterSpacing="0.07"-->
+ <!--android:singleLine="true"-->
+ <!--android:text="@={vm.to}"-->
+ <!--android:textColor="@color/colorPrimaryBackground"-->
+ <!--android:textColorHint="@color/text_gray"-->
+ <!--android:textDirection="ltr"-->
+ <!--android:textSize="15.4sp" />-->
+
+ <android.support.v7.widget.AppCompatAutoCompleteTextView
+ android:id="@+id/txtEmailTo"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_margin="20dp"
+ android:fontFamily="@font/flexo_light"
+ android:inputType="textEmailAddress"
+ android:letterSpacing="0.07"
+ android:text="@={vm.to}"
+ android:textColor="@color/colorPrimaryBackground"
+ android:textColorHint="@color/text_gray"
+ android:hint="To"
+ android:textDirection="ltr"
+ android:completionThreshold="1"
+ android:theme="@style/Autocomplete"
+ android:textSize="15.4sp"/>
+
+ </android.support.design.widget.TextInputLayout>
<android.support.v7.widget.AppCompatEditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="20dp"
- android:backgroundTint="@color/colorTransparent"
android:fontFamily="@font/flexo_light"
android:gravity="top|left"
android:hint="Message"
android:inputType="textMultiLine"
android:letterSpacing="0.07"
android:lines="8"
+ android:background="@drawable/border"
android:maxLines="10"
android:minLines="6"
+ android:padding="5dp"
android:scrollbars="vertical"
android:text="@={vm.message}"
android:textColor="@color/colorPrimaryBackground"
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 aaf895d46..c283a135d 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
@@ -11,11 +11,16 @@
<!--<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>-->
- <!--<item name="colorAccent">@color/colorAccent</item>-->
- <item name="android:textColor">#ffffffff</item>
+ <!--Customize your theme here.-->
+ <item name="colorPrimary">@color/colorPrimaryBackground</item>
+ <item name="colorPrimaryDark">@color/colorDarkBackground</item>
+ <item name="colorAccent">@color/colorGradientAccent2</item>
+ <item name="android:textColor">@color/white</item>
+ </style>
+
+ <style name="Autocomplete">
+ <item name="colorControlNormal">@color/text_gray</item>
+ <item name="colorControlActivated">@color/colorPrimaryBackground</item>
</style>
<declare-styleable name="ToggleImageButton">
diff --git a/Software/DB/TCC/TCC.mdf b/Software/DB/TCC/TCC.mdf
index 7a4520dae..0df5506f9 100644
--- a/Software/DB/TCC/TCC.mdf
+++ b/Software/DB/TCC/TCC.mdf
Binary files differ
diff --git a/Software/DB/TCC/TCC_log.ldf b/Software/DB/TCC/TCC_log.ldf
index 85ea1e674..6aaa32d44 100644
--- a/Software/DB/TCC/TCC_log.ldf
+++ b/Software/DB/TCC/TCC_log.ldf
Binary files differ
diff --git a/Software/Visual_Studio/Tango.BL/ObservablesContextExtension.cs b/Software/Visual_Studio/Tango.BL/ObservablesContextExtension.cs
index 05484d67c..9f6797b9a 100644
--- a/Software/Visual_Studio/Tango.BL/ObservablesContextExtension.cs
+++ b/Software/Visual_Studio/Tango.BL/ObservablesContextExtension.cs
@@ -17,7 +17,7 @@ using Tango.Settings;
namespace Tango.BL
{
- [DbConfigurationType(typeof(ObservablesContextConfiguration))]
+ //[DbConfigurationType(typeof(ObservablesContextConfiguration))]
public partial class ObservablesContext
{
private List<ObservableModifiedEventArgs> _pending_notifications = new List<ObservableModifiedEventArgs>();