package com.robert.maps.applib.kml; import android.app.Activity; import android.database.Cursor; import android.graphics.drawable.Drawable; import android.graphics.drawable.LayerDrawable; import android.os.Bundle; import android.view.KeyEvent; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.SimpleCursorAdapter; import android.widget.Spinner; import android.widget.Toast; import com.robert.maps.applib.R; import com.robert.maps.applib.kml.utils.TrackStyleDrawable; import com.robert.maps.applib.kml.utils.TrackStylePickerDialog; import com.robert.maps.applib.kml.utils.TrackStylePickerDialog.OnTrackStyleChangedListener; public class TrackActivity extends Activity implements OnTrackStyleChangedListener{ EditText mName, mDescr; Spinner mActivity; private Track mTrack; private PoiManager mPoiManager; TrackStylePickerDialog mDialog; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.setContentView(R.layout.track); if(mPoiManager == null) mPoiManager = new PoiManager(this); mName = (EditText) findViewById(R.id.Name); mDescr = (EditText) findViewById(R.id.Descr); mActivity = (Spinner) findViewById(R.id.Activity); Cursor c = mPoiManager.getGeoDatabase().getActivityListCursor(); startManagingCursor(c); SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, android.R.layout.simple_spinner_item, c, new String[] { "name" }, new int[] { android.R.id.text1 }); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); mActivity.setAdapter(adapter); Bundle extras = getIntent().getExtras(); if(extras == null) extras = new Bundle(); int id = extras.getInt("id", PoiPoint.EMPTY_ID()); if(id < 0){ mTrack = new Track(); mName.setText(extras.getString("name")); mDescr.setText(extras.getString("descr")); mActivity.setSelection(0); }else{ mTrack = mPoiManager.getTrack(id); if(mTrack == null) finish(); mName.setText(mTrack.Name); mDescr.setText(mTrack.Descr); mActivity.setSelection(mTrack.Activity); } findViewById(R.id.trackstyle).setOnClickListener(new OnClickListener() { public void onClick(View v) { mDialog = new TrackStylePickerDialog(TrackActivity.this, mTrack.Color, mTrack.Width, mTrack.ColorShadow, mTrack.ShadowRadius); mDialog.setOnTrackStyleChangedListener(TrackActivity.this); mDialog.show(); } }); ((Button) findViewById(R.id.saveButton)) .setOnClickListener(new OnClickListener() { public void onClick(View v) { doSaveAction(); } }); ((Button) findViewById(R.id.discardButton)) .setOnClickListener(new OnClickListener() { public void onClick(View v) { TrackActivity.this.finish(); } }); final Drawable dr = new TrackStyleDrawable(mTrack.Color, mTrack.Width, mTrack.ColorShadow, mTrack.ShadowRadius); final Drawable[] d = {getResources().getDrawable(R.drawable.r_home_other1), dr}; LayerDrawable ld = new LayerDrawable(d); ((Button) findViewById(R.id.trackstyle)).setCompoundDrawablesWithIntrinsicBounds(null, null, ld, null); } @Override protected void onDestroy() { super.onDestroy(); mPoiManager.FreeDatabases(); } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { switch (keyCode) { case KeyEvent.KEYCODE_BACK: { doSaveAction(); return true; } } return super.onKeyDown(keyCode, event); } private void doSaveAction() { mTrack.Name = mName.getText().toString(); mTrack.Descr = mDescr.getText().toString(); mTrack.Activity = mActivity.getSelectedItemPosition(); mPoiManager.updateTrack(mTrack); finish(); Toast.makeText(TrackActivity.this, R.string.message_saved, Toast.LENGTH_SHORT).show(); } public void onTrackStyleChanged(int color, int width, int colorshadow, double shadowradius) { mTrack.Color = color; mTrack.Width = width; mTrack.ColorShadow = colorshadow; mTrack.ShadowRadius = shadowradius; mTrack.Style = mTrack.getStyle(); final Drawable dr = new TrackStyleDrawable(mTrack.Color, mTrack.Width, mTrack.ColorShadow, mTrack.ShadowRadius); final Drawable[] d = {getResources().getDrawable(R.drawable.r_home_other1), dr}; LayerDrawable ld = new LayerDrawable(d); ((Button) findViewById(R.id.trackstyle)).setCompoundDrawablesWithIntrinsicBounds(null, null, ld, null); } }