OSDN Git Service

Make Home button in TermPreferences/WindowList action bars serve as Up button
authorSteven Luo <steven+android@steven676.net>
Sat, 14 Jan 2012 12:24:22 +0000 (04:24 -0800)
committerJack Palevich <jackpal@google.com>
Mon, 16 Jan 2012 15:47:44 +0000 (07:47 -0800)
Signed-off-by: Jack Palevich <jackpal@google.com>
src/jackpal/androidterm/TermPreferences.java
src/jackpal/androidterm/WindowList.java
src/jackpal/androidterm/compat/ActionBarCompat.java

index e4f71bd..58f436f 100644 (file)
@@ -18,7 +18,10 @@ package jackpal.androidterm;
 
 import android.os.Bundle;
 import android.preference.PreferenceActivity;
+import android.view.MenuItem;
 
+import jackpal.androidterm.compat.ActionBarCompat;
+import jackpal.androidterm.compat.ActivityCompat;
 import jackpal.androidterm.compat.AndroidCompat;
 
 public class TermPreferences extends PreferenceActivity {
@@ -35,6 +38,25 @@ public class TermPreferences extends PreferenceActivity {
         if (AndroidCompat.SDK < 11) {
             getPreferenceManager().findPreference(ACTIONBAR_KEY).setEnabled(false);
         }
+
+        // Display up indicator on action bar home button
+        if (AndroidCompat.SDK >= 11) {
+            ActionBarCompat bar = ActivityCompat.getActionBar(this);
+            if (bar != null) {
+                bar.setDisplayOptions(ActionBarCompat.DISPLAY_HOME_AS_UP, ActionBarCompat.DISPLAY_HOME_AS_UP);
+            }
+        }
     }
 
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        switch (item.getItemId()) {
+        case ActionBarCompat.ID_HOME:
+            // Action bar home button selected
+            finish();
+            return true;
+        default:
+            return super.onOptionsItemSelected(item);
+        }
+    }
 }
index 0731c73..a45c44c 100644 (file)
@@ -26,6 +26,7 @@ import android.os.IBinder;
 import android.util.AttributeSet;
 import android.util.Log;
 import android.view.LayoutInflater;
+import android.view.MenuItem;
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.BaseAdapter;
@@ -33,6 +34,9 @@ import android.widget.ImageView;
 import android.widget.ListView;
 import android.widget.TextView;
 
+import jackpal.androidterm.compat.ActionBarCompat;
+import jackpal.androidterm.compat.ActivityCompat;
+import jackpal.androidterm.compat.AndroidCompat;
 import jackpal.androidterm.model.UpdateCallback;
 import jackpal.androidterm.session.TermSession;
 import jackpal.androidterm.util.SessionList;
@@ -91,6 +95,14 @@ public class WindowList extends ListActivity {
         listView.addHeaderView(newWindow, null, true);
 
         setResult(RESULT_CANCELED);
+
+        // Display up indicator on action bar home button
+        if (AndroidCompat.SDK >= 11) {
+            ActionBarCompat bar = ActivityCompat.getActionBar(this);
+            if (bar != null) {
+                bar.setDisplayOptions(ActionBarCompat.DISPLAY_HOME_AS_UP, ActionBarCompat.DISPLAY_HOME_AS_UP);
+            }
+        }
     }
 
     @Override
@@ -136,4 +148,16 @@ public class WindowList extends ListActivity {
         setResult(RESULT_OK, data);
         finish();
     }
+
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        switch (item.getItemId()) {
+        case ActionBarCompat.ID_HOME:
+            // Action bar home button selected
+            finish();
+            return true;
+        default:
+            return super.onOptionsItemSelected(item);
+        }
+    }
 }
index 7a356f4..1f951e3 100644 (file)
@@ -32,6 +32,8 @@ public abstract class ActionBarCompat {
     public static final int DISPLAY_SHOW_TITLE = 8;
     public static final int DISPLAY_SHOW_CUSTOM = 16;
 
+    // Provides android.R.id.home from API 11 and up
+    public static final int ID_HOME = 0x0102002c;
 
     public interface OnNavigationListener {
         public abstract boolean onNavigationItemSelected(int position, long id);