From b09b261098bce105f15bdb521ea7ab67cfea9b2f Mon Sep 17 00:00:00 2001 From: seven332 Date: Tue, 8 Mar 2016 17:18:29 +0800 Subject: [PATCH] Use SnackBar --- .../com/hippo/ehviewer/ui/MainActivity.java | 26 +++++++-- .../hippo/ehviewer/ui/scene/BaseScene.java | 18 ++++++ .../hippo/ehviewer/ui/scene/EhCallback.java | 17 ++++++ .../ehviewer/ui/scene/FavoritesScene.java | 2 - .../ui/scene/GalleryCommentsScene.java | 7 +-- .../ehviewer/ui/scene/GalleryDetailScene.java | 15 ++--- .../ehviewer/ui/scene/GalleryInfoScene.java | 3 +- .../ehviewer/ui/scene/GalleryListScene.java | 26 ++++++--- .../ui/scene/GalleryPreviewsScene.java | 3 +- app/src/main/res/layout/activity_main.xml | 55 +++++++++++-------- app/src/main/res/values/strings.xml | 1 + 11 files changed, 117 insertions(+), 56 deletions(-) diff --git a/app/src/main/java/com/hippo/ehviewer/ui/MainActivity.java b/app/src/main/java/com/hippo/ehviewer/ui/MainActivity.java index 44a71d6b3..13bf1f93a 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/MainActivity.java +++ b/app/src/main/java/com/hippo/ehviewer/ui/MainActivity.java @@ -24,7 +24,9 @@ import android.os.PersistableBundle; import android.support.annotation.IdRes; import android.support.annotation.NonNull; import android.support.annotation.Nullable; +import android.support.annotation.StringRes; import android.support.design.widget.NavigationView; +import android.support.design.widget.Snackbar; import android.support.v4.widget.DrawerLayout; import android.util.Log; import android.view.Gravity; @@ -37,7 +39,6 @@ import com.hippo.ehviewer.R; import com.hippo.ehviewer.Settings; import com.hippo.ehviewer.client.EhUrlOpener; import com.hippo.ehviewer.client.EhUtils; -import com.hippo.ehviewer.ui.annotation.WholeLifeCircle; import com.hippo.ehviewer.ui.scene.AnalyticsScene; import com.hippo.ehviewer.ui.scene.BaseScene; import com.hippo.ehviewer.ui.scene.DownloadLabelScene; @@ -73,14 +74,14 @@ public final class MainActivity extends StageActivity public static final String KEY_TARGET_SCENE = "target_scene"; public static final String KEY_TARGET_ARGS = "target_args"; + /*--------------- + Whole life cycle + ---------------*/ @Nullable - @WholeLifeCircle private DrawerLayout mDrawerLayout; @Nullable - @WholeLifeCircle private NavigationView mNavView; @Nullable - @WholeLifeCircle private FrameLayout mRightDrawer; private int mNavCheckedItem = 0; @@ -357,6 +358,23 @@ public final class MainActivity extends StageActivity } } + public void showTip(@StringRes int id, int length) { + showTip(getString(id), length); + } + + /** + * If activity is running, show snack bar, otherwise show toast + */ + public void showTip(CharSequence message, int length) { + if (null != mDrawerLayout) { + Snackbar.make(mDrawerLayout, message, + length == BaseScene.LENGTH_LONG ? Snackbar.LENGTH_LONG : Snackbar.LENGTH_SHORT).show(); + } else { + Toast.makeText(this, message, + length == BaseScene.LENGTH_LONG ? Toast.LENGTH_LONG : Toast.LENGTH_SHORT).show(); + } + } + @Override public void onBackPressed() { if (mDrawerLayout != null && (mDrawerLayout.isDrawerOpen(Gravity.LEFT) || diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/BaseScene.java b/app/src/main/java/com/hippo/ehviewer/ui/scene/BaseScene.java index ebae38f6e..a55b9c6b1 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/scene/BaseScene.java +++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/BaseScene.java @@ -19,6 +19,7 @@ package com.hippo.ehviewer.ui.scene; import android.os.Bundle; import android.support.annotation.IdRes; import android.support.annotation.Nullable; +import android.support.annotation.StringRes; import android.support.v4.app.FragmentActivity; import android.support.v4.widget.DrawerLayout; import android.view.Gravity; @@ -32,6 +33,9 @@ import com.hippo.util.ActivityHelper; public abstract class BaseScene extends SceneFragment { + public static final int LENGTH_SHORT = 0; + public static final int LENGTH_LONG = 1; + private boolean mViewCreated; public void setDrawerLockMode(int lockMode, int edgeGravity) { @@ -81,6 +85,20 @@ public abstract class BaseScene extends SceneFragment { } } + public void showTip(CharSequence message, int length) { + FragmentActivity activity = getActivity(); + if (activity instanceof MainActivity) { + ((MainActivity) activity).showTip(message, length); + } + } + + public void showTip(@StringRes int id, int length) { + FragmentActivity activity = getActivity(); + if (activity instanceof MainActivity) { + ((MainActivity) activity).showTip(id, length); + } + } + public boolean needShowLeftDrawer() { return true; } diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/EhCallback.java b/app/src/main/java/com/hippo/ehviewer/ui/scene/EhCallback.java index 0a3c23225..5f7fd140a 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/scene/EhCallback.java +++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/EhCallback.java @@ -17,9 +17,12 @@ package com.hippo.ehviewer.ui.scene; import android.content.Context; +import android.support.annotation.StringRes; +import android.widget.Toast; import com.hippo.ehviewer.EhApplication; import com.hippo.ehviewer.client.EhClient; +import com.hippo.ehviewer.ui.MainActivity; import com.hippo.scene.SceneFragment; import com.hippo.scene.StageActivity; @@ -41,6 +44,10 @@ public abstract class EhCallback implements EhClient return mApplication; } + public StageActivity getStageActivity() { + return mApplication.findStageActivityById(mStageId); + } + @SuppressWarnings("unchecked") public E getScene() { StageActivity stage = mApplication.findStageActivityById(mStageId); @@ -54,4 +61,14 @@ public abstract class EhCallback implements EhClient return null; } } + + public void showTip(@StringRes int id, int length) { + StageActivity activity = getStageActivity(); + if (activity instanceof MainActivity) { + ((MainActivity) activity).showTip(id, length); + } else { + Toast.makeText(getApplication(), id, + length == BaseScene.LENGTH_LONG ? Toast.LENGTH_LONG : Toast.LENGTH_SHORT).show(); + } + } } diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/FavoritesScene.java b/app/src/main/java/com/hippo/ehviewer/ui/scene/FavoritesScene.java index 2fac02cd3..092211447 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/scene/FavoritesScene.java +++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/FavoritesScene.java @@ -47,7 +47,6 @@ import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.ListView; import android.widget.TextView; -import android.widget.Toast; import com.hippo.annotation.Implemented; import com.hippo.drawable.DrawerArrowDrawable; @@ -848,7 +847,6 @@ public class FavoritesScene extends BaseScene implements dstCat = which - 1; } if (srcCat == dstCat) { - Toast.makeText(getContext(), "src and dst in the same", Toast.LENGTH_SHORT).show(); return; } diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryCommentsScene.java b/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryCommentsScene.java index f0f6da17c..7e3915cea 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryCommentsScene.java +++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryCommentsScene.java @@ -37,7 +37,6 @@ import android.view.ViewGroup; import android.widget.EditText; import android.widget.ImageView; import android.widget.TextView; -import android.widget.Toast; import com.hippo.easyrecyclerview.EasyRecyclerView; import com.hippo.easyrecyclerview.LinearDividerItemDecoration; @@ -410,8 +409,7 @@ public final class GalleryCommentsScene extends ToolbarScene @Override public void onSuccess(GalleryComment[] result) { - // Show toast - Toast.makeText(getApplication(), R.string.comment_successfully, Toast.LENGTH_SHORT).show(); + showTip(R.string.comment_successfully, LENGTH_SHORT); GalleryCommentsScene scene = getScene(); if (scene != null) { @@ -421,8 +419,7 @@ public final class GalleryCommentsScene extends ToolbarScene @Override public void onFailure(Exception e) { - // Show toast - Toast.makeText(getApplication(), R.string.comment_failed, Toast.LENGTH_SHORT).show(); + showTip(R.string.comment_failed, LENGTH_SHORT); } @Override diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryDetailScene.java b/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryDetailScene.java index 755b5f7a4..eb804e8e1 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryDetailScene.java +++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryDetailScene.java @@ -53,7 +53,6 @@ import android.widget.LinearLayout; import android.widget.ListView; import android.widget.RatingBar; import android.widget.TextView; -import android.widget.Toast; import com.hippo.drawable.RoundSideRectDrawable; import com.hippo.ehviewer.EhApplication; @@ -1338,8 +1337,8 @@ public class GalleryDetailScene extends BaseScene implements View.OnClickListene @Override public void onSuccess(Void result) { - Toast.makeText(getContext(), mAddOrRemove ? R.string.remove_from_favorite_success : - R.string.add_to_favorite_success, Toast.LENGTH_SHORT).show(); + showTip(mAddOrRemove ? R.string.remove_from_favorite_success : + R.string.add_to_favorite_success, LENGTH_SHORT); GalleryDetailScene scene = getScene(); if (scene != null) { scene.onModifyFavoritesSuccess(mAddOrRemove); @@ -1348,8 +1347,8 @@ public class GalleryDetailScene extends BaseScene implements View.OnClickListene @Override public void onFailure(Exception e) { - Toast.makeText(getContext(), mAddOrRemove ? R.string.remove_from_favorite_failure : - R.string.add_to_favorite_failure, Toast.LENGTH_SHORT).show(); + showTip(mAddOrRemove ? R.string.remove_from_favorite_failure : + R.string.add_to_favorite_failure, LENGTH_SHORT); } @Override @@ -1564,8 +1563,7 @@ public class GalleryDetailScene extends BaseScene implements View.OnClickListene @Override public void onSuccess(RateGalleryParser.Result result) { - // Show toast - Toast.makeText(getApplication(), R.string.rate_successfully, Toast.LENGTH_SHORT).show(); + showTip(R.string.rate_successfully, LENGTH_SHORT); GalleryDetailScene scene = getScene(); if (scene != null) { @@ -1583,8 +1581,7 @@ public class GalleryDetailScene extends BaseScene implements View.OnClickListene @Override public void onFailure(Exception e) { e.printStackTrace(); - // Show toast - Toast.makeText(getApplication(), R.string.rate_failed, Toast.LENGTH_SHORT).show(); + showTip(R.string.rate_failed, LENGTH_SHORT); } @Override diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryInfoScene.java b/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryInfoScene.java index c79c65e39..ac11607ba 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryInfoScene.java +++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryInfoScene.java @@ -29,7 +29,6 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; -import android.widget.Toast; import com.hippo.easyrecyclerview.EasyRecyclerView; import com.hippo.easyrecyclerview.LinearDividerItemDecoration; @@ -176,7 +175,7 @@ public final class GalleryInfoScene extends ToolbarScene implements EasyRecycler if (position != 0 && mValues != null) { ClipboardManager cmb = (ClipboardManager) getContext().getSystemService(Context.CLIPBOARD_SERVICE); cmb.setPrimaryClip(ClipData.newPlainText(null, mValues.get(position))); - Toast.makeText(getContext(), R.string.copied_to_clipboard, Toast.LENGTH_SHORT).show(); + showTip(R.string.copied_to_clipboard, LENGTH_SHORT); return true; } else { return false; diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryListScene.java b/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryListScene.java index 5f0c72dc5..cf681ae29 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryListScene.java +++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryListScene.java @@ -44,7 +44,6 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; -import android.widget.Toast; import com.hippo.drawable.AddDeleteDrawable; import com.hippo.drawable.DrawerArrowDrawable; @@ -372,7 +371,7 @@ public final class GalleryListScene extends BaseScene if (time - mPressBackTime > BACK_PRESSED_INTERVAL) { // It is the last scene mPressBackTime = time; - Toast.makeText(getContext(), R.string.press_twice_exit, Toast.LENGTH_SHORT).show(); + showTip(R.string.press_twice_exit, LENGTH_SHORT); return true; } else { return false; @@ -466,7 +465,9 @@ public final class GalleryListScene extends BaseScene CommonOperations.startDownload(getActivity(), gi); break; case 1: // Favorites - CommonOperations.addToFavorites(getActivity(), gi, new addToFavoriteListener()); + CommonOperations.addToFavorites(getActivity(), gi, + new addToFavoriteListener(getContext(), + ((StageActivity) getActivity()).getStageId(), getTag())); break; } } @@ -616,7 +617,7 @@ public final class GalleryListScene extends BaseScene if (mSearchLayout.isSpecifyGallery()) { int index = query.indexOf(' '); if (index <= 0 || index >= query.length() - 1) { - Toast.makeText(getContext(), "Error", Toast.LENGTH_SHORT).show(); // TODO + showTip(R.string.error_invalid_specify_gallery, LENGTH_LONG); return; } @@ -625,7 +626,7 @@ public final class GalleryListScene extends BaseScene try { gid = Long.parseLong(query.substring(0, index)); } catch (NumberFormatException e) { - Toast.makeText(getContext(), "Error", Toast.LENGTH_SHORT).show(); // TODO + showTip(R.string.error_invalid_specify_gallery, LENGTH_LONG); return; } token = query.substring(index + 1); @@ -953,19 +954,28 @@ public final class GalleryListScene extends BaseScene } } - private class addToFavoriteListener implements EhClient.Callback { + private static class addToFavoriteListener extends EhCallback { + + public addToFavoriteListener(Context context, int stageId, String sceneTag) { + super(context, stageId, sceneTag); + } @Override public void onSuccess(Void result) { - Toast.makeText(getContext(), R.string.add_to_favorite_success, Toast.LENGTH_SHORT).show(); + showTip(R.string.add_to_favorite_success, LENGTH_SHORT); } @Override public void onFailure(Exception e) { - Toast.makeText(getContext(), R.string.add_to_favorite_failure, Toast.LENGTH_SHORT).show(); + showTip(R.string.add_to_favorite_failure, LENGTH_SHORT); } @Override public void onCancel() {} + + @Override + public boolean isInstance(SceneFragment scene) { + return scene instanceof GalleryListScene; + } } } diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryPreviewsScene.java b/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryPreviewsScene.java index e075cd4c9..1d6671d79 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryPreviewsScene.java +++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryPreviewsScene.java @@ -33,7 +33,6 @@ import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; -import android.widget.Toast; import com.hippo.easyrecyclerview.EasyRecyclerView; import com.hippo.easyrecyclerview.MarginItemDecoration; @@ -408,7 +407,7 @@ public class GalleryPreviewsScene extends ToolbarScene implements EasyRecyclerVi mDialog = null; } } else { - Toast.makeText(getContext(), R.string.error_out_of_range, Toast.LENGTH_SHORT).show(); + showTip(R.string.error_out_of_range, LENGTH_SHORT); } } diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 212f16537..6d2a71963 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -15,37 +15,44 @@ ~ limitations under the License. --> - - + android:fitsSystemWindows="true"> - + - + - + + + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 2e03d3f1a..9560121ba 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -94,6 +94,7 @@ 509 Invalid url Get pToken error + Keyword should looks like \"618395 0439fa3666\" for specify gallery The content of this application is from the Internet. Some of it may do physical or mental harm to you. You have learnt the risks above and would like to undertake them. Do you want to use this application? Username cannot be an empty string