Add CommentScene
This commit is contained in:
1 parent
76e9dac1f6
commit
a01e43ea95
7 files changed
+194
-6
No files matched your search
@@ -0,0 +1,139 @@
|
||||
package com.hippo.ehviewer.ui.scene;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.res.Resources;
|
||||
import android.os.Bundle;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.support.v7.widget.LinearLayoutManager;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.text.Html;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.hippo.ehviewer.EhApplication;
|
||||
import com.hippo.ehviewer.R;
|
||||
import com.hippo.ehviewer.data.Comment;
|
||||
import com.hippo.rippleold.RippleSalon;
|
||||
import com.hippo.scene.Announcer;
|
||||
import com.hippo.scene.AppbarScene;
|
||||
import com.hippo.util.URLImageGetter;
|
||||
import com.hippo.util.UiUtils;
|
||||
import com.hippo.widget.recyclerview.EasyRecyclerView;
|
||||
import com.hippo.widget.recyclerview.LinearDividerItemDecoration;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class CommentScene extends AppbarScene {
|
||||
|
||||
private EasyRecyclerView mRecyclerView;
|
||||
private CommentAdapter mAdapter;
|
||||
|
||||
private List<Comment> mCommentList;
|
||||
|
||||
private void handleAnnouncer(Announcer announcer) {
|
||||
if (announcer != null) {
|
||||
mCommentList = (List<Comment>) announcer.getObject();
|
||||
mAdapter.notifyDataSetChanged();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onCreate(@Nullable Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
onCreateView();
|
||||
if (savedInstanceState == null) {
|
||||
onBindView();
|
||||
} else {
|
||||
onRestoreView(savedInstanceState);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void onCreateView() {
|
||||
Context context = getStageActivity();
|
||||
Resources resources = context.getResources();
|
||||
|
||||
setContentView(R.layout.scene_comment);
|
||||
setTitle(R.string.comments);
|
||||
setIcon(R.drawable.ic_arrow_left_dark);
|
||||
|
||||
mRecyclerView = (EasyRecyclerView) findViewById(R.id.recycler_view);
|
||||
|
||||
mAdapter = new CommentAdapter();
|
||||
mRecyclerView.setAdapter(mAdapter);
|
||||
mRecyclerView.setLayoutManager(new LinearLayoutManager(context, LinearLayoutManager.VERTICAL, false));
|
||||
LinearDividerItemDecoration decoration = new LinearDividerItemDecoration(
|
||||
LinearDividerItemDecoration.VERTICAL, resources.getColor(R.color.divider_light),
|
||||
UiUtils.dp2pix(getStageActivity(), 1));
|
||||
decoration.setShowLastDivider(true);
|
||||
decoration.setPadding(resources.getDimensionPixelOffset(R.dimen.keyline_margin));
|
||||
mRecyclerView.addItemDecoration(decoration);
|
||||
mRecyclerView.setSelector(RippleSalon.generateRippleDrawable(false));
|
||||
mRecyclerView.setClipToPadding(false);
|
||||
}
|
||||
|
||||
private void onBindView() {
|
||||
handleAnnouncer(getAnnouncer());
|
||||
}
|
||||
|
||||
private void onRestoreView(@Nullable Bundle savedInstanceState) {
|
||||
// Empty
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onIconClick() {
|
||||
finish();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onGetFitPaddingBottom(int b) {
|
||||
if (mRecyclerView != null) {
|
||||
mRecyclerView.setPadding(0, 0, 0, b);
|
||||
}
|
||||
}
|
||||
|
||||
private static class CommentHolder extends RecyclerView.ViewHolder {
|
||||
|
||||
private TextView user;
|
||||
private TextView time;
|
||||
private TextView comment;
|
||||
|
||||
public CommentHolder(View itemView) {
|
||||
super(itemView);
|
||||
|
||||
user = (TextView) itemView.findViewById(R.id.user);
|
||||
time = (TextView) itemView.findViewById(R.id.time);
|
||||
comment = (TextView) itemView.findViewById(R.id.comment);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private class CommentAdapter extends RecyclerView.Adapter<CommentHolder> {
|
||||
|
||||
@Override
|
||||
public CommentHolder onCreateViewHolder(ViewGroup parent, int viewType) {
|
||||
return new CommentHolder(getStageActivity().getLayoutInflater().inflate(
|
||||
R.layout.item_comment, parent, false));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBindViewHolder(CommentHolder holder, int position) {
|
||||
Comment comment = mCommentList.get(position);
|
||||
holder.user.setText(comment.user);
|
||||
holder.time.setText(comment.time);
|
||||
URLImageGetter p = new URLImageGetter(
|
||||
holder.comment, EhApplication.getConaco(getStageActivity()));
|
||||
holder.comment.setText(Html.fromHtml(comment.comment, p, null));
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getItemCount() {
|
||||
if (mCommentList != null) {
|
||||
return mCommentList.size();
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -146,6 +146,7 @@ public class GalleryDetailScene extends Scene implements View.OnClickListener {
|
||||
mTorrent.setOnClickListener(this);
|
||||
mShare.setOnClickListener(this);
|
||||
mRate.setOnClickListener(this);
|
||||
mCommentMore.setOnClickListener(this);
|
||||
|
||||
RippleSalon.addRipple(mRead, false);
|
||||
RippleSalon.addRipple(mDownload, false);
|
||||
@@ -219,6 +220,10 @@ public class GalleryDetailScene extends Scene implements View.OnClickListener {
|
||||
} else if (v == mShare) {
|
||||
StartActivityHelper.share(getStageActivity(),
|
||||
EhClient.getDetailUrl(Config.getEhSource(), gd.gid, gd.token, 0));
|
||||
} else if (v == mCommentMore) {
|
||||
Announcer announcer = new Announcer();
|
||||
announcer.setObject(mGalleryDetail.comments);
|
||||
startScene(CommentScene.class, announcer);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -323,12 +328,9 @@ public class GalleryDetailScene extends Scene implements View.OnClickListener {
|
||||
TextView commentText = (TextView) view.findViewById(R.id.comment);
|
||||
commentText.setMaxLines(3);
|
||||
commentText.setAutoLinkMask(0);
|
||||
|
||||
|
||||
URLImageGetter p = new URLImageGetter(
|
||||
commentText, EhApplication.getConaco(getStageActivity()));
|
||||
commentText.setText(Html.fromHtml(comment.comment, p, null));
|
||||
|
||||
return view;
|
||||
}
|
||||
|
||||
|
||||
@@ -22,10 +22,21 @@ import android.support.annotation.Nullable;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
// TODO Do not copy Intent, set clone stuff and non-clone stuff
|
||||
public class Announcer {
|
||||
|
||||
private @Nullable Bundle mExtras;
|
||||
|
||||
private Object mObject;
|
||||
|
||||
public void setObject(Object object) {
|
||||
mObject = object;
|
||||
}
|
||||
|
||||
public Object getObject() {
|
||||
return mObject;
|
||||
}
|
||||
|
||||
public boolean getBooleanExtra(String name, boolean defaultValue) {
|
||||
return mExtras == null ? defaultValue :
|
||||
mExtras.getBoolean(name, defaultValue);
|
||||
|
||||
@@ -23,7 +23,9 @@
|
||||
|
||||
<ScrollView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
android:layout_height="match_parent"
|
||||
android:overScrollMode="never"
|
||||
android:scrollbarThumbVertical="@null">
|
||||
|
||||
<FrameLayout
|
||||
android:id="@+id/detail_frame_layout"
|
||||
|
||||
@@ -17,8 +17,8 @@
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingLeft="16dp"
|
||||
android:paddingRight="16dp"
|
||||
android:paddingLeft="@dimen/keyline_margin"
|
||||
android:paddingRight="@dimen/keyline_margin"
|
||||
android:paddingTop="8dp"
|
||||
android:paddingBottom="8dp" >
|
||||
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
~ Copyright (C) 2014-2015 Hippo Seven
|
||||
~
|
||||
~ Licensed under the Apache License, Version 2.0 (the "License");
|
||||
~ you may not use this file except in compliance with the License.
|
||||
~ You may obtain a copy of the License at
|
||||
~
|
||||
~ http://www.apache.org/licenses/LICENSE-2.0
|
||||
~
|
||||
~ Unless required by applicable law or agreed to in writing, software
|
||||
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
~ See the License for the specific language governing permissions and
|
||||
~ limitations under the License.
|
||||
-->
|
||||
<FrameLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<com.hippo.widget.recyclerview.EasyRecyclerView
|
||||
android:id="@+id/recycler_view"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"/>
|
||||
|
||||
<com.hippo.widget.FloatingActionButton
|
||||
android:id="@+id/reply"
|
||||
style="@style/FloatingActionButton"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"/>
|
||||
|
||||
</FrameLayout>
|
||||
@@ -147,4 +147,6 @@
|
||||
<string name="torrent">Torrent</string>
|
||||
<string name="share">Share</string>
|
||||
|
||||
<string name="comments">Comments</string>
|
||||
|
||||
</resources>
|
||||
Reference in new issue
Block a user