diff options
| author | Dominik Schürmann <dominik@dominikschuermann.de> | 2013-09-09 13:19:43 +0200 | 
|---|---|---|
| committer | Dominik Schürmann <dominik@dominikschuermann.de> | 2013-09-09 13:19:43 +0200 | 
| commit | aae87b894f72a719a850ec32ad6944bd5c743331 (patch) | |
| tree | b5a221fcb529c07b309f5bde0563155df28a472c /libraries/ActionBarSherlock/src/com/actionbarsherlock/internal/ActionBarSherlockCompat.java | |
| parent | 5b6880d2e34f4c8a4bfba87b5ce53d3c6727b744 (diff) | |
| download | open-keychain-aae87b894f72a719a850ec32ad6944bd5c743331.tar.gz open-keychain-aae87b894f72a719a850ec32ad6944bd5c743331.tar.bz2 open-keychain-aae87b894f72a719a850ec32ad6944bd5c743331.zip  | |
Update actionbarsherlock from 4.2 to 4.4
Diffstat (limited to 'libraries/ActionBarSherlock/src/com/actionbarsherlock/internal/ActionBarSherlockCompat.java')
| -rw-r--r-- | libraries/ActionBarSherlock/src/com/actionbarsherlock/internal/ActionBarSherlockCompat.java | 258 | 
1 files changed, 116 insertions, 142 deletions
diff --git a/libraries/ActionBarSherlock/src/com/actionbarsherlock/internal/ActionBarSherlockCompat.java b/libraries/ActionBarSherlock/src/com/actionbarsherlock/internal/ActionBarSherlockCompat.java index 5e69275c7..e89850203 100644 --- a/libraries/ActionBarSherlock/src/com/actionbarsherlock/internal/ActionBarSherlockCompat.java +++ b/libraries/ActionBarSherlock/src/com/actionbarsherlock/internal/ActionBarSherlockCompat.java @@ -1,11 +1,5 @@  package com.actionbarsherlock.internal; -import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; -import static com.actionbarsherlock.internal.ResourcesCompat.getResources_getBoolean; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import org.xmlpull.v1.XmlPullParser;  import android.app.Activity;  import android.content.Context;  import android.content.pm.ActivityInfo; @@ -28,9 +22,8 @@ import android.view.Window;  import android.view.accessibility.AccessibilityEvent;  import android.view.animation.Animation;  import android.view.animation.AnimationUtils; -import android.widget.FrameLayout; -import android.widget.TextView;  import com.actionbarsherlock.ActionBarSherlock; +import com.actionbarsherlock.BuildConfig;  import com.actionbarsherlock.R;  import com.actionbarsherlock.app.ActionBar;  import com.actionbarsherlock.internal.app.ActionBarImpl; @@ -46,6 +39,13 @@ import com.actionbarsherlock.internal.widget.IcsProgressBar;  import com.actionbarsherlock.view.ActionMode;  import com.actionbarsherlock.view.Menu;  import com.actionbarsherlock.view.MenuItem; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import org.xmlpull.v1.XmlPullParser; + +import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; +import static com.actionbarsherlock.internal.ResourcesCompat.getResources_getBoolean;  @ActionBarSherlock.Implementation(api = 7)  public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBuilder.Callback, com.actionbarsherlock.view.Window.Callback, MenuPresenter.Callback, android.view.MenuItem.OnMenuItemClickListener { @@ -108,13 +108,6 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu      /** Parent view in which the context action bar is displayed. */      private ActionBarContextView mActionModeView; -    /** Title view used with dialogs. */ -    private TextView mTitleView; -    /** Current activity title. */ -    private CharSequence mTitle = null; -    /** Whether or not this "activity" is floating (i.e., a dialog) */ -    private boolean mIsFloating; -      /////////////////////////////////////////////////////////////////////////// @@ -123,14 +116,14 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu      @Override      public ActionBar getActionBar() { -        if (DEBUG) Log.d(TAG, "[getActionBar]"); +        if (ActionBarSherlock.DEBUG) Log.d(TAG, "[getActionBar]");          initActionBar();          return aActionBar;      }      private void initActionBar() { -        if (DEBUG) Log.d(TAG, "[initActionBar]"); +        if (ActionBarSherlock.DEBUG) Log.d(TAG, "[initActionBar]");          // Initializing the window decor can change window feature flags.          // Make sure that we have the correct set before performing the test below. @@ -157,14 +150,14 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu      @Override      public void setTitle(CharSequence title) { -        if (DEBUG) Log.d(TAG, "[setTitle] title: " + title); +        if (ActionBarSherlock.DEBUG) Log.d(TAG, "[setTitle] title: " + title);          dispatchTitleChanged(title, 0);      }      @Override      public ActionMode startActionMode(ActionMode.Callback callback) { -        if (DEBUG) Log.d(TAG, "[startActionMode] callback: " + callback); +        if (ActionBarSherlock.DEBUG) Log.d(TAG, "[startActionMode] callback: " + callback);          if (mActionMode != null) {              mActionMode.finish(); @@ -215,7 +208,7 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu      @Override      public void dispatchConfigurationChanged(Configuration newConfig) { -        if (DEBUG) Log.d(TAG, "[dispatchConfigurationChanged] newConfig: " + newConfig); +        if (ActionBarSherlock.DEBUG) Log.d(TAG, "[dispatchConfigurationChanged] newConfig: " + newConfig);          if (aActionBar != null) {              aActionBar.onConfigurationChanged(newConfig); @@ -224,7 +217,7 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu      @Override      public void dispatchPostResume() { -        if (DEBUG) Log.d(TAG, "[dispatchPostResume]"); +        if (ActionBarSherlock.DEBUG) Log.d(TAG, "[dispatchPostResume]");          if (aActionBar != null) {              aActionBar.setShowHideAnimationEnabled(true); @@ -233,7 +226,7 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu      @Override      public void dispatchPause() { -        if (DEBUG) Log.d(TAG, "[dispatchPause]"); +        if (ActionBarSherlock.DEBUG) Log.d(TAG, "[dispatchPause]");          if (wActionBar != null && wActionBar.isOverflowMenuShowing()) {              wActionBar.hideOverflowMenu(); @@ -242,7 +235,7 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu      @Override      public void dispatchStop() { -        if (DEBUG) Log.d(TAG, "[dispatchStop]"); +        if (ActionBarSherlock.DEBUG) Log.d(TAG, "[dispatchStop]");          if (aActionBar != null) {              aActionBar.setShowHideAnimationEnabled(false); @@ -251,7 +244,7 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu      @Override      public void dispatchInvalidateOptionsMenu() { -        if (DEBUG) Log.d(TAG, "[dispatchInvalidateOptionsMenu]"); +        if (ActionBarSherlock.DEBUG) Log.d(TAG, "[dispatchInvalidateOptionsMenu]");          Bundle savedActionViewStates = null;          if (mMenu != null) { @@ -275,7 +268,7 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu      @Override      public boolean dispatchOpenOptionsMenu() { -        if (DEBUG) Log.d(TAG, "[dispatchOpenOptionsMenu]"); +        if (ActionBarSherlock.DEBUG) Log.d(TAG, "[dispatchOpenOptionsMenu]");          if (!isReservingOverflow()) {              return false; @@ -286,7 +279,7 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu      @Override      public boolean dispatchCloseOptionsMenu() { -        if (DEBUG) Log.d(TAG, "[dispatchCloseOptionsMenu]"); +        if (ActionBarSherlock.DEBUG) Log.d(TAG, "[dispatchCloseOptionsMenu]");          if (!isReservingOverflow()) {              return false; @@ -300,7 +293,7 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu      @Override      public void dispatchPostCreate(Bundle savedInstanceState) { -        if (DEBUG) Log.d(TAG, "[dispatchOnPostCreate]"); +        if (ActionBarSherlock.DEBUG) Log.d(TAG, "[dispatchOnPostCreate]");          if (mIsDelegate) {              mIsTitleReady = true; @@ -313,7 +306,7 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu      @Override      public boolean dispatchCreateOptionsMenu(android.view.Menu menu) { -        if (DEBUG) { +        if (BuildConfig.DEBUG) {              Log.d(TAG, "[dispatchCreateOptionsMenu] android.view.Menu: " + menu);              Log.d(TAG, "[dispatchCreateOptionsMenu] returning true");          } @@ -322,7 +315,7 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu      @Override      public boolean dispatchPrepareOptionsMenu(android.view.Menu menu) { -        if (DEBUG) Log.d(TAG, "[dispatchPrepareOptionsMenu] android.view.Menu: " + menu); +        if (ActionBarSherlock.DEBUG) Log.d(TAG, "[dispatchPrepareOptionsMenu] android.view.Menu: " + menu);          if (mActionMode != null) {              return false; @@ -348,7 +341,7 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu          }          boolean result = mMenu.bindNativeOverflow(menu, this, mNativeItemMap); -        if (DEBUG) Log.d(TAG, "[dispatchPrepareOptionsMenu] returning " + result); +        if (ActionBarSherlock.DEBUG) Log.d(TAG, "[dispatchPrepareOptionsMenu] returning " + result);          return result;      } @@ -359,7 +352,7 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu      @Override      public boolean dispatchMenuOpened(int featureId, android.view.Menu menu) { -        if (DEBUG) Log.d(TAG, "[dispatchMenuOpened] featureId: " + featureId + ", menu: " + menu); +        if (ActionBarSherlock.DEBUG) Log.d(TAG, "[dispatchMenuOpened] featureId: " + featureId + ", menu: " + menu);          if (featureId == Window.FEATURE_ACTION_BAR || featureId == Window.FEATURE_OPTIONS_PANEL) {              if (aActionBar != null) { @@ -373,7 +366,7 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu      @Override      public void dispatchPanelClosed(int featureId, android.view.Menu menu){ -        if (DEBUG) Log.d(TAG, "[dispatchPanelClosed] featureId: " + featureId + ", menu: " + menu); +        if (ActionBarSherlock.DEBUG) Log.d(TAG, "[dispatchPanelClosed] featureId: " + featureId + ", menu: " + menu);          if (featureId == Window.FEATURE_ACTION_BAR || featureId == Window.FEATURE_OPTIONS_PANEL) {              if (aActionBar != null) { @@ -384,22 +377,16 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu      @Override      public void dispatchTitleChanged(CharSequence title, int color) { -        if (DEBUG) Log.d(TAG, "[dispatchTitleChanged] title: " + title + ", color: " + color); +        if (ActionBarSherlock.DEBUG) Log.d(TAG, "[dispatchTitleChanged] title: " + title + ", color: " + color); -        if (!mIsDelegate || mIsTitleReady) { -            if (mTitleView != null) { -                mTitleView.setText(title); -            } else if (wActionBar != null) { -                wActionBar.setWindowTitle(title); -            } +        if ((!mIsDelegate || mIsTitleReady) && (wActionBar != null)) { +            wActionBar.setWindowTitle(title);          } - -        mTitle = title;      }      @Override      public boolean dispatchKeyEvent(KeyEvent event) { -        if (DEBUG) Log.d(TAG, "[dispatchKeyEvent] event: " + event); +        if (ActionBarSherlock.DEBUG) Log.d(TAG, "[dispatchKeyEvent] event: " + event);          final int keyCode = event.getKeyCode(); @@ -412,7 +399,7 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu                  if (action == KeyEvent.ACTION_UP) {                      mActionMode.finish();                  } -                if (DEBUG) Log.d(TAG, "[dispatchKeyEvent] returning true"); +                if (ActionBarSherlock.DEBUG) Log.d(TAG, "[dispatchKeyEvent] returning true");                  return true;              } @@ -421,12 +408,12 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu                  if (action == KeyEvent.ACTION_UP) {                      wActionBar.collapseActionView();                  } -                if (DEBUG) Log.d(TAG, "[dispatchKeyEvent] returning true"); +                if (ActionBarSherlock.DEBUG) Log.d(TAG, "[dispatchKeyEvent] returning true");                  return true;              }          } -        if (DEBUG) Log.d(TAG, "[dispatchKeyEvent] returning false"); +        if (ActionBarSherlock.DEBUG) Log.d(TAG, "[dispatchKeyEvent] returning false");          return false;      } @@ -596,7 +583,7 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu      @Override      public boolean onMenuItemClick(android.view.MenuItem item) { -        if (DEBUG) Log.d(TAG, "[mNativeItemListener.onMenuItemClick] item: " + item); +        if (ActionBarSherlock.DEBUG) Log.d(TAG, "[mNativeItemListener.onMenuItemClick] item: " + item);          final MenuItemImpl sherlockItem = mNativeItemMap.get(item);          if (sherlockItem != null) { @@ -620,7 +607,7 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu      @Override      public void setProgressBarVisibility(boolean visible) { -        if (DEBUG) Log.d(TAG, "[setProgressBarVisibility] visible: " + visible); +        if (ActionBarSherlock.DEBUG) Log.d(TAG, "[setProgressBarVisibility] visible: " + visible);          setFeatureInt(Window.FEATURE_PROGRESS, visible ? Window.PROGRESS_VISIBILITY_ON :              Window.PROGRESS_VISIBILITY_OFF); @@ -628,7 +615,7 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu      @Override      public void setProgressBarIndeterminateVisibility(boolean visible) { -        if (DEBUG) Log.d(TAG, "[setProgressBarIndeterminateVisibility] visible: " + visible); +        if (ActionBarSherlock.DEBUG) Log.d(TAG, "[setProgressBarIndeterminateVisibility] visible: " + visible);          setFeatureInt(Window.FEATURE_INDETERMINATE_PROGRESS,                  visible ? Window.PROGRESS_VISIBILITY_ON : Window.PROGRESS_VISIBILITY_OFF); @@ -636,7 +623,7 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu      @Override      public void setProgressBarIndeterminate(boolean indeterminate) { -        if (DEBUG) Log.d(TAG, "[setProgressBarIndeterminate] indeterminate: " + indeterminate); +        if (ActionBarSherlock.DEBUG) Log.d(TAG, "[setProgressBarIndeterminate] indeterminate: " + indeterminate);          setFeatureInt(Window.FEATURE_PROGRESS,                  indeterminate ? Window.PROGRESS_INDETERMINATE_ON : Window.PROGRESS_INDETERMINATE_OFF); @@ -644,14 +631,14 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu      @Override      public void setProgress(int progress) { -        if (DEBUG) Log.d(TAG, "[setProgress] progress: " + progress); +        if (ActionBarSherlock.DEBUG) Log.d(TAG, "[setProgress] progress: " + progress);          setFeatureInt(Window.FEATURE_PROGRESS, progress + Window.PROGRESS_START);      }      @Override      public void setSecondaryProgress(int secondaryProgress) { -        if (DEBUG) Log.d(TAG, "[setSecondaryProgress] secondaryProgress: " + secondaryProgress); +        if (ActionBarSherlock.DEBUG) Log.d(TAG, "[setSecondaryProgress] secondaryProgress: " + secondaryProgress);          setFeatureInt(Window.FEATURE_PROGRESS,                  secondaryProgress + Window.PROGRESS_SECONDARY_START); @@ -790,23 +777,23 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu      ///////////////////////////////////////////////////////////////////////////      private int getFeatures() { -        if (DEBUG) Log.d(TAG, "[getFeatures] returning " + mFeatures); +        if (ActionBarSherlock.DEBUG) Log.d(TAG, "[getFeatures] returning " + mFeatures);          return mFeatures;      }      @Override      public boolean hasFeature(int featureId) { -        if (DEBUG) Log.d(TAG, "[hasFeature] featureId: " + featureId); +        if (ActionBarSherlock.DEBUG) Log.d(TAG, "[hasFeature] featureId: " + featureId);          boolean result = (mFeatures & (1 << featureId)) != 0; -        if (DEBUG) Log.d(TAG, "[hasFeature] returning " + result); +        if (ActionBarSherlock.DEBUG) Log.d(TAG, "[hasFeature] returning " + result);          return result;      }      @Override      public boolean requestFeature(int featureId) { -        if (DEBUG) Log.d(TAG, "[requestFeature] featureId: " + featureId); +        if (ActionBarSherlock.DEBUG) Log.d(TAG, "[requestFeature] featureId: " + featureId);          if (mContentParent != null) {              throw new AndroidRuntimeException("requestFeature() must be called before adding content"); @@ -829,21 +816,21 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu      @Override      public void setUiOptions(int uiOptions) { -        if (DEBUG) Log.d(TAG, "[setUiOptions] uiOptions: " + uiOptions); +        if (ActionBarSherlock.DEBUG) Log.d(TAG, "[setUiOptions] uiOptions: " + uiOptions);          mUiOptions = uiOptions;      }      @Override      public void setUiOptions(int uiOptions, int mask) { -        if (DEBUG) Log.d(TAG, "[setUiOptions] uiOptions: " + uiOptions + ", mask: " + mask); +        if (ActionBarSherlock.DEBUG) Log.d(TAG, "[setUiOptions] uiOptions: " + uiOptions + ", mask: " + mask);          mUiOptions = (mUiOptions & ~mask) | (uiOptions & mask);      }      @Override      public void setContentView(int layoutResId) { -        if (DEBUG) Log.d(TAG, "[setContentView] layoutResId: " + layoutResId); +        if (ActionBarSherlock.DEBUG) Log.d(TAG, "[setContentView] layoutResId: " + layoutResId);          if (mContentParent == null) {              installDecor(); @@ -862,7 +849,7 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu      @Override      public void setContentView(View view, ViewGroup.LayoutParams params) { -        if (DEBUG) Log.d(TAG, "[setContentView] view: " + view + ", params: " + params); +        if (ActionBarSherlock.DEBUG) Log.d(TAG, "[setContentView] view: " + view + ", params: " + params);          if (mContentParent == null) {              installDecor(); @@ -881,7 +868,7 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu      @Override      public void addContentView(View view, ViewGroup.LayoutParams params) { -        if (DEBUG) Log.d(TAG, "[addContentView] view: " + view + ", params: " + params); +        if (ActionBarSherlock.DEBUG) Log.d(TAG, "[addContentView] view: " + view + ", params: " + params);          if (mContentParent == null) {              installDecor(); @@ -892,7 +879,7 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu      }      private void installDecor() { -        if (DEBUG) Log.d(TAG, "[installDecor]"); +        if (ActionBarSherlock.DEBUG) Log.d(TAG, "[installDecor]");          if (mDecor == null) {              mDecor = (ViewGroup)mActivity.getWindow().getDecorView().findViewById(android.R.id.content); @@ -921,84 +908,70 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu                  }              } -            mTitleView = (TextView)mDecor.findViewById(android.R.id.title); -            if (mTitleView != null) { -                if (hasFeature(Window.FEATURE_NO_TITLE)) { -                    mTitleView.setVisibility(View.GONE); -                    if (mContentParent instanceof FrameLayout) { -                        ((FrameLayout)mContentParent).setForeground(null); -                    } -                } else { -                    mTitleView.setText(mTitle); +            wActionBar = (ActionBarView)mDecor.findViewById(R.id.abs__action_bar); +            if (wActionBar != null) { +                wActionBar.setWindowCallback(this); +                if (wActionBar.getTitle() == null) { +                    wActionBar.setWindowTitle(mActivity.getTitle()); +                } +                if (hasFeature(Window.FEATURE_PROGRESS)) { +                    wActionBar.initProgress(); +                } +                if (hasFeature(Window.FEATURE_INDETERMINATE_PROGRESS)) { +                    wActionBar.initIndeterminateProgress();                  } -            } else { -                wActionBar = (ActionBarView)mDecor.findViewById(R.id.abs__action_bar); -                if (wActionBar != null) { -                    wActionBar.setWindowCallback(this); -                    if (wActionBar.getTitle() == null) { -                        wActionBar.setWindowTitle(mActivity.getTitle()); -                    } -                    if (hasFeature(Window.FEATURE_PROGRESS)) { -                        wActionBar.initProgress(); -                    } -                    if (hasFeature(Window.FEATURE_INDETERMINATE_PROGRESS)) { -                        wActionBar.initIndeterminateProgress(); -                    } -                    //Since we don't require onCreate dispatching, parse for uiOptions here -                    int uiOptions = loadUiOptionsFromManifest(mActivity); -                    if (uiOptions != 0) { -                        mUiOptions = uiOptions; -                    } +                //Since we don't require onCreate dispatching, parse for uiOptions here +                int uiOptions = loadUiOptionsFromManifest(mActivity); +                if (uiOptions != 0) { +                    mUiOptions = uiOptions; +                } -                    boolean splitActionBar = false; -                    final boolean splitWhenNarrow = (mUiOptions & ActivityInfo.UIOPTION_SPLIT_ACTION_BAR_WHEN_NARROW) != 0; -                    if (splitWhenNarrow) { -                        splitActionBar = getResources_getBoolean(mActivity, R.bool.abs__split_action_bar_is_narrow); -                    } else { -                        splitActionBar = mActivity.getTheme() -                                .obtainStyledAttributes(R.styleable.SherlockTheme) -                                .getBoolean(R.styleable.SherlockTheme_windowSplitActionBar, false); -                    } -                    final ActionBarContainer splitView = (ActionBarContainer)mDecor.findViewById(R.id.abs__split_action_bar); -                    if (splitView != null) { -                        wActionBar.setSplitView(splitView); -                        wActionBar.setSplitActionBar(splitActionBar); -                        wActionBar.setSplitWhenNarrow(splitWhenNarrow); - -                        mActionModeView = (ActionBarContextView)mDecor.findViewById(R.id.abs__action_context_bar); -                        mActionModeView.setSplitView(splitView); -                        mActionModeView.setSplitActionBar(splitActionBar); -                        mActionModeView.setSplitWhenNarrow(splitWhenNarrow); -                    } else if (splitActionBar) { -                        Log.e(TAG, "Requested split action bar with incompatible window decor! Ignoring request."); -                    } +                boolean splitActionBar = false; +                final boolean splitWhenNarrow = (mUiOptions & ActivityInfo.UIOPTION_SPLIT_ACTION_BAR_WHEN_NARROW) != 0; +                if (splitWhenNarrow) { +                    splitActionBar = getResources_getBoolean(mActivity, R.bool.abs__split_action_bar_is_narrow); +                } else { +                    splitActionBar = mActivity.getTheme() +                            .obtainStyledAttributes(R.styleable.SherlockTheme) +                            .getBoolean(R.styleable.SherlockTheme_windowSplitActionBar, false); +                } +                final ActionBarContainer splitView = (ActionBarContainer)mDecor.findViewById(R.id.abs__split_action_bar); +                if (splitView != null) { +                    wActionBar.setSplitView(splitView); +                    wActionBar.setSplitActionBar(splitActionBar); +                    wActionBar.setSplitWhenNarrow(splitWhenNarrow); + +                    mActionModeView = (ActionBarContextView)mDecor.findViewById(R.id.abs__action_context_bar); +                    mActionModeView.setSplitView(splitView); +                    mActionModeView.setSplitActionBar(splitActionBar); +                    mActionModeView.setSplitWhenNarrow(splitWhenNarrow); +                } else if (splitActionBar) { +                    Log.e(TAG, "Requested split action bar with incompatible window decor! Ignoring request."); +                } -                    // Post the panel invalidate for later; avoid application onCreateOptionsMenu -                    // being called in the middle of onCreate or similar. -                    mDecor.post(new Runnable() { -                        @Override -                        public void run() { -                            //Invalidate if the panel menu hasn't been created before this. -                            if (!mIsDestroyed && !mActivity.isFinishing() && mMenu == null) { -                                dispatchInvalidateOptionsMenu(); -                            } +                // Post the panel invalidate for later; avoid application onCreateOptionsMenu +                // being called in the middle of onCreate or similar. +                mDecor.post(new Runnable() { +                    @Override +                    public void run() { +                        //Invalidate if the panel menu hasn't been created before this. +                        if (!mIsDestroyed && !mActivity.isFinishing() && mMenu == null) { +                            dispatchInvalidateOptionsMenu();                          } -                    }); -                } +                    } +                });              }          }      }      private ViewGroup generateLayout() { -        if (DEBUG) Log.d(TAG, "[generateLayout]"); +        if (ActionBarSherlock.DEBUG) Log.d(TAG, "[generateLayout]");          // Apply data from current theme.          TypedArray a = mActivity.getTheme().obtainStyledAttributes(R.styleable.SherlockTheme); -        mIsFloating = a.getBoolean(R.styleable.SherlockTheme_android_windowIsFloating, false); -          if (!a.hasValue(R.styleable.SherlockTheme_windowActionBar)) {              throw new IllegalStateException("You must use Theme.Sherlock, Theme.Sherlock.Light, Theme.Sherlock.Light.DarkActionBar, or a derivative.");          } @@ -1022,18 +995,10 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu          int layoutResource;          if (!hasFeature(Window.FEATURE_NO_TITLE)) { -            if (mIsFloating) { -                //Trash original dialog LinearLayout -                mDecor = (ViewGroup)mDecor.getParent(); -                mDecor.removeAllViews(); - -                layoutResource = R.layout.abs__dialog_title_holo; +            if (hasFeature(Window.FEATURE_ACTION_BAR_OVERLAY)) { +                layoutResource = R.layout.abs__screen_action_bar_overlay;              } else { -                if (hasFeature(Window.FEATURE_ACTION_BAR_OVERLAY)) { -                    layoutResource = R.layout.abs__screen_action_bar_overlay; -                } else { -                    layoutResource = R.layout.abs__screen_action_bar; -                } +                layoutResource = R.layout.abs__screen_action_bar;              }          } else if (hasFeature(Window.FEATURE_ACTION_MODE_OVERLAY) && !hasFeature(Window.FEATURE_NO_TITLE)) {              layoutResource = R.layout.abs__screen_simple_overlay_action_mode; @@ -1041,7 +1006,7 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu              layoutResource = R.layout.abs__screen_simple;          } -        if (DEBUG) Log.d(TAG, "[generateLayout] using screen XML " + mActivity.getResources().getString(layoutResource)); +        if (ActionBarSherlock.DEBUG) Log.d(TAG, "[generateLayout] using screen XML " + mActivity.getResources().getString(layoutResource));          View in = mActivity.getLayoutInflater().inflate(layoutResource, null);          mDecor.addView(in, new ViewGroup.LayoutParams(MATCH_PARENT, MATCH_PARENT)); @@ -1086,7 +1051,7 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu          int uiOptions = 0;          try {              final String thisPackage = activity.getClass().getName(); -            if (DEBUG) Log.i(TAG, "Parsing AndroidManifest.xml for " + thisPackage); +            if (ActionBarSherlock.DEBUG) Log.i(TAG, "Parsing AndroidManifest.xml for " + thisPackage);              final String packageName = activity.getApplicationInfo().packageName;              final AssetManager am = activity.createPackageContext(packageName, 0).getAssets(); @@ -1099,10 +1064,10 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu                      if ("application".equals(name)) {                          //Check if the <application> has the attribute -                        if (DEBUG) Log.d(TAG, "Got <application>"); +                        if (ActionBarSherlock.DEBUG) Log.d(TAG, "Got <application>");                          for (int i = xml.getAttributeCount() - 1; i >= 0; i--) { -                            if (DEBUG) Log.d(TAG, xml.getAttributeName(i) + ": " + xml.getAttributeValue(i)); +                            if (ActionBarSherlock.DEBUG) Log.d(TAG, xml.getAttributeName(i) + ": " + xml.getAttributeValue(i));                              if ("uiOptions".equals(xml.getAttributeName(i))) {                                  uiOptions = xml.getAttributeIntValue(i, 0); @@ -1111,13 +1076,13 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu                          }                      } else if ("activity".equals(name)) {                          //Check if the <activity> is us and has the attribute -                        if (DEBUG) Log.d(TAG, "Got <activity>"); +                        if (ActionBarSherlock.DEBUG) Log.d(TAG, "Got <activity>");                          Integer activityUiOptions = null;                          String activityPackage = null;                          boolean isOurActivity = false;                          for (int i = xml.getAttributeCount() - 1; i >= 0; i--) { -                            if (DEBUG) Log.d(TAG, xml.getAttributeName(i) + ": " + xml.getAttributeValue(i)); +                            if (ActionBarSherlock.DEBUG) Log.d(TAG, xml.getAttributeName(i) + ": " + xml.getAttributeValue(i));                              //We need both uiOptions and name attributes                              String attrName = xml.getAttributeName(i); @@ -1149,7 +1114,7 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu          } catch (Exception e) {              e.printStackTrace();          } -        if (DEBUG) Log.i(TAG, "Returning " + Integer.toHexString(uiOptions)); +        if (ActionBarSherlock.DEBUG) Log.i(TAG, "Returning " + Integer.toHexString(uiOptions));          return uiOptions;      } @@ -1200,4 +1165,13 @@ public class ActionBarSherlockCompat extends ActionBarSherlock implements MenuBu              mActionMode = null;          }      } + +    @Override +    public void ensureActionBar() { +        if (ActionBarSherlock.DEBUG) Log.d(TAG, "[ensureActionBar]"); + +        if (mDecor == null) { +            initActionBar(); +        } +    }  }  | 
