aboutsummaryrefslogtreecommitdiffstats
path: root/OpenKeychain
diff options
context:
space:
mode:
Diffstat (limited to 'OpenKeychain')
-rw-r--r--OpenKeychain/src/main/java/android/support/v4/widget/FixedDrawerLayout.java33
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/KeychainProvider.java2
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DrawerActivity.java5
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptAsymmetricFragment.java1
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SelectSecretKeyActivity.java7
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SelectSecretKeyFragment.java28
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SelectSecretKeyLayoutFragment.java10
-rw-r--r--OpenKeychain/src/main/res/layout-large/api_apps_list_activity.xml4
-rw-r--r--OpenKeychain/src/main/res/layout-large/decrypt_activity.xml4
-rw-r--r--OpenKeychain/src/main/res/layout-large/encrypt_activity.xml4
-rw-r--r--OpenKeychain/src/main/res/layout-large/key_list_activity.xml4
-rw-r--r--OpenKeychain/src/main/res/layout/api_apps_list_activity.xml4
-rw-r--r--OpenKeychain/src/main/res/layout/decrypt_activity.xml4
-rw-r--r--OpenKeychain/src/main/res/layout/encrypt_activity.xml4
-rw-r--r--OpenKeychain/src/main/res/layout/key_list_activity.xml4
-rw-r--r--OpenKeychain/src/main/res/values/strings.xml1
16 files changed, 85 insertions, 34 deletions
diff --git a/OpenKeychain/src/main/java/android/support/v4/widget/FixedDrawerLayout.java b/OpenKeychain/src/main/java/android/support/v4/widget/FixedDrawerLayout.java
new file mode 100644
index 000000000..1151818b6
--- /dev/null
+++ b/OpenKeychain/src/main/java/android/support/v4/widget/FixedDrawerLayout.java
@@ -0,0 +1,33 @@
+package android.support.v4.widget;
+
+import android.content.Context;
+import android.util.AttributeSet;
+import android.view.Gravity;
+import android.view.View;
+
+/**
+ * Fix for NullPointerException at android.support.v4.widget.DrawerLayout.isContentView(DrawerLayout.java:840)
+ * <p/>
+ * http://stackoverflow.com/a/18107942
+ */
+public class FixedDrawerLayout extends DrawerLayout {
+ public FixedDrawerLayout(Context context) {
+ super(context);
+ }
+
+ public FixedDrawerLayout(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ }
+
+ public FixedDrawerLayout(Context context, AttributeSet attrs, int defStyle) {
+ super(context, attrs, defStyle);
+ }
+
+ @Override
+ boolean isContentView(View child) {
+ if (child == null) {
+ return false;
+ }
+ return ((LayoutParams) child.getLayoutParams()).gravity == Gravity.NO_GRAVITY;
+ }
+}
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/KeychainProvider.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/KeychainProvider.java
index 3d3e48c30..1dc822ac2 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/KeychainProvider.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/KeychainProvider.java
@@ -691,7 +691,7 @@ public class KeychainProvider extends ContentProvider {
public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) {
Log.v(Constants.TAG, "update(uri=" + uri + ", values=" + values.toString() + ")");
- final SQLiteDatabase db = mKeychainDatabase.getWritableDatabase();
+ final SQLiteDatabase db = getDb().getWritableDatabase();
int count = 0;
try {
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DrawerActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DrawerActivity.java
index 088f593d4..9a5050eba 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DrawerActivity.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DrawerActivity.java
@@ -26,6 +26,7 @@ import android.os.Bundle;
import android.support.v4.app.ActionBarDrawerToggle;
import android.support.v4.view.GravityCompat;
import android.support.v4.widget.DrawerLayout;
+import android.support.v4.widget.FixedDrawerLayout;
import android.support.v7.app.ActionBarActivity;
import android.view.LayoutInflater;
import android.view.Menu;
@@ -43,7 +44,7 @@ import org.sufficientlysecure.keychain.Constants;
import org.sufficientlysecure.keychain.R;
public class DrawerActivity extends ActionBarActivity {
- private DrawerLayout mDrawerLayout;
+ private FixedDrawerLayout mDrawerLayout;
private ListView mDrawerList;
private ActionBarDrawerToggle mDrawerToggle;
@@ -58,7 +59,7 @@ public class DrawerActivity extends ActionBarActivity {
protected void setupDrawerNavigation(Bundle savedInstanceState) {
mDrawerTitle = getString(R.string.app_name);
- mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
+ mDrawerLayout = (FixedDrawerLayout) findViewById(R.id.drawer_layout);
mDrawerList = (ListView) findViewById(R.id.left_drawer);
ViewGroup viewGroup = (ViewGroup) findViewById(R.id.content_frame);
int leftMarginLoaded = ((ViewGroup.MarginLayoutParams) viewGroup.getLayoutParams()).leftMargin;
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptAsymmetricFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptAsymmetricFragment.java
index 36483ebc9..d1a5dca07 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptAsymmetricFragment.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptAsymmetricFragment.java
@@ -247,6 +247,7 @@ public class EncryptAsymmetricFragment extends Fragment {
private void selectSecretKey() {
Intent intent = new Intent(getActivity(), SelectSecretKeyActivity.class);
+ intent.putExtra(SelectSecretKeyActivity.EXTRA_FILTER_SIGN, true);
startActivityForResult(intent, REQUEST_CODE_SECRET_KEYS);
}
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SelectSecretKeyActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SelectSecretKeyActivity.java
index 0ff88d97c..9160d57de 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SelectSecretKeyActivity.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SelectSecretKeyActivity.java
@@ -28,10 +28,10 @@ import org.sufficientlysecure.keychain.R;
public class SelectSecretKeyActivity extends ActionBarActivity {
public static final String EXTRA_FILTER_CERTIFY = "filter_certify";
+ public static final String EXTRA_FILTER_SIGN = "filter_sign";
public static final String RESULT_EXTRA_MASTER_KEY_ID = "master_key_id";
- private boolean mFilterCertify;
private SelectSecretKeyFragment mSelectFragment;
@Override
@@ -45,7 +45,8 @@ public class SelectSecretKeyActivity extends ActionBarActivity {
actionBar.setDisplayHomeAsUpEnabled(false);
actionBar.setHomeButtonEnabled(false);
- mFilterCertify = getIntent().getBooleanExtra(EXTRA_FILTER_CERTIFY, false);
+ boolean filterCertify = getIntent().getBooleanExtra(EXTRA_FILTER_CERTIFY, false);
+ boolean filterSign = getIntent().getBooleanExtra(EXTRA_FILTER_SIGN, false);
// Check that the activity is using the layout version with
// the fragment_container FrameLayout
@@ -59,7 +60,7 @@ public class SelectSecretKeyActivity extends ActionBarActivity {
}
// Create an instance of the fragment
- mSelectFragment = SelectSecretKeyFragment.newInstance(mFilterCertify);
+ mSelectFragment = SelectSecretKeyFragment.newInstance(filterCertify, filterSign);
// Add the fragment to the 'fragment_container' FrameLayout
getSupportFragmentManager().beginTransaction()
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SelectSecretKeyFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SelectSecretKeyFragment.java
index 118449b9b..6de03198e 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SelectSecretKeyFragment.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SelectSecretKeyFragment.java
@@ -41,18 +41,22 @@ public class SelectSecretKeyFragment extends ListFragment implements
private SelectSecretKeyActivity mActivity;
private SelectKeyCursorAdapter mAdapter;
- private boolean mFilterCertify;
+ private boolean mFilterCertify, mFilterSign;
private static final String ARG_FILTER_CERTIFY = "filter_certify";
+ private static final String ARG_FILTER_SIGN = "filter_sign";
/**
* Creates new instance of this fragment
+ *
+ * filterCertify and filterSign must not both be set!
*/
- public static SelectSecretKeyFragment newInstance(boolean filterCertify) {
+ public static SelectSecretKeyFragment newInstance(boolean filterCertify, boolean filterSign) {
SelectSecretKeyFragment frag = new SelectSecretKeyFragment();
Bundle args = new Bundle();
args.putBoolean(ARG_FILTER_CERTIFY, filterCertify);
+ args.putBoolean(ARG_FILTER_CERTIFY, filterSign);
frag.setArguments(args);
return frag;
@@ -63,6 +67,7 @@ public class SelectSecretKeyFragment extends ListFragment implements
super.onCreate(savedInstanceState);
mFilterCertify = getArguments().getBoolean(ARG_FILTER_CERTIFY);
+ mFilterSign = getArguments().getBoolean(ARG_FILTER_SIGN);
}
/**
@@ -115,9 +120,10 @@ public class SelectSecretKeyFragment extends ListFragment implements
KeyRings.USER_ID,
KeyRings.EXPIRY,
KeyRings.IS_REVOKED,
+ // can certify info only related to master key
KeyRings.CAN_CERTIFY,
+ // has sign may be any subkey
KeyRings.HAS_SIGN,
- KeyRings.HAS_SECRET,
KeyRings.HAS_ANY_SECRET
};
@@ -152,7 +158,7 @@ public class SelectSecretKeyFragment extends ListFragment implements
private class SelectSecretKeyCursorAdapter extends SelectKeyCursorAdapter {
- private int mIndexHasSecret, mIndexHasSign, mIndexCanCertify;
+ private int mIndexHasSign, mIndexCanCertify;
public SelectSecretKeyCursorAdapter(Context context, Cursor c, int flags, ListView listView) {
super(context, c, flags, listView);
@@ -162,7 +168,6 @@ public class SelectSecretKeyFragment extends ListFragment implements
protected void initIndex(Cursor cursor) {
super.initIndex(cursor);
if (cursor != null) {
- mIndexHasSecret = cursor.getColumnIndexOrThrow(KeyRings.HAS_SECRET);
mIndexCanCertify = cursor.getColumnIndexOrThrow(KeyRings.CAN_CERTIFY);
mIndexHasSign = cursor.getColumnIndexOrThrow(KeyRings.HAS_SIGN);
}
@@ -179,23 +184,26 @@ public class SelectSecretKeyFragment extends ListFragment implements
// Special from superclass: Te
boolean enabled = false;
if((Boolean) h.status.getTag()) {
- if (cursor.getInt(mIndexHasSecret) == 0) {
- h.status.setText(R.string.no_subkey);
// Check if key is viable for our purposes (certify or sign)
- } else if(mFilterCertify) {
+ if(mFilterCertify) {
+ // Only enable if can certify
if (cursor.getInt(mIndexCanCertify) == 0) {
h.status.setText(R.string.can_certify_not);
} else {
h.status.setText(R.string.can_certify);
enabled = true;
}
- } else {
+ } else if(mFilterSign) {
+ // Only enable if can sign
if (cursor.getInt(mIndexHasSign) == 0) {
- h.status.setText(R.string.no_key);
+ h.status.setText(R.string.can_sign_not);
} else {
h.status.setText(R.string.can_sign);
enabled = true;
}
+ } else {
+ // No filters, just enable
+ enabled = true;
}
}
h.setEnabled(enabled);
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SelectSecretKeyLayoutFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SelectSecretKeyLayoutFragment.java
index a0aa97567..8db750917 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SelectSecretKeyLayoutFragment.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SelectSecretKeyLayoutFragment.java
@@ -45,7 +45,7 @@ public class SelectSecretKeyLayoutFragment extends Fragment implements LoaderMan
private TextView mKeyMasterKeyIdHex;
private TextView mNoKeySelected;
private BootstrapButton mSelectKeyButton;
- private Boolean mFilterCertify;
+ private Boolean mFilterCertify, mFilterSign;
private Uri mReceivedUri = null;
@@ -72,10 +72,14 @@ public class SelectSecretKeyLayoutFragment extends Fragment implements LoaderMan
mCallback = callback;
}
- public void setFilterCertify(Boolean filterCertify) {
+ public void setFilterCertify(boolean filterCertify) {
mFilterCertify = filterCertify;
}
+ public void setFilterSign(boolean filterSign) {
+ mFilterSign = filterSign;
+ }
+
public void setNoKeySelected() {
mNoKeySelected.setVisibility(View.VISIBLE);
mKeyUserId.setVisibility(View.GONE);
@@ -115,6 +119,7 @@ public class SelectSecretKeyLayoutFragment extends Fragment implements LoaderMan
mSelectKeyButton = (BootstrapButton) view
.findViewById(R.id.select_secret_key_select_key_button);
mFilterCertify = false;
+ mFilterSign = false;
mSelectKeyButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
@@ -135,6 +140,7 @@ public class SelectSecretKeyLayoutFragment extends Fragment implements LoaderMan
private void startSelectKeyActivity() {
Intent intent = new Intent(getActivity(), SelectSecretKeyActivity.class);
intent.putExtra(SelectSecretKeyActivity.EXTRA_FILTER_CERTIFY, mFilterCertify);
+ intent.putExtra(SelectSecretKeyActivity.EXTRA_FILTER_SIGN, mFilterSign);
startActivityForResult(intent, REQUEST_CODE_SELECT_KEY);
}
diff --git a/OpenKeychain/src/main/res/layout-large/api_apps_list_activity.xml b/OpenKeychain/src/main/res/layout-large/api_apps_list_activity.xml
index c0021261e..88686bbbc 100644
--- a/OpenKeychain/src/main/res/layout-large/api_apps_list_activity.xml
+++ b/OpenKeychain/src/main/res/layout-large/api_apps_list_activity.xml
@@ -4,7 +4,7 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
- <android.support.v4.widget.DrawerLayout
+ <android.support.v4.widget.FixedDrawerLayout
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
@@ -13,7 +13,7 @@
<include layout="@layout/drawer_list"/>
- </android.support.v4.widget.DrawerLayout>
+ </android.support.v4.widget.FixedDrawerLayout>
<include layout="@layout/api_apps_list_content"/>
diff --git a/OpenKeychain/src/main/res/layout-large/decrypt_activity.xml b/OpenKeychain/src/main/res/layout-large/decrypt_activity.xml
index 26aed0831..9e9f37391 100644
--- a/OpenKeychain/src/main/res/layout-large/decrypt_activity.xml
+++ b/OpenKeychain/src/main/res/layout-large/decrypt_activity.xml
@@ -4,7 +4,7 @@
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent">
- <android.support.v4.widget.DrawerLayout
+ <android.support.v4.widget.FixedDrawerLayout
xmlns:bootstrapbutton="http://schemas.android.com/apk/res-auto"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
@@ -12,7 +12,7 @@
<include layout="@layout/drawer_list"/>
- </android.support.v4.widget.DrawerLayout>
+ </android.support.v4.widget.FixedDrawerLayout>
<include layout="@layout/decrypt_content"/>
diff --git a/OpenKeychain/src/main/res/layout-large/encrypt_activity.xml b/OpenKeychain/src/main/res/layout-large/encrypt_activity.xml
index 7d0d44074..355580fad 100644
--- a/OpenKeychain/src/main/res/layout-large/encrypt_activity.xml
+++ b/OpenKeychain/src/main/res/layout-large/encrypt_activity.xml
@@ -4,7 +4,7 @@
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent">
- <android.support.v4.widget.DrawerLayout
+ <android.support.v4.widget.FixedDrawerLayout
xmlns:bootstrapbutton="http://schemas.android.com/apk/res-auto"
xmlns:fontawesometext="http://schemas.android.com/apk/res-auto"
android:id="@+id/drawer_layout"
@@ -13,7 +13,7 @@
<include layout="@layout/drawer_list"/>
- </android.support.v4.widget.DrawerLayout>
+ </android.support.v4.widget.FixedDrawerLayout>
<include layout="@layout/encrypt_content"/>
</FrameLayout> \ No newline at end of file
diff --git a/OpenKeychain/src/main/res/layout-large/key_list_activity.xml b/OpenKeychain/src/main/res/layout-large/key_list_activity.xml
index 6636f12ff..6abbea13f 100644
--- a/OpenKeychain/src/main/res/layout-large/key_list_activity.xml
+++ b/OpenKeychain/src/main/res/layout-large/key_list_activity.xml
@@ -4,14 +4,14 @@
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent">
- <android.support.v4.widget.DrawerLayout
+ <android.support.v4.widget.FixedDrawerLayout
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<include layout="@layout/drawer_list"/>
- </android.support.v4.widget.DrawerLayout>
+ </android.support.v4.widget.FixedDrawerLayout>
<include layout="@layout/key_list_content"/>
diff --git a/OpenKeychain/src/main/res/layout/api_apps_list_activity.xml b/OpenKeychain/src/main/res/layout/api_apps_list_activity.xml
index 9f95e9f3b..df187e0a5 100644
--- a/OpenKeychain/src/main/res/layout/api_apps_list_activity.xml
+++ b/OpenKeychain/src/main/res/layout/api_apps_list_activity.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<android.support.v4.widget.FixedDrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent" >
@@ -8,4 +8,4 @@
<include layout="@layout/drawer_list" />
-</android.support.v4.widget.DrawerLayout> \ No newline at end of file
+</android.support.v4.widget.FixedDrawerLayout> \ No newline at end of file
diff --git a/OpenKeychain/src/main/res/layout/decrypt_activity.xml b/OpenKeychain/src/main/res/layout/decrypt_activity.xml
index c4709a67e..94d82fe1d 100644
--- a/OpenKeychain/src/main/res/layout/decrypt_activity.xml
+++ b/OpenKeychain/src/main/res/layout/decrypt_activity.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<android.support.v4.widget.FixedDrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:bootstrapbutton="http://schemas.android.com/apk/res-auto"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
@@ -9,4 +9,4 @@
<include layout="@layout/drawer_list" />
-</android.support.v4.widget.DrawerLayout> \ No newline at end of file
+</android.support.v4.widget.FixedDrawerLayout> \ No newline at end of file
diff --git a/OpenKeychain/src/main/res/layout/encrypt_activity.xml b/OpenKeychain/src/main/res/layout/encrypt_activity.xml
index 6484c9b7b..65c2ee8fd 100644
--- a/OpenKeychain/src/main/res/layout/encrypt_activity.xml
+++ b/OpenKeychain/src/main/res/layout/encrypt_activity.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<android.support.v4.widget.FixedDrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:bootstrapbutton="http://schemas.android.com/apk/res-auto"
xmlns:fontawesometext="http://schemas.android.com/apk/res-auto"
android:id="@+id/drawer_layout"
@@ -10,4 +10,4 @@
<include layout="@layout/drawer_list" />
-</android.support.v4.widget.DrawerLayout> \ No newline at end of file
+</android.support.v4.widget.FixedDrawerLayout> \ No newline at end of file
diff --git a/OpenKeychain/src/main/res/layout/key_list_activity.xml b/OpenKeychain/src/main/res/layout/key_list_activity.xml
index fcb376fa8..c4c2c35cb 100644
--- a/OpenKeychain/src/main/res/layout/key_list_activity.xml
+++ b/OpenKeychain/src/main/res/layout/key_list_activity.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<android.support.v4.widget.FixedDrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent" >
@@ -8,4 +8,4 @@
<include layout="@layout/drawer_list" />
-</android.support.v4.widget.DrawerLayout> \ No newline at end of file
+</android.support.v4.widget.FixedDrawerLayout> \ 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 71342eaec..330bc349d 100644
--- a/OpenKeychain/src/main/res/values/strings.xml
+++ b/OpenKeychain/src/main/res/values/strings.xml
@@ -499,5 +499,6 @@
<string name="secret_cannot_multiple">Secret keys can only be deleted individually!</string>
<string name="title_view_cert">View Certificate Details</string>
<string name="unknown_algorithm">unknown</string>
+ <string name="can_sign_not">cannot sign</string>
</resources>