/* @file SensorListActivity.java
*
* @author marco corvi
* @date may 2012
*
* @brief TopoDroid survey sensor listing
* --------------------------------------------------------
* Copyright This sowftare is distributed under GPL-3.0 or later
* See the file COPYING.
* --------------------------------------------------------
*/
package com.topodroid.DistoX;
import java.io.File;
import java.io.IOException;
// import java.io.EOFException;
// import java.io.DataInputStream;
// import java.io.DataOutputStream;
import java.io.BufferedReader;
import java.io.FileReader;
// import java.io.FileWriter;
import java.util.List;
import java.util.ArrayList;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.app.Application;
import android.app.Activity;
import android.content.ActivityNotFoundException;
// import android.content.res.ColorStateList;
import android.content.Context;
import android.content.Intent;
import android.view.Menu;
import android.view.MenuItem;
import android.view.SubMenu;
// import android.view.MenuInflater;
import android.view.KeyEvent;
// import android.location.LocationManager;
// import android.widget.ArrayAdapter;
import android.widget.TextView;
import android.widget.ListView;
import android.widget.Toast;
import android.app.Dialog;
import android.widget.Button;
import android.view.View;
// import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.preference.PreferenceManager;
import android.provider.MediaStore;
import android.graphics.Bitmap;
import android.graphics.Bitmap.CompressFormat;
import android.net.Uri;
public class SensorListActivity extends Activity
implements OnItemClickListener
{
private TopoDroidApp app;
private ListView mList;
// private int mListPos = -1;
// private int mListTop = 0;
private SensorAdapter mDataAdapter;
private long mShotId = -1; // id of the shot
private String mSaveData = "";
private TextView mSaveTextView = null;
private SensorInfo mSaveSensor = null;
String mSensorComment;
long mSensorId;
// -------------------------------------------------------------------
public void updateDisplay( )
{
// TDLog.Log( TDLog.LOG_SENSOR, "updateDisplay() status: " + StatusName() + " forcing: " + force_update );
DataHelper data = app.mData;
if ( data != null && app.mSID >= 0 ) {
List< SensorInfo > list = data.selectAllSensors( app.mSID, TopoDroidApp.STATUS_NORMAL );
// TDLog.Log( TDLog.LOG_PHOTO, "update shot list size " + list.size() );
updateSensorList( list );
setTitle( app.mySurvey );
// } else {
// Toast.makeText( this, R.string.no_survey, Toast.LENGTH_SHORT ).show();
}
}
private void updateSensorList( List< SensorInfo > list )
{
// TDLog.Log(TDLog.LOG_SENSOR, "updateSensorList size " + list.size() );
mDataAdapter.clear();
mList.setAdapter( mDataAdapter );
if ( list.size() == 0 ) {
Toast.makeText( this, R.string.no_sensors, Toast.LENGTH_SHORT ).show();
finish();
}
for ( SensorInfo item : list ) {
mDataAdapter.add( item );
}
}
// ---------------------------------------------------------------
// list items click
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id)
{
// TDLog.Log( TDLog.LOG_INPUT, "SensorListActivity onItemClick id " + id);
startSensorDialog( (TextView)view, position );
}
public void startSensorDialog( TextView tv, int pos )
{
mSaveSensor = mDataAdapter.get(pos);
(new SensorEditDialog( this, this, mSaveSensor )).show();
}
// ---------------------------------------------------------------
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate( savedInstanceState );
setContentView(R.layout.sensor_list_activity);
app = (TopoDroidApp) getApplication();
mDataAdapter = new SensorAdapter( this, R.layout.row, new ArrayList< SensorInfo >() );
mList = (ListView) findViewById(R.id.list);
mList.setAdapter( mDataAdapter );
mList.setOnItemClickListener( this );
mList.setDividerHeight( 2 );
updateDisplay( );
}
// ------------------------------------------------------------------
public void dropSensor( SensorInfo sensor )
{
app.mData.deleteSensor( sensor.sid, sensor.id );
updateDisplay( ); // FIXME
}
public void updateSensor( SensorInfo sensor, String comment )
{
// TDLog.Log( TDLog.LOG_SENSOR, "updateSensor comment " + comment );
if ( app.mData.updateSensor( sensor.sid, sensor.id, comment ) ) {
// if ( app.mListRefresh ) {
// // This works but it refreshes the whole list
// mDataAdapter.notifyDataSetChanged();
// } else {
// mSaveSensor.mComment = comment;
// }
updateDisplay(); // FIXME
} else {
Toast.makeText( this, R.string.no_db, Toast.LENGTH_SHORT ).show();
}
}
@Override
public boolean onKeyDown( int code, KeyEvent event )
{
switch ( code ) {
case KeyEvent.KEYCODE_MENU: // HARDWRAE MENU (82)
String help_page = getResources().getString( R.string.SensorListActivity );
if ( help_page != null ) UserManualActivity.showHelpPage( this, help_page );
return true;
case KeyEvent.KEYCODE_BACK: // HARDWARE BACK (4)
super.onBackPressed();
return true;
// case KeyEvent.KEYCODE_SEARCH:
// return onSearchRequested();
// case KeyEvent.KEYCODE_VOLUME_UP: // (24)
// case KeyEvent.KEYCODE_VOLUME_DOWN: // (25)
default:
// TDLog.Error( "key down: code " + code );
}
return false;
}
}