mirror of
https://github.com/samuelclay/NewsBlur.git
synced 2025-09-18 21:50:56 +00:00
Initial integration of SwipeRefreshLayout
This commit is contained in:
parent
9458e3eca5
commit
0da3d4ee61
4 changed files with 90 additions and 41 deletions
Binary file not shown.
|
@ -1,5 +1,12 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
<android.support.v4.widget.SwipeRefreshLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:id="@+id/swipe_container"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="fill_parent" >
|
||||
|
||||
|
@ -40,3 +47,4 @@
|
|||
android:text="SYNC STATUS" />
|
||||
|
||||
</RelativeLayout>
|
||||
</android.support.v4.widget.SwipeRefreshLayout>
|
||||
|
|
|
@ -6,11 +6,13 @@ import android.os.Bundle;
|
|||
import android.preference.PreferenceManager;
|
||||
import android.app.DialogFragment;
|
||||
import android.app.FragmentManager;
|
||||
import android.support.v4.widget.SwipeRefreshLayout;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuInflater;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
import android.view.Window;
|
||||
import android.widget.AbsListView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.newsblur.R;
|
||||
|
@ -18,12 +20,11 @@ import com.newsblur.fragment.FolderListFragment;
|
|||
import com.newsblur.fragment.LogoutDialogFragment;
|
||||
import com.newsblur.service.BootReceiver;
|
||||
import com.newsblur.service.NBSyncService;
|
||||
import com.newsblur.util.FeedUtils;
|
||||
import com.newsblur.util.PrefsUtils;
|
||||
import com.newsblur.util.UIUtils;
|
||||
import com.newsblur.view.StateToggleButton.StateChangedListener;
|
||||
|
||||
public class Main extends NbActivity implements StateChangedListener {
|
||||
public class Main extends NbActivity implements StateChangedListener, SwipeRefreshLayout.OnRefreshListener, AbsListView.OnScrollListener {
|
||||
|
||||
private ActionBar actionBar;
|
||||
private FolderListFragment folderFeedList;
|
||||
|
@ -31,6 +32,7 @@ public class Main extends NbActivity implements StateChangedListener {
|
|||
private Menu menu;
|
||||
private TextView overlayStatusText;
|
||||
private boolean isLightTheme;
|
||||
private SwipeRefreshLayout swipeLayout;
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
|
@ -46,6 +48,14 @@ public class Main extends NbActivity implements StateChangedListener {
|
|||
setContentView(R.layout.activity_main);
|
||||
setupActionBar();
|
||||
|
||||
swipeLayout = (SwipeRefreshLayout)findViewById(R.id.swipe_container);
|
||||
// TODO Newsblur colours
|
||||
swipeLayout.setColorScheme(android.R.color.holo_blue_bright,
|
||||
android.R.color.holo_green_light,
|
||||
android.R.color.holo_orange_light,
|
||||
android.R.color.holo_red_light);
|
||||
swipeLayout.setOnRefreshListener(this);
|
||||
|
||||
fragmentManager = getFragmentManager();
|
||||
folderFeedList = (FolderListFragment) fragmentManager.findFragmentByTag("folderFeedListFragment");
|
||||
folderFeedList.setRetainInstance(true);
|
||||
|
@ -127,10 +137,10 @@ public class Main extends NbActivity implements StateChangedListener {
|
|||
|
||||
private void updateStatusIndicators() {
|
||||
if (NBSyncService.isFeedFolderSyncRunning()) {
|
||||
setProgressBarIndeterminateVisibility(true);
|
||||
swipeLayout.setRefreshing(true);
|
||||
setRefreshEnabled(false);
|
||||
} else {
|
||||
setProgressBarIndeterminateVisibility(false);
|
||||
swipeLayout.setRefreshing(false);
|
||||
setRefreshEnabled(true);
|
||||
}
|
||||
|
||||
|
@ -154,5 +164,32 @@ public class Main extends NbActivity implements StateChangedListener {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onRefresh() {
|
||||
NBSyncService.forceFeedsFolders();
|
||||
triggerSync();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onScrollStateChanged(AbsListView absListView, int i) {
|
||||
// not required
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onScroll(AbsListView absListView, int i, int i2, int i3) {
|
||||
boolean enable = false;
|
||||
|
||||
if( absListView.getChildCount() > 0){
|
||||
// check if the first item of the list is visible
|
||||
boolean firstItemVisible = absListView.getFirstVisiblePosition() == 0;
|
||||
// check if the top of the first item is visible
|
||||
boolean topOfFirstItemVisible = absListView.getChildAt(0).getTop() == 0;
|
||||
// enabling or disabling the refresh layout
|
||||
enable = firstItemVisible && topOfFirstItemVisible;
|
||||
}
|
||||
|
||||
if (swipeLayout != null) {
|
||||
swipeLayout.setEnabled(enable);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -78,6 +78,7 @@ public class FolderListFragment extends Fragment implements OnGroupClickListener
|
|||
folderAdapter = new MixedExpandableListAdapter(getActivity(), folderCursor, socialFeedCursor, countCursor, sharedCountCursor, savedCountCursor);
|
||||
folderAdapter.setViewBinders(groupViewBinder, blogViewBinder);
|
||||
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -117,6 +118,9 @@ public class FolderListFragment extends Fragment implements OnGroupClickListener
|
|||
list.setOnGroupClickListener(this);
|
||||
list.setOnChildClickListener(this);
|
||||
|
||||
// Main activity needs to listen for scrolls to prevent refresh from firing unnecessarily
|
||||
list.setOnScrollListener((android.widget.AbsListView.OnScrollListener) getActivity());
|
||||
|
||||
return v;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue