make UIHelper handle as much menus as possible

storage_ts_index
Georg Lukas 2011-03-24 00:03:11 +01:00
rodzic 8f20340724
commit 2417c5398b
7 zmienionych plików z 82 dodań i 37 usunięć

Wyświetl plik

@ -6,7 +6,7 @@
<item android:id="@+id/clear"
android:title="@string/clear_log"
android:alphabeticShortcut="c"
android:icon="@android:drawable/ic_menu_close_clear_cancel" />
android:icon="@android:drawable/ic_menu_delete" />
<item android:id="@+id/about"
android:title="@string/about"
android:alphabeticShortcut="a"

Wyświetl plik

@ -1,12 +1,31 @@
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/preferences"
android:title="@string/preferences"
android:alphabeticShortcut="p"
android:icon="@android:drawable/ic_menu_preferences" />
<item android:id="@+id/hub"
android:title="@string/show_hub"
android:alphabeticShortcut="h"
android:icon="@android:drawable/ic_menu_mylocation" />
<item android:id="@+id/map"
android:title="@string/show_map"
android:alphabeticShortcut="m"
android:icon="@android:drawable/ic_menu_mapmode" />
<item android:id="@+id/log"
android:title="@string/show_log"
android:alphabeticShortcut="l"
android:icon="@android:drawable/ic_menu_revert" />
android:icon="@android:drawable/ic_menu_recent_history" />
<item android:id="@+id/age"
android:title="@string/age"
android:alphabeticShortcut="a"
android:icon="@android:drawable/ic_menu_today" >
<menu>
<group android:checkableBehavior="single">
<item android:id="@+id/age_10"
android:title="@string/age_10" />
<item android:id="@+id/age_30"
android:title="@string/age_30" />
<item android:id="@+id/age_1d"
android:title="@string/age_1d" />
</group>
</menu>
</item>
<item android:id="@+id/overlays"
android:title="@string/map_overlays"
android:alphabeticShortcut="o"
@ -22,7 +41,11 @@
</item>
<item android:id="@+id/startstopbtn"
android:title="@string/startlog"
android:alphabeticShortcut="s"
android:alphabeticShortcut="t"
android:icon="@android:drawable/ic_menu_compass" />
<item android:id="@+id/preferences"
android:title="@string/preferences"
android:alphabeticShortcut="p"
android:icon="@android:drawable/ic_menu_preferences" />
</menu>

Wyświetl plik

@ -59,9 +59,16 @@
<string name="map_satellite">Satellite</string>
<string name="map_objects">APRS Objects</string>
<!-- map view -->
<string name="age">Show last...</string>
<string name="age_10">10 minutes</string>
<string name="age_30">30 minutes</string>
<string name="age_1d">1 day</string>
<!-- options menu -->
<string name="about">About</string>
<string name="show_hub">Show Hub</string>
<string name="show_map">Show Map</string>
<string name="show_log">Show Log</string>
<string name="clear_log">Clear Log</string>

Wyświetl plik

