/** @file SketchNewShotDialog.java
*
* @author marco corvi
* @date mar 2013
*
* @brief TopoDroid sketch save dialog
* --------------------------------------------------------
* Copyright This sowftare is distributed under GPL-3.0 or later
* See the file COPYING.
* --------------------------------------------------------
*
* WARNING
* The Keyboard has not been tested
*/
package com.topodroid.DistoX;
import java.util.ArrayList;
import java.util.List;
import android.app.Dialog;
// import android.app.Activity;
import android.os.Bundle;
import android.content.Intent;
import android.content.Context;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.TextView;
import android.view.View;
import android.view.ViewGroup.LayoutParams;
// import android.view.View.OnKeyListener;
// import android.view.KeyEvent;
import android.text.InputType;
import android.inputmethodservice.KeyboardView;
public class SketchNewShotDialog extends MyDialog
implements View.OnClickListener
{
private Button mBtnOk;
// private Button mBtnCancel;
private CheckBox mCBsplay;
private EditText mETfrom;
private EditText mETto;
private EditText mETlength;
private EditText mETazimuth;
private EditText mETclino;
private SketchWindow mParent;
private DataHelper mData;
private ShotWindow mShots;
private TopoDroidApp mApp;
String mFrom;
boolean manual_shot;
DistoXDBlock mBlk;
private MyKeyboard mKeyboard;
SketchNewShotDialog( Context context, SketchWindow parent, TopoDroidApp app, String name )
{
super( context, R.string.SketchNewShotDialog );
mParent = parent;
mApp = app;
mData = app.mData;
mShots = app.mShotWindow;
mFrom = name;
mBlk = null;
if ( mFrom == null || mFrom.length() == 0 ) {
mFrom = mData.getLastStationName( mApp.mSID );
}
}
// -------------------------------------------------------------------
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
initLayout( R.layout.sketch_new_shot_dialog, R.string.title_sketch_shot );
mBtnOk = (Button) findViewById(R.id.btn_ok );
// mBtnCancel = (Button) findViewById(R.id.button_cancel );
mCBsplay = (CheckBox) findViewById(R.id.cb_splay );
mETfrom = (EditText) findViewById(R.id.et_from );
mETto = (EditText) findViewById(R.id.et_to );
mETlength = (EditText) findViewById(R.id.et_length );
mETazimuth = (EditText) findViewById(R.id.et_azimuth );
mETclino = (EditText) findViewById(R.id.et_clino );
mKeyboard = new MyKeyboard( mContext, (KeyboardView)findViewById( R.id.keyboardview ),
R.xml.my_keyboard_base_sign, R.xml.my_keyboard_qwerty );
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 );
MyKeyboard.registerEditText( mKeyboard, mETlength, MyKeyboard.FLAG_POINT );
MyKeyboard.registerEditText( mKeyboard, mETazimuth, MyKeyboard.FLAG_POINT );
MyKeyboard.registerEditText( mKeyboard, mETclino, MyKeyboard.FLAG_POINT_SIGN );
// TODO LRUD
// MyKeyboard.registerEditText( mKeyboard, mETleft, MyKeyboard.FLAG_POINT );
// MyKeyboard.registerEditText( mKeyboard, mETright, MyKeyboard.FLAG_POINT );
// MyKeyboard.registerEditText( mKeyboard, mETup, MyKeyboard.FLAG_POINT );
// MyKeyboard.registerEditText( mKeyboard, mETdown, MyKeyboard.FLAG_POINT );
} else {
mKeyboard.hide();
if ( TDSetting.mStationNames == 1 ) {
mETfrom.setInputType( TDConst.NUMBER_DECIMAL );
mETto.setInputType( TDConst.NUMBER_DECIMAL );
}
mETlength.setInputType( TDConst.NUMBER_DECIMAL );
mETazimuth.setInputType( TDConst.NUMBER_DECIMAL );
mETclino.setInputType( TDConst.NUMBER_DECIMAL_SIGNED );
}
// TextView station = (TextView) findViewById(R.id.tv_station );
if ( mShots != null ) {
mBlk = mShots.getNextBlankLegShot( null );
if ( mBlk != null ) {
mFrom = mBlk.mFrom;
mETfrom.setText( mFrom );
mETto.setText( mBlk.mTo );
mETlength.setText( Float.toString( mBlk.mLength ) );
mETazimuth.setText( Float.toString( mBlk.mBearing ) );
mETclino.setText( Float.toString( mBlk.mClino ) );
mETlength.setEnabled( false );
mETazimuth.setEnabled( false );
mETclino.setEnabled( false );
} else {
mETfrom.setText( mFrom );
String to = mFrom;
List< DistoXDBlock > list = mData.selectAllShots( mApp.mSID, 0 );
do {
to = DistoXStationName.increment( to );
} while ( DistoXStationName.listHasName( list, to ) );
mETto.setText( to );
}
}
mBtnOk.setOnClickListener( this );
// mBtnCancel.setOnClickListener( this );
}
public void onClick(View v)
{
// When the user clicks, just finish this activity.
// onPause will be called, and we save our data there.
mFrom = mETfrom.getText().toString();
String to = mETto.getText().toString();
Button b = (Button) v;
boolean splay = mCBsplay.isChecked();
if ( b == mBtnOk ) {
ArrayList<DistoXDBlock> updateList = null;
if ( splay ) {
to = "";
}
if ( mBlk == null ) {
float len = Float.parseFloat( mETlength.getText().toString() );
float ber = Float.parseFloat( mETazimuth.getText().toString() );
float cln = Float.parseFloat( mETclino.getText().toString() );
// append a new shot FIXME null splay ?
DistoXDBlock blk = mApp.insertManualShot( -1L, mFrom, to, len, ber, cln, 1L, null, null, null, null, null );
updateList = new ArrayList<DistoXDBlock>();
updateList.add( blk );
} else {
// set stations to mBlk
// mBlk.setName( mFrom, to ); // FIXME
if ( mShots != null ) {
mShots.updateShot( mFrom, to, 1, 0, false, null, mBlk ); // null comment ?
mBlk.setName( mFrom, to ); // reset block name/type
}
if ( ! splay ) {
/* updateList = mShots.numberSplays(); // FIXME-EXTEND in may go away ... */
} else {
updateList = new ArrayList<DistoXDBlock>();
}
updateList.add( mBlk );
}
// TODO mParent update Num
// mParent.recreateNum( mData.selectAllShots( mApp.mSID, 0 ) );
mParent.updateNum( updateList );
}
mParent.setMode( SketchDef.MODE_MOVE );
dismiss();
}
@Override
public void onBackPressed()
{
if ( TDSetting.mKeyboard ) {
if ( mKeyboard.isVisible() ) {
mKeyboard.hide();
return;
}
}
dismiss();
}
}