diff --git a/OpenKeychain/build.gradle b/OpenKeychain/build.gradle index dee2bb0ad..bc3b2e817 100644 --- a/OpenKeychain/build.gradle +++ b/OpenKeychain/build.gradle @@ -106,6 +106,7 @@ dependencies { annotationProcessor "android.arch.lifecycle:compiler:1.0.0" compile "android.arch.persistence:db-framework:1.0.0" + implementation 'com.android.support.constraint:constraint-layout:1.1.3' // for debugging the db. don't enable by default, this will expose the database no the network! // debugImplementation 'com.amitshekhar.android:debug-db:1.0.3' diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/MainActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/MainActivity.java index 358d9aafa..0a8b993da 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/MainActivity.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/MainActivity.java @@ -18,6 +18,7 @@ package org.sufficientlysecure.keychain.ui; import android.content.Intent; +import android.graphics.Typeface; import android.os.Build; import android.os.Build.VERSION_CODES; import android.os.Bundle; @@ -56,6 +57,7 @@ public class MainActivity extends BaseSecurityTokenActivity implements FabContai public static final int ID_TRANSFER = 5; static final int ID_SETTINGS = 6; static final int ID_HELP = 7; + static final int ID_SHOP = 8; // both of these are used for instrumentation testing only public static final String EXTRA_SKIP_FIRST_TIME = "skip_first_time"; @@ -81,6 +83,8 @@ public class MainActivity extends BaseSecurityTokenActivity implements FabContai .withHeader(R.layout.main_drawer_header) .withToolbar(mToolbar) .addDrawerItems( + new PrimaryDrawerItem().withName(R.string.nav_shop).withIcon(CommunityMaterial.Icon.cmd_shopping) + .withIdentifier(ID_SHOP).withSelectable(false).withTypeface(Typeface.DEFAULT_BOLD), new PrimaryDrawerItem().withName(R.string.nav_keys).withIcon(CommunityMaterial.Icon.cmd_key) .withIdentifier(ID_KEYS).withSelectable(false), new PrimaryDrawerItem().withName(R.string.nav_encrypt_decrypt).withIcon(FontAwesome.Icon.faw_lock) @@ -126,6 +130,9 @@ public class MainActivity extends BaseSecurityTokenActivity implements FabContai case ID_HELP: intent = new Intent(MainActivity.this, HelpActivity.class); break; + case ID_SHOP: + onShopSelected(); + break; } if (intent != null) { MainActivity.this.startActivity(intent); @@ -252,6 +259,13 @@ public class MainActivity extends BaseSecurityTokenActivity implements FabContai } } + private void onShopSelected() { + mToolbar.setTitle("Cotech Security Keys"); + mDrawer.setSelection(ID_SHOP, false); + Fragment frag = new SecurityKeyShopFragment(); + setFragment(frag); + } + @Override protected void onSaveInstanceState(Bundle outState) { // add the values which need to be saved from the drawer to the bundle diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SecurityKeyShopFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SecurityKeyShopFragment.java new file mode 100644 index 000000000..a0295dd49 --- /dev/null +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SecurityKeyShopFragment.java @@ -0,0 +1,71 @@ +/* + * Copyright (C) 2017 Schürmann & Breitmoser GbR + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package org.sufficientlysecure.keychain.ui; + + +import android.os.Bundle; +import android.support.annotation.NonNull; +import android.support.annotation.Nullable; +import android.support.v4.app.Fragment; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.webkit.WebView; +import android.webkit.WebViewClient; +import android.widget.ProgressBar; +import android.widget.TextView; + +import org.sufficientlysecure.keychain.R; + +public class SecurityKeyShopFragment extends Fragment { + + public static final String webShopURL = "https://shop.cotech.de/"; + + public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + View view = inflater.inflate(R.layout.security_key_shop_fragment, container, false); + + WebView webView = view.findViewById(R.id.shop_webView); + webView.setWebViewClient(new SecurityKeyShopWebViewClient( + view.findViewById(R.id.shop_progressbar), + view.findViewById(R.id.shop_progressbar_label) + )); + webView.getSettings().setJavaScriptEnabled(true); + webView.loadUrl(webShopURL); + return view; + } + + class SecurityKeyShopWebViewClient extends WebViewClient { + private ProgressBar progressBar; + private TextView progressBarLabel; + + SecurityKeyShopWebViewClient(ProgressBar progressBar, TextView progressBarLabel) { + this.progressBar = progressBar; + this.progressBarLabel = progressBarLabel; + progressBar.setVisibility(View.VISIBLE); + progressBarLabel.setVisibility(View.VISIBLE); + } + + @Override + public void onPageCommitVisible(WebView view, String url) { + super.onPageCommitVisible(view, url); + progressBar.setVisibility(View.GONE); + progressBarLabel.setVisibility(View.GONE); + } + } + +} diff --git a/OpenKeychain/src/main/res/layout/security_key_shop_fragment.xml b/OpenKeychain/src/main/res/layout/security_key_shop_fragment.xml new file mode 100644 index 000000000..14b8e7f8e --- /dev/null +++ b/OpenKeychain/src/main/res/layout/security_key_shop_fragment.xml @@ -0,0 +1,37 @@ + + + + + + + + + + \ No newline at end of file diff --git a/OpenKeychain/src/main/res/values/strings.xml b/OpenKeychain/src/main/res/values/strings.xml index 12e7f2281..2b694cc32 100644 --- a/OpenKeychain/src/main/res/values/strings.xml +++ b/OpenKeychain/src/main/res/values/strings.xml @@ -857,6 +857,7 @@ "My Keys" "Backup/Restore" "Secure Wifi Transfer" + Shop "Type text" @@ -1967,4 +1968,6 @@ Expiry will change to %s Share key via clipboard Share key + + Loading shop...