summaryrefslogtreecommitdiff
path: root/data/iphone-java/HelloJava.app
diff options
context:
space:
mode:
authorJay Freeman <saurik@saurik.com>2008-01-22 14:21:14 +0000
committerJay Freeman <saurik@saurik.com>2008-01-22 14:21:14 +0000
commit5f88bb5700e49555f7e4a59ecee7e308c4b068e0 (patch)
tree4bfc2d24fa02f870c2cabd48a72cc4633ae212ff /data/iphone-java/HelloJava.app
parent794dacec5420b1fb65fdef0cd3e7f0208b9bdafa (diff)
Added iPhone/Java, fixing dependencies and providing full support for the iPod touch.
git-svn-id: http://svn.telesphoreo.org/trunk@17 514c082c-b64e-11dc-b46d-3d985efe055d
Diffstat (limited to 'data/iphone-java/HelloJava.app')
-rw-r--r--data/iphone-java/HelloJava.app/Default.pngbin0 -> 590265 bytes
-rwxr-xr-xdata/iphone-java/HelloJava.app/HelloJava4
-rw-r--r--data/iphone-java/HelloJava.app/HelloJava.java149
-rw-r--r--data/iphone-java/HelloJava.app/Info.plist34
l---------data/iphone-java/HelloJava.app/Java1
-rw-r--r--data/iphone-java/HelloJava.app/icon.pngbin0 -> 14559 bytes
-rw-r--r--data/iphone-java/HelloJava.app/start.wavbin0 -> 80856 bytes
7 files changed, 188 insertions, 0 deletions
diff --git a/data/iphone-java/HelloJava.app/Default.png b/data/iphone-java/HelloJava.app/Default.png
new file mode 100644
index 000000000..f475d4db7
--- /dev/null
+++ b/data/iphone-java/HelloJava.app/Default.png
Binary files differ
diff --git a/data/iphone-java/HelloJava.app/HelloJava b/data/iphone-java/HelloJava.app/HelloJava
new file mode 100755
index 000000000..88d801cdb
--- /dev/null
+++ b/data/iphone-java/HelloJava.app/HelloJava
@@ -0,0 +1,4 @@
+#!/bin/bash
+# XXX: -Xbootclasspath is used as JamVM runs 3x faster
+# XXX: Java is symlink'd to here so the home button works
+exec "$(dirname "$0")"/Java -Xmx8M -Xss256K -Xbootclasspath/p:/usr/share/java/sqlite.jar:/usr/share/java/jocstrap.jar -cp /usr/share/java/uicaboodle.jar:"$(dirname "$0")" com.saurik.uicaboodle.Main HelloJava "$@"
diff --git a/data/iphone-java/HelloJava.app/HelloJava.java b/data/iphone-java/HelloJava.app/HelloJava.java
new file mode 100644
index 000000000..8b8f7ce37
--- /dev/null
+++ b/data/iphone-java/HelloJava.app/HelloJava.java
@@ -0,0 +1,149 @@
+import obc.*;
+import joc.*;
+
+import joc.Message;
+
+import static joc.Pointer.*;
+import static joc.Static.*;
+
+import java.util.ArrayList;
+import java.util.Date;
+
+public class HelloJava
+ extends UIApplication
+{
+
+private UIWindow window;
+
+private static class Contact {
+ public String first;
+ public String last;
+ public UITableCell cell;
+
+ public Contact(String first, String last) {
+ this.first = first;
+ this.last = last;
+ this.cell = null;
+ }
+
+ public String getName() {
+ String name = first;
+ if (last != null)
+ name += " " + last;
+ return name;
+ }
+}
+
+public static class Section {
+ public int row;
+ public String title;
+
+ public Section(int row, String title) {
+ this.row = row;
+ this.title = title;
+ }
+}
+
+private ArrayList<Contact> contacts_ = new ArrayList<Contact>();
+private ArrayList<Section> sections_ = new ArrayList<Section>();
+
+@Message public void applicationDidFinishLaunching$(Object unused)
+ throws Exception
+{
+ SQLite.Database ab = new SQLite.Database();
+ ab.open("/var/root/Library/AddressBook/AddressBook.sqlitedb", 0666); try {
+ SQLite.Stmt st = ab.prepare("select first, last from ABPerson where first is not null order by first"); try {
+ while (st.step())
+ contacts_.add(new Contact(st.column_string(0), st.column_string(1)));
+ } finally { st.close(); }
+ } finally { ab.close(); }
+
+ CGRect outer = UIHardware.fullScreenApplicationContentRect();
+ CGRect inner = outer.clone();
+ inner.origin.x = inner.origin.y = 0;
+
+ window = new UIWindow().initWithContentRect$(inner);
+ window.orderFront$(this);
+ window.makeKey$(this);
+ window._setHidden$(NO);
+
+ CGSize navsize = UINavigationBar.defaultSize();
+ UINavigationBar navbar = new UINavigationBar().initWithFrame$(new CGRect(0, 0, inner.size.width, navsize.height));
+ navbar.setBarStyle$(1);
+ navbar.showButtonsWithLeftTitle$rightTitle$leftBack$("Run GC", null, YES);
+
+ navbar.setDelegate$(new NSObject() {
+ @Message void navigationBar$buttonClicked$(UINavigationBar navbar, int button) {
+ java.lang.Runtime.getRuntime().gc();
+ }
+ }.init());
+
+ UINavigationItem navitem = new UINavigationItem().initWithTitle$("Contact List");
+ navbar.pushNavigationItem$(navitem);
+
+ char letter = 0;
+ for (int i = 0; i != contacts_.size(); ++i) {
+ String name = contacts_.get(i).getName();
+ char now = name.charAt(0);
+ if (letter != now) {
+ letter = now;
+ sections_.add(new Section(
+ i, new String(new char[] {now})
+ ));
+ }
+ }
+
+ UISectionList seclist = new UISectionList().initWithFrame$(new CGRect(0, navsize.height, inner.size.width, inner.size.height - navsize.height));
+
+ seclist.setDataSource$(new NSObject() {
+ @Message int numberOfSectionsInSectionList$(UISectionList list) {
+ return sections_.size();
+ }
+
+ @Message String sectionList$titleForSection$(UISectionList list, int section) {
+ return sections_.get(section).title;
+ }
+
+ @Message int sectionList$rowForSection$(UISectionList list, int section) {
+ return sections_.get(section).row;
+ }
+
+ @Message int numberOfRowsInTable$(UITable table) {
+ return contacts_.size();
+ }
+
+ @Message UITableCell table$cellForRow$column$(UITable table, int row, UITableColumn col) {
+ Contact contact = contacts_.get(row);
+ if (contact.cell != null)
+ return contact.cell;
+ UIImageAndTextTableCell cell = (UIImageAndTextTableCell) new UIImageAndTextTableCell().init();
+ cell.setTitle$(contact.getName());
+ contact.cell = cell;
+ return cell;
+ }
+ }.init());
+
+ seclist.reloadData();
+
+ UITableColumn col = new UITableColumn().initWithTitle$identifier$width$("Name", "name", 320.0f);
+
+ UITable table = (UITable) seclist.table();
+ table.setSeparatorStyle$(1);
+ table.addTableColumn$(col);
+
+ UIView view = new UIView().initWithFrame$(inner);
+ view.addSubview$(navbar);
+ view.addSubview$(seclist);
+
+ window.setContentView$(view);
+
+ AVController controller = new AVController().init();
+ CharSequence wavfile = (CharSequence) ((NSBundle) NSBundle.mainBundle()).pathForResource$ofType$("start", "wav");
+ AVItem wavitem = new AVItem().initWithPath$error$(wavfile, null);
+ wavitem.setVolume$(100);
+ controller.setCurrentItem$(wavitem);
+ controller.setCurrentTime$(0);
+ controller.play$(null);
+}
+
+}
diff --git a/data/iphone-java/HelloJava.app/Info.plist b/data/iphone-java/HelloJava.app/Info.plist
new file mode 100644
index 000000000..37e19d19e
--- /dev/null
+++ b/data/iphone-java/HelloJava.app/Info.plist
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+
+<dict>
+ <key>CFBundleDevelopmentRegion</key>
+ <string>en</string>
+
+ <key>CFBundleExecutable</key>
+ <string>HelloJava</string>
+
+ <key>CFBundleIdentifier</key>
+ <string>com.saurik.HelloJava</string>
+
+ <key>CFBundleInfoDictionaryVersion</key>
+ <string>6.0</string>
+
+ <key>CFBundleName</key>
+ <string>HelloJava</string>
+
+ <key>CFBundlePackageType</key>
+ <string>APPL</string>
+
+ <key>CFBundleShortVersionString</key>
+ <string>1.0</string>
+
+ <key>CFBundleSignature</key>
+ <string>????</string>
+
+ <key>CFBundleVersion</key>
+ <string>1.0</string>
+</dict>
+
+</plist>
diff --git a/data/iphone-java/HelloJava.app/Java b/data/iphone-java/HelloJava.app/Java
new file mode 120000
index 000000000..33b0c18fb
--- /dev/null
+++ b/data/iphone-java/HelloJava.app/Java
@@ -0,0 +1 @@
+/usr/bin/java \ No newline at end of file
diff --git a/data/iphone-java/HelloJava.app/icon.png b/data/iphone-java/HelloJava.app/icon.png
new file mode 100644
index 000000000..09b57dc6c
--- /dev/null
+++ b/data/iphone-java/HelloJava.app/icon.png
Binary files differ
diff --git a/data/iphone-java/HelloJava.app/start.wav b/data/iphone-java/HelloJava.app/start.wav
new file mode 100644
index 000000000..91a65a3f5
--- /dev/null
+++ b/data/iphone-java/HelloJava.app/start.wav
Binary files differ