Skip to content

Commit

Permalink
Add an About page
Browse files Browse the repository at this point in the history
This about page layout is borrowed from K-9 Mail:
https://github.com/k9mail
  • Loading branch information
Branden Archer authored and Branden Archer committed May 16, 2016
1 parent fa8cf1b commit eaa722a
Show file tree
Hide file tree
Showing 7 changed files with 124 additions and 2 deletions.
85 changes: 85 additions & 0 deletions app/src/main/java/protect/card_locker/MainActivity.java
Original file line number Diff line number Diff line change
@@ -1,19 +1,29 @@
package protect.card_locker;

import android.content.DialogInterface;
import android.content.Intent;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.database.Cursor;
import android.os.Bundle;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.webkit.WebView;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.TextView;

import java.util.Calendar;

public class MainActivity extends AppCompatActivity
{
private static final String TAG = "LoyaltyCardLocker";

@Override
protected void onCreate(Bundle savedInstanceState)
{
Expand Down Expand Up @@ -99,6 +109,81 @@ public boolean onOptionsItemSelected(MenuItem item)
return true;
}

if(id == R.id.action_about)
{
displayAboutDialog();
return true;
}

return super.onOptionsItemSelected(item);
}

private void displayAboutDialog()
{
final String[][] USED_LIBRARIES = new String[][]
{
new String[] {"Commons CSV", "https://commons.apache.org/proper/commons-csv/"},
new String[] {"ZXing", "https://github.com/zxing/zxing"},
new String[] {"ZXing Android Embedded", "https://github.com/journeyapps/zxing-android-embedded"},
};

StringBuilder libs = new StringBuilder().append("<ul>");
for (String[] library : USED_LIBRARIES)
{
libs.append("<li><a href=\"").append(library[1]).append("\">").append(library[0]).append("</a></li>");
}
libs.append("</ul>");

String appName = getString(R.string.app_name);
int year = Calendar.getInstance().get(Calendar.YEAR);

String version = "?";
try
{
PackageInfo pi = getPackageManager().getPackageInfo(getPackageName(), 0);
version = pi.versionName;
}
catch (PackageManager.NameNotFoundException e)
{
Log.w(TAG, "Package name not found", e);
}

WebView wv = new WebView(this);
String html =
"<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\" />" +
"<img src=\"file:///android_res/mipmap/ic_launcher.png\" alt=\"" + appName + "\"/>" +
"<h1>" +
String.format(getString(R.string.about_title_fmt),
"<a href=\"" + getString(R.string.app_webpage_url)) + "\">" +
appName +
"</a>" +
"</h1><p>" +
appName +
" " +
String.format(getString(R.string.debug_version_fmt), version) +
"</p><p>" +
String.format(getString(R.string.app_revision_fmt),
"<a href=\"" + getString(R.string.app_revision_url) + "\">" +
getString(R.string.app_revision_url) +
"</a>") +
"</p><hr/><p>" +
String.format(getString(R.string.app_copyright_fmt), year) +
"</p><hr/><p>" +
getString(R.string.app_license) +
"</p><hr/><p>" +
String.format(getString(R.string.app_libraries), appName, libs.toString());

wv.loadDataWithBaseURL("file:///android_res/drawable/", html, "text/html", "utf-8", null);
new AlertDialog.Builder(this)
.setView(wv)
.setCancelable(true)
.setPositiveButton(R.string.ok, new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int which)
{
dialog.dismiss();
}
})
.show();
}
}
4 changes: 4 additions & 0 deletions app/src/main/res/menu/main_menu.xml
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,8 @@
android:icon="@drawable/ic_import_export_white_24dp"
android:title="@string/importExport"
app:showAsAction="ifRoom"/>
<item
android:id="@+id/action_about"
android:title="@string/about"
app:showAsAction="never"/>
</menu>
8 changes: 8 additions & 0 deletions app/src/main/res/values-it/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -41,4 +41,12 @@
<string name="importing">Importazione in corso&#8230;</string>
<string name="exporting">Esportazione in corso&#8230;</string>
<string name="noExternalStoragePermissionError">Impossibile importare o esportare i dati senza il permesso per l'uso della memoria esterna.</string>
<string name="about">Informazioni</string>
<string name="app_copyright_fmt">Copyright 2016-<xliff:g>%s</xliff:g> Branden Archer</string>
<string name="app_license">Pubblicato sotto licenza GPLv3.</string>
<string name="about_title_fmt">Informazioni su <xliff:g id="app_name">%s</xliff:g></string>
<string name="debug_version_fmt">Versione: <xliff:g id="version">%s</xliff:g></string>
<string name="app_revision_fmt">Informazione sulla revisione: <xliff:g id="app_revision_url">%s</xliff:g></string>
<string name="app_libraries"><xliff:g id="app_name">%s</xliff:g> usa le seguenti librerie di terze parti: <xliff:g id="app_libraries_list">%s</xliff:g></string>
<string name="ok">Ok</string>
</resources>
8 changes: 8 additions & 0 deletions app/src/main/res/values-nl/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -41,4 +41,12 @@
<string name="importing">Importerende&#8230;</string>
<string name="exporting">Exporterende&#8230;</string>
<string name="noExternalStoragePermissionError">Niet mogelijk te importeren of exporteren zonder rechten op externe opslag</string>
<string name="about">Over</string>
<string name="app_copyright_fmt">Auteursrecht 2016-<xliff:g>%s</xliff:g> Branden Archer</string>
<string name="app_license">Gelicenseerd met GPLv3.</string>
<string name="about_title_fmt">Over <xliff:g id="app_name">%s</xliff:g></string>
<string name="debug_version_fmt">Versie: <xliff:g id="version">%s</xliff:g></string>
<string name="app_revision_fmt">Revisieïnformatie: <xliff:g id="app_revision_url">%s</xliff:g></string>
<string name="app_libraries"><xliff:g id="app_name">%s</xliff:g> gebruikt de volgende bibliotheken van derden: <xliff:g id="app_libraries_list">%s</xliff:g></string>
<string name="ok">Oké</string>
</resources>
5 changes: 5 additions & 0 deletions app/src/main/res/values/constants.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_revision_url" translatable="false">https://github.com/brarcher/loyalty-card-locker/releases</string>
<string name="app_webpage_url" translatable="false">https://github.com/brarcher/loyalty-card-locker</string>
</resources>
13 changes: 12 additions & 1 deletion app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
<resources>
<resources
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">

