package nliveroid.nlr.main;
import java.util.ArrayList;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.graphics.Color;
import android.text.ClipboardManager;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.MenuItem.OnMenuItemClickListener;
import android.view.View;
import android.view.View.OnCreateContextMenuListener;
import android.widget.AdapterView.AdapterContextMenuInfo;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.TextView;
public class UserCommentedDialog extends AlertDialog.Builder{
private CommentListAdapter adapter;
private Activity ACT;
private ProgressDialog progressD;
private AlertDialog me;
/**
* ユーザーの発言リスト
* @param postable
* @param userid
* @param commentedRows
* @param dialog
*/
public UserCommentedDialog(final CommentPostable postable,String userid,final String nickname,ArrayList<String[]> commentedRows,ProgressDialog dialog,final int bgColor,final int foreColor) {
super((Activity)postable);
ACT = (Activity) postable;
progressD = dialog;
LayoutInflater inflater = LayoutInflater.from(ACT);
View parent = inflater.inflate(R.layout.usercomment, null);
setView(parent);
setCustomTitle(null);
TextView tv = (TextView)parent.findViewById(R.id.userid);
tv.setText("ユーザID "+userid);
final ListView list = new ListView(ACT);
list.setOnCreateContextMenuListener(new OnCreateContextMenuListener(){
private String tempID;
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
AdapterContextMenuInfo adapterInfo = (AdapterContextMenuInfo) menuInfo;
if (adapter.getCount() < adapterInfo.position) {// 立見などをタップした時におかしくなるArrayList.throwIndexOutOfBoundsException
return;
}
final String[] row = adapter.getItem(adapterInfo.position);
tempID = adapter.getItem(adapterInfo.position)[1];
menu.add("コテハンを編集");
menu.getItem(0).setOnMenuItemClickListener(
new OnMenuItemClickListener() {
@Override
// 引数はメニューのテキスト
public boolean onMenuItemClick(MenuItem arg0) {
me.cancel();
new HandleNamePicker(ACT,
new ColorPickerView.OnColorChangedListener() {
@Override
public void colorChanged(int color) {
// 色が選択されるとcolorに値が入る OKボタンで確定するので未使用
int R = Color.red(color);
int G = Color.green(color);
int B = Color.blue(color);
}
}, bgColor, foreColor , tempID,nickname,true)
.show();
return false;
}
});
menu.add("列のコピー");
menu.getItem(1).setOnMenuItemClickListener(
new OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem menuitem) {
new AlertDialog.Builder(ACT)
.setItems(new CharSequence[]{"ユーザタイプ","ID","コマンド","時間","NGスコア","コメ番"},new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
ClipboardManager cm = (ClipboardManager) ((Activity)postable).getSystemService(((Activity)postable).CLIPBOARD_SERVICE);
String text = "";
switch(which){
case 0:
text = row[0];
break;
case 1:
text = row[1];
break;
case 2:
text = row[2];
break;
case 3:
text = row[3];
break;
case 4:
text = row[4];
break;
case 5:
text = row[5];
break;
}
cm.setText(text);
}
}).create().show();
return false;
}
});
menu.add("コメントを表示");
menu.getItem(2).setOnMenuItemClickListener(
new OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem menuitem) {
me.cancel();
new ContextDialog(ACT, row,nickname,postable.getViewWidth(), bgColor, foreColor ).showSelf();
return false;
}
});
menu.add("コメントをコピー");
menu.getItem(3).setOnMenuItemClickListener(
new OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem menuitem) {
ClipboardManager cm = (ClipboardManager) ((Activity)postable).getSystemService(((Activity)postable).CLIPBOARD_SERVICE);
// クリップボードへ値をコピー。
cm.setText(row[6]);
return false;
}
});
}
});
list.setFastScrollEnabled(true);
list.setBackgroundColor(-1);
adapter = postable.createNewAdapter();
list.setAdapter(adapter);
for(String[] i:commentedRows){
adapter.add(i);
}
LinearLayout ll = (LinearLayout)parent.findViewById(R.id.list_parent_liner);
ll.addView(list,new LinearLayout.LayoutParams(-1,-1));
}
public void showSelf(){
me = this.create();
if(progressD != null)progressD.cancel();
me.show();
}
}