mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-15 14:25:52 +00:00
Bug 970707 - Wrap child view in GeckoSwipeRefreshLayout. r=margaret
This commit is contained in:
parent
3e0b949fc5
commit
58615e3c7a
@ -373,6 +373,10 @@ abstract class PanelLayout extends FrameLayout {
|
||||
if (view instanceof DatasetBacked) {
|
||||
DatasetBacked datasetBacked = (DatasetBacked) view;
|
||||
datasetBacked.setFilterManager(new PanelFilterManager(viewState));
|
||||
|
||||
if (viewConfig.isRefreshEnabled()) {
|
||||
view = new PanelRefreshLayout(getContext(), view);
|
||||
}
|
||||
}
|
||||
|
||||
viewState.setView(view);
|
||||
|
66
mobile/android/base/home/PanelRefreshLayout.java
Normal file
66
mobile/android/base/home/PanelRefreshLayout.java
Normal file
@ -0,0 +1,66 @@
|
||||
/* -*- Mode: Java; c-basic-offset: 4; tab-width: 20; indent-tabs-mode: nil; -*-
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
package org.mozilla.gecko.home;
|
||||
|
||||
import org.mozilla.gecko.R;
|
||||
|
||||
import org.mozilla.gecko.home.PanelLayout.DatasetBacked;
|
||||
import org.mozilla.gecko.home.PanelLayout.FilterManager;
|
||||
import org.mozilla.gecko.widget.GeckoSwipeRefreshLayout;
|
||||
import org.mozilla.gecko.widget.GeckoSwipeRefreshLayout.OnRefreshListener;
|
||||
|
||||
import android.content.Context;
|
||||
import android.database.Cursor;
|
||||
import android.view.View;
|
||||
|
||||
/**
|
||||
* Used to wrap a {@code DatasetBacked} ListView or GridView to give the child view swipe-to-refresh
|
||||
* capabilities.
|
||||
*
|
||||
* This view acts as a decorator to forward the {@code DatasetBacked} methods to the child view
|
||||
* while providing the refresh gesture support on top of it.
|
||||
*/
|
||||
class PanelRefreshLayout extends GeckoSwipeRefreshLayout implements DatasetBacked {
|
||||
private final DatasetBacked datasetBacked;
|
||||
|
||||
/**
|
||||
* @param context Android context.
|
||||
* @param childView ListView or GridView. Must implement {@code DatasetBacked}.
|
||||
*/
|
||||
public PanelRefreshLayout(Context context, View childView) {
|
||||
super(context);
|
||||
|
||||
if (!(childView instanceof DatasetBacked)) {
|
||||
throw new IllegalArgumentException("View must implement DatasetBacked to be refreshed");
|
||||
}
|
||||
|
||||
this.datasetBacked = (DatasetBacked) childView;
|
||||
|
||||
setOnRefreshListener(new RefreshListener());
|
||||
addView(childView);
|
||||
|
||||
// Must be called after the child view has been added.
|
||||
setColorScheme(R.color.swipe_refresh_orange, R.color.swipe_refresh_white,
|
||||
R.color.swipe_refresh_orange, R.color.swipe_refresh_white);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setDataset(Cursor cursor) {
|
||||
datasetBacked.setDataset(cursor);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setFilterManager(FilterManager manager) {
|
||||
datasetBacked.setFilterManager(manager);
|
||||
}
|
||||
|
||||
private class RefreshListener implements OnRefreshListener {
|
||||
@Override
|
||||
public void onRefresh() {
|
||||
setRefreshing(false);
|
||||
}
|
||||
}
|
||||
}
|
@ -267,6 +267,7 @@ gbjar.sources += [
|
||||
'home/PanelLayout.java',
|
||||
'home/PanelListView.java',
|
||||
'home/PanelManager.java',
|
||||
'home/PanelRefreshLayout.java',
|
||||
'home/PanelViewAdapter.java',
|
||||
'home/PanelViewItemHandler.java',
|
||||
'home/PinSiteDialog.java',
|
||||
|
@ -91,5 +91,9 @@
|
||||
<color name="home_last_tab_bar_bg">#FFF5F7F9</color>
|
||||
|
||||
<color name="panel_image_item_background">#D1D9E1</color>
|
||||
|
||||
<!-- Swipe to refresh colors -->
|
||||
<color name="swipe_refresh_orange">#FFFFC26C</color>
|
||||
<color name="swipe_refresh_white">#FFFFFFFF</color>
|
||||
</resources>
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user