diff options
author | Vincent Breitmoser <valodim@mugenguild.com> | 2015-08-29 13:28:56 +0200 |
---|---|---|
committer | Vincent Breitmoser <valodim@mugenguild.com> | 2015-08-29 13:28:56 +0200 |
commit | a6e25e6448ab162b351288ee0c241512e05c3611 (patch) | |
tree | d7eec4fcd2d98bc9d00e880ab3c103c86a8edbe2 /OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util | |
parent | 765ec094c9415fcaddd65b7b743179b2ea7dc098 (diff) | |
parent | 5b75b542e8d2d467ce9e34bd9df2038d6c88885e (diff) | |
download | open-keychain-a6e25e6448ab162b351288ee0c241512e05c3611.tar.gz open-keychain-a6e25e6448ab162b351288ee0c241512e05c3611.tar.bz2 open-keychain-a6e25e6448ab162b351288ee0c241512e05c3611.zip |
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
Diffstat (limited to 'OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util')
-rw-r--r-- | OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/FilterCursorWrapper.java | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/FilterCursorWrapper.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/FilterCursorWrapper.java new file mode 100644 index 000000000..ab73f59b8 --- /dev/null +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/FilterCursorWrapper.java @@ -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; + } + +}
\ No newline at end of file |