package app.create.rpg;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.ComponentName;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.ServiceConnection;
import android.os.Bundle;
import android.os.Handler;
import android.os.IBinder;
import android.os.ResultReceiver;
import android.view.View;
import android.view.Window;
import android.widget.Adapter;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemLongClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import app.create.rpg.ServiceFileTask.MyBinder;
import app.create.rpg.ServiceFileTask.MyQueue;
import app.create.rpg.task.TaskListAdapter;
public class ActivityTaskDialog extends Activity implements ServiceConnection, View.OnClickListener, OnItemLongClickListener {
Thread updaterThread;
ServiceFileTask.MyBinder binder;
TaskListAdapter adapter;
private class MyResultReceiver extends ResultReceiver {
public MyResultReceiver(Handler handler) {
super(handler);
}
@Override
protected void onReceiveResult(int resultCode, Bundle resultData) {
if (binder == null) return;
adapter.update(binder);
}
}
@Override
public void onCreate (Bundle state) {
super.onCreate(state);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.dialog_task);
final ListView lv = (ListView) findViewById(R.id.list);
adapter = new TaskListAdapter(this);
lv.setAdapter(adapter);
lv.setLongClickable(true);
lv.setOnItemLongClickListener(this);
findViewById(android.R.id.button2).setOnClickListener(this);
}
@Override
public void onClick(View view) {
finish();
}
@Override
public void onResume () {
super.onResume();
bindService(new Intent(this, ServiceFileTask.class), this, BIND_AUTO_CREATE);
}
@Override
public void onPause () {
super.onPause();
unbindService(this);
}
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
binder = (MyBinder) service;
startService(new Intent(ServiceFileTask.ACTION_SET_RECEIVER)
.putExtra("receiver", new MyResultReceiver(new Handler(getMainLooper()))));
}
@Override
public void onServiceDisconnected(ComponentName name) {
binder = null;
((ArrayAdapter<?>) ((ListView) findViewById(R.id.list)).getAdapter()).clear();
}
@Override
public boolean onItemLongClick(AdapterView<?> adapterView,
View itemView, int position, long id) {
final MyQueue obj = (MyQueue) ((Adapter) adapterView.getAdapter()).getItem(position);
DialogInterface.OnClickListener listener = new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
if (which == DialogInterface.BUTTON_POSITIVE) {
startService(new Intent(ServiceFileTask.ACTION_STOP_QUEUE)
.putExtra("queueid", obj.mQueueId));
}
}
};
new AlertDialog.Builder(this)
.setMessage(R.string.str_ask_terminate)
.setNegativeButton(android.R.string.no, listener)
.setPositiveButton(android.R.string.yes, listener).show();
return true;
}
}