remi-andrake 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/LICENSE +22 -0
- data/README.markdown +3 -0
- data/Rakefile +57 -0
- data/examples/andrake/HelloAndroid/HelloAndroid.java +22 -0
- data/examples/andrake/HelloAndroid/init.rb +44 -0
- data/examples/andrake/HelloAndroid/layout/main.xml +13 -0
- data/examples/android/BasicUI/AndroidManifest.xml +20 -0
- data/examples/android/BasicUI/build.xml +269 -0
- data/examples/android/BasicUI/reinstall-and-debug-on-default-device +6 -0
- data/examples/android/BasicUI/reinstall-and-run-on-default-device +6 -0
- data/examples/android/BasicUI/res/drawable/icon.png +0 -0
- data/examples/android/BasicUI/res/layout/main.xml +23 -0
- data/examples/android/BasicUI/res/layout/result.xml +12 -0
- data/examples/android/BasicUI/res/values/colors.xml +10 -0
- data/examples/android/BasicUI/res/values/strings.xml +6 -0
- data/examples/android/BasicUI/src/com/android/basicui/AnotherView.java +39 -0
- data/examples/android/BasicUI/src/com/android/basicui/BasicUI.java +102 -0
- data/examples/android/BasicUI/src/com/android/basicui/R.java +36 -0
- data/examples/android/BasicUI/src/com/android/basicui/UiResult.java +20 -0
- data/examples/android/COPYING +1 -0
- data/examples/android/HelloAndroid/AndroidManifest.xml +15 -0
- data/examples/android/HelloAndroid/build.xml +269 -0
- data/examples/android/HelloAndroid/res/drawable/icon.png +0 -0
- data/examples/android/HelloAndroid/res/layout/main.xml +12 -0
- data/examples/android/HelloAndroid/res/values/strings.xml +5 -0
- data/examples/android/HelloAndroid/src/com/android/hello/HelloAndroid.java +16 -0
- data/examples/android/HelloAndroid/src/com/android/hello/R.java +23 -0
- data/examples/android/LICENSE +1 -0
- data/examples/android/LolcatBuilder/AndroidManifest.xml +32 -0
- data/examples/android/LolcatBuilder/README.txt +90 -0
- data/examples/android/LolcatBuilder/build.xml +269 -0
- data/examples/android/LolcatBuilder/res/drawable/app_icon.png +0 -0
- data/examples/android/LolcatBuilder/res/drawable/photo_border.9.png +0 -0
- data/examples/android/LolcatBuilder/res/layout-land/lolcat_activity.xml +91 -0
- data/examples/android/LolcatBuilder/res/layout/lolcat_activity.xml +90 -0
- data/examples/android/LolcatBuilder/res/layout/lolcat_caption_dialog.xml +68 -0
- data/examples/android/LolcatBuilder/res/values/strings.xml +45 -0
- data/examples/android/LolcatBuilder/src/com/android/lolcat/LolcatActivity.java +808 -0
- data/examples/android/LolcatBuilder/src/com/android/lolcat/LolcatView.java +638 -0
- data/examples/android/LolcatBuilder/src/com/android/lolcat/R.java +60 -0
- data/examples/android/README.markdown +9 -0
- data/examples/android/Translate/AndroidManifest.xml +35 -0
- data/examples/android/Translate/CHANGELOG +9 -0
- data/examples/android/Translate/README +13 -0
- data/examples/android/Translate/TODO +1 -0
- data/examples/android/Translate/build.xml +269 -0
- data/examples/android/Translate/res/drawable/ad.png +0 -0
- data/examples/android/Translate/res/drawable/ae.png +0 -0
- data/examples/android/Translate/res/drawable/af.png +0 -0
- data/examples/android/Translate/res/drawable/ag.png +0 -0
- data/examples/android/Translate/res/drawable/ai.png +0 -0
- data/examples/android/Translate/res/drawable/al.png +0 -0
- data/examples/android/Translate/res/drawable/am.png +0 -0
- data/examples/android/Translate/res/drawable/an.png +0 -0
- data/examples/android/Translate/res/drawable/ao.png +0 -0
- data/examples/android/Translate/res/drawable/ar.png +0 -0
- data/examples/android/Translate/res/drawable/as.png +0 -0
- data/examples/android/Translate/res/drawable/at.png +0 -0
- data/examples/android/Translate/res/drawable/au.png +0 -0
- data/examples/android/Translate/res/drawable/aw.png +0 -0
- data/examples/android/Translate/res/drawable/ax.png +0 -0
- data/examples/android/Translate/res/drawable/az.png +0 -0
- data/examples/android/Translate/res/drawable/ba.png +0 -0
- data/examples/android/Translate/res/drawable/babelfish.png +0 -0
- data/examples/android/Translate/res/drawable/bb.png +0 -0
- data/examples/android/Translate/res/drawable/bd.png +0 -0
- data/examples/android/Translate/res/drawable/be.png +0 -0
- data/examples/android/Translate/res/drawable/bf.png +0 -0
- data/examples/android/Translate/res/drawable/bg.png +0 -0
- data/examples/android/Translate/res/drawable/bh.png +0 -0
- data/examples/android/Translate/res/drawable/bi.png +0 -0
- data/examples/android/Translate/res/drawable/bj.png +0 -0
- data/examples/android/Translate/res/drawable/bm.png +0 -0
- data/examples/android/Translate/res/drawable/bn.png +0 -0
- data/examples/android/Translate/res/drawable/bo.png +0 -0
- data/examples/android/Translate/res/drawable/br.png +0 -0
- data/examples/android/Translate/res/drawable/bs.png +0 -0
- data/examples/android/Translate/res/drawable/bt.png +0 -0
- data/examples/android/Translate/res/drawable/bv.png +0 -0
- data/examples/android/Translate/res/drawable/bw.png +0 -0
- data/examples/android/Translate/res/drawable/by.png +0 -0
- data/examples/android/Translate/res/drawable/bz.png +0 -0
- data/examples/android/Translate/res/drawable/ca.png +0 -0
- data/examples/android/Translate/res/drawable/catalonia.png +0 -0
- data/examples/android/Translate/res/drawable/cc.png +0 -0
- data/examples/android/Translate/res/drawable/cd.png +0 -0
- data/examples/android/Translate/res/drawable/cf.png +0 -0
- data/examples/android/Translate/res/drawable/cg.png +0 -0
- data/examples/android/Translate/res/drawable/ch.png +0 -0
- data/examples/android/Translate/res/drawable/ci.png +0 -0
- data/examples/android/Translate/res/drawable/ck.png +0 -0
- data/examples/android/Translate/res/drawable/cl.png +0 -0
- data/examples/android/Translate/res/drawable/cm.png +0 -0
- data/examples/android/Translate/res/drawable/cn.png +0 -0
- data/examples/android/Translate/res/drawable/co.png +0 -0
- data/examples/android/Translate/res/drawable/cr.png +0 -0
- data/examples/android/Translate/res/drawable/cs.png +0 -0
- data/examples/android/Translate/res/drawable/cu.png +0 -0
- data/examples/android/Translate/res/drawable/cv.png +0 -0
- data/examples/android/Translate/res/drawable/cx.png +0 -0
- data/examples/android/Translate/res/drawable/cy.png +0 -0
- data/examples/android/Translate/res/drawable/cz.png +0 -0
- data/examples/android/Translate/res/drawable/de.png +0 -0
- data/examples/android/Translate/res/drawable/dj.png +0 -0
- data/examples/android/Translate/res/drawable/dk.png +0 -0
- data/examples/android/Translate/res/drawable/dm.png +0 -0
- data/examples/android/Translate/res/drawable/dz.png +0 -0
- data/examples/android/Translate/res/drawable/ec.png +0 -0
- data/examples/android/Translate/res/drawable/ee.png +0 -0
- data/examples/android/Translate/res/drawable/eg.png +0 -0
- data/examples/android/Translate/res/drawable/eh.png +0 -0
- data/examples/android/Translate/res/drawable/england.png +0 -0
- data/examples/android/Translate/res/drawable/er.png +0 -0
- data/examples/android/Translate/res/drawable/es.png +0 -0
- data/examples/android/Translate/res/drawable/et.png +0 -0
- data/examples/android/Translate/res/drawable/europeanunion.png +0 -0
- data/examples/android/Translate/res/drawable/fam.png +0 -0
- data/examples/android/Translate/res/drawable/fi.png +0 -0
- data/examples/android/Translate/res/drawable/fj.png +0 -0
- data/examples/android/Translate/res/drawable/fk.png +0 -0
- data/examples/android/Translate/res/drawable/fm.png +0 -0
- data/examples/android/Translate/res/drawable/fo.png +0 -0
- data/examples/android/Translate/res/drawable/fr.png +0 -0
- data/examples/android/Translate/res/drawable/ga.png +0 -0
- data/examples/android/Translate/res/drawable/gb.png +0 -0
- data/examples/android/Translate/res/drawable/gd.png +0 -0
- data/examples/android/Translate/res/drawable/ge.png +0 -0
- data/examples/android/Translate/res/drawable/gf.png +0 -0
- data/examples/android/Translate/res/drawable/gh.png +0 -0
- data/examples/android/Translate/res/drawable/gi.png +0 -0
- data/examples/android/Translate/res/drawable/gl.png +0 -0
- data/examples/android/Translate/res/drawable/gm.png +0 -0
- data/examples/android/Translate/res/drawable/gn.png +0 -0
- data/examples/android/Translate/res/drawable/gp.png +0 -0
- data/examples/android/Translate/res/drawable/gq.png +0 -0
- data/examples/android/Translate/res/drawable/gr.png +0 -0
- data/examples/android/Translate/res/drawable/gs.png +0 -0
- data/examples/android/Translate/res/drawable/gt.png +0 -0
- data/examples/android/Translate/res/drawable/gu.png +0 -0
- data/examples/android/Translate/res/drawable/gw.png +0 -0
- data/examples/android/Translate/res/drawable/gy.png +0 -0
- data/examples/android/Translate/res/drawable/hk.png +0 -0
- data/examples/android/Translate/res/drawable/hm.png +0 -0
- data/examples/android/Translate/res/drawable/hn.png +0 -0
- data/examples/android/Translate/res/drawable/hr.png +0 -0
- data/examples/android/Translate/res/drawable/ht.png +0 -0
- data/examples/android/Translate/res/drawable/hu.png +0 -0
- data/examples/android/Translate/res/drawable/id.png +0 -0
- data/examples/android/Translate/res/drawable/ie.png +0 -0
- data/examples/android/Translate/res/drawable/il.png +0 -0
- data/examples/android/Translate/res/drawable/in.png +0 -0
- data/examples/android/Translate/res/drawable/io.png +0 -0
- data/examples/android/Translate/res/drawable/iq.png +0 -0
- data/examples/android/Translate/res/drawable/ir.png +0 -0
- data/examples/android/Translate/res/drawable/is.png +0 -0
- data/examples/android/Translate/res/drawable/it.png +0 -0
- data/examples/android/Translate/res/drawable/jm.png +0 -0
- data/examples/android/Translate/res/drawable/jo.png +0 -0
- data/examples/android/Translate/res/drawable/jp.png +0 -0
- data/examples/android/Translate/res/drawable/ke.png +0 -0
- data/examples/android/Translate/res/drawable/kg.png +0 -0
- data/examples/android/Translate/res/drawable/kh.png +0 -0
- data/examples/android/Translate/res/drawable/ki.png +0 -0
- data/examples/android/Translate/res/drawable/km.png +0 -0
- data/examples/android/Translate/res/drawable/kn.png +0 -0
- data/examples/android/Translate/res/drawable/kp.png +0 -0
- data/examples/android/Translate/res/drawable/kr.png +0 -0
- data/examples/android/Translate/res/drawable/kw.png +0 -0
- data/examples/android/Translate/res/drawable/ky.png +0 -0
- data/examples/android/Translate/res/drawable/kz.png +0 -0
- data/examples/android/Translate/res/drawable/la.png +0 -0
- data/examples/android/Translate/res/drawable/lb.png +0 -0
- data/examples/android/Translate/res/drawable/lc.png +0 -0
- data/examples/android/Translate/res/drawable/li.png +0 -0
- data/examples/android/Translate/res/drawable/lk.png +0 -0
- data/examples/android/Translate/res/drawable/lr.png +0 -0
- data/examples/android/Translate/res/drawable/ls.png +0 -0
- data/examples/android/Translate/res/drawable/lt.png +0 -0
- data/examples/android/Translate/res/drawable/lu.png +0 -0
- data/examples/android/Translate/res/drawable/lv.png +0 -0
- data/examples/android/Translate/res/drawable/ly.png +0 -0
- data/examples/android/Translate/res/drawable/ma.png +0 -0
- data/examples/android/Translate/res/drawable/mc.png +0 -0
- data/examples/android/Translate/res/drawable/md.png +0 -0
- data/examples/android/Translate/res/drawable/me.png +0 -0
- data/examples/android/Translate/res/drawable/mg.png +0 -0
- data/examples/android/Translate/res/drawable/mh.png +0 -0
- data/examples/android/Translate/res/drawable/mk.png +0 -0
- data/examples/android/Translate/res/drawable/ml.png +0 -0
- data/examples/android/Translate/res/drawable/mm.png +0 -0
- data/examples/android/Translate/res/drawable/mn.png +0 -0
- data/examples/android/Translate/res/drawable/mo.png +0 -0
- data/examples/android/Translate/res/drawable/mp.png +0 -0
- data/examples/android/Translate/res/drawable/mq.png +0 -0
- data/examples/android/Translate/res/drawable/mr.png +0 -0
- data/examples/android/Translate/res/drawable/ms.png +0 -0
- data/examples/android/Translate/res/drawable/mt.png +0 -0
- data/examples/android/Translate/res/drawable/mu.png +0 -0
- data/examples/android/Translate/res/drawable/mv.png +0 -0
- data/examples/android/Translate/res/drawable/mw.png +0 -0
- data/examples/android/Translate/res/drawable/mx.png +0 -0
- data/examples/android/Translate/res/drawable/my.png +0 -0
- data/examples/android/Translate/res/drawable/mz.png +0 -0
- data/examples/android/Translate/res/drawable/na.png +0 -0
- data/examples/android/Translate/res/drawable/nc.png +0 -0
- data/examples/android/Translate/res/drawable/ne.png +0 -0
- data/examples/android/Translate/res/drawable/nf.png +0 -0
- data/examples/android/Translate/res/drawable/ng.png +0 -0
- data/examples/android/Translate/res/drawable/ni.png +0 -0
- data/examples/android/Translate/res/drawable/nl.png +0 -0
- data/examples/android/Translate/res/drawable/no.png +0 -0
- data/examples/android/Translate/res/drawable/np.png +0 -0
- data/examples/android/Translate/res/drawable/nr.png +0 -0
- data/examples/android/Translate/res/drawable/nu.png +0 -0
- data/examples/android/Translate/res/drawable/nz.png +0 -0
- data/examples/android/Translate/res/drawable/om.png +0 -0
- data/examples/android/Translate/res/drawable/pa.png +0 -0
- data/examples/android/Translate/res/drawable/pe.png +0 -0
- data/examples/android/Translate/res/drawable/pf.png +0 -0
- data/examples/android/Translate/res/drawable/pg.png +0 -0
- data/examples/android/Translate/res/drawable/ph.png +0 -0
- data/examples/android/Translate/res/drawable/pk.png +0 -0
- data/examples/android/Translate/res/drawable/pl.png +0 -0
- data/examples/android/Translate/res/drawable/pm.png +0 -0
- data/examples/android/Translate/res/drawable/pn.png +0 -0
- data/examples/android/Translate/res/drawable/pr.png +0 -0
- data/examples/android/Translate/res/drawable/ps.png +0 -0
- data/examples/android/Translate/res/drawable/pt.png +0 -0
- data/examples/android/Translate/res/drawable/pw.png +0 -0
- data/examples/android/Translate/res/drawable/py.png +0 -0
- data/examples/android/Translate/res/drawable/qa.png +0 -0
- data/examples/android/Translate/res/drawable/re.png +0 -0
- data/examples/android/Translate/res/drawable/readme.txt +9 -0
- data/examples/android/Translate/res/drawable/ro.png +0 -0
- data/examples/android/Translate/res/drawable/rs.png +0 -0
- data/examples/android/Translate/res/drawable/ru.png +0 -0
- data/examples/android/Translate/res/drawable/rw.png +0 -0
- data/examples/android/Translate/res/drawable/sa.png +0 -0
- data/examples/android/Translate/res/drawable/sb.png +0 -0
- data/examples/android/Translate/res/drawable/sc.png +0 -0
- data/examples/android/Translate/res/drawable/scotland.png +0 -0
- data/examples/android/Translate/res/drawable/sd.png +0 -0
- data/examples/android/Translate/res/drawable/se.png +0 -0
- data/examples/android/Translate/res/drawable/sg.png +0 -0
- data/examples/android/Translate/res/drawable/sh.png +0 -0
- data/examples/android/Translate/res/drawable/si.png +0 -0
- data/examples/android/Translate/res/drawable/sj.png +0 -0
- data/examples/android/Translate/res/drawable/sk.png +0 -0
- data/examples/android/Translate/res/drawable/sl.png +0 -0
- data/examples/android/Translate/res/drawable/sm.png +0 -0
- data/examples/android/Translate/res/drawable/sn.png +0 -0
- data/examples/android/Translate/res/drawable/so.png +0 -0
- data/examples/android/Translate/res/drawable/sr.png +0 -0
- data/examples/android/Translate/res/drawable/st.png +0 -0
- data/examples/android/Translate/res/drawable/sv.png +0 -0
- data/examples/android/Translate/res/drawable/sy.png +0 -0
- data/examples/android/Translate/res/drawable/sz.png +0 -0
- data/examples/android/Translate/res/drawable/tc.png +0 -0
- data/examples/android/Translate/res/drawable/td.png +0 -0
- data/examples/android/Translate/res/drawable/tf.png +0 -0
- data/examples/android/Translate/res/drawable/tg.png +0 -0
- data/examples/android/Translate/res/drawable/th.png +0 -0
- data/examples/android/Translate/res/drawable/tj.png +0 -0
- data/examples/android/Translate/res/drawable/tk.png +0 -0
- data/examples/android/Translate/res/drawable/tl.png +0 -0
- data/examples/android/Translate/res/drawable/tm.png +0 -0
- data/examples/android/Translate/res/drawable/tn.png +0 -0
- data/examples/android/Translate/res/drawable/to.png +0 -0
- data/examples/android/Translate/res/drawable/tr.png +0 -0
- data/examples/android/Translate/res/drawable/tt.png +0 -0
- data/examples/android/Translate/res/drawable/tv.png +0 -0
- data/examples/android/Translate/res/drawable/tw.png +0 -0
- data/examples/android/Translate/res/drawable/tz.png +0 -0
- data/examples/android/Translate/res/drawable/ua.png +0 -0
- data/examples/android/Translate/res/drawable/ug.png +0 -0
- data/examples/android/Translate/res/drawable/um.png +0 -0
- data/examples/android/Translate/res/drawable/us.png +0 -0
- data/examples/android/Translate/res/drawable/uy.png +0 -0
- data/examples/android/Translate/res/drawable/uz.png +0 -0
- data/examples/android/Translate/res/drawable/va.png +0 -0
- data/examples/android/Translate/res/drawable/vc.png +0 -0
- data/examples/android/Translate/res/drawable/ve.png +0 -0
- data/examples/android/Translate/res/drawable/vg.png +0 -0
- data/examples/android/Translate/res/drawable/vi.png +0 -0
- data/examples/android/Translate/res/drawable/vn.png +0 -0
- data/examples/android/Translate/res/drawable/vu.png +0 -0
- data/examples/android/Translate/res/drawable/wales.png +0 -0
- data/examples/android/Translate/res/drawable/wf.png +0 -0
- data/examples/android/Translate/res/drawable/ws.png +0 -0
- data/examples/android/Translate/res/drawable/ye.png +0 -0
- data/examples/android/Translate/res/drawable/yt.png +0 -0
- data/examples/android/Translate/res/drawable/za.png +0 -0
- data/examples/android/Translate/res/drawable/zm.png +0 -0
- data/examples/android/Translate/res/drawable/zw.png +0 -0
- data/examples/android/Translate/res/layout/about_dialog.xml +15 -0
- data/examples/android/Translate/res/layout/history_activity.xml +21 -0
- data/examples/android/Translate/res/layout/history_record.xml +77 -0
- data/examples/android/Translate/res/layout/language_dialog.xml +30 -0
- data/examples/android/Translate/res/layout/language_entry.xml +25 -0
- data/examples/android/Translate/res/layout/main.xml +13 -0
- data/examples/android/Translate/res/layout/translate_activity.xml +114 -0
- data/examples/android/Translate/res/menu/history_activity_menu.xml +35 -0
- data/examples/android/Translate/res/menu/translate_activity_menu.xml +35 -0
- data/examples/android/Translate/res/raw/dictionary.txtgz +0 -0
- data/examples/android/Translate/res/values/strings.xml +50 -0
- data/examples/android/Translate/sign +11 -0
- data/examples/android/Translate/src/com/beust/android/translate/AboutDialog.java +39 -0
- data/examples/android/Translate/src/com/beust/android/translate/Entities.java +990 -0
- data/examples/android/Translate/src/com/beust/android/translate/History.java +164 -0
- data/examples/android/Translate/src/com/beust/android/translate/HistoryActivity.java +124 -0
- data/examples/android/Translate/src/com/beust/android/translate/HistoryRecord.java +83 -0
- data/examples/android/Translate/src/com/beust/android/translate/ITranslate.aidl +27 -0
- data/examples/android/Translate/src/com/beust/android/translate/ITranslate.java +139 -0
- data/examples/android/Translate/src/com/beust/android/translate/LanguageDialog.java +90 -0
- data/examples/android/Translate/src/com/beust/android/translate/Languages.java +220 -0
- data/examples/android/Translate/src/com/beust/android/translate/Lists.java +64 -0
- data/examples/android/Translate/src/com/beust/android/translate/Maps.java +33 -0
- data/examples/android/Translate/src/com/beust/android/translate/R.java +333 -0
- data/examples/android/Translate/src/com/beust/android/translate/Translate.java +117 -0
- data/examples/android/Translate/src/com/beust/android/translate/TranslateActivity.java +443 -0
- data/examples/android/Translate/src/com/beust/android/translate/TranslateService.java +63 -0
- data/examples/android/WikiNotes/AndroidManifest.xml +64 -0
- data/examples/android/WikiNotes/README.TXT +67 -0
- data/examples/android/WikiNotes/bin/WikiNotes.ap_ +0 -0
- data/examples/android/WikiNotes/build.xml +269 -0
- data/examples/android/WikiNotes/res/drawable/icon.png +0 -0
- data/examples/android/WikiNotes/res/drawable/icon_delete.png +0 -0
- data/examples/android/WikiNotes/res/drawable/icon_recent.png +0 -0
- data/examples/android/WikiNotes/res/drawable/icon_start.png +0 -0
- data/examples/android/WikiNotes/res/drawable/parchmentbase.png +0 -0
- data/examples/android/WikiNotes/res/layout/main.xml +33 -0
- data/examples/android/WikiNotes/res/layout/wiki_note_edit.xml +49 -0
- data/examples/android/WikiNotes/res/layout/wiki_search.xml +45 -0
- data/examples/android/WikiNotes/res/menu/notelist.xml +24 -0
- data/examples/android/WikiNotes/res/values/strings.xml +70 -0
- data/examples/android/WikiNotes/res/xml/searchable.xml +30 -0
- data/examples/android/WikiNotes/src/com/google/android/wikinotes/Eula.java +60 -0
- data/examples/android/WikiNotes/src/com/google/android/wikinotes/R.java +90 -0
- data/examples/android/WikiNotes/src/com/google/android/wikinotes/WikiActivityHelper.java +448 -0
- data/examples/android/WikiNotes/src/com/google/android/wikinotes/WikiNoteEditor.java +121 -0
- data/examples/android/WikiNotes/src/com/google/android/wikinotes/WikiNotes.java +282 -0
- data/examples/android/WikiNotes/src/com/google/android/wikinotes/WikiNotesList.java +159 -0
- data/examples/android/WikiNotes/src/com/google/android/wikinotes/db/WikiNote.java +100 -0
- data/examples/android/WikiNotes/src/com/google/android/wikinotes/db/WikiNotesProvider.java +331 -0
- data/examples/different_states_of_andrakeness/BasicUI_1/AndroidManifest.xml +20 -0
- data/examples/different_states_of_andrakeness/BasicUI_1/AnotherView.java +39 -0
- data/examples/different_states_of_andrakeness/BasicUI_1/BasicUI.java +102 -0
- data/examples/different_states_of_andrakeness/BasicUI_1/UiResult.java +20 -0
- data/examples/different_states_of_andrakeness/BasicUI_1/build.xml +269 -0
- data/examples/different_states_of_andrakeness/BasicUI_1/res/drawable/icon.png +0 -0
- data/examples/different_states_of_andrakeness/BasicUI_1/res/layout/main.xml +23 -0
- data/examples/different_states_of_andrakeness/BasicUI_1/res/layout/result.xml +12 -0
- data/examples/different_states_of_andrakeness/BasicUI_1/res/values/colors.xml +10 -0
- data/examples/different_states_of_andrakeness/BasicUI_1/res/values/strings.xml +6 -0
- data/examples/different_states_of_andrakeness/BasicUI_1/src/com/android/basicui/AnotherView.java +39 -0
- data/examples/different_states_of_andrakeness/BasicUI_1/src/com/android/basicui/BasicUI.java +102 -0
- data/examples/different_states_of_andrakeness/BasicUI_1/src/com/android/basicui/R.java +36 -0
- data/examples/different_states_of_andrakeness/BasicUI_1/src/com/android/basicui/UiResult.java +20 -0
- data/examples/different_states_of_andrakeness/BasicUI_2/AndroidManifest.xml +20 -0
- data/examples/different_states_of_andrakeness/BasicUI_2/build.xml +269 -0
- data/examples/different_states_of_andrakeness/BasicUI_2/reinstall-and-debug-on-default-device +6 -0
- data/examples/different_states_of_andrakeness/BasicUI_2/reinstall-and-run-on-default-device +6 -0
- data/examples/different_states_of_andrakeness/BasicUI_2/res/drawable/icon.png +0 -0
- data/examples/different_states_of_andrakeness/BasicUI_2/res/layout/main.xml +23 -0
- data/examples/different_states_of_andrakeness/BasicUI_2/res/layout/result.xml +12 -0
- data/examples/different_states_of_andrakeness/BasicUI_2/res/values/colors.xml +10 -0
- data/examples/different_states_of_andrakeness/BasicUI_2/res/values/strings.xml +6 -0
- data/examples/different_states_of_andrakeness/BasicUI_2/src/com/android/basicui/AnotherView.java +39 -0
- data/examples/different_states_of_andrakeness/BasicUI_2/src/com/android/basicui/BasicUI.java +102 -0
- data/examples/different_states_of_andrakeness/BasicUI_2/src/com/android/basicui/R.java +36 -0
- data/examples/different_states_of_andrakeness/BasicUI_2/src/com/android/basicui/UiResult.java +20 -0
- data/examples/different_states_of_andrakeness/BasicUI_3/AndroidManifest.xml +20 -0
- data/examples/different_states_of_andrakeness/BasicUI_3/app.css +4 -0
- data/examples/different_states_of_andrakeness/BasicUI_3/build.xml +269 -0
- data/examples/different_states_of_andrakeness/BasicUI_3/res/drawable/icon.png +0 -0
- data/examples/different_states_of_andrakeness/BasicUI_3/res/layout/main.xml +22 -0
- data/examples/different_states_of_andrakeness/BasicUI_3/res/layout/result.xml +12 -0
- data/examples/different_states_of_andrakeness/BasicUI_3/res/values/colors.xml +10 -0
- data/examples/different_states_of_andrakeness/BasicUI_3/res/values/strings.xml +6 -0
- data/examples/different_states_of_andrakeness/BasicUI_3/src/com/android/basicui/AnotherView.java +39 -0
- data/examples/different_states_of_andrakeness/BasicUI_3/src/com/android/basicui/BasicUI.java +102 -0
- data/examples/different_states_of_andrakeness/BasicUI_3/src/com/android/basicui/R.java +36 -0
- data/examples/different_states_of_andrakeness/BasicUI_3/src/com/android/basicui/UiResult.java +20 -0
- data/examples/different_states_of_andrakeness/BasicUI_4/AndroidManifest.xml +20 -0
- data/examples/different_states_of_andrakeness/BasicUI_4/app.sass +3 -0
- data/examples/different_states_of_andrakeness/BasicUI_4/build.xml +269 -0
- data/examples/different_states_of_andrakeness/BasicUI_4/res/drawable/icon.png +0 -0
- data/examples/different_states_of_andrakeness/BasicUI_4/res/layout/main.xml +22 -0
- data/examples/different_states_of_andrakeness/BasicUI_4/res/layout/result.xml +12 -0
- data/examples/different_states_of_andrakeness/BasicUI_4/res/values/colors.xml +10 -0
- data/examples/different_states_of_andrakeness/BasicUI_4/res/values/strings.xml +6 -0
- data/examples/different_states_of_andrakeness/BasicUI_4/src/com/android/basicui/AnotherView.java +39 -0
- data/examples/different_states_of_andrakeness/BasicUI_4/src/com/android/basicui/BasicUI.java +102 -0
- data/examples/different_states_of_andrakeness/BasicUI_4/src/com/android/basicui/R.java +36 -0
- data/examples/different_states_of_andrakeness/BasicUI_4/src/com/android/basicui/UiResult.java +20 -0
- data/examples/different_states_of_andrakeness/BasicUI_5/AndroidManifest.xml +20 -0
- data/examples/different_states_of_andrakeness/BasicUI_5/app.sass +3 -0
- data/examples/different_states_of_andrakeness/BasicUI_5/build.xml +269 -0
- data/examples/different_states_of_andrakeness/BasicUI_5/res/drawable/icon.png +0 -0
- data/examples/different_states_of_andrakeness/BasicUI_5/res/layout/main.xml +21 -0
- data/examples/different_states_of_andrakeness/BasicUI_5/res/layout/result.xml +12 -0
- data/examples/different_states_of_andrakeness/BasicUI_5/res/values/colors.xml +10 -0
- data/examples/different_states_of_andrakeness/BasicUI_5/res/values/strings.xml +6 -0
- data/examples/different_states_of_andrakeness/BasicUI_5/src/com/android/basicui/AnotherView.java +39 -0
- data/examples/different_states_of_andrakeness/BasicUI_5/src/com/android/basicui/BasicUI.java +102 -0
- data/examples/different_states_of_andrakeness/BasicUI_5/src/com/android/basicui/R.java +36 -0
- data/examples/different_states_of_andrakeness/BasicUI_5/src/com/android/basicui/UiResult.java +20 -0
- data/examples/different_states_of_andrakeness/BasicUI_6/AndroidManifest.xml +20 -0
- data/examples/different_states_of_andrakeness/BasicUI_6/app.sass +17 -0
- data/examples/different_states_of_andrakeness/BasicUI_6/build.xml +269 -0
- data/examples/different_states_of_andrakeness/BasicUI_6/res/drawable/icon.png +0 -0
- data/examples/different_states_of_andrakeness/BasicUI_6/res/layout/main.haml +4 -0
- data/examples/different_states_of_andrakeness/BasicUI_6/res/layout/result.xml +12 -0
- data/examples/different_states_of_andrakeness/BasicUI_6/res/values/colors.xml +10 -0
- data/examples/different_states_of_andrakeness/BasicUI_6/res/values/strings.xml +6 -0
- data/examples/different_states_of_andrakeness/BasicUI_6/src/com/android/basicui/AnotherView.java +39 -0
- data/examples/different_states_of_andrakeness/BasicUI_6/src/com/android/basicui/BasicUI.java +102 -0
- data/examples/different_states_of_andrakeness/BasicUI_6/src/com/android/basicui/R.java +36 -0
- data/examples/different_states_of_andrakeness/BasicUI_6/src/com/android/basicui/UiResult.java +20 -0
- data/examples/different_states_of_andrakeness/BasicUI_7/app.sass +17 -0
- data/examples/different_states_of_andrakeness/BasicUI_7/build.xml +269 -0
- data/examples/different_states_of_andrakeness/BasicUI_7/res/drawable/icon.png +0 -0
- data/examples/different_states_of_andrakeness/BasicUI_7/res/layout/main.haml +4 -0
- data/examples/different_states_of_andrakeness/BasicUI_7/res/layout/result.xml +12 -0
- data/examples/different_states_of_andrakeness/BasicUI_7/res/values/colors.xml +10 -0
- data/examples/different_states_of_andrakeness/BasicUI_7/res/values/strings.xml +6 -0
- data/examples/different_states_of_andrakeness/BasicUI_7/src/com/android/basicui/AnotherView.java +39 -0
- data/examples/different_states_of_andrakeness/BasicUI_7/src/com/android/basicui/BasicUI.java +102 -0
- data/examples/different_states_of_andrakeness/BasicUI_7/src/com/android/basicui/R.java +36 -0
- data/examples/different_states_of_andrakeness/BasicUI_7/src/com/android/basicui/UiResult.java +20 -0
- data/examples/different_states_of_andrakeness/BasicUI_8/app/activities/AnotherView.java +39 -0
- data/examples/different_states_of_andrakeness/BasicUI_8/app/activities/BasicUI.java +102 -0
- data/examples/different_states_of_andrakeness/BasicUI_8/app/activities/UiResult.java +20 -0
- data/examples/different_states_of_andrakeness/BasicUI_8/app/layouts/main.haml +4 -0
- data/examples/different_states_of_andrakeness/BasicUI_8/app/layouts/result.xml +12 -0
- data/examples/different_states_of_andrakeness/BasicUI_8/app/styles/app.sass +17 -0
- data/examples/different_states_of_andrakeness/BasicUI_8/init.rb +13 -0
- data/examples/different_states_of_andrakeness/BasicUI_8/res/drawable/icon.png +0 -0
- data/examples/more-apps/AnyCut/AndroidManifest.xml +58 -0
- data/examples/more-apps/AnyCut/NOTICE +190 -0
- data/examples/more-apps/AnyCut/res/drawable/app_icon.png +0 -0
- data/examples/more-apps/AnyCut/res/drawable/sym_action_call.png +0 -0
- data/examples/more-apps/AnyCut/res/drawable/sym_action_sms.png +0 -0
- data/examples/more-apps/AnyCut/res/layout/custom_shortcut_creator.xml +33 -0
- data/examples/more-apps/AnyCut/res/layout/front_door.xml +44 -0
- data/examples/more-apps/AnyCut/res/layout/list.xml +22 -0
- data/examples/more-apps/AnyCut/res/layout/shortcut_editor.xml +38 -0
- data/examples/more-apps/AnyCut/res/values/colors.xml +22 -0
- data/examples/more-apps/AnyCut/res/values/strings.xml +48 -0
- data/examples/more-apps/AnyCut/src/com/example/anycut/ActivityPickerActivity.java +171 -0
- data/examples/more-apps/AnyCut/src/com/example/anycut/CreateShortcutActivity.java +324 -0
- data/examples/more-apps/AnyCut/src/com/example/anycut/CustomShortcutCreatorActivity.java +83 -0
- data/examples/more-apps/AnyCut/src/com/example/anycut/FrontDoorActivity.java +75 -0
- data/examples/more-apps/AnyCut/src/com/example/anycut/ShortcutEditorDialog.java +171 -0
- data/examples/more-apps/AnyCut/src/com/google/android/photostream/UserTask.java +457 -0
- data/examples/more-apps/LolcatBuilder/AndroidManifest.xml +32 -0
- data/examples/more-apps/LolcatBuilder/README.txt +90 -0
- data/examples/more-apps/LolcatBuilder/build.xml +269 -0
- data/examples/more-apps/LolcatBuilder/res/drawable/app_icon.png +0 -0
- data/examples/more-apps/LolcatBuilder/res/drawable/photo_border.9.png +0 -0
- data/examples/more-apps/LolcatBuilder/res/layout-land/lolcat_activity.xml +91 -0
- data/examples/more-apps/LolcatBuilder/res/layout/lolcat_activity.xml +90 -0
- data/examples/more-apps/LolcatBuilder/res/layout/lolcat_caption_dialog.xml +68 -0
- data/examples/more-apps/LolcatBuilder/res/values/strings.xml +45 -0
- data/examples/more-apps/LolcatBuilder/src/com/android/lolcat/LolcatActivity.java +808 -0
- data/examples/more-apps/LolcatBuilder/src/com/android/lolcat/LolcatView.java +638 -0
- data/examples/more-apps/LolcatBuilder/src/com/android/lolcat/R.java +60 -0
- data/examples/simplegen/template-dir1/app/foo.xml._erb +1 -0
- data/examples/simplegen/template-dir1/dynamic_dirname/_%dynamic%_/foo +0 -0
- data/examples/simplegen/template-dir1/dynamic_filename/%dynamic%_file.rb.erb +1 -0
- data/examples/simplegen/template-dir1/many_dirs/many/dirs/hello.txt.erb +2 -0
- data/lib/andrake.rb +17 -0
- data/lib/andrake/activity.rb +32 -0
- data/lib/andrake/application.rb +202 -0
- data/lib/andrake/bin.rb +66 -0
- data/lib/andrake/hybrid.rb +87 -0
- data/lib/andrake/resource_manager.rb +42 -0
- data/lib/android.rb +21 -0
- data/lib/android/activity.rb +2 -0
- data/lib/android/application.rb +194 -0
- data/lib/android/bin.rb +75 -0
- data/lib/android/extensions.rb +9 -0
- data/lib/android/gen.rb +86 -0
- data/lib/android/javaclass.rb +26 -0
- data/lib/android/layout.rb +142 -0
- data/lib/javaclass.rb +50 -0
- data/lib/simplegen.rb +236 -0
- data/spec/andrake/basic_ui_spec.rb +12 -0
- data/spec/andrake/hello_android_spec.rb +36 -0
- data/spec/android/basic_ui_spec.rb +33 -0
- data/spec/android/hello_android_spec.rb +55 -0
- data/spec/custom_matcher.rb +51 -0
- data/spec/javaclass/examples/Eula.java +60 -0
- data/spec/javaclass/examples/WikiActivityHelper.java +448 -0
- data/spec/javaclass/examples/WikiNoteEditor.java +121 -0
- data/spec/javaclass/examples/WikiNotes.java +282 -0
- data/spec/javaclass/examples/WikiNotesList.java +159 -0
- data/spec/javaclass/javaclass_spec.rb +36 -0
- data/spec/rcov.opts +2 -0
- data/spec/simplegen/simplegen_spec.rb +139 -0
- data/spec/spec.opts +4 -0
- data/spec/spec_helper.rb +51 -0
- metadata +727 -0
@@ -0,0 +1,121 @@
|
|
1
|
+
/*
|
2
|
+
* Copyright (C) 2008 Google Inc.
|
3
|
+
*
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
* you may not use this file except in compliance with the License.
|
6
|
+
* You may obtain a copy of the License at
|
7
|
+
*
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
*
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
* See the License for the specific language governing permissions and
|
14
|
+
* limitations under the License.
|
15
|
+
*/
|
16
|
+
|
17
|
+
package com.google.android.wikinotes;
|
18
|
+
|
19
|
+
import android.app.Activity;
|
20
|
+
import android.content.Intent;
|
21
|
+
import android.os.Bundle;
|
22
|
+
import android.text.TextUtils;
|
23
|
+
import android.view.View;
|
24
|
+
import android.view.View.OnClickListener;
|
25
|
+
import android.widget.Button;
|
26
|
+
import android.widget.EditText;
|
27
|
+
|
28
|
+
import com.google.android.wikinotes.db.WikiNote;
|
29
|
+
|
30
|
+
/**
|
31
|
+
* Wikinote editor activity. This is a very simple activity that allows the user
|
32
|
+
* to edit a wikinote using a text editor and confirm or cancel the changes. The
|
33
|
+
* title and body for the wikinote to edit are passed in using the extras bundle
|
34
|
+
* and the onFreeze() method provisions for those values to be stored in the
|
35
|
+
* icicle on a lifecycle event, so that the user retains control over whether
|
36
|
+
* the changes are committed to the database.
|
37
|
+
*/
|
38
|
+
public class WikiNoteEditor extends Activity {
|
39
|
+
|
40
|
+
protected static final String ACTIVITY_RESULT =
|
41
|
+
"com.google.android.wikinotes.EDIT";
|
42
|
+
private EditText mNoteEdit;
|
43
|
+
private String mWikiNoteTitle;
|
44
|
+
|
45
|
+
@Override
|
46
|
+
protected void onCreate(Bundle icicle) {
|
47
|
+
super.onCreate(icicle);
|
48
|
+
setContentView(R.layout.wiki_note_edit);
|
49
|
+
|
50
|
+
mNoteEdit = (EditText) findViewById(R.id.noteEdit);
|
51
|
+
|
52
|
+
// Check to see if the icicle has body and title values to restore
|
53
|
+
String wikiNoteText =
|
54
|
+
icicle == null ? null : icicle.getString(WikiNote.Notes.BODY);
|
55
|
+
String wikiNoteTitle =
|
56
|
+
icicle == null ? null : icicle.getString(WikiNote.Notes.TITLE);
|
57
|
+
|
58
|
+
// If not, check to see if the extras bundle has these values passed in
|
59
|
+
if (wikiNoteTitle == null) {
|
60
|
+
Bundle extras = getIntent().getExtras();
|
61
|
+
wikiNoteText =
|
62
|
+
extras == null ? null : extras
|
63
|
+
.getString(WikiNote.Notes.BODY);
|
64
|
+
wikiNoteTitle =
|
65
|
+
extras == null ? null : extras
|
66
|
+
.getString(WikiNote.Notes.TITLE);
|
67
|
+
}
|
68
|
+
|
69
|
+
// If we have no title information, this is an invalid intent request
|
70
|
+
if (TextUtils.isEmpty(wikiNoteTitle)) {
|
71
|
+
// no note title - bail
|
72
|
+
setResult(RESULT_CANCELED);
|
73
|
+
finish();
|
74
|
+
return;
|
75
|
+
}
|
76
|
+
|
77
|
+
mWikiNoteTitle = wikiNoteTitle;
|
78
|
+
|
79
|
+
// but if the body is null, just set it to empty - first edit of this
|
80
|
+
// note
|
81
|
+
wikiNoteText = wikiNoteText == null ? "" : wikiNoteText;
|
82
|
+
|
83
|
+
// set the title so we know which note we are editing
|
84
|
+
setTitle(getString(R.string.wiki_editing, wikiNoteTitle));
|
85
|
+
|
86
|
+
// set the note body to edit
|
87
|
+
mNoteEdit.setText(wikiNoteText);
|
88
|
+
|
89
|
+
// set listeners for the confirm and cancel buttons
|
90
|
+
((Button) findViewById(R.id.confirmButton))
|
91
|
+
.setOnClickListener(new OnClickListener() {
|
92
|
+
public void onClick(View view) {
|
93
|
+
Intent i = new Intent();
|
94
|
+
i.putExtra(ACTIVITY_RESULT, mNoteEdit.getText()
|
95
|
+
.toString());
|
96
|
+
setResult(RESULT_OK, i);
|
97
|
+
finish();
|
98
|
+
}
|
99
|
+
});
|
100
|
+
|
101
|
+
((Button) findViewById(R.id.cancelButton))
|
102
|
+
.setOnClickListener(new OnClickListener() {
|
103
|
+
public void onClick(View view) {
|
104
|
+
setResult(RESULT_CANCELED);
|
105
|
+
finish();
|
106
|
+
}
|
107
|
+
});
|
108
|
+
if (!getSharedPreferences(Eula.PREFERENCES_EULA,
|
109
|
+
Activity.MODE_PRIVATE)
|
110
|
+
.getBoolean(Eula.PREFERENCE_EULA_ACCEPTED, false)) {
|
111
|
+
Eula.showEula(this);
|
112
|
+
}
|
113
|
+
}
|
114
|
+
|
115
|
+
@Override
|
116
|
+
protected void onSaveInstanceState(Bundle outState) {
|
117
|
+
super.onSaveInstanceState(outState);
|
118
|
+
outState.putString(WikiNote.Notes.TITLE, mWikiNoteTitle);
|
119
|
+
outState.putString(WikiNote.Notes.BODY, mNoteEdit.getText().toString());
|
120
|
+
}
|
121
|
+
}
|
@@ -0,0 +1,282 @@
|
|
1
|
+
/*
|
2
|
+
* Copyright (C) 2008 Google Inc.
|
3
|
+
*
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
5
|
+
* use this file except in compliance with the License. You may obtain a copy
|
6
|
+
* of the License at
|
7
|
+
*
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
*
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
12
|
+
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
13
|
+
* License for the specific language governing permissions and limitations
|
14
|
+
* under the License.
|
15
|
+
*/
|
16
|
+
|
17
|
+
package com.google.android.wikinotes;
|
18
|
+
|
19
|
+
import java.util.regex.Pattern;
|
20
|
+
|
21
|
+
import android.app.Activity;
|
22
|
+
import android.content.ContentUris;
|
23
|
+
import android.content.ContentValues;
|
24
|
+
import android.content.Intent;
|
25
|
+
import android.database.Cursor;
|
26
|
+
import android.net.Uri;
|
27
|
+
import android.os.Bundle;
|
28
|
+
import android.text.util.Linkify;
|
29
|
+
import android.util.Log;
|
30
|
+
import android.view.Menu;
|
31
|
+
import android.view.MenuItem;
|
32
|
+
import android.widget.TextView;
|
33
|
+
|
34
|
+
import com.google.android.wikinotes.db.WikiNote;
|
35
|
+
|
36
|
+
/**
|
37
|
+
* The WikiNotes activity is the default handler for displaying individual
|
38
|
+
* wiki notes. It takes the wiki note name to view from the intent data URL
|
39
|
+
* and defaults to a page name defined in R.strings.start_page if no page name
|
40
|
+
* is given. The lifecycle events store the current content URL being viewed.
|
41
|
+
* It uses Linkify to turn wiki words in the body of the wiki note into
|
42
|
+
* clickable links which in turn call back into the WikiNotes activity from
|
43
|
+
* the Android operating system. If a URL is passed to the WikiNotes activity
|
44
|
+
* for a page that does not yet exist, the WikiNoteEditor activity is
|
45
|
+
* automatically started to place the user into edit mode for a new wiki note
|
46
|
+
* with the given name.
|
47
|
+
*/
|
48
|
+
public class WikiNotes extends Activity {
|
49
|
+
/**
|
50
|
+
* The view URL which is prepended to a matching wikiword in order to fire
|
51
|
+
* the WikiNotes activity again through Linkify
|
52
|
+
*/
|
53
|
+
|
54
|
+
private static final String KEY_URL = "wikiNotesURL";
|
55
|
+
|
56
|
+
public static final int EDIT_ID = Menu.FIRST;
|
57
|
+
public static final int HOME_ID = Menu.FIRST + 1;
|
58
|
+
public static final int LIST_ID = Menu.FIRST + 3;
|
59
|
+
public static final int DELETE_ID = Menu.FIRST + 4;
|
60
|
+
public static final int ABOUT_ID = Menu.FIRST + 5;
|
61
|
+
public static final int EXPORT_ID = Menu.FIRST + 6;
|
62
|
+
public static final int IMPORT_ID = Menu.FIRST + 7;
|
63
|
+
public static final int EMAIL_ID = Menu.FIRST + 8;
|
64
|
+
|
65
|
+
private TextView mNoteView;
|
66
|
+
Cursor mCursor;
|
67
|
+
private Uri mURI;
|
68
|
+
String mNoteName;
|
69
|
+
private static final Pattern WIKI_WORD_MATCHER;
|
70
|
+
private WikiActivityHelper mHelper;
|
71
|
+
|
72
|
+
static {
|
73
|
+
// Compile the regular expression pattern that will be used to
|
74
|
+
// match WikiWords in the body of the note
|
75
|
+
WIKI_WORD_MATCHER = Pattern
|
76
|
+
.compile("\\b[A-Z]+[a-z0-9]+[A-Z][A-Za-z0-9]+\\b");
|
77
|
+
}
|
78
|
+
|
79
|
+
@Override
|
80
|
+
public void onCreate(Bundle icicle) {
|
81
|
+
super.onCreate(icicle);
|
82
|
+
setContentView(R.layout.main);
|
83
|
+
|
84
|
+
mNoteView = (TextView) findViewById(R.id.noteview);
|
85
|
+
|
86
|
+
// get the URL we are being asked to view
|
87
|
+
Uri uri = getIntent().getData();
|
88
|
+
|
89
|
+
if ((uri == null) && (icicle != null)) {
|
90
|
+
// perhaps we have the URI in the icicle instead?
|
91
|
+
uri = Uri.parse(icicle.getString(KEY_URL));
|
92
|
+
}
|
93
|
+
|
94
|
+
// do we have a correct URI including the note name?
|
95
|
+
if ((uri == null) || (uri.getPathSegments().size() < 2)) {
|
96
|
+
// if not, build one using the default StartPage name
|
97
|
+
uri = Uri.withAppendedPath(WikiNote.Notes.ALL_NOTES_URI,
|
98
|
+
getResources()
|
99
|
+
.getString(R.string.start_page));
|
100
|
+
}
|
101
|
+
|
102
|
+
// can we find a matching note?
|
103
|
+
Cursor cursor = managedQuery(uri, WikiNote.WIKI_NOTES_PROJECTION,
|
104
|
+
null, null, null);
|
105
|
+
|
106
|
+
boolean newNote = false;
|
107
|
+
if ((cursor == null) || (cursor.getCount() == 0)) {
|
108
|
+
// no matching wikinote, so create it
|
109
|
+
uri = getContentResolver().insert(uri, null);
|
110
|
+
if (uri == null) {
|
111
|
+
Log.e("WikiNotes", "Failed to insert new wikinote into " +
|
112
|
+
getIntent().getData());
|
113
|
+
finish();
|
114
|
+
return;
|
115
|
+
}
|
116
|
+
// make sure that the new note was created successfully, and
|
117
|
+
// select
|
118
|
+
// it
|
119
|
+
cursor = managedQuery(uri, WikiNote.WIKI_NOTES_PROJECTION, null,
|
120
|
+
null, null);
|
121
|
+
if ((cursor == null) || (cursor.getCount() == 0)) {
|
122
|
+
Log.e("WikiNotes", "Failed to open new wikinote: " +
|
123
|
+
getIntent().getData());
|
124
|
+
finish();
|
125
|
+
return;
|
126
|
+
}
|
127
|
+
newNote = true;
|
128
|
+
}
|
129
|
+
|
130
|
+
mURI = uri;
|
131
|
+
mCursor = cursor;
|
132
|
+
cursor.moveToFirst();
|
133
|
+
mHelper = new WikiActivityHelper(this);
|
134
|
+
|
135
|
+
// get the note name
|
136
|
+
String noteName = cursor.getString(cursor
|
137
|
+
.getColumnIndexOrThrow(WikiNote.Notes.TITLE));
|
138
|
+
mNoteName = noteName;
|
139
|
+
|
140
|
+
// set the title to the name of the page
|
141
|
+
setTitle(getResources().getString(R.string.wiki_title, noteName));
|
142
|
+
|
143
|
+
// If a new note was created, jump straight into editing it
|
144
|
+
if (newNote) {
|
145
|
+
mHelper.editNote(noteName, null);
|
146
|
+
} else if (!getSharedPreferences(Eula.PREFERENCES_EULA,
|
147
|
+
Activity.MODE_PRIVATE)
|
148
|
+
.getBoolean(Eula.PREFERENCE_EULA_ACCEPTED, false)) {
|
149
|
+
Eula.showEula(this);
|
150
|
+
}
|
151
|
+
|
152
|
+
// Set the menu shortcut keys to be default keys for the activity as
|
153
|
+
// well
|
154
|
+
setDefaultKeyMode(DEFAULT_KEYS_SHORTCUT);
|
155
|
+
}
|
156
|
+
|
157
|
+
@Override
|
158
|
+
protected void onSaveInstanceState(Bundle outState) {
|
159
|
+
super.onSaveInstanceState(outState);
|
160
|
+
// Put the URL currently being viewed into the icicle
|
161
|
+
outState.putString(KEY_URL, mURI.toString());
|
162
|
+
}
|
163
|
+
|
164
|
+
@Override
|
165
|
+
protected void onResume() {
|
166
|
+
super.onResume();
|
167
|
+
Cursor c = mCursor;
|
168
|
+
if (c.getCount() < 1) {
|
169
|
+
// if the note can't be found, don't try to load it -- bail out
|
170
|
+
// (probably means it got deleted while we were frozen;
|
171
|
+
// thx to joe.bowbeer for the find)
|
172
|
+
finish();
|
173
|
+
return;
|
174
|
+
}
|
175
|
+
c.requery();
|
176
|
+
c.moveToFirst();
|
177
|
+
showWikiNote(c
|
178
|
+
.getString(c.getColumnIndexOrThrow(WikiNote.Notes.BODY)));
|
179
|
+
}
|
180
|
+
|
181
|
+
/**
|
182
|
+
* Show the wiki note in the text edit view with both the default Linkify
|
183
|
+
* options and the regular expression for WikiWords matched and turned
|
184
|
+
* into live links.
|
185
|
+
*
|
186
|
+
* @param body
|
187
|
+
* The plain text to linkify and put into the edit view.
|
188
|
+
*/
|
189
|
+
private void showWikiNote(CharSequence body) {
|
190
|
+
TextView noteView = mNoteView;
|
191
|
+
noteView.setText(body);
|
192
|
+
|
193
|
+
// Add default links first - phone numbers, URLs, etc.
|
194
|
+
Linkify.addLinks(noteView, Linkify.ALL);
|
195
|
+
|
196
|
+
// Now add in the custom linkify match for WikiWords
|
197
|
+
Linkify.addLinks(noteView, WIKI_WORD_MATCHER,
|
198
|
+
WikiNote.Notes.ALL_NOTES_URI.toString() + "/");
|
199
|
+
}
|
200
|
+
|
201
|
+
@Override
|
202
|
+
public boolean onCreateOptionsMenu(Menu menu) {
|
203
|
+
super.onCreateOptionsMenu(menu);
|
204
|
+
menu.add(0, EDIT_ID, 0, R.string.menu_edit).setShortcut('1', 'e')
|
205
|
+
.setIcon(R.drawable.icon_delete);
|
206
|
+
menu.add(0, HOME_ID, 0, R.string.menu_start).setShortcut('4', 'h')
|
207
|
+
.setIcon(R.drawable.icon_start);
|
208
|
+
menu.add(0, LIST_ID, 0, R.string.menu_recent).setShortcut('3', 'r')
|
209
|
+
.setIcon(R.drawable.icon_recent);
|
210
|
+
menu.add(0, DELETE_ID, 0, R.string.menu_delete).setShortcut('2', 'd')
|
211
|
+
.setIcon(R.drawable.icon_delete);
|
212
|
+
menu.add(0, ABOUT_ID, 0, R.string.menu_about).setShortcut('5', 'a')
|
213
|
+
.setIcon(android.R.drawable.ic_dialog_info);
|
214
|
+
menu.add(0, EXPORT_ID, 0, R.string.menu_export).setShortcut('7', 'x')
|
215
|
+
.setIcon(android.R.drawable.ic_dialog_info);
|
216
|
+
menu.add(0, IMPORT_ID, 0, R.string.menu_import).setShortcut('8', 'm')
|
217
|
+
.setIcon(android.R.drawable.ic_dialog_info);
|
218
|
+
menu.add(0, EMAIL_ID, 0, R.string.menu_email).setShortcut('6', 'm')
|
219
|
+
.setIcon(android.R.drawable.ic_dialog_info);
|
220
|
+
return true;
|
221
|
+
}
|
222
|
+
|
223
|
+
@Override
|
224
|
+
public boolean onMenuItemSelected(int featureId, MenuItem item) {
|
225
|
+
switch (item.getItemId()) {
|
226
|
+
case EDIT_ID:
|
227
|
+
mHelper.editNote(mNoteName, mCursor);
|
228
|
+
return true;
|
229
|
+
case HOME_ID:
|
230
|
+
mHelper.goHome();
|
231
|
+
return true;
|
232
|
+
case DELETE_ID:
|
233
|
+
mHelper.deleteNote(mCursor);
|
234
|
+
return true;
|
235
|
+
case LIST_ID:
|
236
|
+
mHelper.listNotes();
|
237
|
+
return true;
|
238
|
+
case WikiNotes.ABOUT_ID:
|
239
|
+
Eula.showEula(this);
|
240
|
+
return true;
|
241
|
+
case WikiNotes.EXPORT_ID:
|
242
|
+
mHelper.exportNotes();
|
243
|
+
return true;
|
244
|
+
case WikiNotes.IMPORT_ID:
|
245
|
+
mHelper.importNotes();
|
246
|
+
return true;
|
247
|
+
case WikiNotes.EMAIL_ID:
|
248
|
+
mHelper.mailNote(mCursor);
|
249
|
+
return true;
|
250
|
+
default:
|
251
|
+
return false;
|
252
|
+
}
|
253
|
+
}
|
254
|
+
|
255
|
+
/**
|
256
|
+
* If the note was edited and not canceled, commit the update to the
|
257
|
+
* database and then refresh the current view of the linkified note.
|
258
|
+
*/
|
259
|
+
@Override
|
260
|
+
protected void onActivityResult(int requestCode, int resultCode,
|
261
|
+
Intent result) {
|
262
|
+
super.onActivityResult(requestCode, resultCode, result);
|
263
|
+
if ((requestCode == WikiActivityHelper.ACTIVITY_EDIT) &&
|
264
|
+
(resultCode == RESULT_OK)) {
|
265
|
+
// edit was confirmed - store the update
|
266
|
+
Cursor c = mCursor;
|
267
|
+
c.requery();
|
268
|
+
c.moveToFirst();
|
269
|
+
Uri noteUri = ContentUris
|
270
|
+
.withAppendedId(WikiNote.Notes.ALL_NOTES_URI, c.getInt(0));
|
271
|
+
ContentValues values = new ContentValues();
|
272
|
+
values.put(WikiNote.Notes.BODY, result
|
273
|
+
.getStringExtra(WikiNoteEditor.ACTIVITY_RESULT));
|
274
|
+
values.put(WikiNote.Notes.MODIFIED_DATE, System
|
275
|
+
.currentTimeMillis());
|
276
|
+
getContentResolver().update(noteUri, values,
|
277
|
+
"_id = " + c.getInt(0), null);
|
278
|
+
showWikiNote(c.getString(c
|
279
|
+
.getColumnIndexOrThrow(WikiNote.Notes.BODY)));
|
280
|
+
}
|
281
|
+
}
|
282
|
+
}
|
@@ -0,0 +1,159 @@
|
|
1
|
+
/*
|
2
|
+
* Copyright (C) 2008 Google Inc.
|
3
|
+
*
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
5
|
+
* use this file except in compliance with the License. You may obtain a copy
|
6
|
+
* of the License at
|
7
|
+
*
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
*
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
12
|
+
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
13
|
+
* License for the specific language governing permissions and limitations
|
14
|
+
* under the License.
|
15
|
+
*/
|
16
|
+
|
17
|
+
package com.google.android.wikinotes;
|
18
|
+
|
19
|
+
import android.app.ListActivity;
|
20
|
+
import android.app.SearchManager;
|
21
|
+
import android.content.Intent;
|
22
|
+
import android.database.Cursor;
|
23
|
+
import android.net.Uri;
|
24
|
+
import android.os.Bundle;
|
25
|
+
import android.view.Menu;
|
26
|
+
import android.view.MenuItem;
|
27
|
+
import android.view.View;
|
28
|
+
import android.widget.ListAdapter;
|
29
|
+
import android.widget.ListView;
|
30
|
+
import android.widget.SimpleCursorAdapter;
|
31
|
+
|
32
|
+
import com.google.android.wikinotes.db.WikiNote;
|
33
|
+
|
34
|
+
/**
|
35
|
+
* Activity to list wikinotes. By default, the notes are listed in the order
|
36
|
+
* of most recently modified to least recently modified. This activity can
|
37
|
+
* handle requests to either show all notes, or the results of a title or body
|
38
|
+
* search performed by the content provider.
|
39
|
+
*/
|
40
|
+
public class WikiNotesList extends ListActivity {
|
41
|
+
|
42
|
+
/**
|
43
|
+
* A key to store/retrieve the search criteria in a bundle
|
44
|
+
*/
|
45
|
+
public static final String SEARCH_CRITERIA_KEY = "SearchCriteria";
|
46
|
+
/**
|
47
|
+
* The projection to use (columns to retrieve) for a query of wikinotes
|
48
|
+
*/
|
49
|
+
public static final String[] PROJECTION = { WikiNote.Notes._ID,
|
50
|
+
WikiNote.Notes.TITLE,
|
51
|
+
WikiNote.Notes.MODIFIED_DATE };
|
52
|
+
|
53
|
+
private Cursor mCursor;
|
54
|
+
private WikiActivityHelper mHelper;
|
55
|
+
|
56
|
+
@Override
|
57
|
+
protected void onCreate(Bundle savedInstanceState) {
|
58
|
+
super.onCreate(savedInstanceState);
|
59
|
+
|
60
|
+
Intent intent = getIntent();
|
61
|
+
Uri uri = null;
|
62
|
+
String query = null;
|
63
|
+
|
64
|
+
// locate a query string; prefer a fresh search Intent over saved
|
65
|
+
// state
|
66
|
+
if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
|
67
|
+
query = intent.getStringExtra(SearchManager.QUERY);
|
68
|
+
} else if (savedInstanceState != null) {
|
69
|
+
query = savedInstanceState.getString(SearchManager.QUERY);
|
70
|
+
}
|
71
|
+
if (query != null && query.length() > 0) {
|
72
|
+
uri = Uri.withAppendedPath(WikiNote.Notes.SEARCH_URI, Uri
|
73
|
+
.encode(query));
|
74
|
+
}
|
75
|
+
|
76
|
+
if (uri == null) {
|
77
|
+
// somehow we got called w/o a query so fall back to a reasonable
|
78
|
+
// default (all notes)
|
79
|
+
uri = WikiNote.Notes.ALL_NOTES_URI;
|
80
|
+
}
|
81
|
+
|
82
|
+
// Do the query
|
83
|
+
Cursor c = managedQuery(uri, PROJECTION, null, null,
|
84
|
+
WikiNote.Notes.DEFAULT_SORT_ORDER);
|
85
|
+
mCursor = c;
|
86
|
+
|
87
|
+
mHelper = new WikiActivityHelper(this);
|
88
|
+
|
89
|
+
// Bind the results of the search into the list
|
90
|
+
ListAdapter adapter = new SimpleCursorAdapter(
|
91
|
+
this,
|
92
|
+
android.R.layout.simple_list_item_1,
|
93
|
+
mCursor,
|
94
|
+
new String[] { WikiNote.Notes.TITLE },
|
95
|
+
new int[] { android.R.id.text1 });
|
96
|
+
setListAdapter(adapter);
|
97
|
+
|
98
|
+
// use the menu shortcut keys as default key bindings for the entire
|
99
|
+
// activity
|
100
|
+
setDefaultKeyMode(DEFAULT_KEYS_SHORTCUT);
|
101
|
+
}
|
102
|
+
|
103
|
+
/**
|
104
|
+
* Override the onListItemClick to open the wiki note to view when it is
|
105
|
+
* selected from the list.
|
106
|
+
*/
|
107
|
+
@Override
|
108
|
+
protected void onListItemClick(ListView list, View view, int position,
|
109
|
+
long id) {
|
110
|
+
Cursor c = mCursor;
|
111
|
+
c.moveToPosition(position);
|
112
|
+
String title = c.getString(c
|
113
|
+
.getColumnIndexOrThrow(WikiNote.Notes.TITLE));
|
114
|
+
|
115
|
+
// Create the URI of the note we want to view based on the title
|
116
|
+
Uri uri = Uri.withAppendedPath(WikiNote.Notes.ALL_NOTES_URI, title);
|
117
|
+
Intent i = new Intent(Intent.ACTION_VIEW, uri);
|
118
|
+
startActivity(i);
|
119
|
+
}
|
120
|
+
|
121
|
+
@Override
|
122
|
+
public boolean onCreateOptionsMenu(Menu menu) {
|
123
|
+
super.onCreateOptionsMenu(menu);
|
124
|
+
menu.add(0, WikiNotes.HOME_ID, 0, R.string.menu_start)
|
125
|
+
.setShortcut('4', 'h').setIcon(R.drawable.icon_start);
|
126
|
+
menu.add(0, WikiNotes.LIST_ID, 0, R.string.menu_recent)
|
127
|
+
.setShortcut('3', 'r').setIcon(R.drawable.icon_recent);
|
128
|
+
menu.add(0, WikiNotes.ABOUT_ID, 0, R.string.menu_about)
|
129
|
+
.setShortcut('5', 'a').setIcon(android.R.drawable.ic_dialog_info);
|
130
|
+
menu.add(0, WikiNotes.EXPORT_ID, 0, R.string.menu_export)
|
131
|
+
.setShortcut('6', 'x').setIcon(android.R.drawable.ic_dialog_info);
|
132
|
+
menu.add(0, WikiNotes.IMPORT_ID, 0, R.string.menu_import)
|
133
|
+
.setShortcut('7', 'm').setIcon(android.R.drawable.ic_dialog_info);
|
134
|
+
return true;
|
135
|
+
}
|
136
|
+
|
137
|
+
@Override
|
138
|
+
public boolean onMenuItemSelected(int featureId, MenuItem item) {
|
139
|
+
switch (item.getItemId()) {
|
140
|
+
case WikiNotes.HOME_ID:
|
141
|
+
mHelper.goHome();
|
142
|
+
return true;
|
143
|
+
case WikiNotes.LIST_ID:
|
144
|
+
mHelper.listNotes();
|
145
|
+
return true;
|
146
|
+
case WikiNotes.ABOUT_ID:
|
147
|
+
Eula.showEula(this);
|
148
|
+
return true;
|
149
|
+
case WikiNotes.EXPORT_ID:
|
150
|
+
mHelper.exportNotes();
|
151
|
+
return true;
|
152
|
+
case WikiNotes.IMPORT_ID:
|
153
|
+
mHelper.importNotes();
|
154
|
+
return true;
|
155
|
+
default:
|
156
|
+
return false;
|
157
|
+
}
|
158
|
+
}
|
159
|
+
}
|