mirror of
https://github.com/moparisthebest/open-keychain
synced 2024-12-17 21:02:17 -05:00
Swipe-to-refresh fixes
This commit is contained in:
parent
91e97d03a1
commit
ac66f6cc10
@ -35,6 +35,7 @@ import android.support.v4.content.CursorLoader;
|
||||
import android.support.v4.content.Loader;
|
||||
import android.support.v4.view.MenuItemCompat;
|
||||
import android.support.v4.widget.CursorAdapter;
|
||||
import android.support.v4.widget.NoScrollableSwipeRefreshLayout;
|
||||
import android.support.v7.app.ActionBar;
|
||||
import android.support.v7.app.ActionBarActivity;
|
||||
import android.support.v7.widget.SearchView;
|
||||
@ -81,7 +82,7 @@ import se.emilsjolander.stickylistheaders.StickyListHeadersListView;
|
||||
*/
|
||||
public class KeyListFragment extends LoaderFragment
|
||||
implements SearchView.OnQueryTextListener, AdapterView.OnItemClickListener,
|
||||
LoaderManager.LoaderCallbacks<Cursor>, ListAwareSwipeRefreshLayout.OnRefreshListener {
|
||||
LoaderManager.LoaderCallbacks<Cursor> {
|
||||
|
||||
private KeyListAdapter mAdapter;
|
||||
private StickyListHeadersListView mStickyList;
|
||||
@ -131,7 +132,19 @@ public class KeyListFragment extends LoaderFragment
|
||||
});
|
||||
|
||||
mSwipeRefreshLayout = (ListAwareSwipeRefreshLayout) view.findViewById(R.id.key_list_swipe_container);
|
||||
mSwipeRefreshLayout.setOnRefreshListener(this);
|
||||
mSwipeRefreshLayout.setOnRefreshListener(new NoScrollableSwipeRefreshLayout.OnRefreshListener() {
|
||||
@Override
|
||||
public void onRefresh() {
|
||||
KeyUpdateHelper updateHelper = new KeyUpdateHelper();
|
||||
KeychainIntentServiceHandler finishedHandler = new KeychainIntentServiceHandler(getActivity()) {
|
||||
public void handleMessage(Message message) {
|
||||
mSwipeRefreshLayout.setRefreshing(false);
|
||||
}
|
||||
};
|
||||
updateHelper.updateAllKeys(getActivity(), finishedHandler);
|
||||
updateActionbarForSwipe(false);
|
||||
}
|
||||
});
|
||||
mSwipeRefreshLayout.setColorScheme(
|
||||
R.color.android_purple_dark,
|
||||
R.color.android_purple_light,
|
||||
@ -141,7 +154,7 @@ public class KeyListFragment extends LoaderFragment
|
||||
mSwipeRefreshLayout.setOnTouchListener(new View.OnTouchListener() {
|
||||
@Override
|
||||
public boolean onTouch(View v, MotionEvent event) {
|
||||
if (event.getAction() == MotionEvent.ACTION_MOVE) {
|
||||
if (event.getAction() == MotionEvent.ACTION_DOWN) {
|
||||
updateActionbarForSwipe(true);
|
||||
} else {
|
||||
updateActionbarForSwipe(false);
|
||||
@ -454,6 +467,8 @@ public class KeyListFragment extends LoaderFragment
|
||||
MenuItemCompat.setOnActionExpandListener(searchItem, new MenuItemCompat.OnActionExpandListener() {
|
||||
@Override
|
||||
public boolean onMenuItemActionExpand(MenuItem item) {
|
||||
// disable swipe-to-refresh
|
||||
mSwipeRefreshLayout.setIsLocked(true);
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -461,6 +476,8 @@ public class KeyListFragment extends LoaderFragment
|
||||
public boolean onMenuItemActionCollapse(MenuItem item) {
|
||||
mQuery = null;
|
||||
getLoaderManager().restartLoader(0, null, KeyListFragment.this);
|
||||
// enable swipe-to-refresh
|
||||
mSwipeRefreshLayout.setIsLocked(false);
|
||||
return true;
|
||||
}
|
||||
});
|
||||
@ -753,17 +770,4 @@ public class KeyListFragment extends LoaderFragment
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Implements OnRefreshListener for drag-to-refresh
|
||||
*/
|
||||
public void onRefresh() {
|
||||
KeyUpdateHelper updateHelper = new KeyUpdateHelper();
|
||||
KeychainIntentServiceHandler finishedHandler = new KeychainIntentServiceHandler(getActivity()) {
|
||||
public void handleMessage(Message message) {
|
||||
mSwipeRefreshLayout.setRefreshing(false);
|
||||
}
|
||||
};
|
||||
updateHelper.updateAllKeys(getActivity(), finishedHandler);
|
||||
updateActionbarForSwipe(false);
|
||||
}
|
||||
}
|
||||
|
@ -19,11 +19,8 @@ package org.sufficientlysecure.keychain.ui.widget;
|
||||
|
||||
import android.content.Context;
|
||||
import android.support.v4.widget.NoScrollableSwipeRefreshLayout;
|
||||
import android.support.v4.widget.SwipeRefreshLayout;
|
||||
import android.util.AttributeSet;
|
||||
|
||||
import org.sufficientlysecure.keychain.util.Log;
|
||||
|
||||
import se.emilsjolander.stickylistheaders.StickyListHeadersListView;
|
||||
|
||||
public class ListAwareSwipeRefreshLayout extends NoScrollableSwipeRefreshLayout {
|
||||
@ -55,7 +52,6 @@ public class ListAwareSwipeRefreshLayout extends NoScrollableSwipeRefreshLayout
|
||||
|
||||
public void setIsLocked(boolean locked) {
|
||||
mIsLocked = locked;
|
||||
Log.d("ListAwareSwipeRefreshLayout", (mIsLocked ? "is locked" : "not locked"));
|
||||
}
|
||||
|
||||
public boolean getIsLocked() {
|
||||
@ -70,12 +66,8 @@ public class ListAwareSwipeRefreshLayout extends NoScrollableSwipeRefreshLayout
|
||||
|
||||
return (mIsLocked || (
|
||||
mStickyListHeadersListView.getWrappedList().getChildCount() > 0
|
||||
&&
|
||||
(
|
||||
mStickyListHeadersListView.getWrappedList().getChildAt(0).getTop() < 0
|
||||
||
|
||||
mStickyListHeadersListView.getFirstVisiblePosition() > 0
|
||||
)
|
||||
&& (mStickyListHeadersListView.getWrappedList().getChildAt(0).getTop() < 0
|
||||
|| mStickyListHeadersListView.getFirstVisiblePosition() > 0)
|
||||
)
|
||||
);
|
||||
}
|
||||
|
@ -1,6 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<org.sufficientlysecure.keychain.ui.widget.ListAwareSwipeRefreshLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
<org.sufficientlysecure.keychain.ui.widget.ListAwareSwipeRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:id="@+id/key_list_swipe_container"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
@ -9,6 +8,7 @@
|
||||
<FrameLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<se.emilsjolander.stickylistheaders.StickyListHeadersListView
|
||||
android:id="@+id/key_list_list"
|
||||
android:layout_width="match_parent"
|
||||
@ -20,6 +20,7 @@
|
||||
android:paddingLeft="16dp"
|
||||
android:paddingRight="32dp"
|
||||
android:scrollbarStyle="outsideOverlay" />
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/key_list_empty"
|
||||
android:layout_width="match_parent"
|
||||
@ -27,18 +28,21 @@
|
||||
android:gravity="center"
|
||||
android:orientation="vertical"
|
||||
android:visibility="visible">
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center"
|
||||
android:text="@string/key_list_empty_text1"
|
||||
android:textAppearance="?android:attr/textAppearanceLarge" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center"
|
||||
android:text=""
|
||||
android:textAppearance="?android:attr/textAppearanceLarge" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
@ -46,6 +50,7 @@
|
||||
android:gravity="center"
|
||||
android:text="@string/key_list_empty_text2"
|
||||
android:textAppearance="?android:attr/textAppearanceSmall" />
|
||||
|
||||
<Button
|
||||
android:id="@+id/key_list_empty_button_create"
|
||||
android:layout_width="wrap_content"
|
||||
@ -55,7 +60,8 @@
|
||||
android:text="@string/key_list_empty_button_create"
|
||||
android:drawableLeft="@drawable/ic_action_new_account"
|
||||
android:drawablePadding="8dp"
|
||||
android:background="@drawable/button_edgy"/>
|
||||
android:background="@drawable/button_edgy" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
@ -63,6 +69,7 @@
|
||||
android:gravity="center"
|
||||
android:text="@string/key_list_empty_text3"
|
||||
android:textAppearance="?android:attr/textAppearanceSmall" />
|
||||
|
||||
<Button
|
||||
android:id="@+id/key_list_empty_button_import"
|
||||
android:layout_width="wrap_content"
|
||||
|
Loading…
Reference in New Issue
Block a user