/* @file SurveyNewDialog.java * * @author marco corvi * @date may 2012 * * @brief TopoDroid survey activity * -------------------------------------------------------- * Copyright This sowftare is distributed under GPL-3.0 or later * See the file COPYING. * -------------------------------------------------------- */ package com.topodroid.DistoX; import java.util.List; // import java.io.File; // import java.io.IOException; // import android.app.Activity; import android.app.Dialog; import android.os.Bundle; import android.app.DatePickerDialog; import android.content.Context; // import android.content.Intent; import android.widget.EditText; import android.widget.TextView; import android.widget.Button; import android.widget.Toast; // import android.util.Log; import android.view.View; import android.view.ViewGroup.LayoutParams; import android.view.View.OnClickListener; // import android.widget.AdapterView; // import android.widget.AdapterView.OnItemClickListener; public class SurveyNewDialog extends MyDialog implements View.OnClickListener , View.OnLongClickListener { private MainWindow mParent; private EditText mEditName; private Button mEditDate; private EditText mEditTeam; private EditText mEditDecl; private EditText mEditStation; private EditText mEditComment; MyDateSetListener mDateListener; private Button mBTsave; private Button mBTopen; private Button mBTback; private TopoDroidApp mApp; private SurveyInfo info; private long mOldSid = -1L; private long mOldId = -1L; // ------------------------------------------------------------------- public SurveyNewDialog( Context context, MainWindow parent, long old_sid, long old_id ) { super( context, R.string.SurveyNewDialog ); mParent = parent; mApp = (TopoDroidApp) mParent.getApplication(); mOldSid = old_sid; mOldId = old_id; } @Override protected void onCreate( Bundle savedInstanceState) { super.onCreate( savedInstanceState ); initLayout( R.layout.survey_new_dialog, R.string.title_survey_new ); mEditName = (EditText) findViewById(R.id.survey_name); mEditDate = (Button) findViewById(R.id.survey_date); mEditTeam = (EditText) findViewById(R.id.survey_team); mEditStation = (EditText) findViewById(R.id.survey_station); mEditDecl = (EditText) findViewById(R.id.survey_decl); mEditComment = (EditText) findViewById(R.id.survey_comment); mDateListener = new MyDateSetListener( mEditDate ); mEditDate.setOnClickListener( this ); mEditStation.setText( TDSetting.mInitStation ); mEditStation.setOnLongClickListener( this ); if ( TDSetting.mDefaultTeam.length() > 0 ) { mEditTeam.setText( TDSetting.mDefaultTeam ); } mEditDate.setText( TopoDroidUtil.currentDate() ); mBTsave = (Button) findViewById( R.id.surveySave ); mBTopen = (Button) findViewById( R.id.surveyOpen ); mBTback = (Button) findViewById( R.id.surveyCancel ); mBTsave.setOnClickListener( this ); mBTopen.setOnClickListener( this ); mBTback.setOnClickListener( this ); } // ------------------------------------------ @Override public boolean onLongClick(View v) { CutNPaste.makePopup( mContext, (EditText)v ); return true; } @Override public void onClick(View view) { CutNPaste.dismissPopup(); Button b = (Button)view; if ( b == mBTback ) { dismiss(); } if ( b == mEditDate ) { String date = mEditDate.getText().toString(); int y = TopoDroidUtil.dateParseYear( date ); int m = TopoDroidUtil.dateParseMonth( date ); int d = TopoDroidUtil.dateParseDay( date ); new DatePickerDialog( mContext, mDateListener, y, m, d ).show(); return; } // if ( mEditName.getText() == null ) return; String name = mEditName.getText().toString(); if ( name == null || name.length() == 0 ) { String error = mContext.getResources().getString( R.string.error_name_required ); mEditName.setError( error ); return; } name = TopoDroidUtil.noSpaces( name ); if ( ! saveSurvey( name ) ) { String error = mContext.getResources().getString( R.string.survey_exists ); mEditName.setError( error ); return; } // TDLog.Log( TDLog.LOG_INPUT, "SurveyDialog onClick() " + item.toString() ); if ( b == mBTsave ) { // Log.v( TopoDroidApp.TAG, "new survey save "); dismiss(); mParent.updateDisplay( ); } else if ( b == mBTopen ) { // Log.v( TopoDroidApp.TAG, "new survey open "); dismiss(); mParent.doOpenSurvey( name ); } dismiss(); } // --------------------------------------------------------------- private boolean saveSurvey( String name ) { if ( name == null ) return false; name = TopoDroidUtil.noSpaces( name ); // FIXME FORCE NAMES WITHOUT SPACES name = name.trim(); if ( name.length() == 0 ) return false; if ( mApp.hasSurveyName( name ) ) { // name already exists // Toast.makeText( mContext, R.string.survey_exists, Toast.LENGTH_SHORT).show(); return false; } String date = mEditDate.getText().toString(); String team = mEditTeam.getText().toString(); String comment = mEditComment.getText().toString(); double decl = 0.0; if ( mEditDecl.getText() != null ) { String decl_str = mEditDecl.getText().toString(); if ( decl_str != null && decl_str.length() > 0 ) { decl_str = decl_str.replace(',', '.'); try { decl = Double.parseDouble( decl_str ); } catch ( NumberFormatException e ) { TDLog.Error( "parse Double error: declination " + decl_str ); } } } String init_station = TDSetting.mInitStation; if ( mEditStation.getText() != null ) { String station = mEditStation.getText().toString().replaceAll("\\s+", ""); if ( station.length() > 0 ) { init_station = station; } } if ( init_station == null || init_station.length() == 0 ) init_station = "0"; if ( date != null ) { date = date.trim(); } else { date = ""; } if ( team != null ) { team = team.trim(); } else { team = ""; } if ( comment != null ) { comment = comment.trim(); } else { comment = ""; } mApp.setSurveyFromName( name, true ); // save survey name: tell app to set it into the database mApp.mData.updateSurveyInfo( mApp.mSID, date, team, decl, comment, init_station, true ); if ( mOldSid >= 0L && mOldId >= 0L ) { // SPLIT_SURVEY mApp.mData.transferShots( mApp.mSID, mOldSid, mOldId ); mOldSid = -1L; mOldId = -1l; } return true; } @Override public void onBackPressed() { if ( CutNPaste.dismissPopup() ) return; dismiss(); } }