package net.dev123.yibo.service.listener;
import java.io.File;
import net.dev123.commons.util.StringUtil;
import net.dev123.mblog.entity.Status;
import net.dev123.yibo.EditMicroBlogActivity;
import net.dev123.yibo.R;
import net.dev123.yibo.common.EntityUtil;
import net.dev123.yibo.service.adapter.AdapterUtil;
import net.dev123.yibo.service.adapter.MicroBlogMoreListAdapter;
import net.dev123.yibo.service.adapter.StatusUtil;
import net.dev123.yibo.service.cache.ImageCache;
import net.dev123.yibo.service.cache.wrap.CachedImageKey;
import net.dev123.yibo.service.task.DestroyStatusTask;
import net.dev123.yibo.widget.ListChooseDialog;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.net.Uri;
import android.text.ClipboardManager;
import android.view.View;
import android.widget.Adapter;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.Toast;
public class MicroBlogMoreItemClickListener implements OnItemClickListener {
private ListChooseDialog chooseDialog;
public MicroBlogMoreItemClickListener(ListChooseDialog chooseDialog) {
this.chooseDialog = chooseDialog;
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
Adapter adapter = parent.getAdapter();
BaseAdapter baseAdapter = AdapterUtil.getAdapter(adapter);
if (!(baseAdapter instanceof MicroBlogMoreListAdapter)) {
return;
}
MicroBlogMoreListAdapter listAdapter = (MicroBlogMoreListAdapter)baseAdapter;
chooseDialog.dismiss();
final Context context = view.getContext();
final Status status = listAdapter.getStatus();
int itemId = (int)listAdapter.getItemId(position);
ClipboardManager clip = (ClipboardManager)context
.getSystemService(Context.CLIPBOARD_SERVICE);
switch (itemId) {
case MicroBlogMoreListAdapter.ITEM_DELETE:
new AlertDialog.Builder(context)
.setTitle(R.string.title_dialog_alert)
.setMessage(R.string.msg_blog_delete)
.setNegativeButton(R.string.btn_cancel,
new AlertDialog.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
})
.setPositiveButton(R.string.btn_confirm,
new AlertDialog.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
DestroyStatusTask task = new DestroyStatusTask(context, status);
task.execute();
}
}).show();
break;
case MicroBlogMoreListAdapter.ITEM_COPY:
String copyStatusText = StatusUtil.extraSimpleStatus(context, status);
clip.setText(copyStatusText);
Toast.makeText(context, R.string.msg_blog_copy, Toast.LENGTH_SHORT).show();
break;
case MicroBlogMoreListAdapter.ITEM_SHARE_TO_ACCOUNTS:
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setClass(context, EditMicroBlogActivity.class);
if (EntityUtil.hasPicture(status)) {
intent.setType("image/*");
CachedImageKey info = EntityUtil.getMaxLocalCachedImageInfo(status);
String imagePath = ImageCache.getRealPath(info);
if (StringUtil.isNotEmpty(imagePath)) {
if (info.getCacheType() == CachedImageKey.IMAGE_THUMBNAIL) {
Toast.makeText(
context,
context.getString(R.string.msg_blog_share_picture_thumbnail),
Toast.LENGTH_LONG
).show();
}
Uri uri = Uri.fromFile(new File(imagePath));
intent.putExtra(Intent.EXTRA_STREAM, uri);
} else {
intent.setType("text/plain");
Toast.makeText(context, context.getString(R.string.msg_blog_share_picture), Toast.LENGTH_LONG).show();
}
} else {
intent.setType("text/plain");
}
String statusText = StatusUtil.extraSimpleStatus(context, status);
clip.setText(statusText);
intent.putExtra(Intent.EXTRA_TEXT, statusText);
intent.putExtra(Intent.EXTRA_SUBJECT, context.getString(R.string.msg_extra_subject));
context.startActivity(intent);
break;
}
}
}