aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Android_Studio
diff options
context:
space:
mode:
Diffstat (limited to 'Software/Android_Studio')
-rw-r--r--Software/Android_Studio/ColorCapture/app/build.gradle4
-rw-r--r--Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/dagger/ApplicationComponent.java6
-rw-r--r--Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/dagger/ViewModelsModule.java28
-rw-r--r--Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/mvvm/FragmentBase.java5
-rw-r--r--Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/navigation/AndroidNavigationProvider.java6
-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/NavigationFragment.java16
-rw-r--r--Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/about/AboutFragmentVM.java13
-rw-r--r--Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/card/CardFragment.java49
-rw-r--r--Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/card/CardFragmentVM.java65
-rw-r--r--Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/card/ICardFragment.java3
-rw-r--r--Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/main/MainActivity.java19
-rw-r--r--Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/main/MainActivityVM.java8
-rw-r--r--Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/print/IPrintFragment.java7
-rw-r--r--Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/print/PrintFragment.java30
-rw-r--r--Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/print/PrintFragmentVM.java40
-rw-r--r--Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/twine/TwineFragmentVM.java13
-rw-r--r--Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/web/CustomWebViewClient.java66
-rw-r--r--Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/web/IWebFragment.java8
-rw-r--r--Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/web/WebFragment.java122
-rw-r--r--Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/web/WebFragmentVM.java13
-rw-r--r--Software/Android_Studio/ColorCapture/app/src/main/res/drawable-hdpi/pdf_file.pngbin0 -> 4485 bytes
-rw-r--r--Software/Android_Studio/ColorCapture/app/src/main/res/drawable-mdpi/pdf_file.pngbin0 -> 2764 bytes
-rw-r--r--Software/Android_Studio/ColorCapture/app/src/main/res/drawable-xhdpi/pdf_file.pngbin0 -> 6368 bytes
-rw-r--r--Software/Android_Studio/ColorCapture/app/src/main/res/drawable-xxhdpi/pdf_file.pngbin0 -> 10351 bytes
-rw-r--r--Software/Android_Studio/ColorCapture/app/src/main/res/drawable-xxxhdpi/pdf_file.pngbin0 -> 14446 bytes
-rw-r--r--Software/Android_Studio/ColorCapture/app/src/main/res/layout/fragment_card.xml104
-rw-r--r--Software/Android_Studio/ColorCapture/app/src/main/res/layout/fragment_print.xml145
-rw-r--r--Software/Android_Studio/ColorCapture/app/src/main/res/layout/fragment_send_to_email.xml19
-rw-r--r--Software/Android_Studio/ColorCapture/app/src/main/res/layout/fragment_web.xml43
-rw-r--r--Software/Android_Studio/ColorCapture/app/src/main/res/layout/side_menu.xml3
31 files changed, 778 insertions, 63 deletions
diff --git a/Software/Android_Studio/ColorCapture/app/build.gradle b/Software/Android_Studio/ColorCapture/app/build.gradle
index 500c9cfce..8aea1cf5a 100644
--- a/Software/Android_Studio/ColorCapture/app/build.gradle
+++ b/Software/Android_Studio/ColorCapture/app/build.gradle
@@ -6,8 +6,8 @@ android {
applicationId "com.twine.colorcapture"
minSdkVersion 22
targetSdkVersion 27
- versionCode 10
- versionName "2.0"
+ versionCode 11
+ versionName "2.1"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
externalNativeBuild {
cmake {
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 fbb524754..86a6f337a 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
@@ -12,12 +12,14 @@ import com.twine.colorcapture.views.card.CardFragment;
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.print.PrintFragment;
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.SendToEmailFragment;
import com.twine.colorcapture.views.sendtomachine.SendToMachineFragment;
import com.twine.colorcapture.views.twine.TwineFragment;
+import com.twine.colorcapture.views.web.WebFragment;
import javax.inject.Singleton;
@@ -66,4 +68,8 @@ public interface ApplicationComponent
void inject(TwineFragment twineFragment);
void inject(CardFragment cardFragment);
+
+ void inject(WebFragment webFragment);
+
+ void inject(PrintFragment printFragment);
}
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 0a161bd7b..9babc4961 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
@@ -15,12 +15,14 @@ import com.twine.colorcapture.views.card.CardFragmentVM;
import com.twine.colorcapture.views.loading.LoadingActivityVM;
import com.twine.colorcapture.views.mycolors.MyColorsFragmentVM;
import com.twine.colorcapture.views.main.MainActivityVM;
+import com.twine.colorcapture.views.print.PrintFragmentVM;
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.SendToEmailFragmentVM;
import com.twine.colorcapture.views.sendtomachine.SendToMachineFragmentVM;
import com.twine.colorcapture.views.twine.TwineFragmentVM;
+import com.twine.colorcapture.views.web.WebFragmentVM;
import com.twine.colorcapture.web.ITCCService;
import javax.inject.Singleton;
@@ -59,6 +61,13 @@ public class ViewModelsModule
@Provides
@Singleton
+ public PrintFragmentVM providePrintFragmentVM(INotificationProvider notificationProvider, INavigationProvider navigationProvider, ITCCService tccService)
+ {
+ return new PrintFragmentVM(navigationProvider, notificationProvider, tccService);
+ }
+
+ @Provides
+ @Singleton
public MyColorsFragmentVM provideMyColorsFragmentVM(Bus eventBus, INotificationProvider notificationProvider, INavigationProvider navigationProvider)
{
return new MyColorsFragmentVM(navigationProvider, notificationProvider);
@@ -108,23 +117,30 @@ public class ViewModelsModule
@Provides
@Singleton
- public AboutFragmentVM provideAboutFragmentVM()
+ public AboutFragmentVM provideAboutFragmentVM(INavigationProvider navigationProvider)
+ {
+ return new AboutFragmentVM(navigationProvider);
+ }
+
+ @Provides
+ @Singleton
+ public TwineFragmentVM provideTwineFragmentVM(INavigationProvider navigationProvider)
{
- return new AboutFragmentVM();
+ return new TwineFragmentVM(navigationProvider);
}
@Provides
@Singleton
- public TwineFragmentVM provideTwineFragmentVM()
+ public CardFragmentVM provideCardFragmentVM(INavigationProvider navigationProvider, INotificationProvider notificationProvider)
{
- return new TwineFragmentVM();
+ return new CardFragmentVM(navigationProvider, notificationProvider);
}
@Provides
@Singleton
- public CardFragmentVM provideCardFragmentVM(INavigationProvider navigationProvider)
+ public WebFragmentVM provideWebFragmentVM()
{
- return new CardFragmentVM(navigationProvider);
+ return new WebFragmentVM();
}
@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 00b07dbba..a03bed247 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
@@ -173,4 +173,9 @@ public abstract class FragmentBase<BindingView extends ViewDataBinding, VM exten
{
return vm;
}
+
+ public boolean onBackPressed()
+ {
+ return false;
+ }
}
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 ca51b48ff..19f588eb5 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
@@ -121,6 +121,12 @@ public class AndroidNavigationProvider extends ExtendedObject implements INaviga
}
@Override
+ public FragmentBase getCurrentFragmentInstance()
+ {
+ return currentFragment;
+ }
+
+ @Override
public boolean canNavigateBack()
{
return history.size() > 0 && history.peek() != NavigationFragment.valueOf(currentFragmentName);
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 3df7ed5bc..e59c9cebf 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
@@ -52,6 +52,12 @@ public interface INavigationProvider
NavigationFragment getCurrentFragment();
/**
+ * Gets the current fragment instance
+ * @return
+ */
+ FragmentBase getCurrentFragmentInstance();
+
+ /**
* Gets a value determining whether there is any fragment to navigate back to in the history.
*
* @return
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 64b7ba9f9..7564a4e09 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
@@ -5,21 +5,37 @@ public enum NavigationFragment
MyColors,
Capture,
Result,
+
@PreventHistory
Register,
+
@PreventHistory
SendToMachine,
+
@PreventHistory
Rename,
+
@PreventHistory
@HideHeader
SendToEmail,
+
@PreventHistory
About,
+
@PreventHistory
Twine,
+
@PreventHistory
Card,
+
@PreventHistory
CardOrder,
+
+ @PreventHistory
+ @HideHeader
+ Web,
+
+ @PreventHistory
+ @HideHeader
+ Print,
}
diff --git a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/about/AboutFragmentVM.java b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/about/AboutFragmentVM.java
index b095798e1..a9e2c7595 100644
--- a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/about/AboutFragmentVM.java
+++ b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/about/AboutFragmentVM.java
@@ -9,19 +9,25 @@ import com.twine.colorcapture.App;
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.NavigationFragment;
import com.twine.colorcapture.navigation.TabState;
import com.twine.colorcapture.navigation.TabStateManager;
public class AboutFragmentVM extends ViewModelBase<IAboutFragment>
{
+ private INavigationProvider navigationProvider;
+
public RelayCommand contactCommand;
public RelayCommand termsOfUseCommand;
public RelayCommand privacyPolicyCommand;
public DependencyProperty<String> version;
- public AboutFragmentVM()
+ public AboutFragmentVM(INavigationProvider navigationProvider)
{
+ this.navigationProvider = navigationProvider;
+
contactCommand = new RelayCommand(() -> openBrowser("http://twine-s.com/contact/contact-us"));
termsOfUseCommand = new RelayCommand(() -> openBrowser("http://twine-s.com/privacy-policy"));
privacyPolicyCommand = new RelayCommand(() -> openBrowser("http://twine-s.com/privacy-policy"));
@@ -40,8 +46,9 @@ public class AboutFragmentVM extends ViewModelBase<IAboutFragment>
private void openBrowser(String url)
{
- Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
- App.getContext().startActivity(browserIntent);
+ navigationProvider.navigateWithObjectTo(NavigationFragment.Web, true, false, url);
+// Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
+// App.getContext().startActivity(browserIntent);
}
@Override
diff --git a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/card/CardFragment.java b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/card/CardFragment.java
index bdcac205d..d41ebae36 100644
--- a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/card/CardFragment.java
+++ b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/card/CardFragment.java
@@ -1,14 +1,26 @@
package com.twine.colorcapture.views.card;
+import android.accounts.AccountManager;
import android.app.Fragment;
+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.FragmentCardBinding;
+import com.twine.colorcapture.logging.LogManager;
import com.twine.colorcapture.mvvm.FragmentBase;
+import static android.app.Activity.RESULT_OK;
+
public class CardFragment extends FragmentBase<FragmentCardBinding,CardFragmentVM> implements ICardFragment
{
+ private IAction1<String> emailAddressCallback;
+ private static final int REQUEST_CODE_EMAIL = 1;
+
@Override
protected int getLayoutId()
{
@@ -26,4 +38,41 @@ public class CardFragment extends FragmentBase<FragmentCardBinding,CardFragmentV
{
return "Card";
}
+
+ @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/card/CardFragmentVM.java b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/card/CardFragmentVM.java
index 357a94e23..850061737 100644
--- a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/card/CardFragmentVM.java
+++ b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/card/CardFragmentVM.java
@@ -1,15 +1,78 @@
package com.twine.colorcapture.views.card;
+import com.twine.colorcapture.logging.LogManager;
+import com.twine.colorcapture.mvvm.RelayCommand;
import com.twine.colorcapture.mvvm.ViewModelBase;
import com.twine.colorcapture.navigation.INavigationProvider;
+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 javax.inject.Inject;
public class CardFragmentVM extends ViewModelBase<ICardFragment>
{
+ private INavigationProvider navigationProvider;
+ private INotificationProvider notificationProvider;
+
+ public RelayCommand orderCardCommand;
+ public RelayCommand printCardCommand;
+
@Inject
- public CardFragmentVM(INavigationProvider navigationProvider)
+ public CardFragmentVM(INavigationProvider navigationProvider, INotificationProvider notificationProvider)
+ {
+ this.notificationProvider = notificationProvider;
+ this.navigationProvider = navigationProvider;
+ orderCardCommand = new RelayCommand(this::handleOrderCardCommand);
+ printCardCommand = new RelayCommand(this::handlePrintCardCommand);
+ }
+
+ private void handlePrintCardCommand()
{
+ 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.navigateTo(NavigationFragment.Print, true, false);
+ }
+ });
+ }
+ else
+ {
+ navigationProvider.navigateTo(NavigationFragment.Print, true, false);
+ }
+ }
+ private void handleOrderCardCommand()
+ {
+ openBrowser("http://twine-s.com/contact/contact-us");
+ }
+
+ private void openBrowser(String url)
+ {
+ navigationProvider.navigateWithObjectTo(NavigationFragment.Web, true, false, url);
+ }
+
+ @Override
+ protected void onNavigatedTo()
+ {
+ super.onNavigatedTo();
+ TabStateManager.getInstance().state.set(TabState.More);
}
}
diff --git a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/card/ICardFragment.java b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/card/ICardFragment.java
index 464bf4fab..a089ad9d6 100644
--- a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/card/ICardFragment.java
+++ b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/card/ICardFragment.java
@@ -1,8 +1,9 @@
package com.twine.colorcapture.views.card;
+import com.twine.colorcapture.core.IAction1;
import com.twine.colorcapture.mvvm.IView;
public interface ICardFragment extends IView
{
-
+ void getEmailAddress(IAction1<String> callback);
}
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 153f7f139..43887bfbc 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
@@ -9,6 +9,7 @@ import android.support.annotation.NonNull;
import android.support.v4.widget.DrawerLayout;
import android.util.Log;
import android.view.Gravity;
+import android.view.KeyEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageButton;
@@ -125,13 +126,23 @@ public class MainActivity extends ActivityBase<ActivityMainBinding, MainActivity
@Override
public void onBackPressed()
{
- if (navigationProvider.canNavigateBack() && !menuOpened)
+ boolean handled = false;
+
+ if (navigationProvider.getCurrentFragmentInstance() != null)
{
- navigationProvider.navigateBack();
+ handled = navigationProvider.getCurrentFragmentInstance().onBackPressed();
}
- else
+
+ if (!handled)
{
- super.onBackPressed();
+ if (navigationProvider.canNavigateBack() && !menuOpened)
+ {
+ navigationProvider.navigateBack();
+ }
+ else
+ {
+ super.onBackPressed();
+ }
}
}
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 673146417..0653b4ac4 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
@@ -36,6 +36,7 @@ public class MainActivityVM extends ViewModelBase<IMainActivity>
public RelayCommand howToUseCommand;
public RelayCommand aboutCommand;
public RelayCommand aboutTwineCommand;
+ public RelayCommand getCardCommand;
@Inject
public MainActivityVM(Bus eventBus, INotificationProvider notificationProvider, INavigationProvider navigationProvider)
@@ -50,12 +51,19 @@ public class MainActivityVM extends ViewModelBase<IMainActivity>
howToUseCommand = new RelayCommand(this::handleHowToUseCommand);
aboutCommand = new RelayCommand(this::handleAboutCommand);
aboutTwineCommand = new RelayCommand(this::handleAboutTwineCommand);
+ getCardCommand = new RelayCommand(this::handleGetCardCommand);
captureCommand = new RelayCommand(this::handleCaptureCommand);
myColorsCommand = new RelayCommand(this::handleMyColorsCommand);
moreCommand = new RelayCommand(this::handleMoreCommand);
}
+ private void handleGetCardCommand()
+ {
+ view.closeMenu();
+ navigationProvider.navigateTo(NavigationFragment.Card, true, false);
+ }
+
private void handleMoreCommand()
{
diff --git a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/print/IPrintFragment.java b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/print/IPrintFragment.java
new file mode 100644
index 000000000..41ea3bd72
--- /dev/null
+++ b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/print/IPrintFragment.java
@@ -0,0 +1,7 @@
+package com.twine.colorcapture.views.print;
+
+import com.twine.colorcapture.mvvm.IView;
+
+public interface IPrintFragment extends IView
+{
+}
diff --git a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/print/PrintFragment.java b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/print/PrintFragment.java
new file mode 100644
index 000000000..69e019b93
--- /dev/null
+++ b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/print/PrintFragment.java
@@ -0,0 +1,30 @@
+package com.twine.colorcapture.views.print;
+
+import android.app.Fragment;
+
+import com.twine.colorcapture.App;
+import com.twine.colorcapture.R;
+import com.twine.colorcapture.databinding.FragmentPrintBinding;
+import com.twine.colorcapture.mvvm.FragmentBase;
+
+public class PrintFragment extends FragmentBase<FragmentPrintBinding,PrintFragmentVM> implements IPrintFragment
+{
+
+ @Override
+ protected int getLayoutId()
+ {
+ return R.layout.fragment_print;
+ }
+
+ @Override
+ protected void inject()
+ {
+ App.getComponent().inject(this);
+ }
+
+ @Override
+ public String getTitle()
+ {
+ return "Print";
+ }
+}
diff --git a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/print/PrintFragmentVM.java b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/print/PrintFragmentVM.java
new file mode 100644
index 000000000..ec3e66edc
--- /dev/null
+++ b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/print/PrintFragmentVM.java
@@ -0,0 +1,40 @@
+package com.twine.colorcapture.views.print;
+
+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.notification.INotificationProvider;
+import com.twine.colorcapture.settings.SettingsManager;
+import com.twine.colorcapture.web.ITCCService;
+
+public class PrintFragmentVM extends ViewModelBase<IPrintFragment>
+{
+ private String from;
+
+ public DependencyProperty<String> to;
+ public RelayCommand sendCommand;
+ public DependencyProperty<String> message;
+
+ public PrintFragmentVM(INavigationProvider navigationProvider, INotificationProvider notificationProvider, ITCCService tccService)
+ {
+ message = new DependencyProperty<>("Your card is attached! Just send the file to your computer and print. ");
+ to = new DependencyProperty<>("");
+
+ sendCommand = new RelayCommand(this::handleSendCommand);
+ }
+
+ private void handleSendCommand()
+ {
+
+ }
+
+ @Override
+ protected void onNavigatedTo()
+ {
+ super.onNavigatedTo();
+
+ from = SettingsManager.getInstance().getEmail();
+ to.set(from);
+ }
+}
diff --git a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/twine/TwineFragmentVM.java b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/twine/TwineFragmentVM.java
index 2afe56b0d..f69d02ef6 100644
--- a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/twine/TwineFragmentVM.java
+++ b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/twine/TwineFragmentVM.java
@@ -6,22 +6,29 @@ import android.net.Uri;
import com.twine.colorcapture.App;
import com.twine.colorcapture.mvvm.RelayCommand;
import com.twine.colorcapture.mvvm.ViewModelBase;
+import com.twine.colorcapture.navigation.INavigationProvider;
+import com.twine.colorcapture.navigation.NavigationFragment;
import com.twine.colorcapture.navigation.TabState;
import com.twine.colorcapture.navigation.TabStateManager;
public class TwineFragmentVM extends ViewModelBase<ITwineFragment>
{
+ private INavigationProvider navigationProvider;
+
public RelayCommand contactCommand;
- public TwineFragmentVM()
+ public TwineFragmentVM(INavigationProvider navigationProvider)
{
+ this.navigationProvider = navigationProvider;
contactCommand = new RelayCommand(() -> openBrowser("http://twine-s.com/contact/contact-us"));
}
private void openBrowser(String url)
{
- Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
- App.getContext().startActivity(browserIntent);
+
+ navigationProvider.navigateWithObjectTo(NavigationFragment.Web, true, false, url);
+// Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
+// App.getContext().startActivity(browserIntent);
}
@Override
diff --git a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/web/CustomWebViewClient.java b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/web/CustomWebViewClient.java
new file mode 100644
index 000000000..cba79b5b2
--- /dev/null
+++ b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/web/CustomWebViewClient.java
@@ -0,0 +1,66 @@
+package com.twine.colorcapture.views.web;
+
+import android.graphics.Bitmap;
+import android.webkit.WebResourceRequest;
+import android.webkit.WebView;
+import android.webkit.WebViewClient;
+
+import com.twine.colorcapture.core.IAction;
+
+public class CustomWebViewClient extends WebViewClient
+{
+ private IAction onPageStartedListener;
+ private IAction onPageFinishedListener;
+
+ @Override
+ public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request)
+ {
+ return false;
+ }
+
+ public void setOnPageStartedListener(IAction onPageStartedListener)
+ {
+ this.onPageStartedListener = onPageStartedListener;
+ }
+
+ public void setOnPageFinishedListener(IAction onPageFinishedListener)
+ {
+ this.onPageFinishedListener = onPageFinishedListener;
+ }
+
+ @Override
+ public void onPageStarted(WebView view, String url, Bitmap favicon)
+ {
+ super.onPageStarted(view, url, favicon);
+
+ if (onPageStartedListener != null)
+ {
+ try
+ {
+ onPageStartedListener.invoke();
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+ }
+ }
+
+ @Override
+ public void onPageFinished(WebView view, String url)
+ {
+ super.onPageFinished(view, url);
+
+ if (onPageFinishedListener != null)
+ {
+ try
+ {
+ onPageFinishedListener.invoke();
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+ }
+ }
+}
diff --git a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/web/IWebFragment.java b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/web/IWebFragment.java
new file mode 100644
index 000000000..dd0bc9a84
--- /dev/null
+++ b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/web/IWebFragment.java
@@ -0,0 +1,8 @@
+package com.twine.colorcapture.views.web;
+
+import com.twine.colorcapture.mvvm.IView;
+
+public interface IWebFragment extends IView
+{
+ void navigateURL(String url);
+}
diff --git a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/web/WebFragment.java b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/web/WebFragment.java
new file mode 100644
index 000000000..620377c8f
--- /dev/null
+++ b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/web/WebFragment.java
@@ -0,0 +1,122 @@
+package com.twine.colorcapture.views.web;
+
+import android.annotation.SuppressLint;
+import android.app.Fragment;
+import android.view.View;
+import android.webkit.WebView;
+import android.widget.FrameLayout;
+
+import com.twine.colorcapture.App;
+import com.twine.colorcapture.R;
+import com.twine.colorcapture.core.IAction;
+import com.twine.colorcapture.databinding.FragmentWebBinding;
+import com.twine.colorcapture.logging.LogManager;
+import com.twine.colorcapture.mvvm.FragmentBase;
+
+import butterknife.BindView;
+
+public class WebFragment extends FragmentBase<FragmentWebBinding,WebFragmentVM> implements IWebFragment
+{
+ private boolean created;
+ private IAction onCreatedListener;
+
+ @BindView(R.id.webView)
+ WebView webView;
+
+ @BindView(R.id.frameMask)
+ FrameLayout frameMask;
+
+ @SuppressLint("SetJavaScriptEnabled")
+ @Override
+ protected void onCreated()
+ {
+ LogManager.log("On Created");
+
+ super.onCreated();
+ webView.getSettings().setJavaScriptEnabled(true);
+
+ CustomWebViewClient webViewClient = new CustomWebViewClient();
+ webView.setWebViewClient(webViewClient);
+
+ webViewClient.setOnPageStartedListener(() ->
+ {
+ frameMask.setVisibility(View.VISIBLE);
+ });
+ webViewClient.setOnPageFinishedListener(() ->
+ {
+ frameMask.setVisibility(View.GONE);
+ });
+
+ created = true;
+
+
+
+ if (onCreatedListener != null)
+ {
+ LogManager.log("Invoking OnCreated");
+
+ try
+ {
+ onCreatedListener.invoke();
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+ }
+ }
+
+ @Override
+ protected int getLayoutId()
+ {
+ return R.layout.fragment_web;
+ }
+
+ @Override
+ protected void inject()
+ {
+ App.getComponent().inject(this);
+ }
+
+ @Override
+ public String getTitle()
+ {
+ return "Web";
+ }
+
+ @Override
+ public void navigateURL(String url)
+ {
+ frameMask.setVisibility(View.VISIBLE);
+ LogManager.log("navigateURL");
+
+ if (created)
+ {
+ LogManager.log("Created: True");
+ webView.loadUrl(url);
+ }
+ else
+ {
+ LogManager.log("Registering");
+ onCreatedListener = () ->
+ {
+ LogManager.log("Loading");
+ webView.loadUrl(url);
+ };
+ }
+ }
+
+ @Override
+ public boolean onBackPressed()
+ {
+ if (webView.canGoBack())
+ {
+ webView.goBack();
+ return true;
+ }
+ else
+ {
+ return super.onBackPressed();
+ }
+ }
+}
diff --git a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/web/WebFragmentVM.java b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/web/WebFragmentVM.java
new file mode 100644
index 000000000..d6587be14
--- /dev/null
+++ b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/web/WebFragmentVM.java
@@ -0,0 +1,13 @@
+package com.twine.colorcapture.views.web;
+
+import com.twine.colorcapture.mvvm.ViewModelBase;
+import com.twine.colorcapture.navigation.INavigationObjectReceiver;
+
+public class WebFragmentVM extends ViewModelBase<IWebFragment> implements INavigationObjectReceiver<String>
+{
+ @Override
+ public void onNavigationObjectReceived(String url)
+ {
+ view.navigateURL(url);
+ }
+}
diff --git a/Software/Android_Studio/ColorCapture/app/src/main/res/drawable-hdpi/pdf_file.png b/Software/Android_Studio/ColorCapture/app/src/main/res/drawable-hdpi/pdf_file.png
new file mode 100644
index 000000000..83133d0b2
--- /dev/null
+++ b/Software/Android_Studio/ColorCapture/app/src/main/res/drawable-hdpi/pdf_file.png
Binary files differ
diff --git a/Software/Android_Studio/ColorCapture/app/src/main/res/drawable-mdpi/pdf_file.png b/Software/Android_Studio/ColorCapture/app/src/main/res/drawable-mdpi/pdf_file.png
new file mode 100644
index 000000000..47d8dd7b8
--- /dev/null
+++ b/Software/Android_Studio/ColorCapture/app/src/main/res/drawable-mdpi/pdf_file.png
Binary files differ
diff --git a/Software/Android_Studio/ColorCapture/app/src/main/res/drawable-xhdpi/pdf_file.png b/Software/Android_Studio/ColorCapture/app/src/main/res/drawable-xhdpi/pdf_file.png
new file mode 100644
index 000000000..aa7b0ca40
--- /dev/null
+++ b/Software/Android_Studio/ColorCapture/app/src/main/res/drawable-xhdpi/pdf_file.png
Binary files differ
diff --git a/Software/Android_Studio/ColorCapture/app/src/main/res/drawable-xxhdpi/pdf_file.png b/Software/Android_Studio/ColorCapture/app/src/main/res/drawable-xxhdpi/pdf_file.png
new file mode 100644
index 000000000..08ed8469a
--- /dev/null
+++ b/Software/Android_Studio/ColorCapture/app/src/main/res/drawable-xxhdpi/pdf_file.png
Binary files differ
diff --git a/Software/Android_Studio/ColorCapture/app/src/main/res/drawable-xxxhdpi/pdf_file.png b/Software/Android_Studio/ColorCapture/app/src/main/res/drawable-xxxhdpi/pdf_file.png
new file mode 100644
index 000000000..ec77b0230
--- /dev/null
+++ b/Software/Android_Studio/ColorCapture/app/src/main/res/drawable-xxxhdpi/pdf_file.png
Binary files differ
diff --git a/Software/Android_Studio/ColorCapture/app/src/main/res/layout/fragment_card.xml b/Software/Android_Studio/ColorCapture/app/src/main/res/layout/fragment_card.xml
index 04160c140..109bbebea 100644
--- a/Software/Android_Studio/ColorCapture/app/src/main/res/layout/fragment_card.xml
+++ b/Software/Android_Studio/ColorCapture/app/src/main/res/layout/fragment_card.xml
@@ -18,33 +18,89 @@
android:paddingRight="20dp"
tools:context="com.twine.colorcapture.views.card.CardFragment">
- <android.support.v7.widget.AppCompatTextView
- android:id="@+id/txtTitle"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
+ <RelativeLayout
+ android:layout_width="match_parent"
android:layout_centerHorizontal="true"
- android:layout_gravity="center"
- android:layout_marginTop="15dp"
- android:fontFamily="@font/flexo_bold"
- android:letterSpacing="0.07"
- android:text="Get a twine TTC™ card "
- android:textSize="@dimen/large_font_size" />
+ android:layout_height="match_parent">
- <android.support.v7.widget.AppCompatTextView
- android:id="@+id/txtPro"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_below="@id/txtTitle"
- android:layout_centerHorizontal="true"
- android:layout_marginTop="40dp"
- android:lineSpacingExtra="4dp"
- android:fontFamily="@font/flexo_light"
- android:gravity="center"
- android:letterSpacing="0.07"
- android:text="@string/order_card_pro"
- android:textAlignment="center"
- android:textSize="@dimen/medium_font_size" />
+ <android.support.v7.widget.AppCompatTextView
+ android:id="@+id/txtTitle"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_centerHorizontal="true"
+ android:layout_gravity="center"
+ android:layout_marginTop="15dp"
+ android:fontFamily="@font/flexo_bold"
+ android:letterSpacing="0.07"
+ android:text="Get a twine TTC™ card "
+ android:textSize="@dimen/large_font_size" />
+
+ <android.support.v7.widget.AppCompatTextView
+ android:id="@+id/txtPro"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_below="@id/txtTitle"
+ android:layout_centerHorizontal="true"
+ android:layout_marginTop="20dp"
+ android:fontFamily="@font/flexo_light"
+ android:gravity="center"
+ android:letterSpacing="0.07"
+ android:lineSpacingExtra="4dp"
+ android:text="@string/order_card_pro"
+ android:textAlignment="center"
+ android:textSize="@dimen/medium_font_size" />
+
+ <com.twine.colorcapture.controls.CircleActionButton
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_below="@id/txtPro"
+ android:layout_centerHorizontal="true"
+ android:layout_marginLeft="20dp"
+ android:layout_marginTop="40dp"
+ android:layout_marginRight="20dp"
+ android:clickable="true"
+ bind:src="@drawable/icon_twine_card"
+ bind:text=" Order a twine TTC™ card"
+ bind:textSize="@dimen/small_font_size"
+ bind:command="@{vm.orderCardCommand}"/>
+
+ <FrameLayout
+ android:id="@+id/centerLine"
+ android:layout_width="match_parent"
+ android:layout_height="2dp"
+ android:layout_centerVertical="true"
+ android:background="@drawable/accent_gradient" />
+
+ <android.support.v7.widget.AppCompatTextView
+ android:id="@+id/txtHome"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_below="@id/centerLine"
+ android:layout_centerHorizontal="true"
+ android:layout_marginTop="40dp"
+ android:fontFamily="@font/flexo_light"
+ android:gravity="center"
+ android:letterSpacing="0.07"
+ android:lineSpacingExtra="4dp"
+ android:text="@string/order_card_home"
+ android:textAlignment="center"
+ android:textSize="@dimen/medium_font_size" />
+
+ <com.twine.colorcapture.controls.CircleActionButton
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_below="@id/txtHome"
+ android:layout_centerHorizontal="true"
+ android:layout_marginLeft="20dp"
+ android:layout_marginTop="40dp"
+ android:layout_marginRight="20dp"
+ android:clickable="true"
+ bind:src="@drawable/icon_twine_card"
+ bind:text=" Print a twine TTC™ card"
+ bind:textSize="@dimen/small_font_size"
+ bind:command="@{vm.printCardCommand}"/>
+ </RelativeLayout>
</RelativeLayout>
</layout>
diff --git a/Software/Android_Studio/ColorCapture/app/src/main/res/layout/fragment_print.xml b/Software/Android_Studio/ColorCapture/app/src/main/res/layout/fragment_print.xml
new file mode 100644
index 000000000..f324121c5
--- /dev/null
+++ b/Software/Android_Studio/ColorCapture/app/src/main/res/layout/fragment_print.xml
@@ -0,0 +1,145 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<layout xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:bind="http://schemas.android.com/apk/res-auto"
+ xmlns:tools="http://schemas.android.com/tools">
+
+ <data>
+
+ <variable
+ name="vm"
+ type="com.twine.colorcapture.views.print.PrintFragmentVM" />
+ </data>
+
+ <RelativeLayout
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:layoutDirection="ltr"
+ tools:context="com.twine.colorcapture.views.print.PrintFragment">
+
+ <FrameLayout
+ android:id="@+id/frameTitle"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:background="@color/colorPrimaryBackground"
+ android:padding="20dp">
+
+ <android.support.v7.widget.AppCompatTextView
+ android:id="@+id/txtTitle"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="left|center"
+ android:fontFamily="@font/flexo_bold"
+ android:letterSpacing="0.07"
+ android:text="Print a twine TTC™ card"
+ android:textSize="@dimen/large_font_size" />
+
+ <android.support.v7.widget.AppCompatButton
+ android:id="@+id/btnDone"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="right"
+ android:layout_marginRight="-10dp"
+ android:background="@drawable/button_transparent_fill_ripple"
+ android:fontFamily="@font/flexo_bold"
+ android:letterSpacing="0.07"
+ android:text="Send"
+ android:textAllCaps="false"
+ android:textSize="@dimen/large_font_size"
+ android:textStyle="bold"
+ bind:command="@{vm.sendCommand}" />
+
+ </FrameLayout>
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:layout_below="@id/frameTitle"
+ android:background="@color/white"
+ android:orientation="vertical">
+
+ <ScrollView
+ android:layout_width="match_parent"
+ android:layout_height="match_parent">
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="vertical">
+
+ <android.support.v7.widget.AppCompatTextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="left|center"
+ android:layout_marginLeft="20dp"
+ android:layout_marginTop="20dp"
+ android:fontFamily="@font/flexo_light"
+ android:letterSpacing="0.07"
+ android:text="Your card is attached"
+ android:textColor="@color/colorPrimaryBackground"
+ android:textSize="@dimen/medium_font_size" />
+
+ <ImageView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_margin="20dp"
+ android:src="@drawable/pdf_file" />
+
+ <FrameLayout
+ android:layout_width="match_parent"
+ android:layout_height="4dp"
+ android:background="@color/light_gray" />
+
+ <android.support.design.widget.TextInputLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:textColorHint="@color/text_gray"
+ android:layout_marginTop="10dp">
+
+ <android.support.v7.widget.AppCompatEditText
+ 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|textNoSuggestions"
+ android:letterSpacing="0.07"
+ android:text="@{vm.to}"
+ android:textColor="@color/colorPrimaryBackground"
+ android:textColorHint="@color/text_gray"
+ android:hint="To"
+ android:textDirection="ltr"
+ android:enabled="false"
+ android:theme="@style/Autocomplete"
+ android:textSize="@dimen/medium_font_size"/>
+
+ </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:background="@drawable/border"
+ android:fontFamily="@font/flexo_light"
+ android:gravity="top|left"
+ android:hint="Message"
+ android:inputType="textMultiLine"
+ android:letterSpacing="0.07"
+ android:lines="8"
+ android:maxLines="10"
+ android:minLines="6"
+ android:padding="5dp"
+ android:scrollbars="vertical"
+ android:text="@={vm.message}"
+ android:textColor="@color/colorPrimaryBackground"
+ android:textColorHint="@color/text_gray"
+ android:textDirection="ltr"
+ android:textSize="@dimen/medium_font_size" />
+
+ </LinearLayout>
+ </ScrollView>
+
+ </LinearLayout>
+
+ </RelativeLayout>
+</layout>
diff --git a/Software/Android_Studio/ColorCapture/app/src/main/res/layout/fragment_send_to_email.xml b/Software/Android_Studio/ColorCapture/app/src/main/res/layout/fragment_send_to_email.xml
index f54d9139d..a10fc70fa 100644
--- a/Software/Android_Studio/ColorCapture/app/src/main/res/layout/fragment_send_to_email.xml
+++ b/Software/Android_Studio/ColorCapture/app/src/main/res/layout/fragment_send_to_email.xml
@@ -110,30 +110,13 @@
android:textColorHint="@color/text_gray"
android:layout_marginTop="10dp">
- <!--<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:inputType="textEmailAddress|textNoSuggestions"
android:letterSpacing="0.07"
android:text="@={vm.to}"
android:textColor="@color/colorPrimaryBackground"
diff --git a/Software/Android_Studio/ColorCapture/app/src/main/res/layout/fragment_web.xml b/Software/Android_Studio/ColorCapture/app/src/main/res/layout/fragment_web.xml
new file mode 100644
index 000000000..7bc5454f5
--- /dev/null
+++ b/Software/Android_Studio/ColorCapture/app/src/main/res/layout/fragment_web.xml
@@ -0,0 +1,43 @@
+<layout xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:bind="http://schemas.android.com/apk/res-auto"
+ xmlns:tools="http://schemas.android.com/tools">
+
+ <data>
+
+ <variable
+ name="vm"
+ type="com.twine.colorcapture.views.web.WebFragmentVM" />
+ </data>
+
+ <RelativeLayout
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:background="@color/colorPrimaryBackground"
+ android:layoutDirection="ltr"
+ tools:context="com.twine.colorcapture.views.web.WebFragment">
+
+ <WebView
+ android:id="@+id/webView"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent">
+
+ </WebView>
+
+ <FrameLayout
+ android:id="@+id/frameMask"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:background="@color/colorBlueMask">
+
+ <ProgressBar
+ android:layout_gravity="center"
+ android:layout_width="@dimen/progress_size"
+ android:layout_height="@dimen/progress_size"
+ android:indeterminate="true"
+ android:indeterminateDuration="500"
+ android:indeterminateDrawable="@drawable/progress_ring_background"/>
+
+ </FrameLayout>
+
+ </RelativeLayout>
+</layout>
diff --git a/Software/Android_Studio/ColorCapture/app/src/main/res/layout/side_menu.xml b/Software/Android_Studio/ColorCapture/app/src/main/res/layout/side_menu.xml
index 7cc3da131..0e7723668 100644
--- a/Software/Android_Studio/ColorCapture/app/src/main/res/layout/side_menu.xml
+++ b/Software/Android_Studio/ColorCapture/app/src/main/res/layout/side_menu.xml
@@ -178,6 +178,7 @@
bind:text=" Get a twine TTC™ card"
bind:textSize="@dimen/small_font_size"
bind:src="@drawable/icon_twine_card"
- android:clickable="true" />
+ android:clickable="true"
+ bind:command="@{vm.getCardCommand}"/>
</RelativeLayout>
</layout> \ No newline at end of file