diff --git a/res/layout/stationactivity.xml b/res/layout/stationactivity.xml
index 8fbc256..7faa606 100644
--- a/res/layout/stationactivity.xml
+++ b/res/layout/stationactivity.xml
@@ -5,6 +5,10 @@ android:layout_height="fill_parent"
android:orientation="vertical"
xmlns:android="http://schemas.android.com/apk/res/android"
>
-
+
+
diff --git a/src/PositionListAdapter.scala b/src/PositionListAdapter.scala
new file mode 100644
index 0000000..e98069d
--- /dev/null
+++ b/src/PositionListAdapter.scala
@@ -0,0 +1,74 @@
+package org.aprsdroid.app
+
+import _root_.android.content._
+import _root_.android.database.Cursor
+import _root_.android.os.{Bundle, Handler}
+import _root_.android.text.format.DateUtils
+import _root_.android.util.Log
+import _root_.android.view.View
+import _root_.android.widget.{SimpleCursorAdapter, TextView}
+
+object PositionListAdapter {
+ import StorageDatabase.Position._
+ val LIST_FROM = Array(CALL, COMMENT, QRG)
+ val LIST_TO = Array(R.id.station_call, R.id.listmessage, R.id.station_qrg)
+}
+
+class PositionListAdapter(context : Context,
+ mycall : String)
+ extends SimpleCursorAdapter(context, R.layout.stationview, null, PositionListAdapter.LIST_FROM, PositionListAdapter.LIST_TO) {
+
+ var my_lat = 0
+ var my_lon = 0
+ lazy val storage = StorageDatabase.open(context)
+
+ reload()
+
+ lazy val locReceiver = new LocationReceiver(new Handler(), () => {
+ reload()
+ })
+ context.registerReceiver(locReceiver, new IntentFilter(AprsService.UPDATE))
+
+
+ override def bindView(view : View, context : Context, cursor : Cursor) {
+ import StorageDatabase.Position._
+
+ // TODO: multidimensional mapping
+ val distage = view.findViewById(R.id.station_distage).asInstanceOf[TextView]
+ val call = cursor.getString(COLUMN_CALL)
+ val ts = cursor.getLong(COLUMN_TS)
+ val age = DateUtils.getRelativeTimeSpanString(context, ts)
+ val lat = cursor.getInt(COLUMN_LAT)
+ val lon = cursor.getInt(COLUMN_LON)
+ val dist = Array[Float](0, 0)
+
+ if (call == mycall) {
+ view.setBackgroundColor(0x4020ff20)
+ } else
+ view.setBackgroundColor(0)
+ val MCD = 1000000.
+ android.location.Location.distanceBetween(my_lat/MCD, my_lon/MCD,
+ lat/MCD, lon/MCD, dist)
+ Log.d("PLS", "distance %d %d - %d %d = %1.2f".format(my_lat, my_lon, lat, lon, dist(0)/1000))
+ distage.setText("%1.2f km : %3.0f°\n%s".format(dist(0)/1000., dist(1), age))
+ super.bindView(view, context, cursor)
+ }
+
+ def updateMyLocation(lat : Int, lon : Int) {
+ my_lat = lat
+ my_lon = lon
+ val new_cursor = storage.getNeighbors(my_lat, my_lon, "20")
+ changeCursor(new_cursor)
+ }
+
+ def reload() {
+ val cursor = storage.getStaPositions(mycall, "1")
+ if (cursor.getCount() > 0) {
+ cursor.moveToFirst()
+ val lat = cursor.getInt(StorageDatabase.Position.COLUMN_LAT)
+ val lon = cursor.getInt(StorageDatabase.Position.COLUMN_LON)
+ updateMyLocation(lat, lon)
+ }
+ cursor.close()
+ }
+}
diff --git a/src/StationActivity.scala b/src/StationActivity.scala
index fad03cd..ebc0adf 100644
--- a/src/StationActivity.scala
+++ b/src/StationActivity.scala
@@ -1,12 +1,14 @@
package org.aprsdroid.app
-import _root_.android.app.Activity
+import _root_.android.app.ListActivity
+import _root_.android.content._
import _root_.android.os.{Bundle, Handler}
-class StationActivity extends Activity {
+class StationActivity extends ListActivity {
override def onCreate(savedInstanceState: Bundle) {
super.onCreate(savedInstanceState)
setContentView(R.layout.stationactivity)
- }
+ setListAdapter(new PositionListAdapter(this, "DO1GL-7"))
+ }
}