/* @file FixedDialog.java * * @author marco corvi * @date nov 2011 * * @brief TopoDroid survey fix point edit dialog * -------------------------------------------------------- * Copyright This sowftare is distributed under GPL-3.0 or later * See the file COPYING. * -------------------------------------------------------- */ package com.topodroid.DistoX; // import java.util.regex.Pattern; import java.util.Locale; import android.widget.ArrayAdapter; import android.app.Dialog; import android.os.Bundle; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.content.ActivityNotFoundException; import android.widget.TextView; import android.widget.EditText; import android.widget.Button; import android.widget.CheckBox; import android.view.View; import android.view.ViewGroup.LayoutParams; import android.widget.GridView; // import android.view.View.OnKeyListener; // import android.view.KeyEvent; import android.inputmethodservice.KeyboardView; import android.net.Uri; // import android.widget.Toast; import android.util.Log; public class FixedDialog extends MyDialog implements View.OnClickListener { private FixedActivity mParent; private FixedInfo mFxd; // private TextView mTVdata; private TextView mTVlng; private TextView mTVlat; private TextView mTValt; private TextView mTVasl; private TextView mETstation; private EditText mETcomment; private TextView mTVdecl; private TextView mTVfix_station; private Button mButtonDrop; private CheckBox mButtonDecl; private Button mButtonView; // private Button mButtonWmm; private Button mButtonSave; private Button mButtonConvert; private TextView mTVcrs; private TextView mTVcs_coords; private Button mButtonCancel; private WorldMagneticModel mWMM; public FixedDialog( Context context, FixedActivity parent, FixedInfo fxd ) { super( context, R.string.FixedDialog ); mParent = parent; mFxd = fxd; mWMM = new WorldMagneticModel( mContext ); } // void setCSto( String cs ) // { // mTVcrs.setText( cs ); // } void setConvertedCoords( String cs, double lng, double lat, double alt ) { mFxd.setCSCoords( cs, lng, lat, alt ); showConvertedCoords( ); } private void showConvertedCoords( ) { String cs = mFxd.cs; if ( cs != null && cs.length() > 0 ) { // setTitle( String.format(Locale.US, "%.2f %.2f %.1f", mFxd.cs_lng, mFxd.cs_lat, mFxd.cs_alt ) ); mTVcrs.setText( cs ); mTVcs_coords.setText( String.format(Locale.US, "%.2f %.2f %.1f", mFxd.cs_lng, mFxd.cs_lat, mFxd.cs_alt ) ); mTVcrs.setVisibility( View.VISIBLE ); mTVcs_coords.setVisibility( View.VISIBLE ); } else { mTVcrs.setVisibility( View.INVISIBLE ); mTVcs_coords.setVisibility( View.GONE ); } } long getFixedId() { return mFxd.id; } // ------------------------------------------------------------------- @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // TDLog.Log( TDLog.LOG_FIXED, "FixedDialog onCreate" ); initLayout( R.layout.fixed_dialog, R.string.title_fixed_edit ); mTVlng = (TextView) findViewById( R.id.fix_lng ); mTVlat = (TextView) findViewById( R.id.fix_lat ); mTValt = (TextView) findViewById( R.id.fix_alt ); mTVasl = (TextView) findViewById( R.id.fix_asl ); mTVdecl = (EditText) findViewById( R.id.fix_decl ); { int year = TopoDroidUtil.year(); int month = TopoDroidUtil.month(); int day = TopoDroidUtil.day(); MagElement elem = mWMM.computeMagElement( mFxd.lat, mFxd.lng, mFxd.alt, year, month, day ); mTVdecl.setText( String.format(Locale.US, "%.4f", elem.Decl ) ); } mButtonDecl = (CheckBox) findViewById( R.id.fix_save_decl ); mButtonView = (Button) findViewById( R.id.fix_view ); mButtonConvert = (Button) findViewById( R.id.fix_convert ); mTVcrs = (TextView) findViewById( R.id.fix_crs ); mTVcs_coords = (TextView) findViewById( R.id.fix_cs_coords ); mETstation = (TextView) findViewById( R.id.fix_station ); mETcomment = (EditText) findViewById( R.id.fix_comment ); mETstation.setText( mFxd.name ); mETcomment.setText( mFxd.comment ); mButtonSave = (Button) findViewById( R.id.fix_save ); mButtonDrop = (Button) findViewById(R.id.fix_drop ); // mButtonOK = (Button) findViewById(R.id.fix_ok ); // mButtonCancel = (Button) findViewById(R.id.fix_cancel ); mTVlng.setText( String.format( Locale.US, "%.6f", mFxd.lng ) ); mTVlat.setText( String.format( Locale.US, "%.6f", mFxd.lat ) ); mTValt.setText( String.format( Locale.US, "%.0f", mFxd.alt ) ); mTVasl.setText( String.format( Locale.US, "%.0f", mFxd.asl ) ); mButtonDrop.setOnClickListener( this ); mButtonView.setOnClickListener( this ); mButtonSave.setOnClickListener( this ); mButtonConvert.setOnClickListener( this ); // mButtonCancel.setOnClickListener( this ); showConvertedCoords( ); } public void onClick(View v) { Button b = (Button) v; // TDLog.Log( TDLog.LOG_INPUT, "FixedDialog onClick() button " + b.getText().toString() ); if ( b == mButtonSave ) { String station = mETstation.getText().toString(); if ( station == null || station.length() == 0 ) { mETstation.setError( mContext.getResources().getString( R.string.error_station_required ) ); return; } String comment = mETcomment.getText().toString(); if ( comment == null ) comment = ""; if ( mButtonDecl.isChecked() && mTVdecl.getText() != null ) { String decl_str = mTVdecl.getText().toString(); if ( decl_str != null && decl_str.length() > 0 ) { decl_str = decl_str.replaceAll( ",", "." ); try { mParent.setDeclination( Float.parseFloat( decl_str ) ); } catch ( NumberFormatException e ) { mTVdecl.setError( mContext.getResources().getString( R.string.error_declination_number ) ); return; } } } mFxd.name = station; mFxd.comment = comment; mParent.updateFixedNameComment( mFxd, station, comment ); dismiss(); } else if ( b == mButtonConvert ) { String cs_to = mFxd.hasCSCoords() ? mFxd.cs : TDSetting.mCRS; mParent.tryProj4( this, cs_to, mFxd ); return; } else if ( b == mButtonView ) { Uri uri = Uri.parse( "geo:" + mFxd.lat + "," + mFxd.lng ); mContext.startActivity( new Intent( Intent.ACTION_VIEW, uri ) ); } else if ( b == mButtonDrop ) { mParent.dropFixed( mFxd ); dismiss(); // } else { // b == mButtonCancel // dismiss(); } } @Override public void onBackPressed() { dismiss(); } }