From 5f88bb5700e49555f7e4a59ecee7e308c4b068e0 Mon Sep 17 00:00:00 2001 From: Jay Freeman Date: Tue, 22 Jan 2008 14:21:14 +0000 Subject: 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 --- data/iphone-java/HelloJava.app/Default.png | Bin 0 -> 590265 bytes data/iphone-java/HelloJava.app/HelloJava | 4 + data/iphone-java/HelloJava.app/HelloJava.java | 149 ++++++++++++++++++++++++ data/iphone-java/HelloJava.app/Info.plist | 34 ++++++ data/iphone-java/HelloJava.app/Java | 1 + data/iphone-java/HelloJava.app/icon.png | Bin 0 -> 14559 bytes data/iphone-java/HelloJava.app/start.wav | Bin 0 -> 80856 bytes data/iphone-java/HelloScript.app/Default.png | Bin 0 -> 590265 bytes data/iphone-java/HelloScript.app/HelloScript | 5 + data/iphone-java/HelloScript.app/HelloScript.js | 115 ++++++++++++++++++ data/iphone-java/HelloScript.app/Info.plist | 34 ++++++ data/iphone-java/HelloScript.app/Java | 1 + data/iphone-java/HelloScript.app/icon.png | Bin 0 -> 2925 bytes data/iphone-java/HelloScript.app/start.wav | Bin 0 -> 80856 bytes data/iphone-java/_metadata/description | 2 + data/iphone-java/_metadata/javasqlite.dep | 1 + data/iphone-java/_metadata/license | 1 + data/iphone-java/_metadata/maintainer | 1 + data/iphone-java/_metadata/priority | 1 + data/iphone-java/_metadata/rhino.dep | 1 + data/iphone-java/_metadata/section | 1 + data/iphone-java/_metadata/uicaboodle.dep | 1 + data/iphone-java/_metadata/version | 1 + data/iphone-java/make.sh | 4 + data/jocstrap/_metadata/apr.dep | 1 + data/jocstrap/_metadata/version | 2 +- data/jocstrap/jocstrap.jar | Bin 1422161 -> 1496912 bytes data/jocstrap/libjocstrap.jnilib | Bin 74268 -> 74408 bytes 28 files changed, 359 insertions(+), 1 deletion(-) create mode 100644 data/iphone-java/HelloJava.app/Default.png create mode 100755 data/iphone-java/HelloJava.app/HelloJava create mode 100644 data/iphone-java/HelloJava.app/HelloJava.java create mode 100644 data/iphone-java/HelloJava.app/Info.plist create mode 120000 data/iphone-java/HelloJava.app/Java create mode 100644 data/iphone-java/HelloJava.app/icon.png create mode 100644 data/iphone-java/HelloJava.app/start.wav create mode 100644 data/iphone-java/HelloScript.app/Default.png create mode 100755 data/iphone-java/HelloScript.app/HelloScript create mode 100644 data/iphone-java/HelloScript.app/HelloScript.js create mode 100644 data/iphone-java/HelloScript.app/Info.plist create mode 120000 data/iphone-java/HelloScript.app/Java create mode 100644 data/iphone-java/HelloScript.app/icon.png create mode 100644 data/iphone-java/HelloScript.app/start.wav create mode 100644 data/iphone-java/_metadata/description create mode 120000 data/iphone-java/_metadata/javasqlite.dep create mode 120000 data/iphone-java/_metadata/license create mode 120000 data/iphone-java/_metadata/maintainer create mode 100644 data/iphone-java/_metadata/priority create mode 120000 data/iphone-java/_metadata/rhino.dep create mode 100644 data/iphone-java/_metadata/section create mode 120000 data/iphone-java/_metadata/uicaboodle.dep create mode 100644 data/iphone-java/_metadata/version create mode 100644 data/iphone-java/make.sh create mode 120000 data/jocstrap/_metadata/apr.dep (limited to 'data') 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 Binary files /dev/null and b/data/iphone-java/HelloJava.app/Default.png 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 contacts_ = new ArrayList(); +private ArrayList
sections_ = new ArrayList
(); + +@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 @@ + + + + + + CFBundleDevelopmentRegion + en + + CFBundleExecutable + HelloJava + + CFBundleIdentifier + com.saurik.HelloJava + + CFBundleInfoDictionaryVersion + 6.0 + + CFBundleName + HelloJava + + CFBundlePackageType + APPL + + CFBundleShortVersionString + 1.0 + + CFBundleSignature + ???? + + CFBundleVersion + 1.0 + + + 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 Binary files /dev/null and b/data/iphone-java/HelloJava.app/icon.png 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 Binary files /dev/null and b/data/iphone-java/HelloJava.app/start.wav differ diff --git a/data/iphone-java/HelloScript.app/Default.png b/data/iphone-java/HelloScript.app/Default.png new file mode 100644 index 000000000..f475d4db7 Binary files /dev/null and b/data/iphone-java/HelloScript.app/Default.png differ diff --git a/data/iphone-java/HelloScript.app/HelloScript b/data/iphone-java/HelloScript.app/HelloScript new file mode 100755 index 000000000..2b4460d41 --- /dev/null +++ b/data/iphone-java/HelloScript.app/HelloScript @@ -0,0 +1,5 @@ +#!/bin/bash +# XXX: -Xbootclasspath is used as JamVM runs 3x faster +# XXX: Java is symlink'd to here so the home button works +cd "$(dirname "$0")" +exec "$(dirname "$0")"/Java -Xmx8M -Xss256K -Xbootclasspath/p:/usr/share/java/jocstrap.jar:/usr/share/java/js.jar -cp /usr/share/java/sqlite.jar:/usr/share/java/uicaboodle.jar com.saurik.uicaboodle.Main com.saurik.uicaboodle.ScriptApplication HelloScript.js "$@" diff --git a/data/iphone-java/HelloScript.app/HelloScript.js b/data/iphone-java/HelloScript.app/HelloScript.js new file mode 100644 index 000000000..976868ec2 --- /dev/null +++ b/data/iphone-java/HelloScript.app/HelloScript.js @@ -0,0 +1,115 @@ +var println = function(s) { java.lang.System.out.println(s); } +var sql = Packages.SQLite; + +var contacts = []; +var sections = []; + +var ab = new sql.Database(); +ab.open("/var/root/Library/AddressBook/AddressBook.sqlitedb", 0666); try { + var st = ab.prepare("select first, last from ABPerson where first is not null order by first"); try { + while (st.step()) + contacts.push({ + first: st.column_string(0), + last: st.column_string(1), + cell: null + }); + } finally { st.close(); } +} finally { ab.close(); } + +function getName(contact) { + var name = contact.first; + if (contact.last != null) + name += " " + contact.last; + return name; +} + +var outer = obc.UIHardware.fullScreenApplicationContentRect(); +var inner = outer.clone(); +inner.origin.x = inner.origin.y = 0; + +var window = new obc.UIWindow().initWithContentRect$(inner); +window.orderFront$(application); +window.makeKey$(application); +window._setHidden$(NO); + +var navsize = obc.UINavigationBar().defaultSize(); +var navbar = new obc.UINavigationBar().initWithFrame$(new obc.CGRect(0, 0, inner.size.width, navsize.height)); +navbar.setBarStyle$(1); +navbar.showButtonsWithLeftTitle$rightTitle$leftBack$("Run GC", null, YES); + +navbar.setDelegate$({ + navigationBar$buttonClicked$: function(navbar, button) { + Packages.java.lang.Runtime.getRuntime().gc(); + } +}); + +var navitem = new obc.UINavigationItem().initWithTitle$("Contact List"); +navbar.pushNavigationItem$(navitem); + +var letter = null; +for (var i = 0; i != contacts.length; ++i) { + var name = getName(contacts[i]); + var now = name[0].toUpperCase(); + if (letter != now) { + letter = now; + sections.push({ + row: i, + title: now + }); + } +} + +var seclist = new obc.UISectionList().initWithFrame$(new obc.CGRect(0, navsize.height, inner.size.width, inner.size.height - navsize.height)); + +seclist.setDataSource$({ + numberOfSectionsInSectionList$: function(list) { + return sections.length; + }, + + sectionList$titleForSection$: function(list, section) { + return sections[section].title; + }, + + sectionList$rowForSection$: function(list, section) { + return sections[section].row; + }, + + numberOfRowsInTable$: function(table) { + return contacts.length; + }, + + table$cellForRow$column$: function(table, row, col) { + var contact = contacts[row]; + if (contact.cell != null) + return contact.cell; + var cell = new obc.UIImageAndTextTableCell().init(); + cell.setTitle$(getName(contact)); + contact.cell = cell; + return cell; + } +}); + +seclist.reloadData(); + +var col = new obc.UITableColumn().initWithTitle$identifier$width$("Name", "name", 320); + +var table = seclist.table(); +table.setSeparatorStyle$(1); +table.addTableColumn$(col); + +var view = new obc.UIView().initWithFrame$(inner); +view.addSubview$(navbar); +view.addSubview$(seclist); + +window.setContentView$(view); + +/* XXX: this works around a VM bug and will be removed */ +java.lang.Class.forName("osx.Celestial"); + +var controller = new obc.AVController().init(); +var wavfile = obc.NSBundle().mainBundle().pathForResource$ofType$("start", "wav") +var wavitem = new obc.AVItem().initWithPath$error$(wavfile, null); +wavitem.setVolume$(100); +controller.setCurrentItem$(wavitem); +controller.setCurrentTime$(0); +controller.play$(null); diff --git a/data/iphone-java/HelloScript.app/Info.plist b/data/iphone-java/HelloScript.app/Info.plist new file mode 100644 index 000000000..75b62f58e --- /dev/null +++ b/data/iphone-java/HelloScript.app/Info.plist @@ -0,0 +1,34 @@ + + + + + + CFBundleDevelopmentRegion + en + + CFBundleExecutable + HelloScript + + CFBundleIdentifier + com.saurik.HelloScript + + CFBundleInfoDictionaryVersion + 6.0 + + CFBundleName + HelloScript + + CFBundlePackageType + APPL + + CFBundleShortVersionString + 1.0 + + CFBundleSignature + ???? + + CFBundleVersion + 1.0 + + + diff --git a/data/iphone-java/HelloScript.app/Java b/data/iphone-java/HelloScript.app/Java new file mode 120000 index 000000000..33b0c18fb --- /dev/null +++ b/data/iphone-java/HelloScript.app/Java @@ -0,0 +1 @@ +/usr/bin/java \ No newline at end of file diff --git a/data/iphone-java/HelloScript.app/icon.png b/data/iphone-java/HelloScript.app/icon.png new file mode 100644 index 000000000..306d0d729 Binary files /dev/null and b/data/iphone-java/HelloScript.app/icon.png differ diff --git a/data/iphone-java/HelloScript.app/start.wav b/data/iphone-java/HelloScript.app/start.wav new file mode 100644 index 000000000..91a65a3f5 Binary files /dev/null and b/data/iphone-java/HelloScript.app/start.wav differ diff --git a/data/iphone-java/_metadata/description b/data/iphone-java/_metadata/description new file mode 100644 index 000000000..005d9a0c9 --- /dev/null +++ b/data/iphone-java/_metadata/description @@ -0,0 +1,2 @@ +this package isn't described yet +This package, which I'm certain is incredibly interesting, has yet to be described. This is probably because Jay has spent days getting all kinds of bookkeeping issues, like copyright notifications, all in their correct places, and descriptions just aren't the most important thing he could be working on. If this is a problem, please come back later. diff --git a/data/iphone-java/_metadata/javasqlite.dep b/data/iphone-java/_metadata/javasqlite.dep new file mode 120000 index 000000000..eef2c7782 --- /dev/null +++ b/data/iphone-java/_metadata/javasqlite.dep @@ -0,0 +1 @@ +../../javasqlite \ No newline at end of file diff --git a/data/iphone-java/_metadata/license b/data/iphone-java/_metadata/license new file mode 120000 index 000000000..b9c4e3684 --- /dev/null +++ b/data/iphone-java/_metadata/license @@ -0,0 +1 @@ +../../../licenses/menes \ No newline at end of file diff --git a/data/iphone-java/_metadata/maintainer b/data/iphone-java/_metadata/maintainer new file mode 120000 index 000000000..0fa66e077 --- /dev/null +++ b/data/iphone-java/_metadata/maintainer @@ -0,0 +1 @@ +../../../people/saurik \ No newline at end of file diff --git a/data/iphone-java/_metadata/priority b/data/iphone-java/_metadata/priority new file mode 100644 index 000000000..134d9bc32 --- /dev/null +++ b/data/iphone-java/_metadata/priority @@ -0,0 +1 @@ +optional diff --git a/data/iphone-java/_metadata/rhino.dep b/data/iphone-java/_metadata/rhino.dep new file mode 120000 index 000000000..533bec3f1 --- /dev/null +++ b/data/iphone-java/_metadata/rhino.dep @@ -0,0 +1 @@ +../../rhino \ No newline at end of file diff --git a/data/iphone-java/_metadata/section b/data/iphone-java/_metadata/section new file mode 100644 index 000000000..463a353df --- /dev/null +++ b/data/iphone-java/_metadata/section @@ -0,0 +1 @@ +programming diff --git a/data/iphone-java/_metadata/uicaboodle.dep b/data/iphone-java/_metadata/uicaboodle.dep new file mode 120000 index 000000000..4ebb39b67 --- /dev/null +++ b/data/iphone-java/_metadata/uicaboodle.dep @@ -0,0 +1 @@ +../../uicaboodle \ No newline at end of file diff --git a/data/iphone-java/_metadata/version b/data/iphone-java/_metadata/version new file mode 100644 index 000000000..6d4f3b8cc --- /dev/null +++ b/data/iphone-java/_metadata/version @@ -0,0 +1 @@ +1.0.2274 diff --git a/data/iphone-java/make.sh b/data/iphone-java/make.sh new file mode 100644 index 000000000..0f55e5d1d --- /dev/null +++ b/data/iphone-java/make.sh @@ -0,0 +1,4 @@ +pkg: mkdir /Applications +javac -source 1.5 -d . -cp "$(PKG_DATA_ jocstrap)/jocstrap.jar:$(PKG_WORK_ javasqlite)/javasqlite-20071108/sqlite.jar" "${PKG_DATA}/HelloJava.app/HelloJava.java" +pkg: cp -a %/Hello{Java,Script}.app /Applications +cp -a *.class "${PKG_DEST}/Applications/HelloJava.app" diff --git a/data/jocstrap/_metadata/apr.dep b/data/jocstrap/_metadata/apr.dep new file mode 120000 index 000000000..a2d8d092f --- /dev/null +++ b/data/jocstrap/_metadata/apr.dep @@ -0,0 +1 @@ +../../apr \ No newline at end of file diff --git a/data/jocstrap/_metadata/version b/data/jocstrap/_metadata/version index 6d4f3b8cc..090a2a19a 100644 --- a/data/jocstrap/_metadata/version +++ b/data/jocstrap/_metadata/version @@ -1 +1 @@ -1.0.2274 +1.0.2280 diff --git a/data/jocstrap/jocstrap.jar b/data/jocstrap/jocstrap.jar index 1a84dc587..74f069d93 100644 Binary files a/data/jocstrap/jocstrap.jar and b/data/jocstrap/jocstrap.jar differ diff --git a/data/jocstrap/libjocstrap.jnilib b/data/jocstrap/libjocstrap.jnilib index 596e233b0..ba0f4b2b0 100755 Binary files a/data/jocstrap/libjocstrap.jnilib and b/data/jocstrap/libjocstrap.jnilib differ -- cgit v1.2.3