Improve about dialog
This commit is contained in:
parent
65f918c05f
commit
f4affbb6fa
7 changed files with 90 additions and 74 deletions
|
@ -8,8 +8,8 @@ android {
|
||||||
applicationId "org.shadowice.flocke.andotp"
|
applicationId "org.shadowice.flocke.andotp"
|
||||||
minSdkVersion 18
|
minSdkVersion 18
|
||||||
targetSdkVersion 25
|
targetSdkVersion 25
|
||||||
versionCode 3
|
versionCode 1
|
||||||
versionName "0.1.2"
|
versionName "0.1.0"
|
||||||
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
|
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -100,10 +100,10 @@ public class MainActivityTest extends ActivityInstrumentationTestCase2<MainActiv
|
||||||
onView(allOf(withText("About"), isDisplayed())).perform(click());
|
onView(allOf(withText("About"), isDisplayed())).perform(click());
|
||||||
|
|
||||||
Thread.sleep(1000);
|
Thread.sleep(1000);
|
||||||
onView(withId(R.id.webViewAbout)).check(matches(isDisplayed()));
|
onView(withId(R.id.about_layout)).check(matches(isDisplayed()));
|
||||||
onView(withId(R.id.webViewAbout)).perform(pressBack());
|
onView(withId(R.id.about_layout)).perform(pressBack());
|
||||||
|
|
||||||
onView(withId(R.id.webViewAbout)).check(doesNotExist());
|
onView(withId(R.id.about_layout)).check(doesNotExist());
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -28,6 +28,7 @@ import android.app.Activity;
|
||||||
import android.app.AlertDialog;
|
import android.app.AlertDialog;
|
||||||
import android.content.DialogInterface;
|
import android.content.DialogInterface;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
|
import android.content.pm.PackageInfo;
|
||||||
import android.content.pm.PackageManager;
|
import android.content.pm.PackageManager;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
|
@ -39,18 +40,17 @@ import android.support.v4.content.ContextCompat;
|
||||||
import android.support.v7.app.AppCompatActivity;
|
import android.support.v7.app.AppCompatActivity;
|
||||||
import android.support.v7.widget.Toolbar;
|
import android.support.v7.widget.Toolbar;
|
||||||
import android.view.ActionMode;
|
import android.view.ActionMode;
|
||||||
import android.view.LayoutInflater;
|
|
||||||
import android.view.Menu;
|
import android.view.Menu;
|
||||||
import android.view.MenuInflater;
|
import android.view.MenuInflater;
|
||||||
import android.view.MenuItem;
|
import android.view.MenuItem;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.WindowManager;
|
import android.view.WindowManager;
|
||||||
import android.view.animation.LinearInterpolator;
|
import android.view.animation.LinearInterpolator;
|
||||||
import android.webkit.WebView;
|
|
||||||
import android.widget.AdapterView;
|
import android.widget.AdapterView;
|
||||||
import android.widget.EditText;
|
import android.widget.EditText;
|
||||||
import android.widget.ListView;
|
import android.widget.ListView;
|
||||||
import android.widget.ProgressBar;
|
import android.widget.ProgressBar;
|
||||||
|
import android.widget.TextView;
|
||||||
|
|
||||||
import com.google.zxing.client.android.Intents;
|
import com.google.zxing.client.android.Intents;
|
||||||
import com.google.zxing.integration.android.IntentIntegrator;
|
import com.google.zxing.integration.android.IntentIntegrator;
|
||||||
|
@ -84,6 +84,29 @@ public class MainActivity extends AppCompatActivity implements ActionMode.Callb
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void showAbout() {
|
||||||
|
// Inflate the dialog_about message contents
|
||||||
|
View messageView = getLayoutInflater().inflate(R.layout.dialog_about, null, false);
|
||||||
|
|
||||||
|
String versionName = "";
|
||||||
|
try {
|
||||||
|
PackageInfo packageInfo = getPackageManager().getPackageInfo(getPackageName(), 0);
|
||||||
|
versionName = packageInfo.versionName;
|
||||||
|
} catch (PackageManager.NameNotFoundException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
TextView versionText = (TextView) messageView.findViewById(R.id.about_version);
|
||||||
|
versionText.setText(versionName);
|
||||||
|
|
||||||
|
AlertDialog.Builder builder = new AlertDialog.Builder(this);
|
||||||
|
builder.setTitle(R.string.app_name);
|
||||||
|
builder.setIcon(R.mipmap.ic_launcher);
|
||||||
|
builder.setView(messageView);
|
||||||
|
builder.create();
|
||||||
|
builder.show();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onRequestPermissionsResult(int requestCode, @NonNull String permissions[], @NonNull int[] grantResults) {
|
public void onRequestPermissionsResult(int requestCode, @NonNull String permissions[], @NonNull int[] grantResults) {
|
||||||
if(requestCode == PERMISSIONS_REQUEST_CAMERA) {
|
if(requestCode == PERMISSIONS_REQUEST_CAMERA) {
|
||||||
|
@ -240,14 +263,12 @@ public class MainActivity extends AppCompatActivity implements ActionMode.Callb
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onOptionsItemSelected(MenuItem item) {
|
public boolean onOptionsItemSelected(MenuItem item) {
|
||||||
int id = item.getItemId();
|
int id = item.getItemId();
|
||||||
|
|
||||||
if(id == R.id.action_about){
|
if(id == R.id.action_about){
|
||||||
WebView view = (WebView) LayoutInflater.from(this).inflate(R.layout.dialog_about, null);
|
showAbout();
|
||||||
view.loadUrl("file:///android_res/raw/about.html");
|
|
||||||
new AlertDialog.Builder(this).setView(view).show();
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,55 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<WebView
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
android:id="@+id/about_layout"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:id="@+id/webViewAbout"
|
android:orientation="vertical"
|
||||||
/>
|
android:padding="@dimen/activity_vertical_margin" >
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="center"
|
||||||
|
android:layout_marginBottom="@dimen/activity_vertical_margin"
|
||||||
|
android:textAlignment="center"
|
||||||
|
android:textStyle="bold"
|
||||||
|
android:text="@string/about_description" />
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="center"
|
||||||
|
android:layout_marginBottom="@dimen/activity_vertical_margin"
|
||||||
|
android:orientation="horizontal" >
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:textSize="16sp"
|
||||||
|
android:text="@string/about_version_hint" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/about_version"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:paddingLeft="@dimen/activity_horizontal_margin"
|
||||||
|
android:textStyle="bold" />
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="center"
|
||||||
|
android:autoLink="web"
|
||||||
|
android:layout_marginBottom="@dimen/activity_vertical_margin"
|
||||||
|
android:text="@string/about_homepage_link" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="center"
|
||||||
|
android:textSize="16sp"
|
||||||
|
android:text="@string/about_credits" />
|
||||||
|
|
||||||
|
</LinearLayout>
|
|
@ -1,27 +0,0 @@
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8"/>
|
|
||||||
<style>
|
|
||||||
* {
|
|
||||||
margin:5px;
|
|
||||||
color: #212121;
|
|
||||||
}
|
|
||||||
p { font-size:120%;}
|
|
||||||
body { font-family: sans-serif; }
|
|
||||||
pre { background-color: #eeeeee; padding: 1em; white-space: pre-wrap; }
|
|
||||||
a, a:visited, a:hover, a:active {
|
|
||||||
color: #727272;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body>
|
|
||||||
<center>
|
|
||||||
<img width="72" src="file:///android_res/mipmap/ic_launcher.png">
|
|
||||||
<h2>OTP Authenticator 0.1.1</h2>
|
|
||||||
<p>© 2015 - Bruno Bierbaumer</p>
|
|
||||||
<p><a href="https://github.com/0xbb/otp-authenticator">Project Homepage</a></p>
|
|
||||||
<p><a href="file:///android_res/raw/opensource.html">Acknowledgments</a></p>
|
|
||||||
</center>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,32 +0,0 @@
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8"/>
|
|
||||||
<style>
|
|
||||||
* {
|
|
||||||
margin:5px;
|
|
||||||
color: #212121;
|
|
||||||
}
|
|
||||||
body { font-family: sans-serif; }
|
|
||||||
pre { background-color: #eeeeee; padding: 1em; white-space: pre-wrap; }
|
|
||||||
a, a:visited, a:hover, a:active {
|
|
||||||
color: #727272;
|
|
||||||
}
|
|
||||||
ul {
|
|
||||||
padding-left:20px;
|
|
||||||
margin:0;
|
|
||||||
font-size:80%;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div>
|
|
||||||
<h3>Acknowledgments:</h3>
|
|
||||||
<ul>
|
|
||||||
<li><a href="https://commons.apache.org/proper/commons-codec/">Apache Commons Code</a>
|
|
||||||
<li><a href="https://android.googlesource.com/platform/development/+/master/samples/Vault/src/com/example/android/vault">Code Parts from Google's Android Samples</a>
|
|
||||||
<li><a href="https://github.com/zxing/zxing">ZXing</a>
|
|
||||||
<li><a href="https://github.com/journeyapps/zxing-android-embedded">ZXing Android Embedded</a>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -17,4 +17,10 @@
|
||||||
<string name="alert_rename">Rename</string>
|
<string name="alert_rename">Rename</string>
|
||||||
<string name="alert_remove">"Remove "</string>
|
<string name="alert_remove">"Remove "</string>
|
||||||
<string name="msg_camera_permission">Camera permission not granted</string>
|
<string name="msg_camera_permission">Camera permission not granted</string>
|
||||||
|
|
||||||
|
<!-- About dialog -->
|
||||||
|
<string name="about_description">An open-source two-factor authentication App for Android 4.3+</string>
|
||||||
|
<string name="about_version_hint">Version</string>
|
||||||
|
<string name="about_homepage_link" translatable="false">https://github.com/flocke/andOTP</string>
|
||||||
|
<string name="about_credits" translatable="false">Copyright © 2017 Jakob Nixdorf</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
Loading…
Reference in a new issue