package cn.mutils.app.demo.ui;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.util.AttributeSet;
import android.view.View;
import android.widget.TextView;
import java.io.File;
import java.util.List;
import cn.mutils.app.demo.R;
import cn.mutils.app.os.IntentExecutor;
import cn.mutils.app.ui.PopMenu;
import cn.mutils.app.ui.StateView;
import cn.mutils.app.ui.adapter.IItemView;
import cn.mutils.app.ui.adapter.ItemView;
import cn.mutils.app.ui.adapter.PopMenuAdapter;
import cn.mutils.app.util.AppUtil;
import cn.mutils.core.annotation.event.Click;
import cn.mutils.core.annotation.res.FindViewById;
import cn.mutils.core.annotation.res.SetContentView;
import cn.mutils.core.log.Logs;
@SetContentView(R.layout.view_intent_executor)
public class IntentExecutorDemoView extends StateView {
public IntentExecutorDemoView(Context context) {
super(context);
}
public IntentExecutorDemoView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public IntentExecutorDemoView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Click(R.id.go)
protected void onClickGoBtn(View v) {
Context context = getContext();
String path = AppUtil.getDiskDataRoot(context) + "IntentExecutor.png";
Logs.i(path);
Bitmap bitmap = AppUtil.toBitmap((View) this.getParent());
if (!AppUtil.save(bitmap, path)) {
toast("Save failed");
return;
}
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("image/*");
intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(new File(path)));
List<IntentExecutor> executors = IntentExecutor.queryActivities(context, intent);
IntentExecutorAdapter adapter = new IntentExecutorAdapter();
adapter.setDataProvider(executors);
PopMenu<IntentExecutor> popMenu = new PopMenu<IntentExecutor>(v);
popMenu.setAdapter(adapter);
popMenu.show();
}
class IntentExecutorAdapter extends PopMenuAdapter<IntentExecutor> {
@Override
public IItemView<IntentExecutor> getItemView(int itemViewType) {
return new IntentExecutorItemView(getContext());
}
}
@SetContentView(R.layout.item_intent_executor)
class IntentExecutorItemView extends ItemView<IntentExecutor> {
@FindViewById(R.id.line)
protected View mLine;
@FindViewById(R.id.text)
protected TextView mText;
public IntentExecutorItemView(Context context) {
super(context);
}
@Override
public void onResume() {
mLine.setVisibility(mPosition == 0 ? View.INVISIBLE : View.VISIBLE);
int size = (int) AppUtil.dp2px(getContext(), 40);
Drawable drawable = mDataProvider.getIcon();
drawable.setBounds(0, 0, size, size);
mText.setCompoundDrawables(drawable, null, null, null);
mText.setText(mDataProvider.getLabel());
}
@Click
protected void onClick() {
((IntentExecutorAdapter) getAdapter()).getPopMenue().dismiss();
getContext().startActivity(mDataProvider.getIntent());
}
}
}