package nliveroid.nlr.main; import android.content.Context; import android.preference.DialogPreference; import android.util.AttributeSet; import android.util.Log; import android.view.View; import android.widget.CheckBox; import android.widget.RadioButton; import android.widget.RadioGroup; import android.widget.ScrollView; import android.widget.TableLayout; import android.widget.TableRow; public class QuickSettingDialog extends DialogPreference{ private Context context; private String key; private CheckBox[] cbs; private RadioGroup rg; public QuickSettingDialog(Context context, AttributeSet attrs) { super(context, attrs); this.context = context; key = attrs.getAttributeValue(2); Log.d("NLiveRoid"," key"+key); } @Override protected View onCreateDialogView() { super.onCreateDialogView(); ScrollView sv = new ScrollView(context); int defaultVal0 = 0; int defaultVal1 = 0; try{ defaultVal0 = Integer.parseInt(Details.getPref().getDetailMapValue("quick_0")); defaultVal1 = Integer.parseInt(Details.getPref().getDetailMapValue("quick_1")); Log.d(" ", " QQQQ" + defaultVal0); Log.d(" ", " QQQQ" + defaultVal1); }catch(NumberFormatException e){ e.printStackTrace(); MyToast.customToastShow(context,"カスタムMENUの設定値の読み取りに失敗\nXMLが不正"); return sv; } TableLayout tl = new TableLayout(context); TableRow[] trs = new TableRow[12];//ラジオボタン分多くする cbs = new CheckBox[11]; for(int i = 0; i < trs.length; i++){ trs[i] = new TableRow(context); if(i < cbs.length)cbs[i] = new CheckBox(context);//ラジオボタンの行分1つ少ない } rg = new RadioGroup(context); rg.setOrientation(RadioGroup.HORIZONTAL); RadioButton standard_rb = new RadioButton(context); standard_rb.setId(0); standard_rb.setText("標準"); RadioButton quick_rb = new RadioButton(context); quick_rb.setId(1); quick_rb.setText("カスタムMENU"); RadioButton comment_form_rb = new RadioButton(context); comment_form_rb.setId(2); comment_form_rb.setText("投稿"); rg.addView(standard_rb); rg.addView(quick_rb); rg.addView(comment_form_rb); rg.check((defaultVal0 & 0xF0)>>4 <=2? (defaultVal0 & 0xF0)>>4:0); trs[0].addView(rg,new TableRow.LayoutParams(-1,-2)); cbs[0].setText("全画面(スマホ版プレイヤーのみ"); cbs[0].setChecked((defaultVal0 & 0x08) > 0? true:false); cbs[1].setText("表示設定"); cbs[1].setChecked((defaultVal0 & 0x04) > 0? true:false); cbs[2].setText("コメント欄更新"); cbs[2].setChecked((defaultVal0 & 0x02) > 0? true:false); cbs[3].setText("ログ取得(プレアカのみ動作)"); cbs[3].setChecked((defaultVal0 & 0x01) > 0? true:false); cbs[4].setText("ユーザー名自動"); cbs[4].setChecked((defaultVal1 & 0x40) > 0? true:false); cbs[5].setText("184"); cbs[5].setChecked((defaultVal1 & 0x20) > 0? true:false); cbs[6].setText("コマンド"); cbs[6].setChecked((defaultVal1 & 0x10) > 0? true:false); cbs[7].setText("投稿"); cbs[7].setChecked((defaultVal1 & 0x08) > 0? true:false); cbs[8].setText("Tweet"); cbs[8].setChecked((defaultVal1 & 0x04) > 0? true:false); cbs[9].setText("設定"); cbs[9].setChecked((defaultVal1 & 0x02) > 0? true:false); cbs[10].setText("視聴終了");//各設定にするにはビットが足りないので仕方ない cbs[10].setChecked((defaultVal1 & 0x01) > 0? true:false); for(int i = 0; i < trs.length; i++){ if(i < cbs.length)trs[i+1].addView(cbs[i],new TableRow.LayoutParams(-1,-2)); trs[i].setPadding(15, 25, 15, 0);//パディング共通 tl.addView(trs[i],new TableLayout.LayoutParams(-1,-2)); } sv.addView(tl,-1,-1); return sv; } @Override protected void onDialogClosed(boolean positiveResult) { super.onDialogClosed(positiveResult); if(positiveResult){//設定値をセットする byte quick_0 = 0; byte quick_1 = 0; switch(rg.getCheckedRadioButtonId()){ case 0://上位ビット4つは0のまま break; case 1: quick_0 = 0x10; break; case 2: quick_0 = 0x20; break; } if(cbs[0].isChecked()){ quick_0 = (byte) (quick_0 | 0x08); }if(cbs[1].isChecked()){ quick_0 = (byte) (quick_0 | 0x04); }if(cbs[2].isChecked()){ quick_0 = (byte) (quick_0 | 0x02); }if(cbs[3].isChecked()){ quick_0 = (byte) (quick_0 | 0x01); }if(cbs[4].isChecked()){ quick_1 = (byte) (quick_1 | 0x40); }if(cbs[5].isChecked()){ quick_1 = (byte) (quick_1 | 0x20); }if(cbs[6].isChecked()){ quick_1 = (byte) (quick_1 | 0x10); }if(cbs[7].isChecked()){ quick_1 = (byte) (quick_1 | 0x08); }if(cbs[8].isChecked()){ quick_1 = (byte) (quick_1 | 0x04); }if(cbs[9].isChecked()){ quick_1 = (byte) (quick_1 | 0x02); }if(cbs[10].isChecked()){ quick_1 = (byte) (quick_1 | 0x01); } if(Details.getPref() == null){ MyToast.customToastShow(context, "設定値の保存に失敗しました"); }else{ // Log.d("QQQQQQXXXX"," " + quick_0); // Log.d("QQQQQQXXXX"," " + quick_1); Details.getPref().setDetailsMap("quick_0", quick_0); Details.getPref().setDetailsMap("quick_1", quick_1); } } } }