GPSTrackEditActivity.java :  » UnTagged » andicar » org » andicar » activity » Android Open Source

Android Open Source » UnTagged » andicar 
andicar » org » andicar » activity » GPSTrackEditActivity.java
/*
 *  AndiCar - a car management software for Android powered devices.
 *
 *  Copyright (C) 2010 Miklos Keresztes (miklos.keresztes@gmail.com)
 *
 *  This program is free software: you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation, either version 3 of the License, or
 *  (at your option) any later version.
 *
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

package org.andicar.activity;

import org.andicar.activity.miscellaneous.GPSTrackMap;
import org.andicar.persistence.MainDbAdapter;
import org.andicar.persistence.ReportDbAdapter;
import org.andicar.utils.AndiCarStatistics;
import org.andicar.utils.Utils;

import android.content.ContentValues;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
import android.widget.Spinner;
import android.widget.TextView;

/**
 *
 * @author miki
 */
public class GPSTrackEditActivity extends EditActivityBase {
    private TextView tvCarLabel;
    private Spinner spnDriver;
    private EditText etName;
    private AutoCompleteTextView acUserComment;
    private AutoCompleteTextView acTag;
    private ListView lvTrackFileList;
    private TextView tvTrackStats;
    private ImageButton btnGPSTrackShowOnMap;
    private ImageButton btnGPSTrackSendAsEmail;
    private ArrayAdapter<String> userCommentAdapter;
    private ArrayAdapter<String> tagAdapter;
    private long mTagId = 0;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle icicle) {

        super.onCreate(icicle);
        
        tvCarLabel = (TextView)findViewById(R.id.tvCarLabel);
        etName = (EditText)findViewById(R.id.etName);
        acUserComment = (AutoCompleteTextView) findViewById( R.id.acUserComment );
        spnDriver = (Spinner)findViewById(R.id.spnDriver);
        tvTrackStats = (TextView)findViewById(R.id.tvTrackStats);
        lvTrackFileList = (ListView)findViewById(R.id.lvTrackFileList);
        btnGPSTrackSendAsEmail = (ImageButton)findViewById(R.id.btnGPSTrackSendAsEmail);
        btnGPSTrackSendAsEmail.setOnClickListener(mBtnSendAsEmailListener);
        btnGPSTrackShowOnMap = (ImageButton)findViewById(R.id.btnGPSTrackShowOnMap);
        btnGPSTrackShowOnMap.setOnClickListener(mBtnShowOnMapListener);

        userCommentAdapter = new ArrayAdapter<String>(GPSTrackEditActivity.this,
                android.R.layout.simple_dropdown_item_1line,
                mDbAdapter.getAutoCompleteText(MainDbAdapter.GPSTRACK_TABLE_NAME, null,
                mPreferences.getLong("CurrentCar_ID", -1), 30));
        acUserComment.setAdapter(userCommentAdapter);

        mRowId = mBundleExtras.getLong( MainDbAdapter.GEN_COL_ROWID_NAME );
        Cursor c = mDbAdapter.fetchRecord(MainDbAdapter.GPSTRACK_TABLE_NAME,
                MainDbAdapter.gpsTrackTableColNames, mRowId);
        mCarId = c.getLong(MainDbAdapter.GPSTRACK_COL_CAR_ID_POS);
        mDriverId = c.getLong(MainDbAdapter.GPSTRACK_COL_DRIVER_ID_POS);

        etName.setText(c.getString(MainDbAdapter.GEN_COL_NAME_POS));
        acUserComment.setText(c.getString(MainDbAdapter.GEN_COL_USER_COMMENT_POS));

        tvCarLabel.setText(mResource.getString(R.string.GEN_CarLabel) + " " +
                        mDbAdapter.fetchRecord(MainDbAdapter.CAR_TABLE_NAME, MainDbAdapter.genColName, mCarId).getString(1));


        
        acTag = ((AutoCompleteTextView) findViewById( R.id.acTag ));
        tagAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line,
                mDbAdapter.getAutoCompleteText(MainDbAdapter.TAG_TABLE_NAME, null,
                0, 0));
        acTag.setAdapter(tagAdapter);
        //fill tag
        if(c.getString(MainDbAdapter.GPSTRACK_COL_TAG_ID_POS) != null
                && c.getString(MainDbAdapter.GPSTRACK_COL_TAG_ID_POS).length() > 0){
            mTagId = c.getLong(MainDbAdapter.GPSTRACK_COL_TAG_ID_POS);
            String selection = MainDbAdapter.GEN_COL_ROWID_NAME + "= ? ";
            String[] selectionArgs = {Long.toString(mTagId)};
            Cursor c2 = mDbAdapter.query(MainDbAdapter.TAG_TABLE_NAME, MainDbAdapter.genColName,
                        selection, selectionArgs, null, null, null);
            if(c2.moveToFirst())
                acTag.setText(c2.getString(MainDbAdapter.GEN_COL_NAME_POS));
            c2.close();
        }

        initSpinner(spnDriver, MainDbAdapter.DRIVER_TABLE_NAME, MainDbAdapter.genColName,
                new String[]{MainDbAdapter.GEN_COL_NAME_NAME}, MainDbAdapter.isActiveCondition, null, MainDbAdapter.GEN_COL_NAME_NAME,
                mDriverId, false);
        initDateTime(c.getLong(MainDbAdapter.GPSTRACK_COL_DATE_POS) * 1000);
        tvDateTimeValue.setText(mResource.getString(R.string.GEN_DateTimeLabel) + " " + tvDateTimeValue.getText());
        c.close();

        //statistics
        Bundle whereConditions = new Bundle();
        whereConditions.clear();
        whereConditions.putString(
            ReportDbAdapter.sqlConcatTableColumn(MainDbAdapter.GPSTRACK_TABLE_NAME, MainDbAdapter.GEN_COL_ROWID_NAME) + "=",
                    String.valueOf(mRowId));
        ReportDbAdapter reportDb = new ReportDbAdapter(this, "gpsTrackListViewSelect", whereConditions);
        c = reportDb.fetchReport(1);
        if (c.moveToFirst()) {
            tvTrackStats.setText(
                    c.getString(c.getColumnIndex(ReportDbAdapter.SECOND_LINE_LIST_NAME))
                    .replace("[#1]", mResource.getString(R.string.GPSTrackReport_GPSTrackVar_1))
                    .replace("[#2]", mResource.getString(R.string.GPSTrackReport_GPSTrackVar_2))
                    .replace("[#3]", mResource.getString(R.string.GPSTrackReport_GPSTrackVar_3))
                    .replace("[#4]", mResource.getString(R.string.GPSTrackReport_GPSTrackVar_4))
                    .replace("[#5]", mResource.getString(R.string.GPSTrackReport_GPSTrackVar_5) +
                            Utils.getTimeString(c.getLong(c.getColumnIndex(ReportDbAdapter.FOURTH_LINE_LIST_NAME)), false))
                    .replace("[#6]", mResource.getString(R.string.GPSTrackReport_GPSTrackVar_6) +
                            Utils.getTimeString(c.getLong(c.getColumnIndex(ReportDbAdapter.FIFTH_LINE_LIST_NAME)), false))
                    .replace("[#7]", mResource.getString(R.string.GPSTrackReport_GPSTrackVar_7))
                    .replace("[#8]", mResource.getString(R.string.GPSTrackReport_GPSTrackVar_8))
                    .replace("[#9]", mResource.getString(R.string.GPSTrackReport_GPSTrackVar_9))
                    .replace("[#10]", mResource.getString(R.string.GPSTrackReport_GPSTrackVar_10))
                    .replace("[#11]", mResource.getString(R.string.GPSTrackReport_GPSTrackVar_11))
                    );
        }
        c.close();
        reportDb.close();

        String selection = MainDbAdapter.GPSTRACKDETAIL_COL_GPSTRACK_ID_NAME + "=?";
        String[] selectionArgs = {Long.toString(mRowId)};
        SimpleCursorAdapter cursorAdapter =
                new SimpleCursorAdapter(this, /*android.R.layout.simple_list_item_2*/ R.layout.oneline_list_layout_smalll,
                                    mDbAdapter.query(MainDbAdapter.GPSTRACKDETAIL_TABLE_NAME,
                                            MainDbAdapter.gpsTrackDetailTableColNames, selection, selectionArgs, null, null, MainDbAdapter.GPSTRACKDETAIL_COL_FILE_NAME),
                                    new String[]{MainDbAdapter.GPSTRACKDETAIL_COL_FILE_NAME}, new int[]{R.id.tvOneLineListTextSmall});

        lvTrackFileList.setAdapter(cursorAdapter);

        if(isSendStatistics)
            AndiCarStatistics.sendFlurryEvent(this, "GPSTrackEdit", null);
    }

    private View.OnClickListener mBtnSendAsEmailListener =
            new View.OnClickListener()
                {
                    public void onClick( View v )
                    {
                        Utils u = new Utils();
                        u.sendGPSTrackAsEmail(GPSTrackEditActivity.this, mResource, mRowId);
                    }
                };

    private View.OnClickListener mBtnShowOnMapListener =
            new View.OnClickListener() {
                public void onClick(View v) {
                    Intent gpstrackShowMapIntent = new Intent(GPSTrackEditActivity.this, GPSTrackMap.class);
                    gpstrackShowMapIntent.putExtra("gpsTrackId", Long.toString(mRowId));
                    startActivity(gpstrackShowMapIntent);
                }
            };

    @Override
    protected void saveData() {
        if(!beforeSave())
          return;

        ContentValues data = new ContentValues();
        data.put( MainDbAdapter.GEN_COL_NAME_NAME,
                etName.getText().toString());
        data.put( MainDbAdapter.GEN_COL_ISACTIVE_NAME, "Y");
        data.put( MainDbAdapter.GEN_COL_USER_COMMENT_NAME,
                acUserComment.getText().toString() );
        data.put( MainDbAdapter.GPSTRACK_COL_DRIVER_ID_NAME,
                spnDriver.getSelectedItemId() );
        if(acTag.getText().toString() != null && acTag.getText().toString().length() > 0){
            String selection = "UPPER (" + MainDbAdapter.GEN_COL_NAME_NAME + ") = ?";
            String[] selectionArgs = {acTag.getText().toString().toUpperCase()};
            Cursor c = mDbAdapter.query(MainDbAdapter.TAG_TABLE_NAME, MainDbAdapter.genColName, selection, selectionArgs,
                    null, null, null);
            String tagIdStr = null;
            if(c.moveToFirst())
                tagIdStr = c.getString(MainDbAdapter.GEN_COL_ROWID_POS);
            c.close();
            if(tagIdStr != null && tagIdStr.length() > 0){
                mTagId = Long.parseLong(tagIdStr);
                data.put(MainDbAdapter.GPSTRACK_COL_TAG_ID_NAME, mTagId);
            }
            else{
                ContentValues tmpData = new ContentValues();
                tmpData.put(MainDbAdapter.GEN_COL_NAME_NAME, acTag.getText().toString());
                mTagId = mDbAdapter.createRecord(MainDbAdapter.TAG_TABLE_NAME, tmpData);
                if(mTagId >= 0)
                    data.put(MainDbAdapter.GPSTRACK_COL_TAG_ID_NAME, mTagId);
            }
        }
        else{
            data.put(MainDbAdapter.GPSTRACK_COL_TAG_ID_NAME, (String)null);
        }

        int updResult = mDbAdapter.updateRecord(MainDbAdapter.GPSTRACK_TABLE_NAME, mRowId, data);
        if(updResult != -1){
            String errMsg = "";
            errMsg = mResource.getString(updResult);
            if(updResult == R.string.ERR_000)
                errMsg = errMsg + "\n" + mDbAdapter.lastErrorMessage;
            madbErrorAlert.setMessage(errMsg);
            madError = madbErrorAlert.create();
            madError.show();
        }
        else{
          if(mPreferences.getBoolean("RememberLastTag", false) && mTagId > 0){
            mPrefEditor.putLong("LastTagId", mTagId);
            mPrefEditor.commit();
          }
            finish();
        }
    }

    @Override
    protected void setLayout() {
        setContentView(R.layout.gpstrack_edit_activity);
    }
}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.