<string name="app_name">Loyalty Card Locker</string>
<string name="action_add">Add</string>

Expand All @@ -14,6 +16,7 @@
<string name="capture">Capture Card</string>
<string name="edit">Edit</string>
<string name="delete">Delete</string>
<string name="ok">OK</string>

<string name="editCardTitle">Edit Loyalty Card</string>
<string name="addCardTitle">Add Loyalty Card</string>
Expand All @@ -40,4 +43,12 @@
<string name="importing">Importing&#8230;</string>
<string name="exporting">Exporting&#8230;</string>
<string name="noExternalStoragePermissionError">Unable to import or export cards without the external storage permission</string>

<string name="about">About</string>
<string name="app_copyright_fmt">Copyright 2016-<xliff:g>%s</xliff:g> Branden Archer</string>
<string name="app_license">Licensed under the GPLv3.</string>
<string name="about_title_fmt">About <xliff:g id="app_name">%s</xliff:g></string>
<string name="debug_version_fmt">Version: <xliff:g id="version">%s</xliff:g></string>
<string name="app_revision_fmt">Revision Information: <xliff:g id="app_revision_url">%s</xliff:g></string>
<string name="app_libraries"><xliff:g id="app_name">%s</xliff:g> uses the following third-party libraries: <xliff:g id="app_libraries_list">%s</xliff:g></string>
</resources>
3 changes: 2 additions & 1 deletion app/src/test/java/protect/card_locker/MainActivityTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -50,10 +50,11 @@ public void onCreateShouldInflateLayout() throws Exception
assertTrue(menu != null);

// The settings and add button should be present
assertEquals(menu.size(), 2);
assertEquals(menu.size(), 3);

assertEquals("Add", menu.findItem(R.id.action_add).getTitle().toString());
assertEquals("Import/Export", menu.findItem(R.id.action_import_export).getTitle().toString());
assertEquals("About", menu.findItem(R.id.action_about).getTitle().toString());
}

@Test
Expand Down

0 comments on commit eaa722a

Please sign in to comment.