@ -24,7 +24,7 @@ class APRSdroid extends Activity with OnClickListener
val TAG = "APRSdroid"
lazy val prefs = new PrefsWrapper(this)
lazy val uihelper = new UIHelper(this, prefs)
lazy val uihelper = new UIHelper(this, R.id.log, prefs)
lazy val storage = StorageDatabase.open(this)
lazy val postcursor = storage.getPosts("100")
@ -97,12 +97,13 @@ class APRSdroid extends Activity with OnClickListener
}
override def onCreateOptionsMenu(menu : Menu) : Boolean = {
getMenuInflater().inflate(R.menu.options, menu);
getMenuInflater().inflate(R.menu.options_map, menu);
true
}
override def onPrepareOptionsMenu(menu : Menu) = uihelper.onPrepareOptionsMenu(menu)
def setupButtons(running : Boolean) {
singleBtn.setEnabled(!running)
//singleBtn.setEnabled(!running)
if (running) {
startstopBtn.setText(R.string.stoplog)
} else {

Wyświetl plik

@ -15,6 +15,8 @@ import scala.collection.JavaConversions._
class MapAct extends MapActivity {
val TAG = "MapAct"
lazy val prefs = new PrefsWrapper(this)
lazy val uihelper = new UIHelper(this, R.id.map, prefs)
lazy val mapview = findViewById(R.id.mapview).asInstanceOf[MapView]
lazy val allicons = this.getResources().getDrawable(R.drawable.allicons)
lazy val db = StorageDatabase.open(this)
@ -55,29 +57,10 @@ class MapAct extends MapActivity {
getMenuInflater().inflate(R.menu.options_map, menu);
true
}
override def onPrepareOptionsMenu(menu : Menu) : Boolean = {
val mi = menu.findItem(R.id.startstopbtn)
mi.setTitle(if (AprsService.running) R.string.stoplog else R.string.startlog)
mi.setIcon(if (AprsService.running) android.R.drawable.ic_menu_close_clear_cancel else android.R.drawable.ic_menu_compass)
true
}
override def onPrepareOptionsMenu(menu : Menu) = uihelper.onPrepareOptionsMenu(menu)
override def onOptionsItemSelected(mi : MenuItem) : Boolean = {
mi.getItemId match {
case R.id.preferences =>
startActivity(new Intent(this, classOf[PrefsAct]));
true
case R.id.map =>
finish();
true
case R.id.startstopbtn =>
val is_running = AprsService.running
if (!is_running) {
startService(AprsService.intent(this, AprsService.SERVICE))
} else {
stopService(AprsService.intent(this, AprsService.SERVICE))
}
true
case R.id.objects =>
mi.setChecked(!mi.isChecked())
showObjects = mi.isChecked()
@ -88,11 +71,7 @@ class MapAct extends MapActivity {
mi.setChecked(!mi.isChecked())
mapview.setSatellite(mi.isChecked())
true
case R.id.quit =>
stopService(AprsService.intent(this, AprsService.SERVICE))
finish();
true
case _ => false
case _ => uihelper.optionsItemAction(mi)
}
}

Wyświetl plik

@ -5,11 +5,12 @@ import _root_.android.content._
import _root_.android.database.Cursor
import _root_.android.os.{Bundle, Handler}
import _root_.android.util.Log
import _root_.android.view.View
import _root_.android.view.{Menu, MenuItem, View}
import _root_.android.widget.ListView
class StationActivity extends ListActivity {
lazy val prefs = new PrefsWrapper(this)
lazy val uihelper = new UIHelper(this, R.id.hub, prefs)
var targetcall = ""
lazy val pla = getIntentPLA()
@ -39,6 +40,17 @@ class StationActivity extends ListActivity {
pla.onDestroy()
}
override def onCreateOptionsMenu(menu : Menu) : Boolean = {
getMenuInflater().inflate(R.menu.options_map, menu);
true
}
override def onPrepareOptionsMenu(menu : Menu) = uihelper.onPrepareOptionsMenu(menu)
override def onOptionsItemSelected(mi : MenuItem) : Boolean = {
uihelper.optionsItemAction(mi)
}
override def onListItemClick(l : ListView, v : View, position : Int, id : Long) {
//super.onListItemClick(l, v, position, id)

Wyświetl plik

@ -8,7 +8,7 @@ import _root_.android.net.Uri
import _root_.android.view.{LayoutInflater, Menu, MenuItem, View}
import _root_.android.widget.Toast
class UIHelper(ctx : Activity, prefs : PrefsWrapper) {
class UIHelper(ctx : Activity, menu_id : Int, prefs : PrefsWrapper) {
def openPrefs(toastId : Int) {
ctx.startActivity(new Intent(ctx, classOf[PrefsAct]));
@ -72,6 +72,17 @@ class UIHelper(ctx : Activity, prefs : PrefsWrapper) {
def showFirstRunDialog() {
}
def onPrepareOptionsMenu(menu : Menu) : Boolean = {
val mi = menu.findItem(R.id.startstopbtn)
mi.setTitle(if (AprsService.running) R.string.stoplog else R.string.startlog)
mi.setIcon(if (AprsService.running) android.R.drawable.ic_menu_close_clear_cancel else android.R.drawable.ic_menu_compass)
// disable the "own" menu
Array(R.id.hub, R.id.map, R.id.log).map((id) => {
menu.findItem(id).setVisible(id != menu_id)
})
menu.findItem(R.id.overlays).setVisible(R.id.map == menu_id)
true
}
def optionsItemAction(mi : MenuItem) : Boolean = {
mi.getItemId match {
@ -85,9 +96,20 @@ class UIHelper(ctx : Activity, prefs : PrefsWrapper) {
case R.id.about =>
aboutDialog()
true
// switch between activities
case R.id.hub =>
ctx.startActivity(new Intent(ctx, classOf[StationActivity]));
ctx.finish()
true
case R.id.map =>
ctx.startActivity(new Intent(ctx, classOf[MapAct]));
ctx.finish()
true
case R.id.log =>
ctx.startActivity(new Intent(ctx, classOf[APRSdroid]));
ctx.finish()
true
// toggle service
case R.id.startstopbtn =>
val is_running = AprsService.running
if (!is_running) {
@ -96,6 +118,7 @@ class UIHelper(ctx : Activity, prefs : PrefsWrapper) {
ctx.stopService(AprsService.intent(ctx, AprsService.SERVICE))
}
true
// quit the app
case R.id.quit =>
// XXX deprecated!
ctx.stopService(AprsService.intent(ctx, AprsService.SERVICE))