diff options
Diffstat (limited to 'data/iphone-java/HelloJava.app')
-rw-r--r-- | data/iphone-java/HelloJava.app/Default.png | bin | 0 -> 590265 bytes | |||
-rwxr-xr-x | data/iphone-java/HelloJava.app/HelloJava | 4 | ||||
-rw-r--r-- | data/iphone-java/HelloJava.app/HelloJava.java | 149 | ||||
-rw-r--r-- | data/iphone-java/HelloJava.app/Info.plist | 34 | ||||
l--------- | data/iphone-java/HelloJava.app/Java | 1 | ||||
-rw-r--r-- | data/iphone-java/HelloJava.app/icon.png | bin | 0 -> 14559 bytes | |||
-rw-r--r-- | data/iphone-java/HelloJava.app/start.wav | bin | 0 -> 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 Binary files differnew file mode 100644 index 000000000..f475d4db7 --- /dev/null +++ b/data/iphone-java/HelloJava.app/Default.png 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 Binary files differnew file mode 100644 index 000000000..09b57dc6c --- /dev/null +++ b/data/iphone-java/HelloJava.app/icon.png diff --git a/data/iphone-java/HelloJava.app/start.wav b/data/iphone-java/HelloJava.app/start.wav Binary files differnew file mode 100644 index 000000000..91a65a3f5 --- /dev/null +++ b/data/iphone-java/HelloJava.app/start.wav |