package com.ustc.dystu.dandelion;
import java.util.ArrayList;
import org.json.JSONException;
import org.json.JSONObject;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;
import com.ustc.dystu.dandelion.bean.FootInfo;
import com.ustc.dystu.dandelion.bean.NoteInfo;
import com.ustc.dystu.dandelion.constant.Constants;
import com.ustc.dystu.dandelion.fragment.BaseFragment;
import com.ustc.dystu.dandelion.net.DandRequestListener;
import com.ustc.dystu.dandelion.net.DandelionAPI;
import com.ustc.dystu.dandelion.utils.image.ImageCache;
import com.ustc.dystu.dandelion.utils.image.ImageFetcher;
import com.ustc.dystu.dandelion.utils.image.Utils;
public class FolderEditActivity extends Activity {
private static final int REQUEST_UPDATE_NOTE_INFO = 0x1;
ImageView ivBack;
ImageView ivOk;
ImageView ivFolder;
TextView tvTitle;
TextView tvTime;
TextView tvTimeUsed;
GridView gvPics;
PicAdapter picAdapter;
ArrayList<FootInfo> mFootList;
NoteInfo mNoteInfo;
private ArrayList<String> picList = new ArrayList<String>();
String currentPic;
private ImageFetcher mImageWorker;
ProgressDialog pbProgress;
Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
pbProgress.dismiss();
switch (msg.what) {
case REQUEST_UPDATE_NOTE_INFO:
Toast.makeText(FolderEditActivity.this, "更新成功!",
Toast.LENGTH_SHORT).show();
Intent broadcast = new Intent();
broadcast.putExtra("note_info", mNoteInfo);
broadcast.setAction(Constants.ACTION_EDIT_NOTE_SUCCESS);
sendBroadcast(broadcast);
finish();
break;
case BaseFragment.ERROR_RESPONSE:
if (msg.obj != null) {
Toast.makeText(FolderEditActivity.this, (String) msg.obj,
Toast.LENGTH_SHORT).show();
}
break;
default:
break;
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_folder_edit);
ivFolder = (ImageView) findViewById(R.id.iv_icon);
tvTitle = (TextView) findViewById(R.id.tv_info);
tvTime = (TextView) findViewById(R.id.tv_time);
tvTimeUsed = (TextView) findViewById(R.id.tv_time_used);
ivBack = (ImageView) findViewById(R.id.iv_back);
ivBack.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
ivOk = (ImageView) findViewById(R.id.iv_ok);
ivOk.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
updateFolder();
}
});
Intent intent = getIntent();
mFootList = (ArrayList<FootInfo>) intent
.getSerializableExtra("foot_list");
mNoteInfo = (NoteInfo) intent.getSerializableExtra("note_info");
tvTitle.setText(mNoteInfo.note_title);
tvTime.setText(mNoteInfo.getFormatNoteFromTime());
tvTimeUsed.setText(mNoteInfo.getTotalDays());
String url = mNoteInfo.note_folder_url;
currentPic = url.substring(url.lastIndexOf("/") + 1,
url.lastIndexOf("."));
getPicIds();
gvPics = (GridView) findViewById(R.id.gv_pics);
picAdapter = new PicAdapter(this);
gvPics.setAdapter(picAdapter);
gvPics.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
currentPic = picList.get(position);
picAdapter.notifyDataSetChanged();
String url = "http://ww3.sinaimg.cn/large/" + currentPic
+ ".jpg";
mImageWorker.loadImage(url, ivFolder, true);
mNoteInfo.note_folder_url = url;
}
});
int[] wh = Utils.getMidPicWidthAndHeight(this);
mImageWorker = new ImageFetcher(this, wh[0], wh[1]);
mImageWorker.setImageCache(new ImageCache(this,
Constants.THUMNAIL_CACHE_PATH));
mImageWorker.setLoadingImage(R.drawable.share_public_headview_bg);
mImageWorker.setImageFadeIn(false);
mImageWorker.loadImage("http://ww3.sinaimg.cn/large/" + currentPic
+ ".jpg", ivFolder, true);
}
private void updateFolder() {
pbProgress = new ProgressDialog(this);
pbProgress.setMessage("正在更新数据, 请稍候...");
pbProgress.setCanceledOnTouchOutside(false);
pbProgress.show();
DandelionAPI.getInstance(this).updateNote(
new DandRequestListener(mHandler) {
@Override
public void onComplete(String arg0) {
JSONObject jo;
Message msg = Message.obtain();
try {
jo = new JSONObject(arg0);
String code = jo.getString("error_code");
if (Integer.parseInt(code) == 0) {
msg.what = REQUEST_UPDATE_NOTE_INFO;
} else {
msg.what = BaseFragment.ERROR_RESPONSE;
msg.obj = "网络异常";
}
} catch (JSONException e) {
e.printStackTrace();
msg.what = BaseFragment.ERROR_RESPONSE;
msg.obj = "数据解析异常";
}
mHandler.sendMessage(msg);
}
}, mNoteInfo);
}
private void getPicIds() {
for (FootInfo info : mFootList) {
if (info.picIds != null && info.picIds.length > 0) {
for (int i = 0; i < info.picIds.length; i++) {
picList.add(info.picIds[i]);
}
}
}
}
class PicAdapter extends BaseAdapter {
private ImageFetcher mImageWorker;
Context ctx;
LayoutInflater inflater;
public PicAdapter(Context ctx) {
this.ctx = ctx;
mImageWorker = new ImageFetcher(ctx, 80);
mImageWorker.setImageCache(new ImageCache(ctx,
Constants.THUMNAIL_CACHE_SMALL_PATH));
mImageWorker.setLoadingImage(R.drawable.preview_card_pic_loading);
mImageWorker.setImageFadeIn(false);
inflater = (LayoutInflater) ctx
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public int getCount() {
return picList.size();
}
@Override
public String getItem(int position) {
return picList.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
holder = new ViewHolder();
convertView = inflater.inflate(R.layout.list_item_folder_edit,
null);
holder.ivPic = (ImageView) convertView
.findViewById(R.id.iv_pic);
holder.rlBg = (RelativeLayout) convertView
.findViewById(R.id.rl_grid_item);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
if (getItem(position).equals(currentPic)) {
holder.rlBg.setBackgroundColor(ctx.getResources().getColor(
R.color.green));
} else {
holder.rlBg.setBackgroundColor(ctx.getResources().getColor(
R.color.white));
}
mImageWorker.loadImage("http://ww1.sinaimg.cn/bmiddle/"
+ getItem(position) + ".jpg", holder.ivPic,
R.drawable.preview_card_pic_loading, true);
return convertView;
}
}
class ViewHolder {
public ImageView ivPic;
public RelativeLayout rlBg;
}
}