package nliveroid.nlr.main; import android.content.Context; import android.preference.DialogPreference; import android.util.AttributeSet; import android.util.Log; import android.view.Gravity; import android.view.View; import android.widget.CheckBox; import android.widget.LinearLayout; import android.widget.ScrollView; import android.widget.TableLayout; import android.widget.TableRow; import android.widget.TextView; public class TablePositionDialog extends DialogPreference{ private NumberPicker np; private TextView tv; private String key; private CheckBox cb; public TablePositionDialog(Context context, AttributeSet attrs) { super(context, attrs); key = attrs.getAttributeValue(2); } public TablePositionDialog(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); key = attrs.getAttributeValue(2); } @Override protected View onCreateDialogView() { super.onCreateDialogView(); int defaultNum = 0; Context context = getContext(); np = new NumberPicker(context); tv = new TextView(context); tv.setGravity(Gravity.CENTER); TableLayout baseTableLayout = new TableLayout(context); baseTableLayout.setColumnStretchable(0, true); TableRow tr0 = new TableRow(context); TableRow tr1 = new TableRow(context); tr0.addView(tv); tr1.addView(np); baseTableLayout.addView(tr0,new LinearLayout.LayoutParams(-1,-2)); if(key.equals("x_pos_p")||key.equals("x_pos_l")){ tv.setText("ヘッダーの左上の位置を決定\n画面横幅全体が0~100として\n-99~+99で設定"); np.setRange(0, 99); cb = new CheckBox(context); cb.setText("マイナス"); TableRow trc = new TableRow(context); trc.addView(cb); baseTableLayout.addView(trc,new LinearLayout.LayoutParams(-1,-2)); try{ defaultNum = Integer.parseInt(Details.getPref().getDetailMapValue(key)); }catch(Exception e){ defaultNum = 0; } if(defaultNum<0){ defaultNum = -defaultNum; cb.setChecked(true); } }else if(key.equals("y_pos_p")||key.equals("y_pos_l")){ tv.setText("上端0~下端100"); np.setRange(0, 100); try{ defaultNum = Integer.parseInt(Details.getPref().getDetailMapValue(key)); if(defaultNum<0||defaultNum>100){ defaultNum = 50; } }catch(Exception e){ defaultNum = 50; } }else if(key.equals("bottom_pos_p")||key.equals("bottom_pos_l")){ tv.setText("画面全体の高さを100として\n0~100で設定"); np.setRange(0, 100); cb = new CheckBox(context); cb.setText("コメント追加の方向上"); TableRow trc = new TableRow(context); trc.addView(cb); baseTableLayout.addView(trc,new LinearLayout.LayoutParams(-1,-2)); try{ defaultNum = Integer.parseInt(Details.getPref().getDetailMapValue(key)); if(defaultNum<-100||defaultNum>100){ defaultNum = 50; } }catch(Exception e){ defaultNum = 50; } if(defaultNum<0){ defaultNum = -defaultNum; cb.setChecked(true); } }else if(key.equals("width_p")||key.equals("width_l")){ tv.setText("画面全体の横幅を100として\n0~100で設定"); np.setRange(0, 100); try{ defaultNum = Integer.parseInt(Details.getPref().getDetailMapValue(key)); if(defaultNum<0||defaultNum>100){ defaultNum = 100; } }catch(Exception e){ defaultNum = 100; } if(defaultNum<0){ defaultNum = -defaultNum; } } np.setClickable(true); np.setLongClickable(true); np.setCurrent(defaultNum); baseTableLayout.addView(tr1,new LinearLayout.LayoutParams(-1,-2)); ScrollView sv = new ScrollView(context); sv.addView(baseTableLayout,-1,-1); return sv; } @Override protected void onDialogClosed(boolean positiveResult) { super.onDialogClosed(positiveResult); // Log.d("log"," CURRENT KEY " + key + " NUM " + np.getCurrent()); if(positiveResult){ if(cb != null&&(key.equals("bottom_pos_p")||key.equals("bottom_pos_l")||key.equals("x_pos_p")||key.equals("x_pos_l"))){ if(cb.isChecked()){ Details.getPref().setPreferenceKeyValue(key, -np.getCurrent()); }else{ Details.getPref().setPreferenceKeyValue(key, np.getCurrent()); } }else{ Details.getPref().setPreferenceKeyValue(key, np.getCurrent()); } } } }