From: Michal Horn Date: Fri, 13 Feb 2015 10:28:48 +0000 (+0100) Subject: Implement PDF preview showing, change icon, implement views and manus layout X-Git-Url: http://rtime.felk.cvut.cz/gitweb/hornmich/skoda-qr-demo.git/commitdiff_plain/8e4a6f364edcc68fb312b3ddbb5686fbb0c048b2 Implement PDF preview showing, change icon, implement views and manus layout --- diff --git a/QRScanner/QRScanner.iml b/QRScanner/QRScanner.iml index 42f4ed5..0bb6048 100644 --- a/QRScanner/QRScanner.iml +++ b/QRScanner/QRScanner.iml @@ -8,8 +8,6 @@ - - diff --git a/QRScanner/glass/build.gradle b/QRScanner/glass/build.gradle index 5d6a1db..9e9a45a 100644 --- a/QRScanner/glass/build.gradle +++ b/QRScanner/glass/build.gradle @@ -9,7 +9,7 @@ repositories { android { compileSdkVersion "Google Inc.:Glass Development Kit Preview:19" - buildToolsVersion "21.1.2" + buildToolsVersion '21.1.2' defaultConfig { applicationId "cz.cvut.fel.dce.qrscanner" @@ -31,6 +31,19 @@ android { } } +task nativeLibsToJar(type: Zip, description: 'create a jar archive of the native libs') { + destinationDir file("$buildDir/native-libs") + baseName 'native-libs' + extension 'jar' + from fileTree(dir: 'libs', include: '**/*.so') + into 'lib/' +} + +tasks.withType(JavaCompile) { + compileTask -> compileTask.dependsOn(nativeLibsToJar) +} + dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) + compile files('build/native-libs/native-libs.jar') } diff --git a/QRScanner/glass/glass.iml b/QRScanner/glass/glass.iml index 6b8b3c6..b8feb82 100644 --- a/QRScanner/glass/glass.iml +++ b/QRScanner/glass/glass.iml @@ -80,11 +80,13 @@ + + diff --git a/QRScanner/glass/src/main/AndroidManifest.xml b/QRScanner/glass/src/main/AndroidManifest.xml index f67d177..2f7340a 100644 --- a/QRScanner/glass/src/main/AndroidManifest.xml +++ b/QRScanner/glass/src/main/AndroidManifest.xml @@ -4,19 +4,20 @@ + + + android:resource="@xml/voice_trigger_start" /> numPages-1) + page = numPages-1; + else if (page < 0) + page = 0; + gotoPageInternal(page); + this.pageWidth = getPageWidth(); + this.pageHeight = getPageHeight(); + } + + public synchronized PointF getPageSize(int page) { + gotoPage(page); + return new PointF(pageWidth, pageHeight); + } + + public MuPDFAlert waitForAlert() { + MuPDFAlertInternal alert = waitForAlertInternal(); + return alert != null ? alert.toAlert() : null; + } + + public void replyToAlert(MuPDFAlert alert) { + replyToAlertInternal(new MuPDFAlertInternal(alert)); + } + + public void stopAlerts() { + stopAlertsInternal(); + } + + public void startAlerts() { + startAlertsInternal(); + } + + public synchronized void onDestroy() { + destroying(); + globals = 0; + } + + public synchronized void drawPage(Bitmap bm, int page, + int pageW, int pageH, + int patchX, int patchY, + int patchW, int patchH, + Cookie cookie) { + gotoPage(page); + drawPage(bm, pageW, pageH, patchX, patchY, patchW, patchH, cookie.cookiePtr); + } + + public synchronized void updatePage(Bitmap bm, int page, + int pageW, int pageH, + int patchX, int patchY, + int patchW, int patchH, + Cookie cookie) { + updatePageInternal(bm, page, pageW, pageH, patchX, patchY, patchW, patchH, cookie.cookiePtr); + } + + public synchronized PassClickResult passClickEvent(int page, float x, float y) { + boolean changed = passClickEventInternal(page, x, y) != 0; + + switch (WidgetType.values()[getFocusedWidgetTypeInternal()]) + { + case TEXT: + return new PassClickResultText(changed, getFocusedWidgetTextInternal()); + case LISTBOX: + case COMBOBOX: + return new PassClickResultChoice(changed, getFocusedWidgetChoiceOptions(), getFocusedWidgetChoiceSelected()); + case SIGNATURE: + return new PassClickResultSignature(changed, getFocusedWidgetSignatureState()); + default: + return new PassClickResult(changed); + } + + } + + public synchronized boolean setFocusedWidgetText(int page, String text) { + boolean success; + gotoPage(page); + success = setFocusedWidgetTextInternal(text) != 0 ? true : false; + + return success; + } + + public synchronized void setFocusedWidgetChoiceSelected(String [] selected) { + setFocusedWidgetChoiceSelectedInternal(selected); + } + + public synchronized String checkFocusedSignature() { + return checkFocusedSignatureInternal(); + } + + public synchronized boolean signFocusedSignature(String keyFile, String password) { + return signFocusedSignatureInternal(keyFile, password); + } + + public synchronized LinkInfo [] getPageLinks(int page) { + return getPageLinksInternal(page); + } + + public synchronized RectF [] getWidgetAreas(int page) { + return getWidgetAreasInternal(page); + } + + public synchronized Annotation [] getAnnoations(int page) { + return getAnnotationsInternal(page); + } + + public synchronized RectF [] searchPage(int page, String text) { + gotoPage(page); + return searchPage(text); + } + + public synchronized byte[] html(int page) { + gotoPage(page); + return textAsHtml(); + } + + public synchronized TextWord [][] textLines(int page) { + gotoPage(page); + TextChar[][][][] chars = text(); + + // The text of the page held in a hierarchy (blocks, lines, spans). + // Currently we don't need to distinguish the blocks level or + // the spans, and we need to collect the text into words. + ArrayList lns = new ArrayList(); + + for (TextChar[][][] bl: chars) { + if (bl == null) + continue; + for (TextChar[][] ln: bl) { + ArrayList wds = new ArrayList(); + TextWord wd = new TextWord(); + + for (TextChar[] sp: ln) { + for (TextChar tc: sp) { + if (tc.c != ' ') { + wd.Add(tc); + } else if (wd.w.length() > 0) { + wds.add(wd); + wd = new TextWord(); + } + } + } + + if (wd.w.length() > 0) + wds.add(wd); + + if (wds.size() > 0) + lns.add(wds.toArray(new TextWord[wds.size()])); + } + } + + return lns.toArray(new TextWord[lns.size()][]); + } + + public synchronized void addMarkupAnnotation(int page, PointF[] quadPoints, Annotation.Type type) { + gotoPage(page); + addMarkupAnnotationInternal(quadPoints, type.ordinal()); + } + + public synchronized void addInkAnnotation(int page, PointF[][] arcs) { + gotoPage(page); + addInkAnnotationInternal(arcs); + } + + public synchronized void deleteAnnotation(int page, int annot_index) { + gotoPage(page); + deleteAnnotationInternal(annot_index); + } + + public synchronized boolean hasOutline() { + return hasOutlineInternal(); + } + + public synchronized OutlineItem [] getOutline() { + return getOutlineInternal(); + } + + public synchronized boolean needsPassword() { + return needsPasswordInternal(); + } + + public synchronized boolean authenticatePassword(String password) { + return authenticatePasswordInternal(password); + } + + public synchronized boolean hasChanges() { + return hasChangesInternal(); + } + + public synchronized void save() { + saveInternal(); + } +} diff --git a/QRScanner/glass/src/main/java/cz/cvut/fel/dce/qrscanner/mupdf/OutlineItem.java b/QRScanner/glass/src/main/java/cz/cvut/fel/dce/qrscanner/mupdf/OutlineItem.java new file mode 100644 index 0000000..d31d238 --- /dev/null +++ b/QRScanner/glass/src/main/java/cz/cvut/fel/dce/qrscanner/mupdf/OutlineItem.java @@ -0,0 +1,14 @@ +package cz.cvut.fel.dce.qrscanner.mupdf; + +public class OutlineItem { + public final int level; + public final String title; + public final int page; + + OutlineItem(int _level, String _title, int _page) { + level = _level; + title = _title; + page = _page; + } + +} diff --git a/QRScanner/glass/src/main/java/cz/cvut/fel/dce/qrscanner/mupdf/TextChar.java b/QRScanner/glass/src/main/java/cz/cvut/fel/dce/qrscanner/mupdf/TextChar.java new file mode 100644 index 0000000..6920378 --- /dev/null +++ b/QRScanner/glass/src/main/java/cz/cvut/fel/dce/qrscanner/mupdf/TextChar.java @@ -0,0 +1,12 @@ +package cz.cvut.fel.dce.qrscanner.mupdf; + +import android.graphics.RectF; + +public class TextChar extends RectF { + public char c; + + public TextChar(float x0, float y0, float x1, float y1, char _c) { + super(x0, y0, x1, y1); + c = _c; + } +} diff --git a/QRScanner/glass/src/main/java/cz/cvut/fel/dce/qrscanner/mupdf/TextWord.java b/QRScanner/glass/src/main/java/cz/cvut/fel/dce/qrscanner/mupdf/TextWord.java new file mode 100644 index 0000000..f318716 --- /dev/null +++ b/QRScanner/glass/src/main/java/cz/cvut/fel/dce/qrscanner/mupdf/TextWord.java @@ -0,0 +1,17 @@ +package cz.cvut.fel.dce.qrscanner.mupdf; + +import android.graphics.RectF; + +public class TextWord extends RectF { + public String w; + + public TextWord() { + super(); + w = new String(); + } + + public void Add(TextChar tc) { + super.union(tc); + w = w.concat(new String(new char[]{tc.c})); + } +} diff --git a/QRScanner/glass/src/main/java/cz/cvut/fel/dce/qrscanner/mupdf/WidgetType.java b/QRScanner/glass/src/main/java/cz/cvut/fel/dce/qrscanner/mupdf/WidgetType.java new file mode 100644 index 0000000..cf22c7d --- /dev/null +++ b/QRScanner/glass/src/main/java/cz/cvut/fel/dce/qrscanner/mupdf/WidgetType.java @@ -0,0 +1,9 @@ +package cz.cvut.fel.dce.qrscanner.mupdf; + +public enum WidgetType { + NONE, + TEXT, + LISTBOX, + COMBOBOX, + SIGNATURE +} diff --git a/QRScanner/glass/src/main/res/drawable-hdpi/ic_glass_logo.png b/QRScanner/glass/src/main/res/drawable-hdpi/ic_glass_logo.png deleted file mode 100644 index 2f17b96..0000000 Binary files a/QRScanner/glass/src/main/res/drawable-hdpi/ic_glass_logo.png and /dev/null differ diff --git a/QRScanner/glass/src/main/res/drawable-hdpi/ic_launcher.png b/QRScanner/glass/src/main/res/drawable-hdpi/ic_launcher.png new file mode 100644 index 0000000..c8dd628 Binary files /dev/null and b/QRScanner/glass/src/main/res/drawable-hdpi/ic_launcher.png differ diff --git a/QRScanner/glass/src/main/res/drawable-mdpi/ic_glass_logo.png b/QRScanner/glass/src/main/res/drawable-mdpi/ic_glass_logo.png new file mode 100644 index 0000000..e63a697 Binary files /dev/null and b/QRScanner/glass/src/main/res/drawable-mdpi/ic_glass_logo.png differ diff --git a/QRScanner/glass/src/main/res/drawable-mdpi/ic_launcher.png b/QRScanner/glass/src/main/res/drawable-mdpi/ic_launcher.png deleted file mode 100644 index 359047d..0000000 Binary files a/QRScanner/glass/src/main/res/drawable-mdpi/ic_launcher.png and /dev/null differ diff --git a/QRScanner/glass/src/main/res/drawable-xhdpi/ic_launcher.png b/QRScanner/glass/src/main/res/drawable-xhdpi/ic_launcher.png index 71c6d76..e613aff 100644 Binary files a/QRScanner/glass/src/main/res/drawable-xhdpi/ic_launcher.png and b/QRScanner/glass/src/main/res/drawable-xhdpi/ic_launcher.png differ diff --git a/QRScanner/glass/src/main/res/drawable-xxhdpi/ic_launcher.png b/QRScanner/glass/src/main/res/drawable-xxhdpi/ic_launcher.png index 4df1894..37ea1fe 100644 Binary files a/QRScanner/glass/src/main/res/drawable-xxhdpi/ic_launcher.png and b/QRScanner/glass/src/main/res/drawable-xxhdpi/ic_launcher.png differ diff --git a/QRScanner/glass/src/main/res/drawable/ic_launcher.png b/QRScanner/glass/src/main/res/drawable/ic_launcher.png new file mode 100644 index 0000000..5f934ba Binary files /dev/null and b/QRScanner/glass/src/main/res/drawable/ic_launcher.png differ diff --git a/QRScanner/glass/src/main/res/drawable/skoda_logo.png b/QRScanner/glass/src/main/res/drawable/skoda_logo.png new file mode 100644 index 0000000..eb28971 Binary files /dev/null and b/QRScanner/glass/src/main/res/drawable/skoda_logo.png differ diff --git a/QRScanner/glass/src/main/res/layout/activity_main.xml b/QRScanner/glass/src/main/res/layout/activity_main.xml new file mode 100644 index 0000000..c505b1c --- /dev/null +++ b/QRScanner/glass/src/main/res/layout/activity_main.xml @@ -0,0 +1,20 @@ + + + + + diff --git a/QRScanner/glass/src/main/res/layout/activity_preview.xml b/QRScanner/glass/src/main/res/layout/activity_preview.xml new file mode 100644 index 0000000..bda0690 --- /dev/null +++ b/QRScanner/glass/src/main/res/layout/activity_preview.xml @@ -0,0 +1,15 @@ + + + + + + \ No newline at end of file diff --git a/QRScanner/glass/src/main/res/menu/menu_preview.xml b/QRScanner/glass/src/main/res/menu/menu_preview.xml new file mode 100644 index 0000000..a51c359 --- /dev/null +++ b/QRScanner/glass/src/main/res/menu/menu_preview.xml @@ -0,0 +1,20 @@ + + + + + + + diff --git a/QRScanner/glass/src/main/res/values/strings.xml b/QRScanner/glass/src/main/res/values/strings.xml index e277cdf..0943504 100644 --- a/QRScanner/glass/src/main/res/values/strings.xml +++ b/QRScanner/glass/src/main/res/values/strings.xml @@ -22,5 +22,11 @@ limitations under the License. Skoda Demo Stop Scan code - + Cannot open file: %1$s + Cannot open buffer + Contacts + Manufacturing + Pictured manuf + Workshow guide + Skoda Manufacturer Helper diff --git a/QRScanner/glass/src/main/res/values/styles.xml b/QRScanner/glass/src/main/res/values/styles.xml index 65a325d..045e125 100644 --- a/QRScanner/glass/src/main/res/values/styles.xml +++ b/QRScanner/glass/src/main/res/values/styles.xml @@ -1,5 +1,3 @@ - diff --git a/QRScanner/glass/src/main/res/xml/voice_trigger.xml b/QRScanner/glass/src/main/res/xml/voice_trigger.xml deleted file mode 100644 index d9283e1..0000000 --- a/QRScanner/glass/src/main/res/xml/voice_trigger.xml +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/QRScanner/glass/src/main/res/xml/voice_trigger_start.xml b/QRScanner/glass/src/main/res/xml/voice_trigger_start.xml new file mode 100644 index 0000000..33b8938 --- /dev/null +++ b/QRScanner/glass/src/main/res/xml/voice_trigger_start.xml @@ -0,0 +1,8 @@ + + + + + + // asi neni nutne, a asi tam nemusi byt android: prefix + + \ No newline at end of file diff --git a/QRScanner/mobile/mobile.iml b/QRScanner/mobile/mobile.iml index d81bd08..f8f199b 100644 --- a/QRScanner/mobile/mobile.iml +++ b/QRScanner/mobile/mobile.iml @@ -89,9 +89,7 @@ - - diff --git a/QRScanner/mobile/src/main/java/cz/cvut/fel/dce/qrscanner/PreviewActivity.java b/QRScanner/mobile/src/main/java/cz/cvut/fel/dce/qrscanner/PreviewActivity.java index 9539e07..ff5cfe7 100644 --- a/QRScanner/mobile/src/main/java/cz/cvut/fel/dce/qrscanner/PreviewActivity.java +++ b/QRScanner/mobile/src/main/java/cz/cvut/fel/dce/qrscanner/PreviewActivity.java @@ -79,7 +79,6 @@ public class PreviewActivity extends ActionBarActivity implements ViewTreeObserv @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. - getMenuInflater().inflate(R.menu.menu_preview, menu); return true; } diff --git a/QRScanner/mobile/src/main/res/menu/menu_preview.xml b/QRScanner/mobile/src/main/res/menu/menu_preview.xml deleted file mode 100644 index 315a85a..0000000 --- a/QRScanner/mobile/src/main/res/menu/menu_preview.xml +++ /dev/null @@ -1,5 +0,0 @@ - - diff --git a/QRScanner/mobile/src/main/res/values/strings.xml b/QRScanner/mobile/src/main/res/values/strings.xml index ecd7886..99c1eb1 100644 --- a/QRScanner/mobile/src/main/res/values/strings.xml +++ b/QRScanner/mobile/src/main/res/values/strings.xml @@ -66,4 +66,5 @@ Workshop manual Select document to view +