抽象 AbstractGalleryActivity
No files matched your search
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 779 B |
|
After Width: | Height: | Size: 885 B |
|
After Width: | Height: | Size: 1.7 KiB |
|
After Width: | Height: | Size: 1.9 KiB |
|
After Width: | Height: | Size: 2.6 KiB |
|
After Width: | Height: | Size: 3.0 KiB |
@@ -40,7 +40,6 @@
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerInParent="true"
|
||||
android:onClick="buttonRefresh"
|
||||
android:text="@string/refresh" />
|
||||
|
||||
<ImageView
|
||||
|
||||
@@ -353,5 +353,5 @@
|
||||
<string name="update">更新</string>
|
||||
<string name="thanks">感谢</string>
|
||||
<string name="develop">开发</string>
|
||||
<string name="advance_search_left">左划更精彩</string>
|
||||
<string name="advance_search_left">左划更多</string>
|
||||
</resources>
|
||||
@@ -62,8 +62,6 @@ public class ListUrls {
|
||||
private int mMode = NORMAL;
|
||||
|
||||
private int page = 0;
|
||||
private int numPerPage = 25;
|
||||
private int max = -1;
|
||||
private int type = ALL_TYPE;
|
||||
|
||||
private int advsearchType = -1;
|
||||
@@ -140,45 +138,14 @@ public class ListUrls {
|
||||
return minRating;
|
||||
}
|
||||
|
||||
public boolean isSetMax() {
|
||||
return max == -1 ? false : true;
|
||||
}
|
||||
|
||||
public void setMax(int m) {
|
||||
if (m < 1)
|
||||
return;
|
||||
max = m;
|
||||
if(page >= m)
|
||||
page = m-1;
|
||||
}
|
||||
|
||||
public int getMax() {
|
||||
return max;
|
||||
}
|
||||
|
||||
public boolean setPage(int p) {
|
||||
if (p < max && p >= 0) {
|
||||
page = p;
|
||||
return true;
|
||||
}
|
||||
else
|
||||
return false;
|
||||
public void setPage(int p) {
|
||||
page = p;
|
||||
}
|
||||
|
||||
public int getPage() {
|
||||
return page;
|
||||
}
|
||||
|
||||
public void setNumPerPage(int n) {
|
||||
if (n < 1)
|
||||
return;
|
||||
numPerPage = n;
|
||||
}
|
||||
|
||||
public int getNumPerPage() {
|
||||
return numPerPage;
|
||||
}
|
||||
|
||||
public int getMode() {
|
||||
return mMode;
|
||||
}
|
||||
|
||||
@@ -171,16 +171,16 @@ public class EhClient {
|
||||
}
|
||||
}
|
||||
|
||||
public static String getFavoriteUrl(int index) {
|
||||
return getFavoriteUrl(Config.getMode(), index);
|
||||
public static String getFavoriteUrl(int index, int page) {
|
||||
return getFavoriteUrl(Config.getMode(), index, page);
|
||||
}
|
||||
|
||||
public static String getFavoriteUrl(int mode, int index) {
|
||||
public static String getFavoriteUrl(int mode, int index, int page) {
|
||||
switch (mode) {
|
||||
case EX:
|
||||
return EX_HEADER + "favorites.php?favcat=" + index;
|
||||
return EX_HEADER + "favorites.php?favcat=" + index + "&page=" + page;
|
||||
default:
|
||||
return G_HEADER + "favorites.php?favcat=" + index;
|
||||
return G_HEADER + "favorites.php?favcat=" + index + "&page=" + page;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1770,7 +1770,7 @@ public class EhClient {
|
||||
args[i] = new String[]{"modifygids[]", String.valueOf(gids[i-1])};
|
||||
args[i] = new String[]{"apply", "Apply"};
|
||||
|
||||
hp.post(getFavoriteUrl(srcCat), args);
|
||||
hp.post(getFavoriteUrl(srcCat, 0), args);
|
||||
}
|
||||
}).start();
|
||||
}
|
||||
|
||||
@@ -64,6 +64,8 @@ import com.hippo.ehviewer.util.Log;
|
||||
*/
|
||||
public class HttpHelper {
|
||||
private static final String TAG = "HttpHelper";
|
||||
public static final String SAD_PANDA_ERROR = "Sad Panda";
|
||||
|
||||
|
||||
private static String DEFAULT_CHARSET = "utf-8";
|
||||
private static String CHARSET_KEY = "charset=";
|
||||
@@ -145,7 +147,7 @@ public class HttpHelper {
|
||||
return "SocketException : " + e.getMessage();
|
||||
|
||||
else if (e instanceof SadPandaException)
|
||||
return "Sad Panda";
|
||||
return SAD_PANDA_ERROR;
|
||||
|
||||
else
|
||||
return e.getMessage();
|
||||
|
||||
@@ -23,12 +23,14 @@ import com.hippo.ehviewer.AppContext;
|
||||
import com.hippo.ehviewer.ImageGeterManager;
|
||||
import com.hippo.ehviewer.R;
|
||||
import com.hippo.ehviewer.data.GalleryInfo;
|
||||
import com.hippo.ehviewer.ehclient.EhClient;
|
||||
import com.hippo.ehviewer.util.Cache;
|
||||
import com.hippo.ehviewer.util.Ui;
|
||||
import com.hippo.ehviewer.widget.FswView;
|
||||
import com.hippo.ehviewer.widget.HfListView;
|
||||
import com.hippo.ehviewer.widget.LoadImageView;
|
||||
import com.hippo.ehviewer.widget.OnFitSystemWindowsListener;
|
||||
import com.hippo.ehviewer.widget.SuperToast;
|
||||
|
||||
import android.graphics.Bitmap;
|
||||
import android.graphics.Color;
|
||||
@@ -37,6 +39,7 @@ import android.os.Bundle;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.AbsListView;
|
||||
import android.widget.BaseAdapter;
|
||||
import android.widget.Button;
|
||||
import android.widget.ImageView;
|
||||
@@ -46,23 +49,208 @@ import android.widget.RatingBar;
|
||||
import android.widget.RelativeLayout;
|
||||
import android.widget.TextView;
|
||||
|
||||
public class AbstractGalleryActivity extends AbstractSlidingActivity {
|
||||
public abstract class AbstractGalleryActivity extends AbstractSlidingActivity
|
||||
implements HfListView.OnFooterRefreshListener,
|
||||
HfListView.OnRefreshListener {
|
||||
@SuppressWarnings("unused")
|
||||
private static final String TAG = AbstractGalleryActivity.class.getSimpleName();
|
||||
|
||||
private static final int REFRESH = 0x0;
|
||||
private static final int NEXT_PAGE = 0x1;
|
||||
private static final int PRE_PAGE = 0x2;
|
||||
private static final int SOMEWHERE = 0x3;
|
||||
|
||||
protected AppContext mAppContext;
|
||||
protected EhClient mClient;
|
||||
protected ImageGeterManager mImageGeterManager;
|
||||
|
||||
protected List<GalleryInfo> mGiList;
|
||||
protected GalleryAdapter mGalleryAdapter;
|
||||
|
||||
protected RelativeLayout mMainView;
|
||||
protected HfListView mHlv;
|
||||
protected ListView mList;
|
||||
protected ProgressBar mWaitProgressBar;
|
||||
protected Button mFreshButton;
|
||||
protected TextView mNoneTextView;
|
||||
protected ImageView mSadPanda;
|
||||
private RelativeLayout mMainView;
|
||||
private HfListView mHlv;
|
||||
private ListView mList;
|
||||
private ProgressBar mWaitProgressBar;
|
||||
private Button mFreshButton;
|
||||
private TextView mNoneTextView;
|
||||
private ImageView mSadPanda;
|
||||
|
||||
private long taskStamp;
|
||||
|
||||
private int mFirstIndex;
|
||||
private int mLastIndex;
|
||||
private int mCurPage;
|
||||
private int mFirstPage = 0;
|
||||
private int mLastPage = 0;
|
||||
private int mMaxPage;
|
||||
private int mItemPerPage;
|
||||
private int mGetMode;
|
||||
private boolean mIsKeepPosition;
|
||||
private int mTargetPage;
|
||||
private String mTargetUrl;
|
||||
private int mPaddingTop;
|
||||
private boolean isFootRefresh = false;
|
||||
|
||||
public void setNoneText(CharSequence text) {
|
||||
mNoneTextView.setText(text);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get url string for very page
|
||||
*
|
||||
* @param targetPage
|
||||
* @return
|
||||
*/
|
||||
protected abstract String getTargetUrl(int targetPage);
|
||||
|
||||
private void getGallerys() {
|
||||
setGallerysLayout();
|
||||
|
||||
taskStamp = System.currentTimeMillis();
|
||||
mClient.getMangaList(mTargetUrl, taskStamp, new ListGetListener());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onRefresh() {
|
||||
if (mFirstPage != 0) {
|
||||
getPrePage(true, true);
|
||||
} else {
|
||||
refresh(true);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onFooterRefresh() {
|
||||
boolean re;
|
||||
isFootRefresh = true;
|
||||
re = getNextPage(true, true);
|
||||
isFootRefresh = false;
|
||||
return re;
|
||||
}
|
||||
|
||||
protected void onlyShowList() {
|
||||
mHlv.setVisibility(View.VISIBLE);
|
||||
mWaitProgressBar.setVisibility(View.GONE);
|
||||
mFreshButton.setVisibility(View.GONE);
|
||||
mNoneTextView.setVisibility(View.GONE);
|
||||
mSadPanda.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
protected void firstTimeRefresh() {
|
||||
// set mHlv gone, make wait view show
|
||||
mHlv.setVisibility(View.GONE);
|
||||
|
||||
refresh(true);
|
||||
}
|
||||
|
||||
private void setGallerysLayout() {
|
||||
if (mHlv.getVisibility() == View.VISIBLE) {
|
||||
if (!isFootRefresh)
|
||||
mHlv.setRefreshing(true);
|
||||
mWaitProgressBar.setVisibility(View.GONE);
|
||||
mFreshButton.setVisibility(View.GONE);
|
||||
mNoneTextView.setVisibility(View.GONE);
|
||||
mSadPanda.setVisibility(View.GONE);
|
||||
} else {
|
||||
mHlv.setVisibility(View.GONE);
|
||||
mWaitProgressBar.setVisibility(View.VISIBLE);
|
||||
mFreshButton.setVisibility(View.GONE);
|
||||
mNoneTextView.setVisibility(View.GONE);
|
||||
mSadPanda.setVisibility(View.GONE);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* If can't refresh return false,
|
||||
* if force is true, must return true
|
||||
*
|
||||
* @param force
|
||||
* @return
|
||||
*/
|
||||
protected boolean refresh(boolean force) {
|
||||
if (!force && isRefreshing())
|
||||
return false;
|
||||
|
||||
mGetMode = REFRESH;
|
||||
mTargetPage = 0;
|
||||
mTargetUrl = getTargetUrl(mTargetPage);
|
||||
mIsKeepPosition = false;
|
||||
getGallerys();
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* If force is true, will get page when refrshing
|
||||
* @param isKeepPosition
|
||||
* @param force
|
||||
* @return
|
||||
*/
|
||||
protected boolean getPrePage(boolean isKeepPosition, boolean force) {
|
||||
if (!force && isRefreshing())
|
||||
return false;
|
||||
if (mFirstPage == 0)
|
||||
return false;
|
||||
|
||||
mGetMode = PRE_PAGE;
|
||||
mTargetPage = mFirstPage - 1;
|
||||
mTargetUrl = getTargetUrl(mTargetPage);
|
||||
mIsKeepPosition = isKeepPosition;
|
||||
getGallerys();
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* If force is true, will get page when refrshing
|
||||
* @param isKeepPosition
|
||||
* @param force
|
||||
* @return
|
||||
*/
|
||||
protected boolean getNextPage(boolean isKeepPosition, boolean force) {
|
||||
if (!force && isRefreshing())
|
||||
return false;
|
||||
if (mLastPage >= mMaxPage - 1)
|
||||
return false;
|
||||
|
||||
mGetMode = NEXT_PAGE;
|
||||
mTargetPage = mLastPage + 1;
|
||||
mTargetUrl = getTargetUrl(mTargetPage);
|
||||
mIsKeepPosition = isKeepPosition;
|
||||
getGallerys();
|
||||
return true;
|
||||
}
|
||||
|
||||
protected boolean getSomewhere(int page, boolean force) {
|
||||
if (!force && isRefreshing())
|
||||
return false;
|
||||
if (page >= mMaxPage || page < 0)
|
||||
return false;
|
||||
|
||||
mGetMode = SOMEWHERE;
|
||||
mTargetPage = page;
|
||||
mTargetUrl = getTargetUrl(mTargetPage);
|
||||
mIsKeepPosition = false;
|
||||
getGallerys();
|
||||
return true;
|
||||
}
|
||||
|
||||
public boolean jumpTo(int page, boolean force) {
|
||||
if (!force && isRefreshing())
|
||||
return false;
|
||||
if (page >= mMaxPage || page < 0)
|
||||
return false;
|
||||
|
||||
if (page >= mFirstPage && page <= mLastPage) {
|
||||
int position = (page - mFirstPage) * mItemPerPage;
|
||||
setListPosition(position);
|
||||
return true;
|
||||
} else if (page == mFirstPage - 1) {
|
||||
return getPrePage(false, force);
|
||||
} else if (page == mLastPage + 1) {
|
||||
return getNextPage(false, force);
|
||||
} else {
|
||||
return getSomewhere(page, force);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
@@ -70,6 +258,7 @@ public class AbstractGalleryActivity extends AbstractSlidingActivity {
|
||||
setContentView(R.layout.list);
|
||||
|
||||
mAppContext = (AppContext)getApplication();
|
||||
mClient = mAppContext.getEhClient();
|
||||
mImageGeterManager = mAppContext.getImageGeterManager();
|
||||
|
||||
mGiList = new ArrayList<GalleryInfo>();
|
||||
@@ -83,27 +272,73 @@ public class AbstractGalleryActivity extends AbstractSlidingActivity {
|
||||
mNoneTextView = (TextView)findViewById(R.id.none);
|
||||
mSadPanda = (ImageView)findViewById(R.id.sadpanda);
|
||||
|
||||
mWaitProgressBar.setVisibility(View.GONE);
|
||||
mFreshButton.setVisibility(View.GONE);
|
||||
mNoneTextView.setVisibility(View.GONE);
|
||||
mSadPanda.setVisibility(View.GONE);
|
||||
|
||||
FswView alignment = (FswView)findViewById(R.id.alignment);
|
||||
alignment.addOnFitSystemWindowsListener(
|
||||
new OnFitSystemWindowsListener() {
|
||||
@Override
|
||||
public void onfitSystemWindows(int paddingLeft, int paddingTop,
|
||||
int paddingRight, int paddingBottom) {
|
||||
mPaddingTop = paddingTop;
|
||||
mList.setPadding(mList.getPaddingLeft(), paddingTop,
|
||||
mList.getPaddingRight(), paddingBottom);
|
||||
}
|
||||
});
|
||||
|
||||
mHlv.setColorScheme(R.color.refresh_color_1,
|
||||
R.color.refresh_color_2,
|
||||
R.color.refresh_color_3,
|
||||
R.color.refresh_color_4);
|
||||
mHlv.setOnHeaderRefreshListener(this);
|
||||
mHlv.setOnFooterRefreshListener(this);
|
||||
mHlv.setFooterString(getString(R.string.footer_loading),
|
||||
getString(R.string.footer_loaded),
|
||||
getString(R.string.footer_fail));
|
||||
|
||||
mGalleryAdapter = new GalleryAdapter();
|
||||
mList.setAdapter(mGalleryAdapter);
|
||||
mList.setOnScrollListener(new ScrollListener());
|
||||
mList.setDivider(null);
|
||||
mList.setSelector(new ColorDrawable(Color.TRANSPARENT));
|
||||
mList.setClipToPadding(false);
|
||||
|
||||
mFreshButton.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
mFreshButton.setVisibility(View.GONE);
|
||||
mWaitProgressBar.setVisibility(View.VISIBLE);
|
||||
refresh(true);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* @return list view
|
||||
*/
|
||||
public ListView getListView() {
|
||||
return mList;
|
||||
}
|
||||
|
||||
public RelativeLayout getMainView() {
|
||||
return mMainView;
|
||||
}
|
||||
|
||||
public HfListView getHlv() {
|
||||
return mHlv;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return True if actionbar or footer is refreshing
|
||||
*/
|
||||
public boolean isRefreshing() {
|
||||
return mHlv.isRefreshing();
|
||||
}
|
||||
|
||||
public boolean isGetGalleryOk() {
|
||||
return mHlv.getVisibility() == View.VISIBLE;
|
||||
}
|
||||
|
||||
public int getMaxPage() {
|
||||
return mMaxPage;
|
||||
}
|
||||
|
||||
protected class GalleryAdapter extends BaseAdapter {
|
||||
@@ -172,4 +407,148 @@ public class AbstractGalleryActivity extends AbstractSlidingActivity {
|
||||
return convertView;
|
||||
}
|
||||
}
|
||||
|
||||
private class ScrollListener implements ListView.OnScrollListener {
|
||||
@Override
|
||||
public void onScroll(AbsListView view, int firstVisibleItem,
|
||||
int visibleItemCount, int totalItemCount) {
|
||||
mHlv.onScroll(view, firstVisibleItem, visibleItemCount, totalItemCount);
|
||||
|
||||
if (visibleItemCount < 2)
|
||||
return;
|
||||
if (mLastIndex == 0)
|
||||
mLastIndex = mItemPerPage - 1;
|
||||
int pageChanged = (firstVisibleItem - mFirstIndex)
|
||||
/ mItemPerPage;
|
||||
if (pageChanged == 0)
|
||||
pageChanged = (firstVisibleItem + visibleItemCount - mLastIndex - 1)
|
||||
/ mItemPerPage;
|
||||
|
||||
if (pageChanged != 0) {
|
||||
mCurPage = mCurPage + pageChanged;
|
||||
mFirstIndex += pageChanged * mItemPerPage;
|
||||
mLastIndex += pageChanged * mItemPerPage;
|
||||
}
|
||||
}
|
||||
@Override
|
||||
public void onScrollStateChanged(AbsListView view, int scrollState) {}
|
||||
}
|
||||
|
||||
private void setListPosition(int position) {
|
||||
if (position == 0)
|
||||
mList.setSelectionFromTop(position, mPaddingTop);
|
||||
else
|
||||
mList.setSelectionFromTop(position, 0);
|
||||
}
|
||||
|
||||
private class ListGetListener implements EhClient.OnGetMangaListListener {
|
||||
@Override
|
||||
public void onSuccess(Object checkFlag,
|
||||
ArrayList<GalleryInfo> gis, int itemPerPage, int maxPage) {
|
||||
if (taskStamp != (Long)checkFlag)
|
||||
return;
|
||||
|
||||
mMaxPage = maxPage;
|
||||
if (mItemPerPage < itemPerPage)
|
||||
mItemPerPage = itemPerPage;
|
||||
|
||||
mWaitProgressBar.setVisibility(View.GONE);
|
||||
mFreshButton.setVisibility(View.GONE);
|
||||
mSadPanda.setVisibility(View.GONE);
|
||||
|
||||
if (mMaxPage == 0) {
|
||||
mNoneTextView.setVisibility(View.VISIBLE);
|
||||
mHlv.setVisibility(View.GONE);
|
||||
|
||||
mFirstPage = 0;
|
||||
mLastPage = 0;
|
||||
mGiList.clear();
|
||||
mGalleryAdapter.notifyDataSetChanged();
|
||||
} else {
|
||||
mNoneTextView.setVisibility(View.GONE);
|
||||
mHlv.setVisibility(View.VISIBLE);
|
||||
|
||||
switch (mGetMode) {
|
||||
case REFRESH:
|
||||
mFirstPage = 0;
|
||||
mLastPage = 0;
|
||||
mGiList = gis;
|
||||
mGalleryAdapter.notifyDataSetChanged();
|
||||
// For current page
|
||||
mFirstIndex = 0;
|
||||
mLastIndex = gis.size() - 1;
|
||||
mCurPage = 0;
|
||||
|
||||
setListPosition(0);
|
||||
break;
|
||||
|
||||
case PRE_PAGE:
|
||||
mFirstPage--;
|
||||
mGiList.addAll(0, gis);
|
||||
mGalleryAdapter.notifyDataSetChanged();
|
||||
|
||||
if (mIsKeepPosition) {
|
||||
mFirstIndex += gis.size();
|
||||
mLastIndex += gis.size();
|
||||
int position = mList.getFirstVisiblePosition() + gis.size();
|
||||
setListPosition(position);
|
||||
mList.smoothScrollToPosition(position -1);
|
||||
} else {
|
||||
mFirstIndex = 0;
|
||||
mLastIndex = gis.size()-1;
|
||||
mCurPage = mTargetPage;
|
||||
setListPosition(0);
|
||||
}
|
||||
break;
|
||||
|
||||
case NEXT_PAGE:
|
||||
mLastPage++;
|
||||
mGiList.addAll(gis);
|
||||
mGalleryAdapter.notifyDataSetChanged();
|
||||
if (!mIsKeepPosition) {
|
||||
mFirstIndex = mGiList.size() - gis.size();
|
||||
mLastIndex = mGiList.size() - 1;
|
||||
mCurPage = mTargetPage;
|
||||
setListPosition(mFirstIndex);
|
||||
}
|
||||
break;
|
||||
|
||||
case SOMEWHERE:
|
||||
mFirstPage = mTargetPage;
|
||||
mLastPage = mTargetPage;
|
||||
mGiList = gis;
|
||||
mGalleryAdapter.notifyDataSetChanged();
|
||||
// For current page
|
||||
mFirstIndex = 0;
|
||||
mLastIndex = gis.size() - 1;
|
||||
mCurPage = mTargetPage;
|
||||
|
||||
setListPosition(0);
|
||||
}
|
||||
}
|
||||
|
||||
mHlv.setAnyRefreshComplete(true);
|
||||
}
|
||||
@Override
|
||||
public void onFailure(Object checkFlag, String eMsg) {
|
||||
if (taskStamp != (Long)checkFlag)
|
||||
return;
|
||||
|
||||
mWaitProgressBar.setVisibility(View.GONE);
|
||||
mNoneTextView.setVisibility(View.GONE);
|
||||
mSadPanda.setVisibility(View.GONE);
|
||||
|
||||
switch (mGetMode) {
|
||||
case REFRESH:
|
||||
mHlv.setVisibility(View.GONE);
|
||||
mFreshButton.setVisibility(View.VISIBLE);
|
||||
|
||||
default:
|
||||
mFreshButton.setVisibility(View.GONE);
|
||||
}
|
||||
new SuperToast(AbstractGalleryActivity.this,
|
||||
eMsg, SuperToast.WARNING).show();
|
||||
mHlv.setAnyRefreshComplete(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -51,11 +51,11 @@ import com.hippo.ehviewer.data.GalleryInfo;
|
||||
import com.hippo.ehviewer.ehclient.EhClient;
|
||||
import com.hippo.ehviewer.service.DownloadService;
|
||||
import com.hippo.ehviewer.service.DownloadServiceConnection;
|
||||
import com.hippo.ehviewer.util.Log;
|
||||
import com.hippo.ehviewer.util.Ui;
|
||||
import com.hippo.ehviewer.widget.ActionableToastBar;
|
||||
import com.hippo.ehviewer.widget.DialogBuilder;
|
||||
import com.hippo.ehviewer.widget.FswView;
|
||||
import com.hippo.ehviewer.widget.HfListView;
|
||||
import com.hippo.ehviewer.widget.OnFitSystemWindowsListener;
|
||||
import com.hippo.ehviewer.widget.ActionableToastBar.ActionClickedListener;
|
||||
import com.hippo.ehviewer.widget.SuperToast;
|
||||
@@ -71,6 +71,10 @@ public class FavouriteActivity extends AbstractGalleryActivity
|
||||
private Resources mResources;
|
||||
private EhClient mClient;
|
||||
|
||||
private RelativeLayout mMainView;
|
||||
private HfListView mHlv;
|
||||
private ListView mList;
|
||||
|
||||
private SlidingMenu mSlidingMenu;
|
||||
private ListView mMenuList;
|
||||
private String[] mMenuTitles;
|
||||
@@ -123,6 +127,12 @@ public class FavouriteActivity extends AbstractGalleryActivity
|
||||
mSlidingMenu.setShadowDrawable(R.drawable.shadow_right);
|
||||
mSlidingMenu.setShadowWidthRes(R.dimen.shadow_width);
|
||||
|
||||
// Get View
|
||||
mMainView = getMainView();
|
||||
mHlv = getHlv();
|
||||
mList = getListView();
|
||||
mMenuList = (ListView)findViewById(R.id.favorite_menu_list);
|
||||
|
||||
mActionableToastBar = new ActionableToastBar(this);
|
||||
mActionableToastBar.setBackgroundColor(mResources.getColor(android.R.color.holo_purple));
|
||||
mMainView.addView(mActionableToastBar);
|
||||
@@ -155,7 +165,6 @@ public class FavouriteActivity extends AbstractGalleryActivity
|
||||
mList.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);
|
||||
mList.setMultiChoiceModeListener(this);
|
||||
|
||||
mMenuList = (ListView)findViewById(R.id.favorite_menu_list);
|
||||
mMenuList.setClipToPadding(false);
|
||||
mMenuList.setAdapter(new BaseAdapter() {
|
||||
private ShapeDrawable d;
|
||||
@@ -221,7 +230,7 @@ public class FavouriteActivity extends AbstractGalleryActivity
|
||||
} else {
|
||||
mHlv.setEnabledHeader(true);
|
||||
mHlv.setEnabledFooter(true);
|
||||
mClient.getMangaList(EhClient.getFavoriteUrl(mMenuIndex - 1),
|
||||
mClient.getMangaList(EhClient.getFavoriteUrl(mMenuIndex - 1, 0),
|
||||
null, new EhClient.OnGetMangaListListener() {
|
||||
@Override
|
||||
public void onSuccess(Object checkFlag, ArrayList<GalleryInfo> lmdArray,
|
||||
@@ -422,4 +431,9 @@ public class FavouriteActivity extends AbstractGalleryActivity
|
||||
else
|
||||
mChoiceGiSet.remove(mGiList.get(position));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getTargetUrl(int targetPage) {
|
||||
return EhClient.getFavoriteUrl(mMenuIndex-1, targetPage);
|
||||
}
|
||||
}
|
||||
@@ -37,6 +37,7 @@ import com.hippo.ehviewer.network.Downloader;
|
||||
import com.hippo.ehviewer.service.DownloadService;
|
||||
import com.hippo.ehviewer.service.DownloadServiceConnection;
|
||||
import com.hippo.ehviewer.util.Config;
|
||||
import com.hippo.ehviewer.util.Log;
|
||||
import com.hippo.ehviewer.util.Ui;
|
||||
import com.hippo.ehviewer.util.Util;
|
||||
import com.hippo.ehviewer.widget.AlertButton;
|
||||
@@ -132,12 +133,6 @@ public class MangaListActivity extends AbstractGalleryActivity
|
||||
public static final String KEY_TAG = "tag";
|
||||
public static final String KEY_UPLOADER = "uploader";
|
||||
|
||||
private static final int REFRESH = 0x0;
|
||||
private static final int NEXT_PAGE = 0x1;
|
||||
private static final int PRE_PAGE = 0x2;
|
||||
private static final int SOMEWHERE = 0x3;
|
||||
private static final int SET_POSITION = 0x8000;
|
||||
|
||||
private EhClient mEhClient;
|
||||
private Resources mResources;
|
||||
|
||||
@@ -154,6 +149,8 @@ public class MangaListActivity extends AbstractGalleryActivity
|
||||
private Button logoutButton;
|
||||
private View waitloginoutView;
|
||||
|
||||
private ListView mList;
|
||||
|
||||
private TagsAdapter tagsAdapter;
|
||||
|
||||
private ListUrls lus;
|
||||
@@ -174,23 +171,8 @@ public class MangaListActivity extends AbstractGalleryActivity
|
||||
private long curBackTime = 0;
|
||||
private static final int BACK_PRESSED_INTERVAL = 2000;
|
||||
|
||||
//
|
||||
private int firstPage = 0;
|
||||
private int lastPage = 0;
|
||||
|
||||
private int firstIndex = 0;
|
||||
private int lastIndex = 0;
|
||||
private int visiblePage = 0;
|
||||
|
||||
private String mTitle;
|
||||
|
||||
private int mGetMode;
|
||||
|
||||
private int mFswPaddingLeft;
|
||||
private int mFswPaddingTop;
|
||||
private int mFswPaddingRight;
|
||||
private int mFswPaddingBottom;
|
||||
|
||||
private DownloadServiceConnection mServiceConn = new DownloadServiceConnection();
|
||||
|
||||
private void toRegister() {
|
||||
@@ -345,7 +327,7 @@ public class MangaListActivity extends AbstractGalleryActivity
|
||||
public void onClick(View v) {
|
||||
ListUrls backup = lus;
|
||||
lus = getLus(filterDialog);
|
||||
if (refresh()) {
|
||||
if (refresh(false)) {
|
||||
((AlertButton)v).dialog.dismiss();
|
||||
showContent();
|
||||
|
||||
@@ -356,7 +338,7 @@ public class MangaListActivity extends AbstractGalleryActivity
|
||||
if (search == null || search.isEmpty())
|
||||
t = getString(android.R.string.search_go);
|
||||
else
|
||||
t = getString(android.R.string.search_go) + " " + search;
|
||||
t = search;
|
||||
break;
|
||||
case ListUrls.UPLOADER:
|
||||
t = search;
|
||||
@@ -550,7 +532,7 @@ public class MangaListActivity extends AbstractGalleryActivity
|
||||
LayoutInflater inflater = this.getLayoutInflater();
|
||||
View view = inflater.inflate(R.layout.jump, null);
|
||||
TextView tv = (TextView)view.findViewById(R.id.list_jump_sum);
|
||||
tv.setText(String.format(getString(R.string.jump_sum), lus.getMax()));
|
||||
tv.setText(String.format(getString(R.string.jump_sum), getMaxPage())); // TODO
|
||||
tv = (TextView)view.findViewById(R.id.list_jump_to);
|
||||
tv.setText(R.string.jump_to);
|
||||
final EditText et = (EditText)view.findViewById(R.id.list_jump_edit);
|
||||
@@ -559,43 +541,25 @@ public class MangaListActivity extends AbstractGalleryActivity
|
||||
.setView(view, true)
|
||||
.setPositiveButton(android.R.string.ok,
|
||||
new View.OnClickListener() {
|
||||
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
boolean error = false;
|
||||
int targetPage = 0;
|
||||
try{
|
||||
int targetPage = Integer.parseInt(et.getText().toString()) - 1;
|
||||
if (targetPage >= firstPage
|
||||
&& targetPage <= lastPage) { // If targetPage is in range
|
||||
((AlertButton)v).dialog.dismiss(); // Just jump there
|
||||
int position = (targetPage - firstPage) *
|
||||
lus.getNumPerPage();
|
||||
setMainListPosition(position);
|
||||
} else{
|
||||
if (lus.setPage(targetPage)) {
|
||||
((AlertButton)v).dialog.dismiss();
|
||||
|
||||
mWaitProgressBar.setVisibility(View.GONE);
|
||||
mFreshButton.setVisibility(View.GONE);
|
||||
mNoneTextView.setVisibility(View.GONE);
|
||||
mSadPanda.setVisibility(View.GONE);
|
||||
mHlv.setRefreshing(true);
|
||||
|
||||
if (targetPage == firstPage - 1)
|
||||
mGetMode = PRE_PAGE;
|
||||
else if (targetPage == lastPage + 1)
|
||||
mGetMode = NEXT_PAGE;
|
||||
else
|
||||
mGetMode = SOMEWHERE;
|
||||
mGetMode |= SET_POSITION;
|
||||
|
||||
getList();
|
||||
} else {
|
||||
new SuperToast(MangaListActivity.this, R.string.toast_invalid_page).setIcon(R.drawable.ic_warning).show();
|
||||
}
|
||||
}
|
||||
targetPage = Integer.parseInt(et.getText().toString()) - 1;
|
||||
} catch(Exception e) {
|
||||
new SuperToast(MangaListActivity.this, R.string.toast_invalid_page).setIcon(R.drawable.ic_warning).show();
|
||||
error = true;
|
||||
}
|
||||
|
||||
if (!error) {
|
||||
error = !jumpTo(targetPage, true);
|
||||
}
|
||||
|
||||
if (error)
|
||||
new SuperToast(MangaListActivity.this, R.string.toast_invalid_page,
|
||||
SuperToast.ERROR).show();
|
||||
else
|
||||
((AlertButton)v).dialog.dismiss();
|
||||
}
|
||||
}).setNegativeButton(android.R.string.cancel,
|
||||
new View.OnClickListener() {
|
||||
@@ -879,187 +843,6 @@ public class MangaListActivity extends AbstractGalleryActivity
|
||||
}
|
||||
}
|
||||
|
||||
private void setMainListPosition(int position) {
|
||||
if (position == 0)
|
||||
mList.setSelectionFromTop(position, mFswPaddingTop);
|
||||
else
|
||||
mList.setSelectionFromTop(position, 0);
|
||||
}
|
||||
|
||||
private class MangaListGetListener implements
|
||||
EhClient.OnGetMangaListListener {
|
||||
@Override
|
||||
public void onSuccess(Object checkFlag, ArrayList<GalleryInfo> newLmdArray,
|
||||
int indexPerPage, int maxPage) {
|
||||
|
||||
// Check no Found view later
|
||||
mWaitProgressBar.setVisibility(View.GONE);
|
||||
mFreshButton.setVisibility(View.GONE);
|
||||
|
||||
if (maxPage == 0) { // If No hits found
|
||||
mHlv.setVisibility(View.GONE);
|
||||
mNoneTextView.setVisibility(View.VISIBLE);
|
||||
mSadPanda.setVisibility(View.GONE);
|
||||
|
||||
mTitle = mResources.getString(R.string.no_found);
|
||||
setTitle();
|
||||
|
||||
mGiList.clear();
|
||||
mGalleryAdapter.notifyDataSetChanged();
|
||||
} else if (maxPage == -1) { //panda
|
||||
mHlv.setVisibility(View.GONE);
|
||||
mNoneTextView.setVisibility(View.GONE);
|
||||
mSadPanda.setVisibility(View.VISIBLE);
|
||||
|
||||
mTitle = mResources.getString(R.string.sadpanda);
|
||||
setTitle();
|
||||
|
||||
mGiList.clear();
|
||||
mGalleryAdapter.notifyDataSetChanged();
|
||||
} else {
|
||||
mHlv.setVisibility(View.VISIBLE);
|
||||
mNoneTextView.setVisibility(View.GONE);
|
||||
mSadPanda.setVisibility(View.GONE);
|
||||
|
||||
// Set indexPerPage and maxPage
|
||||
lus.setNumPerPage(indexPerPage);
|
||||
lus.setMax(maxPage);
|
||||
|
||||
// Check refresh or get more
|
||||
switch (mGetMode & (~SET_POSITION)) {
|
||||
case REFRESH:
|
||||
firstPage = 0;
|
||||
lastPage = 0;
|
||||
mGiList.clear();
|
||||
mGiList.addAll(newLmdArray);
|
||||
mGalleryAdapter.notifyDataSetChanged();
|
||||
|
||||
// set visible page
|
||||
firstIndex = 0;
|
||||
lastIndex = newLmdArray.size() - 1;
|
||||
visiblePage = 0;
|
||||
|
||||
// set title
|
||||
setTitle();
|
||||
|
||||
// set main list positon
|
||||
setMainListPosition(0);
|
||||
break;
|
||||
case PRE_PAGE:
|
||||
firstPage -= 1;
|
||||
mGiList.addAll(0, newLmdArray);
|
||||
mGalleryAdapter.notifyDataSetChanged();
|
||||
|
||||
// set position if necessary and set visible page
|
||||
if ((mGetMode & SET_POSITION) != 0) {
|
||||
firstIndex = 0;
|
||||
lastIndex = newLmdArray.size()-1;
|
||||
visiblePage = lus.getPage();
|
||||
|
||||
setMainListPosition(0);
|
||||
setTitle();
|
||||
} else {
|
||||
firstIndex += newLmdArray.size();
|
||||
lastIndex += newLmdArray.size();
|
||||
|
||||
setMainListPosition(
|
||||
mList.getFirstVisiblePosition() + newLmdArray.size());
|
||||
}
|
||||
break;
|
||||
case NEXT_PAGE:
|
||||
lastPage += 1;
|
||||
mGiList.addAll(newLmdArray);
|
||||
mGalleryAdapter.notifyDataSetChanged();
|
||||
|
||||
// set position if necessary and set visible page
|
||||
if ((mGetMode & SET_POSITION) != 0) {
|
||||
firstIndex = mGiList.size() - newLmdArray.size();
|
||||
lastIndex = mGiList.size() - 1;
|
||||
visiblePage = lus.getPage();
|
||||
|
||||
setMainListPosition(firstIndex);
|
||||
setTitle();
|
||||
}
|
||||
break;
|
||||
case SOMEWHERE:
|
||||
firstPage = lus.getPage();
|
||||
lastPage = lus.getPage();
|
||||
mGiList.clear();
|
||||
mGiList.addAll(newLmdArray);
|
||||
mGalleryAdapter.notifyDataSetChanged();
|
||||
|
||||
// Get visible page
|
||||
firstIndex = 0;
|
||||
lastIndex = newLmdArray.size();
|
||||
visiblePage = lus.getPage();
|
||||
|
||||
setMainListPosition(0);
|
||||
setTitle();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
mHlv.setAnyRefreshComplete(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(Object checkFlag, String eMsg) {
|
||||
// Check pull list view later
|
||||
// Check fresh view later
|
||||
mWaitProgressBar.setVisibility(View.GONE);
|
||||
mNoneTextView.setVisibility(View.GONE);
|
||||
mSadPanda.setVisibility(View.GONE);
|
||||
|
||||
switch (mGetMode & (~SET_POSITION)) {
|
||||
case REFRESH:
|
||||
mHlv.setVisibility(View.GONE);
|
||||
mFreshButton.setVisibility(View.VISIBLE);
|
||||
|
||||
new SuperToast(MangaListActivity.this, eMsg).setIcon(R.drawable.ic_warning).show();
|
||||
mGiList.clear();
|
||||
mGalleryAdapter.notifyDataSetChanged();
|
||||
break;
|
||||
default:
|
||||
mFreshButton.setVisibility(View.GONE);
|
||||
new SuperToast(MangaListActivity.this, eMsg).setIcon(R.drawable.ic_warning).show();
|
||||
break;
|
||||
}
|
||||
mHlv.setAnyRefreshComplete(false);
|
||||
}
|
||||
}
|
||||
|
||||
private class MangaListListener implements ListView.OnScrollListener {
|
||||
|
||||
@Override
|
||||
public void onScroll(AbsListView view, int firstVisibleItem,
|
||||
int visibleItemCount, int totalItemCount) {
|
||||
mHlv.onScroll(view, firstVisibleItem, visibleItemCount, totalItemCount);
|
||||
|
||||
if (lus == null || visibleItemCount < 2)
|
||||
return;
|
||||
if (lastIndex == 0)
|
||||
lastIndex = lus.getNumPerPage() - 1;
|
||||
|
||||
int pageChanged = (firstVisibleItem - firstIndex)
|
||||
/ lus.getNumPerPage();
|
||||
if (pageChanged == 0)
|
||||
pageChanged = (firstVisibleItem + visibleItemCount - lastIndex - 1)
|
||||
/ lus.getNumPerPage();
|
||||
|
||||
if (pageChanged != 0) {
|
||||
visiblePage = visiblePage + pageChanged;
|
||||
firstIndex += pageChanged * lus.getNumPerPage();
|
||||
lastIndex += pageChanged * lus.getNumPerPage();
|
||||
setTitle();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onScrollStateChanged(AbsListView view, int scrollState) {}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onConfigurationChanged(Configuration newConfig) {
|
||||
super.onConfigurationChanged(newConfig);
|
||||
@@ -1132,12 +915,13 @@ public class MangaListActivity extends AbstractGalleryActivity
|
||||
@Override
|
||||
public void onOpened() {
|
||||
setTitle(R.string.app_name);
|
||||
invalidateOptionsMenu();
|
||||
}
|
||||
});
|
||||
mSlidingMenu.setOnClosedListener(new SlidingMenu.OnClosedListener() {
|
||||
@Override
|
||||
public void onClosed() {
|
||||
setTitle();
|
||||
setTitle(mTitle);
|
||||
invalidateOptionsMenu();
|
||||
}
|
||||
});
|
||||
@@ -1160,7 +944,6 @@ public class MangaListActivity extends AbstractGalleryActivity
|
||||
String search = intent.getStringExtra("search");
|
||||
int page = intent.getIntExtra("page", 0);
|
||||
lus = new ListUrls(type, search, page);
|
||||
visiblePage = lus.getPage();
|
||||
|
||||
// Init dialog
|
||||
loginDialog = createLoginDialog();
|
||||
@@ -1179,9 +962,12 @@ public class MangaListActivity extends AbstractGalleryActivity
|
||||
logoutButton = (Button)mUserPanel.findViewById(R.id.logout);
|
||||
waitloginoutView = mUserPanel.findViewById(R.id.wait);
|
||||
|
||||
mList = getListView();
|
||||
|
||||
loginButton.setOnClickListener(this);
|
||||
registerButton.setOnClickListener(this);
|
||||
logoutButton.setOnClickListener(this);
|
||||
setNoneText(mResources.getString(R.string.no_found));
|
||||
|
||||
// Drawer
|
||||
getActionBar().setDisplayHomeAsUpEnabled(true);
|
||||
@@ -1233,7 +1019,7 @@ public class MangaListActivity extends AbstractGalleryActivity
|
||||
case 0: // Home page
|
||||
ListUrls backup = lus;
|
||||
lus = new ListUrls(ListUrls.ALL_TYPE, null, 0);
|
||||
if (refresh()) {
|
||||
if (refresh(false)) {
|
||||
mTitle = mResources.getString(R.string.homepage);
|
||||
setTitle(mTitle);
|
||||
|
||||
@@ -1285,7 +1071,7 @@ public class MangaListActivity extends AbstractGalleryActivity
|
||||
int position, long arg3) {
|
||||
ListUrls backup = lus;
|
||||
lus = mData.getTag(position);
|
||||
if (lus != null && refresh()) {
|
||||
if (lus != null && refresh(false)) {
|
||||
mTitle = listMenuTag.get(position);
|
||||
setTitle(mTitle);
|
||||
showContent();
|
||||
@@ -1321,41 +1107,7 @@ public class MangaListActivity extends AbstractGalleryActivity
|
||||
}
|
||||
});
|
||||
|
||||
// Pull list view
|
||||
// Setup ActionBarPullToRefresh
|
||||
mHlv.setColorScheme(R.color.refresh_color_1, R.color.refresh_color_2, R.color.refresh_color_3, R.color.refresh_color_4);
|
||||
mHlv.setOnRefreshListener(new SuperSwipeRefreshLayout.OnRefreshListener() {
|
||||
@Override
|
||||
public void onRefresh() {
|
||||
if (firstPage != 0) {
|
||||
lus.setPage(firstPage - 1);
|
||||
mGetMode = PRE_PAGE;
|
||||
getList();
|
||||
} else {
|
||||
lus.setPage(0);
|
||||
mGetMode = REFRESH;
|
||||
getList();
|
||||
}
|
||||
}
|
||||
});
|
||||
mHlv.setOnFooterRefreshListener(new HfListView.OnFooterRefreshListener() {
|
||||
@Override
|
||||
public boolean onFooterRefresh() {
|
||||
if (lus.setPage(lastPage+1)) {
|
||||
mGetMode = NEXT_PAGE;
|
||||
getList();
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
});
|
||||
mHlv.setFooterString(getString(R.string.footer_loading),
|
||||
getString(R.string.footer_loaded),
|
||||
getString(R.string.footer_fail));
|
||||
|
||||
// Listview
|
||||
mList.setOnScrollListener(new MangaListListener());
|
||||
mList.setOnItemClickListener(new OnItemClickListener() {
|
||||
@Override
|
||||
public void onItemClick(AdapterView<?> arg0, View arg1,
|
||||
@@ -1384,17 +1136,12 @@ public class MangaListActivity extends AbstractGalleryActivity
|
||||
@Override
|
||||
public void onfitSystemWindows(int paddingLeft, int paddingTop,
|
||||
int paddingRight, int paddingBottom) {
|
||||
mFswPaddingLeft = paddingLeft;
|
||||
mFswPaddingTop = paddingTop;
|
||||
mFswPaddingRight = paddingRight;
|
||||
mFswPaddingBottom = paddingBottom;
|
||||
|
||||
mUserPanel.setPadding(mUserPanel.getPaddingLeft(), mFswPaddingTop,
|
||||
mUserPanel.setPadding(mUserPanel.getPaddingLeft(), paddingTop,
|
||||
mUserPanel.getPaddingRight(), mUserPanel.getPaddingBottom());
|
||||
itemListMenu.setPadding(itemListMenu.getPaddingLeft(), itemListMenu.getPaddingTop(),
|
||||
itemListMenu.getPaddingRight(), mFswPaddingBottom);
|
||||
tagListMenu.setPadding(tagListMenu.getPaddingLeft(), mFswPaddingTop,
|
||||
tagListMenu.getPaddingRight(), mFswPaddingBottom);
|
||||
itemListMenu.getPaddingRight(), paddingBottom);
|
||||
tagListMenu.setPadding(tagListMenu.getPaddingLeft(), paddingTop,
|
||||
tagListMenu.getPaddingRight(), paddingBottom);
|
||||
}
|
||||
});
|
||||
|
||||
@@ -1408,19 +1155,15 @@ public class MangaListActivity extends AbstractGalleryActivity
|
||||
|
||||
// get MangeList
|
||||
mTitle = mResources.getString(R.string.homepage);
|
||||
setTitle();
|
||||
refresh(false);
|
||||
|
||||
// set layout
|
||||
mHlv.setVisibility(View.GONE);
|
||||
mWaitProgressBar.setVisibility(View.VISIBLE);
|
||||
mFreshButton.setVisibility(View.GONE);
|
||||
mNoneTextView.setVisibility(View.GONE);
|
||||
mSadPanda.setVisibility(View.GONE);
|
||||
setTitle(mTitle);
|
||||
firstTimeRefresh();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onCreateOptionsMenu(Menu menu) {
|
||||
if (mSlidingMenu!= null && mSlidingMenu.isMenuShowing())
|
||||
return true;
|
||||
|
||||
getMenuInflater().inflate(R.menu.main, menu);
|
||||
|
||||
SearchManager searchManager =
|
||||
@@ -1441,11 +1184,11 @@ public class MangaListActivity extends AbstractGalleryActivity
|
||||
if (query == null || query.isEmpty())
|
||||
t = getString(android.R.string.search_go);
|
||||
else
|
||||
t = getString(android.R.string.search_go) + " " + query;
|
||||
t = query;
|
||||
|
||||
ListUrls backup = lus;
|
||||
lus = new ListUrls(ListUrls.ALL_TYPE, query);
|
||||
if (refresh()) {
|
||||
if (refresh(false)) {
|
||||
mTitle = t;
|
||||
setTitle(mTitle);
|
||||
} else {
|
||||
@@ -1565,7 +1308,7 @@ public class MangaListActivity extends AbstractGalleryActivity
|
||||
lus.setTag(tag);
|
||||
mTitle = tag;
|
||||
setTitle(mTitle);
|
||||
refresh();
|
||||
refresh(false);
|
||||
break;
|
||||
|
||||
case MODE_UPLOADER:
|
||||
@@ -1574,7 +1317,7 @@ public class MangaListActivity extends AbstractGalleryActivity
|
||||
lus.setMode(ListUrls.UPLOADER);
|
||||
mTitle = uploader;
|
||||
setTitle(mTitle);
|
||||
refresh();
|
||||
refresh(false);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -1591,11 +1334,11 @@ public class MangaListActivity extends AbstractGalleryActivity
|
||||
showMenu();
|
||||
return true;
|
||||
case R.id.action_refresh:
|
||||
if (!refresh())
|
||||
if (!refresh(false))
|
||||
new SuperToast(MangaListActivity.this, R.string.wait).show();
|
||||
return true;
|
||||
case R.id.action_jump:
|
||||
if (!mHlv.isRefreshing() && isGetOk())
|
||||
if (!isRefreshing() && isGetGalleryOk())
|
||||
jump();
|
||||
return true;
|
||||
default:
|
||||
@@ -1603,17 +1346,6 @@ public class MangaListActivity extends AbstractGalleryActivity
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isGetOk() {
|
||||
return mHlv.getVisibility() == View.VISIBLE;
|
||||
}
|
||||
|
||||
public void setTitle() {
|
||||
if (isGetOk())
|
||||
setTitle(String.format(getString(R.string.list_title), mTitle, visiblePage + 1));
|
||||
else
|
||||
setTitle(mTitle);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onDestroy() {
|
||||
super.onDestroy();
|
||||
@@ -1739,37 +1471,13 @@ public class MangaListActivity extends AbstractGalleryActivity
|
||||
}
|
||||
}
|
||||
|
||||
private void getList() {
|
||||
mEhClient.getMangaList(lus.getUrl(),
|
||||
null,
|
||||
new MangaListGetListener());
|
||||
}
|
||||
|
||||
public boolean refresh() {
|
||||
return refresh(true);
|
||||
}
|
||||
|
||||
public boolean refresh(boolean isShowProgress) {
|
||||
if (!mHlv.isRefreshing()
|
||||
&& mWaitProgressBar.getVisibility() != View.VISIBLE) {
|
||||
lus.setPage(0);
|
||||
if (isShowProgress)
|
||||
mHlv.setRefreshing(true);
|
||||
mGetMode = REFRESH;
|
||||
getList();
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public void buttonRefresh(View arg0) {
|
||||
refresh(false);
|
||||
mFreshButton.setVisibility(View.GONE);
|
||||
mWaitProgressBar.setVisibility(View.VISIBLE);
|
||||
}
|
||||
|
||||
public void buttonCheckLogin(View v) {
|
||||
checkLogin(false);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getTargetUrl(int targetPage) {
|
||||
lus.setPage(targetPage);
|
||||
return lus.getUrl();
|
||||
}
|
||||
}
|
||||
@@ -92,6 +92,14 @@ public class HfListView extends SuperSwipeRefreshLayout
|
||||
return mListView;
|
||||
}
|
||||
|
||||
/**
|
||||
* Just a alias
|
||||
* @param l
|
||||
*/
|
||||
public void setOnHeaderRefreshListener(HfListView.OnRefreshListener l) {
|
||||
super.setOnRefreshListener(l);
|
||||
}
|
||||
|
||||
public void setOnFooterRefreshListener(OnFooterRefreshListener l) {
|
||||
mFooterRefreshListener = l;
|
||||
}
|
||||
|
||||
@@ -30,6 +30,10 @@ import android.widget.Toast;
|
||||
|
||||
public class SuperToast extends Toast {
|
||||
|
||||
public static final int NONE = 0;
|
||||
public static final int WARNING = 1;
|
||||
public static final int ERROR = 2;
|
||||
|
||||
private Context mContext;
|
||||
|
||||
private LinearLayout mMainView;
|
||||
@@ -43,14 +47,24 @@ public class SuperToast extends Toast {
|
||||
init();
|
||||
}
|
||||
|
||||
public SuperToast(Context context, int strResId) {
|
||||
this(context);
|
||||
setMessage(strResId);
|
||||
}
|
||||
|
||||
public SuperToast(Context context, String mesg) {
|
||||
this(context);
|
||||
setMessage(mesg);
|
||||
}
|
||||
|
||||
public SuperToast(Context context, int strResId) {
|
||||
this(context);
|
||||
setMessage(strResId);
|
||||
public SuperToast(Context context, int strResId, int type) {
|
||||
this(context, strResId);
|
||||
setTypeIcon(type);
|
||||
}
|
||||
|
||||
public SuperToast(Context context, String mesg, int type) {
|
||||
this(context, mesg);
|
||||
setTypeIcon(type);
|
||||
}
|
||||
|
||||
private void init() {
|
||||
@@ -67,6 +81,22 @@ public class SuperToast extends Toast {
|
||||
setView(view);
|
||||
}
|
||||
|
||||
public SuperToast setTypeIcon(int type) {
|
||||
switch(type) {
|
||||
case WARNING:
|
||||
setIcon(R.drawable.ic_warning);
|
||||
break;
|
||||
case ERROR:
|
||||
setIcon(R.drawable.ic_error);
|
||||
break;
|
||||
case NONE:
|
||||
default:
|
||||
// nop
|
||||
break;
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
public SuperToast setIcon(int resId) {
|
||||
return setIcon(mContext.getResources().getDrawable(resId));
|
||||
}
|
||||
|
||||