package com.linangran.tgfcapp.adapters;
import android.content.Context;
import android.content.Intent;
import android.os.AsyncTask;
import android.text.Html;
import android.text.Spanned;
import android.util.TypedValue;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;
import com.linangran.tgfcapp.R;
import com.linangran.tgfcapp.activities.PostActivity;
import com.linangran.tgfcapp.data.ContentListItemData;
import com.linangran.tgfcapp.fragments.ContentFragment;
import com.linangran.tgfcapp.fragments.ContentListPageFragment;
import com.linangran.tgfcapp.tasks.ContentListDownloadTask;
import com.linangran.tgfcapp.utils.PreferenceUtils;
import com.linangran.tgfcapp.views.AsyncImageGetter;
import com.linangran.tgfcapp.views.ListLinearLayout;
import java.util.ArrayList;
import java.util.List;
/**
* Created by linangran on 5/1/15.
*/
public class ContentListAdapter
{
private List<ContentListItemData> dataList = new ArrayList<ContentListItemData>();
private LayoutInflater layoutInflater;
private Context context;
private int tid;
private int page;
private ContentListDownloadTask downloadTask;
private ContentFragment contentFragment;
private ContentListPageFragment contentListPageFragment;
public ListLinearLayout parentListLinearLayout;
private int themeColorPrimary;
private int themeColorAnnotationText;
private View.OnClickListener quoteReplyListener = new View.OnClickListener()
{
@Override
public void onClick(View view)
{
View item = (View) view.getParent().getParent();
ContentListItemData itemData = (ContentListItemData) item.getTag();
Intent intent = new Intent(view.getContext(), PostActivity.class);
intent.putExtra("isReply", true);
intent.putExtra("hasQuote", true);
intent.putExtra("isEdit", false);
intent.putExtra("fid", contentFragment.fid);
intent.putExtra("tid", contentFragment.tid);
intent.putExtra("quotePid", itemData.pid);
intent.putExtra("quotedText", itemData.mainText);
intent.putExtra("mainTitle", contentFragment.title);
view.getContext().startActivity(intent);
}
};
public void abortTask()
{
if (this.downloadTask != null && this.downloadTask.getStatus().equals(AsyncTask.Status.RUNNING))
{
this.downloadTask.cancel(true);
}
}
public ContentListAdapter(ContentFragment contentFragment, ContentListPageFragment contentListPageFragment, int tid, int page)
{
super();
this.context = contentFragment.getActivity();
this.layoutInflater = (LayoutInflater) this.context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
this.tid = tid;
this.page = page;
this.contentFragment = contentFragment;
this.contentListPageFragment = contentListPageFragment;
startDownloading(false);
TypedValue typedValue = new TypedValue();
this.contentFragment.getActivity().getTheme().resolveAttribute(R.attr.themeColorPrimary, typedValue, true);
this.themeColorPrimary = typedValue.data;
this.contentFragment.getActivity().getTheme().resolveAttribute(R.attr.themeColorAnnotationText, typedValue, true);
this.themeColorAnnotationText = typedValue.data;
}
public ContentListAdapter(ContentFragment contentFragment, ContentListPageFragment contentListPageFragment, int tid, int page, List<ContentListItemData> dataList)
{
super();
this.context = contentFragment.getActivity();
this.layoutInflater = (LayoutInflater) this.context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
this.tid = tid;
this.page = page;
this.contentFragment = contentFragment;
this.contentListPageFragment = contentListPageFragment;
this.dataList = dataList;
}
public int getCount()
{
return dataList.size();
}
public boolean isTaskRunning()
{
return this.downloadTask != null && this.downloadTask.getStatus().equals(AsyncTask.Status.RUNNING);
}
public void startDownloading(boolean isRefreshing)
{
if (isTaskRunning() == false)
{
this.downloadTask = new ContentListDownloadTask(this.contentListPageFragment, this.contentFragment);
this.downloadTask.setRefreshing(isRefreshing);
this.downloadTask.execute(this.tid, this.page);
}
}
public Object getItem(int i)
{
return dataList.get(i);
}
public long getItemId(int i)
{
return dataList.get(i).floorNum;
}
public View getView(int i, View convertView, ViewGroup viewGroup)
{
if (convertView == null)
{
convertView = this.layoutInflater.inflate(R.layout.content_list_fragment_page_list_view_item, viewGroup, false);
}
ContentListItemData itemData = dataList.get(i);
convertView.setTag(itemData);
TextView posterNameTextView = (TextView) convertView.findViewById(R.id.content_list_fragment_page_list_view_item_poster_name);
TextView ratingTextView = (TextView) convertView.findViewById(R.id.content_list_fragment_page_list_view_item_rating);
TextView postTimeTextView = (TextView) convertView.findViewById(R.id.content_list_fragment_page_list_view_item_time);
TextView floorNumTextView = (TextView) convertView.findViewById(R.id.content_list_fragment_page_list_view_item_floor_num);
TextView quoteInfoTextView = (TextView) convertView.findViewById(R.id.content_list_fragment_page_list_view_item_quote_info);
TextView quotedTextTextView = (TextView) convertView.findViewById(R.id.content_list_fragment_page_list_view_item_quoted_text);
TextView mainTextTextView = (TextView) convertView.findViewById(R.id.content_list_fragment_page_list_view_item_main_text);
LinearLayout quoteLayout = (LinearLayout) convertView.findViewById(R.id.content_list_fragment_page_list_view_item_quote_layout);
TextView platformTextView = (TextView) convertView.findViewById(R.id.content_list_fragment_page_list_view_item_platform);
ImageView shareImageView = (ImageView) convertView.findViewById(R.id.content_list_fragment_page_list_view_item_share);
ImageView editImageView = (ImageView) convertView.findViewById(R.id.content_list_fragment_page_list_view_item_edit);
ImageView plusImageView = (ImageView) convertView.findViewById(R.id.content_list_fragment_page_list_view_item_rate);
ImageView quoteImageView = (ImageView) convertView.findViewById(R.id.content_list_fragment_page_list_view_item_quote);
RelativeLayout postInfoRelativeLayout = (RelativeLayout) convertView.findViewById(R.id.content_list_fragment_page_list_view_item_post_info);
posterNameTextView.setText(itemData.posterName);
postTimeTextView.setText(itemData.posterTime);
if (itemData.ratings == 0)
{
ratingTextView.setVisibility(View.INVISIBLE);
for (int cindex = 0; cindex < postInfoRelativeLayout.getChildCount(); cindex++)
{
TextView contentTextView = (TextView) postInfoRelativeLayout.getChildAt(cindex);
contentTextView.setTextColor(this.themeColorAnnotationText);
}
}
else
{
ratingTextView.setVisibility(View.VISIBLE);
ratingTextView.setText("+" + itemData.ratings);
for (int cindex = 0; cindex < postInfoRelativeLayout.getChildCount(); cindex++)
{
TextView contentTextView = (TextView) postInfoRelativeLayout.getChildAt(cindex);
contentTextView.setTextColor(this.themeColorPrimary);
}
}
floorNumTextView.setText("#" + itemData.floorNum);
if (itemData.quotedInfo != null)
{
quoteLayout.setVisibility(View.VISIBLE);
quoteInfoTextView.setText(itemData.quotedInfo);
quotedTextTextView.setText(itemData.quotedText);
}
else
{
quoteLayout.setVisibility(View.GONE);
}
if (itemData.canEdit)
{
editImageView.setVisibility(View.VISIBLE);
plusImageView.setVisibility(View.GONE);
editImageView.setOnClickListener(new ReplyListener(itemData.pid));
}
else
{
editImageView.setVisibility(View.GONE);
plusImageView.setVisibility(View.VISIBLE);
}
//itemData.mainText = itemData.mainText.replaceAll(" ... ", "...");
//Log.w("", itemData.mainText);
Spanned spannedText = Html.fromHtml(itemData.mainText, new AsyncImageGetter(mainTextTextView, context), null);
mainTextTextView.setText(spannedText);
platformTextView.setText(itemData.platformInfo);
quoteImageView.setOnClickListener(quoteReplyListener);
if (PreferenceUtils.hideQuickPanel())
{
shareImageView.setVisibility(View.GONE);
plusImageView.setVisibility(View.GONE);
}
return convertView;
}
public void updateContentDataList(List<ContentListItemData> dataList)
{
this.dataList.clear();
this.dataList.addAll(dataList);
this.parentListLinearLayout.updateView();
return;
}
public boolean isEmpty()
{
return dataList == null || dataList.size() == 0;
}
private class ReplyListener implements View.OnClickListener
{
int pid;
public ReplyListener(int pid)
{
this.pid = pid;
}
@Override
public void onClick(View v)
{
Intent intent = new Intent(contentFragment.getActivity(), PostActivity.class);
intent.putExtra("isEdit", true);
intent.putExtra("editPid", pid);
intent.putExtra("tid", tid);
contentFragment.startActivity(intent);
}
}
}