package nliveroid.nlr.main; import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; import android.util.Log; import android.view.KeyEvent; import android.view.LayoutInflater; import android.view.View; import android.widget.Button; import android.widget.CheckBox; import android.widget.CompoundButton; import android.widget.RadioGroup; import android.widget.RadioGroup.OnCheckedChangeListener; public class QuickDialog extends AlertDialog { private byte[] settingVal = new byte[2]; private AlertDialog me; protected QuickDialog(final CommentPostable postable,byte[] setting_byte,boolean isAutoUser) { super((Context) postable); View parent = LayoutInflater.from((Context)postable).inflate(R.layout.quick_dialog, null); setView(parent); me = this; settingVal[0] = setting_byte[40]; settingVal[1] = setting_byte[41]; RadioGroup radioGroup = (RadioGroup)parent.findViewById(R.id.quick_radiogroup); int checkedResourceID = 0; int menuVal = (setting_byte[40] & 0xF0) >> 4; // Log.d("NLiveRoid","QuickD " + Integer.toBinaryString(setting_byte[40])); // Log.d("NLiveRoid","QuickD " + menuVal); if(menuVal > 2 || menuVal < 0){ setting_byte[40] = (byte) (setting_byte[40] & 0x0F);//危険なので仕方なくここでチェックしとく menuVal = 0; } switch(menuVal){ case 0: checkedResourceID = R.id.quick_radio_standard; break; case 1: checkedResourceID = R.id.quick_radio_this; break; case 2: checkedResourceID = R.id.quick_radio_post; break; } radioGroup.check(checkedResourceID); radioGroup.setOnCheckedChangeListener(new OnCheckedChangeListener(){ @Override public void onCheckedChanged(RadioGroup group, int checkedId) { if(checkedId == R.id.quick_radio_standard){ postable.quickAction(0); }else if(checkedId == R.id.quick_radio_this){ postable.quickAction(1); }else if(checkedId == R.id.quick_radio_post){ postable.quickAction(2); } } }); //全画面 Button fullscr = (Button)parent.findViewById(R.id.quick_fullscrn); if((settingVal[0] & 0x08) <= 0){ fullscr.setVisibility(View.GONE); }else{ fullscr.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View v) { postable.quickAction(3); me.cancel();//閉じる } }); } //表示設定 Button layernum = (Button)parent.findViewById(R.id.quick_layernum); if((settingVal[0] & 0x04) <= 0){ layernum.setVisibility(View.GONE); }else{ layernum.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View v) { me.cancel(); new AlertDialog.Builder((Context)postable) .setItems(new String[]{"前面","背面","プレイヤーのみ"}, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) {//コメント欄再起して頑張る postable.layerChange(which); } }).create().show(); } }); } //コメント欄の更新 Button update = (Button)parent.findViewById(R.id.quick_update_comment); if((settingVal[0] & 0x02) <= 0){ update.setVisibility(View.GONE); }else{ update.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View v) { me.cancel();//閉じる postable.updateCommentTable(true);//同期的だが大丈夫か? } }); } //ログ取得 Button log = (Button)parent.findViewById(R.id.quick_log); if((settingVal[0] & 0x01) <= 0){ log.setVisibility(View.GONE); }else{ log.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View v) { postable.quickAction(4); me.cancel();//閉じる } }); } //ユーザー名自動 CheckBox username = (CheckBox)parent.findViewById(R.id.quick_username); if((settingVal[1] & 0x40) <= 0){ username.setVisibility(View.GONE); }else{ if(isAutoUser)username.setChecked(true); username.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener(){ @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { ((HandleNamable)postable).setAutoGetUserName(isChecked); } }); } //184m,kijn CheckBox _184 = (CheckBox)parent.findViewById(R.id.quick_184); if((settingVal[1] & 0x20) <= 0){ _184.setVisibility(View.GONE); }else{ String anonym = postable.getCmd().getValue(CommandKey.CMD); if(anonym.equals("184")){ _184.setChecked(true); }else{ _184.setChecked(false); } _184.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener(){ @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if(isChecked){ postable.setCmd(CommandKey.CMD, "184"); }else{ postable.setCmd(CommandKey.CMD, ""); } } }); } //コマンド Button command = (Button)parent.findViewById(R.id.quick_command); if((settingVal[1] & 0x10) <= 0){ command.setVisibility(View.GONE); }else{ command.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View v) { postable.showCommandDialog(); me.cancel();//閉じる } }); } //投稿 Button post = (Button)parent.findViewById(R.id.quick_post); if((settingVal[1] & 0x08) <= 0){ post.setVisibility(View.GONE); }else{ post.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View v) { me.cancel();//閉じる postable.showPostArea(); } }); } //Tweet Button tweet = (Button)parent.findViewById(R.id.quick_tweet); if((settingVal[1] & 0x04) <= 0){ tweet.setVisibility(View.GONE); }else{ tweet.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View v) { postable.shoeTweetDialog(); me.cancel();//閉じる } }); } //設定 Button setting = (Button)parent.findViewById(R.id.quick_setting); if((settingVal[1] & 0x02) <= 0){ setting.setVisibility(View.GONE); }else{ setting.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View v) { postable.quickAction(5); me.cancel();//閉じる } }); } //視聴画面終了 Button finish = (Button)parent.findViewById(R.id.quick_finish); if((settingVal[1] & 0x01) <= 0){ finish.setVisibility(View.GONE); }else{ finish.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View v) { postable.quickAction(6); me.cancel();//閉じる } }); } } @Override public boolean dispatchKeyEvent(KeyEvent event){ // Log.d("DISPATCH"," " + event.getKeyCode()); if (event.getKeyCode() == KeyEvent.KEYCODE_MENU && event.getAction() == KeyEvent.ACTION_DOWN){ me.cancel(); return false; }else{ return super.dispatchKeyEvent(event); } } public void showSelf(byte setting0, byte setting1){ settingVal[0] = setting0; settingVal[1] = setting1; //ダイアログが閉じる時に一気に設定値を渡す? me.setOnCancelListener(new OnCancelListener(){ @Override public void onCancel(DialogInterface dialog) {//設定値を保存する(渡す) } }); this.show(); } }