package com.cnblogs.android.ui.tab1;
import java.util.ArrayList;
import java.util.List;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.res.Resources;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.ListView;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;
import com.cnblogs.android.AuthorBlogActivity;
import com.cnblogs.android.R;
import com.cnblogs.android.SuperView;
import com.cnblogs.android.core.BlogHelper;
import com.cnblogs.android.entity.Blog;
import com.cnblogs.android.enums.EnumActivityType;
import com.cnblogs.android.utility.NetHelper;
/**
* 48Сʱ���Ķ�����+10�����Ƽ�����
*
* @author walkingp
* @date 2012-3
*/
public class BlogTopViewDiggView extends SuperView {
List<Blog> listBlog = new ArrayList<Blog>();
BlogListAdp adapter;
ListView listView;
ProgressBar progressBar;// ����
ProgressBar topProgressBar;// ͷ��������
Resources res;// ��Դ
SharedPreferences sharePreferencesSettings;// ����
EnumActivityType.EnumOrderActivityType activityType;
Button btnBack;// ��ť
ImageButton btnRefresh;// ˢ�°�ť
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.setContentView(R.layout.blog_top_view_digg_layout);
res = this.getResources();
BindControls();
BindEvent();
new PageTask().execute();
}
/**
* �ҵ��ؼ�
*/
private void BindControls() {
activityType = EnumActivityType.EnumOrderActivityType.values()[getIntent()
.getIntExtra("type", 0)];
TextView txtAppTitle = (TextView) findViewById(R.id.txtAppTitle);
switch (activityType) {
case TopDiggBlogIn10Days:
txtAppTitle.setText("10�����Ƽ�����");
break;
case TopViewBlogIn48Hours:
txtAppTitle.setText("48Сʱ���Ķ�����");
break;
}
listView = (ListView) findViewById(R.id.blog_list);
// �����ת
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View v,
int position, long id) {
RedirectDetailActivity(v);
}
});
progressBar = (ProgressBar) findViewById(R.id.blogList_progressBar);
topProgressBar = (ProgressBar) findViewById(R.id.blog_progressBar);
btnRefresh = (ImageButton) findViewById(R.id.blog_refresh_btn);
btnBack = (Button) findViewById(R.id.btn_back);
// ����
btnBack.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
}
/**
* ���¼�
*/
private void BindEvent() {
// �����ת
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View v,
int position, long id) {
Intent intent = new Intent();
try {
// ���ݲ���
intent.setClass(BlogTopViewDiggView.this,
AuthorBlogActivity.class);
Bundle bundle = new Bundle();
TextView tvBlogTitle = (TextView) (v
.findViewById(R.id.author_list_title));
TextView tvBlogAuthor = (TextView) (v
.findViewById(R.id.author_list_username));
String blogTitle = tvBlogTitle.getText().toString();
String blogAuthor = tvBlogAuthor.getText().toString();
bundle.putString("blogName", blogTitle);
bundle.putString("author", blogAuthor);
intent.putExtras(bundle);
startActivityForResult(intent, 0);
} catch (Exception ex) {
ex.printStackTrace();
}
}
});
}
/**
* ���߳������������������ء���ʼ�������ؼ��ء�ˢ�£�
*
*/
public class PageTask extends AsyncTask<String, Integer, List<Blog>> {
public PageTask() {
}
protected List<Blog> doInBackground(String... params) {
if (!NetHelper.networkIsAvailable(getApplicationContext())) {
return null;
}
try {
List<Blog> listTmp = new ArrayList<Blog>();
List<Blog> listBlogNew = new ArrayList<Blog>();
switch (activityType) {
case TopViewBlogIn48Hours:
listBlogNew = BlogHelper.Get48HoursTopViewBlogList();
break;
case TopDiggBlogIn10Days:
listBlogNew = BlogHelper.Get10DaysTopDiggBlogList();
break;
}
int size = listBlogNew.size();
for (int i = 0; i < size; i++) {
if (!listBlog.contains(listBlogNew.get(i))) {// ��������ظ�
listTmp.add(listBlogNew.get(i));
}
}
return listTmp;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onCancelled() {
super.onCancelled();
}
/**
* ��������
*/
@Override
protected void onPostExecute(List<Blog> result) {
btnRefresh.setVisibility(View.VISIBLE);
topProgressBar.setVisibility(View.GONE);
// ���粻����
if (!NetHelper.networkIsAvailable(getApplicationContext())) {
Toast.makeText(getApplicationContext(),
R.string.sys_network_error, Toast.LENGTH_SHORT).show();
return;
}
if (result == null || result.size() == 0) {// û��������
return;
}
listBlog = result;
progressBar.setVisibility(View.GONE);
adapter = new BlogListAdp(getApplicationContext(), listBlog,
listView);
listView.setAdapter(adapter);
}
@Override
protected void onPreExecute() {
// ���������
if (listView.getCount() == 0) {
progressBar.setVisibility(View.VISIBLE);
}
btnRefresh.setVisibility(View.GONE);
topProgressBar.setVisibility(View.VISIBLE);
}
@Override
protected void onProgressUpdate(Integer... values) {
}
}
/**
* ��ת������
*
* @param v
*/
private void RedirectDetailActivity(View v) {
Intent intent = new Intent();
try {
// ���ݲ���
intent.setClass(BlogTopViewDiggView.this, BlogDetailView.class);
Bundle bundle = new Bundle();
TextView tvBlogId = (TextView) (v
.findViewById(R.id.recommend_text_id));
TextView tvBlogTitle = (TextView) (v
.findViewById(R.id.recommend_text_title));
TextView tvBlogAuthor = (TextView) (v
.findViewById(R.id.recommend_text_author));
TextView tvBlogDate = (TextView) (v
.findViewById(R.id.recommend_text_date));
TextView tvBlogUrl = (TextView) (v
.findViewById(R.id.recommend_text_url));
TextView tvBlogViewCount = (TextView) (v
.findViewById(R.id.recommend_text_view));
TextView tvBlogCommentCount = (TextView) (v
.findViewById(R.id.recommend_text_comments));
TextView tvBlogDomain = (TextView) (v
.findViewById(R.id.recommend_text_domain));
int blogId = Integer.parseInt(tvBlogId.getText().toString());
String blogTitle = tvBlogTitle.getText().toString();
String blogAuthor = tvBlogAuthor.getText().toString();
String blogDate = tvBlogDate.getText().toString();
String blogUrl = tvBlogUrl.getText().toString();
String blogDomain = tvBlogDomain.getText().toString();
int viewsCount = Integer.parseInt(tvBlogViewCount.getText()
.toString());
int commentCount = Integer.parseInt(tvBlogCommentCount.getText()
.toString());
bundle.putInt("blogId", blogId);
bundle.putString("blogTitle", blogTitle);
bundle.putString("author", blogAuthor);
bundle.putString("date", blogDate);
bundle.putString("blogUrl", blogUrl);
bundle.putInt("view", viewsCount);
bundle.putInt("comment", commentCount);
bundle.putString("blogDomain", blogDomain);
Log.d("blogId", String.valueOf(blogId));
intent.putExtras(bundle);
startActivity(intent);
tvBlogTitle.setTextColor(R.color.gray);
} catch (Exception ex) {
ex.printStackTrace();
}
}
}