/* @file DrawingShotDialog.java
*
* @author marco corvi
* @date nov 2011
*
* @brief TopoDroid drawing: dialog for a survey shot: editing comment, extend and flag
* --------------------------------------------------------
* Copyright This sowftare is distributed under GPL-3.0 or later
* See the file COPYING.
* --------------------------------------------------------
*/
package com.topodroid.DistoX;
import android.os.Bundle;
import android.app.Dialog;
// import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.graphics.*;
import android.view.View;
import android.view.ViewGroup.LayoutParams;
import android.widget.Button;
import android.widget.TextView;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.CheckBox;
import android.widget.LinearLayout;
import android.text.InputType;
import android.inputmethodservice.KeyboardView;
public class DrawingShotDialog extends MyDialog
implements View.OnClickListener
, View.OnLongClickListener
{
private TextView mLabel;
private Button mBtnOK;
private Button mBtnCancel;
private EditText mETfrom;
private EditText mETto;
private EditText mETcomment;
private CheckBox mRBleft;
private CheckBox mRBvert;
private CheckBox mRBright;
// private RadioButton mRBignore;
// private RadioButton mRBsurvey;
private MyCheckBox mRBdup;
private MyCheckBox mRBsurf;
// private CheckBox mRBbackshot;
private Button mRBwalls;
private DrawingWindow mParent;
private DistoXDBlock mBlock;
MyKeyboard mKeyboard = null;
public DrawingShotDialog( Context context, DrawingWindow parent, DrawingPath shot )
{
super(context, R.string.DrawingShotDialog );
mParent = parent;
mBlock = shot.mBlock;
}
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.drawing_shot_dialog);
getWindow().setLayout( LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT );
mLabel = (TextView) findViewById(R.id.shot_label);
mETfrom = (EditText) findViewById(R.id.shot_from );
mETto = (EditText) findViewById(R.id.shot_to );
mETcomment = (EditText) findViewById(R.id.shot_comment );
mETfrom.setOnLongClickListener( this );
mETto.setOnLongClickListener( this );
mKeyboard = new MyKeyboard( mContext, (KeyboardView)findViewById( R.id.keyboardview ),
R.xml.my_keyboard_base, R.xml.my_keyboard_qwerty );
mBtnOK = (Button) findViewById(R.id.btn_ok);
mBtnCancel = (Button) findViewById(R.id.btn_cancel);
mRBleft = (CheckBox) findViewById( R.id.left );
mRBvert = (CheckBox) findViewById( R.id.vert );
mRBright = (CheckBox) findViewById( R.id.right );
// mRBignore = (RadioButton) findViewById( R.id.ignore );
// mRBsurvey = (RadioButton) findViewById( R.id.survey );
// mRBdup = (CheckBox) findViewById( R.id.duplicate );
// mRBsurf = (CheckBox) findViewById( R.id.surface );
// mRBbackshot = (CheckBox) findViewById( R.id.backshot );
LinearLayout layout3 = (LinearLayout) findViewById( R.id.layout3 );
int size = TopoDroidApp.getScaledSize( mContext );
layout3.setMinimumHeight( size + 20 );
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT );
lp.setMargins( 0, 10, 20, 10 );
mRBdup = new MyCheckBox( mContext, size, R.drawable.iz_dup_ok, R.drawable.iz_dup_no );
mRBsurf = new MyCheckBox( mContext, size, R.drawable.iz_surface_ok, R.drawable.iz_surface_no );
layout3.addView( mRBdup, lp );
layout3.addView( mRBsurf, lp );
mRBwalls = (Button) findViewById( R.id.walls );
// if ( ! TopoDroidApp.mLoopClosure ) {
// mRBignore.setClickable( false );
// mRBignore.setTextColor( 0xff999999 );
// }
mLabel.setText( mBlock.dataString( mContext.getResources().getString(R.string.shot_data) ) );
mRBleft.setOnClickListener( this );
mRBvert.setOnClickListener( this );
mRBright.setOnClickListener( this );
mRBdup.setOnClickListener( this );
mRBsurf.setOnClickListener( this );
// mRBbackshot.setOnClickListener( this );
if ( TDSetting.mWallsType != TDSetting.WALLS_NONE
&& TDSetting.mLevelOverAdvanced
&& mBlock.mType == DistoXDBlock.BLOCK_MAIN_LEG
&& ( PlotInfo.isSketch2D( mParent.getPlotType() ) ) ) {
mRBwalls.setOnClickListener( this );
} else {
mRBwalls.setVisibility( View.GONE );
}
mBtnOK.setOnClickListener( this );
mBtnCancel.setOnClickListener( this );
if ( mBlock != null ) {
mETfrom.setText( mBlock.mFrom );
mETto.setText( mBlock.mTo );
mETcomment.setText( mBlock.mComment );
switch ( (int)mBlock.mExtend ) {
case DistoXDBlock.EXTEND_LEFT:
mRBleft.setChecked( true );
break;
case DistoXDBlock.EXTEND_VERT:
mRBvert.setChecked( true );
break;
case DistoXDBlock.EXTEND_RIGHT:
mRBright.setChecked( true );
break;
// case DistoXDBlock.EXTEND_IGNORE:
// mRBignore.setChecked( true );
// break;
}
switch ( (int)mBlock.mFlag ) {
// case DistoXDBlock.BLOCK_SURVEY:
// mRBsurvey.setChecked( true );
// break;
case DistoXDBlock.BLOCK_DUPLICATE:
mRBdup.setChecked( true );
break;
case DistoXDBlock.BLOCK_SURFACE:
mRBsurf.setChecked( true );
break;
// case DistoXDBlock.BLOCK_BACKSHOT:
// mRBbackshot.setChecked( true );
// break;
}
}
setTitle( String.format( mContext.getResources().getString( R.string.shot_title ), mBlock.mFrom, mBlock.mTo ) );
if ( TDSetting.mKeyboard ) {
int flag = MyKeyboard.FLAG_POINT_LCASE_2ND;
if ( TDSetting.mStationNames == 1 ) flag = MyKeyboard.FLAG_POINT;
MyKeyboard.registerEditText( mKeyboard, mETfrom, flag );
MyKeyboard.registerEditText( mKeyboard, mETto, flag );
mKeyboard.hide();
} else {
mKeyboard.hide();
if ( TDSetting.mStationNames == 1 ) {
mETfrom.setInputType( TDConst.NUMBER_DECIMAL );
mETto.setInputType( TDConst.NUMBER_DECIMAL );
}
}
}
@Override
public boolean onLongClick(View view)
{
CutNPaste.makePopup( mContext, (EditText)view );
return true;
}
@Override
public void onClick(View view)
{
// TDLog.Log( TDLog.LOG_INPUT, "DrawingShotDialog onClick() " + view.toString() );
CutNPaste.dismissPopup();
Button b = (Button)view;
if ( b == mRBleft ) {
mRBvert.setChecked( false );
mRBright.setChecked( false );
} else if ( b == mRBvert ) {
mRBleft.setChecked( false );
mRBright.setChecked( false );
} else if ( b == mRBright ) {
mRBleft.setChecked( false );
mRBvert.setChecked( false );
} else if ( b == mRBdup ) {
mRBdup.toggleState();
if ( mRBdup.isChecked() ) {
mRBsurf.setState( false );
}
} else if ( b == mRBsurf ) {
mRBsurf.toggleState();
if ( mRBsurf.isChecked() ) {
mRBdup.setState( false );
}
// } else if ( b == mRBbackshot ) {
// mRBdup.setChecked( false );
// mRBsurf.setChecked( false );
} else if ( b == mRBwalls ) {
mParent.drawWallsAt( mBlock );
dismiss();
} else if ( b == mBtnCancel ) {
dismiss();
} else if ( b == mBtnOK ) {
long extend = mBlock.mExtend;
long flag = mBlock.mFlag;
if ( mRBleft.isChecked() ) { extend = DistoXDBlock.EXTEND_LEFT; }
else if ( mRBvert.isChecked() ) { extend = DistoXDBlock.EXTEND_VERT; }
else if ( mRBright.isChecked() ) { extend = DistoXDBlock.EXTEND_RIGHT; }
else /* if ( mRBignore.isChecked() ) */ { extend = DistoXDBlock.EXTEND_IGNORE; }
if ( mRBdup.isChecked() ) { flag = DistoXDBlock.BLOCK_DUPLICATE; }
else if ( mRBsurf.isChecked() ) { flag = DistoXDBlock.BLOCK_SURFACE; }
// else if ( mRBbackshot.isChecked() ) { flag = DistoXDBlock.BLOCK_BACKSHOT; }
else /* if ( mRBsurvey.isChecked() ) */ { flag = DistoXDBlock.BLOCK_SURVEY; }
mParent.updateBlockExtend( mBlock, extend ); // equal extend checked by the method
mParent.updateBlockFlag( mBlock,flag ); // equal flag is checked by the method
String from = mETfrom.getText().toString().trim();
String to = mETto.getText().toString().trim();
String comment = mETcomment.getText().toString().trim();
if ( ! from.equals( mBlock.mFrom ) || ! to.equals( mBlock.mTo ) ) { // FIXME revert equals
mParent.updateBlockName( mBlock, from, to );
}
mParent.updateBlockComment( mBlock, comment ); // equal comment checked by the method
// } else if (view.getId() == R.id.button_cancel ) {
// /* nothing */
dismiss();
}
}
@Override
public void onBackPressed()
{
if ( CutNPaste.dismissPopup() ) return;
if ( TDSetting.mKeyboard ) {
if ( mKeyboard.isVisible() ) {
mKeyboard.hide();
return;
}
}
dismiss();
}
}