Merge branch 'linked-identities' (and fix OperationHelper ids)

Merge Linked Identities.

Also includes an important fix for OperationHelper ids, which had an
error in the bit mask logic.

Conflicts:
	Graphics/update-drawables.sh
	OpenKeychain/build.gradle
	OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/results/OperationResult.java
	OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/KeychainProvider.java
	OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/ProviderHelper.java
	OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/CertifyActionsParcel.java
	OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/KeychainIntentService.java
	OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateYubiKeyImportFragment.java
	OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/KeyListFragment.java
	OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyActivity.java
	OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/KeyAdapter.java
	OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/CertifyKeySpinner.java
	OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/KeySpinner.java
	OpenKeychain/src/main/res/anim/fade_in.xml
	OpenKeychain/src/main/res/anim/fade_out.xml
	OpenKeychain/src/main/res/layout/decrypt_text_fragment.xml
	OpenKeychain/src/main/res/layout/encrypt_decrypt_overview_fragment.xml
	OpenKeychain/src/main/res/layout/view_key_fragment.xml
	OpenKeychain/src/main/res/menu/key_view.xml
	OpenKeychain/src/main/res/values/strings.xml
	OpenKeychain/src/test/java/org/sufficientlysecure/keychain/operations/CertifyOperationTest.java
	README.md
This commit is contained in:
Vincent Breitmoser
2015-08-29 13:28:56 +02:00
115 changed files with 6277 additions and 97 deletions

View File

@@ -0,0 +1,76 @@
package org.sufficientlysecure.keychain.util;
import android.database.Cursor;
import android.database.CursorWrapper;
public abstract class FilterCursorWrapper extends CursorWrapper {
private int[] mIndex;
private int mCount = 0;
private int mPos = 0;
public abstract boolean isVisible(Cursor cursor);
public FilterCursorWrapper(Cursor cursor) {
super(cursor);
mCount = super.getCount();
mIndex = new int[mCount];
for (int i = 0; i < mCount; i++) {
super.moveToPosition(i);
if (isVisible(cursor)) {
mIndex[mPos++] = i;
}
}
mCount = mPos;
mPos = 0;
super.moveToFirst();
}
@Override
public boolean move(int offset) {
return this.moveToPosition(mPos + offset);
}
@Override
public boolean moveToNext() {
return this.moveToPosition(mPos + 1);
}
@Override
public boolean moveToPrevious() {
return this.moveToPosition(mPos - 1);
}
@Override
public boolean moveToFirst() {
return this.moveToPosition(0);
}
@Override
public boolean moveToLast() {
return this.moveToPosition(mCount - 1);
}
@Override
public boolean moveToPosition(int position) {
if (position >= mCount || position < 0) {
return false;
}
return super.moveToPosition(mIndex[position]);
}
@Override
public int getCount() {
return mCount;
}
public int getHiddenCount() {
return super.getCount() - mCount;
}
@Override
public int getPosition() {
return mPos;
}
}