Make scene safer
This commit is contained in:
1 parent
d345512caa
commit
cdaf2b80b6
24 files changed
+754
-391
No files matched your search
@@ -17,10 +17,12 @@
|
||||
package com.hippo.ehviewer;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.ActivityNotFoundException;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.content.pm.ResolveInfo;
|
||||
import android.net.Uri;
|
||||
import android.provider.Browser;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.customtabs.CustomTabsIntent;
|
||||
import android.text.TextUtils;
|
||||
import android.widget.Toast;
|
||||
@@ -36,7 +38,7 @@ public final class UrlOpener {
|
||||
private UrlOpener() {
|
||||
}
|
||||
|
||||
public static void openUrl(Activity activity, String url, boolean ehUrl, boolean customTabs) {
|
||||
public static void openUrl(@NonNull Context context, String url, boolean ehUrl, boolean customTabs) {
|
||||
if (TextUtils.isEmpty(url)) {
|
||||
return;
|
||||
}
|
||||
@@ -47,17 +49,19 @@ public final class UrlOpener {
|
||||
if (ehUrl) {
|
||||
Announcer announcer = EhUrlOpener.parseUrl(url);
|
||||
if (null != announcer) {
|
||||
intent = new Intent(activity, MainActivity.class);
|
||||
intent = new Intent(context, MainActivity.class);
|
||||
intent.setAction(StageActivity.ACTION_START_SCENE);
|
||||
intent.putExtra(StageActivity.KEY_SCENE_NAME, announcer.getClazz().getName());
|
||||
intent.putExtra(StageActivity.KEY_SCENE_ARGS, announcer.getArgs());
|
||||
activity.startActivity(intent);
|
||||
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
context.startActivity(intent);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// CustomTabs
|
||||
if (customTabs) {
|
||||
if (customTabs && context instanceof Activity) {
|
||||
Activity activity = (Activity) context;
|
||||
String packageName = CustomTabsHelper.getPackageNameToUseFixed(activity);
|
||||
if (packageName != null) {
|
||||
new CustomTabsIntent.Builder()
|
||||
@@ -70,15 +74,12 @@ public final class UrlOpener {
|
||||
}
|
||||
|
||||
// Intent.ACTION_VIEW
|
||||
intent = new Intent(Intent.ACTION_VIEW);
|
||||
intent.setData(uri);
|
||||
PackageManager pm = activity.getPackageManager();
|
||||
ResolveInfo ri = pm.resolveActivity(intent, 0);
|
||||
if (ri != null) {
|
||||
activity.startActivity(intent);
|
||||
return;
|
||||
intent = new Intent(Intent.ACTION_VIEW, uri);
|
||||
intent.putExtra(Browser.EXTRA_APPLICATION_ID, context.getPackageName());
|
||||
try {
|
||||
context.startActivity(intent);
|
||||
} catch (ActivityNotFoundException e) {
|
||||
Toast.makeText(context, R.string.error_cant_find_activity, Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
|
||||
Toast.makeText(activity, R.string.error_cant_find_activity, Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
}
|
||||
@@ -217,6 +217,7 @@ public final class CommonOperations {
|
||||
client.execute(request);
|
||||
}
|
||||
|
||||
// TODO Add context if activity and context are different style
|
||||
public static void startDownload(final MainActivity activity, final GalleryInfo galleryInfo, boolean forceDefault) {
|
||||
final DownloadManager dm = EhApplication.getDownloadManager(activity);
|
||||
|
||||
|
||||
@@ -339,7 +339,7 @@ public final class MainActivity extends StageActivity
|
||||
BaseScene baseScene = (BaseScene) scene;
|
||||
mRightDrawer.removeAllViews();
|
||||
View drawerView = baseScene.onCreateDrawerView(
|
||||
getLayoutInflater(), mRightDrawer, savedInstanceState);
|
||||
baseScene.getLayoutInflater2(), mRightDrawer, savedInstanceState);
|
||||
if (drawerView != null) {
|
||||
mRightDrawer.addView(drawerView);
|
||||
mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED, Gravity.RIGHT);
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
|
||||
package com.hippo.ehviewer.ui.scene;
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.Bundle;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.view.LayoutInflater;
|
||||
@@ -58,7 +59,7 @@ public class AnalyticsScene extends BaseScene implements View.OnClickListener {
|
||||
TextView text = (TextView) ViewUtils.$$(view, R.id.text);
|
||||
|
||||
text.setText(Html.fromHtml(getString(R.string.analytics_explain)));
|
||||
text.setMovementMethod(new LinkMovementMethod2(getActivity()));
|
||||
text.setMovementMethod(LinkMovementMethod2.getInstance());
|
||||
|
||||
mCancel.setOnClickListener(this);
|
||||
mOk.setOnClickListener(this);
|
||||
@@ -79,18 +80,25 @@ public class AnalyticsScene extends BaseScene implements View.OnClickListener {
|
||||
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
Context context = getContext2();
|
||||
if (null == context) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (mCancel == v) {
|
||||
Settings.putEnableAnalytics(false);
|
||||
} else if (mOk == v) {
|
||||
Settings.putEnableAnalytics(true);
|
||||
// Start Analytics
|
||||
Analytics.start(getContext());
|
||||
Analytics.start(context);
|
||||
}
|
||||
Settings.putAskAnalytics(false);
|
||||
|
||||
// Start new scene and finish it self
|
||||
((MainActivity) getActivity()).startSceneForCheckStep(
|
||||
MainActivity.CHECK_STEP_ANALYTICS, getArguments());
|
||||
MainActivity activity = getActivity2();
|
||||
if (null != activity) {
|
||||
activity.startSceneForCheckStep(MainActivity.CHECK_STEP_ANALYTICS, getArguments());
|
||||
}
|
||||
finish();
|
||||
}
|
||||
}
|
||||
@@ -16,6 +16,8 @@
|
||||
|
||||
package com.hippo.ehviewer.ui.scene;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.res.Resources;
|
||||
import android.os.Bundle;
|
||||
import android.support.annotation.IdRes;
|
||||
import android.support.annotation.Nullable;
|
||||
@@ -151,14 +153,52 @@ public abstract class BaseScene extends SceneFragment {
|
||||
return mViewCreated;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onActivityCreated(Bundle savedInstanceState) {
|
||||
super.onActivityCreated(savedInstanceState);
|
||||
if (savedInstanceState != null) {
|
||||
onRestoreInstanceState(savedInstanceState);
|
||||
@Nullable
|
||||
public Context getContext2() {
|
||||
return super.getContext();
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public Resources getResources2() {
|
||||
Context context = getContext2();
|
||||
if (null != context) {
|
||||
return context.getResources();
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
protected void onRestoreInstanceState(Bundle savedInstanceState) {
|
||||
@Nullable
|
||||
public MainActivity getActivity2() {
|
||||
FragmentActivity activity = getActivity();
|
||||
if (activity instanceof MainActivity) {
|
||||
return (MainActivity) activity;
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public LayoutInflater getLayoutInflater2() {
|
||||
FragmentActivity activity = getActivity();
|
||||
if (null != activity) {
|
||||
return activity.getLayoutInflater();
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public void hideSoftInput() {
|
||||
FragmentActivity activity = getActivity();
|
||||
if (null != activity) {
|
||||
ActivityHelper.hideSoftInput(activity);
|
||||
}
|
||||
}
|
||||
|
||||
public void showSoftInput(@Nullable View view) {
|
||||
FragmentActivity activity = getActivity();
|
||||
if (null != activity && null != view) {
|
||||
ActivityHelper.showSoftInput(activity, view);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -36,7 +36,6 @@ import com.hippo.ehviewer.client.EhCookieStore;
|
||||
import com.hippo.ehviewer.client.EhUrl;
|
||||
import com.hippo.ehviewer.client.EhUtils;
|
||||
import com.hippo.rippleold.RippleSalon;
|
||||
import com.hippo.util.ActivityHelper;
|
||||
import com.hippo.yorozuya.AssertUtils;
|
||||
import com.hippo.yorozuya.ViewUtils;
|
||||
|
||||
@@ -90,7 +89,7 @@ public class CookieSignInScene extends BaseScene implements EditText.OnEditorAct
|
||||
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
|
||||
super.onViewCreated(view, savedInstanceState);
|
||||
|
||||
ActivityHelper.showSoftInput(getActivity(), mIpbMemberId);
|
||||
showSoftInput(mIpbMemberId);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -144,7 +143,8 @@ public class CookieSignInScene extends BaseScene implements EditText.OnEditorAct
|
||||
}
|
||||
|
||||
public void enter() {
|
||||
if (null == mIpbMemberIdLayout || null == mIpbPassHashLayout ||
|
||||
Context context = getContext2();
|
||||
if (null == context || null == mIpbMemberIdLayout || null == mIpbPassHashLayout ||
|
||||
null == mIpbMemberId || null == mIpbPassHash) {
|
||||
return;
|
||||
}
|
||||
@@ -165,10 +165,10 @@ public class CookieSignInScene extends BaseScene implements EditText.OnEditorAct
|
||||
mIpbPassHashLayout.setError(null);
|
||||
}
|
||||
|
||||
ActivityHelper.hideSoftInput(getActivity());
|
||||
hideSoftInput();
|
||||
|
||||
if (!checkIpbMemberId(ipbMemberId) || !(checkIpbPassHash(ipbPassHash))) {
|
||||
new AlertDialog.Builder(getContext()).setTitle(R.string.waring)
|
||||
new AlertDialog.Builder(context).setTitle(R.string.waring)
|
||||
.setMessage(R.string.wrong_cookie_warning)
|
||||
.setNegativeButton(R.string.i_dont_think_so, null)
|
||||
.setPositiveButton(R.string.i_will_check_it, new DialogInterface.OnClickListener() {
|
||||
@@ -192,12 +192,12 @@ public class CookieSignInScene extends BaseScene implements EditText.OnEditorAct
|
||||
}
|
||||
|
||||
private void storeCookie(String id, String hash) {
|
||||
Context context = getContext();
|
||||
Context context = getContext2();
|
||||
if (null == context) {
|
||||
return;
|
||||
}
|
||||
|
||||
EhUtils.signOut(getContext());
|
||||
EhUtils.signOut(context);
|
||||
|
||||
EhCookieStore store = EhApplication.getEhCookieStore(context);
|
||||
store.add(newCookie(EhCookieStore.KEY_IPD_MEMBER_ID, id, EhUrl.DOMAIN_E));
|
||||
|
||||
@@ -78,15 +78,18 @@ public class CrashScene extends BaseScene implements View.OnClickListener {
|
||||
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
if (mSend == v && null != mCrash) {
|
||||
ActivityHelper.sendEmail(getActivity(), EhApplication.getDeveloperEmail(),
|
||||
MainActivity activity = getActivity2();
|
||||
|
||||
if (mSend == v && null != mCrash && null != activity) {
|
||||
ActivityHelper.sendEmail(activity, EhApplication.getDeveloperEmail(),
|
||||
"I found a bug in EhViewer !", mCrash);
|
||||
}
|
||||
Crash.resetCrashFile();
|
||||
|
||||
// Start new scene and finish it self
|
||||
((MainActivity) getActivity()).startSceneForCheckStep(
|
||||
MainActivity.CHECK_STEP_CRASH, getArguments());
|
||||
if (null != activity) {
|
||||
activity.startSceneForCheckStep(MainActivity.CHECK_STEP_CRASH, getArguments());
|
||||
}
|
||||
finish();
|
||||
}
|
||||
}
|
||||
@@ -16,6 +16,7 @@
|
||||
|
||||
package com.hippo.ehviewer.ui.scene;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.graphics.drawable.NinePatchDrawable;
|
||||
@@ -52,6 +53,7 @@ import com.hippo.ehviewer.R;
|
||||
import com.hippo.ehviewer.dao.DownloadLabel;
|
||||
import com.hippo.util.DrawableManager;
|
||||
import com.hippo.view.ViewTransition;
|
||||
import com.hippo.yorozuya.AssertUtils;
|
||||
import com.hippo.yorozuya.ViewUtils;
|
||||
|
||||
import java.util.List;
|
||||
@@ -77,7 +79,7 @@ public class DownloadLabelsScene extends ToolbarScene {
|
||||
@Override
|
||||
public void onCreate(@Nullable Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
mList = EhApplication.getDownloadManager(getContext()).getLabelList();
|
||||
mList = EhApplication.getDownloadManager(getContext2()).getLabelList();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -97,7 +99,9 @@ public class DownloadLabelsScene extends ToolbarScene {
|
||||
TextView tip = (TextView) ViewUtils.$$(view, R.id.tip);
|
||||
mViewTransition = new ViewTransition(mRecyclerView, tip);
|
||||
|
||||
Drawable drawable = DrawableManager.getDrawable(getContext(), R.drawable.big_label);
|
||||
Context context = getContext2();
|
||||
AssertUtils.assertNotNull(context);
|
||||
Drawable drawable = DrawableManager.getDrawable(context, R.drawable.big_label);
|
||||
drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
|
||||
tip.setCompoundDrawables(null, drawable, null, null);
|
||||
tip.setText(R.string.no_download_label);
|
||||
@@ -109,7 +113,7 @@ public class DownloadLabelsScene extends ToolbarScene {
|
||||
// drag & drop manager
|
||||
RecyclerViewDragDropManager dragDropManager = new RecyclerViewDragDropManager();
|
||||
dragDropManager.setDraggingItemShadowDrawable(
|
||||
(NinePatchDrawable) getResources().getDrawable(R.drawable.shadow_8dp));
|
||||
(NinePatchDrawable) context.getResources().getDrawable(R.drawable.shadow_8dp));
|
||||
// swipe manager
|
||||
RecyclerViewSwipeManager swipeManager = new RecyclerViewSwipeManager();
|
||||
RecyclerView.Adapter adapter = new LabelAdapter();
|
||||
@@ -120,7 +124,7 @@ public class DownloadLabelsScene extends ToolbarScene {
|
||||
final GeneralItemAnimator animator = new SwipeDismissItemAnimator();
|
||||
animator.setSupportsChangeAnimations(false);
|
||||
mRecyclerView.hasFixedSize();
|
||||
mRecyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
|
||||
mRecyclerView.setLayoutManager(new LinearLayoutManager(context));
|
||||
mRecyclerView.setAdapter(adapter);
|
||||
mRecyclerView.setItemAnimator(animator);
|
||||
guardManager.attachRecyclerView(mRecyclerView);
|
||||
@@ -160,10 +164,15 @@ public class DownloadLabelsScene extends ToolbarScene {
|
||||
|
||||
@Override
|
||||
public boolean onMenuItemClick(MenuItem item) {
|
||||
Context context = getContext2();
|
||||
if (null == context) {
|
||||
return false;
|
||||
}
|
||||
|
||||
int id = item.getItemId();
|
||||
switch (id) {
|
||||
case R.id.action_add: {
|
||||
EditTextDialogBuilder builder = new EditTextDialogBuilder(getContext(), null, getString(R.string.download_labels));
|
||||
EditTextDialogBuilder builder = new EditTextDialogBuilder(context, null, getString(R.string.download_labels));
|
||||
builder.setTitle(R.string.new_label_title);
|
||||
builder.setPositiveButton(android.R.string.ok, null);
|
||||
AlertDialog dialog = builder.show();
|
||||
@@ -199,17 +208,22 @@ public class DownloadLabelsScene extends ToolbarScene {
|
||||
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
Context context = getContext2();
|
||||
if (null == context) {
|
||||
return;
|
||||
}
|
||||
|
||||
String text = mBuilder.getText();
|
||||
if (TextUtils.isEmpty(text)) {
|
||||
mBuilder.setError(getString(R.string.label_text_is_empty));
|
||||
} else if (getString(R.string.default_download_label_name).equals(text)) {
|
||||
mBuilder.setError(getString(R.string.label_text_is_invalid));
|
||||
} else if (EhApplication.getDownloadManager(getContext()).containLabel(text)) {
|
||||
} else if (EhApplication.getDownloadManager(context).containLabel(text)) {
|
||||
mBuilder.setError(getString(R.string.label_text_exist));
|
||||
} else {
|
||||
mBuilder.setError(null);
|
||||
mDialog.dismiss();
|
||||
EhApplication.getDownloadManager(getContext()).addLabel(text);
|
||||
EhApplication.getDownloadManager(context).addLabel(text);
|
||||
if (mAdapter != null && mList != null) {
|
||||
mAdapter.notifyItemInserted(mList.size() - 1);
|
||||
}
|
||||
@@ -245,17 +259,22 @@ public class DownloadLabelsScene extends ToolbarScene {
|
||||
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
Context context = getContext2();
|
||||
if (null == context) {
|
||||
return;
|
||||
}
|
||||
|
||||
String text = mBuilder.getText();
|
||||
if (TextUtils.isEmpty(text)) {
|
||||
mBuilder.setError(getString(R.string.label_text_is_empty));
|
||||
} else if (getString(R.string.default_download_label_name).equals(text)) {
|
||||
mBuilder.setError(getString(R.string.label_text_is_invalid));
|
||||
} else if (EhApplication.getDownloadManager(getContext()).containLabel(text)) {
|
||||
} else if (EhApplication.getDownloadManager(context).containLabel(text)) {
|
||||
mBuilder.setError(getString(R.string.label_text_exist));
|
||||
} else {
|
||||
mBuilder.setError(null);
|
||||
mDialog.dismiss();
|
||||
EhApplication.getDownloadManager(getContext()).renameLabel(mOriginalLabel, text);
|
||||
EhApplication.getDownloadManager(context).renameLabel(mOriginalLabel, text);
|
||||
if (mAdapter != null) {
|
||||
mAdapter.notifyItemChanged(mPosition);
|
||||
}
|
||||
@@ -282,7 +301,8 @@ public class DownloadLabelsScene extends ToolbarScene {
|
||||
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
if (mList == null || mRecyclerView == null) {
|
||||
Context context = getContext2();
|
||||
if (null == context || null == mList || null == mRecyclerView) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -294,7 +314,7 @@ public class DownloadLabelsScene extends ToolbarScene {
|
||||
if (label == v) {
|
||||
DownloadLabel raw = mList.get(index);
|
||||
EditTextDialogBuilder builder = new EditTextDialogBuilder(
|
||||
getContext(), raw.getLabel(), getString(R.string.download_labels));
|
||||
context, raw.getLabel(), getString(R.string.download_labels));
|
||||
builder.setTitle(R.string.rename_label_title);
|
||||
builder.setPositiveButton(android.R.string.ok, null);
|
||||
AlertDialog dialog = builder.show();
|
||||
@@ -312,10 +332,16 @@ public class DownloadLabelsScene extends ToolbarScene {
|
||||
implements DraggableItemAdapter<LabelHolder>,
|
||||
SwipeableItemAdapter<LabelHolder> {
|
||||
|
||||
private final LayoutInflater mInflater;
|
||||
|
||||
public LabelAdapter() {
|
||||
mInflater = getLayoutInflater2();
|
||||
AssertUtils.assertNotNull(mInflater);
|
||||
}
|
||||
|
||||
@Override
|
||||
public LabelHolder onCreateViewHolder(ViewGroup parent, int viewType) {
|
||||
return new LabelHolder(getActivity().getLayoutInflater()
|
||||
.inflate(R.layout.item_label_list, parent, false));
|
||||
return new LabelHolder(mInflater.inflate(R.layout.item_label_list, parent, false));
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -348,11 +374,12 @@ public class DownloadLabelsScene extends ToolbarScene {
|
||||
|
||||
@Override
|
||||
public void onMoveItem(int fromPosition, int toPosition) {
|
||||
if (fromPosition == toPosition) {
|
||||
Context context = getContext2();
|
||||
if (null == context || fromPosition == toPosition) {
|
||||
return;
|
||||
}
|
||||
|
||||
EhApplication.getDownloadManager(getContext()).moveLabel(fromPosition, toPosition);
|
||||
EhApplication.getDownloadManager(context).moveLabel(fromPosition, toPosition);
|
||||
if (mAdapter != null && mList != null) {
|
||||
notifyItemMoved(fromPosition, toPosition);
|
||||
}
|
||||
@@ -397,19 +424,20 @@ public class DownloadLabelsScene extends ToolbarScene {
|
||||
protected void onPerformAction() {
|
||||
super.onPerformAction();
|
||||
|
||||
final Context context = getContext2();
|
||||
final List<DownloadLabel> list = mList;
|
||||
if (list == null || mPosition < 0 || mPosition >= list.size()) {
|
||||
if (null == context || null == list || mPosition < 0 || mPosition >= list.size()) {
|
||||
return;
|
||||
}
|
||||
final DownloadLabel label = list.get(mPosition);
|
||||
|
||||
new AlertDialog.Builder(getContext())
|
||||
new AlertDialog.Builder(context)
|
||||
.setTitle(R.string.delete_label_title)
|
||||
.setMessage(getString(R.string.delete_label_message, label.getLabel()))
|
||||
.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
EhApplication.getDownloadManager(getContext()).deleteLabel(label.getLabel());
|
||||
EhApplication.getDownloadManager(context).deleteLabel(label.getLabel());
|
||||
}
|
||||
})
|
||||
.setOnDismissListener(new DialogInterface.OnDismissListener() {
|
||||
|
||||
@@ -18,8 +18,11 @@ package com.hippo.ehviewer.ui.scene;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.annotation.TargetApi;
|
||||
import android.app.Activity;
|
||||
import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
import android.content.res.Resources;
|
||||
import android.graphics.Point;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.os.AsyncTask;
|
||||
@@ -34,6 +37,7 @@ import android.support.v7.widget.LinearLayoutManager;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.support.v7.widget.SimpleItemAnimator;
|
||||
import android.support.v7.widget.Toolbar;
|
||||
import android.util.Log;
|
||||
import android.util.SparseBooleanArray;
|
||||
import android.view.Display;
|
||||
import android.view.Gravity;
|
||||
@@ -68,6 +72,7 @@ import com.hippo.ehviewer.download.DownloadManager;
|
||||
import com.hippo.ehviewer.download.DownloadService;
|
||||
import com.hippo.ehviewer.spider.SpiderDen;
|
||||
import com.hippo.ehviewer.ui.GalleryActivity;
|
||||
import com.hippo.ehviewer.ui.MainActivity;
|
||||
import com.hippo.ehviewer.widget.SimpleRatingView;
|
||||
import com.hippo.rippleold.RippleSalon;
|
||||
import com.hippo.scene.Announcer;
|
||||
@@ -77,6 +82,7 @@ import com.hippo.util.DrawableManager;
|
||||
import com.hippo.view.ViewTransition;
|
||||
import com.hippo.widget.FabLayout;
|
||||
import com.hippo.widget.LoadImageView;
|
||||
import com.hippo.yorozuya.AssertUtils;
|
||||
import com.hippo.yorozuya.FileUtils;
|
||||
import com.hippo.yorozuya.LongList;
|
||||
import com.hippo.yorozuya.ObjectUtils;
|
||||
@@ -94,6 +100,8 @@ public class DownloadsScene extends ToolbarScene
|
||||
EasyRecyclerView.OnItemLongClickListener,
|
||||
FabLayout.OnClickFabListener, FastScroller.OnDragHandlerListener {
|
||||
|
||||
private static final String TAG = DownloadsScene.class.getSimpleName();
|
||||
|
||||
public static final String KEY_ACTION = "action";
|
||||
private static final String KEY_LABEL = "label";
|
||||
|
||||
@@ -145,7 +153,9 @@ public class DownloadsScene extends ToolbarScene
|
||||
|
||||
handleArguments(getArguments());
|
||||
|
||||
mDownloadManager = EhApplication.getDownloadManager(getContext());
|
||||
Context context = getContext2();
|
||||
AssertUtils.assertNotNull(context);
|
||||
mDownloadManager = EhApplication.getDownloadManager(context);
|
||||
mDownloadManager.addDownloadInfoListener(this);
|
||||
|
||||
if (savedInstanceState == null) {
|
||||
@@ -162,11 +172,19 @@ public class DownloadsScene extends ToolbarScene
|
||||
|
||||
DownloadManager manager = mDownloadManager;
|
||||
if (null == manager) {
|
||||
manager = EhApplication.getDownloadManager(getContext());
|
||||
Context context = getContext2();
|
||||
if (null != context) {
|
||||
manager = EhApplication.getDownloadManager(context);
|
||||
}
|
||||
} else {
|
||||
mDownloadManager = null;
|
||||
}
|
||||
manager.removeDownloadInfoListener(this);
|
||||
|
||||
if (null != manager) {
|
||||
manager.removeDownloadInfoListener(this);
|
||||
} else {
|
||||
Log.e(TAG, "Can't removeDownloadInfoListener");
|
||||
}
|
||||
}
|
||||
|
||||
private void updateForLabel() {
|
||||
@@ -226,14 +244,17 @@ public class DownloadsScene extends ToolbarScene
|
||||
TextView tip = (TextView) ViewUtils.$$(view, R.id.tip);
|
||||
mViewTransition = new ViewTransition(content, tip);
|
||||
|
||||
Drawable drawable = DrawableManager.getDrawable(getContext(), R.drawable.big_download);
|
||||
Context context = getContext2();
|
||||
AssertUtils.assertNotNull(content);
|
||||
|
||||
Drawable drawable = DrawableManager.getDrawable(context, R.drawable.big_download);
|
||||
drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
|
||||
tip.setCompoundDrawables(null, drawable, null, null);
|
||||
|
||||
mAdapter = new DownloadAdapter();
|
||||
mAdapter.setHasStableIds(true);
|
||||
mRecyclerView.setAdapter(mAdapter);
|
||||
mLayoutManager = new LinearLayoutManager(getContext());
|
||||
mLayoutManager = new LinearLayoutManager(context);
|
||||
mRecyclerView.setLayoutManager(mLayoutManager);
|
||||
mRecyclerView.setSelector(RippleSalon.generateRippleDrawable(false));
|
||||
mRecyclerView.setDrawSelectorOnTop(true);
|
||||
@@ -248,13 +269,13 @@ public class DownloadsScene extends ToolbarScene
|
||||
if (itemAnimator instanceof SimpleItemAnimator) {
|
||||
((SimpleItemAnimator) itemAnimator).setSupportsChangeAnimations(false);
|
||||
}
|
||||
int paddingH = getResources().getDimensionPixelOffset(R.dimen.list_content_margin_h);
|
||||
int paddingV = getResources().getDimensionPixelOffset(R.dimen.list_content_margin_v);
|
||||
int paddingH = context.getResources().getDimensionPixelOffset(R.dimen.list_content_margin_h);
|
||||
int paddingV = context.getResources().getDimensionPixelOffset(R.dimen.list_content_margin_v);
|
||||
mRecyclerView.setPadding(paddingV, paddingH, paddingV, paddingH);
|
||||
|
||||
fastScroller.attachToRecyclerView(mRecyclerView);
|
||||
HandlerDrawable handlerDrawable = new HandlerDrawable();
|
||||
handlerDrawable.setColor(ResourcesUtils.getAttrColor(getContext(), R.attr.colorAccent));
|
||||
handlerDrawable.setColor(ResourcesUtils.getAttrColor(context, R.attr.colorAccent));
|
||||
fastScroller.setHandlerDrawable(handlerDrawable);
|
||||
fastScroller.setOnDragHandlerListener(this);
|
||||
|
||||
@@ -284,7 +305,8 @@ public class DownloadsScene extends ToolbarScene
|
||||
}
|
||||
|
||||
private void guideDownloadThumb() {
|
||||
if (!Settings.getGuideDownloadThumb() || null == mLayoutManager || null == mRecyclerView) {
|
||||
MainActivity activity = getActivity2();
|
||||
if (null == activity || !Settings.getGuideDownloadThumb() || null == mLayoutManager || null == mRecyclerView) {
|
||||
guideDownloadLabels();
|
||||
return;
|
||||
}
|
||||
@@ -299,7 +321,7 @@ public class DownloadsScene extends ToolbarScene
|
||||
return;
|
||||
}
|
||||
|
||||
new ShowcaseView.Builder(getActivity())
|
||||
new ShowcaseView.Builder(activity)
|
||||
.withMaterialShowcase()
|
||||
.setStyle(R.style.Guide)
|
||||
.setTarget(new ViewTarget(((DownloadHolder) holder).thumb))
|
||||
@@ -318,15 +340,16 @@ public class DownloadsScene extends ToolbarScene
|
||||
}
|
||||
|
||||
private void guideDownloadLabels() {
|
||||
if (!Settings.getGuideDownloadLabels()) {
|
||||
MainActivity activity = getActivity2();
|
||||
if (null == activity || !Settings.getGuideDownloadLabels()) {
|
||||
return;
|
||||
}
|
||||
|
||||
Display display = getActivity().getWindowManager().getDefaultDisplay();
|
||||
Display display = activity.getWindowManager().getDefaultDisplay();
|
||||
Point point = new Point();
|
||||
display.getSize(point);
|
||||
|
||||
new ShowcaseView.Builder(getActivity())
|
||||
new ShowcaseView.Builder(activity)
|
||||
.withMaterialShowcase()
|
||||
.setStyle(R.style.Guide)
|
||||
.setTarget(new PointTarget(point.x, point.y / 3))
|
||||
@@ -375,16 +398,17 @@ public class DownloadsScene extends ToolbarScene
|
||||
@Override
|
||||
public boolean onMenuItemClick(MenuItem item) {
|
||||
// Skip when in choice mode
|
||||
if (mRecyclerView == null || mRecyclerView.isInCustomChoice()) {
|
||||
Activity activity = getActivity2();
|
||||
if (null == activity || null == mRecyclerView || mRecyclerView.isInCustomChoice()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
int id = item.getItemId();
|
||||
switch (id) {
|
||||
case R.id.action_start_all: {
|
||||
Intent intent = new Intent(getActivity(), DownloadService.class);
|
||||
Intent intent = new Intent(activity, DownloadService.class);
|
||||
intent.setAction(DownloadService.ACTION_START_ALL);
|
||||
getActivity().startService(intent);
|
||||
activity.startService(intent);
|
||||
return true;
|
||||
}
|
||||
case R.id.action_stop_all: {
|
||||
@@ -412,6 +436,9 @@ public class DownloadsScene extends ToolbarScene
|
||||
@Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
|
||||
View view = inflater.inflate(R.layout.drawer_list, container, false);
|
||||
|
||||
final Context context = getContext2();
|
||||
AssertUtils.assertNotNull(context);
|
||||
|
||||
Toolbar toolbar = (Toolbar) view.findViewById(R.id.toolbar);
|
||||
toolbar.setTitle(R.string.download_labels);
|
||||
toolbar.inflateMenu(R.menu.drawer_download);
|
||||
@@ -436,7 +463,7 @@ public class DownloadsScene extends ToolbarScene
|
||||
for (int i = 0, n = list.size(); i < n; i++) {
|
||||
items[i + 2] = list.get(i).getLabel();
|
||||
}
|
||||
new AlertDialog.Builder(getContext())
|
||||
new AlertDialog.Builder(context)
|
||||
.setTitle(R.string.default_download_label)
|
||||
.setItems(items, new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
@@ -461,7 +488,7 @@ public class DownloadsScene extends ToolbarScene
|
||||
}
|
||||
});
|
||||
|
||||
List<DownloadLabel> list = EhApplication.getDownloadManager(getContext()).getLabelList();
|
||||
List<DownloadLabel> list = EhApplication.getDownloadManager(context).getLabelList();
|
||||
final List<String> labels = new ArrayList<>(list.size() + 1);
|
||||
// Add default label name
|
||||
labels.add(getString(R.string.default_download_label_name));
|
||||
@@ -471,7 +498,7 @@ public class DownloadsScene extends ToolbarScene
|
||||
|
||||
// TODO handle download label items update
|
||||
ListView listView = (ListView) view.findViewById(R.id.list_view);
|
||||
listView.setAdapter(new ArrayAdapter<>(getContext(), R.layout.item_simple_list, labels));
|
||||
listView.setAdapter(new ArrayAdapter<>(context, R.layout.item_simple_list, labels));
|
||||
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
|
||||
@Override
|
||||
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
|
||||
@@ -518,8 +545,9 @@ public class DownloadsScene extends ToolbarScene
|
||||
|
||||
@Override
|
||||
public boolean onItemClick(EasyRecyclerView parent, View view, int position, long id) {
|
||||
Activity activity = getActivity2();
|
||||
EasyRecyclerView recyclerView = mRecyclerView;
|
||||
if (recyclerView == null) {
|
||||
if (null == activity || null == recyclerView) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -535,7 +563,7 @@ public class DownloadsScene extends ToolbarScene
|
||||
return false;
|
||||
}
|
||||
|
||||
Intent intent = new Intent(getActivity(), GalleryActivity.class);
|
||||
Intent intent = new Intent(activity, GalleryActivity.class);
|
||||
intent.setAction(GalleryActivity.ACTION_EH);
|
||||
intent.putExtra(GalleryActivity.KEY_GALLERY_INFO, list.get(position));
|
||||
startActivity(intent);
|
||||
@@ -567,8 +595,10 @@ public class DownloadsScene extends ToolbarScene
|
||||
|
||||
@Override
|
||||
public void onClickSecondaryFab(FabLayout view, FloatingActionButton fab, int position) {
|
||||
Context context = getContext2();
|
||||
Activity activity = getActivity2();
|
||||
EasyRecyclerView recyclerView = mRecyclerView;
|
||||
if (recyclerView == null) {
|
||||
if (null == context || null == activity || null == recyclerView) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -606,10 +636,10 @@ public class DownloadsScene extends ToolbarScene
|
||||
|
||||
switch (position) {
|
||||
case 1: { // Start
|
||||
Intent intent = new Intent(getActivity(), DownloadService.class);
|
||||
Intent intent = new Intent(activity, DownloadService.class);
|
||||
intent.setAction(DownloadService.ACTION_START_RANGE);
|
||||
intent.putExtra(DownloadService.KEY_GID_LIST, gidList);
|
||||
getActivity().startService(intent);
|
||||
activity.startService(intent);
|
||||
// Cancel check mode
|
||||
recyclerView.outOfCustomChoiceMode();
|
||||
break;
|
||||
@@ -623,7 +653,7 @@ public class DownloadsScene extends ToolbarScene
|
||||
break;
|
||||
}
|
||||
case 3: { // Delete
|
||||
CheckBoxDialogBuilder builder = new CheckBoxDialogBuilder(getContext(),
|
||||
CheckBoxDialogBuilder builder = new CheckBoxDialogBuilder(context,
|
||||
getString(R.string.download_remove_dialog_message_2, gidList.size()),
|
||||
getString(R.string.download_remove_dialog_check_text),
|
||||
Settings.getRemoveImageFiles());
|
||||
@@ -635,7 +665,7 @@ public class DownloadsScene extends ToolbarScene
|
||||
break;
|
||||
}
|
||||
case 4: {// Move
|
||||
List<DownloadLabel> labelRawList = EhApplication.getDownloadManager(getContext()).getLabelList();
|
||||
List<DownloadLabel> labelRawList = EhApplication.getDownloadManager(context).getLabelList();
|
||||
List<String> labelList = new ArrayList<>(labelRawList.size() + 1);
|
||||
labelList.add(getString(R.string.default_download_label_name));
|
||||
for (int i = 0, n = labelRawList.size(); i < n; i++) {
|
||||
@@ -645,7 +675,7 @@ public class DownloadsScene extends ToolbarScene
|
||||
|
||||
MoveDialogHelper helper = new MoveDialogHelper(labels, downloadInfoList);
|
||||
|
||||
new AlertDialog.Builder(getContext())
|
||||
new AlertDialog.Builder(context)
|
||||
.setTitle(R.string.download_move_dialog_title)
|
||||
.setItems(labels, helper)
|
||||
.show();
|
||||
@@ -728,12 +758,17 @@ public class DownloadsScene extends ToolbarScene
|
||||
}
|
||||
|
||||
private void bindForState(DownloadHolder holder, DownloadInfo info) {
|
||||
Resources resources = getResources2();
|
||||
if (null == resources) {
|
||||
return;
|
||||
}
|
||||
|
||||
switch (info.state) {
|
||||
case DownloadInfo.STATE_NONE:
|
||||
bindState(holder, info, getContext().getString(R.string.download_state_none));
|
||||
bindState(holder, info, resources.getString(R.string.download_state_none));
|
||||
break;
|
||||
case DownloadInfo.STATE_WAIT:
|
||||
bindState(holder, info, getContext().getString(R.string.download_state_wait));
|
||||
bindState(holder, info, resources.getString(R.string.download_state_wait));
|
||||
break;
|
||||
case DownloadInfo.STATE_DOWNLOAD:
|
||||
bindProgress(holder, info);
|
||||
@@ -741,14 +776,14 @@ public class DownloadsScene extends ToolbarScene
|
||||
case DownloadInfo.STATE_FAILED:
|
||||
String text;
|
||||
if (info.legacy <= 0) {
|
||||
text = getContext().getString(R.string.download_state_failed);
|
||||
text = resources.getString(R.string.download_state_failed);
|
||||
} else {
|
||||
text = getContext().getString(R.string.download_state_failed_2, info.legacy);
|
||||
text = resources.getString(R.string.download_state_failed_2, info.legacy);
|
||||
}
|
||||
bindState(holder, info, text);
|
||||
break;
|
||||
case DownloadInfo.STATE_FINISH:
|
||||
bindState(holder, info, getContext().getString(R.string.download_state_finish));
|
||||
bindState(holder, info, resources.getString(R.string.download_state_finish));
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -912,7 +947,11 @@ public class DownloadsScene extends ToolbarScene
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
// Cancel check mode
|
||||
if (mRecyclerView != null) {
|
||||
Context context = getContext2();
|
||||
if (null == context) {
|
||||
return;
|
||||
}
|
||||
if (null != mRecyclerView) {
|
||||
mRecyclerView.outOfCustomChoiceMode();
|
||||
}
|
||||
|
||||
@@ -922,7 +961,7 @@ public class DownloadsScene extends ToolbarScene
|
||||
} else {
|
||||
label = mLabels[which];
|
||||
}
|
||||
EhApplication.getDownloadManager(getContext()).changeLabel(mDownloadInfoList, label);
|
||||
EhApplication.getDownloadManager(context).changeLabel(mDownloadInfoList, label);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -969,8 +1008,10 @@ public class DownloadsScene extends ToolbarScene
|
||||
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
Context context = getContext2();
|
||||
Activity activity = getActivity2();
|
||||
EasyRecyclerView recyclerView = mRecyclerView;
|
||||
if (recyclerView == null || recyclerView.isInCustomChoice()) {
|
||||
if (null == context || null == activity || null == recyclerView || recyclerView.isInCustomChoice()) {
|
||||
return;
|
||||
}
|
||||
List<DownloadInfo> list = mList;
|
||||
@@ -993,17 +1034,17 @@ public class DownloadsScene extends ToolbarScene
|
||||
}
|
||||
startScene(announcer);
|
||||
} else if (start == v) {
|
||||
Intent intent = new Intent(getActivity(), DownloadService.class);
|
||||
Intent intent = new Intent(activity, DownloadService.class);
|
||||
intent.setAction(DownloadService.ACTION_START);
|
||||
intent.putExtra(DownloadService.KEY_GALLERY_INFO, list.get(index));
|
||||
getActivity().startService(intent);
|
||||
activity.startService(intent);
|
||||
} else if (stop == v) {
|
||||
if (null != mDownloadManager) {
|
||||
mDownloadManager.stopDownload(list.get(index).gid);
|
||||
}
|
||||
} else if (delete == v) {
|
||||
GalleryInfo galleryInfo = list.get(index);
|
||||
CheckBoxDialogBuilder builder = new CheckBoxDialogBuilder(getContext(),
|
||||
CheckBoxDialogBuilder builder = new CheckBoxDialogBuilder(context,
|
||||
getString(R.string.download_remove_dialog_message, EhUtils.getSuitableTitle(galleryInfo)),
|
||||
getString(R.string.download_remove_dialog_check_text),
|
||||
Settings.getRemoveImageFiles());
|
||||
@@ -1017,6 +1058,13 @@ public class DownloadsScene extends ToolbarScene
|
||||
|
||||
private class DownloadAdapter extends RecyclerView.Adapter<DownloadHolder> {
|
||||
|
||||
private final LayoutInflater mInflater;
|
||||
|
||||
public DownloadAdapter() {
|
||||
mInflater = getLayoutInflater2();
|
||||
AssertUtils.assertNotNull(mInflater);
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getItemId(int position) {
|
||||
if (mList == null || position < 0 || position >= mList.size()) {
|
||||
@@ -1027,7 +1075,7 @@ public class DownloadsScene extends ToolbarScene
|
||||
|
||||
@Override
|
||||
public DownloadHolder onCreateViewHolder(ViewGroup parent, int viewType) {
|
||||
return new DownloadHolder(getActivity().getLayoutInflater().inflate(R.layout.item_download, parent, false));
|
||||
return new DownloadHolder(mInflater.inflate(R.layout.item_download, parent, false));
|
||||
}
|
||||
|
||||
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
|
||||
package com.hippo.ehviewer.ui.scene;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.res.Resources;
|
||||
@@ -61,6 +62,7 @@ import com.hippo.ehviewer.client.data.FavListUrlBuilder;
|
||||
import com.hippo.ehviewer.client.data.GalleryInfo;
|
||||
import com.hippo.ehviewer.client.exception.NotFoundException;
|
||||
import com.hippo.ehviewer.client.parser.FavoritesParser;
|
||||
import com.hippo.ehviewer.ui.MainActivity;
|
||||
import com.hippo.ehviewer.ui.annotation.DrawerLifeCircle;
|
||||
import com.hippo.ehviewer.ui.annotation.ViewLifeCircle;
|
||||
import com.hippo.ehviewer.ui.annotation.WholeLifeCircle;
|
||||
@@ -68,7 +70,6 @@ import com.hippo.ehviewer.widget.SearchBar;
|
||||
import com.hippo.rippleold.RippleSalon;
|
||||
import com.hippo.scene.Announcer;
|
||||
import com.hippo.scene.SceneFragment;
|
||||
import com.hippo.scene.StageActivity;
|
||||
import com.hippo.util.ApiHelper;
|
||||
import com.hippo.util.DrawableManager;
|
||||
import com.hippo.widget.ContentLayout;
|
||||
@@ -76,6 +77,7 @@ import com.hippo.widget.FabLayout;
|
||||
import com.hippo.widget.SearchBarMover;
|
||||
import com.hippo.widget.recyclerview.GridAutoSpanLayoutManager;
|
||||
import com.hippo.widget.refreshlayout.RefreshLayout;
|
||||
import com.hippo.yorozuya.AssertUtils;
|
||||
import com.hippo.yorozuya.ObjectUtils;
|
||||
import com.hippo.yorozuya.SimpleHandler;
|
||||
import com.hippo.yorozuya.ViewUtils;
|
||||
@@ -181,7 +183,9 @@ public class FavoritesScene extends BaseScene implements
|
||||
public void onCreate(@Nullable Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
mClient = EhApplication.getEhClient(getContext());
|
||||
Context context = getContext2();
|
||||
AssertUtils.assertNotNull(context);
|
||||
mClient = EhApplication.getEhClient(context);
|
||||
mFavCatArray = Settings.getFavCat();
|
||||
|
||||
if (savedInstanceState == null) {
|
||||
@@ -248,14 +252,16 @@ public class FavoritesScene extends BaseScene implements
|
||||
mSearchBar = (SearchBar) ViewUtils.$$(view, R.id.search_bar);
|
||||
mFabLayout = (FabLayout) ViewUtils.$$(view, R.id.fab_layout);
|
||||
|
||||
Resources resources = getResources();
|
||||
Context context = getContext2();
|
||||
AssertUtils.assertNotNull(context);
|
||||
Resources resources = context.getResources();
|
||||
int paddingTopSB = resources.getDimensionPixelOffset(R.dimen.list_padding_top_search_bar);
|
||||
|
||||
mHelper = new FavoritesHelper();
|
||||
contentLayout.setHelper(mHelper);
|
||||
contentLayout.getFastScroller().setOnDragHandlerListener(this);
|
||||
|
||||
GridAutoSpanLayoutManager layoutManager = new GridAutoSpanLayoutManager(getContext(), 0);
|
||||
GridAutoSpanLayoutManager layoutManager = new GridAutoSpanLayoutManager(context, 0);
|
||||
mRecyclerView.setLayoutManager(layoutManager);
|
||||
mRecyclerView.setSelector(RippleSalon.generateRippleDrawable(false));
|
||||
mRecyclerView.setDrawSelectorOnTop(true);
|
||||
@@ -265,8 +271,8 @@ public class FavoritesScene extends BaseScene implements
|
||||
mRecyclerView.setOnItemLongClickListener(this);
|
||||
mRecyclerView.setChoiceMode(EasyRecyclerView.CHOICE_MODE_MULTIPLE_CUSTOM);
|
||||
mRecyclerView.setCustomCheckedListener(this);
|
||||
mAdapter = new FavoritesAdapter(LayoutInflater.from(getContext()),
|
||||
getContext(), mRecyclerView, layoutManager, Settings.getListMode());
|
||||
mAdapter = new FavoritesAdapter(getLayoutInflater2(),
|
||||
getResources2(), mRecyclerView, layoutManager, Settings.getListMode());
|
||||
mRecyclerView.setAdapter(mAdapter);
|
||||
mAdapter.register();
|
||||
mRecyclerView.setPadding(mRecyclerView.getPaddingLeft(), mRecyclerView.getPaddingTop() + paddingTopSB,
|
||||
@@ -277,9 +283,9 @@ public class FavoritesScene extends BaseScene implements
|
||||
|
||||
refreshLayout.setHeaderTranslationY(paddingTopSB);
|
||||
|
||||
mLeftDrawable = new DrawerArrowDrawable(getContext());
|
||||
mLeftDrawable = new DrawerArrowDrawable(context);
|
||||
mSearchBar.setLeftDrawable(mLeftDrawable);
|
||||
mSearchBar.setRightDrawable(DrawableManager.getDrawable(getContext(), R.drawable.v_magnify_x24));
|
||||
mSearchBar.setRightDrawable(DrawableManager.getDrawable(context, R.drawable.v_magnify_x24));
|
||||
mSearchBar.setHelper(this);
|
||||
mSearchBar.setAllowEmptySearch(false);
|
||||
updateSearchBar();
|
||||
@@ -308,15 +314,16 @@ public class FavoritesScene extends BaseScene implements
|
||||
}
|
||||
|
||||
private void guideCollections() {
|
||||
if (!Settings.getGuideCollections()) {
|
||||
Activity activity = getActivity2();
|
||||
if (null == activity || !Settings.getGuideCollections()) {
|
||||
return;
|
||||
}
|
||||
|
||||
Display display = getActivity().getWindowManager().getDefaultDisplay();
|
||||
Display display = activity.getWindowManager().getDefaultDisplay();
|
||||
Point point = new Point();
|
||||
display.getSize(point);
|
||||
|
||||
new ShowcaseView.Builder(getActivity())
|
||||
new ShowcaseView.Builder(activity)
|
||||
.withMaterialShowcase()
|
||||
.setStyle(R.style.Guide)
|
||||
.setTarget(new PointTarget(point.x, point.y / 3))
|
||||
@@ -337,7 +344,8 @@ public class FavoritesScene extends BaseScene implements
|
||||
// keyword of mUrlBuilder, fav cat of mUrlBuilder, mFavCatArray.
|
||||
// They changed, call it
|
||||
private void updateSearchBar() {
|
||||
if (mUrlBuilder == null || mSearchBar == null || mFavCatArray == null) {
|
||||
Context context = getContext2();
|
||||
if (null == context || null == mUrlBuilder || null == mSearchBar || null == mFavCatArray) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -364,7 +372,7 @@ public class FavoritesScene extends BaseScene implements
|
||||
|
||||
// Update hint
|
||||
if (!ObjectUtils.equal(favCatName, mOldFavCat)) {
|
||||
Drawable searchImage = DrawableManager.getDrawable(getContext(), R.drawable.v_magnify_x24);
|
||||
Drawable searchImage = DrawableManager.getDrawable(context, R.drawable.v_magnify_x24);
|
||||
SpannableStringBuilder ssb = new SpannableStringBuilder(" ");
|
||||
ssb.append(getString(R.string.favorites_search_bar_hint, favCatName));
|
||||
int textSize = (int) (mSearchBar.getEditTextTextSize() * 1.25);
|
||||
@@ -409,7 +417,8 @@ public class FavoritesScene extends BaseScene implements
|
||||
}
|
||||
|
||||
private void showFavoritesInfoDialog() {
|
||||
if (mFavCatArray == null || mFavCountArray == null) {
|
||||
Context context = getContext2();
|
||||
if (null == context || null == mFavCatArray || null == mFavCountArray) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -419,7 +428,7 @@ public class FavoritesScene extends BaseScene implements
|
||||
sb.append(mFavCatArray[i]).append(": ").append(mFavCountArray[i]).append("\n");
|
||||
}
|
||||
|
||||
new AlertDialog.Builder(getContext())
|
||||
new AlertDialog.Builder(context)
|
||||
.setTitle(R.string.favorites_info)
|
||||
.setMessage(sb.toString())
|
||||
.show();
|
||||
@@ -432,6 +441,9 @@ public class FavoritesScene extends BaseScene implements
|
||||
Toolbar toolbar = (Toolbar) ViewUtils.$$(view, R.id.toolbar);
|
||||
ListView listView = (ListView) view.findViewById(R.id.list_view);
|
||||
|
||||
final Context context = getContext2();
|
||||
AssertUtils.assertNotNull(context);
|
||||
|
||||
toolbar.setTitle(R.string.collections);
|
||||
toolbar.inflateMenu(R.menu.drawer_favorites);
|
||||
toolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
|
||||
@@ -448,7 +460,7 @@ public class FavoritesScene extends BaseScene implements
|
||||
items[1] = getString(R.string.local_favorites);
|
||||
String[] favCat = Settings.getFavCat();
|
||||
System.arraycopy(favCat, 0, items, 2, 10);
|
||||
new AlertDialog.Builder(getContext())
|
||||
new AlertDialog.Builder(context)
|
||||
.setTitle(R.string.default_favorites_collection)
|
||||
.setItems(items, new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
@@ -468,7 +480,7 @@ public class FavoritesScene extends BaseScene implements
|
||||
if (mFavCatArray != null) {
|
||||
Collections.addAll(mDrawerList, mFavCatArray);
|
||||
}
|
||||
mDrawerAdapter = new ArrayAdapter<>(getContext(), R.layout.item_simple_list, mDrawerList);
|
||||
mDrawerAdapter = new ArrayAdapter<>(context, R.layout.item_simple_list, mDrawerList);
|
||||
listView.setAdapter(mDrawerAdapter);
|
||||
listView.setOnItemClickListener(this);
|
||||
|
||||
@@ -656,7 +668,8 @@ public class FavoritesScene extends BaseScene implements
|
||||
@Override
|
||||
@Implemented(FabLayout.OnClickFabListener.class)
|
||||
public void onClickSecondaryFab(FabLayout view, FloatingActionButton fab, int position) {
|
||||
if (mRecyclerView == null || mHelper == null || !mRecyclerView.isInCustomChoice()) {
|
||||
Context context = getContext2();
|
||||
if (null == context || null == mRecyclerView || null == mHelper || !mRecyclerView.isInCustomChoice()) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -671,7 +684,7 @@ public class FavoritesScene extends BaseScene implements
|
||||
switch (position) {
|
||||
case 0: { // Delete
|
||||
DeleteDialogHelper helper = new DeleteDialogHelper();
|
||||
new AlertDialog.Builder(getContext())
|
||||
new AlertDialog.Builder(context)
|
||||
.setTitle(R.string.delete_favorites_dialog_title)
|
||||
.setMessage(getString(R.string.delete_favorites_dialog_message, mModifyGiList.size()))
|
||||
.setPositiveButton(android.R.string.ok, helper)
|
||||
@@ -685,7 +698,7 @@ public class FavoritesScene extends BaseScene implements
|
||||
String[] array = new String[11];
|
||||
array[0] = getString(R.string.local_favorites);
|
||||
System.arraycopy(Settings.getFavCat(), 0, array, 1, 10);
|
||||
new AlertDialog.Builder(getContext())
|
||||
new AlertDialog.Builder(context)
|
||||
.setTitle(R.string.move_favorites_dialog_title)
|
||||
.setItems(array, helper)
|
||||
.setOnCancelListener(helper)
|
||||
@@ -930,9 +943,9 @@ public class FavoritesScene extends BaseScene implements
|
||||
|
||||
private class FavoritesAdapter extends GalleryAdapter {
|
||||
|
||||
public FavoritesAdapter(LayoutInflater inflater, Context context,
|
||||
public FavoritesAdapter(LayoutInflater inflater, Resources resources,
|
||||
RecyclerView recyclerView, GridAutoSpanLayoutManager layoutManager, int type) {
|
||||
super(inflater, context, recyclerView, layoutManager, type);
|
||||
super(inflater, resources, recyclerView, layoutManager, type);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -951,7 +964,8 @@ public class FavoritesScene extends BaseScene implements
|
||||
|
||||
@Override
|
||||
protected void getPageData(final int taskId, int type, int page) {
|
||||
if (mUrlBuilder == null || mClient == null) {
|
||||
MainActivity activity = getActivity2();
|
||||
if (null == activity || null == mUrlBuilder || null == mClient ) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -973,7 +987,7 @@ public class FavoritesScene extends BaseScene implements
|
||||
EhRequest request = new EhRequest();
|
||||
request.setMethod(EhClient.METHOD_ADD_FAVORITES_RANGE);
|
||||
request.setCallback(new AddFavoritesListener(getContext(),
|
||||
((StageActivity) getActivity()).getStageId(), getTag(),
|
||||
activity.getStageId(), getTag(),
|
||||
taskId, mUrlBuilder.getKeyword()));
|
||||
request.setArgs(gidArray, tokenArray, mModifyFavCat);
|
||||
mClient.execute(request);
|
||||
@@ -996,7 +1010,7 @@ public class FavoritesScene extends BaseScene implements
|
||||
EhRequest request = new EhRequest();
|
||||
request.setMethod(EhClient.METHOD_MODIFY_FAVORITES);
|
||||
request.setCallback(new GetFavoritesListener(getContext(),
|
||||
((StageActivity) getActivity()).getStageId(), getTag(),
|
||||
activity.getStageId(), getTag(),
|
||||
taskId, local, mUrlBuilder.getKeyword()));
|
||||
request.setArgs(url, gidArray, mModifyFavCat, Settings.getShowJpnTitle());
|
||||
mClient.execute(request);
|
||||
@@ -1015,7 +1029,7 @@ public class FavoritesScene extends BaseScene implements
|
||||
EhRequest request = new EhRequest();
|
||||
request.setMethod(EhClient.METHOD_GET_FAVORITES);
|
||||
request.setCallback(new GetFavoritesListener(getContext(),
|
||||
((StageActivity) getActivity()).getStageId(), getTag(),
|
||||
activity.getStageId(), getTag(),
|
||||
taskId, false, mUrlBuilder.getKeyword()));
|
||||
request.setArgs(url, Settings.getShowJpnTitle());
|
||||
mClient.execute(request);
|
||||
@@ -1032,7 +1046,7 @@ public class FavoritesScene extends BaseScene implements
|
||||
|
||||
@Override
|
||||
protected Context getContext() {
|
||||
return FavoritesScene.this.getContext();
|
||||
return FavoritesScene.this.getContext2();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -17,11 +17,11 @@
|
||||
package com.hippo.ehviewer.ui.scene;
|
||||
|
||||
import android.annotation.TargetApi;
|
||||
import android.content.Context;
|
||||
import android.content.res.Resources;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.os.Build;
|
||||
import android.support.annotation.IntDef;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.view.LayoutInflater;
|
||||
@@ -55,18 +55,16 @@ abstract class GalleryAdapter extends RecyclerView.Adapter<GalleryHolder> implem
|
||||
public static final int TYPE_GRID = 1;
|
||||
|
||||
private final LayoutInflater mInflater;
|
||||
private final Context mContext;
|
||||
private final Resources mResources;
|
||||
private final RecyclerView mRecyclerView;
|
||||
private final GridAutoSpanLayoutManager mLayoutManager;
|
||||
private RecyclerView.ItemDecoration mGirdDecoration;
|
||||
private int mType = TYPE_INVALID;
|
||||
|
||||
public GalleryAdapter(LayoutInflater inflater, Context context,
|
||||
RecyclerView recyclerView, GridAutoSpanLayoutManager layoutManager, int type) {
|
||||
public GalleryAdapter(@NonNull LayoutInflater inflater, @NonNull Resources resources,
|
||||
@NonNull RecyclerView recyclerView, @NonNull GridAutoSpanLayoutManager layoutManager, int type) {
|
||||
mInflater = inflater;
|
||||
mContext = context;
|
||||
mResources = context.getResources();
|
||||
mResources = resources;
|
||||
mRecyclerView = recyclerView;
|
||||
mLayoutManager = layoutManager;
|
||||
|
||||
|
||||
@@ -18,7 +18,9 @@ package com.hippo.ehviewer.ui.scene;
|
||||
|
||||
import android.animation.Animator;
|
||||
import android.annotation.TargetApi;
|
||||
import android.app.Activity;
|
||||
import android.content.Context;
|
||||
import android.content.res.Resources;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
@@ -48,18 +50,18 @@ import com.hippo.ehviewer.client.EhClient;
|
||||
import com.hippo.ehviewer.client.EhRequest;
|
||||
import com.hippo.ehviewer.client.EhUrl;
|
||||
import com.hippo.ehviewer.client.data.GalleryComment;
|
||||
import com.hippo.ehviewer.ui.MainActivity;
|
||||
import com.hippo.rippleold.RippleSalon;
|
||||
import com.hippo.scene.SceneFragment;
|
||||
import com.hippo.scene.StageActivity;
|
||||
import com.hippo.text.Html;
|
||||
import com.hippo.text.URLImageGetter;
|
||||
import com.hippo.util.ActivityHelper;
|
||||
import com.hippo.util.DrawableManager;
|
||||
import com.hippo.util.ReadableTime;
|
||||
import com.hippo.util.TextUrl;
|
||||
import com.hippo.view.ViewTransition;
|
||||
import com.hippo.widget.LinkifyTextView;
|
||||
import com.hippo.yorozuya.AnimationUtils;
|
||||
import com.hippo.yorozuya.AssertUtils;
|
||||
import com.hippo.yorozuya.LayoutUtils;
|
||||
import com.hippo.yorozuya.SimpleAnimatorListener;
|
||||
import com.hippo.yorozuya.ViewUtils;
|
||||
@@ -143,19 +145,22 @@ public final class GalleryCommentsScene extends ToolbarScene
|
||||
mEditText = (EditText) ViewUtils.$$(mEditPanel, R.id.edit_text);
|
||||
mFab = (FloatingActionButton) ViewUtils.$$(view, R.id.fab);
|
||||
|
||||
int paddingBottomFab = getResources().getDimensionPixelOffset(R.dimen.list_padding_bottom_fab);
|
||||
Context context = getContext2();
|
||||
AssertUtils.assertNotNull(context);
|
||||
Resources resources = context.getResources();
|
||||
int paddingBottomFab = resources.getDimensionPixelOffset(R.dimen.list_padding_bottom_fab);
|
||||
|
||||
Drawable drawable = DrawableManager.getDrawable(getContext(), R.drawable.big_weird_face);
|
||||
Drawable drawable = DrawableManager.getDrawable(context, R.drawable.big_weird_face);
|
||||
drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
|
||||
tip.setCompoundDrawables(null, drawable, null, null);
|
||||
|
||||
mAdapter = new CommentAdapter();
|
||||
recyclerView.setAdapter(mAdapter);
|
||||
recyclerView.setLayoutManager(new LinearLayoutManager(getContext(),
|
||||
recyclerView.setLayoutManager(new LinearLayoutManager(context,
|
||||
LinearLayoutManager.VERTICAL, false));
|
||||
LinearDividerItemDecoration decoration = new LinearDividerItemDecoration(
|
||||
LinearDividerItemDecoration.VERTICAL, getResources().getColor(R.color.divider),
|
||||
LayoutUtils.dp2pix(getContext(), 1));
|
||||
LinearDividerItemDecoration.VERTICAL, context.getResources().getColor(R.color.divider),
|
||||
LayoutUtils.dp2pix(context, 1));
|
||||
decoration.setShowLastDivider(true);
|
||||
recyclerView.addItemDecoration(decoration);
|
||||
recyclerView.setSelector(RippleSalon.generateRippleDrawable(false));
|
||||
@@ -200,6 +205,11 @@ public final class GalleryCommentsScene extends ToolbarScene
|
||||
|
||||
@Override
|
||||
public boolean onItemClick(EasyRecyclerView parent, View view, int position, long id) {
|
||||
Activity activity = getActivity2();
|
||||
if (null == activity) {
|
||||
return false;
|
||||
}
|
||||
|
||||
RecyclerView.ViewHolder holder = parent.getChildViewHolder(view);
|
||||
if (holder instanceof CommentHolder) {
|
||||
CommentHolder commentHolder = (CommentHolder) holder;
|
||||
@@ -207,7 +217,7 @@ public final class GalleryCommentsScene extends ToolbarScene
|
||||
commentHolder.comment.clearCurrentSpan();
|
||||
|
||||
if (span instanceof URLSpan) {
|
||||
UrlOpener.openUrl(getActivity(), ((URLSpan) span).getURL(), true, true);
|
||||
UrlOpener.openUrl(activity, ((URLSpan) span).getURL(), true, true);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -322,6 +332,12 @@ public final class GalleryCommentsScene extends ToolbarScene
|
||||
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
Context context = getContext2();
|
||||
MainActivity activity = getActivity2();
|
||||
if (null == context || null == activity) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (mFab == v) {
|
||||
if (!mInAnimation) {
|
||||
showEditPanel(true);
|
||||
@@ -341,10 +357,10 @@ public final class GalleryCommentsScene extends ToolbarScene
|
||||
EhRequest request = new EhRequest()
|
||||
.setMethod(EhClient.METHOD_GET_COMMENT_GALLERY)
|
||||
.setArgs(url, comment)
|
||||
.setCallback(new CommentGalleryListener(getContext(),
|
||||
((StageActivity) getActivity()).getStageId(), getTag()));
|
||||
EhApplication.getEhClient(getContext()).execute(request);
|
||||
ActivityHelper.hideSoftInput(getActivity());
|
||||
.setCallback(new CommentGalleryListener(context,
|
||||
activity.getStageId(), getTag()));
|
||||
EhApplication.getEhClient(context).execute(request);
|
||||
hideSoftInput();
|
||||
hideEditPanel(true);
|
||||
}
|
||||
}
|
||||
@@ -378,19 +394,30 @@ public final class GalleryCommentsScene extends ToolbarScene
|
||||
|
||||
private class CommentAdapter extends RecyclerView.Adapter<CommentHolder> {
|
||||
|
||||
private final LayoutInflater mInflater;
|
||||
|
||||
public CommentAdapter() {
|
||||
mInflater = getLayoutInflater2();
|
||||
AssertUtils.assertNotNull(mInflater);
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommentHolder onCreateViewHolder(ViewGroup parent, int viewType) {
|
||||
return new CommentHolder(getActivity().getLayoutInflater()
|
||||
.inflate(R.layout.item_gallery_comment, parent, false));
|
||||
return new CommentHolder(mInflater.inflate(R.layout.item_gallery_comment, parent, false));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBindViewHolder(CommentHolder holder, int position) {
|
||||
Context context = getContext2();
|
||||
if (null == context) {
|
||||
return;
|
||||
}
|
||||
|
||||
GalleryComment comment = mComments[position];
|
||||
holder.user.setText(comment.user);
|
||||
holder.time.setText(ReadableTime.getTimeAgo(comment.time));
|
||||
holder.comment.setText(TextUrl.handleTextUrl(Html.fromHtml(comment.comment,
|
||||
new URLImageGetter(holder.comment, EhApplication.getConaco(getContext())), null)));
|
||||
new URLImageGetter(holder.comment, EhApplication.getConaco(context)), null)));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -16,8 +16,8 @@
|
||||
|
||||
package com.hippo.ehviewer.ui.scene;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.annotation.TargetApi;
|
||||
import android.app.Activity;
|
||||
import android.app.Dialog;
|
||||
import android.app.DownloadManager;
|
||||
import android.content.Context;
|
||||
@@ -81,7 +81,6 @@ import com.hippo.ehviewer.ui.annotation.WholeLifeCircle;
|
||||
import com.hippo.rippleold.RippleSalon;
|
||||
import com.hippo.scene.Announcer;
|
||||
import com.hippo.scene.SceneFragment;
|
||||
import com.hippo.scene.StageActivity;
|
||||
import com.hippo.scene.TransitionHelper;
|
||||
import com.hippo.text.Html;
|
||||
import com.hippo.text.URLImageGetter;
|
||||
@@ -96,6 +95,7 @@ import com.hippo.widget.LoadImageView;
|
||||
import com.hippo.widget.ProgressView;
|
||||
import com.hippo.widget.ProgressiveRatingBar;
|
||||
import com.hippo.widget.recyclerview.SimpleGridAutoSpanLayout;
|
||||
import com.hippo.yorozuya.AssertUtils;
|
||||
import com.hippo.yorozuya.SimpleHandler;
|
||||
import com.hippo.yorozuya.ViewUtils;
|
||||
|
||||
@@ -347,7 +347,9 @@ public class GalleryDetailScene extends BaseScene implements View.OnClickListene
|
||||
|
||||
long gid = getGid();
|
||||
if (gid != -1) {
|
||||
mDownloadState = EhApplication.getDownloadManager(getContext()).getDownloadState(gid);
|
||||
Context context = getContext2();
|
||||
AssertUtils.assertNotNull(context);
|
||||
mDownloadState = EhApplication.getDownloadManager(context).getDownloadState(gid);
|
||||
} else {
|
||||
mDownloadState = DownloadInfo.STATE_INVALID;
|
||||
}
|
||||
@@ -398,7 +400,10 @@ public class GalleryDetailScene extends BaseScene implements View.OnClickListene
|
||||
mTip = (TextView) ViewUtils.$$(main, R.id.tip);
|
||||
mViewTransition = new ViewTransition(mainView, progressView, mTip);
|
||||
|
||||
Drawable drawable = DrawableManager.getDrawable(getContext(), R.drawable.big_weird_face);
|
||||
Context context = getContext2();
|
||||
AssertUtils.assertNotNull(context);
|
||||
|
||||
Drawable drawable = DrawableManager.getDrawable(context, R.drawable.big_weird_face);
|
||||
drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
|
||||
mTip.setCompoundDrawables(null, drawable, null, null);
|
||||
mTip.setOnClickListener(this);
|
||||
@@ -491,7 +496,7 @@ public class GalleryDetailScene extends BaseScene implements View.OnClickListene
|
||||
adjustViewVisibility(STATE_FAILED, false);
|
||||
}
|
||||
|
||||
EhApplication.getDownloadManager(getContext()).addDownloadInfoListener(this);
|
||||
EhApplication.getDownloadManager(context).addDownloadInfoListener(this);
|
||||
|
||||
return view;
|
||||
}
|
||||
@@ -505,7 +510,9 @@ public class GalleryDetailScene extends BaseScene implements View.OnClickListene
|
||||
public void onDestroyView() {
|
||||
super.onDestroyView();
|
||||
|
||||
EhApplication.getDownloadManager(getContext()).removeDownloadInfoListener(this);
|
||||
Context context = getContext2();
|
||||
AssertUtils.assertNotNull(context);
|
||||
EhApplication.getDownloadManager(context).removeDownloadInfoListener(this);
|
||||
|
||||
mTip = null;
|
||||
mViewTransition = null;
|
||||
@@ -557,6 +564,9 @@ public class GalleryDetailScene extends BaseScene implements View.OnClickListene
|
||||
}
|
||||
|
||||
private boolean prepareData() {
|
||||
Context context = getContext2();
|
||||
AssertUtils.assertNotNull(context);
|
||||
|
||||
if (mGalleryDetail != null) {
|
||||
return true;
|
||||
}
|
||||
@@ -567,12 +577,12 @@ public class GalleryDetailScene extends BaseScene implements View.OnClickListene
|
||||
}
|
||||
|
||||
// Get from cache
|
||||
mGalleryDetail = EhApplication.getGalleryDetailCache(getContext()).get(gid);
|
||||
mGalleryDetail = EhApplication.getGalleryDetailCache(context).get(gid);
|
||||
if (mGalleryDetail != null) {
|
||||
return true;
|
||||
}
|
||||
|
||||
EhApplication application = (EhApplication) getContext().getApplicationContext();
|
||||
EhApplication application = (EhApplication) context.getApplicationContext();
|
||||
if (application.containGlobalStuff(mRequestId)) {
|
||||
// request exist
|
||||
return true;
|
||||
@@ -583,19 +593,21 @@ public class GalleryDetailScene extends BaseScene implements View.OnClickListene
|
||||
}
|
||||
|
||||
private boolean request() {
|
||||
Context context = getContext2();
|
||||
MainActivity activity = getActivity2();
|
||||
String url = getGalleryDetailUrl(true);
|
||||
if (url == null) {
|
||||
if (null == context || null == activity || null == url) {
|
||||
return false;
|
||||
}
|
||||
|
||||
EhClient.Callback callback = new GetGalleryDetailListener(getContext(),
|
||||
((StageActivity) getActivity()).getStageId(), getTag());
|
||||
mRequestId = ((EhApplication) getContext().getApplicationContext()).putGlobalStuff(callback);
|
||||
EhClient.Callback callback = new GetGalleryDetailListener(context,
|
||||
activity.getStageId(), getTag());
|
||||
mRequestId = ((EhApplication) context.getApplicationContext()).putGlobalStuff(callback);
|
||||
EhRequest request = new EhRequest()
|
||||
.setMethod(EhClient.METHOD_GET_GALLERY_DETAIL)
|
||||
.setArgs(url)
|
||||
.setCallback(callback);
|
||||
EhApplication.getEhClient(getContext()).execute(request);
|
||||
EhApplication.getEhClient(context).execute(request);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -606,15 +618,17 @@ public class GalleryDetailScene extends BaseScene implements View.OnClickListene
|
||||
}
|
||||
|
||||
private void ensureActionDrawable() {
|
||||
Drawable heart = DrawableManager.getDrawable(getContext(), R.drawable.v_heart_primary_x48);
|
||||
Context context = getContext2();
|
||||
AssertUtils.assertNotNull(context);
|
||||
Drawable heart = DrawableManager.getDrawable(context, R.drawable.v_heart_primary_x48);
|
||||
setActionDrawable(mHeart, heart);
|
||||
Drawable heartOutline = DrawableManager.getDrawable(getContext(), R.drawable.v_heart_outline_primary_x48);
|
||||
Drawable heartOutline = DrawableManager.getDrawable(context, R.drawable.v_heart_outline_primary_x48);
|
||||
setActionDrawable(mHeartOutline, heartOutline);
|
||||
Drawable torrent = DrawableManager.getDrawable(getContext(), R.drawable.v_utorrent_primary_x48);
|
||||
Drawable torrent = DrawableManager.getDrawable(context, R.drawable.v_utorrent_primary_x48);
|
||||
setActionDrawable(mTorrent, torrent);
|
||||
Drawable share = DrawableManager.getDrawable(getContext(), R.drawable.v_share_primary_x48);
|
||||
Drawable share = DrawableManager.getDrawable(context, R.drawable.v_share_primary_x48);
|
||||
setActionDrawable(mShare, share);
|
||||
Drawable rate = DrawableManager.getDrawable(getContext(), R.drawable.v_thumb_up_primary_x48);
|
||||
Drawable rate = DrawableManager.getDrawable(context, R.drawable.v_thumb_up_primary_x48);
|
||||
setActionDrawable(mRate, rate);
|
||||
}
|
||||
|
||||
@@ -733,7 +747,8 @@ public class GalleryDetailScene extends BaseScene implements View.OnClickListene
|
||||
return;
|
||||
}
|
||||
|
||||
Resources resources = getContext().getResources();
|
||||
Resources resources = getResources2();
|
||||
AssertUtils.assertNotNull(resources);
|
||||
|
||||
mThumb.load(EhCacheKeyFactory.getThumbKey(gd.gid), gd.thumb, true);
|
||||
mTitle.setText(EhUtils.getSuitableTitle(gd));
|
||||
@@ -763,7 +778,10 @@ public class GalleryDetailScene extends BaseScene implements View.OnClickListene
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
private void bindTags(GalleryTagGroup[] tagGroups) {
|
||||
if (mTags == null || mNoTags == null) {
|
||||
Context context = getContext2();
|
||||
LayoutInflater inflater = getLayoutInflater2();
|
||||
Resources resources = getResources2();
|
||||
if (null == context || null == inflater || null == resources || null == mTags || null == mNoTags) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -775,9 +793,8 @@ public class GalleryDetailScene extends BaseScene implements View.OnClickListene
|
||||
mNoTags.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
LayoutInflater inflater = getActivity().getLayoutInflater();
|
||||
int colorTag = getResources().getColor(R.color.colorPrimary);
|
||||
int colorName = getResources().getColor(R.color.purple_a400);
|
||||
int colorTag = resources.getColor(R.color.colorPrimary);
|
||||
int colorName = resources.getColor(R.color.purple_a400);
|
||||
for (GalleryTagGroup tg : tagGroups) {
|
||||
LinearLayout ll = (LinearLayout) inflater.inflate(R.layout.gallery_tag_group, mTags, false);
|
||||
ll.setOrientation(LinearLayout.HORIZONTAL);
|
||||
@@ -788,7 +805,7 @@ public class GalleryDetailScene extends BaseScene implements View.OnClickListene
|
||||
tgName.setText(tg.groupName);
|
||||
tgName.setBackgroundDrawable(new RoundSideRectDrawable(colorName));
|
||||
|
||||
AutoWrapLayout awl = new AutoWrapLayout(getContext());
|
||||
AutoWrapLayout awl = new AutoWrapLayout(context);
|
||||
ll.addView(awl, ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
|
||||
for (int j = 0, z = tg.size(); j < z; j++) {
|
||||
TextView tag = (TextView) inflater.inflate(R.layout.item_gallery_tag, awl, false);
|
||||
@@ -804,7 +821,9 @@ public class GalleryDetailScene extends BaseScene implements View.OnClickListene
|
||||
}
|
||||
|
||||
private void bindComments(GalleryComment[] comments) {
|
||||
if (mComments == null || mCommentsText == null) {
|
||||
Context context = getContext2();
|
||||
LayoutInflater inflater = getLayoutInflater2();
|
||||
if (null == context || null == inflater || null == mComments || null == mCommentsText) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -820,7 +839,6 @@ public class GalleryDetailScene extends BaseScene implements View.OnClickListene
|
||||
mCommentsText.setText(R.string.more_comment);
|
||||
}
|
||||
|
||||
LayoutInflater inflater = getActivity().getLayoutInflater();
|
||||
int length = Math.min(maxShowCount, comments.length);
|
||||
for (int i = 0; i < length; i++) {
|
||||
GalleryComment comment = comments[i];
|
||||
@@ -833,12 +851,14 @@ public class GalleryDetailScene extends BaseScene implements View.OnClickListene
|
||||
TextView c = (TextView) v.findViewById(R.id.comment);
|
||||
c.setMaxLines(5);
|
||||
c.setText(Html.fromHtml(comment.comment,
|
||||
new URLImageGetter(c, EhApplication.getConaco(getContext())), null));
|
||||
new URLImageGetter(c, EhApplication.getConaco(context)), null));
|
||||
}
|
||||
}
|
||||
|
||||
private void bindPreviews(GalleryDetail gd) {
|
||||
if (mGridLayout == null || mPreviewText == null) {
|
||||
LayoutInflater inflater = getLayoutInflater2();
|
||||
Resources resources = getResources2();
|
||||
if (null == inflater || null == resources || null == mGridLayout || null == mPreviewText) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -853,10 +873,9 @@ public class GalleryDetailScene extends BaseScene implements View.OnClickListene
|
||||
mPreviewText.setText(R.string.more_previews);
|
||||
}
|
||||
|
||||
int columnWidth = getResources().getDimensionPixelOffset(R.dimen.preview_grid_column_width);
|
||||
int columnWidth = resources.getDimensionPixelOffset(R.dimen.preview_grid_column_width);
|
||||
mGridLayout.setColumnSize(columnWidth);
|
||||
mGridLayout.setStrategy(SimpleGridAutoSpanLayout.STRATEGY_SUITABLE_SIZE);
|
||||
LayoutInflater inflater = getActivity().getLayoutInflater();
|
||||
for (int i = 0, size = previewSet.size(); i < size; i++) {
|
||||
View view = inflater.inflate(R.layout.item_gallery_preview, mGridLayout, false);
|
||||
mGridLayout.addView(view);
|
||||
@@ -912,7 +931,8 @@ public class GalleryDetailScene extends BaseScene implements View.OnClickListene
|
||||
}
|
||||
|
||||
private String getAllRatingText(float rating, int ratedTimes) {
|
||||
Resources resources = getResources();
|
||||
Resources resources = getResources2();
|
||||
AssertUtils.assertNotNull(resources);
|
||||
return resources.getString(R.string.rating_text, getRatingText(rating, resources), rating, ratedTimes);
|
||||
}
|
||||
|
||||
@@ -934,7 +954,9 @@ public class GalleryDetailScene extends BaseScene implements View.OnClickListene
|
||||
return;
|
||||
}
|
||||
|
||||
PopupMenu popup = new PopupMenu(getContext(), mOtherActions, Gravity.TOP);
|
||||
Context context = getContext2();
|
||||
AssertUtils.assertNotNull(context);
|
||||
PopupMenu popup = new PopupMenu(context, mOtherActions, Gravity.TOP);
|
||||
mPopupMenu = popup;
|
||||
popup.getMenuInflater().inflate(R.menu.scene_gallery_detail, popup.getMenu());
|
||||
popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
|
||||
@@ -943,8 +965,9 @@ public class GalleryDetailScene extends BaseScene implements View.OnClickListene
|
||||
switch (item.getItemId()) {
|
||||
case R.id.action_open_in_other_app:
|
||||
String url = getGalleryDetailUrl(false);
|
||||
if (url != null) {
|
||||
UrlOpener.openUrl(getActivity(), url, false, false);
|
||||
Activity activity = getActivity2();
|
||||
if (null != url && null != activity) {
|
||||
UrlOpener.openUrl(activity, url, false, false);
|
||||
}
|
||||
break;
|
||||
case R.id.action_refresh:
|
||||
@@ -961,6 +984,12 @@ public class GalleryDetailScene extends BaseScene implements View.OnClickListene
|
||||
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
Context context = getContext2();
|
||||
MainActivity activity = getActivity2();
|
||||
if (null == context || null == activity) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (mTip == v) {
|
||||
if (request()) {
|
||||
adjustViewVisibility(STATE_REFRESH, true);
|
||||
@@ -990,7 +1019,7 @@ public class GalleryDetailScene extends BaseScene implements View.OnClickListene
|
||||
} else if (mDownload == v) {
|
||||
GalleryInfo galleryInfo = getGalleryInfo();
|
||||
if (galleryInfo != null) {
|
||||
CommonOperations.startDownload((MainActivity) getActivity(), galleryInfo, false);
|
||||
CommonOperations.startDownload(activity, galleryInfo, false);
|
||||
}
|
||||
} else if (mRead == v) {
|
||||
GalleryInfo galleryInfo = null;
|
||||
@@ -1000,7 +1029,7 @@ public class GalleryDetailScene extends BaseScene implements View.OnClickListene
|
||||
galleryInfo = mGalleryDetail;
|
||||
}
|
||||
if (galleryInfo != null) {
|
||||
Intent intent = new Intent(getActivity(), GalleryActivity.class);
|
||||
Intent intent = new Intent(activity, GalleryActivity.class);
|
||||
intent.setAction(GalleryActivity.ACTION_EH);
|
||||
intent.putExtra(GalleryActivity.KEY_GALLERY_INFO, galleryInfo);
|
||||
startActivity(intent);
|
||||
@@ -1018,16 +1047,16 @@ public class GalleryDetailScene extends BaseScene implements View.OnClickListene
|
||||
}
|
||||
if (mGalleryDetail.isFavored) {
|
||||
mModifingFavorites = true;
|
||||
CommonOperations.removeFromFavorites(getActivity(), mGalleryDetail,
|
||||
new ModifyFavoritesListener(getContext(),
|
||||
((StageActivity) getActivity()).getStageId(), getTag(), true));
|
||||
CommonOperations.removeFromFavorites(activity, mGalleryDetail,
|
||||
new ModifyFavoritesListener(context,
|
||||
activity.getStageId(), getTag(), true));
|
||||
remove = true;
|
||||
}
|
||||
if (!remove) {
|
||||
mModifingFavorites = true;
|
||||
CommonOperations.addToFavorites(getActivity(), mGalleryDetail,
|
||||
new ModifyFavoritesListener(getContext(),
|
||||
((StageActivity) getActivity()).getStageId(), getTag(), false));
|
||||
CommonOperations.addToFavorites(activity, mGalleryDetail,
|
||||
new ModifyFavoritesListener(context,
|
||||
activity.getStageId(), getTag(), false));
|
||||
}
|
||||
// Update UI
|
||||
updateFavoriteDrawable();
|
||||
@@ -1035,29 +1064,30 @@ public class GalleryDetailScene extends BaseScene implements View.OnClickListene
|
||||
} else if (mShare == v) {
|
||||
String url = getGalleryDetailUrl(false);
|
||||
if (url != null) {
|
||||
ActivityHelper.share(getActivity(), url);
|
||||
ActivityHelper.share(activity, url);
|
||||
}
|
||||
} else if (mTorrent == v) {
|
||||
if (mGalleryDetail != null) {
|
||||
TorrentListDialogHelper helper = new TorrentListDialogHelper(mGalleryDetail.torrentUrl);
|
||||
Dialog dialog = new AlertDialog.Builder(getContext())
|
||||
TorrentListDialogHelper helper = new TorrentListDialogHelper();
|
||||
Dialog dialog = new AlertDialog.Builder(context)
|
||||
.setTitle(R.string.torrents)
|
||||
.setView(helper.getView())
|
||||
.setView(R.layout.dialog_torrent_list)
|
||||
.setOnDismissListener(helper)
|
||||
.show();
|
||||
helper.setDialog(dialog);
|
||||
helper.setDialog(dialog, mGalleryDetail.torrentUrl);
|
||||
}
|
||||
} else if (mRate == v) {
|
||||
if (mGalleryDetail == null) {
|
||||
return;
|
||||
}
|
||||
RateDialogHelper helper = new RateDialogHelper(mGalleryDetail.rating);
|
||||
new AlertDialog.Builder(getContext())
|
||||
RateDialogHelper helper = new RateDialogHelper();
|
||||
Dialog dialog = new AlertDialog.Builder(context)
|
||||
.setTitle(R.string.rate)
|
||||
.setView(helper.view)
|
||||
.setView(R.layout.dialog_rate)
|
||||
.setNegativeButton(android.R.string.cancel, null)
|
||||
.setPositiveButton(android.R.string.ok, helper)
|
||||
.show();
|
||||
helper.setDialog(dialog, mGalleryDetail.rating);
|
||||
} else if (mComments == v) {
|
||||
if (mGalleryDetail == null) {
|
||||
return;
|
||||
@@ -1086,10 +1116,9 @@ public class GalleryDetailScene extends BaseScene implements View.OnClickListene
|
||||
return;
|
||||
}
|
||||
|
||||
Context context = getContext();
|
||||
GalleryInfo galleryInfo = getGalleryInfo();
|
||||
o = v.getTag(R.id.index);
|
||||
if (null != context && null != galleryInfo && o instanceof Integer) {
|
||||
if (null != galleryInfo && o instanceof Integer) {
|
||||
int index = (Integer) o;
|
||||
Intent intent = new Intent(context, GalleryActivity.class);
|
||||
intent.setAction(GalleryActivity.ACTION_EH);
|
||||
@@ -1102,12 +1131,16 @@ public class GalleryDetailScene extends BaseScene implements View.OnClickListene
|
||||
}
|
||||
|
||||
private void showBlockUploaderDialog() {
|
||||
Context context = getContext2();
|
||||
if (null == context) {
|
||||
return;
|
||||
}
|
||||
final String uploader = getUploader();
|
||||
if (null == uploader) {
|
||||
return;
|
||||
}
|
||||
|
||||
new AlertDialog.Builder(getContext())
|
||||
new AlertDialog.Builder(context)
|
||||
.setMessage(getString(R.string.block_the_uploader, uploader))
|
||||
.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
@@ -1127,7 +1160,12 @@ public class GalleryDetailScene extends BaseScene implements View.OnClickListene
|
||||
}
|
||||
|
||||
private void showBlockTagDialog(final String tag) {
|
||||
new AlertDialog.Builder(getContext())
|
||||
Context context = getContext2();
|
||||
if (null == context) {
|
||||
return;
|
||||
}
|
||||
|
||||
new AlertDialog.Builder(context)
|
||||
.setMessage(getString(R.string.block_the_tag, tag))
|
||||
.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
@@ -1148,12 +1186,17 @@ public class GalleryDetailScene extends BaseScene implements View.OnClickListene
|
||||
|
||||
@Override
|
||||
public boolean onLongClick(View v) {
|
||||
MainActivity activity = getActivity2();
|
||||
if (null == activity) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (mUploader == v) {
|
||||
showBlockUploaderDialog();
|
||||
} else if (mDownload == v) {
|
||||
GalleryInfo galleryInfo = getGalleryInfo();
|
||||
if (galleryInfo != null) {
|
||||
CommonOperations.startDownload((MainActivity) getActivity(), galleryInfo, true);
|
||||
CommonOperations.startDownload(activity, galleryInfo, true);
|
||||
}
|
||||
return true;
|
||||
} else {
|
||||
@@ -1230,12 +1273,13 @@ public class GalleryDetailScene extends BaseScene implements View.OnClickListene
|
||||
}
|
||||
|
||||
private void updateDownloadState() {
|
||||
Context context = getContext2();
|
||||
long gid = getGid();
|
||||
if (-1L == gid) {
|
||||
if (null == context || -1L == gid) {
|
||||
return;
|
||||
}
|
||||
|
||||
int downloadState = EhApplication.getDownloadManager(getContext()).getDownloadState(gid);
|
||||
int downloadState = EhApplication.getDownloadManager(context).getDownloadState(gid);
|
||||
if (downloadState == mDownloadState) {
|
||||
return;
|
||||
}
|
||||
@@ -1320,12 +1364,11 @@ public class GalleryDetailScene extends BaseScene implements View.OnClickListene
|
||||
|
||||
private void onGetGalleryDetailFailure(Exception e) {
|
||||
e.printStackTrace();
|
||||
if (isViewCreated()) {
|
||||
String error = ExceptionUtils.getReadableString(getContext(), e);
|
||||
if (mTip != null) {
|
||||
mTip.setText(error);
|
||||
adjustViewVisibility(STATE_FAILED, true);
|
||||
}
|
||||
Context context = getContext2();
|
||||
if (null != context && null != mTip) {
|
||||
String error = ExceptionUtils.getReadableString(context, e);
|
||||
mTip.setText(error);
|
||||
adjustViewVisibility(STATE_FAILED, true);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1390,42 +1433,41 @@ public class GalleryDetailScene extends BaseScene implements View.OnClickListene
|
||||
private class TorrentListDialogHelper implements AdapterView.OnItemClickListener,
|
||||
DialogInterface.OnDismissListener, EhClient.Callback<Pair<String, String>[]> {
|
||||
|
||||
private final View mView;
|
||||
private final ProgressView mProgressView;
|
||||
private final TextView mErrorText;
|
||||
private final ListView mListView;
|
||||
|
||||
@Nullable
|
||||
private ProgressView mProgressView;
|
||||
@Nullable
|
||||
private TextView mErrorText;
|
||||
@Nullable
|
||||
private ListView mListView;
|
||||
@Nullable
|
||||
private EhRequest mRequest;
|
||||
@Nullable
|
||||
private Dialog mDialog;
|
||||
|
||||
@SuppressLint("InflateParams")
|
||||
public TorrentListDialogHelper(String url) {
|
||||
mView = getActivity().getLayoutInflater().inflate(R.layout.dialog_torrent_list, null);
|
||||
mProgressView = (ProgressView) ViewUtils.$$(mView, R.id.progress);
|
||||
mErrorText = (TextView) ViewUtils.$$(mView, R.id.text);
|
||||
mListView = (ListView) ViewUtils.$$(mView, R.id.list_view);
|
||||
public void setDialog(@Nullable Dialog dialog, String url) {
|
||||
mDialog = dialog;
|
||||
mProgressView = (ProgressView) ViewUtils.$$(dialog, R.id.progress);
|
||||
mErrorText = (TextView) ViewUtils.$$(dialog, R.id.text);
|
||||
mListView = (ListView) ViewUtils.$$(dialog, R.id.list_view);
|
||||
mListView.setOnItemClickListener(this);
|
||||
|
||||
if (mTorrentList == null) {
|
||||
mErrorText.setVisibility(View.GONE);
|
||||
mListView.setVisibility(View.GONE);
|
||||
mRequest = new EhRequest().setMethod(EhClient.METHOD_GET_TORRENT_LIST)
|
||||
.setArgs(url)
|
||||
.setCallback(this);
|
||||
EhApplication.getEhClient(getContext()).execute(mRequest);
|
||||
} else {
|
||||
bind(mTorrentList);
|
||||
Context context = getContext2();
|
||||
if (context != null) {
|
||||
if (mTorrentList == null) {
|
||||
mErrorText.setVisibility(View.GONE);
|
||||
mListView.setVisibility(View.GONE);
|
||||
mRequest = new EhRequest().setMethod(EhClient.METHOD_GET_TORRENT_LIST)
|
||||
.setArgs(url)
|
||||
.setCallback(this);
|
||||
EhApplication.getEhClient(context).execute(mRequest);
|
||||
} else {
|
||||
bind(mTorrentList);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void setDialog(@Nullable Dialog dialog) {
|
||||
mDialog = dialog;
|
||||
}
|
||||
|
||||
private void bind(Pair<String, String>[] data) {
|
||||
if (null == mDialog) {
|
||||
if (null == mDialog || null == mProgressView || null == mErrorText || null == mListView) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -1446,13 +1488,10 @@ public class GalleryDetailScene extends BaseScene implements View.OnClickListene
|
||||
}
|
||||
}
|
||||
|
||||
public View getView() {
|
||||
return mView;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
|
||||
if (mTorrentList != null && position < mTorrentList.length) {
|
||||
Context context = getContext2();
|
||||
if (null != context && null != mTorrentList && position < mTorrentList.length) {
|
||||
String url = mTorrentList[position].first;
|
||||
String name = mTorrentList[position].second;
|
||||
// Use system download service
|
||||
@@ -1460,7 +1499,7 @@ public class GalleryDetailScene extends BaseScene implements View.OnClickListene
|
||||
r.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, name + ".torrent");
|
||||
r.allowScanningByMediaScanner();
|
||||
r.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
|
||||
DownloadManager dm = (DownloadManager) getContext().getSystemService(Context.DOWNLOAD_SERVICE);
|
||||
DownloadManager dm = (DownloadManager) context.getSystemService(Context.DOWNLOAD_SERVICE);
|
||||
dm.enqueue(r);
|
||||
}
|
||||
|
||||
@@ -1477,6 +1516,9 @@ public class GalleryDetailScene extends BaseScene implements View.OnClickListene
|
||||
mRequest = null;
|
||||
}
|
||||
mDialog = null;
|
||||
mProgressView = null;
|
||||
mErrorText = null;
|
||||
mListView = null;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -1490,12 +1532,13 @@ public class GalleryDetailScene extends BaseScene implements View.OnClickListene
|
||||
|
||||
@Override
|
||||
public void onFailure(Exception e) {
|
||||
if (mRequest != null) {
|
||||
mRequest = null;
|
||||
mRequest = null;
|
||||
Context context = getContext2();
|
||||
if (null != context && null != mProgressView && null != mErrorText && null != mListView) {
|
||||
mProgressView.setVisibility(View.GONE);
|
||||
mErrorText.setVisibility(View.VISIBLE);
|
||||
mListView.setVisibility(View.GONE);
|
||||
mErrorText.setText(ExceptionUtils.getReadableString(getContext(), e));
|
||||
mErrorText.setText(ExceptionUtils.getReadableString(context, e));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1554,37 +1597,41 @@ public class GalleryDetailScene extends BaseScene implements View.OnClickListene
|
||||
private class RateDialogHelper implements ProgressiveRatingBar.OnUserRateListener,
|
||||
DialogInterface.OnClickListener {
|
||||
|
||||
public View view;
|
||||
private final ProgressiveRatingBar mRatingBar;
|
||||
private final TextView mRatingText;
|
||||
@Nullable
|
||||
private ProgressiveRatingBar mRatingBar;
|
||||
@Nullable
|
||||
private TextView mRatingText;
|
||||
|
||||
@SuppressLint("InflateParams")
|
||||
private RateDialogHelper(float rating) {
|
||||
view = getActivity().getLayoutInflater().inflate(R.layout.dialog_rate, null);
|
||||
mRatingText = (TextView) view.findViewById(R.id.rating_text);
|
||||
mRatingBar = (ProgressiveRatingBar) view.findViewById(R.id.rating_view);
|
||||
mRatingText.setText(getRatingText(rating, getResources()));
|
||||
public void setDialog(Dialog dialog, float rating) {
|
||||
mRatingText = (TextView) ViewUtils.$$(dialog, R.id.rating_text);
|
||||
mRatingBar = (ProgressiveRatingBar) ViewUtils.$$(dialog, R.id.rating_view);
|
||||
mRatingText.setText(getRatingText(rating, getResources2()));
|
||||
mRatingBar.setRating(rating);
|
||||
mRatingBar.setOnUserRateListener(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onUserRate(float rating) {
|
||||
mRatingText.setText(getRatingText(rating, getResources()));
|
||||
if (null != mRatingText) {
|
||||
mRatingText.setText(getRatingText(rating, getResources2()));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
if (which != DialogInterface.BUTTON_POSITIVE || mGalleryDetail == null) {
|
||||
Context context = getContext2();
|
||||
MainActivity activity = getActivity2();
|
||||
if (null == context || null == activity || which != DialogInterface.BUTTON_POSITIVE ||
|
||||
null == mGalleryDetail || null == mRatingBar) {
|
||||
return;
|
||||
}
|
||||
|
||||
EhRequest request = new EhRequest()
|
||||
.setMethod(EhClient.METHOD_GET_RATE_GALLERY)
|
||||
.setArgs(mGalleryDetail.gid, mGalleryDetail.token, mRatingBar.getRating())
|
||||
.setCallback(new RateGalleryListener(getContext(),
|
||||
((StageActivity) getActivity()).getStageId(), getTag(), mGalleryDetail.gid));
|
||||
EhApplication.getEhClient(getContext()).execute(request);
|
||||
.setCallback(new RateGalleryListener(context,
|
||||
activity.getStageId(), getTag(), mGalleryDetail.gid));
|
||||
EhApplication.getEhClient(context).execute(request);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -37,6 +37,7 @@ import com.hippo.ehviewer.client.EhUrl;
|
||||
import com.hippo.ehviewer.client.EhUtils;
|
||||
import com.hippo.ehviewer.client.data.GalleryDetail;
|
||||
import com.hippo.rippleold.RippleSalon;
|
||||
import com.hippo.yorozuya.AssertUtils;
|
||||
import com.hippo.yorozuya.LayoutUtils;
|
||||
import com.hippo.yorozuya.ViewUtils;
|
||||
|
||||
@@ -79,7 +80,8 @@ public final class GalleryInfoScene extends ToolbarScene implements EasyRecycler
|
||||
return;
|
||||
}
|
||||
|
||||
Resources resources = getResources();
|
||||
Resources resources = getResources2();
|
||||
AssertUtils.assertNotNull(resources);
|
||||
mKeys.add(resources.getString(R.string.header_key));
|
||||
mValues.add(resources.getString(R.string.header_value));
|
||||
mKeys.add(resources.getString(R.string.key_gid));
|
||||
@@ -151,14 +153,17 @@ public final class GalleryInfoScene extends ToolbarScene implements EasyRecycler
|
||||
@Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
|
||||
View view = inflater.inflate(R.layout.scene_gallery_info, container, false);
|
||||
|
||||
Context context = getContext2();
|
||||
AssertUtils.assertNotNull(context);
|
||||
|
||||
EasyRecyclerView recyclerView = (EasyRecyclerView) ViewUtils.$$(view, R.id.recycler_view);
|
||||
InfoAdapter adapter = new InfoAdapter();
|
||||
recyclerView.setAdapter(adapter);
|
||||
recyclerView.setLayoutManager(new LinearLayoutManager(getContext(), LinearLayoutManager.VERTICAL, false));
|
||||
recyclerView.setLayoutManager(new LinearLayoutManager(context, LinearLayoutManager.VERTICAL, false));
|
||||
LinearDividerItemDecoration decoration = new LinearDividerItemDecoration(
|
||||
LinearDividerItemDecoration.VERTICAL, getResources().getColor(R.color.divider),
|
||||
LayoutUtils.dp2pix(getContext(), 1));
|
||||
decoration.setPadding(getResources().getDimensionPixelOffset(R.dimen.keyline_margin));
|
||||
LinearDividerItemDecoration.VERTICAL, context.getResources().getColor(R.color.divider),
|
||||
LayoutUtils.dp2pix(context, 1));
|
||||
decoration.setPadding(context.getResources().getDimensionPixelOffset(R.dimen.keyline_margin));
|
||||
recyclerView.addItemDecoration(decoration);
|
||||
recyclerView.setSelector(RippleSalon.generateRippleDrawable(false));
|
||||
recyclerView.setClipToPadding(false);
|
||||
@@ -176,8 +181,9 @@ public final class GalleryInfoScene extends ToolbarScene implements EasyRecycler
|
||||
|
||||
@Override
|
||||
public boolean onItemClick(EasyRecyclerView parent, View view, int position, long id) {
|
||||
if (position != 0 && mValues != null) {
|
||||
ClipboardManager cmb = (ClipboardManager) getContext().getSystemService(Context.CLIPBOARD_SERVICE);
|
||||
Context context = getContext2();
|
||||
if (null != context && 0 != position && null != mValues) {
|
||||
ClipboardManager cmb = (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE);
|
||||
cmb.setPrimaryClip(ClipData.newPlainText(null, mValues.get(position)));
|
||||
showTip(R.string.copied_to_clipboard, LENGTH_SHORT);
|
||||
return true;
|
||||
@@ -209,6 +215,13 @@ public final class GalleryInfoScene extends ToolbarScene implements EasyRecycler
|
||||
private static final int TYPE_HEADER = 0;
|
||||
private static final int TYPE_DATA = 1;
|
||||
|
||||
private final LayoutInflater mInflater;
|
||||
|
||||
public InfoAdapter() {
|
||||
mInflater = getLayoutInflater2();
|
||||
AssertUtils.assertNotNull(mInflater);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getItemViewType(int position) {
|
||||
if (position == 0) {
|
||||
@@ -220,7 +233,7 @@ public final class GalleryInfoScene extends ToolbarScene implements EasyRecycler
|
||||
|
||||
@Override
|
||||
public InfoHolder onCreateViewHolder(ViewGroup parent, int viewType) {
|
||||
return new InfoHolder(getActivity().getLayoutInflater().inflate(viewType == TYPE_HEADER ?
|
||||
return new InfoHolder(mInflater.inflate(viewType == TYPE_HEADER ?
|
||||
R.layout.item_gallery_info_header : R.layout.item_gallery_info_data, parent, false));
|
||||
}
|
||||
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
package com.hippo.ehviewer.ui.scene;
|
||||
|
||||
import android.animation.Animator;
|
||||
import android.app.Activity;
|
||||
import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.res.Resources;
|
||||
@@ -72,7 +73,6 @@ import com.hippo.ehviewer.widget.SearchLayout;
|
||||
import com.hippo.rippleold.RippleSalon;
|
||||
import com.hippo.scene.Announcer;
|
||||
import com.hippo.scene.SceneFragment;
|
||||
import com.hippo.scene.StageActivity;
|
||||
import com.hippo.util.ApiHelper;
|
||||
import com.hippo.util.DrawableManager;
|
||||
import com.hippo.view.ViewTransition;
|
||||
@@ -81,6 +81,7 @@ import com.hippo.widget.SearchBarMover;
|
||||
import com.hippo.widget.recyclerview.GridAutoSpanLayoutManager;
|
||||
import com.hippo.widget.refreshlayout.RefreshLayout;
|
||||
import com.hippo.yorozuya.AnimationUtils;
|
||||
import com.hippo.yorozuya.AssertUtils;
|
||||
import com.hippo.yorozuya.MathUtils;
|
||||
import com.hippo.yorozuya.SimpleAnimatorListener;
|
||||
import com.hippo.yorozuya.SimpleHandler;
|
||||
@@ -210,7 +211,9 @@ public final class GalleryListScene extends BaseScene
|
||||
public void onCreate(@Nullable Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
mClient = EhApplication.getEhClient(getContext());
|
||||
Context context = getContext2();
|
||||
AssertUtils.assertNotNull(context);
|
||||
mClient = EhApplication.getEhClient(context);
|
||||
|
||||
if (savedInstanceState == null) {
|
||||
onInit();
|
||||
@@ -291,11 +294,11 @@ public final class GalleryListScene extends BaseScene
|
||||
// Update search bar title, drawer checked item
|
||||
private void onUpdateUrlBuilder() {
|
||||
ListUrlBuilder builder = mUrlBuilder;
|
||||
if (null == builder) {
|
||||
Resources resources = getResources2();
|
||||
if (null == resources || null == builder) {
|
||||
return;
|
||||
}
|
||||
|
||||
Resources resources = getResources();
|
||||
String keyword = builder.getKeyword();
|
||||
int category = builder.getCategory();
|
||||
|
||||
@@ -305,7 +308,7 @@ public final class GalleryListScene extends BaseScene
|
||||
}
|
||||
|
||||
// Update title
|
||||
String title = getSuitableTitleForUrlBuilder(getResources(), builder, true);
|
||||
String title = getSuitableTitleForUrlBuilder(resources, builder, true);
|
||||
if (null == title) {
|
||||
title = resources.getString(R.string.search);
|
||||
}
|
||||
@@ -334,7 +337,9 @@ public final class GalleryListScene extends BaseScene
|
||||
@Nullable Bundle savedInstanceState) {
|
||||
View view = inflater.inflate(R.layout.scene_gallery_list, container, false);
|
||||
|
||||
Resources resources = getContext().getResources();
|
||||
Context context = getContext2();
|
||||
AssertUtils.assertNotNull(context);
|
||||
Resources resources = context.getResources();
|
||||
|
||||
View mainLayout = ViewUtils.$$(view, R.id.main_layout);
|
||||
ContentLayout contentLayout = (ContentLayout) ViewUtils.$$(mainLayout, R.id.content_layout);
|
||||
@@ -355,7 +360,7 @@ public final class GalleryListScene extends BaseScene
|
||||
contentLayout.setHelper(mHelper);
|
||||
contentLayout.getFastScroller().setOnDragHandlerListener(this);
|
||||
|
||||
GridAutoSpanLayoutManager layoutManager = new GridAutoSpanLayoutManager(getContext(), 0);
|
||||
GridAutoSpanLayoutManager layoutManager = new GridAutoSpanLayoutManager(context, 0);
|
||||
mRecyclerView.setLayoutManager(layoutManager);
|
||||
mRecyclerView.setSelector(RippleSalon.generateRippleDrawable(false));
|
||||
mRecyclerView.setDrawSelectorOnTop(true);
|
||||
@@ -363,8 +368,8 @@ public final class GalleryListScene extends BaseScene
|
||||
mRecyclerView.setClipToPadding(false);
|
||||
mRecyclerView.setOnItemClickListener(this);
|
||||
mRecyclerView.setOnItemLongClickListener(this);
|
||||
mAdapter = new GalleryListAdapter(LayoutInflater.from(getContext()),
|
||||
getContext(), mRecyclerView, layoutManager, Settings.getListMode());
|
||||
mAdapter = new GalleryListAdapter(getLayoutInflater2(), getResources2(),
|
||||
mRecyclerView, layoutManager, Settings.getListMode());
|
||||
mRecyclerView.setAdapter(mAdapter);
|
||||
mAdapter.register();
|
||||
mRecyclerView.setPadding(mRecyclerView.getPaddingLeft(), mRecyclerView.getPaddingTop() + paddingTopSB,
|
||||
@@ -375,13 +380,13 @@ public final class GalleryListScene extends BaseScene
|
||||
|
||||
refreshLayout.setHeaderTranslationY(paddingTopSB);
|
||||
|
||||
mLeftDrawable = new DrawerArrowDrawable(getContext());
|
||||
mRightDrawable = new AddDeleteDrawable(getContext());
|
||||
mLeftDrawable = new DrawerArrowDrawable(context);
|
||||
mRightDrawable = new AddDeleteDrawable(context);
|
||||
mSearchBar.setLeftDrawable(mLeftDrawable);
|
||||
mSearchBar.setRightDrawable(mRightDrawable);
|
||||
mSearchBar.setHelper(this);
|
||||
mSearchBar.setOnStateChangeListener(this);
|
||||
setSearchBarHint(getContext(), mSearchBar);
|
||||
setSearchBarHint(context, mSearchBar);
|
||||
|
||||
mSearchLayout.setHelper(this);
|
||||
mSearchLayout.setPadding(mSearchLayout.getPaddingLeft(), mSearchLayout.getPaddingTop() + paddingTopSB,
|
||||
@@ -411,15 +416,16 @@ public final class GalleryListScene extends BaseScene
|
||||
}
|
||||
|
||||
private void guideQuickSearch() {
|
||||
if (!Settings.getGuideQuickSearch()) {
|
||||
Activity activity = getActivity2();
|
||||
if (null == activity || !Settings.getGuideQuickSearch()) {
|
||||
return;
|
||||
}
|
||||
|
||||
Display display = getActivity().getWindowManager().getDefaultDisplay();
|
||||
Display display = activity.getWindowManager().getDefaultDisplay();
|
||||
Point point = new Point();
|
||||
display.getSize(point);
|
||||
|
||||
new ShowcaseView.Builder(getActivity())
|
||||
new ShowcaseView.Builder(activity)
|
||||
.withMaterialShowcase()
|
||||
.setStyle(R.style.Guide)
|
||||
.setTarget(new PointTarget(point.x, point.y / 3))
|
||||
@@ -468,12 +474,13 @@ public final class GalleryListScene extends BaseScene
|
||||
|
||||
private void showAddQuickSearchDialog(final List<QuickSearch> list,
|
||||
final ArrayAdapter<QuickSearch> adapter, final ListView listView, final TextView tip) {
|
||||
if (null == mUrlBuilder) {
|
||||
Context context = getContext2();
|
||||
if (null == context || null == mUrlBuilder) {
|
||||
return;
|
||||
}
|
||||
|
||||
final EditTextDialogBuilder builder = new EditTextDialogBuilder(getContext(),
|
||||
getSuitableTitleForUrlBuilder(getResources(), mUrlBuilder, false), getString(R.string.quick_search));
|
||||
final EditTextDialogBuilder builder = new EditTextDialogBuilder(context,
|
||||
getSuitableTitleForUrlBuilder(context.getResources(), mUrlBuilder, false), getString(R.string.quick_search));
|
||||
builder.setTitle(R.string.add_quick_search_dialog_title);
|
||||
builder.setPositiveButton(android.R.string.ok, null);
|
||||
final AlertDialog dialog = builder.show();
|
||||
@@ -512,8 +519,11 @@ public final class GalleryListScene extends BaseScene
|
||||
final TextView tip = (TextView) ViewUtils.$$(view, R.id.tip);
|
||||
final ListView listView = (ListView) ViewUtils.$$(view, R.id.list_view);
|
||||
|
||||
Context context = getContext2();
|
||||
AssertUtils.assertNotNull(context);
|
||||
|
||||
final List<QuickSearch> list = EhDB.getAllQuickSearch();
|
||||
final ArrayAdapter<QuickSearch> adapter = new ArrayAdapter<>(getContext(), R.layout.item_simple_list, list);
|
||||
final ArrayAdapter<QuickSearch> adapter = new ArrayAdapter<>(context, R.layout.item_simple_list, list);
|
||||
listView.setAdapter(adapter);
|
||||
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
|
||||
@Override
|
||||
@@ -634,24 +644,26 @@ public final class GalleryListScene extends BaseScene
|
||||
|
||||
@Override
|
||||
public boolean onItemLongClick(EasyRecyclerView parent, View view, int position, long id) {
|
||||
if (null == mHelper) {
|
||||
final Context context = getContext2();
|
||||
final MainActivity activity = getActivity2();
|
||||
if (null == context || null == activity || null == mHelper) {
|
||||
return false;
|
||||
}
|
||||
|
||||
final GalleryInfo gi = mHelper.getDataAt(position);
|
||||
new AlertDialog.Builder(getContext())
|
||||
new AlertDialog.Builder(context)
|
||||
.setTitle(EhUtils.getSuitableTitle(gi))
|
||||
.setItems(R.array.gallery_list_menu_entries, new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
switch (which) {
|
||||
case 0: // Download
|
||||
CommonOperations.startDownload((MainActivity) getActivity(), gi, false);
|
||||
CommonOperations.startDownload(activity, gi, false);
|
||||
break;
|
||||
case 1: // Favorites
|
||||
CommonOperations.addToFavorites(getActivity(), gi,
|
||||
new addToFavoriteListener(getContext(),
|
||||
((StageActivity) getActivity()).getStageId(), getTag()));
|
||||
CommonOperations.addToFavorites(activity, gi,
|
||||
new addToFavoriteListener(context,
|
||||
activity.getStageId(), getTag()));
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -945,9 +957,9 @@ public final class GalleryListScene extends BaseScene
|
||||
|
||||
private class GalleryListAdapter extends GalleryAdapter {
|
||||
|
||||
public GalleryListAdapter(LayoutInflater inflater, Context context,
|
||||
public GalleryListAdapter(LayoutInflater inflater, Resources resources,
|
||||
RecyclerView recyclerView, GridAutoSpanLayoutManager layoutManager, int type) {
|
||||
super(inflater, context, recyclerView, layoutManager, type);
|
||||
super(inflater, resources, recyclerView, layoutManager, type);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -966,7 +978,8 @@ public final class GalleryListScene extends BaseScene
|
||||
|
||||
@Override
|
||||
protected void getPageData(int taskId, int type, int page) {
|
||||
if (null == mClient || null == mUrlBuilder) {
|
||||
MainActivity activity = getActivity2();
|
||||
if (null == activity || null == mClient || null == mUrlBuilder) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -975,7 +988,7 @@ public final class GalleryListScene extends BaseScene
|
||||
EhRequest request = new EhRequest();
|
||||
request.setMethod(EhClient.METHOD_GET_WHATS_HOT);
|
||||
request.setCallback(new GetWhatsHotListener(getContext(),
|
||||
((StageActivity) getActivity()).getStageId(), getTag(), taskId));
|
||||
activity.getStageId(), getTag(), taskId));
|
||||
request.setArgs();
|
||||
mClient.execute(request);
|
||||
} else {
|
||||
@@ -983,7 +996,7 @@ public final class GalleryListScene extends BaseScene
|
||||
EhRequest request = new EhRequest();
|
||||
request.setMethod(EhClient.METHOD_GET_GALLERY_LIST);
|
||||
request.setCallback(new GetGalleryListListener(getContext(),
|
||||
((StageActivity) getActivity()).getStageId(), getTag(), taskId));
|
||||
activity.getStageId(), getTag(), taskId));
|
||||
request.setArgs(url);
|
||||
mClient.execute(request);
|
||||
}
|
||||
@@ -991,7 +1004,7 @@ public final class GalleryListScene extends BaseScene
|
||||
|
||||
@Override
|
||||
protected Context getContext() {
|
||||
return GalleryListScene.this.getContext();
|
||||
return GalleryListScene.this.getContext2();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -16,11 +16,11 @@
|
||||
|
||||
package com.hippo.ehviewer.ui.scene;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.app.Dialog;
|
||||
import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
import android.content.res.Resources;
|
||||
import android.os.Bundle;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.annotation.Nullable;
|
||||
@@ -46,14 +46,16 @@ import com.hippo.ehviewer.client.data.GalleryPreview;
|
||||
import com.hippo.ehviewer.client.data.LargePreviewSet;
|
||||
import com.hippo.ehviewer.client.exception.EhException;
|
||||
import com.hippo.ehviewer.ui.GalleryActivity;
|
||||
import com.hippo.ehviewer.ui.MainActivity;
|
||||
import com.hippo.scene.SceneFragment;
|
||||
import com.hippo.scene.StageActivity;
|
||||
import com.hippo.widget.ContentLayout;
|
||||
import com.hippo.widget.LoadImageView;
|
||||
import com.hippo.widget.Slider;
|
||||
import com.hippo.widget.recyclerview.GridAutoSpanLayoutManager;
|
||||
import com.hippo.yorozuya.AssertUtils;
|
||||
import com.hippo.yorozuya.LayoutUtils;
|
||||
import com.hippo.yorozuya.SimpleHandler;
|
||||
import com.hippo.yorozuya.ViewUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Locale;
|
||||
@@ -85,7 +87,9 @@ public class GalleryPreviewsScene extends ToolbarScene implements EasyRecyclerVi
|
||||
public void onCreate(@Nullable Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
mClient = EhApplication.getEhClient(getContext());
|
||||
Context context = getContext2();
|
||||
AssertUtils.assertNotNull(context);
|
||||
mClient = EhApplication.getEhClient(context);
|
||||
if (savedInstanceState == null) {
|
||||
onInit();
|
||||
} else {
|
||||
@@ -130,13 +134,17 @@ public class GalleryPreviewsScene extends ToolbarScene implements EasyRecyclerVi
|
||||
contentLayout.hideFastScroll();
|
||||
EasyRecyclerView recyclerView = contentLayout.getRecyclerView();
|
||||
|
||||
Context context = getContext2();
|
||||
AssertUtils.assertNotNull(context);
|
||||
Resources resources = context.getResources();
|
||||
|
||||
mAdapter = new GalleryPreviewAdapter();
|
||||
recyclerView.setAdapter(mAdapter);
|
||||
int columnWidth = getResources().getDimensionPixelOffset(R.dimen.preview_grid_column_width);
|
||||
GridAutoSpanLayoutManager layoutManager = new GridAutoSpanLayoutManager(getContext(), columnWidth);
|
||||
int columnWidth = resources.getDimensionPixelOffset(R.dimen.preview_grid_column_width);
|
||||
GridAutoSpanLayoutManager layoutManager = new GridAutoSpanLayoutManager(context, columnWidth);
|
||||
layoutManager.setStrategy(GridAutoSpanLayoutManager.STRATEGY_SUITABLE_SIZE);
|
||||
recyclerView.setLayoutManager(layoutManager);
|
||||
int padding = LayoutUtils.dp2pix(getContext(), 4);
|
||||
int padding = LayoutUtils.dp2pix(context, 4);
|
||||
recyclerView.setPadding(padding, padding, padding, padding);
|
||||
recyclerView.setClipToPadding(false);
|
||||
recyclerView.addItemDecoration(new MarginItemDecoration(padding));
|
||||
@@ -182,6 +190,11 @@ public class GalleryPreviewsScene extends ToolbarScene implements EasyRecyclerVi
|
||||
|
||||
@Override
|
||||
public boolean onMenuItemClick(MenuItem item) {
|
||||
Context context = getContext2();
|
||||
if (null == context) {
|
||||
return false;
|
||||
}
|
||||
|
||||
int id = item.getItemId();
|
||||
switch (id) {
|
||||
case R.id.action_go_to:
|
||||
@@ -191,12 +204,12 @@ public class GalleryPreviewsScene extends ToolbarScene implements EasyRecyclerVi
|
||||
int pages = mHelper.getPages();
|
||||
if (pages > 0 && mHelper.canGoTo()) {
|
||||
GoToDialogHelper helper = new GoToDialogHelper(pages, mHelper.getPageForTop());
|
||||
AlertDialog dialog = new AlertDialog.Builder(getContext()).setTitle(R.string.go_to)
|
||||
.setView(helper.getView())
|
||||
AlertDialog dialog = new AlertDialog.Builder(context).setTitle(R.string.go_to)
|
||||
.setView(R.layout.dialog_go_to)
|
||||
.setPositiveButton(android.R.string.ok, null)
|
||||
.create();
|
||||
dialog.show();
|
||||
helper.setPositiveButtonClickListener(dialog);
|
||||
helper.setDialog(dialog);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
@@ -210,7 +223,7 @@ public class GalleryPreviewsScene extends ToolbarScene implements EasyRecyclerVi
|
||||
|
||||
@Override
|
||||
public boolean onItemClick(EasyRecyclerView parent, View view, int position, long id) {
|
||||
Context context = getContext();
|
||||
Context context = getContext2();
|
||||
if (null != context && null != mHelper && null != mGalleryInfo) {
|
||||
GalleryPreview p = mHelper.getDataAt(position);
|
||||
Intent intent = new Intent(context, GalleryActivity.class);
|
||||
@@ -237,9 +250,16 @@ public class GalleryPreviewsScene extends ToolbarScene implements EasyRecyclerVi
|
||||
|
||||
private class GalleryPreviewAdapter extends RecyclerView.Adapter<GalleryPreviewHolder> {
|
||||
|
||||
private final LayoutInflater mInflater;
|
||||
|
||||
public GalleryPreviewAdapter() {
|
||||
mInflater = getLayoutInflater2();
|
||||
AssertUtils.assertNotNull(mInflater);
|
||||
}
|
||||
|
||||
@Override
|
||||
public GalleryPreviewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
|
||||
return new GalleryPreviewHolder(getActivity().getLayoutInflater().inflate(R.layout.item_gallery_preview, parent, false));
|
||||
return new GalleryPreviewHolder(mInflater.inflate(R.layout.item_gallery_preview, parent, false));
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -261,7 +281,8 @@ public class GalleryPreviewsScene extends ToolbarScene implements EasyRecyclerVi
|
||||
|
||||
@Override
|
||||
protected void getPageData(final int taskId, int type, int page) {
|
||||
if (null == mClient || null == mGalleryInfo) {
|
||||
MainActivity activity = getActivity2();
|
||||
if (null == activity || null == mClient || null == mGalleryInfo) {
|
||||
onGetException(taskId, new EhException(getString(R.string.error_cannot_find_gallery)));
|
||||
return;
|
||||
}
|
||||
@@ -283,14 +304,14 @@ public class GalleryPreviewsScene extends ToolbarScene implements EasyRecyclerVi
|
||||
EhRequest request = new EhRequest();
|
||||
request.setMethod(EhClient.METHOD_GET_LARGE_PREVIEW_SET);
|
||||
request.setCallback(new GetLargePreviewSetListener(getContext(),
|
||||
((StageActivity) getActivity()).getStageId(), getTag(), taskId, mGalleryInfo.gid, page));
|
||||
activity.getStageId(), getTag(), taskId, mGalleryInfo.gid, page));
|
||||
request.setArgs(url);
|
||||
mClient.execute(request);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Context getContext() {
|
||||
return GalleryPreviewsScene.this.getContext();
|
||||
return GalleryPreviewsScene.this.getContext2();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -387,35 +408,37 @@ public class GalleryPreviewsScene extends ToolbarScene implements EasyRecyclerVi
|
||||
DialogInterface.OnDismissListener {
|
||||
|
||||
private final int mPages;
|
||||
private final int mCurrentPage;
|
||||
|
||||
private final View mView;
|
||||
private final Slider mSlider;
|
||||
|
||||
@Nullable
|
||||
private Slider mSlider;
|
||||
@Nullable
|
||||
private Dialog mDialog;
|
||||
|
||||
@SuppressLint("InflateParams")
|
||||
private GoToDialogHelper(int pages, int currentPage) {
|
||||
mPages = pages;
|
||||
mView = getActivity().getLayoutInflater().inflate(R.layout.dialog_go_to, null);
|
||||
((TextView) mView.findViewById(R.id.start)).setText("1");
|
||||
((TextView) mView.findViewById(R.id.end)).setText(String.format(Locale.US, "%d", pages));
|
||||
mSlider = (Slider) mView.findViewById(R.id.slider);
|
||||
mSlider.setRange(1, pages);
|
||||
mSlider.setProgress(currentPage + 1);
|
||||
mCurrentPage = currentPage;
|
||||
}
|
||||
|
||||
public View getView() {
|
||||
return mView;
|
||||
}
|
||||
|
||||
public void setPositiveButtonClickListener(AlertDialog dialog) {
|
||||
public void setDialog(@NonNull AlertDialog dialog) {
|
||||
mDialog = dialog;
|
||||
|
||||
((TextView) ViewUtils.$$(dialog, R.id.start)).setText(String.format(Locale.US, "%d", 1));
|
||||
((TextView) ViewUtils.$$(dialog, R.id.end)).setText(String.format(Locale.US, "%d", mPages));
|
||||
mSlider = (Slider) ViewUtils.$$(dialog, R.id.slider);
|
||||
mSlider.setRange(1, mPages);
|
||||
mSlider.setProgress(mCurrentPage + 1);
|
||||
|
||||
dialog.getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener(this);
|
||||
dialog.setOnDismissListener(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
if (null == mSlider) {
|
||||
return;
|
||||
}
|
||||
|
||||
int page = mSlider.getProgress() - 1;
|
||||
if (page >= 0 && page < mPages && mHelper != null) {
|
||||
mHelper.goTo(page);
|
||||
@@ -431,6 +454,7 @@ public class GalleryPreviewsScene extends ToolbarScene implements EasyRecyclerVi
|
||||
@Override
|
||||
public void onDismiss(DialogInterface dialog) {
|
||||
mDialog = null;
|
||||
mSlider = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -18,6 +18,7 @@ package com.hippo.ehviewer.ui.scene;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.res.Resources;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.os.Bundle;
|
||||
import android.support.annotation.Nullable;
|
||||
@@ -42,11 +43,11 @@ import com.hippo.ehviewer.ui.MainActivity;
|
||||
import com.hippo.rippleold.RippleSalon;
|
||||
import com.hippo.scene.Announcer;
|
||||
import com.hippo.scene.SceneFragment;
|
||||
import com.hippo.scene.StageActivity;
|
||||
import com.hippo.util.ApiHelper;
|
||||
import com.hippo.util.DrawableManager;
|
||||
import com.hippo.view.ViewTransition;
|
||||
import com.hippo.widget.recyclerview.GridAutoSpanLayoutManager;
|
||||
import com.hippo.yorozuya.AssertUtils;
|
||||
import com.hippo.yorozuya.ResourcesUtils;
|
||||
import com.hippo.yorozuya.ViewUtils;
|
||||
|
||||
@@ -82,12 +83,15 @@ public class HistoryScene extends ToolbarScene
|
||||
TextView tip = (TextView) ViewUtils.$$(view, R.id.tip);
|
||||
mViewTransition = new ViewTransition(content, tip);
|
||||
|
||||
Drawable drawable = DrawableManager.getDrawable(getContext(), R.drawable.big_history);
|
||||
Context context = getContext2();
|
||||
AssertUtils.assertNotNull(context);
|
||||
|
||||
Drawable drawable = DrawableManager.getDrawable(context, R.drawable.big_history);
|
||||
drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
|
||||
tip.setCompoundDrawables(null, drawable, null, null);
|
||||
|
||||
mList = EhDB.getHistoryLazyList();
|
||||
GridAutoSpanLayoutManager layoutManager = new GridAutoSpanLayoutManager(getContext(), 0);
|
||||
GridAutoSpanLayoutManager layoutManager = new GridAutoSpanLayoutManager(context, 0);
|
||||
recyclerView.setLayoutManager(layoutManager);
|
||||
recyclerView.setSelector(RippleSalon.generateRippleDrawable(false));
|
||||
recyclerView.setDrawSelectorOnTop(true);
|
||||
@@ -95,14 +99,14 @@ public class HistoryScene extends ToolbarScene
|
||||
recyclerView.setClipToPadding(false);
|
||||
recyclerView.setOnItemClickListener(this);
|
||||
recyclerView.setOnItemLongClickListener(this);
|
||||
mAdapter = new HistoryAdapter(LayoutInflater.from(getContext()),
|
||||
getContext(), recyclerView, layoutManager, Settings.getListMode());
|
||||
mAdapter = new HistoryAdapter(getLayoutInflater2(), getResources2(),
|
||||
recyclerView, layoutManager, Settings.getListMode());
|
||||
recyclerView.setAdapter(mAdapter);
|
||||
mAdapter.register();
|
||||
|
||||
fastScroller.attachToRecyclerView(recyclerView);
|
||||
HandlerDrawable handlerDrawable = new HandlerDrawable();
|
||||
handlerDrawable.setColor(ResourcesUtils.getAttrColor(getContext(), R.attr.colorAccent));
|
||||
handlerDrawable.setColor(ResourcesUtils.getAttrColor(context, R.attr.colorAccent));
|
||||
fastScroller.setHandlerDrawable(handlerDrawable);
|
||||
|
||||
if (null != mList && mList.size() > 0) {
|
||||
@@ -163,24 +167,26 @@ public class HistoryScene extends ToolbarScene
|
||||
|
||||
@Override
|
||||
public boolean onItemLongClick(EasyRecyclerView parent, View view, int position, long id) {
|
||||
if (null == mList) {
|
||||
final Context context = getContext2();
|
||||
final MainActivity activity = getActivity2();
|
||||
if (null == context || null == activity || null == mList) {
|
||||
return false;
|
||||
}
|
||||
|
||||
final GalleryInfo gi = mList.get(position);
|
||||
new AlertDialog.Builder(getContext())
|
||||
new AlertDialog.Builder(context)
|
||||
.setTitle(EhUtils.getSuitableTitle(gi))
|
||||
.setItems(R.array.gallery_list_menu_entries, new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
switch (which) {
|
||||
case 0: // Download
|
||||
CommonOperations.startDownload((MainActivity) getActivity(), gi, false);
|
||||
CommonOperations.startDownload(activity, gi, false);
|
||||
break;
|
||||
case 1: // Favorites
|
||||
CommonOperations.addToFavorites(getActivity(), gi,
|
||||
new addToFavoriteListener(getContext(),
|
||||
((StageActivity) getActivity()).getStageId(), getTag()));
|
||||
CommonOperations.addToFavorites(activity, gi,
|
||||
new addToFavoriteListener(context,
|
||||
activity.getStageId(), getTag()));
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -190,9 +196,9 @@ public class HistoryScene extends ToolbarScene
|
||||
|
||||
private class HistoryAdapter extends GalleryAdapter {
|
||||
|
||||
public HistoryAdapter(LayoutInflater inflater, Context context,
|
||||
public HistoryAdapter(LayoutInflater inflater, Resources resources,
|
||||
RecyclerView recyclerView, GridAutoSpanLayoutManager layoutManager, int type) {
|
||||
super(inflater, context, recyclerView, layoutManager, type);
|
||||
super(inflater, resources, recyclerView, layoutManager, type);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
|
||||
@@ -30,12 +30,14 @@ import com.hippo.ehviewer.EhApplication;
|
||||
import com.hippo.ehviewer.R;
|
||||
import com.hippo.ehviewer.client.EhClient;
|
||||
import com.hippo.ehviewer.client.EhRequest;
|
||||
import com.hippo.ehviewer.ui.MainActivity;
|
||||
import com.hippo.scene.Announcer;
|
||||
import com.hippo.scene.SceneFragment;
|
||||
import com.hippo.scene.StageActivity;
|
||||
import com.hippo.util.DrawableManager;
|
||||
import com.hippo.util.ExceptionUtils;
|
||||
import com.hippo.view.ViewTransition;
|
||||
import com.hippo.yorozuya.AssertUtils;
|
||||
import com.hippo.yorozuya.ViewUtils;
|
||||
|
||||
/**
|
||||
* Only show a progress with jobs in background
|
||||
@@ -61,7 +63,9 @@ public final class ProgressScene extends BaseScene implements View.OnClickListen
|
||||
private String mPToken;
|
||||
private int mPage;
|
||||
|
||||
@Nullable
|
||||
private TextView mTip;
|
||||
@Nullable
|
||||
private ViewTransition mViewTransition;
|
||||
|
||||
@Override
|
||||
@@ -81,6 +85,12 @@ public final class ProgressScene extends BaseScene implements View.OnClickListen
|
||||
}
|
||||
|
||||
private boolean doJobs() {
|
||||
Context context = getContext2();
|
||||
MainActivity activity = getActivity2();
|
||||
if (null == context || null == activity) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (ACTION_GALLERY_TOKEN.equals(mAction)) {
|
||||
if (mGid == -1 || mPToken == null || mPage == -1) {
|
||||
return false;
|
||||
@@ -89,9 +99,9 @@ public final class ProgressScene extends BaseScene implements View.OnClickListen
|
||||
EhRequest request = new EhRequest()
|
||||
.setMethod(EhClient.METHOD_GET_GALLERY_TOKEN)
|
||||
.setArgs(mGid, mPToken, mPage)
|
||||
.setCallback(new GetGalleryTokenListener(getContext(),
|
||||
((StageActivity) getActivity()).getStageId(), getTag()));
|
||||
EhApplication.getEhClient(getContext()).execute(request);
|
||||
.setCallback(new GetGalleryTokenListener(context,
|
||||
activity.getStageId(), getTag()));
|
||||
EhApplication.getEhClient(context).execute(request);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
@@ -155,10 +165,13 @@ public final class ProgressScene extends BaseScene implements View.OnClickListen
|
||||
public View onCreateView(LayoutInflater inflater,
|
||||
@Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
|
||||
View view = inflater.inflate(R.layout.scene_progress, container, false);
|
||||
View progress = view.findViewById(R.id.progress);
|
||||
mTip = (TextView) view.findViewById(R.id.tip);
|
||||
View progress = ViewUtils.$$(view, R.id.progress);
|
||||
mTip = (TextView) ViewUtils.$$(view, R.id.tip);
|
||||
|
||||
Drawable drawable = DrawableManager.getDrawable(getContext(), R.drawable.big_weird_face);
|
||||
Context context = getContext2();
|
||||
AssertUtils.assertNotNull(context);
|
||||
|
||||
Drawable drawable = DrawableManager.getDrawable(context, R.drawable.big_weird_face);
|
||||
drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
|
||||
mTip.setCompoundDrawables(null, drawable, null, null);
|
||||
mTip.setOnClickListener(this);
|
||||
@@ -175,13 +188,23 @@ public final class ProgressScene extends BaseScene implements View.OnClickListen
|
||||
return view;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroyView() {
|
||||
super.onDestroyView();
|
||||
|
||||
mTip = null;
|
||||
mViewTransition = null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
if (mTip == v) {
|
||||
if (doJobs()) {
|
||||
mValid = true;
|
||||
// Show progress
|
||||
mViewTransition.showView(0, true);
|
||||
if (null != mViewTransition) {
|
||||
mViewTransition.showView(0, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -198,10 +221,12 @@ public final class ProgressScene extends BaseScene implements View.OnClickListen
|
||||
|
||||
private void onGetGalleryTokenFailure(Exception e) {
|
||||
mValid = false;
|
||||
mError = ExceptionUtils.getReadableString(getContext(), e);
|
||||
|
||||
if (isViewCreated()) {
|
||||
Context context = getContext2();
|
||||
|
||||
if (null != context && null != mViewTransition && null != mTip) {
|
||||
// Show tip
|
||||
mError = ExceptionUtils.getReadableString(context, e);
|
||||
mViewTransition.showView(1);
|
||||
mTip.setText(mError);
|
||||
}
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
|
||||
package com.hippo.ehviewer.ui.scene;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.graphics.drawable.NinePatchDrawable;
|
||||
@@ -48,6 +49,7 @@ import com.hippo.ehviewer.R;
|
||||
import com.hippo.ehviewer.dao.QuickSearch;
|
||||
import com.hippo.util.DrawableManager;
|
||||
import com.hippo.view.ViewTransition;
|
||||
import com.hippo.yorozuya.AssertUtils;
|
||||
import com.hippo.yorozuya.ViewUtils;
|
||||
|
||||
import java.util.List;
|
||||
@@ -91,7 +93,10 @@ public final class QuickSearchScene extends ToolbarScene {
|
||||
TextView tip = (TextView) ViewUtils.$$(view, R.id.tip);
|
||||
mViewTransition = new ViewTransition(recyclerView, tip);
|
||||
|
||||
Drawable drawable = DrawableManager.getDrawable(getContext(), R.drawable.big_search);
|
||||
Context context = getContext2();
|
||||
AssertUtils.assertNotNull(context);
|
||||
|
||||
Drawable drawable = DrawableManager.getDrawable(context, R.drawable.big_search);
|
||||
drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
|
||||
tip.setCompoundDrawables(null, drawable, null, null);
|
||||
tip.setText(R.string.no_quick_search);
|
||||
@@ -103,7 +108,7 @@ public final class QuickSearchScene extends ToolbarScene {
|
||||
// drag & drop manager
|
||||
RecyclerViewDragDropManager dragDropManager = new RecyclerViewDragDropManager();
|
||||
dragDropManager.setDraggingItemShadowDrawable(
|
||||
(NinePatchDrawable) getResources().getDrawable(R.drawable.shadow_8dp));
|
||||
(NinePatchDrawable) context.getResources().getDrawable(R.drawable.shadow_8dp));
|
||||
// swipe manager
|
||||
RecyclerViewSwipeManager swipeManager = new RecyclerViewSwipeManager();
|
||||
RecyclerView.Adapter adapter = new QuickSearchAdapter();
|
||||
@@ -114,7 +119,7 @@ public final class QuickSearchScene extends ToolbarScene {
|
||||
final GeneralItemAnimator animator = new SwipeDismissItemAnimator();
|
||||
animator.setSupportsChangeAnimations(false);
|
||||
recyclerView.hasFixedSize();
|
||||
recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
|
||||
recyclerView.setLayoutManager(new LinearLayoutManager(context));
|
||||
recyclerView.setAdapter(adapter);
|
||||
recyclerView.setItemAnimator(animator);
|
||||
guardManager.attachRecyclerView(recyclerView);
|
||||
@@ -181,10 +186,16 @@ public final class QuickSearchScene extends ToolbarScene {
|
||||
implements DraggableItemAdapter<QuickSearchHolder>,
|
||||
SwipeableItemAdapter<QuickSearchHolder> {
|
||||
|
||||
private final LayoutInflater mInflater;
|
||||
|
||||
public QuickSearchAdapter() {
|
||||
mInflater = getLayoutInflater2();
|
||||
AssertUtils.assertNotNull(mInflater);
|
||||
}
|
||||
|
||||
@Override
|
||||
public QuickSearchHolder onCreateViewHolder(ViewGroup parent, int viewType) {
|
||||
return new QuickSearchHolder(getActivity().getLayoutInflater()
|
||||
.inflate(R.layout.item_label_list, parent, false));
|
||||
return new QuickSearchHolder(mInflater.inflate(R.layout.item_label_list, parent, false));
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -269,14 +280,15 @@ public final class QuickSearchScene extends ToolbarScene {
|
||||
protected void onPerformAction() {
|
||||
super.onPerformAction();
|
||||
|
||||
Context context = getContext2();
|
||||
final List<QuickSearch> quickSearchList = mQuickSearchList;
|
||||
if (quickSearchList == null || mPosition < 0 || mPosition >= quickSearchList.size()) {
|
||||
if (null == context || null == quickSearchList || mPosition < 0 || mPosition >= quickSearchList.size()) {
|
||||
return;
|
||||
}
|
||||
|
||||
final QuickSearch quickSearch = quickSearchList.get(mPosition);
|
||||
|
||||
new AlertDialog.Builder(getContext())
|
||||
new AlertDialog.Builder(context)
|
||||
.setTitle(R.string.delete_quick_search_title)
|
||||
.setMessage(getString(R.string.delete_quick_search_message, quickSearch.name))
|
||||
.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
|
||||
|
||||
@@ -44,8 +44,6 @@ import com.hippo.ehviewer.ui.MainActivity;
|
||||
import com.hippo.rippleold.RippleSalon;
|
||||
import com.hippo.scene.Announcer;
|
||||
import com.hippo.scene.SceneFragment;
|
||||
import com.hippo.scene.StageActivity;
|
||||
import com.hippo.util.ActivityHelper;
|
||||
import com.hippo.util.ExceptionUtils;
|
||||
import com.hippo.yorozuya.AssertUtils;
|
||||
import com.hippo.yorozuya.ViewUtils;
|
||||
@@ -148,7 +146,9 @@ public final class SignInScene extends BaseScene implements EditText.OnEditorAct
|
||||
RippleSalon.addRipple(mRegister, true);
|
||||
RippleSalon.addRipple(mSignIn, true);
|
||||
|
||||
EhApplication application = (EhApplication) getContext().getApplicationContext();
|
||||
Context context = getContext2();
|
||||
AssertUtils.assertNotNull(container);
|
||||
EhApplication application = (EhApplication) context.getApplicationContext();
|
||||
if (application.containGlobalStuff(mRequestId)) {
|
||||
// request exist
|
||||
showProgress(false);
|
||||
@@ -163,7 +163,7 @@ public final class SignInScene extends BaseScene implements EditText.OnEditorAct
|
||||
|
||||
// Show IME
|
||||
if (mProgress != null && View.INVISIBLE != mProgress.getVisibility()) {
|
||||
ActivityHelper.showSoftInput(getActivity(), mUsername);
|
||||
showSoftInput(mUsername);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -215,8 +215,13 @@ public final class SignInScene extends BaseScene implements EditText.OnEditorAct
|
||||
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
MainActivity activity = getActivity2();
|
||||
if (null == activity) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (mRegister == v) {
|
||||
UrlOpener.openUrl(getActivity(), EhUrl.URL_REGISTER, false, true);
|
||||
UrlOpener.openUrl(activity, EhUrl.URL_REGISTER, false, true);
|
||||
} else if (mSignIn == v) {
|
||||
signIn();
|
||||
} else if (mSignInViaWebView == v) {
|
||||
@@ -243,7 +248,9 @@ public final class SignInScene extends BaseScene implements EditText.OnEditorAct
|
||||
}
|
||||
|
||||
private void signIn() {
|
||||
if (null == mUsername || null == mPassword || null == mUsernameLayout ||
|
||||
Context context = getContext2();
|
||||
MainActivity activity = getActivity2();
|
||||
if (null == context || null == activity || null == mUsername || null == mPassword || null == mUsernameLayout ||
|
||||
null == mPasswordLayout) {
|
||||
return;
|
||||
}
|
||||
@@ -265,44 +272,57 @@ public final class SignInScene extends BaseScene implements EditText.OnEditorAct
|
||||
mPasswordLayout.setError(null);
|
||||
}
|
||||
|
||||
ActivityHelper.hideSoftInput(getActivity());
|
||||
hideSoftInput();
|
||||
showProgress(true);
|
||||
|
||||
// Clean up for sign in
|
||||
EhUtils.signOut(getContext());
|
||||
EhUtils.signOut(context);
|
||||
|
||||
EhCallback callback = new SignInListener(getContext(),
|
||||
((StageActivity) getActivity()).getStageId(), getTag());
|
||||
mRequestId = ((EhApplication) getContext().getApplicationContext()).putGlobalStuff(callback);
|
||||
EhCallback callback = new SignInListener(context,
|
||||
activity.getStageId(), getTag());
|
||||
mRequestId = ((EhApplication) context.getApplicationContext()).putGlobalStuff(callback);
|
||||
EhRequest request = new EhRequest()
|
||||
.setMethod(EhClient.METHOD_SIGN_IN)
|
||||
.setArgs(username, password)
|
||||
.setCallback(callback);
|
||||
EhApplication.getEhClient(getContext()).execute(request);
|
||||
EhApplication.getEhClient(context).execute(request);
|
||||
}
|
||||
|
||||
private void getProfile() {
|
||||
ActivityHelper.hideSoftInput(getActivity());
|
||||
Context context = getContext2();
|
||||
MainActivity activity = getActivity2();
|
||||
if (null == context || null == activity) {
|
||||
return;
|
||||
}
|
||||
|
||||
hideSoftInput();
|
||||
showProgress(true);
|
||||
|
||||
EhCallback callback = new GetProfileListener(getContext(),
|
||||
((StageActivity) getActivity()).getStageId(), getTag());
|
||||
mRequestId = ((EhApplication) getContext().getApplicationContext()).putGlobalStuff(callback);
|
||||
EhCallback callback = new GetProfileListener(context,
|
||||
activity.getStageId(), getTag());
|
||||
mRequestId = ((EhApplication) context.getApplicationContext()).putGlobalStuff(callback);
|
||||
EhRequest request = new EhRequest()
|
||||
.setMethod(EhClient.METHOD_GET_PROFILE)
|
||||
.setCallback(callback);
|
||||
EhApplication.getEhClient(getContext()).execute(request);
|
||||
EhApplication.getEhClient(context).execute(request);
|
||||
}
|
||||
|
||||
private void redirectTo() {
|
||||
Settings.putNeedSignIn(false);
|
||||
((MainActivity) getActivity()).startSceneForCheckStep(
|
||||
MainActivity.CHECK_STEP_SIGN_IN, getArguments());
|
||||
MainActivity activity = getActivity2();
|
||||
if (null != activity) {
|
||||
activity.startSceneForCheckStep(MainActivity.CHECK_STEP_SIGN_IN, getArguments());
|
||||
}
|
||||
finish();
|
||||
}
|
||||
|
||||
private void whetherToSkip() {
|
||||
new AlertDialog.Builder(getContext())
|
||||
Context context = getContext2();
|
||||
if (null == context) {
|
||||
return;
|
||||
}
|
||||
|
||||
new AlertDialog.Builder(context)
|
||||
.setTitle(R.string.sign_in_failed)
|
||||
.setMessage(R.string.sign_in_failed_plain)
|
||||
.setNegativeButton(android.R.string.cancel, null)
|
||||
@@ -311,7 +331,12 @@ public final class SignInScene extends BaseScene implements EditText.OnEditorAct
|
||||
}
|
||||
|
||||
public void onSignInSuccess() {
|
||||
if (EhApplication.getEhCookieStore(getContext()).hasSignedIn()) {
|
||||
Context context = getContext2();
|
||||
if (null == context) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (EhApplication.getEhCookieStore(context).hasSignedIn()) {
|
||||
getProfile();
|
||||
} else {
|
||||
hideProgress();
|
||||
@@ -320,7 +345,12 @@ public final class SignInScene extends BaseScene implements EditText.OnEditorAct
|
||||
}
|
||||
|
||||
public void onSignInFailure(Exception e) {
|
||||
Toast.makeText(getContext(), ExceptionUtils.getReadableString(getContext(), e),
|
||||
Context context = getContext2();
|
||||
if (null == context) {
|
||||
return;
|
||||
}
|
||||
|
||||
Toast.makeText(context, ExceptionUtils.getReadableString(context, e),
|
||||
Toast.LENGTH_SHORT).show();
|
||||
hideProgress();
|
||||
whetherToSkip();
|
||||
@@ -332,7 +362,12 @@ public final class SignInScene extends BaseScene implements EditText.OnEditorAct
|
||||
}
|
||||
|
||||
public void onGetProfileFailure(Exception e) {
|
||||
Toast.makeText(getContext(), ExceptionUtils.getReadableString(getContext(), e),
|
||||
Context context = getContext2();
|
||||
if (null == context) {
|
||||
return;
|
||||
}
|
||||
|
||||
Toast.makeText(context, ExceptionUtils.getReadableString(context, e),
|
||||
Toast.LENGTH_SHORT).show();
|
||||
hideProgress();
|
||||
whetherToSkip();
|
||||
|
||||
@@ -80,8 +80,10 @@ public final class WarningScene extends BaseScene implements View.OnClickListene
|
||||
Settings.putShowWarning(false);
|
||||
|
||||
// Start new scene and finish it self
|
||||
((MainActivity) getActivity()).startSceneForCheckStep(
|
||||
MainActivity.CHECK_STEP_WARNING, getArguments());
|
||||
MainActivity activity = getActivity2();
|
||||
if (null != activity) {
|
||||
activity.startSceneForCheckStep(MainActivity.CHECK_STEP_WARNING, getArguments());
|
||||
}
|
||||
finish();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -31,6 +31,7 @@ import com.hippo.ehviewer.EhApplication;
|
||||
import com.hippo.ehviewer.client.EhCookieStore;
|
||||
import com.hippo.ehviewer.client.EhUrl;
|
||||
import com.hippo.ehviewer.client.EhUtils;
|
||||
import com.hippo.yorozuya.AssertUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
@@ -58,9 +59,12 @@ public class WebViewSignInScene extends BaseScene {
|
||||
@SuppressLint("SetJavaScriptEnabled")
|
||||
public View onCreateView(LayoutInflater inflater,
|
||||
@Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
|
||||
EhUtils.signOut(getContext());
|
||||
Context context = getContext2();
|
||||
AssertUtils.assertNotNull(context);
|
||||
|
||||
EhUtils.signOut(context);
|
||||
CookieManager.getInstance().removeAllCookie();
|
||||
mWebView = new WebView(getContext());
|
||||
mWebView = new WebView(context);
|
||||
mWebView.getSettings().setJavaScriptEnabled(true);
|
||||
mWebView.setWebViewClient(new LoginWebViewClient());
|
||||
mWebView.loadUrl(EhUrl.URL_SIGN_IN);
|
||||
@@ -106,7 +110,7 @@ public class WebViewSignInScene extends BaseScene {
|
||||
|
||||
@Override
|
||||
public void onPageFinished(WebView view, String url) {
|
||||
Context context = getContext();
|
||||
Context context = getContext2();
|
||||
if (context == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -97,14 +97,18 @@ public class SceneFragment extends Fragment {
|
||||
}
|
||||
|
||||
@Override
|
||||
@SuppressWarnings("deprecation")
|
||||
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
|
||||
super.onViewCreated(view, savedInstanceState);
|
||||
|
||||
view.setTag(R.id.fragment_tag, getTag());
|
||||
view.setBackgroundColor(getContext().getResources().getColor(R.color.background_light));
|
||||
view.setBackgroundColor(getResources().getColor(R.color.background_light));
|
||||
|
||||
// Notify
|
||||
((StageActivity) getActivity()).onSceneViewCreated(this, savedInstanceState);
|
||||
FragmentActivity activity = getActivity();
|
||||
if (activity instanceof StageActivity) {
|
||||
((StageActivity) activity).onSceneViewCreated(this, savedInstanceState);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -112,14 +116,20 @@ public class SceneFragment extends Fragment {
|
||||
super.onDestroyView();
|
||||
|
||||
// Notify
|
||||
((StageActivity) getActivity()).onSceneViewDestroyed(this);
|
||||
FragmentActivity activity = getActivity();
|
||||
if (activity instanceof StageActivity) {
|
||||
((StageActivity) activity).onSceneViewDestroyed(this);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
super.onDestroy();
|
||||
|
||||
((StageActivity) getActivity()).onSceneDestroyed(this);
|
||||
FragmentActivity activity = getActivity();
|
||||
if (activity instanceof StageActivity) {
|
||||
((StageActivity) activity).onSceneDestroyed(this);
|
||||
}
|
||||
}
|
||||
|
||||
void addRequest(String requestSceneTag, int requestCode) {
|
||||
|
||||
@@ -16,11 +16,11 @@
|
||||
|
||||
package com.hippo.text;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.text.Layout;
|
||||
import android.text.NoCopySpan;
|
||||
import android.text.Selection;
|
||||
import android.text.Spannable;
|
||||
import android.text.method.MovementMethod;
|
||||
import android.text.method.ScrollingMovementMethod;
|
||||
import android.text.style.ClickableSpan;
|
||||
import android.text.style.URLSpan;
|
||||
@@ -40,11 +40,7 @@ public class LinkMovementMethod2 extends ScrollingMovementMethod {
|
||||
private static final int UP = 2;
|
||||
private static final int DOWN = 3;
|
||||
|
||||
private final Activity mActivity;
|
||||
|
||||
public LinkMovementMethod2(Activity activity) {
|
||||
mActivity = activity;
|
||||
}
|
||||
private LinkMovementMethod2() {}
|
||||
|
||||
@Override
|
||||
public boolean canSelectArbitrarily() {
|
||||
@@ -227,7 +223,7 @@ public class LinkMovementMethod2 extends ScrollingMovementMethod {
|
||||
if (action == MotionEvent.ACTION_UP) {
|
||||
ClickableSpan span = link[0];
|
||||
if (span instanceof URLSpan) {
|
||||
UrlOpener.openUrl(mActivity, ((URLSpan) span).getURL(), true, true);
|
||||
UrlOpener.openUrl(widget.getContext(), ((URLSpan) span).getURL(), true, true);
|
||||
} else {
|
||||
span.onClick(widget);
|
||||
}
|
||||
@@ -263,5 +259,13 @@ public class LinkMovementMethod2 extends ScrollingMovementMethod {
|
||||
}
|
||||
}
|
||||
|
||||
public static MovementMethod getInstance() {
|
||||
if (sInstance == null)
|
||||
sInstance = new LinkMovementMethod2();
|
||||
|
||||
return sInstance;
|
||||
}
|
||||
|
||||
private static LinkMovementMethod2 sInstance;
|
||||
private static final Object FROM_BELOW = new NoCopySpan.Concrete();
|
||||
}
|
||||
Reference in new issue
Block a user