diff --git a/android/res/drawable/sf_donate.png b/android/res/drawable/sf_donate.png
new file mode 100644
index 000000000..7f5a52c59
Binary files /dev/null and b/android/res/drawable/sf_donate.png differ
diff --git a/android/res/layout-land/main.xml b/android/res/layout-land/main.xml
index 91e7eff3d..45b12d349 100644
--- a/android/res/layout-land/main.xml
+++ b/android/res/layout-land/main.xml
@@ -44,6 +44,13 @@
android:layout_height="wrap_content"
android:text="@string/viewmotorslabel" />
+
+
\ No newline at end of file
diff --git a/android/res/layout/main.xml b/android/res/layout/main.xml
index 85550209c..d0c989830 100644
--- a/android/res/layout/main.xml
+++ b/android/res/layout/main.xml
@@ -25,19 +25,25 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center_horizontal" >
-
+
-
+
-
+
+
\ No newline at end of file
diff --git a/android/res/menu/main_menu.xml b/android/res/menu/main_menu.xml
index 1e40af72a..07b8f1ad2 100644
--- a/android/res/menu/main_menu.xml
+++ b/android/res/menu/main_menu.xml
@@ -5,6 +5,11 @@
android:id="@+id/main_menu_preferences"
android:title="@string/Preferences"
android:icon="@drawable/ic_menu_preferences"
- android:showAsAction="always"/>
+ android:showAsAction="never"/>
+
+
\ No newline at end of file
diff --git a/android/res/menu/motor_browser_option_menu.xml b/android/res/menu/motor_browser_option_menu.xml
index 93b96922a..23ad3760c 100644
--- a/android/res/menu/motor_browser_option_menu.xml
+++ b/android/res/menu/motor_browser_option_menu.xml
@@ -7,7 +7,10 @@
+ android:title="@string/Preferences"/>
+
\ No newline at end of file
diff --git a/android/res/menu/rocket_viewer_option_menu.xml b/android/res/menu/rocket_viewer_option_menu.xml
index eab9ade07..cc80d992a 100644
--- a/android/res/menu/rocket_viewer_option_menu.xml
+++ b/android/res/menu/rocket_viewer_option_menu.xml
@@ -3,12 +3,16 @@
+ android:showAsAction="always"
+ android:title="@string/viewmotorslabel"/>
+ android:icon="@drawable/ic_menu_preferences"
+ android:title="@string/Preferences"/>
+
\ No newline at end of file
diff --git a/android/res/values/strings.xml b/android/res/values/strings.xml
index 489c2d0c4..1acb443d1 100644
--- a/android/res/values/strings.xml
+++ b/android/res/values/strings.xml
@@ -5,6 +5,7 @@
Save
Motor List
Download
+ About
Preferences
Select Series
View Events
diff --git a/android/src/net/sf/openrocket/android/AboutDialogFragment.java b/android/src/net/sf/openrocket/android/AboutDialogFragment.java
new file mode 100644
index 000000000..2e1ed83f6
--- /dev/null
+++ b/android/src/net/sf/openrocket/android/AboutDialogFragment.java
@@ -0,0 +1,36 @@
+package net.sf.openrocket.android;
+
+import net.sf.openrocket.android.rocket.OpenRocketLoaderActivity;
+import android.app.AlertDialog;
+import android.app.Dialog;
+import android.content.DialogInterface;
+import android.os.Bundle;
+import android.support.v4.app.DialogFragment;
+
+public class AboutDialogFragment extends DialogFragment {
+
+ public static AboutDialogFragment newInstance() {
+ AboutDialogFragment frag = new AboutDialogFragment();
+ return frag;
+ }
+
+ @Override
+ public Dialog onCreateDialog(Bundle savedInstanceState) {
+
+ AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
+ // .setIcon(android.R.drawable.alert_dialog_icon)
+ builder.setTitle("About");
+ StringBuilder sb = new StringBuilder();
+ sb.append("OpenRocket\n");
+ sb.append("Copyright 2007-2012 Sampo Niskanen\n");
+ sb.append("\n");
+ sb.append("The android port contains third party software:\n");
+ sb.append(" AChartEngine - Apache License 2.0\n");
+ sb.append(" Android Open Source Project - Apache License 2.0\n");
+ sb.append(" Android tree-view-list - 2-clause BSD licensed\n");
+ builder.setMessage(sb.toString());
+ builder.setCancelable(true);
+ return builder.create();
+ }
+
+}
diff --git a/android/src/net/sf/openrocket/android/ActivityHelpers.java b/android/src/net/sf/openrocket/android/ActivityHelpers.java
index 785852b5d..760176415 100644
--- a/android/src/net/sf/openrocket/android/ActivityHelpers.java
+++ b/android/src/net/sf/openrocket/android/ActivityHelpers.java
@@ -4,6 +4,8 @@ import net.sf.openrocket.android.motor.MotorBrowserActivity;
import net.sf.openrocket.android.thrustcurve.TCQueryActivity;
import android.app.Activity;
import android.content.Intent;
+import android.net.Uri;
+import android.support.v4.app.FragmentActivity;
public abstract class ActivityHelpers {
@@ -28,4 +30,16 @@ public abstract class ActivityHelpers {
parent.startActivityForResult(i, requestCode);
}
+ public static void donate( Activity parent ) {
+ String url = "http://sourceforge.net/donate/index.php?group_id=260357";
+ Intent intent = new Intent(Intent.ACTION_VIEW);
+ intent.setData( Uri.parse(url) );
+ parent.startActivity(intent);
+ }
+
+ public static void showAbout( FragmentActivity parent ) {
+ AboutDialogFragment frag = AboutDialogFragment.newInstance();
+ frag.show(parent.getSupportFragmentManager(), "about");
+ }
+
}
diff --git a/android/src/net/sf/openrocket/android/Main.java b/android/src/net/sf/openrocket/android/Main.java
index ee76e9a83..06e581386 100644
--- a/android/src/net/sf/openrocket/android/Main.java
+++ b/android/src/net/sf/openrocket/android/Main.java
@@ -1,6 +1,7 @@
package net.sf.openrocket.android;
import net.sf.openrocket.R;
+import net.sf.openrocket.android.actionbarcompat.ActionBarFragmentActivity;
import net.sf.openrocket.android.filebrowser.SimpleFileBrowser;
import android.content.ActivityNotFoundException;
import android.content.Intent;
@@ -9,14 +10,13 @@ import android.content.res.Resources;
import android.net.Uri;
import android.os.Bundle;
import android.preference.PreferenceManager;
-import android.support.v4.app.FragmentActivity;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
-public class Main extends FragmentActivity {
+public class Main extends ActionBarFragmentActivity {
private static final int PICK_ORK_FILE_RESULT = 1;
@@ -24,6 +24,7 @@ public class Main extends FragmentActivity {
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
+ setTitle("");
setContentView(R.layout.main);
((Button) findViewById(R.id.main_open)).setOnClickListener(
new View.OnClickListener() {
@@ -39,6 +40,13 @@ public class Main extends FragmentActivity {
ActivityHelpers.browseMotors(Main.this);
}
});
+ ((Button) findViewById(R.id.main_donate)).setOnClickListener(
+ new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ ActivityHelpers.donate(Main.this);
+ }
+ });
}
@Override
@@ -54,6 +62,9 @@ public class Main extends FragmentActivity {
case R.id.main_menu_preferences:
ActivityHelpers.startPreferences(this);
return true;
+ case R.id.menu_about:
+ ActivityHelpers.showAbout(this);
+ return true;
}
return super.onOptionsItemSelected(item);
}
diff --git a/android/src/net/sf/openrocket/android/motor/MotorBrowserActivity.java b/android/src/net/sf/openrocket/android/motor/MotorBrowserActivity.java
index 658bef6ef..2d3f77489 100644
--- a/android/src/net/sf/openrocket/android/motor/MotorBrowserActivity.java
+++ b/android/src/net/sf/openrocket/android/motor/MotorBrowserActivity.java
@@ -60,6 +60,9 @@ implements MotorListFragment.OnMotorSelectedListener
Intent intent = new Intent().setClass(this, PreferencesActivity.class);
this.startActivity(intent);
return true;
+ case R.id.menu_about:
+ ActivityHelpers.showAbout(this);
+ return true;
}
return super.onMenuItemSelected(featureId, item);
}
diff --git a/android/src/net/sf/openrocket/android/rocket/OpenRocketLoaderActivity.java b/android/src/net/sf/openrocket/android/rocket/OpenRocketLoaderActivity.java
index ac272b876..151a6e0f6 100644
--- a/android/src/net/sf/openrocket/android/rocket/OpenRocketLoaderActivity.java
+++ b/android/src/net/sf/openrocket/android/rocket/OpenRocketLoaderActivity.java
@@ -6,6 +6,7 @@ import java.util.Set;
import net.sf.openrocket.R;
import net.sf.openrocket.aerodynamics.WarningSet;
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.TCQueryAction;
import net.sf.openrocket.android.util.AndroidLogWrapper;
@@ -17,9 +18,8 @@ import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.app.DialogFragment;
-import android.support.v4.app.FragmentActivity;
-public class OpenRocketLoaderActivity extends FragmentActivity
+public class OpenRocketLoaderActivity extends ActionBarFragmentActivity
implements TCQueryAction.OnTCQueryCompleteListener, OpenRocketLoaderFragment.OnOpenRocketFileLoaded
{
@@ -29,6 +29,7 @@ implements TCQueryAction.OnTCQueryCompleteListener, OpenRocketLoaderFragment.OnO
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
+ setTitle("");
setContentView(R.layout.main);
if ( savedInstanceState == null || savedInstanceState.getBoolean("isLoading", false) == false ) {
Intent i = getIntent();
diff --git a/android/src/net/sf/openrocket/android/rocket/OpenRocketViewer.java b/android/src/net/sf/openrocket/android/rocket/OpenRocketViewer.java
index 9e25ff1ba..57799332e 100644
--- a/android/src/net/sf/openrocket/android/rocket/OpenRocketViewer.java
+++ b/android/src/net/sf/openrocket/android/rocket/OpenRocketViewer.java
@@ -64,6 +64,9 @@ implements Simulations.OnSimulationSelectedListener
case R.id.preference_menu_option:
ActivityHelpers.startPreferences(this);
return true;
+ case R.id.menu_about:
+ ActivityHelpers.showAbout(this);
+ return true;
}
return super.onMenuItemSelected(featureId, item);
}