mirror of
https://github.com/moparisthebest/open-keychain
synced 2024-11-06 17:25:05 -05:00
add "show unknown signatures" button
This commit is contained in:
parent
8b4a63d5c4
commit
3ed93b7671
@ -88,7 +88,8 @@ public class KeychainProvider extends ContentProvider {
|
|||||||
private static final int CERTS_BY_KEY_ID = 402;
|
private static final int CERTS_BY_KEY_ID = 402;
|
||||||
private static final int CERTS_BY_ROW_ID = 403;
|
private static final int CERTS_BY_ROW_ID = 403;
|
||||||
private static final int CERTS_BY_KEY_ROW_ID = 404;
|
private static final int CERTS_BY_KEY_ROW_ID = 404;
|
||||||
private static final int CERTS_BY_CERTIFIER_ID = 405;
|
private static final int CERTS_BY_KEY_ROW_ID_ALL = 405;
|
||||||
|
private static final int CERTS_BY_CERTIFIER_ID = 406;
|
||||||
|
|
||||||
// private static final int DATA_STREAM = 401;
|
// private static final int DATA_STREAM = 401;
|
||||||
|
|
||||||
@ -256,6 +257,8 @@ public class KeychainProvider extends ContentProvider {
|
|||||||
matcher.addURI(authority, KeychainContract.BASE_CERTS + "/#", CERTS_BY_ROW_ID);
|
matcher.addURI(authority, KeychainContract.BASE_CERTS + "/#", CERTS_BY_ROW_ID);
|
||||||
matcher.addURI(authority, KeychainContract.BASE_CERTS + "/"
|
matcher.addURI(authority, KeychainContract.BASE_CERTS + "/"
|
||||||
+ KeychainContract.PATH_BY_KEY_ROW_ID + "/#", CERTS_BY_KEY_ROW_ID);
|
+ KeychainContract.PATH_BY_KEY_ROW_ID + "/#", CERTS_BY_KEY_ROW_ID);
|
||||||
|
matcher.addURI(authority, KeychainContract.BASE_CERTS + "/"
|
||||||
|
+ KeychainContract.PATH_BY_KEY_ROW_ID + "/#/all", CERTS_BY_KEY_ROW_ID_ALL);
|
||||||
matcher.addURI(authority, KeychainContract.BASE_CERTS + "/"
|
matcher.addURI(authority, KeychainContract.BASE_CERTS + "/"
|
||||||
+ KeychainContract.PATH_BY_KEY_ID + "/#", CERTS_BY_KEY_ID);
|
+ KeychainContract.PATH_BY_KEY_ID + "/#", CERTS_BY_KEY_ID);
|
||||||
matcher.addURI(authority, KeychainContract.BASE_CERTS + "/"
|
matcher.addURI(authority, KeychainContract.BASE_CERTS + "/"
|
||||||
@ -717,6 +720,7 @@ public class KeychainProvider extends ContentProvider {
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case CERTS_BY_KEY_ROW_ID:
|
case CERTS_BY_KEY_ROW_ID:
|
||||||
|
case CERTS_BY_KEY_ROW_ID_ALL:
|
||||||
qb.setTables(Tables.CERTS
|
qb.setTables(Tables.CERTS
|
||||||
+ " JOIN " + Tables.USER_IDS + " ON ("
|
+ " JOIN " + Tables.USER_IDS + " ON ("
|
||||||
+ Tables.CERTS + "." + Certs.KEY_RING_ROW_ID + " = "
|
+ Tables.CERTS + "." + Certs.KEY_RING_ROW_ID + " = "
|
||||||
@ -725,9 +729,10 @@ public class KeychainProvider extends ContentProvider {
|
|||||||
+ Tables.CERTS + "." + Certs.RANK + " = "
|
+ Tables.CERTS + "." + Certs.RANK + " = "
|
||||||
+ Tables.USER_IDS + "." + UserIds.RANK
|
+ Tables.USER_IDS + "." + UserIds.RANK
|
||||||
// noooooooot sure about this~ database design
|
// noooooooot sure about this~ database design
|
||||||
+ ") LEFT JOIN " + Tables.KEYS + " ON ("
|
+ ")" + (match == CERTS_BY_KEY_ROW_ID_ALL ? " LEFT" : "")
|
||||||
+ Tables.CERTS + "." + Certs.KEY_ID_CERTIFIER + " = "
|
+ " JOIN " + Tables.KEYS + " ON ("
|
||||||
+ Tables.KEYS + "." + Keys.KEY_ID
|
+ Tables.CERTS + "." + Certs.KEY_ID_CERTIFIER + " = "
|
||||||
|
+ Tables.KEYS + "." + Keys.KEY_ID
|
||||||
+ ") LEFT JOIN " + Tables.USER_IDS + " AS signer ON ("
|
+ ") LEFT JOIN " + Tables.USER_IDS + " AS signer ON ("
|
||||||
+ Tables.KEYS + "." + Keys.KEY_RING_ROW_ID + " = "
|
+ Tables.KEYS + "." + Keys.KEY_RING_ROW_ID + " = "
|
||||||
+ "signer." + UserIds.KEY_RING_ROW_ID
|
+ "signer." + UserIds.KEY_RING_ROW_ID
|
||||||
|
@ -19,9 +19,7 @@ package org.sufficientlysecure.keychain.ui;
|
|||||||
|
|
||||||
import android.annotation.SuppressLint;
|
import android.annotation.SuppressLint;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
|
||||||
import android.database.Cursor;
|
import android.database.Cursor;
|
||||||
import android.graphics.Color;
|
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.support.v4.app.Fragment;
|
import android.support.v4.app.Fragment;
|
||||||
@ -32,22 +30,17 @@ import android.support.v4.widget.CursorAdapter;
|
|||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
import android.widget.Button;
|
import android.widget.CheckBox;
|
||||||
|
import android.widget.CompoundButton;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
import com.beardedhen.androidbootstrap.BootstrapButton;
|
|
||||||
|
|
||||||
import org.sufficientlysecure.keychain.Constants;
|
import org.sufficientlysecure.keychain.Constants;
|
||||||
import org.sufficientlysecure.keychain.Id;
|
|
||||||
import org.sufficientlysecure.keychain.R;
|
import org.sufficientlysecure.keychain.R;
|
||||||
import org.sufficientlysecure.keychain.pgp.PgpKeyHelper;
|
import org.sufficientlysecure.keychain.pgp.PgpKeyHelper;
|
||||||
import org.sufficientlysecure.keychain.provider.KeychainContract;
|
import org.sufficientlysecure.keychain.provider.KeychainContract;
|
||||||
import org.sufficientlysecure.keychain.provider.KeychainDatabase;
|
import org.sufficientlysecure.keychain.provider.KeychainDatabase;
|
||||||
import org.sufficientlysecure.keychain.util.Log;
|
import org.sufficientlysecure.keychain.util.Log;
|
||||||
|
|
||||||
import java.nio.ByteBuffer;
|
|
||||||
import java.util.HashMap;
|
|
||||||
|
|
||||||
import se.emilsjolander.stickylistheaders.ApiLevelTooLowException;
|
import se.emilsjolander.stickylistheaders.ApiLevelTooLowException;
|
||||||
import se.emilsjolander.stickylistheaders.StickyListHeadersAdapter;
|
import se.emilsjolander.stickylistheaders.StickyListHeadersAdapter;
|
||||||
import se.emilsjolander.stickylistheaders.StickyListHeadersListView;
|
import se.emilsjolander.stickylistheaders.StickyListHeadersListView;
|
||||||
@ -75,10 +68,12 @@ public class ViewKeyCertsFragment extends Fragment
|
|||||||
public static final String ARG_KEYRING_ROW_ID = "row_id";
|
public static final String ARG_KEYRING_ROW_ID = "row_id";
|
||||||
|
|
||||||
private StickyListHeadersListView mStickyList;
|
private StickyListHeadersListView mStickyList;
|
||||||
|
private CheckBox mShowUnknown;
|
||||||
|
|
||||||
private CertListAdapter mAdapter;
|
private CertListAdapter mAdapter;
|
||||||
|
private boolean mUnknownShown = false;
|
||||||
|
|
||||||
private Uri mDataUri;
|
private Uri mBaseUri, mDataUri;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
||||||
@ -87,10 +82,26 @@ public class ViewKeyCertsFragment extends Fragment
|
|||||||
return view;
|
return view;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void toggleShowUnknown(boolean shown) {
|
||||||
|
if(shown)
|
||||||
|
mDataUri = mBaseUri.buildUpon().appendPath("all").build();
|
||||||
|
else
|
||||||
|
mDataUri = mBaseUri;
|
||||||
|
getLoaderManager().restartLoader(0, null, this);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onActivityCreated(Bundle savedInstanceState) {
|
public void onActivityCreated(Bundle savedInstanceState) {
|
||||||
super.onActivityCreated(savedInstanceState);
|
super.onActivityCreated(savedInstanceState);
|
||||||
|
|
||||||
|
mShowUnknown = (CheckBox) getActivity().findViewById(R.id.showUnknown);
|
||||||
|
mShowUnknown.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
|
||||||
|
@Override
|
||||||
|
public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
|
||||||
|
toggleShowUnknown(b);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
mStickyList = (StickyListHeadersListView) getActivity().findViewById(R.id.list);
|
mStickyList = (StickyListHeadersListView) getActivity().findViewById(R.id.list);
|
||||||
|
|
||||||
if (!getArguments().containsKey(ARG_KEYRING_ROW_ID)) {
|
if (!getArguments().containsKey(ARG_KEYRING_ROW_ID)) {
|
||||||
@ -100,7 +111,7 @@ public class ViewKeyCertsFragment extends Fragment
|
|||||||
}
|
}
|
||||||
|
|
||||||
long rowId = getArguments().getLong(ARG_KEYRING_ROW_ID);
|
long rowId = getArguments().getLong(ARG_KEYRING_ROW_ID);
|
||||||
mDataUri = KeychainContract.Certs.buildCertsByKeyRowIdUri(Long.toString(rowId));
|
mBaseUri = KeychainContract.Certs.buildCertsByKeyRowIdUri(Long.toString(rowId));
|
||||||
|
|
||||||
mStickyList.setAreHeadersSticky(true);
|
mStickyList.setAreHeadersSticky(true);
|
||||||
mStickyList.setDrawingListUnderStickyHeader(false);
|
mStickyList.setDrawingListUnderStickyHeader(false);
|
||||||
@ -121,6 +132,7 @@ public class ViewKeyCertsFragment extends Fragment
|
|||||||
|
|
||||||
// Prepare the loader. Either re-connect with an existing one,
|
// Prepare the loader. Either re-connect with an existing one,
|
||||||
// or start a new one.
|
// or start a new one.
|
||||||
|
mDataUri = mBaseUri;
|
||||||
getLoaderManager().initLoader(0, null, this);
|
getLoaderManager().initLoader(0, null, this);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -4,18 +4,35 @@
|
|||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:fillViewport="true">
|
android:fillViewport="true">
|
||||||
|
|
||||||
<LinearLayout
|
<RelativeLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:orientation="vertical"
|
android:orientation="vertical">
|
||||||
android:paddingLeft="16dp"
|
|
||||||
android:paddingRight="16dp">
|
|
||||||
|
|
||||||
<view
|
<view
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
class="se.emilsjolander.stickylistheaders.StickyListHeadersListView"
|
class="se.emilsjolander.stickylistheaders.StickyListHeadersListView"
|
||||||
android:id="@+id/list" />
|
android:id="@+id/list"
|
||||||
</LinearLayout>
|
android:layout_alignParentTop="true"
|
||||||
|
android:layout_above="@+id/showUnknown"
|
||||||
|
android:paddingRight="32dp"
|
||||||
|
android:layout_alignParentLeft="true"
|
||||||
|
android:layout_alignParentStart="true"
|
||||||
|
android:paddingLeft="16dp" />
|
||||||
|
|
||||||
|
<CheckBox
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="@string/show_unknown_signatures"
|
||||||
|
android:id="@+id/showUnknown"
|
||||||
|
android:enabled="true"
|
||||||
|
android:layout_alignParentBottom="true"
|
||||||
|
android:layout_alignEnd="@+id/list"
|
||||||
|
android:singleLine="false"
|
||||||
|
android:layout_alignParentRight="true"
|
||||||
|
android:layout_marginRight="16dp" />
|
||||||
|
|
||||||
|
</RelativeLayout>
|
||||||
|
|
||||||
</ScrollView>
|
</ScrollView>
|
@ -442,5 +442,6 @@
|
|||||||
<string name="label_secret_key">Secret Key</string>
|
<string name="label_secret_key">Secret Key</string>
|
||||||
<string name="secret_key_yes">available</string>
|
<string name="secret_key_yes">available</string>
|
||||||
<string name="secret_key_no">unavailable</string>
|
<string name="secret_key_no">unavailable</string>
|
||||||
|
<string name="show_unknown_signatures">Show unknown signatures</string>
|
||||||
|
|
||||||
</resources>
|
</resources>
|
||||||
|
Loading…
Reference in New Issue
Block a user