\"]+)\">" // rating
+ + ".+?"
+ + "
(.+?)"); // uploader
+ m = p.matcher(body);
+ while (m.find()) {
+ GalleryInfo gi = new GalleryInfo();
+
+ gi.category = EhClient.getType(m.group(1));
+ gi.posted = m.group(2);
+ if (m.group(3) == null) {
+ gi.thumb = Util.htmlUnsescape("http://"
+ + m.group(5).replace('~', '/'));
+ gi.title = Util.htmlUnsescape(m.group(6));
+ } else {
+ gi.thumb = Util.htmlUnsescape(m.group(3));
+ gi.title = Util.htmlUnsescape(m.group(4));
+ }
+
+ Pattern pattern = Pattern
+ .compile("/(\\d+)/(\\w+)");
+ Matcher matcher = pattern.matcher(m.group(7));
+ if (matcher.find()) {
+ gi.gid = Integer.parseInt(matcher.group(1));
+ gi.token = matcher.group(2);
+ } else
+ continue;
+
+ gi.rating = Float.parseFloat(getRate(m.group(9)));
+ gi.uploader = m.group(10);
+ giList.add(gi);
+ }
+ return ALL;
}
- indexPerPage = giList.size();
- return ALL;
}
-
+
private String getRate(String rawRate) {
Pattern p = Pattern.compile("\\d+px");
Matcher m = p.matcher(rawRate);
@@ -120,4 +195,26 @@ public class ListParser {
re = Integer.toString(rate);
return re;
}
+
+ private static final String PAU_SPACER = " by ";
+
+ private boolean getPostedAndUploader(String raw, String[] pau) {
+ int index = raw.indexOf(PAU_SPACER);
+ if (index == -1) {
+ return false;
+ } else {
+ pau[0] = raw.substring(0, index);
+ pau[1] = raw.substring(index + PAU_SPACER.length());
+ return true;
+ }
+ }
+
+ private int getStartNum(String str) {
+ int startNum = 0;
+ for (int i = 0; i < str.length(); i++) {
+ if (str.charAt(i) == '*')
+ startNum++;
+ }
+ return startNum;
+ }
}
diff --git a/src/com/hippo/ehviewer/network/HttpHelper.java b/src/com/hippo/ehviewer/network/HttpHelper.java
index b9ac0e07e..81a711873 100644
--- a/src/com/hippo/ehviewer/network/HttpHelper.java
+++ b/src/com/hippo/ehviewer/network/HttpHelper.java
@@ -290,7 +290,7 @@ public class HttpHelper {
private class CheckSpHelper implements RequestHelper {
@Override
public URL getUrl() throws MalformedURLException {
- return new URL(EhClient.EX_HEADER);
+ return new URL(EhClient.HEADER_EX);
}
@Override
diff --git a/src/com/hippo/ehviewer/ui/AbstractGalleryActivity.java b/src/com/hippo/ehviewer/ui/AbstractGalleryActivity.java
index 40200b50b..6b424c3cb 100644
--- a/src/com/hippo/ehviewer/ui/AbstractGalleryActivity.java
+++ b/src/com/hippo/ehviewer/ui/AbstractGalleryActivity.java
@@ -38,6 +38,7 @@ import com.hippo.ehviewer.cache.ImageCache;
import com.hippo.ehviewer.data.GalleryInfo;
import com.hippo.ehviewer.data.GalleryPopular;
import com.hippo.ehviewer.ehclient.EhClient;
+import com.hippo.ehviewer.ehclient.ListParser;
import com.hippo.ehviewer.util.Ui;
import com.hippo.ehviewer.widget.FswView;
import com.hippo.ehviewer.widget.HfListView;
@@ -45,6 +46,7 @@ import com.hippo.ehviewer.widget.LoadImageView;
import com.hippo.ehviewer.widget.OnFitSystemWindowsListener;
import com.hippo.ehviewer.widget.RatingView;
import com.hippo.ehviewer.widget.RefreshTextView;
+import com.hippo.ehviewer.widget.SuperToast;
public abstract class AbstractGalleryActivity extends AbstractSlidingActivity
implements HfListView.OnFooterRefreshListener,
@@ -76,7 +78,7 @@ public abstract class AbstractGalleryActivity extends AbstractSlidingActivity
private int mCurPage;
private int mFirstPage = 0;
private int mLastPage = 0;
- private int mMaxPage;
+ private int mPageNum;
private int mItemPerPage;
private int mGetMode;
private boolean mIsKeepPosition;
@@ -157,7 +159,16 @@ public abstract class AbstractGalleryActivity extends AbstractSlidingActivity
}
}
+ protected boolean retry(boolean force) {
+ if (!force && isRefreshing())
+ return false;
+
+ getGallerys();
+ return true;
+ }
+
/**
+ * Go to page 0
* If can't refresh return false,
* if force is true, must return true
*
@@ -205,7 +216,7 @@ public abstract class AbstractGalleryActivity extends AbstractSlidingActivity
protected boolean getNextPage(boolean isKeepPosition, boolean force) {
if (!force && isRefreshing())
return false;
- if (mLastPage >= mMaxPage - 1)
+ if (mLastPage >= mPageNum - 1) // If last page is the end of the page or more laster, error
return false;
mGetMode = NEXT_PAGE;
@@ -219,7 +230,7 @@ public abstract class AbstractGalleryActivity extends AbstractSlidingActivity
protected boolean getSomewhere(int page, boolean force) {
if (!force && isRefreshing())
return false;
- if (page >= mMaxPage || page < 0)
+ if (page >= mPageNum || page < 0)
return false;
mGetMode = SOMEWHERE;
@@ -233,7 +244,7 @@ public abstract class AbstractGalleryActivity extends AbstractSlidingActivity
public boolean jumpTo(int page, boolean force) {
if (!force && isRefreshing())
return false;
- if (page >= mMaxPage || page < 0)
+ if (page >= mPageNum || page < 0)
return false;
if (page >= mFirstPage && page <= mLastPage) {
@@ -295,11 +306,11 @@ public abstract class AbstractGalleryActivity extends AbstractSlidingActivity
mList.setSelector(new ColorDrawable(Color.TRANSPARENT));
mList.setClipToPadding(false);
- mRefreshTextView.setOnRefreshListener(new RefreshTextView.OnRefreshListener() {
+ mRefreshTextView.setDefaultRefresh("点击重试", new RefreshTextView.OnRefreshListener() { // TODO
@Override
public void onRefresh() {
mRefreshTextView.setRefreshing(true);
- refresh(true);
+ retry(true);
}
});
}
@@ -331,7 +342,7 @@ public abstract class AbstractGalleryActivity extends AbstractSlidingActivity
}
public int getMaxPage() {
- return mMaxPage;
+ return mPageNum;
}
public int getCurPage() {
@@ -346,7 +357,7 @@ public abstract class AbstractGalleryActivity extends AbstractSlidingActivity
setGalleryInfos(gis, 1);
}
- public void setGalleryInfos(List gis, int maxPage) {
+ public void setGalleryInfos(List gis, int pageNum) {
mGiList = gis;
mGalleryAdapter.notifyDataSetChanged();
@@ -355,7 +366,7 @@ public abstract class AbstractGalleryActivity extends AbstractSlidingActivity
mCurPage = 0;
mFirstPage = 0;
mLastPage = 0;
- mMaxPage = maxPage;
+ mPageNum = pageNum;
mItemPerPage = mGiList.size();
if (mItemPerPage == 0)
@@ -377,7 +388,7 @@ public abstract class AbstractGalleryActivity extends AbstractSlidingActivity
}
@Override
public Object getItem(int position) {
- return mGiList.get(position);
+ return mGiList == null ? 0 : mGiList.get(position);
}
@Override
public long getItemId(int position) {
@@ -499,27 +510,32 @@ public abstract class AbstractGalleryActivity extends AbstractSlidingActivity
}
public interface OnGetListListener {
- public void onSuccess(long taskStamp, List gis, int itemPerPage, int maxPage);
+ public void onSuccess(long taskStamp, List gis, int maxPage);
public void onFailure(long taskStamp, String eMsg);
}
private final OnGetListListener mListener = new OnGetListListener() {
@Override
public void onSuccess(long taskStamp,
- List gis, int itemPerPage, int maxPage) {
+ List gis, int pageNum) {
if (mTaskStamp != taskStamp)
return;
- mMaxPage = maxPage;
+ if (pageNum == ListParser.TARGET_PAGE_IS_LAST)
+ mPageNum = mTargetPage + 1;
+ else
+ mPageNum = pageNum;
+
+ int itemPerPage = gis == null ? 0 : gis.size();
if (mItemPerPage < itemPerPage)
mItemPerPage = itemPerPage;
- if (mMaxPage == 0) {
+ if (mPageNum == 0) {
onlyShowNone();
mFirstPage = 0;
mLastPage = 0;
- mGiList = new ArrayList();
+ mGiList = gis;
mGalleryAdapter.notifyDataSetChanged();
} else {
onlyShowList();
@@ -592,13 +608,25 @@ public abstract class AbstractGalleryActivity extends AbstractSlidingActivity
switch (mGetMode) {
case REFRESH:
+ case SOMEWHERE:
mHlv.setVisibility(View.GONE);
mRefreshTextView.setVisibility(View.VISIBLE);
- mRefreshTextView.setEmesg(eMsg, true);
+ if (eMsg.equals("index error")) {
+ mRefreshTextView.setEmesg(eMsg, "点击回第一页", new RefreshTextView.OnRefreshListener() {
+ @Override
+ public void onRefresh() {
+ mRefreshTextView.setRefreshing(true);
+ refresh(true);
+ }
+ });
+ } else {
+ mRefreshTextView.setEmesg(eMsg, true);
+ }
break;
default:
mRefreshTextView.setRefreshing(false);
mRefreshTextView.setVisibility(View.GONE);
+ new SuperToast(AbstractGalleryActivity.this, "错误的页面数",SuperToast.ERROR).show(); // TODO
}
mHlv.setAnyRefreshComplete(false);
}
diff --git a/src/com/hippo/ehviewer/ui/DetailSectionFragment.java b/src/com/hippo/ehviewer/ui/DetailSectionFragment.java
index db3f8f548..9aebf3f46 100644
--- a/src/com/hippo/ehviewer/ui/DetailSectionFragment.java
+++ b/src/com/hippo/ehviewer/ui/DetailSectionFragment.java
@@ -185,7 +185,7 @@ public class DetailSectionFragment extends Fragment
public void handleDetail(GalleryDetail gd) {
mGalleryDetail = gd;
- mUrl = EhClient.getDetailUrl(
+ mUrl = mClient.getDetailUrl(
mGalleryDetail.gid, mGalleryDetail.token);
mThumb.setImageDrawable(null);
@@ -328,7 +328,7 @@ public class DetailSectionFragment extends Fragment
mWaitPreviewList.setVisibility(View.VISIBLE);
mPreviewRefreshButton.setVisibility(View.GONE);
- mUrl = EhClient.getDetailUrl(
+ mUrl = mClient.getDetailUrl(
mGalleryDetail.gid, mGalleryDetail.token, mCurPage);
mClient.getPreviewList(mUrl, mCurPage,
new EhClient.OnGetPreviewListListener() {
diff --git a/src/com/hippo/ehviewer/ui/FavouriteActivity.java b/src/com/hippo/ehviewer/ui/FavouriteActivity.java
index 8b4e68f94..c862ab216 100644
--- a/src/com/hippo/ehviewer/ui/FavouriteActivity.java
+++ b/src/com/hippo/ehviewer/ui/FavouriteActivity.java
@@ -180,7 +180,7 @@ public class FavouriteActivity extends AbstractGalleryActivity
Intent intent = new Intent(FavouriteActivity.this,
MangaDetailActivity.class);
GalleryInfo gi = getGalleryInfo(position);
- intent.putExtra("url", EhClient.getDetailUrl(gi.gid, gi.token));
+ intent.putExtra("url", mClient.getDetailUrl(gi.gid, gi.token));
intent.putExtra(MangaDetailActivity.KEY_G_INFO, gi);
startActivity(intent);
}
@@ -504,7 +504,7 @@ public class FavouriteActivity extends AbstractGalleryActivity
@Override
protected String getTargetUrl(int targetPage) {
- return EhClient.getFavoriteUrl(mMenuIndex-1, targetPage);
+ return mClient.getFavoriteUrl(mMenuIndex-1, targetPage);
}
@Override
@@ -512,9 +512,9 @@ public class FavouriteActivity extends AbstractGalleryActivity
final OnGetListListener listener) {
mClient.getGList(url, null, new EhClient.OnGetGListListener() {
@Override
- public void onSuccess(Object checkFlag, List lmdArray,
- int indexPerPage, int maxPage) {
- listener.onSuccess(taskStamp, lmdArray, indexPerPage, maxPage);
+ public void onSuccess(Object checkFlag, List giList,
+ int maxPage) {
+ listener.onSuccess(taskStamp, giList, maxPage);
}
@Override
public void onFailure(Object checkFlag, String eMsg) {
@@ -535,8 +535,7 @@ public class FavouriteActivity extends AbstractGalleryActivity
}
@Override
- public void onSuccess(List gis, int indexPerPage,
- int maxPage) {
+ public void onSuccess(List gis, int maxPage) {
setGalleryInfos(gis, maxPage);
mHlv.setRefreshing(false);
new SuperToast(FavouriteActivity.this, mSuccStr).show();
diff --git a/src/com/hippo/ehviewer/ui/MangaDetailActivity.java b/src/com/hippo/ehviewer/ui/MangaDetailActivity.java
index a3379acff..59374b76d 100644
--- a/src/com/hippo/ehviewer/ui/MangaDetailActivity.java
+++ b/src/com/hippo/ehviewer/ui/MangaDetailActivity.java
@@ -55,12 +55,6 @@ import com.hippo.ehviewer.widget.AlertButton;
import com.hippo.ehviewer.widget.DialogBuilder;
import com.hippo.ehviewer.widget.SuperToast;
-// TODO I'm going to add an awesome feature.
-// When views in ListView or ScrollView or some ViewGroup can
-// scroll are under actionbar, They should be seen.
-// At that time actionbar's background must be translucent,
-// statusbar too in 4.4. When no view under them, just normal.
-
public class MangaDetailActivity extends AbstractFragmentActivity
implements ActionBar.TabListener {
@@ -246,7 +240,7 @@ public class MangaDetailActivity extends AbstractFragmentActivity
Intent it = new Intent(MangaDetailActivity.this, DownloadService.class);
startService(it);
mServiceConn.getService().add(String.valueOf(mGalleryDetail.gid), mGalleryDetail.thumb,
- EhClient.getDetailUrl(mGalleryDetail.gid, mGalleryDetail.token),
+ EhClient.getDetailUrl(mGalleryDetail.gid, mGalleryDetail.token, 0, Config.getMode()),
mGalleryDetail.title);
new SuperToast(this, R.string.toast_add_download).show();
}
@@ -298,7 +292,7 @@ public class MangaDetailActivity extends AbstractFragmentActivity
((AlertButton)v).dialog.dismiss();
String comment = et.getText().toString();
((AppContext)getApplication()).getEhClient()
- .comment(EhClient.getDetailUrl(mGalleryDetail.gid, mGalleryDetail.token),
+ .comment(EhClient.getDetailUrl(mGalleryDetail.gid, mGalleryDetail.token, 0, Config.getMode()),
comment, new EhClient.OnCommentListener() {
@Override
public void onSuccess(List comments) {
diff --git a/src/com/hippo/ehviewer/ui/MangaListActivity.java b/src/com/hippo/ehviewer/ui/MangaListActivity.java
index 7ad05046c..4e6f00f01 100644
--- a/src/com/hippo/ehviewer/ui/MangaListActivity.java
+++ b/src/com/hippo/ehviewer/ui/MangaListActivity.java
@@ -71,6 +71,7 @@ import com.hippo.ehviewer.data.Data;
import com.hippo.ehviewer.data.GalleryInfo;
import com.hippo.ehviewer.data.Tag;
import com.hippo.ehviewer.ehclient.EhClient;
+import com.hippo.ehviewer.ehclient.EhInfo;
import com.hippo.ehviewer.network.Downloader;
import com.hippo.ehviewer.service.DownloadService;
import com.hippo.ehviewer.service.DownloadServiceConnection;
@@ -130,7 +131,7 @@ public class MangaListActivity extends AbstractGalleryActivity
public static final String KEY_TAG = "tag";
public static final String KEY_UPLOADER = "uploader";
- private EhClient mEhClient;
+ private EhClient mClient;
private Resources mResources;
private SlidingMenu mSlidingMenu;
@@ -193,7 +194,7 @@ public class MangaListActivity extends AbstractGalleryActivity
setUserPanel(WAIT);
String username = ((EditText) loginDialog.findViewById(R.id.username)).getText().toString();
String password = ((EditText) loginDialog.findViewById(R.id.password)).getText().toString();
- mEhClient.login(username, password, new EhClient.OnLoginListener() {
+ mClient.login(username, password, new EhClient.OnLoginListener() {
@Override
public void onSuccess() {
setUserPanel();
@@ -215,11 +216,11 @@ public class MangaListActivity extends AbstractGalleryActivity
setUserPanel();
break;
case EhClient.NO_AVATAR:
- new SuperToast(MangaListActivity.this, "无头像").show();
+ new SuperToast(MangaListActivity.this, "无头像").show(); // TODO
break;
case EhClient.GET_AVATAR_ERROR:
default:
- new SuperToast(MangaListActivity.this, "获取头像失败", SuperToast.ERROR).show();
+ new SuperToast(MangaListActivity.this, "获取头像失败", SuperToast.ERROR).show(); // TODO
break;
}
}
@@ -258,13 +259,10 @@ public class MangaListActivity extends AbstractGalleryActivity
.setPositiveButton(android.R.string.ok, new View.OnClickListener() {
@Override
public void onClick(View v) {
+ ((AlertButton)v).dialog.dismiss();
int mode = modeSpinner.getSelectedItemPosition();
- if (mode > 1) {
- new SuperToast(MangaListActivity.this, R.string.unfinished).show();
- } else {
- ((AlertButton)v).dialog.dismiss();
- Config.setMode(mode);
- }
+ Config.setMode(mode);
+ EhInfo.getInstance(MangaListActivity.this).setMode(mode);
}
}).setSimpleNegativeButton().create();
}
@@ -529,7 +527,7 @@ public class MangaListActivity extends AbstractGalleryActivity
Intent it = new Intent(MangaListActivity.this, DownloadService.class);
startService(it);
mServiceConn.getService().add(String.valueOf(gi.gid), gi.thumb,
- EhClient.getDetailUrl(gi.gid, gi.token), gi.title);
+ mClient.getDetailUrl(gi.gid, gi.token), gi.title);
new SuperToast(MangaListActivity.this, R.string.toast_add_download).show();
break;
default:
@@ -549,7 +547,9 @@ 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_summary), getCurPage() + 1, getMaxPage()));
+ // For lofi, can not get page num, so use Integer.MAX_VALUE
+ tv.setText(String.format(getString(R.string.jump_summary), getCurPage() + 1,
+ getMaxPage() == Integer.MAX_VALUE ? "未知" : String.valueOf(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);
@@ -922,7 +922,7 @@ public class MangaListActivity extends AbstractGalleryActivity
} else if (v == registerButton) {
toRegister();
} else if (v == logoutButton) {
- mEhClient.logout();
+ mClient.logout();
setUserPanel();
}
}
@@ -964,7 +964,7 @@ public class MangaListActivity extends AbstractGalleryActivity
super.onCreate(savedInstanceState);
mData = mAppContext.getData();
- mEhClient = mAppContext.getEhClient();
+ mClient = mAppContext.getEhClient();
mResources =getResources();
handleIntent(getIntent());
@@ -1190,7 +1190,7 @@ public class MangaListActivity extends AbstractGalleryActivity
Intent intent = new Intent(MangaListActivity.this,
MangaDetailActivity.class);
GalleryInfo gi = getGalleryInfo(position);
- intent.putExtra("url", EhClient.getDetailUrl(gi.gid, gi.token));
+ intent.putExtra("url", mClient.getDetailUrl(gi.gid, gi.token));
intent.putExtra(MangaDetailActivity.KEY_G_INFO, gi);
startActivity(intent);
}
@@ -1483,7 +1483,7 @@ public class MangaListActivity extends AbstractGalleryActivity
private static final int WAIT = 0x2;
private void setUserPanel() {
- if (mEhClient.isLogin())
+ if (mClient.isLogin())
setUserPanel(LOGOUT);
else
setUserPanel(LOGIN);
@@ -1493,7 +1493,7 @@ public class MangaListActivity extends AbstractGalleryActivity
switch (state) {
case LOGIN:
- avatar.setImageBitmap(mEhClient.getAvatar());
+ avatar.setImageBitmap(mClient.getAvatar());
userView.setVisibility(View.GONE);
loginButton.setVisibility(View.VISIBLE);
registerButton.setVisibility(View.VISIBLE);
@@ -1501,8 +1501,8 @@ public class MangaListActivity extends AbstractGalleryActivity
waitloginoutView.setVisibility(View.GONE);
break;
case LOGOUT:
- avatar.setImageBitmap(mEhClient.getAvatar());
- userView.setText(mEhClient.getDisplayname());
+ avatar.setImageBitmap(mClient.getAvatar());
+ userView.setText(mClient.getDisplayname());
userView.setVisibility(View.VISIBLE);
loginButton.setVisibility(View.GONE);
registerButton.setVisibility(View.GONE);
@@ -1510,7 +1510,7 @@ public class MangaListActivity extends AbstractGalleryActivity
waitloginoutView.setVisibility(View.GONE);
break;
case WAIT:
- avatar.setImageBitmap(mEhClient.getAvatar());
+ avatar.setImageBitmap(mClient.getAvatar());
userView.setVisibility(View.GONE);
loginButton.setVisibility(View.GONE);
registerButton.setVisibility(View.GONE);
@@ -1534,7 +1534,7 @@ public class MangaListActivity extends AbstractGalleryActivity
mClient.getPopular(new EhClient.OnGetPopularListener() {
@Override
public void onSuccess(List gis, long timeStamp) {
- listener.onSuccess(taskStamp, gis, gis.size(), gis.size() == 0 ? 0 : 1);
+ listener.onSuccess(taskStamp, gis, gis.size() == 0 ? 0 : 1);
// Show update time
if (timeStamp != -1 && Config.getShowPopularUpdateTime())
new SuperToast(MangaListActivity.this,
@@ -1550,8 +1550,8 @@ public class MangaListActivity extends AbstractGalleryActivity
mClient.getGList(url, null, new EhClient.OnGetGListListener() {
@Override
public void onSuccess(Object checkFlag, List lmdArray,
- int indexPerPage, int maxPage) {
- listener.onSuccess(taskStamp, lmdArray, indexPerPage, maxPage);
+ int pageNum) {
+ listener.onSuccess(taskStamp, lmdArray, pageNum);
}
@Override
public void onFailure(Object checkFlag, String eMsg) {
diff --git a/src/com/hippo/ehviewer/util/Config.java b/src/com/hippo/ehviewer/util/Config.java
index 83e227d04..98e4e622b 100644
--- a/src/com/hippo/ehviewer/util/Config.java
+++ b/src/com/hippo/ehviewer/util/Config.java
@@ -28,10 +28,7 @@ public class Config {
@SuppressWarnings("unused")
private static final String TAG = "Config";
-
private static final String KEY_UPDATE_DATE = "update_date";
- private static final String KEY_MODE = "mode";
- private static final int MODE_DEFAULT = EhClient.EX;
private static final String KEY_SCREEN_ORIENTATION = "screen_orientation";
private static final String DEFAULT_SCREEN_ORIENTATION = "0";
@@ -144,21 +141,6 @@ public class Config {
mConfigPre.edit().putString(KEY_DOWNLOAD_PATH, path).apply();
}
- public static int getMode() {
- int mode = mConfigPre.getInt(KEY_MODE, MODE_DEFAULT);
- if (mode < EhClient.G || mode > EhClient.LOFI_980x) {
- mode = MODE_DEFAULT;
- setMode(mode);
- }
- return mode;
- }
-
- public static void setMode(int mode) {
- if (mode < EhClient.G || mode > EhClient.LOFI_980x)
- mode = MODE_DEFAULT;
- mConfigPre.edit().putInt(KEY_MODE, mode).apply();
- }
-
/**
* Get cover cache size in MB
*
@@ -322,8 +304,29 @@ public class Config {
return Integer.parseInt(mConfigPre.getString(KEY_LIST_MODE, DEFAULT_LIST_MODE));
}
+ /****** For Mode an API Mode ******/
+ private static final String KEY_MODE = "mode";
+ private static final int DEFAULT_MODE = EhClient.MODE_G;
+ private static final String KEY_API_MODE = "api_mode";
+ private static final int DEFAULT_API_MODE = EhClient.MODE_G;
+
+ public static int getMode() {
+ return mConfigPre.getInt(KEY_MODE, DEFAULT_MODE);
+ }
+
+ public static void setMode(int mode) {
+ mConfigPre.edit().putInt(KEY_MODE, mode).apply();
+ }
+
+ public static int getAPIMode() {
+ return mConfigPre.getInt(KEY_API_MODE, DEFAULT_API_MODE);
+ }
+
+ public static void setAPIMode(int apiMode) {
+ mConfigPre.edit().putInt(KEY_API_MODE, apiMode).apply();
+ }
/****** For Eh Config ******/
@@ -393,5 +396,4 @@ public class Config {
public static int getPreviewPerRow() {
return Integer.parseInt(mConfigPre.getString(KEY_PREVIEW_PER_ROW, DEFAULT_PREVIEW_PER_ROW));
}
-
}
diff --git a/src/com/hippo/ehviewer/widget/RefreshTextView.java b/src/com/hippo/ehviewer/widget/RefreshTextView.java
index 403de637d..d1dd3924d 100644
--- a/src/com/hippo/ehviewer/widget/RefreshTextView.java
+++ b/src/com/hippo/ehviewer/widget/RefreshTextView.java
@@ -29,7 +29,8 @@ public class RefreshTextView extends TextView
implements View.OnClickListener{
private volatile boolean mIsRefreshing = false;
- private volatile boolean mCanRefreshing;
+ private String mDefaultTip;
+ private OnRefreshListener mDefaultListener;
private OnRefreshListener mListener;
private static final String[] REFRESHING_STRINGS = {
@@ -61,13 +62,14 @@ public class RefreshTextView extends TextView
setOnClickListener(this);
}
- public void setOnRefreshListener(OnRefreshListener listener) {
- mListener = listener;
+ public void setDefaultRefresh(String tip, OnRefreshListener listener) {
+ mDefaultTip = tip;
+ mDefaultListener = listener;
}
@Override
public void onClick(View v) {
- if (!mIsRefreshing && mCanRefreshing && mListener != null)
+ if (!mIsRefreshing && mListener != null)
mListener.onRefresh();
}
@@ -88,17 +90,35 @@ public class RefreshTextView extends TextView
}
public void setEmesg(CharSequence emseg, boolean canRefresh) {
+ if (canRefresh)
+ setEmesg(emseg, mDefaultTip, mDefaultListener);
+ else
+ setEmesg(emseg, null, null);
+ }
+
+ public void setEmesg(CharSequence emseg, String tip,
+ OnRefreshListener listener) {
mIsRefreshing = false;
- mCanRefreshing = canRefresh;
+ boolean canRefresh = listener == null ? false : true;
StringBuilder sb = new StringBuilder("==█ \n(>π<)\n\n");
sb.append(emseg);
- if (mCanRefreshing)
- sb.append("点击重试"); // TODO;
+ if (canRefresh) {
+ sb.append("\n\n").append(tip);
+ mListener = listener;
+ } else {
+ mListener = null;
+ }
setText(sb.toString());
}
+ /**
+ * The thread to control refreshing animate
+ *
+ * @author Hippo
+ *
+ */
private class RefreshingThread extends Thread {
int mIndex;
@Override
|