package com.jbirdvegas.mgerrit.cards;
/*
* Copyright (C) 2013 Android Open Kang Project (AOKP)
* Author: Jon Stanford (JBirdVegas), 2013
*
* 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
* distributed under the License is distributed on an "AS IS" BASIS,
* 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.
*/
import android.content.Context;
import android.database.Cursor;
import android.support.v4.app.FragmentActivity;
import android.text.util.Linkify;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.android.volley.RequestQueue;
import com.android.volley.toolbox.ImageLoader;
import com.android.volley.toolbox.NetworkImageView;
import com.jbirdvegas.mgerrit.Prefs;
import com.jbirdvegas.mgerrit.R;
import com.jbirdvegas.mgerrit.caches.BitmapLruCache;
import com.jbirdvegas.mgerrit.database.UserMessage;
import com.jbirdvegas.mgerrit.helpers.EmoticonSupportHelper;
import com.jbirdvegas.mgerrit.helpers.GravatarHelper;
import com.jbirdvegas.mgerrit.helpers.Tools;
import org.jetbrains.annotations.NotNull;
public class PatchSetCommentsCard implements CardBinder {
private RequestQueue mRequestQuery;
private Context mContext;
private final FragmentActivity mActivity;
private final LayoutInflater mInflater;
// Cursor indices
private Integer message_index;
private Integer authorId_index;
private Integer authorName_index;
private Integer authorEmail_index;
private Integer timestamp_index;
public PatchSetCommentsCard(Context context, RequestQueue requestQueue) {
mRequestQuery = requestQueue;
mContext = context;
mActivity = (FragmentActivity) context;
mInflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
public View setViewValue(Cursor cursor, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = mInflater.inflate(R.layout.commit_comment, parent, false);
}
ViewHolder viewHolder = (ViewHolder) convertView.getTag();
if (viewHolder == null) {
viewHolder = new ViewHolder(convertView);
convertView.setTag(viewHolder);
}
setIndicies(cursor);
TextView author = viewHolder.authorTextView;
Integer authorNumber = cursor.getInt(authorId_index);
author.setTag(authorNumber);
author.setText(cursor.getString(authorName_index));
author.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
setTrackingUser((Integer) v.getTag());
}
});
String timestamp = cursor.getString(timestamp_index);
if (timestamp != null) {
viewHolder.timestamp.setText(Tools.prettyPrintDateTime(mContext, timestamp,
Prefs.getServerTimeZone(mContext),
Prefs.getLocalTimeZone(mContext)));
}
// setup styled comments
// use Linkify to automatically linking http/email/addresses
Linkify.addLinks(viewHolder.commentMessage, Linkify.ALL);
// replace replace emoticons with drawables
viewHolder.commentMessage.setText(EmoticonSupportHelper.getSmiledText(mContext,
cursor.getString(message_index)));
// set gravatar icon for commenter
viewHolder.gravatar.setImageUrl(GravatarHelper.getGravatarUrl(
cursor.getString(authorEmail_index)),
new ImageLoader(mRequestQuery, new BitmapLruCache(mContext)));
return convertView;
}
private void setTrackingUser(Integer user) {
Prefs.setTrackingUser(mContext, user);
if (!Prefs.isTabletMode(mContext)) mActivity.finish();
}
private void setIndicies(@NotNull Cursor cursor) {
// These indices will not change regardless of the view
if (message_index == null) {
message_index = cursor.getColumnIndex(UserMessage.C_MESSAGE);
}
if (authorId_index == null) {
authorId_index = cursor.getColumnIndex(UserMessage.C_AUTHOR);
}
if (authorName_index == null) {
authorName_index = cursor.getColumnIndex(UserMessage.C_NAME);
}
if (authorEmail_index == null) {
authorEmail_index = cursor.getColumnIndex(UserMessage.C_EMAIL);
}
if (timestamp_index == null) {
timestamp_index = cursor.getColumnIndex(UserMessage.C_TIMESTAMP);
}
}
private static class ViewHolder {
TextView authorTextView;
TextView commentMessage;
NetworkImageView gravatar;
TextView timestamp;
private ViewHolder(View view) {
authorTextView = (TextView) view.findViewById(R.id.comment_author_name);
commentMessage = (TextView) view.findViewById(R.id.comment_message);
gravatar = (NetworkImageView) view.findViewById(R.id.comment_gravatar);
timestamp = (TextView) view.findViewById(R.id.comment_timestamp);
}
}
}