From a2d104e970718b50420fbe3e13908c847799c9eb Mon Sep 17 00:00:00 2001 From: Roy Ben-Shabat Date: Wed, 29 May 2019 15:56:25 +0300 Subject: Working on TCC... --- .../Android_Studio/ColorCapture/app/build.gradle | 4 +- .../colorcapture/dagger/ApplicationComponent.java | 6 + .../colorcapture/dagger/ViewModelsModule.java | 28 +++- .../com/twine/colorcapture/mvvm/FragmentBase.java | 5 + .../navigation/AndroidNavigationProvider.java | 6 + .../navigation/INavigationProvider.java | 6 + .../navigation/NavigationFragment.java | 16 +++ .../colorcapture/views/about/AboutFragmentVM.java | 13 +- .../colorcapture/views/card/CardFragment.java | 49 +++++++ .../colorcapture/views/card/CardFragmentVM.java | 65 ++++++++- .../colorcapture/views/card/ICardFragment.java | 3 +- .../colorcapture/views/main/MainActivity.java | 19 ++- .../colorcapture/views/main/MainActivityVM.java | 8 ++ .../colorcapture/views/print/IPrintFragment.java | 7 + .../colorcapture/views/print/PrintFragment.java | 30 +++++ .../colorcapture/views/print/PrintFragmentVM.java | 40 ++++++ .../colorcapture/views/twine/TwineFragmentVM.java | 13 +- .../views/web/CustomWebViewClient.java | 66 ++++++++++ .../twine/colorcapture/views/web/IWebFragment.java | 8 ++ .../twine/colorcapture/views/web/WebFragment.java | 122 +++++++++++++++++ .../colorcapture/views/web/WebFragmentVM.java | 13 ++ .../app/src/main/res/drawable-hdpi/pdf_file.png | Bin 0 -> 4485 bytes .../app/src/main/res/drawable-mdpi/pdf_file.png | Bin 0 -> 2764 bytes .../app/src/main/res/drawable-xhdpi/pdf_file.png | Bin 0 -> 6368 bytes .../app/src/main/res/drawable-xxhdpi/pdf_file.png | Bin 0 -> 10351 bytes .../app/src/main/res/drawable-xxxhdpi/pdf_file.png | Bin 0 -> 14446 bytes .../app/src/main/res/layout/fragment_card.xml | 106 +++++++++++---- .../app/src/main/res/layout/fragment_print.xml | 145 +++++++++++++++++++++ .../src/main/res/layout/fragment_send_to_email.xml | 19 +-- .../app/src/main/res/layout/fragment_web.xml | 43 ++++++ .../app/src/main/res/layout/side_menu.xml | 3 +- 31 files changed, 779 insertions(+), 64 deletions(-) create mode 100644 Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/print/IPrintFragment.java create mode 100644 Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/print/PrintFragment.java create mode 100644 Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/print/PrintFragmentVM.java create mode 100644 Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/web/CustomWebViewClient.java create mode 100644 Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/web/IWebFragment.java create mode 100644 Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/web/WebFragment.java create mode 100644 Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/web/WebFragmentVM.java create mode 100644 Software/Android_Studio/ColorCapture/app/src/main/res/drawable-hdpi/pdf_file.png create mode 100644 Software/Android_Studio/ColorCapture/app/src/main/res/drawable-mdpi/pdf_file.png create mode 100644 Software/Android_Studio/ColorCapture/app/src/main/res/drawable-xhdpi/pdf_file.png create mode 100644 Software/Android_Studio/ColorCapture/app/src/main/res/drawable-xxhdpi/pdf_file.png create mode 100644 Software/Android_Studio/ColorCapture/app/src/main/res/drawable-xxxhdpi/pdf_file.png create mode 100644 Software/Android_Studio/ColorCapture/app/src/main/res/layout/fragment_print.xml create mode 100644 Software/Android_Studio/ColorCapture/app/src/main/res/layout/fragment_web.xml (limited to 'Software/Android_Studio') 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; @@ -57,6 +59,13 @@ public class ViewModelsModule return new SendToEmailFragmentVM(eventBus, navigationProvider, notificationProvider, tccService); } + @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) @@ -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 { + private INavigationProvider navigationProvider; + public RelayCommand contactCommand; public RelayCommand termsOfUseCommand; public RelayCommand privacyPolicyCommand; public DependencyProperty 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 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 implements ICardFragment { + private IAction1 emailAddressCallback; + private static final int REQUEST_CODE_EMAIL = 1; + @Override protected int getLayoutId() { @@ -26,4 +38,41 @@ public class CardFragment extends FragmentBase 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 { + 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 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 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 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 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 +{ + private String from; + + public DependencyProperty to; + public RelayCommand sendCommand; + public DependencyProperty 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 { + 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 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 implements INavigationObjectReceiver +{ + @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 Binary files /dev/null and b/Software/Android_Studio/ColorCapture/app/src/main/res/drawable-hdpi/pdf_file.png 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 Binary files /dev/null and b/Software/Android_Studio/ColorCapture/app/src/main/res/drawable-mdpi/pdf_file.png 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 Binary files /dev/null and b/Software/Android_Studio/ColorCapture/app/src/main/res/drawable-xhdpi/pdf_file.png 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 Binary files /dev/null and b/Software/Android_Studio/ColorCapture/app/src/main/res/drawable-xxhdpi/pdf_file.png 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 Binary files /dev/null and b/Software/Android_Studio/ColorCapture/app/src/main/res/drawable-xxxhdpi/pdf_file.png 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:layout_height="match_parent"> + + + + + + + + + + + + + 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 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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"> - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + 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}"/> \ No newline at end of file -- cgit v1.3.1