From 4064510b14316e46445eee9b38caef045461c107 Mon Sep 17 00:00:00 2001 From: seven332 Date: Wed, 8 May 2019 11:29:59 +0800 Subject: [PATCH] Implement editing comment --- .../com/hippo/ehviewer/client/EhClient.java | 2 +- .../com/hippo/ehviewer/client/EhEngine.java | 6 +-- .../ui/scene/GalleryCommentsScene.java | 40 ++++++++++++++++--- .../main/res/drawable/v_pencil_dark_x24.xml | 29 ++++++++++++++ .../res/layout/scene_gallery_comments.xml | 3 +- app/src/main/res/values-zh-rCN/strings.xml | 2 + app/src/main/res/values-zh-rHK/strings.xml | 2 + app/src/main/res/values-zh-rTW/strings.xml | 2 + app/src/main/res/values/pathdata.xml | 1 + app/src/main/res/values/strings.xml | 2 + 10 files changed, 77 insertions(+), 12 deletions(-) create mode 100644 app/src/main/res/drawable/v_pencil_dark_x24.xml diff --git a/app/src/main/java/com/hippo/ehviewer/client/EhClient.java b/app/src/main/java/com/hippo/ehviewer/client/EhClient.java index 0ff6d0828..327ca93c3 100644 --- a/app/src/main/java/com/hippo/ehviewer/client/EhClient.java +++ b/app/src/main/java/com/hippo/ehviewer/client/EhClient.java @@ -148,7 +148,7 @@ public class EhClient { case METHOD_GET_RATE_GALLERY: return EhEngine.rateGallery(this, mOkHttpClient, (Long) params[0], (String) params[1], (Long) params[2], (String) params[3], (Float) params[4]); case METHOD_GET_COMMENT_GALLERY: - return EhEngine.commentGallery(this, mOkHttpClient, (String) params[0], (String) params[1], (String) params[1]); + return EhEngine.commentGallery(this, mOkHttpClient, (String) params[0], (String) params[1], (String) params[2]); case METHOD_GET_GALLERY_TOKEN: return EhEngine.getGalleryToken(this, mOkHttpClient, (Long) params[0], (String) params[1], (Integer) params[2]); case METHOD_GET_FAVORITES: diff --git a/app/src/main/java/com/hippo/ehviewer/client/EhEngine.java b/app/src/main/java/com/hippo/ehviewer/client/EhEngine.java index 6acaf7b23..6236f4793 100644 --- a/app/src/main/java/com/hippo/ehviewer/client/EhEngine.java +++ b/app/src/main/java/com/hippo/ehviewer/client/EhEngine.java @@ -422,10 +422,10 @@ public class EhEngine { OkHttpClient okHttpClient, String url, String comment, String id) throws Throwable { FormBody.Builder builder = new FormBody.Builder(); if (id == null) { - builder.add("commenttext_new", comment); + builder.add("commenttext_new", comment); } else { - builder.add("commenttext_edit", comment); - builder.add("edit_comment", id); + builder.add("commenttext_edit", comment); + builder.add("edit_comment", id); } String origin = EhUrl.getOrigin(); Log.d(TAG, url); 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 865179805..01c19cfab 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 @@ -126,6 +126,10 @@ public final class GalleryCommentsScene extends ToolbarScene @Nullable private ViewTransition mViewTransition; + private Drawable mSendDrawable; + private Drawable mPencilDrawable; + private long mCommentId; + private boolean mInAnimation = false; @Override @@ -201,6 +205,9 @@ public final class GalleryCommentsScene extends ToolbarScene drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight()); tip.setCompoundDrawables(null, drawable, null, null); + mSendDrawable = DrawableManager.getVectorDrawable(context, R.drawable.v_send_dark_x24); + mPencilDrawable = DrawableManager.getVectorDrawable(context, R.drawable.v_pencil_dark_x24); + mAdapter = new CommentAdapter(); mRecyclerView.setAdapter(mAdapter); mRecyclerView.setLayoutManager(new LinearLayoutManager(context, @@ -402,7 +409,10 @@ public final class GalleryCommentsScene extends ToolbarScene showVoteStatusDialog(context, comment.voteState); break; case R.id.edit_comment: - // TODO + prepareEditComment(comment.id); + if (!mInAnimation && mEditPanel != null && mEditPanel.getVisibility() != View.VISIBLE) { + showEditPanel(true); + } break; } } @@ -445,6 +455,20 @@ public final class GalleryCommentsScene extends ToolbarScene } } + private void prepareNewComment() { + mCommentId = 0; + if (mSendImage != null) { + mSendImage.setImageDrawable(mSendDrawable); + } + } + + private void prepareEditComment(long commentId) { + mCommentId = commentId; + if (mSendImage != null) { + mSendImage.setImageDrawable(mPencilDrawable); + } + } + private void showEditPanelWithAnimation() { if (null == mFab || null == mEditPanel) { return; @@ -574,6 +598,7 @@ public final class GalleryCommentsScene extends ToolbarScene if (mFab == v) { if (!mInAnimation) { + prepareNewComment(); showEditPanel(true); } } else if (mSendImage == v) { @@ -590,9 +615,9 @@ public final class GalleryCommentsScene extends ToolbarScene // Request EhRequest request = new EhRequest() .setMethod(EhClient.METHOD_GET_COMMENT_GALLERY) - .setArgs(url, comment, null) + .setArgs(url, comment, mCommentId != 0 ? Long.toString(mCommentId) : null) .setCallback(new CommentGalleryListener(context, - activity.getStageId(), getTag())); + activity.getStageId(), getTag(), mCommentId)); EhApplication.getEhClient(context).execute(request); hideSoftInput(); hideEditPanel(true); @@ -735,13 +760,16 @@ public final class GalleryCommentsScene extends ToolbarScene private static class CommentGalleryListener extends EhCallback { - public CommentGalleryListener(Context context, int stageId, String sceneTag) { + private long mCommentId; + + public CommentGalleryListener(Context context, int stageId, String sceneTag, long commentId) { super(context, stageId, sceneTag); + mCommentId = commentId; } @Override public void onSuccess(GalleryComment[] result) { - showTip(R.string.comment_successfully, LENGTH_SHORT); + showTip(mCommentId != 0 ? R.string.edit_comment_successfully : R.string.comment_successfully, LENGTH_SHORT); GalleryCommentsScene scene = getScene(); if (scene != null) { @@ -751,7 +779,7 @@ public final class GalleryCommentsScene extends ToolbarScene @Override public void onFailure(Exception e) { - showTip(getContent().getString(R.string.comment_failed) + "\n" + ExceptionUtils.getReadableString(e), LENGTH_LONG); + showTip(getContent().getString(mCommentId != 0 ? R.string.edit_comment_failed : R.string.comment_failed) + "\n" + ExceptionUtils.getReadableString(e), LENGTH_LONG); } @Override diff --git a/app/src/main/res/drawable/v_pencil_dark_x24.xml b/app/src/main/res/drawable/v_pencil_dark_x24.xml new file mode 100644 index 000000000..0818a4e59 --- /dev/null +++ b/app/src/main/res/drawable/v_pencil_dark_x24.xml @@ -0,0 +1,29 @@ + + + + + + + + diff --git a/app/src/main/res/layout/scene_gallery_comments.xml b/app/src/main/res/layout/scene_gallery_comments.xml index 2b96cafe8..9116f26fb 100644 --- a/app/src/main/res/layout/scene_gallery_comments.xml +++ b/app/src/main/res/layout/scene_gallery_comments.xml @@ -75,8 +75,7 @@ android:layout_width="56dp" android:layout_height="56dp" android:layout_gravity="bottom" - android:padding="16dp" - app:srcCompat="@drawable/v_send_dark_x24"/> + android:padding="16dp"/> diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index afd13a0da..4ca1e6d3b 100755 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -280,6 +280,8 @@ 评论失败 复制评论文字 修改评论 + 评论已被修改 + 修改评论失败 深表赞同 不再深表赞同 垃圾评论 diff --git a/app/src/main/res/values-zh-rHK/strings.xml b/app/src/main/res/values-zh-rHK/strings.xml index 0c3b9c51c..910ba6dbb 100755 --- a/app/src/main/res/values-zh-rHK/strings.xml +++ b/app/src/main/res/values-zh-rHK/strings.xml @@ -280,6 +280,8 @@ 評論失敗 複製評論文字 修改評論 + 評論已被修改 + 修改評論失敗 深表贊同 不再深表贊同 垃圾評論 diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 7c5ca0af2..b1d223e24 100755 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -279,6 +279,8 @@ 留言失敗 複製留言文字 修改留言 + 留言已被修改 + 修改留言失敗 推 收回推 噓 diff --git a/app/src/main/res/values/pathdata.xml b/app/src/main/res/values/pathdata.xml index 8b8c1ea7f..7462fc164 100644 --- a/app/src/main/res/values/pathdata.xml +++ b/app/src/main/res/values/pathdata.xml @@ -65,6 +65,7 @@ M13,9H18.5L13,3.5V9M6,2H14L20,8V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V4C4,2.89 4.89,2 6,2M6,20H15L18,20V12L14,16L12,14L6,20M8,9A2,2 0 0,0 6,11A2,2 0 0,0 8,13A2,2 0 0,0 10,11A2,2 0 0,0 8,9Z M20,8H4V6h16V8 M18,2H6v2h12V2 M20,10H4c-1.1,0-2,0.9-2,2v8c0,1.1,0.9,2,2,2h16c1.1,0,2-0.9,2-2v-8C22,10.9,21.1,10,20,10zM11,14H7v1h4v2H7v1h4v2H5v-8h6V14z M19,20h-2v-3h-2v3h-2v-8h2v3h2v-3h2V20z M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z + M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z M12.88,2H4V11L14.97,22.14L24,13.1L12.88,2ZM7.26,5.26C7.96,4.58,9.06,4.58,9.74,5.26C10.42,5.96,10.42,7.06,9.74,7.74S7.94,8.42,7.26,7.74S6.58,5.94,7.26,5.26ZM14.98,19.3L8.76,12.95L14.88,6.83L21.18,13.11L14.98,19.31ZM11.6,21.56L10.23,23L0,12.74V5H2V11.9L11.6,21.56Z M20.46,14.65C21.86,16.15,20.31,18.6,18.32,17.87C19.78,17.57,20.79,16.37,20.46,14.65ZM4.32,17.87C6.32,18.6,7.86,16.17,6.46,14.65C6.79,16.38,5.78,17.55,4.32,17.87ZM16.87,4.3C16.6,3.56,15.87,3,15,3C13.7,3,12.7,4.24,13.1,5.58C14.2,5.18,15.44,4.48,16.87,4.31ZM24,16C24,18.76,21.76,21,19,21C14.96,21,14.84,16.88,12,16.88S9.04,21,5,21C2.24,21,0,18.76,0,16C0,13.87,1.53,11.43,3.94,7.18C5.84,3.81,8.69,5.92,10.76,6.58C11.54,6.85,12.41,6.88,13.24,6.58C15.3,5.92,18.14,3.81,20.06,7.18C22.46,11.43,24,13.88,24,16ZM8,16C8,14.35,6.65,13,5,13S2,14.35,2,16S3.35,19,5,19S8,17.65,8,16ZM13,14C13,13.45,12.55,13,12,13S11,13.45,11,14S11.45,15,12,15S13,14.55,13,14ZM22,16C22,14.35,20.65,13,19,13S16,14.35,16,16S17.35,19,19,19S22,17.65,22,16ZM9,3C8.14,3,7.4,3.55,7.13,4.3C8.56,4.48,9.79,5.2,10.9,5.58C11.3,4.24,10.3,3,9,3Z diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index cd34541de..6bcf52298 100755 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -326,6 +326,8 @@ Failed to post the comment Copy comment text Edit comment + The comment has been edited + Failed to edit the comment Vote up Cancel up-vote Vote down