aboutsummaryrefslogtreecommitdiffstats
path: root/OpenKeychain
diff options
context:
space:
mode:
authorDominik Schürmann <dominik@dominikschuermann.de>2014-05-07 09:05:38 +0200
committerDominik Schürmann <dominik@dominikschuermann.de>2014-05-07 09:05:38 +0200
commita36f7f80e2552aff0b7bd647e8f9aec0cc80efec (patch)
treee1466d03c79babf87f7d2baf4b381448b7f72c6d /OpenKeychain
parentdc382a2ddd40a2797ad3458a50afb5e88ec27b32 (diff)
parent174858e9cf8f874fec3a564d026a79be7d166cff (diff)
downloadopen-keychain-a36f7f80e2552aff0b7bd647e8f9aec0cc80efec.tar.gz
open-keychain-a36f7f80e2552aff0b7bd647e8f9aec0cc80efec.tar.bz2
open-keychain-a36f7f80e2552aff0b7bd647e8f9aec0cc80efec.zip
Merge branch 'master' of github.com:open-keychain/open-keychain
Diffstat (limited to 'OpenKeychain')
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/KeychainApplication.java20
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/HelpActivity.java50
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/KeyListFragment.java3
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyActivity.java31
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyMainFragment.java50
-rw-r--r--OpenKeychain/src/main/res/drawable-hdpi/apptheme_fastscroll_thumb_default_holo.pngbin0 -> 260 bytes
-rw-r--r--OpenKeychain/src/main/res/drawable-hdpi/apptheme_fastscroll_thumb_pressed_holo.pngbin0 -> 467 bytes
-rw-r--r--OpenKeychain/src/main/res/drawable-mdpi/apptheme_fastscroll_thumb_default_holo.pngbin0 -> 169 bytes
-rw-r--r--OpenKeychain/src/main/res/drawable-mdpi/apptheme_fastscroll_thumb_pressed_holo.pngbin0 -> 306 bytes
-rw-r--r--OpenKeychain/src/main/res/drawable-xhdpi/apptheme_fastscroll_thumb_default_holo.pngbin0 -> 324 bytes
-rw-r--r--OpenKeychain/src/main/res/drawable-xhdpi/apptheme_fastscroll_thumb_pressed_holo.pngbin0 -> 613 bytes
-rw-r--r--OpenKeychain/src/main/res/drawable-xxhdpi/apptheme_fastscroll_thumb_default_holo.pngbin0 -> 600 bytes
-rw-r--r--OpenKeychain/src/main/res/drawable-xxhdpi/apptheme_fastscroll_thumb_pressed_holo.pngbin0 -> 911 bytes
-rw-r--r--OpenKeychain/src/main/res/drawable/apptheme_fastscroll_thumb_holo.xml20
-rw-r--r--OpenKeychain/src/main/res/drawable/keychaintheme_searchview_holo_light.xml7
-rw-r--r--OpenKeychain/src/main/res/layout/help_activity.xml5
-rw-r--r--OpenKeychain/src/main/res/layout/key_list_item.xml11
-rw-r--r--OpenKeychain/src/main/res/layout/view_key_activity.xml31
-rw-r--r--OpenKeychain/src/main/res/layout/view_key_main_fragment.xml22
-rw-r--r--OpenKeychain/src/main/res/layout/view_key_userids_item.xml5
-rw-r--r--OpenKeychain/src/main/res/res/values-v11/styles_keychaintheme.xml24
-rw-r--r--OpenKeychain/src/main/res/res/values-v11/themes_keychaintheme.xml28
-rw-r--r--OpenKeychain/src/main/res/res/values/colors_keychaintheme.xml4
-rw-r--r--OpenKeychain/src/main/res/res/values/styles_keychaintheme.xml53
-rw-r--r--OpenKeychain/src/main/res/res/values/themes_keychaintheme.xml32
-rw-r--r--OpenKeychain/src/main/res/values-v11/themes_keychaintheme.xml6
-rw-r--r--OpenKeychain/src/main/res/values/strings.xml1
27 files changed, 180 insertions, 223 deletions
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/KeychainApplication.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/KeychainApplication.java
index 866888bb2..f911318a0 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/KeychainApplication.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/KeychainApplication.java
@@ -18,6 +18,9 @@
package org.sufficientlysecure.keychain;
import android.app.Application;
+import android.content.Context;
+import android.graphics.PorterDuff;
+import android.graphics.drawable.Drawable;
import android.os.Environment;
import org.spongycastle.jce.provider.BouncyCastleProvider;
@@ -70,5 +73,22 @@ public class KeychainApplication extends Application {
// that the directory doesn't exist at this point
}
}
+
+ brandGlowEffect(getApplicationContext(),
+ getApplicationContext().getResources().getColor(R.color.emphasis));
+ }
+
+ static void brandGlowEffect(Context context, int brandColor) {
+ // terrible hack to brand the edge overscroll glow effect
+ // https://gist.github.com/menny/7878762#file-brandgloweffect_full-java
+
+ //glow
+ int glowDrawableId = context.getResources().getIdentifier("overscroll_glow", "drawable", "android");
+ Drawable androidGlow = context.getResources().getDrawable(glowDrawableId);
+ androidGlow.setColorFilter(brandColor, PorterDuff.Mode.SRC_IN);
+ //edge
+ int edgeDrawableId = context.getResources().getIdentifier("overscroll_edge", "drawable", "android");
+ Drawable androidEdge = context.getResources().getDrawable(edgeDrawableId);
+ androidEdge.setColorFilter(brandColor, PorterDuff.Mode.SRC_IN);
}
}
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/HelpActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/HelpActivity.java
index e81bc1563..cf7446a58 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/HelpActivity.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/HelpActivity.java
@@ -24,7 +24,9 @@ import android.support.v7.app.ActionBar;
import android.support.v7.app.ActionBarActivity;
import org.sufficientlysecure.keychain.R;
+import org.sufficientlysecure.keychain.ui.adapter.PagerTabStripAdapter;
import org.sufficientlysecure.keychain.ui.adapter.TabsAdapter;
+import org.sufficientlysecure.keychain.util.SlidingTabLayout;
public class HelpActivity extends ActionBarActivity {
public static final String EXTRA_SELECTED_TAB = "selected_tab";
@@ -37,25 +39,27 @@ public class HelpActivity extends ActionBarActivity {
public static final int TAB_ABOUT = 5;
ViewPager mViewPager;
- TabsAdapter mTabsAdapter;
+ private PagerTabStripAdapter mTabsAdapter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- setContentView(R.layout.help_activity);
-
- mViewPager = (ViewPager) findViewById(R.id.pager);
-
final ActionBar actionBar = getSupportActionBar();
actionBar.setDisplayShowTitleEnabled(true);
actionBar.setDisplayHomeAsUpEnabled(false);
actionBar.setHomeButtonEnabled(false);
- actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
- mTabsAdapter = new TabsAdapter(this, mViewPager);
+ setContentView(R.layout.help_activity);
+
+ mViewPager = (ViewPager) findViewById(R.id.pager);
+ SlidingTabLayout slidingTabLayout =
+ (SlidingTabLayout) findViewById(R.id.sliding_tab_layout);
+
+ mTabsAdapter = new PagerTabStripAdapter(this);
+ mViewPager.setAdapter(mTabsAdapter);
- int selectedTab = 0;
+ int selectedTab = TAB_START;
Intent intent = getIntent();
if (intent.getExtras() != null && intent.getExtras().containsKey(EXTRA_SELECTED_TAB)) {
selectedTab = intent.getExtras().getInt(EXTRA_SELECTED_TAB);
@@ -63,30 +67,36 @@ public class HelpActivity extends ActionBarActivity {
Bundle startBundle = new Bundle();
startBundle.putInt(HelpHtmlFragment.ARG_HTML_FILE, R.raw.help_start);
- mTabsAdapter.addTab(actionBar.newTab().setText(getString(R.string.help_tab_start)),
- HelpHtmlFragment.class, startBundle, (selectedTab == TAB_START));
+ mTabsAdapter.addTab(HelpHtmlFragment.class, startBundle,
+ getString(R.string.help_tab_start));
Bundle faqBundle = new Bundle();
faqBundle.putInt(HelpHtmlFragment.ARG_HTML_FILE, R.raw.help_faq);
- mTabsAdapter.addTab(actionBar.newTab().setText(getString(R.string.help_tab_faq)),
- HelpHtmlFragment.class, faqBundle, (selectedTab == TAB_FAQ));
+ mTabsAdapter.addTab(HelpHtmlFragment.class, faqBundle,
+ getString(R.string.help_tab_faq));
Bundle wotBundle = new Bundle();
wotBundle.putInt(HelpHtmlFragment.ARG_HTML_FILE, R.raw.help_wot);
- mTabsAdapter.addTab(actionBar.newTab().setText(getString(R.string.help_tab_wot)),
- HelpHtmlFragment.class, wotBundle, (selectedTab == TAB_WOT));
+ mTabsAdapter.addTab(HelpHtmlFragment.class, wotBundle,
+ getString(R.string.help_tab_wot));
Bundle nfcBundle = new Bundle();
nfcBundle.putInt(HelpHtmlFragment.ARG_HTML_FILE, R.raw.help_nfc_beam);
- mTabsAdapter.addTab(actionBar.newTab().setText(getString(R.string.help_tab_nfc_beam)),
- HelpHtmlFragment.class, nfcBundle, (selectedTab == TAB_NFC));
+ mTabsAdapter.addTab(HelpHtmlFragment.class, nfcBundle,
+ getString(R.string.help_tab_nfc_beam));
Bundle changelogBundle = new Bundle();
changelogBundle.putInt(HelpHtmlFragment.ARG_HTML_FILE, R.raw.help_changelog);
- mTabsAdapter.addTab(actionBar.newTab().setText(getString(R.string.help_tab_changelog)),
- HelpHtmlFragment.class, changelogBundle, (selectedTab == TAB_CHANGELOG));
+ mTabsAdapter.addTab(HelpHtmlFragment.class, changelogBundle,
+ getString(R.string.help_tab_changelog));
+
+ mTabsAdapter.addTab(HelpAboutFragment.class, null,
+ getString(R.string.help_tab_about));
+
+ // NOTE: must be after adding the tabs!
+ slidingTabLayout.setViewPager(mViewPager);
- mTabsAdapter.addTab(actionBar.newTab().setText(getString(R.string.help_tab_about)),
- HelpAboutFragment.class, null, (selectedTab == TAB_ABOUT));
+ // switch to tab selected by extra
+ mViewPager.setCurrentItem(selectedTab);
}
}
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/KeyListFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/KeyListFragment.java
index f196e3445..5464a9b96 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/KeyListFragment.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/KeyListFragment.java
@@ -381,6 +381,9 @@ public class KeyListFragment extends Fragment
// Execute this when searching
mSearchView.setOnQueryTextListener(this);
+ View searchPlate = mSearchView.findViewById(android.support.v7.appcompat.R.id.search_plate);
+ searchPlate.setBackgroundResource(R.drawable.keychaintheme_searchview_holo_light);
+
// Erase search result without focus
MenuItemCompat.setOnActionExpandListener(searchItem, new MenuItemCompat.OnActionExpandListener() {
@Override
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyActivity.java
index 7c920294c..1955c122d 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyActivity.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyActivity.java
@@ -40,6 +40,7 @@ import android.support.v7.app.ActionBar;
import android.support.v7.app.ActionBarActivity;
import android.view.Menu;
import android.view.MenuItem;
+import android.view.View;
import android.view.Window;
import com.devspark.appmsg.AppMsg;
@@ -55,6 +56,7 @@ import org.sufficientlysecure.keychain.util.Log;
import org.sufficientlysecure.keychain.util.SlidingTabLayout;
import java.io.IOException;
+import java.util.Date;
import java.util.HashMap;
public class ViewKeyActivity extends ActionBarActivity implements
@@ -75,6 +77,9 @@ public class ViewKeyActivity extends ActionBarActivity implements
private ViewPager mViewPager;
private SlidingTabLayout mSlidingTabLayout;
private PagerTabStripAdapter mTabsAdapter;
+ private View mStatusDivider;
+ private View mStatusRevoked;
+ private View mStatusExpired;
public static final int REQUEST_CODE_LOOKUP_KEY = 0x00007006;
@@ -104,6 +109,10 @@ public class ViewKeyActivity extends ActionBarActivity implements
setContentView(R.layout.view_key_activity);
+ mStatusDivider = findViewById(R.id.status_divider);
+ mStatusRevoked = findViewById(R.id.view_key_revoked);
+ mStatusExpired = findViewById(R.id.view_key_expired);
+
mViewPager = (ViewPager) findViewById(R.id.view_key_pager);
mSlidingTabLayout = (SlidingTabLayout) findViewById(R.id.view_key_sliding_tab_layout);
@@ -363,10 +372,14 @@ public class ViewKeyActivity extends ActionBarActivity implements
KeychainContract.KeyRings._ID,
KeychainContract.KeyRings.MASTER_KEY_ID,
KeychainContract.KeyRings.USER_ID,
+ KeychainContract.KeyRings.IS_REVOKED,
+ KeychainContract.KeyRings.EXPIRY,
};
static final int INDEX_UNIFIED_MASTER_KEY_ID = 1;
static final int INDEX_UNIFIED_USER_ID = 2;
+ static final int INDEX_UNIFIED_IS_REVOKED = 3;
+ static final int INDEX_UNIFIED_EXPIRY = 4;
@Override
public Loader<Cursor> onCreateLoader(int id, Bundle args) {
@@ -408,6 +421,24 @@ public class ViewKeyActivity extends ActionBarActivity implements
String keyIdStr = PgpKeyHelper.convertKeyIdToHex(masterKeyId);
getSupportActionBar().setSubtitle(keyIdStr);
+ // If this key is revoked, it cannot be used for anything!
+ if (data.getInt(INDEX_UNIFIED_IS_REVOKED) != 0) {
+ mStatusDivider.setVisibility(View.VISIBLE);
+ mStatusRevoked.setVisibility(View.VISIBLE);
+ mStatusExpired.setVisibility(View.GONE);
+ } else {
+ mStatusRevoked.setVisibility(View.GONE);
+
+ Date expiryDate = new Date(data.getLong(INDEX_UNIFIED_EXPIRY) * 1000);
+ if (!data.isNull(INDEX_UNIFIED_EXPIRY) && expiryDate.before(new Date())) {
+ mStatusDivider.setVisibility(View.VISIBLE);
+ mStatusExpired.setVisibility(View.VISIBLE);
+ } else {
+ mStatusDivider.setVisibility(View.GONE);
+ mStatusExpired.setVisibility(View.GONE);
+ }
+ }
+
break;
}
}
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyMainFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyMainFragment.java
index ded457eca..b30c9aaec 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyMainFragment.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyMainFragment.java
@@ -32,6 +32,8 @@ import android.view.ViewGroup;
import android.widget.LinearLayout;
import android.widget.ListView;
+import com.devspark.appmsg.AppMsg;
+
import org.sufficientlysecure.keychain.Constants;
import org.sufficientlysecure.keychain.R;import org.sufficientlysecure.keychain.provider.KeychainContract;
import org.sufficientlysecure.keychain.provider.KeychainContract.KeyRings;
@@ -49,8 +51,6 @@ public class ViewKeyMainFragment extends Fragment implements
public static final String ARG_DATA_URI = "uri";
private LinearLayout mContainer;
- private View mStatusRevoked;
- private View mStatusExpired;
private View mActionEdit;
private View mActionEditDivider;
private View mActionEncrypt;
@@ -62,6 +62,9 @@ public class ViewKeyMainFragment extends Fragment implements
private static final int LOADER_ID_UNIFIED = 0;
private static final int LOADER_ID_USER_IDS = 1;
+ // conservative attitude
+ private boolean mHasEncrypt = true;
+
private ViewKeyUserIdsAdapter mUserIdsAdapter;
private Uri mDataUri;
@@ -72,8 +75,6 @@ public class ViewKeyMainFragment extends Fragment implements
mContainer = (LinearLayout) view.findViewById(R.id.container);
mUserIds = (ListView) view.findViewById(R.id.view_key_user_ids);
- mStatusRevoked = view.findViewById(R.id.view_key_revoked);
- mStatusExpired = view.findViewById(R.id.view_key_expired);
mActionEdit = view.findViewById(R.id.view_key_action_edit);
mActionEditDivider = view.findViewById(R.id.view_key_action_edit_divider);
mActionEncrypt = view.findViewById(R.id.view_key_action_encrypt);
@@ -132,30 +133,14 @@ public class ViewKeyMainFragment extends Fragment implements
}
static final String[] UNIFIED_PROJECTION = new String[]{
- KeyRings._ID, KeyRings.MASTER_KEY_ID, KeyRings.HAS_ANY_SECRET, KeyRings.IS_REVOKED,
- KeyRings.USER_ID, KeyRings.FINGERPRINT,
- KeyRings.ALGORITHM, KeyRings.KEY_SIZE, KeyRings.CREATION, KeyRings.EXPIRY,
- KeyRings.HAS_ENCRYPT
-
+ KeyRings._ID, KeyRings.MASTER_KEY_ID,
+ KeyRings.HAS_ANY_SECRET, KeyRings.IS_REVOKED, KeyRings.EXPIRY, KeyRings.HAS_ENCRYPT
};
static final int INDEX_UNIFIED_MASTER_KEY_ID = 1;
static final int INDEX_UNIFIED_HAS_ANY_SECRET = 2;
static final int INDEX_UNIFIED_IS_REVOKED = 3;
- static final int INDEX_UNIFIED_USER_ID = 4;
- static final int INDEX_UNIFIED_FINGERPRINT = 5;
- static final int INDEX_UNIFIED_ALGORITHM = 6;
- static final int INDEX_UNIFIED_KEY_SIZE = 7;
- static final int INDEX_UNIFIED_CREATION = 8;
- static final int INDEX_UNIFIED_EXPIRY = 9;
- static final int INDEX_UNIFIED_HAS_ENCRYPT = 10;
-
- static final String[] KEYS_PROJECTION = new String[]{
- Keys._ID,
- Keys.KEY_ID, Keys.RANK, Keys.ALGORITHM, Keys.KEY_SIZE, Keys.HAS_SECRET,
- Keys.CAN_CERTIFY, Keys.CAN_ENCRYPT, Keys.CAN_SIGN, Keys.IS_REVOKED,
- Keys.CREATION, Keys.EXPIRY, Keys.FINGERPRINT
- };
- static final int KEYS_INDEX_CAN_ENCRYPT = 7;
+ static final int INDEX_UNIFIED_EXPIRY = 4;
+ static final int INDEX_UNIFIED_HAS_ENCRYPT = 5;
public Loader<Cursor> onCreateLoader(int id, Bundle args) {
switch (id) {
@@ -165,7 +150,8 @@ public class ViewKeyMainFragment extends Fragment implements
}
case LOADER_ID_USER_IDS: {
Uri baseUri = UserIds.buildUserIdsUri(mDataUri);
- return new CursorLoader(getActivity(), baseUri, ViewKeyUserIdsAdapter.USER_IDS_PROJECTION, null, null, null);
+ return new CursorLoader(getActivity(), baseUri,
+ ViewKeyUserIdsAdapter.USER_IDS_PROJECTION, null, null, null);
}
default:
@@ -206,9 +192,6 @@ public class ViewKeyMainFragment extends Fragment implements
// If this key is revoked, it cannot be used for anything!
if (data.getInt(INDEX_UNIFIED_IS_REVOKED) != 0) {
- mStatusRevoked.setVisibility(View.VISIBLE);
- mStatusExpired.setVisibility(View.GONE);
-
mActionEdit.setEnabled(false);
mActionCertify.setEnabled(false);
mActionEncrypt.setEnabled(false);
@@ -217,18 +200,16 @@ public class ViewKeyMainFragment extends Fragment implements
Date expiryDate = new Date(data.getLong(INDEX_UNIFIED_EXPIRY) * 1000);
if (!data.isNull(INDEX_UNIFIED_EXPIRY) && expiryDate.before(new Date())) {
- mStatusRevoked.setVisibility(View.GONE);
- mStatusExpired.setVisibility(View.VISIBLE);
mActionCertify.setEnabled(false);
mActionEncrypt.setEnabled(false);
} else {
- mStatusRevoked.setVisibility(View.GONE);
- mStatusExpired.setVisibility(View.GONE);
mActionCertify.setEnabled(true);
mActionEncrypt.setEnabled(true);
}
}
+ mHasEncrypt = data.getInt(INDEX_UNIFIED_HAS_ENCRYPT) != 0;
+
break;
}
}
@@ -255,6 +236,11 @@ public class ViewKeyMainFragment extends Fragment implements
}
private void encrypt(Uri dataUri) {
+ // If there is no encryption key, don't bother.
+ if (!mHasEncrypt) {
+ AppMsg.makeText(getActivity(), R.string.error_no_encrypt_subkey, AppMsg.STYLE_ALERT).show();
+ return;
+ }
try {
long keyId = new ProviderHelper(getActivity()).extractOrGetMasterKeyId(dataUri);
long[] encryptionKeyIds = new long[]{keyId};
diff --git a/OpenKeychain/src/main/res/drawable-hdpi/apptheme_fastscroll_thumb_default_holo.png b/OpenKeychain/src/main/res/drawable-hdpi/apptheme_fastscroll_thumb_default_holo.png
new file mode 100644
index 000000000..0ddafab03
--- /dev/null
+++ b/OpenKeychain/src/main/res/drawable-hdpi/apptheme_fastscroll_thumb_default_holo.png
Binary files differ
diff --git a/OpenKeychain/src/main/res/drawable-hdpi/apptheme_fastscroll_thumb_pressed_holo.png b/OpenKeychain/src/main/res/drawable-hdpi/apptheme_fastscroll_thumb_pressed_holo.png
new file mode 100644
index 000000000..c062b17f8
--- /dev/null
+++ b/OpenKeychain/src/main/res/drawable-hdpi/apptheme_fastscroll_thumb_pressed_holo.png
Binary files differ
diff --git a/OpenKeychain/src/main/res/drawable-mdpi/apptheme_fastscroll_thumb_default_holo.png b/OpenKeychain/src/main/res/drawable-mdpi/apptheme_fastscroll_thumb_default_holo.png
new file mode 100644
index 000000000..ebffb16a0
--- /dev/null
+++ b/OpenKeychain/src/main/res/drawable-mdpi/apptheme_fastscroll_thumb_default_holo.png
Binary files differ
diff --git a/OpenKeychain/src/main/res/drawable-mdpi/apptheme_fastscroll_thumb_pressed_holo.png b/OpenKeychain/src/main/res/drawable-mdpi/apptheme_fastscroll_thumb_pressed_holo.png
new file mode 100644
index 000000000..b6739b564
--- /dev/null
+++ b/OpenKeychain/src/main/res/drawable-mdpi/apptheme_fastscroll_thumb_pressed_holo.png
Binary files differ
diff --git a/OpenKeychain/src/main/res/drawable-xhdpi/apptheme_fastscroll_thumb_default_holo.png b/OpenKeychain/src/main/res/drawable-xhdpi/apptheme_fastscroll_thumb_default_holo.png
new file mode 100644
index 000000000..7c5e21eeb
--- /dev/null
+++ b/OpenKeychain/src/main/res/drawable-xhdpi/apptheme_fastscroll_thumb_default_holo.png
Binary files differ
diff --git a/OpenKeychain/src/main/res/drawable-xhdpi/apptheme_fastscroll_thumb_pressed_holo.png b/OpenKeychain/src/main/res/drawable-xhdpi/apptheme_fastscroll_thumb_pressed_holo.png
new file mode 100644
index 000000000..86814b45d
--- /dev/null
+++ b/OpenKeychain/src/main/res/drawable-xhdpi/apptheme_fastscroll_thumb_pressed_holo.png
Binary files differ
diff --git a/OpenKeychain/src/main/res/drawable-xxhdpi/apptheme_fastscroll_thumb_default_holo.png b/OpenKeychain/src/main/res/drawable-xxhdpi/apptheme_fastscroll_thumb_default_holo.png
new file mode 100644
index 000000000..5e4818bfc
--- /dev/null
+++ b/OpenKeychain/src/main/res/drawable-xxhdpi/apptheme_fastscroll_thumb_default_holo.png
Binary files differ
diff --git a/OpenKeychain/src/main/res/drawable-xxhdpi/apptheme_fastscroll_thumb_pressed_holo.png b/OpenKeychain/src/main/res/drawable-xxhdpi/apptheme_fastscroll_thumb_pressed_holo.png
new file mode 100644
index 000000000..7dd89e1f4
--- /dev/null
+++ b/OpenKeychain/src/main/res/drawable-xxhdpi/apptheme_fastscroll_thumb_pressed_holo.png
Binary files differ
diff --git a/OpenKeychain/src/main/res/drawable/apptheme_fastscroll_thumb_holo.xml b/OpenKeychain/src/main/res/drawable/apptheme_fastscroll_thumb_holo.xml
new file mode 100644
index 000000000..e7121f083
--- /dev/null
+++ b/OpenKeychain/src/main/res/drawable/apptheme_fastscroll_thumb_holo.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2010 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+ <item android:state_pressed="true" android:drawable="@drawable/apptheme_fastscroll_thumb_pressed_holo" />
+ <item android:drawable="@drawable/apptheme_fastscroll_thumb_default_holo" />
+</selector>
diff --git a/OpenKeychain/src/main/res/drawable/keychaintheme_searchview_holo_light.xml b/OpenKeychain/src/main/res/drawable/keychaintheme_searchview_holo_light.xml
new file mode 100644
index 000000000..e82b1c2f3
--- /dev/null
+++ b/OpenKeychain/src/main/res/drawable/keychaintheme_searchview_holo_light.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+ <item android:state_focused="true"
+ android:drawable="@drawable/keychaintheme_textfield_activated_holo_light" />
+ <item android:drawable="@drawable/keychaintheme_textfield_default_holo_light" />
+</selector> \ No newline at end of file
diff --git a/OpenKeychain/src/main/res/layout/help_activity.xml b/OpenKeychain/src/main/res/layout/help_activity.xml
index 58e4919dc..76ba183b7 100644
--- a/OpenKeychain/src/main/res/layout/help_activity.xml
+++ b/OpenKeychain/src/main/res/layout/help_activity.xml
@@ -4,6 +4,11 @@
android:layout_height="match_parent"
android:orientation="vertical" >
+ <org.sufficientlysecure.keychain.util.SlidingTabLayout
+ android:id="@+id/sliding_tab_layout"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content" />
+
<android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_width="match_parent"
diff --git a/OpenKeychain/src/main/res/layout/key_list_item.xml b/OpenKeychain/src/main/res/layout/key_list_item.xml
index 85d9afdd3..73a20bd2e 100644
--- a/OpenKeychain/src/main/res/layout/key_list_item.xml
+++ b/OpenKeychain/src/main/res/layout/key_list_item.xml
@@ -48,7 +48,7 @@
<FrameLayout
android:id="@+id/status_layout"
- android:layout_width="80dp"
+ android:layout_width="wrap_content"
android:layout_height="match_parent">
<ImageButton
@@ -61,19 +61,20 @@
android:textAppearance="?android:attr/textAppearanceSmall"
android:textColor="@color/black"
android:src="@drawable/ic_action_edit"
- android:text="@string/edit" />
+ android:text="@string/edit"
+ android:padding="12dp" />
<TextView
android:id="@+id/revoked"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:paddingLeft="8dp"
android:singleLine="true"
android:ellipsize="end"
android:textAppearance="?android:attr/textAppearanceSmall"
android:text="@string/revoked"
android:textColor="#e00"
- android:layout_gravity="center" />
+ android:layout_gravity="center"
+ android:padding="12dp" />
<ImageView
android:layout_width="wrap_content"
@@ -81,7 +82,7 @@
android:id="@+id/verified"
android:layout_gravity="center"
android:src="@drawable/key_certify_ok_depth0"
- android:paddingLeft="25dp" />
+ android:padding="16dp" />
</FrameLayout>
</LinearLayout>
diff --git a/OpenKeychain/src/main/res/layout/view_key_activity.xml b/OpenKeychain/src/main/res/layout/view_key_activity.xml
index eed71945b..f43aade25 100644
--- a/OpenKeychain/src/main/res/layout/view_key_activity.xml
+++ b/OpenKeychain/src/main/res/layout/view_key_activity.xml
@@ -4,6 +4,37 @@
android:layout_height="match_parent"
android:orientation="vertical">
+ <TextView
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:text="This key is expired!"
+ android:id="@+id/view_key_expired"
+ android:textColor="@color/alert"
+ android:textAppearance="?android:attr/textAppearanceSmall"
+ android:gravity="center_vertical|center_horizontal"
+ android:layout_marginTop="8dp"
+ android:layout_marginBottom="8dp"
+ android:visibility="gone" />
+
+ <TextView
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:text="This key has been revoked!"
+ android:id="@+id/view_key_revoked"
+ android:textColor="@color/alert"
+ android:textAppearance="?android:attr/textAppearanceSmall"
+ android:gravity="center_vertical|center_horizontal"
+ android:visibility="gone"
+ android:layout_marginTop="8dp"
+ android:layout_marginBottom="8dp" />
+
+ <View
+ android:layout_width="match_parent"
+ android:layout_height="1dip"
+ android:background="?android:attr/listDivider"
+ android:visibility="gone"
+ android:id="@+id/status_divider" />
+
<org.sufficientlysecure.keychain.util.SlidingTabLayout
android:id="@+id/view_key_sliding_tab_layout"
android:layout_width="match_parent"
diff --git a/OpenKeychain/src/main/res/layout/view_key_main_fragment.xml b/OpenKeychain/src/main/res/layout/view_key_main_fragment.xml
index 7d0f714a0..1cd0f0214 100644
--- a/OpenKeychain/src/main/res/layout/view_key_main_fragment.xml
+++ b/OpenKeychain/src/main/res/layout/view_key_main_fragment.xml
@@ -17,28 +17,6 @@
android:visibility="visible">
<TextView
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:text="This key is expired!"
- android:id="@+id/view_key_expired"
- android:minHeight="?android:attr/listPreferredItemHeight"
- android:textColor="@color/alert"
- android:textAppearance="?android:attr/textAppearanceMedium"
- android:gravity="center_vertical|center_horizontal"
- android:visibility="gone" />
-
- <TextView
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:text="This key has been revoked!"
- android:id="@+id/view_key_revoked"
- android:minHeight="?android:attr/listPreferredItemHeight"
- android:textColor="@color/alert"
- android:textAppearance="?android:attr/textAppearanceMedium"
- android:gravity="center_vertical|center_horizontal"
- android:visibility="gone" />
-
- <TextView
style="@style/SectionHeader"
android:layout_width="wrap_content"
android:layout_height="0dp"
diff --git a/OpenKeychain/src/main/res/layout/view_key_userids_item.xml b/OpenKeychain/src/main/res/layout/view_key_userids_item.xml
index a6d147cc1..2f4041f8c 100644
--- a/OpenKeychain/src/main/res/layout/view_key_userids_item.xml
+++ b/OpenKeychain/src/main/res/layout/view_key_userids_item.xml
@@ -15,7 +15,7 @@
android:focusable="false" />
<LinearLayout
- android:layout_width="wrap_content"
+ android:layout_width="22dp"
android:layout_height="wrap_content"
android:layout_marginLeft="8dp"
android:layout_gravity="center_vertical"
@@ -25,7 +25,8 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/certified"
- android:src="@drawable/key_certify_ok_self" />
+ android:src="@drawable/key_certify_ok_self"
+ android:layout_gravity="center_horizontal" />
</LinearLayout>
diff --git a/OpenKeychain/src/main/res/res/values-v11/styles_keychaintheme.xml b/OpenKeychain/src/main/res/res/values-v11/styles_keychaintheme.xml
deleted file mode 100644
index 91599cbfe..000000000
--- a/OpenKeychain/src/main/res/res/values-v11/styles_keychaintheme.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<!-- Generated with http://android-holo-colors.com -->
-<resources xmlns:android="http://schemas.android.com/apk/res/android">
-
- <style name="ButtonKeychainTheme" parent="android:Widget.Holo.Light.Button">
- <item name="android:background">@drawable/keychaintheme_btn_default_holo_light</item>
- </style>
-
- <style name="ImageButtonKeychainTheme" parent="android:Widget.Holo.Light.ImageButton">
- <item name="android:background">@drawable/keychaintheme_btn_default_holo_light</item>
- </style>
-
- <style name="SpinnerKeychainTheme" parent="android:Widget.Holo.Light.Spinner">
- <item name="android:background">@drawable/keychaintheme_spinner_background_holo_light</item>
- <item name="android:dropDownSelector">@drawable/keychaintheme_list_selector_holo_light</item>
- </style>
-
- <style name="ProgressBarKeychainTheme" parent="android:Widget.Holo.Light.ProgressBar.Horizontal">
- <item name="android:progressDrawable">@drawable/keychaintheme_progress_horizontal_holo_light</item>
- <item name="android:indeterminateDrawable">@drawable/keychaintheme_progress_indeterminate_horizontal_holo_light</item>
- </style>
-
-</resources> \ No newline at end of file
diff --git a/OpenKeychain/src/main/res/res/values-v11/themes_keychaintheme.xml b/OpenKeychain/src/main/res/res/values-v11/themes_keychaintheme.xml
deleted file mode 100644
index ab2d99bde..000000000
--- a/OpenKeychain/src/main/res/res/values-v11/themes_keychaintheme.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<!-- Generated with http://android-holo-colors.com -->
-<resources xmlns:android="http://schemas.android.com/apk/res/android">
-
- <style name="KeychainTheme" parent="@style/_KeychainTheme"/>
-
- <style name="_KeychainTheme" parent="Theme.AppCompat.Light">
-
- <item name="android:editTextBackground">@drawable/keychaintheme_edit_text_holo_light</item>
-
- <item name="android:listChoiceIndicatorMultiple">@drawable/keychaintheme_btn_check_holo_light</item>
-
- <item name="android:buttonStyle">@style/ButtonKeychainTheme</item>
-
- <item name="android:imageButtonStyle">@style/ImageButtonKeychainTheme</item>
-
- <item name="android:dropDownSpinnerStyle">@style/SpinnerKeychainTheme</item>
-
- <item name="android:progressBarStyleHorizontal">@style/ProgressBarKeychainTheme</item>
-
- <item name="android:listChoiceBackgroundIndicator">@drawable/keychaintheme_list_selector_holo_light</item>
-
- <item name="android:activatedBackgroundIndicator">@drawable/keychaintheme_activated_background_holo_light</item>
-
- </style>
-
-</resources> \ No newline at end of file
diff --git a/OpenKeychain/src/main/res/res/values/colors_keychaintheme.xml b/OpenKeychain/src/main/res/res/values/colors_keychaintheme.xml
deleted file mode 100644
index fdb9f3283..000000000
--- a/OpenKeychain/src/main/res/res/values/colors_keychaintheme.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
- <color name="keychaintheme_color">#aa66cc</color>
-</resources>
diff --git a/OpenKeychain/src/main/res/res/values/styles_keychaintheme.xml b/OpenKeychain/src/main/res/res/values/styles_keychaintheme.xml
deleted file mode 100644
index 0496967cc..000000000
--- a/OpenKeychain/src/main/res/res/values/styles_keychaintheme.xml
+++ /dev/null
@@ -1,53 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<!-- Generated with http://android-holo-colors.com -->
-<resources xmlns:android="http://schemas.android.com/apk/res/android">
-
- <style name="EditTextKeychainTheme" parent="android:Widget.EditText">
- <item name="android:background">@drawable/keychaintheme_edit_text_holo_light</item>
- <item name="android:textColor">#000000</item>
- </style>
-
- <style name="CheckBoxKeychainTheme" parent="android:Widget.CompoundButton.CheckBox">
- <item name="android:button">@drawable/keychaintheme_btn_check_holo_light</item>
- </style>
-
- <style name="ButtonKeychainTheme" parent="android:Widget.Button">
- <item name="android:background">@drawable/keychaintheme_btn_default_holo_light</item>
- <item name="android:minHeight">48dip</item>
- <item name="android:minWidth">64dip</item>
- <item name="android:textColor">#000000</item>
- </style>
-
- <style name="ImageButtonKeychainTheme" parent="android:Widget.ImageButton">
- <item name="android:background">@drawable/keychaintheme_btn_default_holo_light</item>
- </style>
-
- <style name="SpinnerKeychainTheme" parent="android:Widget.Spinner">
- <item name="android:background">@drawable/keychaintheme_spinner_background_holo_light</item>
- <item name="android:dropDownSelector">@drawable/keychaintheme_list_selector_holo_light</item>
- </style>
-
- <style name="SpinnerDropDownItemKeychainTheme" parent="android:Widget.DropDownItem.Spinner">
- <item name="android:checkMark">@drawable/keychaintheme_btn_radio_holo_light</item>
- </style>
- <style name="ProgressBarKeychainTheme" parent="android:Widget.ProgressBar.Horizontal">
- <item name="android:progressDrawable">@drawable/keychaintheme_progress_horizontal_holo_light</item>
- <item name="android:indeterminateDrawable">@drawable/keychaintheme_progress_indeterminate_horizontal_holo_light</item>
- <item name="android:minHeight">16dip</item>
- <item name="android:maxHeight">16dip</item>
- </style>
-
- <style name="ListViewKeychainTheme" parent="android:Widget.ListView">
- <item name="android:listSelector">@drawable/keychaintheme_list_selector_holo_light</item>
- </style>
-
- <style name="ListViewKeychainTheme.White" parent="android:Widget.ListView.White">
- <item name="android:listSelector">@drawable/keychaintheme_list_selector_holo_light</item>
- </style>
-
- <style name="SpinnerItemKeychainTheme" parent="android:TextAppearance.Widget.TextView.SpinnerItem">
- <item name="android:textColor">#000000</item>
- </style>
-
-</resources> \ No newline at end of file
diff --git a/OpenKeychain/src/main/res/res/values/themes_keychaintheme.xml b/OpenKeychain/src/main/res/res/values/themes_keychaintheme.xml
deleted file mode 100644
index 5b240ddc7..000000000
--- a/OpenKeychain/src/main/res/res/values/themes_keychaintheme.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<!-- Generated with http://android-holo-colors.com -->
-<resources xmlns:android="http://schemas.android.com/apk/res/android">
-
- <style name="KeychainTheme" parent="@style/_KeychainTheme"/>
-
- <style name="_KeychainTheme" parent="Theme.AppCompat.Light">
-
- <item name="android:editTextStyle">@style/EditTextKeychainTheme</item>
-
- <item name="android:checkboxStyle">@style/CheckBoxKeychainTheme</item>
-
- <item name="android:buttonStyle">@style/ButtonKeychainTheme</item>
-
- <item name="android:imageButtonStyle">@style/ImageButtonKeychainTheme</item>
-
- <item name="android:spinnerStyle">@style/SpinnerKeychainTheme</item>
-
- <item name="android:spinnerDropDownItemStyle">@style/SpinnerDropDownItemKeychainTheme</item>
-
- <item name="android:progressBarStyleHorizontal">@style/ProgressBarKeychainTheme</item>
-
- <item name="android:listViewStyle">@style/ListViewKeychainTheme</item>
-
- <item name="android:listViewWhiteStyle">@style/ListViewKeychainTheme.White</item>
-
- <item name="android:spinnerItemStyle">@style/SpinnerItemKeychainTheme</item>
-
- </style>
-
-</resources> \ No newline at end of file
diff --git a/OpenKeychain/src/main/res/values-v11/themes_keychaintheme.xml b/OpenKeychain/src/main/res/values-v11/themes_keychaintheme.xml
index ab2d99bde..4f13f81c6 100644
--- a/OpenKeychain/src/main/res/values-v11/themes_keychaintheme.xml
+++ b/OpenKeychain/src/main/res/values-v11/themes_keychaintheme.xml
@@ -23,6 +23,10 @@
<item name="android:activatedBackgroundIndicator">@drawable/keychaintheme_activated_background_holo_light</item>
+ <item name="android:fastScrollThumbDrawable">@drawable/apptheme_fastscroll_thumb_holo</item>
+
+ <item name="android:selectableItemBackground">@drawable/keychaintheme_list_selector_holo_light</item>
+
</style>
-</resources> \ No newline at end of file
+</resources>
diff --git a/OpenKeychain/src/main/res/values/strings.xml b/OpenKeychain/src/main/res/values/strings.xml
index c59f4a05b..6ed9008e4 100644
--- a/OpenKeychain/src/main/res/values/strings.xml
+++ b/OpenKeychain/src/main/res/values/strings.xml
@@ -513,5 +513,6 @@
<string name="title_view_cert">View Certificate Details</string>
<string name="unknown_algorithm">unknown</string>
<string name="can_sign_not">cannot sign</string>
+ <string name="error_no_encrypt_subkey">No encryption subkey available!</string>
</resources>