Change to using ActionBarSherlock for the action bar compatibility.
This commit is contained in:
parent
0874a2dc13
commit
743ba0f57d
@ -19,7 +19,7 @@
|
|||||||
android:theme="@style/AppTheme" >
|
android:theme="@style/AppTheme" >
|
||||||
<activity
|
<activity
|
||||||
android:name=".android.Main"
|
android:name=".android.Main"
|
||||||
android:theme="@style/AppTheme.Clean" >
|
android:theme="@style/AppTheme.NoActionBar" >
|
||||||
<intent-filter>
|
<intent-filter>
|
||||||
<action android:name="android.intent.action.MAIN" />
|
<action android:name="android.intent.action.MAIN" />
|
||||||
|
|
||||||
@ -28,7 +28,7 @@
|
|||||||
</activity>
|
</activity>
|
||||||
<activity
|
<activity
|
||||||
android:name=".android.rocket.OpenRocketLoaderActivity"
|
android:name=".android.rocket.OpenRocketLoaderActivity"
|
||||||
android:theme="@style/AppTheme.Clean" >
|
android:theme="@style/AppTheme.NoActionBar" >
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
I don't understand why I need to have two different intent filters.
|
I don't understand why I need to have two different intent filters.
|
||||||
@ -72,11 +72,11 @@
|
|||||||
<activity android:name=".android.motor.MotorBrowserActivity" />
|
<activity android:name=".android.motor.MotorBrowserActivity" />
|
||||||
<activity
|
<activity
|
||||||
android:name=".android.motor.BurnPlotActivity"
|
android:name=".android.motor.BurnPlotActivity"
|
||||||
android:theme="@style/AppTheme.NoTitleBar" />
|
android:theme="@style/AppTheme.NoActionBar" />
|
||||||
<activity android:name=".android.thrustcurve.TCQueryActivity" />
|
<activity android:name=".android.thrustcurve.TCQueryActivity" />
|
||||||
<activity
|
<activity
|
||||||
android:name=".android.simulation.SimulationViewActivity"
|
android:name=".android.simulation.SimulationViewActivity"
|
||||||
android:theme="@style/AppTheme.NoTitleBar" />
|
android:theme="@style/AppTheme.NoActionBar" />
|
||||||
<activity android:name=".android.filebrowser.SimpleFileBrowser" />
|
<activity android:name=".android.filebrowser.SimpleFileBrowser" />
|
||||||
</application>
|
</application>
|
||||||
|
|
||||||
|
@ -9,3 +9,4 @@
|
|||||||
|
|
||||||
# Project target.
|
# Project target.
|
||||||
target=android-15
|
target=android-15
|
||||||
|
android.library.reference.1=../ActionBarSherlock
|
||||||
|
@ -1,22 +0,0 @@
|
|||||||
<!--
|
|
||||||
Copyright 2011 The Android Open Source Project
|
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
you may not use this file except in compliance with the License.
|
|
||||||
You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
||||||
-->
|
|
||||||
|
|
||||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
android:id="@id/actionbar_compat"
|
|
||||||
android:background="#ff000000"
|
|
||||||
android:layout_width="fill_parent"
|
|
||||||
android:layout_height="fill_parent"
|
|
||||||
android:orientation="horizontal" />
|
|
@ -1,39 +0,0 @@
|
|||||||
<!--
|
|
||||||
Copyright 2011 The Android Open Source Project
|
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
you may not use this file except in compliance with the License.
|
|
||||||
You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
||||||
-->
|
|
||||||
|
|
||||||
<resources>
|
|
||||||
|
|
||||||
<style name="AppTheme" parent="android:style/Theme.Holo">
|
|
||||||
<item name="android:actionBarStyle">@style/ActionBar</item>
|
|
||||||
<item name="android:windowContentOverlay">@drawable/actionbar_shadow</item>
|
|
||||||
</style>
|
|
||||||
|
|
||||||
<style name="ActionBar" parent="android:style/Widget.Holo.ActionBar">
|
|
||||||
<item name="android:background">@color/actionbar_background_color</item>
|
|
||||||
<item name="android:titleTextStyle">@style/ActionBarTitle</item>
|
|
||||||
<item name="android:logo">@drawable/home_item</item>
|
|
||||||
</style>
|
|
||||||
|
|
||||||
<style name="ActionBarTitle">
|
|
||||||
<item name="android:textColor">@color/actionbar_title_color</item>
|
|
||||||
</style>
|
|
||||||
|
|
||||||
<style name="spinnerStyle" parent="@android:style/Widget.Holo.TextView.SpinnerItem">
|
|
||||||
<item name="android:textSize">22dp</item>
|
|
||||||
<item name="android:layout_height">wrap_content</item>
|
|
||||||
</style>
|
|
||||||
|
|
||||||
</resources>
|
|
@ -1,24 +0,0 @@
|
|||||||
<!--
|
|
||||||
Copyright 2011 The Android Open Source Project
|
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
you may not use this file except in compliance with the License.
|
|
||||||
You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
||||||
-->
|
|
||||||
|
|
||||||
<resources>
|
|
||||||
|
|
||||||
<style name="ActionBarTitle" parent="android:style/TextAppearance.Holo.Widget.ActionBar.Title">
|
|
||||||
<item name="android:textColor">@color/actionbar_title_color</item>
|
|
||||||
<item name="android:background">@color/actionbar_background_color</item>
|
|
||||||
</style>
|
|
||||||
|
|
||||||
</resources>
|
|
@ -1,27 +0,0 @@
|
|||||||
<!--
|
|
||||||
Copyright 2011 The Android Open Source Project
|
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
you may not use this file except in compliance with the License.
|
|
||||||
You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
||||||
-->
|
|
||||||
|
|
||||||
<resources>
|
|
||||||
|
|
||||||
<declare-styleable name="AppTheme">
|
|
||||||
<attr name="actionbarCompatHomeAsUpStyle" format="reference" />
|
|
||||||
<attr name="actionbarCompatTitleStyle" format="reference" />
|
|
||||||
<attr name="actionbarCompatItemStyle" format="reference" />
|
|
||||||
<attr name="actionbarCompatItemHomeStyle" format="reference" />
|
|
||||||
<attr name="actionbarCompatProgressIndicatorStyle" format="reference" />
|
|
||||||
</declare-styleable>
|
|
||||||
|
|
||||||
</resources>
|
|
@ -1,8 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
|
|
||||||
<resources>
|
|
||||||
|
|
||||||
<color name="actionbar_title_color">#FFFFFF</color>
|
|
||||||
<color name="actionbar_background_color">#00000000</color>
|
|
||||||
|
|
||||||
</resources>
|
|
@ -1,21 +0,0 @@
|
|||||||
<!--
|
|
||||||
Copyright 2011 The Android Open Source Project
|
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
you may not use this file except in compliance with the License.
|
|
||||||
You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
||||||
-->
|
|
||||||
|
|
||||||
<resources>
|
|
||||||
<dimen name="actionbar_compat_height">48dp</dimen>
|
|
||||||
<dimen name="actionbar_compat_button_width">48dp</dimen>
|
|
||||||
<dimen name="actionbar_compat_button_home_width">40dp</dimen>
|
|
||||||
</resources>
|
|
@ -1,24 +0,0 @@
|
|||||||
<!--
|
|
||||||
Copyright 2011 The Android Open Source Project
|
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
you may not use this file except in compliance with the License.
|
|
||||||
You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
||||||
-->
|
|
||||||
|
|
||||||
<resources>
|
|
||||||
<item type="id" name="actionbar_compat" />
|
|
||||||
<item type="id" name="actionbar_home_as_up" />
|
|
||||||
<item type="id" name="actionbar_compat_title" />
|
|
||||||
<item type="id" name="actionbar_compat_item_refresh_progress" />
|
|
||||||
<item type="id" name="actionbar_compat_item_refresh" />
|
|
||||||
<item type="id" name="menu_refresh" />
|
|
||||||
</resources>
|
|
@ -1,74 +0,0 @@
|
|||||||
<!--
|
|
||||||
Copyright 2011 The Android Open Source Project
|
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
you may not use this file except in compliance with the License.
|
|
||||||
You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
||||||
-->
|
|
||||||
|
|
||||||
<resources>
|
|
||||||
|
|
||||||
<style name="AppTheme.Clean" parent="AppTheme">
|
|
||||||
<item name="android:windowActionBarOverlay">true</item>
|
|
||||||
</style>
|
|
||||||
|
|
||||||
<style name="AppTheme" parent="android:style/Theme">
|
|
||||||
<item name="android:windowTitleSize">@dimen/actionbar_compat_height</item>
|
|
||||||
<item name="android:windowTitleBackgroundStyle">@style/ActionBarCompat</item>
|
|
||||||
<item name="android:windowContentOverlay">@drawable/actionbar_shadow</item>
|
|
||||||
|
|
||||||
<!-- for programmatic instantiation -->
|
|
||||||
<item name="actionbarCompatTitleStyle">@style/ActionBarCompatTitle</item>
|
|
||||||
<item name="actionbarCompatItemStyle">@style/ActionBarCompatItem</item>
|
|
||||||
<item name="actionbarCompatItemHomeStyle">@style/ActionBarCompatHomeItem</item>
|
|
||||||
<item name="actionbarCompatProgressIndicatorStyle">@style/ActionBarCompatProgressIndicator</item>
|
|
||||||
<item name="actionbarCompatHomeAsUpStyle">@style/ActionBarCompatHomeAsUp</item>
|
|
||||||
</style>
|
|
||||||
|
|
||||||
<style name="ActionBarCompat">
|
|
||||||
<item name="android:background">@color/actionbar_background_color</item>
|
|
||||||
</style>
|
|
||||||
|
|
||||||
<style name="ActionBarCompatHomeAsUp">
|
|
||||||
<item name="android:background">@drawable/ic_home_carat</item>
|
|
||||||
</style>
|
|
||||||
|
|
||||||
<style name="ActionBarCompatItemBase">
|
|
||||||
|
|
||||||
<!-- layout_width/height must be set in code -->
|
|
||||||
<item name="android:scaleType">center</item>
|
|
||||||
<item name="android:background">@drawable/actionbar_compat_item</item>
|
|
||||||
</style>
|
|
||||||
|
|
||||||
<style name="ActionBarCompatProgressIndicator" parent="android:style/Widget.ProgressBar.Large">
|
|
||||||
<item name="android:indeterminate">true</item>
|
|
||||||
</style>
|
|
||||||
|
|
||||||
<style name="ActionBarCompatTitleBase">
|
|
||||||
<item name="android:id">@id/actionbar_compat_title</item>
|
|
||||||
<!-- layout_width/height/weight must be set in code -->
|
|
||||||
<item name="android:gravity">center_vertical</item>
|
|
||||||
<item name="android:textSize">16sp</item>
|
|
||||||
<item name="android:paddingLeft">6dp</item>
|
|
||||||
<item name="android:paddingRight">6dp</item>
|
|
||||||
<item name="android:singleLine">true</item>
|
|
||||||
<item name="android:ellipsize">marquee</item>
|
|
||||||
</style>
|
|
||||||
|
|
||||||
<style name="ActionBarCompatTitle" parent="style/ActionBarCompatTitleBase">
|
|
||||||
<item name="android:textColor">@color/actionbar_title_color</item>
|
|
||||||
</style>
|
|
||||||
|
|
||||||
<style name="ActionBarCompatItem" parent="style/ActionBarCompatItemBase"></style>
|
|
||||||
|
|
||||||
<style name="ActionBarCompatHomeItem" parent="style/ActionBarCompatItemBase"></style>
|
|
||||||
|
|
||||||
</resources>
|
|
@ -24,6 +24,7 @@
|
|||||||
<string name="simulationSeries2Label">Series 2</string>
|
<string name="simulationSeries2Label">Series 2</string>
|
||||||
|
|
||||||
<string name="motorbrowsergrouptitle">Motor Browser Grouping</string>
|
<string name="motorbrowsergrouptitle">Motor Browser Grouping</string>
|
||||||
|
<string name="motorbrowsertitle">Motor Browser</string>
|
||||||
|
|
||||||
<string name="useinternalfilebrowsertitle">Use Internal File Browser</string>
|
<string name="useinternalfilebrowsertitle">Use Internal File Browser</string>
|
||||||
<string name="useinternalfilebrowsersummary">Check to use built in file browser instead of external file browser</string>
|
<string name="useinternalfilebrowsersummary">Check to use built in file browser instead of external file browser</string>
|
||||||
|
@ -12,10 +12,13 @@
|
|||||||
<item name="android:gravity">right</item>
|
<item name="android:gravity">right</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style name="AppTheme.NoTitleBar" parent="@style/AppTheme">
|
<style name="AppTheme" parent="Theme.Sherlock"/>
|
||||||
<item name="android:windowNoTitle">true</item>
|
|
||||||
|
<style name="AppTheme.NoActionBar" parent="AppTheme">
|
||||||
|
<item name="windowActionBar">false</item>
|
||||||
|
<item name="windowNoTitle">true</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style name="spinnerStyle" parent="@android:style/Widget.TextView.SpinnerItem">
|
<style name="spinnerStyle" parent="@android:style/Widget.TextView.SpinnerItem">
|
||||||
<item name="android:textSize">22dp</item>
|
<item name="android:textSize">22dp</item>
|
||||||
<item name="android:textColor">#000000</item>
|
<item name="android:textColor">#000000</item>
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
package net.sf.openrocket.android;
|
package net.sf.openrocket.android;
|
||||||
|
|
||||||
import net.sf.openrocket.R;
|
import net.sf.openrocket.R;
|
||||||
import net.sf.openrocket.android.actionbarcompat.ActionBarFragmentActivity;
|
|
||||||
import net.sf.openrocket.android.filebrowser.SimpleFileBrowser;
|
import net.sf.openrocket.android.filebrowser.SimpleFileBrowser;
|
||||||
import android.content.ActivityNotFoundException;
|
import android.content.ActivityNotFoundException;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
@ -10,13 +9,15 @@ import android.content.res.Resources;
|
|||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.preference.PreferenceManager;
|
import android.preference.PreferenceManager;
|
||||||
import android.view.Menu;
|
|
||||||
import android.view.MenuInflater;
|
|
||||||
import android.view.MenuItem;
|
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.widget.Button;
|
import android.widget.Button;
|
||||||
|
|
||||||
public class Main extends ActionBarFragmentActivity {
|
import com.actionbarsherlock.app.SherlockFragmentActivity;
|
||||||
|
import com.actionbarsherlock.view.Menu;
|
||||||
|
import com.actionbarsherlock.view.MenuInflater;
|
||||||
|
import com.actionbarsherlock.view.MenuItem;
|
||||||
|
|
||||||
|
public class Main extends SherlockFragmentActivity {
|
||||||
|
|
||||||
private static final int PICK_ORK_FILE_RESULT = 1;
|
private static final int PICK_ORK_FILE_RESULT = 1;
|
||||||
|
|
||||||
@ -51,7 +52,7 @@ public class Main extends ActionBarFragmentActivity {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onCreateOptionsMenu(Menu menu) {
|
public boolean onCreateOptionsMenu(Menu menu) {
|
||||||
MenuInflater inflater = getMenuInflater();
|
MenuInflater inflater = getSupportMenuInflater();
|
||||||
inflater.inflate(R.menu.main_menu, menu);
|
inflater.inflate(R.menu.main_menu, menu);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -8,7 +8,9 @@ import android.os.Bundle;
|
|||||||
import android.preference.Preference;
|
import android.preference.Preference;
|
||||||
import android.preference.PreferenceManager;
|
import android.preference.PreferenceManager;
|
||||||
|
|
||||||
public class PreferencesActivity extends android.preference.PreferenceActivity
|
import com.actionbarsherlock.app.SherlockPreferenceActivity;
|
||||||
|
|
||||||
|
public class PreferencesActivity extends SherlockPreferenceActivity
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,83 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2011 The Android Open Source Project
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package net.sf.openrocket.android.actionbarcompat;
|
|
||||||
|
|
||||||
import android.app.Activity;
|
|
||||||
import android.os.Bundle;
|
|
||||||
import android.view.Menu;
|
|
||||||
import android.view.MenuInflater;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A base activity that defers common functionality across app activities to an {@link
|
|
||||||
* ActionBarHelper}.
|
|
||||||
*
|
|
||||||
* NOTE: dynamically marking menu items as invisible/visible is not currently supported.
|
|
||||||
*
|
|
||||||
* NOTE: this may used with the Android Compatibility Package by extending
|
|
||||||
* android.support.v4.app.FragmentActivity instead of {@link Activity}.
|
|
||||||
*/
|
|
||||||
public abstract class ActionBarActivity extends Activity {
|
|
||||||
final ActionBarHelper mActionBarHelper = ActionBarHelper.createInstance(this);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the {@link ActionBarHelper} for this activity.
|
|
||||||
*/
|
|
||||||
protected ActionBarHelper getActionBarHelper() {
|
|
||||||
return mActionBarHelper;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**{@inheritDoc}*/
|
|
||||||
@Override
|
|
||||||
public MenuInflater getMenuInflater() {
|
|
||||||
return mActionBarHelper.getMenuInflater(super.getMenuInflater());
|
|
||||||
}
|
|
||||||
|
|
||||||
/**{@inheritDoc}*/
|
|
||||||
@Override
|
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
|
||||||
super.onCreate(savedInstanceState);
|
|
||||||
mActionBarHelper.onCreate(savedInstanceState);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**{@inheritDoc}*/
|
|
||||||
@Override
|
|
||||||
protected void onPostCreate(Bundle savedInstanceState) {
|
|
||||||
super.onPostCreate(savedInstanceState);
|
|
||||||
mActionBarHelper.onPostCreate(savedInstanceState);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Base action bar-aware implementation for
|
|
||||||
* {@link Activity#onCreateOptionsMenu(android.view.Menu)}.
|
|
||||||
*
|
|
||||||
* Note: marking menu items as invisible/visible is not currently supported.
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public boolean onCreateOptionsMenu(Menu menu) {
|
|
||||||
boolean retValue = false;
|
|
||||||
retValue |= mActionBarHelper.onCreateOptionsMenu(menu);
|
|
||||||
retValue |= super.onCreateOptionsMenu(menu);
|
|
||||||
return retValue;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**{@inheritDoc}*/
|
|
||||||
@Override
|
|
||||||
protected void onTitleChanged(CharSequence title, int color) {
|
|
||||||
mActionBarHelper.onTitleChanged(title, color);
|
|
||||||
super.onTitleChanged(title, color);
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,84 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2011 The Android Open Source Project
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package net.sf.openrocket.android.actionbarcompat;
|
|
||||||
|
|
||||||
import android.app.Activity;
|
|
||||||
import android.os.Bundle;
|
|
||||||
import android.support.v4.app.FragmentActivity;
|
|
||||||
import android.view.Menu;
|
|
||||||
import android.view.MenuInflater;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A base activity that defers common functionality across app activities to an {@link
|
|
||||||
* ActionBarHelper}.
|
|
||||||
*
|
|
||||||
* NOTE: dynamically marking menu items as invisible/visible is not currently supported.
|
|
||||||
*
|
|
||||||
* NOTE: this may used with the Android Compatibility Package by extending
|
|
||||||
* android.support.v4.app.FragmentActivity instead of {@link Activity}.
|
|
||||||
*/
|
|
||||||
public abstract class ActionBarFragmentActivity extends FragmentActivity {
|
|
||||||
final ActionBarHelper mActionBarHelper = ActionBarHelper.createInstance(this);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the {@link ActionBarHelper} for this activity.
|
|
||||||
*/
|
|
||||||
protected ActionBarHelper getActionBarHelper() {
|
|
||||||
return mActionBarHelper;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**{@inheritDoc}*/
|
|
||||||
@Override
|
|
||||||
public MenuInflater getMenuInflater() {
|
|
||||||
return mActionBarHelper.getMenuInflater(super.getMenuInflater());
|
|
||||||
}
|
|
||||||
|
|
||||||
/**{@inheritDoc}*/
|
|
||||||
@Override
|
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
|
||||||
super.onCreate(savedInstanceState);
|
|
||||||
mActionBarHelper.onCreate(savedInstanceState);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**{@inheritDoc}*/
|
|
||||||
@Override
|
|
||||||
protected void onPostCreate(Bundle savedInstanceState) {
|
|
||||||
super.onPostCreate(savedInstanceState);
|
|
||||||
mActionBarHelper.onPostCreate(savedInstanceState);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Base action bar-aware implementation for
|
|
||||||
* {@link Activity#onCreateOptionsMenu(android.view.Menu)}.
|
|
||||||
*
|
|
||||||
* Note: marking menu items as invisible/visible is not currently supported.
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public boolean onCreateOptionsMenu(Menu menu) {
|
|
||||||
boolean retValue = false;
|
|
||||||
retValue |= mActionBarHelper.onCreateOptionsMenu(menu);
|
|
||||||
retValue |= super.onCreateOptionsMenu(menu);
|
|
||||||
return retValue;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**{@inheritDoc}*/
|
|
||||||
@Override
|
|
||||||
protected void onTitleChanged(CharSequence title, int color) {
|
|
||||||
mActionBarHelper.onTitleChanged(title, color);
|
|
||||||
super.onTitleChanged(title, color);
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,102 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2011 The Android Open Source Project
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package net.sf.openrocket.android.actionbarcompat;
|
|
||||||
|
|
||||||
import net.sf.openrocket.R;
|
|
||||||
import android.app.Activity;
|
|
||||||
import android.os.Build;
|
|
||||||
import android.os.Bundle;
|
|
||||||
import android.view.Menu;
|
|
||||||
import android.view.MenuInflater;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* An abstract class that handles some common action bar-related functionality in the app. This
|
|
||||||
* class provides functionality useful for both phones and tablets, and does not require any Android
|
|
||||||
* 3.0-specific features, although it uses them if available.
|
|
||||||
*
|
|
||||||
* Two implementations of this class are {@link ActionBarHelperBase} for a pre-Honeycomb version of
|
|
||||||
* the action bar, and {@link ActionBarHelperHoneycomb}, which uses the built-in ActionBar features
|
|
||||||
* in Android 3.0 and later.
|
|
||||||
*/
|
|
||||||
public abstract class ActionBarHelper {
|
|
||||||
protected Activity mActivity;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Factory method for creating {@link ActionBarHelper} objects for a
|
|
||||||
* given activity. Depending on which device the app is running, either a basic helper or
|
|
||||||
* Honeycomb-specific helper will be returned.
|
|
||||||
*/
|
|
||||||
public static ActionBarHelper createInstance(Activity activity) {
|
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
|
|
||||||
return new ActionBarHelperICS(activity);
|
|
||||||
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
|
|
||||||
return new ActionBarHelperHoneycomb(activity);
|
|
||||||
} else {
|
|
||||||
return new ActionBarHelperBase(activity);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
protected ActionBarHelper(Activity activity) {
|
|
||||||
mActivity = activity;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Action bar helper code to be run in {@link Activity#onCreate(android.os.Bundle)}.
|
|
||||||
*/
|
|
||||||
public void onCreate(Bundle savedInstanceState) {
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Action bar helper code to be run in {@link Activity#onPostCreate(android.os.Bundle)}.
|
|
||||||
*/
|
|
||||||
public void onPostCreate(Bundle savedInstanceState) {
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Action bar helper code to be run in {@link Activity#onCreateOptionsMenu(android.view.Menu)}.
|
|
||||||
*
|
|
||||||
* NOTE: Setting the visibility of menu items in <em>menu</em> is not currently supported.
|
|
||||||
*/
|
|
||||||
public boolean onCreateOptionsMenu(Menu menu) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Action bar helper code to be run in {@link Activity#onTitleChanged(CharSequence, int)}.
|
|
||||||
*/
|
|
||||||
protected void onTitleChanged(CharSequence title, int color) {
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Sets the indeterminate loading state of the item with ID {@link R.id.menu_refresh}.
|
|
||||||
* (where the item ID was menu_refresh).
|
|
||||||
*/
|
|
||||||
public abstract void setRefreshActionItemState(boolean refreshing);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns a {@link MenuInflater} for use when inflating menus. The implementation of this
|
|
||||||
* method in {@link ActionBarHelperBase} returns a wrapped menu inflater that can read
|
|
||||||
* action bar metadata from a menu resource pre-Honeycomb.
|
|
||||||
*/
|
|
||||||
public MenuInflater getMenuInflater(MenuInflater superMenuInflater) {
|
|
||||||
return superMenuInflater;
|
|
||||||
}
|
|
||||||
|
|
||||||
public abstract void setDisplayHomeAsUpEnabled( boolean enabled );
|
|
||||||
|
|
||||||
public abstract void hide();
|
|
||||||
}
|
|
@ -1,331 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2011 The Android Open Source Project
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package net.sf.openrocket.android.actionbarcompat;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.util.HashSet;
|
|
||||||
import java.util.Set;
|
|
||||||
|
|
||||||
import net.sf.openrocket.R;
|
|
||||||
|
|
||||||
import org.xmlpull.v1.XmlPullParser;
|
|
||||||
import org.xmlpull.v1.XmlPullParserException;
|
|
||||||
|
|
||||||
import android.app.Activity;
|
|
||||||
import android.content.Context;
|
|
||||||
import android.content.res.XmlResourceParser;
|
|
||||||
import android.os.Bundle;
|
|
||||||
import android.view.Gravity;
|
|
||||||
import android.view.InflateException;
|
|
||||||
import android.view.Menu;
|
|
||||||
import android.view.MenuInflater;
|
|
||||||
import android.view.MenuItem;
|
|
||||||
import android.view.View;
|
|
||||||
import android.view.ViewGroup;
|
|
||||||
import android.view.Window;
|
|
||||||
import android.widget.ImageButton;
|
|
||||||
import android.widget.ImageView;
|
|
||||||
import android.widget.LinearLayout;
|
|
||||||
import android.widget.ProgressBar;
|
|
||||||
import android.widget.TextView;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A class that implements the action bar pattern for pre-Honeycomb devices.
|
|
||||||
*/
|
|
||||||
public class ActionBarHelperBase extends ActionBarHelper {
|
|
||||||
private static final String MENU_RES_NAMESPACE = "http://schemas.android.com/apk/res/android";
|
|
||||||
private static final String MENU_ATTR_ID = "id";
|
|
||||||
private static final String MENU_ATTR_SHOW_AS_ACTION = "showAsAction";
|
|
||||||
|
|
||||||
private boolean showHomeAsUpEnabled = false;
|
|
||||||
|
|
||||||
protected Set<Integer> mActionItemIds = new HashSet<Integer>();
|
|
||||||
|
|
||||||
protected ActionBarHelperBase(Activity activity) {
|
|
||||||
super(activity);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**{@inheritDoc}*/
|
|
||||||
@Override
|
|
||||||
public void onCreate(Bundle savedInstanceState) {
|
|
||||||
mActivity.requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**{@inheritDoc}*/
|
|
||||||
@Override
|
|
||||||
public void onPostCreate(Bundle savedInstanceState) {
|
|
||||||
mActivity.getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE,
|
|
||||||
R.layout.actionbar_compat);
|
|
||||||
setupActionBar();
|
|
||||||
|
|
||||||
SimpleMenu menu = new SimpleMenu(mActivity);
|
|
||||||
mActivity.onCreatePanelMenu(Window.FEATURE_OPTIONS_PANEL, menu);
|
|
||||||
mActivity.onPrepareOptionsMenu(menu);
|
|
||||||
for (int i = 0; i < menu.size(); i++) {
|
|
||||||
MenuItem item = menu.getItem(i);
|
|
||||||
if (mActionItemIds.contains(item.getItemId())) {
|
|
||||||
addActionItemCompatFromMenuItem(item);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Sets up the compatibility action bar with the given title.
|
|
||||||
*/
|
|
||||||
private void setupActionBar() {
|
|
||||||
final ViewGroup actionBarCompat = getActionBarCompat();
|
|
||||||
if (actionBarCompat == null) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
LinearLayout.LayoutParams springLayoutParams = new LinearLayout.LayoutParams(
|
|
||||||
0, ViewGroup.LayoutParams.FILL_PARENT);
|
|
||||||
springLayoutParams.weight = 1;
|
|
||||||
|
|
||||||
// Add Home as Up Carat
|
|
||||||
ImageButton homeAsUp = new ImageButton(mActivity,null, R.attr.actionbarCompatHomeAsUpStyle);
|
|
||||||
homeAsUp.setId(R.id.actionbar_home_as_up);
|
|
||||||
LinearLayout.LayoutParams centerVerticalParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
|
|
||||||
centerVerticalParams.gravity = Gravity.CENTER_VERTICAL;
|
|
||||||
homeAsUp.setLayoutParams(centerVerticalParams);
|
|
||||||
homeAsUp.setVisibility( showHomeAsUpEnabled ? View.VISIBLE : View.INVISIBLE );
|
|
||||||
actionBarCompat.addView(homeAsUp);
|
|
||||||
|
|
||||||
// Add Home button
|
|
||||||
SimpleMenu tempMenu = new SimpleMenu(mActivity);
|
|
||||||
SimpleMenuItem homeItem = new SimpleMenuItem(
|
|
||||||
tempMenu, android.R.id.home, 0, mActivity.getString(R.string.app_name));
|
|
||||||
homeItem.setIcon(R.drawable.home_item);
|
|
||||||
addActionItemCompatFromMenuItem(homeItem);
|
|
||||||
|
|
||||||
// Add title text
|
|
||||||
TextView titleText = new TextView(mActivity, null, R.attr.actionbarCompatTitleStyle);
|
|
||||||
titleText.setLayoutParams(springLayoutParams);
|
|
||||||
titleText.setText(mActivity.getTitle());
|
|
||||||
actionBarCompat.addView(titleText);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/**{@inheritDoc}*/
|
|
||||||
@Override
|
|
||||||
public void setRefreshActionItemState(boolean refreshing) {
|
|
||||||
View refreshButton = mActivity.findViewById(R.id.actionbar_compat_item_refresh);
|
|
||||||
View refreshIndicator = mActivity.findViewById(
|
|
||||||
R.id.actionbar_compat_item_refresh_progress);
|
|
||||||
|
|
||||||
if (refreshButton != null) {
|
|
||||||
refreshButton.setVisibility(refreshing ? View.GONE : View.VISIBLE);
|
|
||||||
}
|
|
||||||
if (refreshIndicator != null) {
|
|
||||||
refreshIndicator.setVisibility(refreshing ? View.VISIBLE : View.GONE);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Action bar helper code to be run in {@link Activity#onCreateOptionsMenu(android.view.Menu)}.
|
|
||||||
*
|
|
||||||
* NOTE: This code will mark on-screen menu items as invisible.
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public boolean onCreateOptionsMenu(Menu menu) {
|
|
||||||
// Hides on-screen action items from the options menu.
|
|
||||||
for (Integer id : mActionItemIds) {
|
|
||||||
menu.findItem(id).setVisible(false);
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**{@inheritDoc}*/
|
|
||||||
@Override
|
|
||||||
protected void onTitleChanged(CharSequence title, int color) {
|
|
||||||
TextView titleView = (TextView) mActivity.findViewById(R.id.actionbar_compat_title);
|
|
||||||
if (titleView != null) {
|
|
||||||
titleView.setText(title);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns a {@link android.view.MenuInflater} that can read action bar metadata on
|
|
||||||
* pre-Honeycomb devices.
|
|
||||||
*/
|
|
||||||
public MenuInflater getMenuInflater(MenuInflater superMenuInflater) {
|
|
||||||
return new WrappedMenuInflater(mActivity, superMenuInflater);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setDisplayHomeAsUpEnabled(boolean enabled) {
|
|
||||||
showHomeAsUpEnabled = enabled;
|
|
||||||
View v = mActivity.findViewById(R.id.actionbar_home_as_up);
|
|
||||||
if ( v != null ) {
|
|
||||||
v.setVisibility( showHomeAsUpEnabled ? View.VISIBLE : View.INVISIBLE );
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void hide() {
|
|
||||||
ViewGroup actionbar = getActionBarCompat();
|
|
||||||
actionbar.setVisibility(View.GONE);
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Returns the {@link android.view.ViewGroup} for the action bar on phones (compatibility action
|
|
||||||
* bar). Can return null, and will return null on Honeycomb.
|
|
||||||
*/
|
|
||||||
private ViewGroup getActionBarCompat() {
|
|
||||||
return (ViewGroup) mActivity.findViewById(R.id.actionbar_compat);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Adds an action button to the compatibility action bar, using menu information from a {@link
|
|
||||||
* android.view.MenuItem}. If the menu item ID is <code>menu_refresh</code>, the menu item's
|
|
||||||
* state can be changed to show a loading spinner using
|
|
||||||
* {@link com.example.android.actionbarcompat.ActionBarHelperBase#setRefreshActionItemState(boolean)}.
|
|
||||||
*/
|
|
||||||
private View addActionItemCompatFromMenuItem(final MenuItem item) {
|
|
||||||
final int itemId = item.getItemId();
|
|
||||||
|
|
||||||
final ViewGroup actionBar = getActionBarCompat();
|
|
||||||
if (actionBar == null) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Create the button
|
|
||||||
ImageButton actionButton = new ImageButton(mActivity, null,
|
|
||||||
itemId == android.R.id.home
|
|
||||||
? R.attr.actionbarCompatItemHomeStyle
|
|
||||||
: R.attr.actionbarCompatItemStyle);
|
|
||||||
actionButton.setLayoutParams(new ViewGroup.LayoutParams(
|
|
||||||
(int) mActivity.getResources().getDimension(
|
|
||||||
itemId == android.R.id.home
|
|
||||||
? R.dimen.actionbar_compat_button_home_width
|
|
||||||
: R.dimen.actionbar_compat_button_width),
|
|
||||||
ViewGroup.LayoutParams.FILL_PARENT));
|
|
||||||
if (itemId == R.id.menu_refresh) {
|
|
||||||
actionButton.setId(R.id.actionbar_compat_item_refresh);
|
|
||||||
}
|
|
||||||
actionButton.setImageDrawable(item.getIcon());
|
|
||||||
actionButton.setScaleType(ImageView.ScaleType.CENTER);
|
|
||||||
actionButton.setContentDescription(item.getTitle());
|
|
||||||
actionButton.setOnClickListener(new View.OnClickListener() {
|
|
||||||
public void onClick(View view) {
|
|
||||||
mActivity.onMenuItemSelected(Window.FEATURE_OPTIONS_PANEL, item);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
actionBar.addView(actionButton);
|
|
||||||
|
|
||||||
if (item.getItemId() == R.id.menu_refresh) {
|
|
||||||
// Refresh buttons should be stateful, and allow for indeterminate progress indicators,
|
|
||||||
// so add those.
|
|
||||||
ProgressBar indicator = new ProgressBar(mActivity, null,
|
|
||||||
R.attr.actionbarCompatProgressIndicatorStyle);
|
|
||||||
|
|
||||||
final int buttonWidth = mActivity.getResources().getDimensionPixelSize(
|
|
||||||
R.dimen.actionbar_compat_button_width);
|
|
||||||
final int buttonHeight = mActivity.getResources().getDimensionPixelSize(
|
|
||||||
R.dimen.actionbar_compat_height);
|
|
||||||
final int progressIndicatorWidth = buttonWidth / 2;
|
|
||||||
|
|
||||||
LinearLayout.LayoutParams indicatorLayoutParams = new LinearLayout.LayoutParams(
|
|
||||||
progressIndicatorWidth, progressIndicatorWidth);
|
|
||||||
indicatorLayoutParams.setMargins(
|
|
||||||
(buttonWidth - progressIndicatorWidth) / 2,
|
|
||||||
(buttonHeight - progressIndicatorWidth) / 2,
|
|
||||||
(buttonWidth - progressIndicatorWidth) / 2,
|
|
||||||
0);
|
|
||||||
indicator.setLayoutParams(indicatorLayoutParams);
|
|
||||||
indicator.setVisibility(View.GONE);
|
|
||||||
indicator.setId(R.id.actionbar_compat_item_refresh_progress);
|
|
||||||
actionBar.addView(indicator);
|
|
||||||
}
|
|
||||||
|
|
||||||
return actionButton;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A {@link android.view.MenuInflater} that reads action bar metadata.
|
|
||||||
*/
|
|
||||||
private class WrappedMenuInflater extends MenuInflater {
|
|
||||||
MenuInflater mInflater;
|
|
||||||
|
|
||||||
public WrappedMenuInflater(Context context, MenuInflater inflater) {
|
|
||||||
super(context);
|
|
||||||
mInflater = inflater;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void inflate(int menuRes, Menu menu) {
|
|
||||||
loadActionBarMetadata(menuRes);
|
|
||||||
mInflater.inflate(menuRes, menu);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Loads action bar metadata from a menu resource, storing a list of menu item IDs that
|
|
||||||
* should be shown on-screen (i.e. those with showAsAction set to always or ifRoom).
|
|
||||||
* @param menuResId
|
|
||||||
*/
|
|
||||||
private void loadActionBarMetadata(int menuResId) {
|
|
||||||
XmlResourceParser parser = null;
|
|
||||||
try {
|
|
||||||
parser = mActivity.getResources().getXml(menuResId);
|
|
||||||
|
|
||||||
int eventType = parser.getEventType();
|
|
||||||
int itemId;
|
|
||||||
int showAsAction;
|
|
||||||
|
|
||||||
boolean eof = false;
|
|
||||||
while (!eof) {
|
|
||||||
switch (eventType) {
|
|
||||||
case XmlPullParser.START_TAG:
|
|
||||||
if (!parser.getName().equals("item")) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
itemId = parser.getAttributeResourceValue(MENU_RES_NAMESPACE,
|
|
||||||
MENU_ATTR_ID, 0);
|
|
||||||
if (itemId == 0) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
showAsAction = parser.getAttributeIntValue(MENU_RES_NAMESPACE,
|
|
||||||
MENU_ATTR_SHOW_AS_ACTION, -1);
|
|
||||||
if (showAsAction == MenuItem.SHOW_AS_ACTION_ALWAYS ||
|
|
||||||
showAsAction == MenuItem.SHOW_AS_ACTION_IF_ROOM) {
|
|
||||||
mActionItemIds.add(itemId);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case XmlPullParser.END_DOCUMENT:
|
|
||||||
eof = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
eventType = parser.next();
|
|
||||||
}
|
|
||||||
} catch (XmlPullParserException e) {
|
|
||||||
throw new InflateException("Error inflating menu XML", e);
|
|
||||||
} catch (IOException e) {
|
|
||||||
throw new InflateException("Error inflating menu XML", e);
|
|
||||||
} finally {
|
|
||||||
if (parser != null) {
|
|
||||||
parser.close();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,90 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2011 The Android Open Source Project
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package net.sf.openrocket.android.actionbarcompat;
|
|
||||||
|
|
||||||
import net.sf.openrocket.R;
|
|
||||||
import android.app.Activity;
|
|
||||||
import android.content.Context;
|
|
||||||
import android.view.LayoutInflater;
|
|
||||||
import android.view.Menu;
|
|
||||||
import android.view.MenuItem;
|
|
||||||
import android.view.View;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* An extension of {@link ActionBarHelper} that provides Android 3.0-specific functionality for
|
|
||||||
* Honeycomb tablets. It thus requires API level 11.
|
|
||||||
*/
|
|
||||||
public class ActionBarHelperHoneycomb extends ActionBarHelper {
|
|
||||||
private Menu mOptionsMenu;
|
|
||||||
private View mRefreshIndeterminateProgressView = null;
|
|
||||||
|
|
||||||
protected ActionBarHelperHoneycomb(Activity activity) {
|
|
||||||
super(activity);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean onCreateOptionsMenu(Menu menu) {
|
|
||||||
mOptionsMenu = menu;
|
|
||||||
return super.onCreateOptionsMenu(menu);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setRefreshActionItemState(boolean refreshing) {
|
|
||||||
// On Honeycomb, we can set the state of the refresh button by giving it a custom
|
|
||||||
// action view.
|
|
||||||
if (mOptionsMenu == null) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
final MenuItem refreshItem = mOptionsMenu.findItem(R.id.menu_refresh);
|
|
||||||
if (refreshItem != null) {
|
|
||||||
if (refreshing) {
|
|
||||||
if (mRefreshIndeterminateProgressView == null) {
|
|
||||||
LayoutInflater inflater = (LayoutInflater)
|
|
||||||
getActionBarThemedContext().getSystemService(
|
|
||||||
Context.LAYOUT_INFLATER_SERVICE);
|
|
||||||
mRefreshIndeterminateProgressView = inflater.inflate(
|
|
||||||
R.layout.actionbar_indeterminate_progress, null);
|
|
||||||
}
|
|
||||||
|
|
||||||
refreshItem.setActionView(mRefreshIndeterminateProgressView);
|
|
||||||
} else {
|
|
||||||
refreshItem.setActionView(null);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns a {@link Context} suitable for inflating layouts for the action bar. The
|
|
||||||
* implementation for this method in {@link ActionBarHelperICS} asks the action bar for a
|
|
||||||
* themed context.
|
|
||||||
*/
|
|
||||||
protected Context getActionBarThemedContext() {
|
|
||||||
return mActivity;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setDisplayHomeAsUpEnabled(boolean enabled) {
|
|
||||||
mActivity.getActionBar().setDisplayHomeAsUpEnabled(enabled);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void hide() {
|
|
||||||
mActivity.getActionBar().hide();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,35 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2011 The Android Open Source Project
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package net.sf.openrocket.android.actionbarcompat;
|
|
||||||
|
|
||||||
import android.app.Activity;
|
|
||||||
import android.content.Context;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* An extension of {@link com.example.android.actionbarcompat.ActionBarHelper} that provides Android
|
|
||||||
* 4.0-specific functionality for IceCreamSandwich devices. It thus requires API level 14.
|
|
||||||
*/
|
|
||||||
public class ActionBarHelperICS extends ActionBarHelperHoneycomb {
|
|
||||||
protected ActionBarHelperICS(Activity activity) {
|
|
||||||
super(activity);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected Context getActionBarThemedContext() {
|
|
||||||
return mActivity.getActionBar().getThemedContext();
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,75 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (C) 2006 The Android Open Source Project
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package net.sf.openrocket.android.actionbarcompat;
|
|
||||||
|
|
||||||
import android.app.Activity;
|
|
||||||
import android.app.ListActivity;
|
|
||||||
import android.os.Bundle;
|
|
||||||
import android.view.Menu;
|
|
||||||
import android.view.MenuInflater;
|
|
||||||
|
|
||||||
public abstract class ActionBarListActivity extends ListActivity {
|
|
||||||
final ActionBarHelper mActionBarHelper = ActionBarHelper.createInstance(this);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the {@link ActionBarHelper} for this activity.
|
|
||||||
*/
|
|
||||||
protected ActionBarHelper getActionBarHelper() {
|
|
||||||
return mActionBarHelper;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**{@inheritDoc}*/
|
|
||||||
@Override
|
|
||||||
public MenuInflater getMenuInflater() {
|
|
||||||
return mActionBarHelper.getMenuInflater(super.getMenuInflater());
|
|
||||||
}
|
|
||||||
|
|
||||||
/**{@inheritDoc}*/
|
|
||||||
@Override
|
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
|
||||||
super.onCreate(savedInstanceState);
|
|
||||||
mActionBarHelper.onCreate(savedInstanceState);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**{@inheritDoc}*/
|
|
||||||
@Override
|
|
||||||
protected void onPostCreate(Bundle savedInstanceState) {
|
|
||||||
super.onPostCreate(savedInstanceState);
|
|
||||||
mActionBarHelper.onPostCreate(savedInstanceState);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Base action bar-aware implementation for
|
|
||||||
* {@link Activity#onCreateOptionsMenu(android.view.Menu)}.
|
|
||||||
*
|
|
||||||
* Note: marking menu items as invisible/visible is not currently supported.
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public boolean onCreateOptionsMenu(Menu menu) {
|
|
||||||
boolean retValue = false;
|
|
||||||
retValue |= mActionBarHelper.onCreateOptionsMenu(menu);
|
|
||||||
retValue |= super.onCreateOptionsMenu(menu);
|
|
||||||
return retValue;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**{@inheritDoc}*/
|
|
||||||
@Override
|
|
||||||
protected void onTitleChanged(CharSequence title, int color) {
|
|
||||||
mActionBarHelper.onTitleChanged(title, color);
|
|
||||||
super.onTitleChanged(title, color);
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,203 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2011 The Android Open Source Project
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package net.sf.openrocket.android.actionbarcompat;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
|
|
||||||
import android.content.ComponentName;
|
|
||||||
import android.content.Context;
|
|
||||||
import android.content.Intent;
|
|
||||||
import android.content.res.Resources;
|
|
||||||
import android.view.KeyEvent;
|
|
||||||
import android.view.Menu;
|
|
||||||
import android.view.MenuItem;
|
|
||||||
import android.view.SubMenu;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A <em>really</em> dumb implementation of the {@link android.view.Menu} interface, that's only
|
|
||||||
* useful for our actionbar-compat purposes. See
|
|
||||||
* <code>com.android.internal.view.menu.MenuBuilder</code> in AOSP for a more complete
|
|
||||||
* implementation.
|
|
||||||
*/
|
|
||||||
public class SimpleMenu implements Menu {
|
|
||||||
|
|
||||||
private Context mContext;
|
|
||||||
private Resources mResources;
|
|
||||||
|
|
||||||
private ArrayList<SimpleMenuItem> mItems;
|
|
||||||
|
|
||||||
public SimpleMenu(Context context) {
|
|
||||||
mContext = context;
|
|
||||||
mResources = context.getResources();
|
|
||||||
mItems = new ArrayList<SimpleMenuItem>();
|
|
||||||
}
|
|
||||||
|
|
||||||
public Context getContext() {
|
|
||||||
return mContext;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Resources getResources() {
|
|
||||||
return mResources;
|
|
||||||
}
|
|
||||||
|
|
||||||
public MenuItem add(CharSequence title) {
|
|
||||||
return addInternal(0, 0, title);
|
|
||||||
}
|
|
||||||
|
|
||||||
public MenuItem add(int titleRes) {
|
|
||||||
return addInternal(0, 0, mResources.getString(titleRes));
|
|
||||||
}
|
|
||||||
|
|
||||||
public MenuItem add(int groupId, int itemId, int order, CharSequence title) {
|
|
||||||
return addInternal(itemId, order, title);
|
|
||||||
}
|
|
||||||
|
|
||||||
public MenuItem add(int groupId, int itemId, int order, int titleRes) {
|
|
||||||
return addInternal(itemId, order, mResources.getString(titleRes));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Adds an item to the menu. The other add methods funnel to this.
|
|
||||||
*/
|
|
||||||
private MenuItem addInternal(int itemId, int order, CharSequence title) {
|
|
||||||
final SimpleMenuItem item = new SimpleMenuItem(this, itemId, order, title);
|
|
||||||
mItems.add(findInsertIndex(mItems, order), item);
|
|
||||||
return item;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static int findInsertIndex(ArrayList<? extends MenuItem> items, int order) {
|
|
||||||
for (int i = items.size() - 1; i >= 0; i--) {
|
|
||||||
MenuItem item = items.get(i);
|
|
||||||
if (item.getOrder() <= order) {
|
|
||||||
return i + 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int findItemIndex(int id) {
|
|
||||||
final int size = size();
|
|
||||||
|
|
||||||
for (int i = 0; i < size; i++) {
|
|
||||||
SimpleMenuItem item = mItems.get(i);
|
|
||||||
if (item.getItemId() == id) {
|
|
||||||
return i;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void removeItem(int itemId) {
|
|
||||||
removeItemAtInt(findItemIndex(itemId));
|
|
||||||
}
|
|
||||||
|
|
||||||
private void removeItemAtInt(int index) {
|
|
||||||
if ((index < 0) || (index >= mItems.size())) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
mItems.remove(index);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void clear() {
|
|
||||||
mItems.clear();
|
|
||||||
}
|
|
||||||
|
|
||||||
public MenuItem findItem(int id) {
|
|
||||||
final int size = size();
|
|
||||||
for (int i = 0; i < size; i++) {
|
|
||||||
SimpleMenuItem item = mItems.get(i);
|
|
||||||
if (item.getItemId() == id) {
|
|
||||||
return item;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int size() {
|
|
||||||
return mItems.size();
|
|
||||||
}
|
|
||||||
|
|
||||||
public MenuItem getItem(int index) {
|
|
||||||
return mItems.get(index);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Unsupported operations.
|
|
||||||
|
|
||||||
public SubMenu addSubMenu(CharSequence charSequence) {
|
|
||||||
throw new UnsupportedOperationException("This operation is not supported for SimpleMenu");
|
|
||||||
}
|
|
||||||
|
|
||||||
public SubMenu addSubMenu(int titleRes) {
|
|
||||||
throw new UnsupportedOperationException("This operation is not supported for SimpleMenu");
|
|
||||||
}
|
|
||||||
|
|
||||||
public SubMenu addSubMenu(int groupId, int itemId, int order, CharSequence title) {
|
|
||||||
throw new UnsupportedOperationException("This operation is not supported for SimpleMenu");
|
|
||||||
}
|
|
||||||
|
|
||||||
public SubMenu addSubMenu(int groupId, int itemId, int order, int titleRes) {
|
|
||||||
throw new UnsupportedOperationException("This operation is not supported for SimpleMenu");
|
|
||||||
}
|
|
||||||
|
|
||||||
public int addIntentOptions(int i, int i1, int i2, ComponentName componentName,
|
|
||||||
Intent[] intents, Intent intent, int i3, MenuItem[] menuItems) {
|
|
||||||
throw new UnsupportedOperationException("This operation is not supported for SimpleMenu");
|
|
||||||
}
|
|
||||||
|
|
||||||
public void removeGroup(int i) {
|
|
||||||
throw new UnsupportedOperationException("This operation is not supported for SimpleMenu");
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setGroupCheckable(int i, boolean b, boolean b1) {
|
|
||||||
throw new UnsupportedOperationException("This operation is not supported for SimpleMenu");
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setGroupVisible(int i, boolean b) {
|
|
||||||
throw new UnsupportedOperationException("This operation is not supported for SimpleMenu");
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setGroupEnabled(int i, boolean b) {
|
|
||||||
throw new UnsupportedOperationException("This operation is not supported for SimpleMenu");
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean hasVisibleItems() {
|
|
||||||
throw new UnsupportedOperationException("This operation is not supported for SimpleMenu");
|
|
||||||
}
|
|
||||||
|
|
||||||
public void close() {
|
|
||||||
throw new UnsupportedOperationException("This operation is not supported for SimpleMenu");
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean performShortcut(int i, KeyEvent keyEvent, int i1) {
|
|
||||||
throw new UnsupportedOperationException("This operation is not supported for SimpleMenu");
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isShortcutKey(int i, KeyEvent keyEvent) {
|
|
||||||
throw new UnsupportedOperationException("This operation is not supported for SimpleMenu");
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean performIdentifierAction(int i, int i1) {
|
|
||||||
throw new UnsupportedOperationException("This operation is not supported for SimpleMenu");
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setQwertyMode(boolean b) {
|
|
||||||
throw new UnsupportedOperationException("This operation is not supported for SimpleMenu");
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,260 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2011 The Android Open Source Project
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package net.sf.openrocket.android.actionbarcompat;
|
|
||||||
|
|
||||||
import android.content.Intent;
|
|
||||||
import android.graphics.drawable.Drawable;
|
|
||||||
import android.view.ActionProvider;
|
|
||||||
import android.view.ContextMenu;
|
|
||||||
import android.view.MenuItem;
|
|
||||||
import android.view.SubMenu;
|
|
||||||
import android.view.View;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A <em>really</em> dumb implementation of the {@link android.view.MenuItem} interface, that's only
|
|
||||||
* useful for our actionbar-compat purposes. See
|
|
||||||
* <code>com.android.internal.view.menu.MenuItemImpl</code> in AOSP for a more complete
|
|
||||||
* implementation.
|
|
||||||
*/
|
|
||||||
public class SimpleMenuItem implements MenuItem {
|
|
||||||
|
|
||||||
private SimpleMenu mMenu;
|
|
||||||
|
|
||||||
private final int mId;
|
|
||||||
private final int mOrder;
|
|
||||||
private CharSequence mTitle;
|
|
||||||
private CharSequence mTitleCondensed;
|
|
||||||
private Drawable mIconDrawable;
|
|
||||||
private int mIconResId = 0;
|
|
||||||
private boolean mEnabled = true;
|
|
||||||
|
|
||||||
public SimpleMenuItem(SimpleMenu menu, int id, int order, CharSequence title) {
|
|
||||||
mMenu = menu;
|
|
||||||
mId = id;
|
|
||||||
mOrder = order;
|
|
||||||
mTitle = title;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getItemId() {
|
|
||||||
return mId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getOrder() {
|
|
||||||
return mOrder;
|
|
||||||
}
|
|
||||||
|
|
||||||
public MenuItem setTitle(CharSequence title) {
|
|
||||||
mTitle = title;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public MenuItem setTitle(int titleRes) {
|
|
||||||
return setTitle(mMenu.getContext().getString(titleRes));
|
|
||||||
}
|
|
||||||
|
|
||||||
public CharSequence getTitle() {
|
|
||||||
return mTitle;
|
|
||||||
}
|
|
||||||
|
|
||||||
public MenuItem setTitleCondensed(CharSequence title) {
|
|
||||||
mTitleCondensed = title;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public CharSequence getTitleCondensed() {
|
|
||||||
return mTitleCondensed != null ? mTitleCondensed : mTitle;
|
|
||||||
}
|
|
||||||
|
|
||||||
public MenuItem setIcon(Drawable icon) {
|
|
||||||
mIconResId = 0;
|
|
||||||
mIconDrawable = icon;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public MenuItem setIcon(int iconResId) {
|
|
||||||
mIconDrawable = null;
|
|
||||||
mIconResId = iconResId;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Drawable getIcon() {
|
|
||||||
if (mIconDrawable != null) {
|
|
||||||
return mIconDrawable;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (mIconResId != 0) {
|
|
||||||
return mMenu.getResources().getDrawable(mIconResId);
|
|
||||||
}
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public MenuItem setEnabled(boolean enabled) {
|
|
||||||
mEnabled = enabled;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isEnabled() {
|
|
||||||
return mEnabled;
|
|
||||||
}
|
|
||||||
|
|
||||||
// No-op operations. We use no-ops to allow inflation from menu XML.
|
|
||||||
|
|
||||||
public int getGroupId() {
|
|
||||||
// Noop
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
public View getActionView() {
|
|
||||||
// Noop
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public MenuItem setActionProvider(ActionProvider actionProvider) {
|
|
||||||
// Noop
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public ActionProvider getActionProvider() {
|
|
||||||
// Noop
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean expandActionView() {
|
|
||||||
// Noop
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean collapseActionView() {
|
|
||||||
// Noop
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isActionViewExpanded() {
|
|
||||||
// Noop
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public MenuItem setOnActionExpandListener(OnActionExpandListener onActionExpandListener) {
|
|
||||||
// Noop
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public MenuItem setIntent(Intent intent) {
|
|
||||||
// Noop
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Intent getIntent() {
|
|
||||||
// Noop
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public MenuItem setShortcut(char c, char c1) {
|
|
||||||
// Noop
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public MenuItem setNumericShortcut(char c) {
|
|
||||||
// Noop
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public char getNumericShortcut() {
|
|
||||||
// Noop
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
public MenuItem setAlphabeticShortcut(char c) {
|
|
||||||
// Noop
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public char getAlphabeticShortcut() {
|
|
||||||
// Noop
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
public MenuItem setCheckable(boolean b) {
|
|
||||||
// Noop
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isCheckable() {
|
|
||||||
// Noop
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public MenuItem setChecked(boolean b) {
|
|
||||||
// Noop
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isChecked() {
|
|
||||||
// Noop
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public MenuItem setVisible(boolean b) {
|
|
||||||
// Noop
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isVisible() {
|
|
||||||
// Noop
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean hasSubMenu() {
|
|
||||||
// Noop
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public SubMenu getSubMenu() {
|
|
||||||
// Noop
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public MenuItem setOnMenuItemClickListener(OnMenuItemClickListener onMenuItemClickListener) {
|
|
||||||
// Noop
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public ContextMenu.ContextMenuInfo getMenuInfo() {
|
|
||||||
// Noop
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setShowAsAction(int i) {
|
|
||||||
// Noop
|
|
||||||
}
|
|
||||||
|
|
||||||
public MenuItem setShowAsActionFlags(int i) {
|
|
||||||
// Noop
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public MenuItem setActionView(View view) {
|
|
||||||
// Noop
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public MenuItem setActionView(int i) {
|
|
||||||
// Noop
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
}
|
|
@ -8,7 +8,6 @@ import java.util.Comparator;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import net.sf.openrocket.R;
|
import net.sf.openrocket.R;
|
||||||
import net.sf.openrocket.android.actionbarcompat.ActionBarListActivity;
|
|
||||||
import android.app.AlertDialog;
|
import android.app.AlertDialog;
|
||||||
import android.app.Dialog;
|
import android.app.Dialog;
|
||||||
import android.content.DialogInterface;
|
import android.content.DialogInterface;
|
||||||
@ -26,7 +25,9 @@ import android.widget.ImageView;
|
|||||||
import android.widget.ListView;
|
import android.widget.ListView;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
public class SimpleFileBrowser extends ActionBarListActivity {
|
import com.actionbarsherlock.app.SherlockListActivity;
|
||||||
|
|
||||||
|
public class SimpleFileBrowser extends SherlockListActivity {
|
||||||
|
|
||||||
private List<File> path = null;
|
private List<File> path = null;
|
||||||
private final static File root = new File("/");
|
private final static File root = new File("/");
|
||||||
|
@ -3,18 +3,19 @@ package net.sf.openrocket.android.motor;
|
|||||||
import net.sf.openrocket.R;
|
import net.sf.openrocket.R;
|
||||||
import net.sf.openrocket.android.ActivityHelpers;
|
import net.sf.openrocket.android.ActivityHelpers;
|
||||||
import net.sf.openrocket.android.PreferencesActivity;
|
import net.sf.openrocket.android.PreferencesActivity;
|
||||||
import net.sf.openrocket.android.actionbarcompat.ActionBarFragmentActivity;
|
|
||||||
import net.sf.openrocket.android.util.AndroidLogWrapper;
|
import net.sf.openrocket.android.util.AndroidLogWrapper;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.support.v4.app.Fragment;
|
import android.support.v4.app.Fragment;
|
||||||
import android.support.v4.app.FragmentTransaction;
|
import android.support.v4.app.FragmentTransaction;
|
||||||
import android.view.Menu;
|
|
||||||
import android.view.MenuInflater;
|
|
||||||
import android.view.MenuItem;
|
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
|
||||||
public class MotorBrowserActivity extends ActionBarFragmentActivity
|
import com.actionbarsherlock.app.SherlockFragmentActivity;
|
||||||
|
import com.actionbarsherlock.view.Menu;
|
||||||
|
import com.actionbarsherlock.view.MenuInflater;
|
||||||
|
import com.actionbarsherlock.view.MenuItem;
|
||||||
|
|
||||||
|
public class MotorBrowserActivity extends SherlockFragmentActivity
|
||||||
implements MotorListFragment.OnMotorSelectedListener
|
implements MotorListFragment.OnMotorSelectedListener
|
||||||
{
|
{
|
||||||
|
|
||||||
@ -28,7 +29,8 @@ implements MotorListFragment.OnMotorSelectedListener
|
|||||||
public void onCreate(Bundle savedInstanceState) {
|
public void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
setContentView(R.layout.motorbrowser);
|
setContentView(R.layout.motorbrowser);
|
||||||
getActionBarHelper().setDisplayHomeAsUpEnabled(true);
|
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
||||||
|
getSupportActionBar().setTitle(R.string.motorbrowsertitle);
|
||||||
// Only create the motorBrowser fragment if it doesn't already exist.
|
// Only create the motorBrowser fragment if it doesn't already exist.
|
||||||
Fragment motorBrowser = getSupportFragmentManager().findFragmentByTag(MOTOR_LIST_FRAGMENT);
|
Fragment motorBrowser = getSupportFragmentManager().findFragmentByTag(MOTOR_LIST_FRAGMENT);
|
||||||
if ( motorBrowser == null ) {
|
if ( motorBrowser == null ) {
|
||||||
@ -41,7 +43,7 @@ implements MotorListFragment.OnMotorSelectedListener
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onCreateOptionsMenu(Menu menu) {
|
public boolean onCreateOptionsMenu(Menu menu) {
|
||||||
MenuInflater inflater = getMenuInflater();
|
MenuInflater inflater = getSupportMenuInflater();
|
||||||
inflater.inflate(R.menu.motor_browser_option_menu, menu);
|
inflater.inflate(R.menu.motor_browser_option_menu, menu);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -7,9 +7,10 @@ import android.app.AlertDialog;
|
|||||||
import android.app.Dialog;
|
import android.app.Dialog;
|
||||||
import android.content.DialogInterface;
|
import android.content.DialogInterface;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.support.v4.app.DialogFragment;
|
|
||||||
|
|
||||||
public class MissingMotorDialogFragment extends DialogFragment {
|
import com.actionbarsherlock.app.SherlockDialogFragment;
|
||||||
|
|
||||||
|
public class MissingMotorDialogFragment extends SherlockDialogFragment {
|
||||||
|
|
||||||
private final static String MESSAGE_ARG_KEY = "message";
|
private final static String MESSAGE_ARG_KEY = "message";
|
||||||
|
|
||||||
|
@ -6,7 +6,6 @@ import java.util.Set;
|
|||||||
import net.sf.openrocket.R;
|
import net.sf.openrocket.R;
|
||||||
import net.sf.openrocket.aerodynamics.WarningSet;
|
import net.sf.openrocket.aerodynamics.WarningSet;
|
||||||
import net.sf.openrocket.android.Application;
|
import net.sf.openrocket.android.Application;
|
||||||
import net.sf.openrocket.android.actionbarcompat.ActionBarFragmentActivity;
|
|
||||||
import net.sf.openrocket.android.thrustcurve.TCMissingMotorDownloadAction;
|
import net.sf.openrocket.android.thrustcurve.TCMissingMotorDownloadAction;
|
||||||
import net.sf.openrocket.android.thrustcurve.TCQueryAction;
|
import net.sf.openrocket.android.thrustcurve.TCQueryAction;
|
||||||
import net.sf.openrocket.android.util.AndroidLogWrapper;
|
import net.sf.openrocket.android.util.AndroidLogWrapper;
|
||||||
@ -19,7 +18,9 @@ import android.net.Uri;
|
|||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.support.v4.app.DialogFragment;
|
import android.support.v4.app.DialogFragment;
|
||||||
|
|
||||||
public class OpenRocketLoaderActivity extends ActionBarFragmentActivity
|
import com.actionbarsherlock.app.SherlockFragmentActivity;
|
||||||
|
|
||||||
|
public class OpenRocketLoaderActivity extends SherlockFragmentActivity
|
||||||
implements TCQueryAction.OnTCQueryCompleteListener, OpenRocketLoaderFragment.OnOpenRocketFileLoaded
|
implements TCQueryAction.OnTCQueryCompleteListener, OpenRocketLoaderFragment.OnOpenRocketFileLoaded
|
||||||
{
|
{
|
||||||
|
|
||||||
|
@ -6,7 +6,6 @@ import java.io.IOException;
|
|||||||
import net.sf.openrocket.R;
|
import net.sf.openrocket.R;
|
||||||
import net.sf.openrocket.android.ActivityHelpers;
|
import net.sf.openrocket.android.ActivityHelpers;
|
||||||
import net.sf.openrocket.android.Application;
|
import net.sf.openrocket.android.Application;
|
||||||
import net.sf.openrocket.android.actionbarcompat.ActionBarFragmentActivity;
|
|
||||||
import net.sf.openrocket.android.simulation.SimulationChart;
|
import net.sf.openrocket.android.simulation.SimulationChart;
|
||||||
import net.sf.openrocket.android.simulation.SimulationViewActivity;
|
import net.sf.openrocket.android.simulation.SimulationViewActivity;
|
||||||
import net.sf.openrocket.android.simulation.SimulationViewFragment;
|
import net.sf.openrocket.android.simulation.SimulationViewFragment;
|
||||||
@ -20,12 +19,14 @@ import android.support.v4.app.FragmentManager;
|
|||||||
import android.support.v4.app.FragmentPagerAdapter;
|
import android.support.v4.app.FragmentPagerAdapter;
|
||||||
import android.support.v4.app.FragmentTransaction;
|
import android.support.v4.app.FragmentTransaction;
|
||||||
import android.support.v4.view.ViewPager;
|
import android.support.v4.view.ViewPager;
|
||||||
import android.view.Menu;
|
|
||||||
import android.view.MenuInflater;
|
|
||||||
import android.view.MenuItem;
|
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
|
||||||
public class OpenRocketViewer extends ActionBarFragmentActivity
|
import com.actionbarsherlock.app.SherlockFragmentActivity;
|
||||||
|
import com.actionbarsherlock.view.Menu;
|
||||||
|
import com.actionbarsherlock.view.MenuInflater;
|
||||||
|
import com.actionbarsherlock.view.MenuItem;
|
||||||
|
|
||||||
|
public class OpenRocketViewer extends SherlockFragmentActivity
|
||||||
implements Simulations.OnSimulationSelectedListener
|
implements Simulations.OnSimulationSelectedListener
|
||||||
{
|
{
|
||||||
|
|
||||||
@ -42,13 +43,13 @@ implements Simulations.OnSimulationSelectedListener
|
|||||||
|
|
||||||
setTitle(app.getRocketDocument().getRocket().getName());
|
setTitle(app.getRocketDocument().getRocket().getName());
|
||||||
|
|
||||||
getActionBarHelper().setDisplayHomeAsUpEnabled(true);
|
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onCreateOptionsMenu(Menu menu) {
|
public boolean onCreateOptionsMenu(Menu menu) {
|
||||||
MenuInflater inflater = getMenuInflater();
|
MenuInflater inflater = getSupportMenuInflater();
|
||||||
inflater.inflate(R.menu.rocket_viewer_option_menu, menu);
|
inflater.inflate(R.menu.rocket_viewer_option_menu, menu);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user