ubuntu-touch-coreapps-reviewers team mailing list archive
-
ubuntu-touch-coreapps-reviewers team
-
Mailing list archive
-
Message #05194
[Merge] lp:~mrqtros/ubuntu-docviewer-app/reboot-qsg-impress-support into lp:ubuntu-docviewer-app
Roman Shchekin has proposed merging lp:~mrqtros/ubuntu-docviewer-app/reboot-qsg-impress-support into lp:ubuntu-docviewer-app.
Commit message:
RenderEngine - impress support.
Requested reviews:
Ubuntu Document Viewer Developers (ubuntu-docviewer-dev)
For more details, see:
https://code.launchpad.net/~mrqtros/ubuntu-docviewer-app/reboot-qsg-impress-support/+merge/273921
RenderEngine - impress support.
--
Your team Ubuntu Document Viewer Developers is requested to review the proposed merge of lp:~mrqtros/ubuntu-docviewer-app/reboot-qsg-impress-support into lp:ubuntu-docviewer-app.
=== modified file 'README'
--- README 2015-01-30 19:20:39 +0000
+++ README 2015-10-08 20:57:10 +0000
@@ -8,13 +8,32 @@
=========
Install poppler's development files:
-sudo apt-get install libpoppler-qt5-dev
+ sudo apt install libpoppler-qt5-dev
Install Qt5 private development files:
-sudo apt-get install qtdeclarative5-private-dev qtbase5-private-dev
-
-If you want to compile an arm click package, you need to install that package to the arm compilation environment. For example when using QtCreator for Ubuntu Touch, open Options -> Ubuntu -> Maintain, and then enter:
-
-apt-get install libpoppler-qt5-dev:armhf qtdeclarative5-private-dev:armhf qtbase5-private-dev:armhf
-
-
+ sudo apt install qtdeclarative5-private-dev qtbase5-private-dev
+
+If you want to compile an arm click package, you need to install that package
+to the arm compilation environment. For example when using QtCreator for
+Ubuntu Touch, open Options -> Ubuntu -> Maintain, and then enter:
+
+ apt install libpoppler-qt5-dev:armhf qtdeclarative5-private-dev:armhf qtbase5-private-dev:armhf
+
+LibreOffice viewer support
+==========================
+
+If you want to enable the LibreOffice viewer feature, you'll need to have a
+LibreOffice 5.0 installation on your development environment. At the time of
+writing, LibreOffice 5.0 is not yet in the archive, but you can easily install
+it from the pre-releases PPA. To do so, type the following commands on a
+terminal:
+
+ sudo apt-get purge libreoffice-core
+ sudo add-apt-repository ppa:libreoffice/libreoffice-prereleases
+ sudo apt-get update
+ sudo apt-get install libreoffice
+
+Then to compile the LibreOffice viewer plugin you'll simply need to install
+the LibreOffice Kit development files:
+
+ sudo apt install libreofficekit-dev
=== modified file 'debian/control'
--- debian/control 2015-02-23 12:49:52 +0000
+++ debian/control 2015-10-08 20:57:10 +0000
@@ -4,14 +4,13 @@
Build-Depends: cmake,
debhelper (>= 9),
intltool,
- libcontent-hub-dev (>= 0.0+13.10.20130930.1),
libpoppler-qt5-dev,
pep8,
pkg-config,
pkg-kde-tools,
python3-all,
qt5-default,
- qtbase5-dev,
+ qtbase5-dev (>= 5.4.0),
qtchooser,
qtdeclarative5-dev,
qtdeclarative5-dev-tools,
@@ -28,6 +27,10 @@
Architecture: any
Depends: qtdeclarative5-qtquick2-plugin,
qtdeclarative5-ubuntu-ui-toolkit-plugin,
+ qtdeclarative5-ubuntu-content1,
+ qtdeclarative5-quicklayouts-plugin,
+ qtdeclarative5-window-plugin,
+ suru-icon-theme (>= 14.04+15.10.20150707-0ubuntu1),
${misc:Depends}
Description: Document Viewer application
Core Document Viewer application
=== modified file 'po/am.po'
--- po/am.po 2015-09-23 06:28:55 +0000
+++ po/am.po 2015-10-08 20:57:10 +0000
@@ -7,16 +7,26 @@
msgstr ""
"Project-Id-Version: ubuntu-docviewer-app\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+<<<<<<< TREE
"POT-Creation-Date: 2015-07-24 11:10+0200\n"
"PO-Revision-Date: 2015-09-22 22:55+0000\n"
+=======
+"POT-Creation-Date: 2015-06-24 22:48+0200\n"
+"PO-Revision-Date: 2015-03-08 19:28+0000\n"
+>>>>>>> MERGE-SOURCE
"Last-Translator: samson <Unknown>\n"
"Language-Team: Amharic <am@xxxxxx>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
+<<<<<<< TREE
"X-Launchpad-Export-Date: 2015-09-23 06:28+0000\n"
"X-Generator: Launchpad (build 17749)\n"
+=======
+"X-Launchpad-Export-Date: 2015-06-26 04:58+0000\n"
+"X-Generator: Launchpad (build 17578)\n"
+>>>>>>> MERGE-SOURCE
#. TRANSLATORS: This string is used for renaming a copied file,
#. when a file with the same name already exists in user's
@@ -33,7 +43,7 @@
msgstr "ኮፒ %1"
#: ../src/app/docviewer-application.cpp:171
-#: /home/stefano/Progetti/docviewer/build-ubuntu-docviewer-app-Desktop-Default/po/com.ubuntu.docviewer.desktop.in.in.h:1
+#: /home/m/dev/core/ubuntu-docviewer-app-icon-fix/obj-x86_64-linux-gnu/po/com.ubuntu.docviewer.desktop.in.in.h:1
msgid "Document Viewer"
msgstr "ሰነድ መመልከቻ"
@@ -147,32 +157,31 @@
msgid "%1 byte"
msgstr "%1 ባይት"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:36
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:28
msgid "Delete file"
msgstr "ፋይል ማጥፊያ"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:37
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:29
#, qt-format
msgid "Delete %1 file"
msgid_plural "Delete %1 files"
msgstr[0] "ማጥፊያ %1 ፋይል"
msgstr[1] "ማጥፊያ %1 ፋይሎች"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:38
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:39
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:30
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:31
msgid "Are you sure you want to permanently delete this file?"
msgid_plural "Are you sure you want to permanently delete these files?"
msgstr[0] "ይህን ፋይል በ እርግጥ በቋሚነት ማጥፋት ይፈልጋሉ?"
msgstr[1] "እነዚህን ፋይሎች በ እርግጥ በቋሚነት ማጥፋት ይፈልጋሉ?"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:44
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:36
#: ../src/app/qml/documentPage/DocumentPagePickModeHeader.qml:27
#: ../src/app/qml/pdfView/PdfViewGotoDialog.qml:52
msgid "Cancel"
msgstr "መሰረዣ"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:49
-#: ../src/app/qml/documentPage/DocumentDelegateActions.qml:25
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:41
#: ../src/app/qml/documentPage/DocumentPageSelectionModeHeader.qml:82
msgid "Delete"
msgstr "ማጥፊያ"
@@ -189,35 +198,47 @@
#. TRANSLATORS: %1 refers to a time formatted as Locale.ShortFormat (e.g. hh:mm). It depends on system settings.
#. http://qt-project.org/doc/qt-4.8/qlocale.html#FormatType-enum
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:32
-#: ../src/app/qml/documentPage/DocumentListDelegate.qml:37
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:35
#, qt-format
msgid "Today, %1"
msgstr "ዛሬ, %1"
#. TRANSLATORS: %1 refers to a time formatted as Locale.ShortFormat (e.g. hh:mm). It depends on system settings.
#. http://qt-project.org/doc/qt-4.8/qlocale.html#FormatType-enum
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:37
-#: ../src/app/qml/documentPage/DocumentListDelegate.qml:42
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:40
#, qt-format
msgid "Yesterday, %1"
msgstr "ትናንትና, %1"
#. TRANSLATORS: this is a datetime formatting string,
#. see http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:42
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:45
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:58
msgid "dddd, hh:mm"
msgstr "dddd, hh:mm"
#. TRANSLATORS: this is a datetime formatting string,
#. see http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:46
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:49
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:47
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:63
msgid "dd-MM-yyyy hh:mm"
msgstr "dd-MM-yyyy hh:mm"
+#. TRANSLATORS: this is a datetime formatting string, and the
+#. singlequote is an escape character.
+#. See http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
+#: ../src/app/qml/documentPage/DocumentListDelegate.qml:36
+msgid "'Today', hh:mm"
+msgstr ""
+
+#. TRANSLATORS: this is a datetime formatting string, and the
+#. singlequote is an escape character.
+#. See http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
+#: ../src/app/qml/documentPage/DocumentListDelegate.qml:42
+msgid "'Yesterday', hh:mm"
+msgstr ""
+
#: ../src/app/qml/documentPage/DocumentListView.qml:157
msgid "Today"
msgstr "ዛሬ"
@@ -369,6 +390,6 @@
msgid "Open"
msgstr "መክፈቻ"
-#: /home/stefano/Progetti/docviewer/build-ubuntu-docviewer-app-Desktop-Default/po/com.ubuntu.docviewer.desktop.in.in.h:2
+#: /home/m/dev/core/ubuntu-docviewer-app-icon-fix/obj-x86_64-linux-gnu/po/com.ubuntu.docviewer.desktop.in.in.h:2
msgid "documents;viewer;pdf;reader;"
msgstr "ሰነዶች: መመልከቻ: pdf: ማንበቢያ:"
=== renamed file 'po/ar.po' => 'po/ar.po.THIS'
=== modified file 'po/ast.po'
--- po/ast.po 2015-08-18 05:56:20 +0000
+++ po/ast.po 2015-10-08 20:57:10 +0000
@@ -7,7 +7,7 @@
msgstr ""
"Project-Id-Version: ubuntu-docviewer-app\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
-"POT-Creation-Date: 2015-07-24 11:10+0200\n"
+"POT-Creation-Date: 2015-06-24 22:48+0200\n"
"PO-Revision-Date: 2015-06-12 10:44+0000\n"
"Last-Translator: enolp <enolp@xxxxxxxxxxxxx>\n"
"Language-Team: Asturian <ast@xxxxxx>\n"
@@ -15,8 +15,13 @@
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
+<<<<<<< TREE
"X-Launchpad-Export-Date: 2015-08-18 05:56+0000\n"
"X-Generator: Launchpad (build 17690)\n"
+=======
+"X-Launchpad-Export-Date: 2015-06-26 04:58+0000\n"
+"X-Generator: Launchpad (build 17578)\n"
+>>>>>>> MERGE-SOURCE
#. TRANSLATORS: This string is used for renaming a copied file,
#. when a file with the same name already exists in user's
@@ -33,7 +38,7 @@
msgstr "copiar %1"
#: ../src/app/docviewer-application.cpp:171
-#: /home/stefano/Progetti/docviewer/build-ubuntu-docviewer-app-Desktop-Default/po/com.ubuntu.docviewer.desktop.in.in.h:1
+#: /home/m/dev/core/ubuntu-docviewer-app-icon-fix/obj-x86_64-linux-gnu/po/com.ubuntu.docviewer.desktop.in.in.h:1
msgid "Document Viewer"
msgstr "Visor de documentos"
@@ -149,32 +154,31 @@
msgid "%1 byte"
msgstr "%1 byte"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:36
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:28
msgid "Delete file"
msgstr "Desaniciar ficheru"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:37
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:29
#, qt-format
msgid "Delete %1 file"
msgid_plural "Delete %1 files"
msgstr[0] "Desaniciar %1 ficheru"
msgstr[1] "Desaniciar %1 ficheros"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:38
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:39
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:30
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:31
msgid "Are you sure you want to permanently delete this file?"
msgid_plural "Are you sure you want to permanently delete these files?"
msgstr[0] "¿De xuru que quies desaniciar dafechu esti ficheru?"
msgstr[1] "¿De xuru que quies desaniciar dafechu estos ficheros?"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:44
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:36
#: ../src/app/qml/documentPage/DocumentPagePickModeHeader.qml:27
#: ../src/app/qml/pdfView/PdfViewGotoDialog.qml:52
msgid "Cancel"
msgstr "Encaboxar"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:49
-#: ../src/app/qml/documentPage/DocumentDelegateActions.qml:25
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:41
#: ../src/app/qml/documentPage/DocumentPageSelectionModeHeader.qml:82
msgid "Delete"
msgstr "Desaniciar"
@@ -193,35 +197,47 @@
#. TRANSLATORS: %1 refers to a time formatted as Locale.ShortFormat (e.g. hh:mm). It depends on system settings.
#. http://qt-project.org/doc/qt-4.8/qlocale.html#FormatType-enum
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:32
-#: ../src/app/qml/documentPage/DocumentListDelegate.qml:37
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:35
#, qt-format
msgid "Today, %1"
msgstr "Güei, %1"
#. TRANSLATORS: %1 refers to a time formatted as Locale.ShortFormat (e.g. hh:mm). It depends on system settings.
#. http://qt-project.org/doc/qt-4.8/qlocale.html#FormatType-enum
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:37
-#: ../src/app/qml/documentPage/DocumentListDelegate.qml:42
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:40
#, qt-format
msgid "Yesterday, %1"
msgstr "Ayeri, %1"
#. TRANSLATORS: this is a datetime formatting string,
#. see http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:42
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:45
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:58
msgid "dddd, hh:mm"
msgstr "dddd, hh:mm"
#. TRANSLATORS: this is a datetime formatting string,
#. see http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:46
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:49
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:47
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:63
msgid "dd-MM-yyyy hh:mm"
msgstr "dd-MM-yyyy hh:mm"
+#. TRANSLATORS: this is a datetime formatting string, and the
+#. singlequote is an escape character.
+#. See http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
+#: ../src/app/qml/documentPage/DocumentListDelegate.qml:36
+msgid "'Today', hh:mm"
+msgstr ""
+
+#. TRANSLATORS: this is a datetime formatting string, and the
+#. singlequote is an escape character.
+#. See http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
+#: ../src/app/qml/documentPage/DocumentListDelegate.qml:42
+msgid "'Yesterday', hh:mm"
+msgstr ""
+
#: ../src/app/qml/documentPage/DocumentListView.qml:157
msgid "Today"
msgstr "Güei"
@@ -373,6 +389,6 @@
msgid "Open"
msgstr "Abrir"
-#: /home/stefano/Progetti/docviewer/build-ubuntu-docviewer-app-Desktop-Default/po/com.ubuntu.docviewer.desktop.in.in.h:2
+#: /home/m/dev/core/ubuntu-docviewer-app-icon-fix/obj-x86_64-linux-gnu/po/com.ubuntu.docviewer.desktop.in.in.h:2
msgid "documents;viewer;pdf;reader;"
msgstr "documentos;visor;pdf;llector;"
=== modified file 'po/br.po'
--- po/br.po 2015-08-26 06:10:38 +0000
+++ po/br.po 2015-10-08 20:57:10 +0000
@@ -7,16 +7,26 @@
msgstr ""
"Project-Id-Version: ubuntu-docviewer-app\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+<<<<<<< TREE
"POT-Creation-Date: 2015-07-24 11:10+0200\n"
"PO-Revision-Date: 2015-08-25 14:07+0000\n"
+=======
+"POT-Creation-Date: 2015-06-24 22:48+0200\n"
+"PO-Revision-Date: 2015-04-28 08:02+0000\n"
+>>>>>>> MERGE-SOURCE
"Last-Translator: Fohanno Thierry <thierry.fohanno@xxxxxxxxxxxx>\n"
"Language-Team: Breton <br@xxxxxx>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
+<<<<<<< TREE
"X-Launchpad-Export-Date: 2015-08-26 06:10+0000\n"
"X-Generator: Launchpad (build 17690)\n"
+=======
+"X-Launchpad-Export-Date: 2015-06-26 04:58+0000\n"
+"X-Generator: Launchpad (build 17578)\n"
+>>>>>>> MERGE-SOURCE
#. TRANSLATORS: This string is used for renaming a copied file,
#. when a file with the same name already exists in user's
@@ -33,7 +43,7 @@
msgstr "eilañ %1"
#: ../src/app/docviewer-application.cpp:171
-#: /home/stefano/Progetti/docviewer/build-ubuntu-docviewer-app-Desktop-Default/po/com.ubuntu.docviewer.desktop.in.in.h:1
+#: /home/m/dev/core/ubuntu-docviewer-app-icon-fix/obj-x86_64-linux-gnu/po/com.ubuntu.docviewer.desktop.in.in.h:1
msgid "Document Viewer"
msgstr "Lenner teulioù"
@@ -149,32 +159,31 @@
msgid "%1 byte"
msgstr "%1 okted"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:36
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:28
msgid "Delete file"
msgstr "Diverkañ ar restr"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:37
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:29
#, qt-format
msgid "Delete %1 file"
msgid_plural "Delete %1 files"
msgstr[0] "Diverkañ %1 restr"
msgstr[1] "Diverkañ %1 restr"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:38
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:39
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:30
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:31
msgid "Are you sure you want to permanently delete this file?"
msgid_plural "Are you sure you want to permanently delete these files?"
msgstr[0] "Ha sur oc'h e fell deoc'h diverkañ ar restr-mañ da viken ?"
msgstr[1] "Ha sur oc'h e fell deoc'h diverkañ ar restroù-mañ da viken ?"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:44
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:36
#: ../src/app/qml/documentPage/DocumentPagePickModeHeader.qml:27
#: ../src/app/qml/pdfView/PdfViewGotoDialog.qml:52
msgid "Cancel"
msgstr "Nullañ"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:49
-#: ../src/app/qml/documentPage/DocumentDelegateActions.qml:25
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:41
#: ../src/app/qml/documentPage/DocumentPageSelectionModeHeader.qml:82
msgid "Delete"
msgstr "Diverkañ"
@@ -193,35 +202,47 @@
#. TRANSLATORS: %1 refers to a time formatted as Locale.ShortFormat (e.g. hh:mm). It depends on system settings.
#. http://qt-project.org/doc/qt-4.8/qlocale.html#FormatType-enum
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:32
-#: ../src/app/qml/documentPage/DocumentListDelegate.qml:37
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:35
#, qt-format
msgid "Today, %1"
msgstr "Hiziv, da %1"
#. TRANSLATORS: %1 refers to a time formatted as Locale.ShortFormat (e.g. hh:mm). It depends on system settings.
#. http://qt-project.org/doc/qt-4.8/qlocale.html#FormatType-enum
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:37
-#: ../src/app/qml/documentPage/DocumentListDelegate.qml:42
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:40
#, qt-format
msgid "Yesterday, %1"
msgstr "Dec'h, da %1"
#. TRANSLATORS: this is a datetime formatting string,
#. see http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:42
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:45
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:58
msgid "dddd, hh:mm"
msgstr "dddd, hh:mm"
#. TRANSLATORS: this is a datetime formatting string,
#. see http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:46
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:49
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:47
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:63
msgid "dd-MM-yyyy hh:mm"
msgstr "dd-MM-yyyy hh:mm"
+#. TRANSLATORS: this is a datetime formatting string, and the
+#. singlequote is an escape character.
+#. See http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
+#: ../src/app/qml/documentPage/DocumentListDelegate.qml:36
+msgid "'Today', hh:mm"
+msgstr ""
+
+#. TRANSLATORS: this is a datetime formatting string, and the
+#. singlequote is an escape character.
+#. See http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
+#: ../src/app/qml/documentPage/DocumentListDelegate.qml:42
+msgid "'Yesterday', hh:mm"
+msgstr ""
+
#: ../src/app/qml/documentPage/DocumentListView.qml:157
msgid "Today"
msgstr "Hiziv"
@@ -373,6 +394,6 @@
msgid "Open"
msgstr "Digeriñ"
-#: /home/stefano/Progetti/docviewer/build-ubuntu-docviewer-app-Desktop-Default/po/com.ubuntu.docviewer.desktop.in.in.h:2
+#: /home/m/dev/core/ubuntu-docviewer-app-icon-fix/obj-x86_64-linux-gnu/po/com.ubuntu.docviewer.desktop.in.in.h:2
msgid "documents;viewer;pdf;reader;"
msgstr "teulioù;diskouezer;pdf;lenner"
=== renamed file 'po/bs.po' => 'po/bs.po.THIS'
=== modified file 'po/ca.po'
--- po/ca.po 2015-08-18 05:56:20 +0000
+++ po/ca.po 2015-10-08 20:57:10 +0000
@@ -7,7 +7,7 @@
msgstr ""
"Project-Id-Version: ubuntu-docviewer-app\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
-"POT-Creation-Date: 2015-07-24 11:10+0200\n"
+"POT-Creation-Date: 2015-06-24 22:48+0200\n"
"PO-Revision-Date: 2015-06-25 06:34+0000\n"
"Last-Translator: David Planella <david.planella@xxxxxxxxxx>\n"
"Language-Team: Catalan <ca@xxxxxx>\n"
@@ -15,8 +15,13 @@
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
+<<<<<<< TREE
"X-Launchpad-Export-Date: 2015-08-18 05:56+0000\n"
"X-Generator: Launchpad (build 17690)\n"
+=======
+"X-Launchpad-Export-Date: 2015-06-26 04:58+0000\n"
+"X-Generator: Launchpad (build 17578)\n"
+>>>>>>> MERGE-SOURCE
#. TRANSLATORS: This string is used for renaming a copied file,
#. when a file with the same name already exists in user's
@@ -33,7 +38,7 @@
msgstr "còpia %1"
#: ../src/app/docviewer-application.cpp:171
-#: /home/stefano/Progetti/docviewer/build-ubuntu-docviewer-app-Desktop-Default/po/com.ubuntu.docviewer.desktop.in.in.h:1
+#: /home/m/dev/core/ubuntu-docviewer-app-icon-fix/obj-x86_64-linux-gnu/po/com.ubuntu.docviewer.desktop.in.in.h:1
msgid "Document Viewer"
msgstr "Visualitzador de documents"
@@ -147,32 +152,31 @@
msgid "%1 byte"
msgstr "%1 byte"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:36
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:28
msgid "Delete file"
msgstr "Suprimeix el fitxer"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:37
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:29
#, qt-format
msgid "Delete %1 file"
msgid_plural "Delete %1 files"
msgstr[0] "Suprimeix %1 fitxer"
msgstr[1] "Suprimeix %1 fitxers"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:38
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:39
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:30
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:31
msgid "Are you sure you want to permanently delete this file?"
msgid_plural "Are you sure you want to permanently delete these files?"
msgstr[0] "Segur que voleu suprimir permanentment aquest fitxer?"
msgstr[1] "Segur que voleu suprimir permanentment aquests fitxers?"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:44
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:36
#: ../src/app/qml/documentPage/DocumentPagePickModeHeader.qml:27
#: ../src/app/qml/pdfView/PdfViewGotoDialog.qml:52
msgid "Cancel"
msgstr "Cancel·la"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:49
-#: ../src/app/qml/documentPage/DocumentDelegateActions.qml:25
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:41
#: ../src/app/qml/documentPage/DocumentPageSelectionModeHeader.qml:82
msgid "Delete"
msgstr "Suprimeix"
@@ -189,35 +193,47 @@
#. TRANSLATORS: %1 refers to a time formatted as Locale.ShortFormat (e.g. hh:mm). It depends on system settings.
#. http://qt-project.org/doc/qt-4.8/qlocale.html#FormatType-enum
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:32
-#: ../src/app/qml/documentPage/DocumentListDelegate.qml:37
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:35
#, qt-format
msgid "Today, %1"
msgstr "Avui, a les %1"
#. TRANSLATORS: %1 refers to a time formatted as Locale.ShortFormat (e.g. hh:mm). It depends on system settings.
#. http://qt-project.org/doc/qt-4.8/qlocale.html#FormatType-enum
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:37
-#: ../src/app/qml/documentPage/DocumentListDelegate.qml:42
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:40
#, qt-format
msgid "Yesterday, %1"
msgstr "Ahir, a les %1"
#. TRANSLATORS: this is a datetime formatting string,
#. see http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:42
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:45
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:58
msgid "dddd, hh:mm"
msgstr "dddd, H.mm"
#. TRANSLATORS: this is a datetime formatting string,
#. see http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:46
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:49
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:47
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:63
msgid "dd-MM-yyyy hh:mm"
msgstr "dd/MM/yyyy H.mm"
+#. TRANSLATORS: this is a datetime formatting string, and the
+#. singlequote is an escape character.
+#. See http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
+#: ../src/app/qml/documentPage/DocumentListDelegate.qml:36
+msgid "'Today', hh:mm"
+msgstr "'Avui', a les H.mm"
+
+#. TRANSLATORS: this is a datetime formatting string, and the
+#. singlequote is an escape character.
+#. See http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
+#: ../src/app/qml/documentPage/DocumentListDelegate.qml:42
+msgid "'Yesterday', hh:mm"
+msgstr "'Ahir', a les H.mm"
+
#: ../src/app/qml/documentPage/DocumentListView.qml:157
msgid "Today"
msgstr "Avui"
@@ -369,6 +385,6 @@
msgid "Open"
msgstr "Obre"
-#: /home/stefano/Progetti/docviewer/build-ubuntu-docviewer-app-Desktop-Default/po/com.ubuntu.docviewer.desktop.in.in.h:2
+#: /home/m/dev/core/ubuntu-docviewer-app-icon-fix/obj-x86_64-linux-gnu/po/com.ubuntu.docviewer.desktop.in.in.h:2
msgid "documents;viewer;pdf;reader;"
msgstr "documents;visualitzador;pdf;lector;"
=== modified file 'po/com.ubuntu.docviewer.pot'
--- po/com.ubuntu.docviewer.pot 2015-07-24 09:12:38 +0000
+++ po/com.ubuntu.docviewer.pot 2015-10-08 20:57:10 +0000
@@ -8,7 +8,7 @@
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-07-24 11:10+0200\n"
+"POT-Creation-Date: 2015-10-08 23:48+0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@xxxxxx>\n"
@@ -18,26 +18,13 @@
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
-#. TRANSLATORS: This string is used for renaming a copied file,
-#. when a file with the same name already exists in user's
-#. Documents folder.
-#.
-#. e.g. "Manual_Aquaris_E4.5_ubuntu_EN.pdf" will become
-#. "Manual_Aquaris_E4.5_ubuntu_EN (copy 2).pdf"
-#.
-#. where "2" is given by the argument "%1"
-#.
-#: ../src/app/content-communicator.cpp:105
-#, qt-format
-msgid "copy %1"
-msgstr ""
-
-#: ../src/app/docviewer-application.cpp:171
-#: /home/stefano/Progetti/docviewer/build-ubuntu-docviewer-app-Desktop-Default/po/com.ubuntu.docviewer.desktop.in.in.h:1
+#: ../src/app/docviewer-application.cpp:162
+#: /home/qtros/dev/build-reboot-qsg-impress-support-Desktop-Default/po/com.ubuntu.docviewer.desktop.in.in.h:1
msgid "Document Viewer"
msgstr ""
#: ../src/app/qml/common/DetailsPage.qml:27
+#: ../src/app/qml/loView/LOViewDefaultHeader.qml:114
#: ../src/app/qml/pdfView/PdfViewDefaultHeader.qml:97
#: ../src/app/qml/textView/TextViewDefaultHeader.qml:83
msgid "Details"
@@ -76,6 +63,7 @@
#: ../src/app/qml/common/RejectedImportDialog.qml:38
#: ../src/app/qml/documentPage/DocumentPageSelectionModeHeader.qml:32
#: ../src/app/qml/documentPage/SortSettingsDialog.qml:53
+#: ../src/app/qml/loView/LOViewDefaultHeader.qml:79
#: ../src/app/qml/pdfView/PdfViewDefaultHeader.qml:61
#: ../src/app/qml/textView/TextViewDefaultHeader.qml:61
msgid "Close"
@@ -101,10 +89,6 @@
msgstr[0] ""
msgstr[1] ""
-#: ../src/app/qml/common/ToastWithAction.qml:97
-msgid "Dismiss"
-msgstr ""
-
#: ../src/app/qml/common/UnknownTypeDialog.qml:26
msgid "Unknown file type"
msgstr ""
@@ -166,7 +150,7 @@
msgstr[1] ""
#: ../src/app/qml/documentPage/DeleteFileDialog.qml:44
-#: ../src/app/qml/documentPage/DocumentPagePickModeHeader.qml:27
+#: ../src/app/qml/documentPage/DocumentPagePickModeHeader.qml:28
#: ../src/app/qml/pdfView/PdfViewGotoDialog.qml:52
msgid "Cancel"
msgstr ""
@@ -177,14 +161,18 @@
msgid "Delete"
msgstr ""
+#: ../src/app/qml/documentPage/DocumentDelegateActions.qml:43
+msgid "Share"
+msgstr ""
+
#: ../src/app/qml/documentPage/DocumentEmptyState.qml:24
msgid "No document found"
msgstr ""
-#: ../src/app/qml/documentPage/DocumentEmptyState.qml:28
+#: ../src/app/qml/documentPage/DocumentEmptyState.qml:25
msgid ""
"Connect your device to any computer and simply drag files to the Documents "
-"folder."
+"folder or insert removable media with documents."
msgstr ""
#. TRANSLATORS: %1 refers to a time formatted as Locale.ShortFormat (e.g. hh:mm). It depends on system settings.
@@ -218,23 +206,23 @@
msgid "dd-MM-yyyy hh:mm"
msgstr ""
-#: ../src/app/qml/documentPage/DocumentListView.qml:157
+#: ../src/app/qml/documentPage/DocumentListView.qml:167
msgid "Today"
msgstr ""
-#: ../src/app/qml/documentPage/DocumentListView.qml:160
+#: ../src/app/qml/documentPage/DocumentListView.qml:170
msgid "Yesterday"
msgstr ""
-#: ../src/app/qml/documentPage/DocumentListView.qml:163
+#: ../src/app/qml/documentPage/DocumentListView.qml:173
msgid "Earlier this week"
msgstr ""
-#: ../src/app/qml/documentPage/DocumentListView.qml:166
+#: ../src/app/qml/documentPage/DocumentListView.qml:176
msgid "Earlier this month"
msgstr ""
-#: ../src/app/qml/documentPage/DocumentListView.qml:168
+#: ../src/app/qml/documentPage/DocumentListView.qml:178
msgid "Even earlier..."
msgstr ""
@@ -251,20 +239,22 @@
msgstr ""
#: ../src/app/qml/documentPage/DocumentPageDefaultHeader.qml:46
-#: ../src/app/qml/documentPage/DocumentPagePickModeHeader.qml:35
+#: ../src/app/qml/documentPage/DocumentPagePickModeHeader.qml:41
msgid "Switch to single column list"
msgstr ""
#: ../src/app/qml/documentPage/DocumentPageDefaultHeader.qml:46
-#: ../src/app/qml/documentPage/DocumentPagePickModeHeader.qml:35
+#: ../src/app/qml/documentPage/DocumentPagePickModeHeader.qml:41
msgid "Switch to grid"
msgstr ""
-#: ../src/app/qml/documentPage/DocumentPagePickModeHeader.qml:43
+#: ../src/app/qml/documentPage/DocumentPagePickModeHeader.qml:49
msgid "Pick"
msgstr ""
#: ../src/app/qml/documentPage/DocumentPageSearchHeader.qml:27
+#: ../src/app/qml/loView/LOViewDefaultHeader.qml:79
+#: ../src/app/qml/loView/LOViewPage.qml:191
#: ../src/app/qml/pdfView/PdfViewDefaultHeader.qml:61
#: ../src/app/qml/textView/TextViewDefaultHeader.qml:61
msgid "Back"
@@ -291,6 +281,10 @@
"Please ensure that your query is not misspelled and/or try a different query."
msgstr ""
+#: ../src/app/qml/documentPage/SharePage.qml:23
+msgid "Share to"
+msgstr ""
+
#: ../src/app/qml/documentPage/SortSettingsDialog.qml:26
msgid "Sorting settings"
msgstr ""
@@ -311,6 +305,92 @@
msgid "Reverse order"
msgstr ""
+#: ../src/app/qml/loView/LOViewDefaultHeader.qml:56
+#: ../src/app/qml/textView/TextView.qml:42
+msgid "Loading..."
+msgstr ""
+
+#: ../src/app/qml/loView/LOViewDefaultHeader.qml:60
+msgid "LibreOffice text document"
+msgstr ""
+
+#: ../src/app/qml/loView/LOViewDefaultHeader.qml:62
+msgid "LibreOffice spread sheet"
+msgstr ""
+
+#: ../src/app/qml/loView/LOViewDefaultHeader.qml:64
+msgid "LibreOffice presentation"
+msgstr ""
+
+#: ../src/app/qml/loView/LOViewDefaultHeader.qml:66
+msgid "LibreOffice Draw document"
+msgstr ""
+
+#: ../src/app/qml/loView/LOViewDefaultHeader.qml:68
+msgid "Unknown LibreOffice document"
+msgstr ""
+
+#: ../src/app/qml/loView/LOViewDefaultHeader.qml:70
+msgid "Unknown type document"
+msgstr ""
+
+#: ../src/app/qml/loView/LOViewDefaultHeader.qml:95
+msgid "Show zoom controls"
+msgstr ""
+
+#: ../src/app/qml/loView/LOViewDefaultHeader.qml:102
+#: ../src/app/qml/pdfView/PdfViewDefaultHeader.qml:85
+msgid "Go to page..."
+msgstr ""
+
+#: ../src/app/qml/loView/LOViewDefaultHeader.qml:108
+#: ../src/app/qml/pdfView/PdfViewDefaultHeader.qml:91
+#: ../src/app/qml/textView/TextViewDefaultHeader.qml:77
+msgid "Disable night mode"
+msgstr ""
+
+#: ../src/app/qml/loView/LOViewDefaultHeader.qml:108
+#: ../src/app/qml/pdfView/PdfViewDefaultHeader.qml:91
+#: ../src/app/qml/textView/TextViewDefaultHeader.qml:77
+msgid "Enable night mode"
+msgstr ""
+
+#: ../src/app/qml/loView/LOViewPage.qml:34
+#: ../src/app/qml/loView/LOViewPage.qml:189
+msgid "Slides"
+msgstr ""
+
+#: ../src/app/qml/loView/LOViewZoomHeader.qml:42
+msgid "Hide zoom controls"
+msgstr ""
+
+#: ../src/app/qml/loView/LOViewZoomHeader.qml:49
+msgid "Zoom in"
+msgstr ""
+
+#: ../src/app/qml/loView/LOViewZoomHeader.qml:55
+msgid "Zoom out"
+msgstr ""
+
+#: ../src/app/qml/loView/SlideControllerPanel.qml:62
+#, qt-format
+msgid "Slide %1 of %2"
+msgstr ""
+
+#: ../src/app/qml/loView/ZoomSelector.qml:29
+msgid "Automatic (Fit width)"
+msgstr ""
+
+#: ../src/app/qml/loView/ZoomSelector.qml:94
+#, qt-format
+msgid "Automatic (%1%)"
+msgstr ""
+
+#: ../src/app/qml/loView/ZoomSelector.qml:95
+#, qt-format
+msgid "Zoom: %1%"
+msgstr ""
+
#. TRANSLATORS: "Contents" refers to the "Table of Contents" of a PDF document.
#: ../src/app/qml/pdfView/PdfContentsPage.qml:32
#: ../src/app/qml/pdfView/PdfView.qml:37
@@ -328,20 +408,6 @@
msgid "Page %1 of %2"
msgstr ""
-#: ../src/app/qml/pdfView/PdfViewDefaultHeader.qml:85
-msgid "Go to page..."
-msgstr ""
-
-#: ../src/app/qml/pdfView/PdfViewDefaultHeader.qml:91
-#: ../src/app/qml/textView/TextViewDefaultHeader.qml:77
-msgid "Disable night mode"
-msgstr ""
-
-#: ../src/app/qml/pdfView/PdfViewDefaultHeader.qml:91
-#: ../src/app/qml/textView/TextViewDefaultHeader.qml:77
-msgid "Enable night mode"
-msgstr ""
-
#: ../src/app/qml/pdfView/PdfViewGotoDialog.qml:25
msgid "Go to page"
msgstr ""
@@ -355,20 +421,20 @@
msgid "GO!"
msgstr ""
-#: ../src/app/qml/textView/TextView.qml:42
-msgid "Loading..."
-msgstr ""
-
-#: ../src/app/qml/ubuntu-docviewer-app.qml:240
-msgid "Document successfully imported!"
-msgid_plural "Documents successfully imported!"
-msgstr[0] ""
-msgstr[1] ""
-
-#: ../src/app/qml/ubuntu-docviewer-app.qml:243
-msgid "Open"
-msgstr ""
-
-#: /home/stefano/Progetti/docviewer/build-ubuntu-docviewer-app-Desktop-Default/po/com.ubuntu.docviewer.desktop.in.in.h:2
+#. TRANSLATORS: This string is used for renaming a copied file,
+#. when a file with the same name already exists in user's
+#. Documents folder.
+#.
+#. e.g. "Manual_Aquaris_E4.5_ubuntu_EN.pdf" will become
+#. "Manual_Aquaris_E4.5_ubuntu_EN (copy 2).pdf"
+#.
+#. where "2" is given by the argument "%1"
+#.
+#: ../src/plugin/file-qml-plugin/docviewerutils.cpp:101
+#, qt-format
+msgid "copy %1"
+msgstr ""
+
+#: /home/qtros/dev/build-reboot-qsg-impress-support-Desktop-Default/po/com.ubuntu.docviewer.desktop.in.in.h:2
msgid "documents;viewer;pdf;reader;"
msgstr ""
=== modified file 'po/cs.po'
--- po/cs.po 2015-08-18 05:56:20 +0000
+++ po/cs.po 2015-10-08 20:57:10 +0000
@@ -7,7 +7,7 @@
msgstr ""
"Project-Id-Version: ubuntu-docviewer-app\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
-"POT-Creation-Date: 2015-07-24 11:10+0200\n"
+"POT-Creation-Date: 2015-06-24 22:48+0200\n"
"PO-Revision-Date: 2015-03-04 13:53+0000\n"
"Last-Translator: Vojtěch Daněk <vdanek@xxxxxxxxxxx>\n"
"Language-Team: Czech <cs@xxxxxx>\n"
@@ -15,8 +15,13 @@
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
+<<<<<<< TREE
"X-Launchpad-Export-Date: 2015-08-18 05:56+0000\n"
"X-Generator: Launchpad (build 17690)\n"
+=======
+"X-Launchpad-Export-Date: 2015-06-26 04:58+0000\n"
+"X-Generator: Launchpad (build 17578)\n"
+>>>>>>> MERGE-SOURCE
#. TRANSLATORS: This string is used for renaming a copied file,
#. when a file with the same name already exists in user's
@@ -33,7 +38,7 @@
msgstr ""
#: ../src/app/docviewer-application.cpp:171
-#: /home/stefano/Progetti/docviewer/build-ubuntu-docviewer-app-Desktop-Default/po/com.ubuntu.docviewer.desktop.in.in.h:1
+#: /home/m/dev/core/ubuntu-docviewer-app-icon-fix/obj-x86_64-linux-gnu/po/com.ubuntu.docviewer.desktop.in.in.h:1
msgid "Document Viewer"
msgstr ""
@@ -147,32 +152,31 @@
msgid "%1 byte"
msgstr ""
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:36
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:28
msgid "Delete file"
msgstr "Smazat soubor"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:37
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:29
#, qt-format
msgid "Delete %1 file"
msgid_plural "Delete %1 files"
msgstr[0] ""
msgstr[1] ""
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:38
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:39
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:30
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:31
msgid "Are you sure you want to permanently delete this file?"
msgid_plural "Are you sure you want to permanently delete these files?"
msgstr[0] ""
msgstr[1] ""
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:44
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:36
#: ../src/app/qml/documentPage/DocumentPagePickModeHeader.qml:27
#: ../src/app/qml/pdfView/PdfViewGotoDialog.qml:52
msgid "Cancel"
msgstr "Zrušit"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:49
-#: ../src/app/qml/documentPage/DocumentDelegateActions.qml:25
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:41
#: ../src/app/qml/documentPage/DocumentPageSelectionModeHeader.qml:82
msgid "Delete"
msgstr "Smazat"
@@ -189,35 +193,47 @@
#. TRANSLATORS: %1 refers to a time formatted as Locale.ShortFormat (e.g. hh:mm). It depends on system settings.
#. http://qt-project.org/doc/qt-4.8/qlocale.html#FormatType-enum
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:32
-#: ../src/app/qml/documentPage/DocumentListDelegate.qml:37
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:35
#, qt-format
msgid "Today, %1"
msgstr ""
#. TRANSLATORS: %1 refers to a time formatted as Locale.ShortFormat (e.g. hh:mm). It depends on system settings.
#. http://qt-project.org/doc/qt-4.8/qlocale.html#FormatType-enum
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:37
-#: ../src/app/qml/documentPage/DocumentListDelegate.qml:42
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:40
#, qt-format
msgid "Yesterday, %1"
msgstr ""
#. TRANSLATORS: this is a datetime formatting string,
#. see http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:42
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:45
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:58
msgid "dddd, hh:mm"
msgstr "dddd, hh:mm"
#. TRANSLATORS: this is a datetime formatting string,
#. see http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:46
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:49
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:47
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:63
msgid "dd-MM-yyyy hh:mm"
msgstr "dd-MM-yyyy hh:mm"
+#. TRANSLATORS: this is a datetime formatting string, and the
+#. singlequote is an escape character.
+#. See http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
+#: ../src/app/qml/documentPage/DocumentListDelegate.qml:36
+msgid "'Today', hh:mm"
+msgstr ""
+
+#. TRANSLATORS: this is a datetime formatting string, and the
+#. singlequote is an escape character.
+#. See http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
+#: ../src/app/qml/documentPage/DocumentListDelegate.qml:42
+msgid "'Yesterday', hh:mm"
+msgstr ""
+
#: ../src/app/qml/documentPage/DocumentListView.qml:157
msgid "Today"
msgstr "Dnes"
@@ -369,6 +385,6 @@
msgid "Open"
msgstr ""
-#: /home/stefano/Progetti/docviewer/build-ubuntu-docviewer-app-Desktop-Default/po/com.ubuntu.docviewer.desktop.in.in.h:2
+#: /home/m/dev/core/ubuntu-docviewer-app-icon-fix/obj-x86_64-linux-gnu/po/com.ubuntu.docviewer.desktop.in.in.h:2
msgid "documents;viewer;pdf;reader;"
msgstr ""
=== renamed file 'po/cy.po' => 'po/cy.po.THIS'
=== modified file 'po/da.po'
--- po/da.po 2015-08-18 05:56:20 +0000
+++ po/da.po 2015-10-08 20:57:10 +0000
@@ -7,7 +7,7 @@
msgstr ""
"Project-Id-Version: ubuntu-docviewer-app\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
-"POT-Creation-Date: 2015-07-24 11:10+0200\n"
+"POT-Creation-Date: 2015-06-24 22:48+0200\n"
"PO-Revision-Date: 2015-03-26 14:46+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Danish <da@xxxxxx>\n"
@@ -15,8 +15,13 @@
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
+<<<<<<< TREE
"X-Launchpad-Export-Date: 2015-08-18 05:56+0000\n"
"X-Generator: Launchpad (build 17690)\n"
+=======
+"X-Launchpad-Export-Date: 2015-06-26 04:58+0000\n"
+"X-Generator: Launchpad (build 17578)\n"
+>>>>>>> MERGE-SOURCE
#. TRANSLATORS: This string is used for renaming a copied file,
#. when a file with the same name already exists in user's
@@ -33,7 +38,7 @@
msgstr ""
#: ../src/app/docviewer-application.cpp:171
-#: /home/stefano/Progetti/docviewer/build-ubuntu-docviewer-app-Desktop-Default/po/com.ubuntu.docviewer.desktop.in.in.h:1
+#: /home/m/dev/core/ubuntu-docviewer-app-icon-fix/obj-x86_64-linux-gnu/po/com.ubuntu.docviewer.desktop.in.in.h:1
msgid "Document Viewer"
msgstr ""
@@ -147,32 +152,31 @@
msgid "%1 byte"
msgstr ""
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:36
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:28
msgid "Delete file"
msgstr ""
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:37
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:29
#, qt-format
msgid "Delete %1 file"
msgid_plural "Delete %1 files"
msgstr[0] ""
msgstr[1] ""
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:38
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:39
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:30
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:31
msgid "Are you sure you want to permanently delete this file?"
msgid_plural "Are you sure you want to permanently delete these files?"
msgstr[0] ""
msgstr[1] ""
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:44
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:36
#: ../src/app/qml/documentPage/DocumentPagePickModeHeader.qml:27
#: ../src/app/qml/pdfView/PdfViewGotoDialog.qml:52
msgid "Cancel"
msgstr ""
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:49
-#: ../src/app/qml/documentPage/DocumentDelegateActions.qml:25
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:41
#: ../src/app/qml/documentPage/DocumentPageSelectionModeHeader.qml:82
msgid "Delete"
msgstr ""
@@ -189,35 +193,47 @@
#. TRANSLATORS: %1 refers to a time formatted as Locale.ShortFormat (e.g. hh:mm). It depends on system settings.
#. http://qt-project.org/doc/qt-4.8/qlocale.html#FormatType-enum
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:32
-#: ../src/app/qml/documentPage/DocumentListDelegate.qml:37
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:35
#, qt-format
msgid "Today, %1"
msgstr ""
#. TRANSLATORS: %1 refers to a time formatted as Locale.ShortFormat (e.g. hh:mm). It depends on system settings.
#. http://qt-project.org/doc/qt-4.8/qlocale.html#FormatType-enum
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:37
-#: ../src/app/qml/documentPage/DocumentListDelegate.qml:42
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:40
#, qt-format
msgid "Yesterday, %1"
msgstr ""
#. TRANSLATORS: this is a datetime formatting string,
#. see http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:42
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:45
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:58
msgid "dddd, hh:mm"
msgstr ""
#. TRANSLATORS: this is a datetime formatting string,
#. see http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:46
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:49
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:47
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:63
msgid "dd-MM-yyyy hh:mm"
msgstr ""
+#. TRANSLATORS: this is a datetime formatting string, and the
+#. singlequote is an escape character.
+#. See http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
+#: ../src/app/qml/documentPage/DocumentListDelegate.qml:36
+msgid "'Today', hh:mm"
+msgstr ""
+
+#. TRANSLATORS: this is a datetime formatting string, and the
+#. singlequote is an escape character.
+#. See http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
+#: ../src/app/qml/documentPage/DocumentListDelegate.qml:42
+msgid "'Yesterday', hh:mm"
+msgstr ""
+
#: ../src/app/qml/documentPage/DocumentListView.qml:157
msgid "Today"
msgstr ""
@@ -369,6 +385,6 @@
msgid "Open"
msgstr ""
-#: /home/stefano/Progetti/docviewer/build-ubuntu-docviewer-app-Desktop-Default/po/com.ubuntu.docviewer.desktop.in.in.h:2
+#: /home/m/dev/core/ubuntu-docviewer-app-icon-fix/obj-x86_64-linux-gnu/po/com.ubuntu.docviewer.desktop.in.in.h:2
msgid "documents;viewer;pdf;reader;"
msgstr ""
=== modified file 'po/de.po'
--- po/de.po 2015-08-18 05:56:20 +0000
+++ po/de.po 2015-10-08 20:57:10 +0000
@@ -7,16 +7,21 @@
msgstr ""
"Project-Id-Version: ubuntu-docviewer-app\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
-"POT-Creation-Date: 2015-07-24 11:10+0200\n"
-"PO-Revision-Date: 2015-06-29 12:21+0000\n"
-"Last-Translator: Torsten Franz <Unknown>\n"
+"POT-Creation-Date: 2015-06-24 22:48+0200\n"
+"PO-Revision-Date: 2015-06-26 14:06+0000\n"
+"Last-Translator: Phillip Sz <Unknown>\n"
"Language-Team: German <de@xxxxxx>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
+<<<<<<< TREE
"X-Launchpad-Export-Date: 2015-08-18 05:56+0000\n"
"X-Generator: Launchpad (build 17690)\n"
+=======
+"X-Launchpad-Export-Date: 2015-06-27 05:35+0000\n"
+"X-Generator: Launchpad (build 17578)\n"
+>>>>>>> MERGE-SOURCE
#. TRANSLATORS: This string is used for renaming a copied file,
#. when a file with the same name already exists in user's
@@ -33,7 +38,7 @@
msgstr "Kopie %1"
#: ../src/app/docviewer-application.cpp:171
-#: /home/stefano/Progetti/docviewer/build-ubuntu-docviewer-app-Desktop-Default/po/com.ubuntu.docviewer.desktop.in.in.h:1
+#: /home/m/dev/core/ubuntu-docviewer-app-icon-fix/obj-x86_64-linux-gnu/po/com.ubuntu.docviewer.desktop.in.in.h:1
msgid "Document Viewer"
msgstr "Dokumentenbetrachter"
@@ -149,33 +154,32 @@
msgid "%1 byte"
msgstr "%1 Byte"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:36
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:28
msgid "Delete file"
msgstr "Datei löschen"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:37
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:29
#, qt-format
msgid "Delete %1 file"
msgid_plural "Delete %1 files"
msgstr[0] "%1 Datei löschen"
msgstr[1] "%1 Dateien löschen"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:38
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:39
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:30
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:31
msgid "Are you sure you want to permanently delete this file?"
msgid_plural "Are you sure you want to permanently delete these files?"
msgstr[0] "Sind Sie sicher, dass Sie diese Datei dauerhaft löschen möchten?"
msgstr[1] ""
"Sind Sie sicher, dass Sie diese Dateien dauerhaft löschen möchten?"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:44
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:36
#: ../src/app/qml/documentPage/DocumentPagePickModeHeader.qml:27
#: ../src/app/qml/pdfView/PdfViewGotoDialog.qml:52
msgid "Cancel"
msgstr "Abbrechen"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:49
-#: ../src/app/qml/documentPage/DocumentDelegateActions.qml:25
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:41
#: ../src/app/qml/documentPage/DocumentPageSelectionModeHeader.qml:82
msgid "Delete"
msgstr "Löschen"
@@ -194,35 +198,47 @@
#. TRANSLATORS: %1 refers to a time formatted as Locale.ShortFormat (e.g. hh:mm). It depends on system settings.
#. http://qt-project.org/doc/qt-4.8/qlocale.html#FormatType-enum
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:32
-#: ../src/app/qml/documentPage/DocumentListDelegate.qml:37
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:35
#, qt-format
msgid "Today, %1"
msgstr "Heute, %1"
#. TRANSLATORS: %1 refers to a time formatted as Locale.ShortFormat (e.g. hh:mm). It depends on system settings.
#. http://qt-project.org/doc/qt-4.8/qlocale.html#FormatType-enum
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:37
-#: ../src/app/qml/documentPage/DocumentListDelegate.qml:42
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:40
#, qt-format
msgid "Yesterday, %1"
msgstr "Gestern, %1"
#. TRANSLATORS: this is a datetime formatting string,
#. see http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:42
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:45
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:58
msgid "dddd, hh:mm"
msgstr "dddd, hh:mm"
#. TRANSLATORS: this is a datetime formatting string,
#. see http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:46
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:49
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:47
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:63
msgid "dd-MM-yyyy hh:mm"
msgstr "dd.MM.yyyy hh:mm"
+#. TRANSLATORS: this is a datetime formatting string, and the
+#. singlequote is an escape character.
+#. See http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
+#: ../src/app/qml/documentPage/DocumentListDelegate.qml:36
+msgid "'Today', hh:mm"
+msgstr ""
+
+#. TRANSLATORS: this is a datetime formatting string, and the
+#. singlequote is an escape character.
+#. See http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
+#: ../src/app/qml/documentPage/DocumentListDelegate.qml:42
+msgid "'Yesterday', hh:mm"
+msgstr ""
+
#: ../src/app/qml/documentPage/DocumentListView.qml:157
msgid "Today"
msgstr "Heute"
@@ -253,7 +269,7 @@
#: ../src/app/qml/documentPage/DocumentPageDefaultHeader.qml:37
msgid "Sorting settings..."
-msgstr "Sortiereinstellungen …"
+msgstr ""
#: ../src/app/qml/documentPage/DocumentPageDefaultHeader.qml:46
#: ../src/app/qml/documentPage/DocumentPagePickModeHeader.qml:35
@@ -277,7 +293,7 @@
#: ../src/app/qml/documentPage/DocumentPageSearchHeader.qml:47
msgid "search in documents..."
-msgstr "In Dokumenten suchen …"
+msgstr ""
#: ../src/app/qml/documentPage/DocumentPageSelectionModeHeader.qml:52
msgid "Select None"
@@ -289,34 +305,32 @@
#: ../src/app/qml/documentPage/SearchEmptyState.qml:24
msgid "No matching document found"
-msgstr "Kein passendes Dokument gefunden"
+msgstr ""
#: ../src/app/qml/documentPage/SearchEmptyState.qml:26
msgid ""
"Please ensure that your query is not misspelled and/or try a different query."
msgstr ""
-"Bitte sicherstellen, dass die Anfrage nicht falsch geschrieben ist und/oder "
-"eine andere Anfrage versuchen."
#: ../src/app/qml/documentPage/SortSettingsDialog.qml:26
msgid "Sorting settings"
-msgstr "Sortiereinstellungen"
+msgstr ""
#: ../src/app/qml/documentPage/SortSettingsDialog.qml:31
msgid "Sort by date (Latest first)"
-msgstr "Sortiert nach Datum (Letztes zuerst)"
+msgstr ""
#: ../src/app/qml/documentPage/SortSettingsDialog.qml:32
msgid "Sort by name (A-Z)"
-msgstr "Sortiert nach Name (A-Z)"
+msgstr ""
#: ../src/app/qml/documentPage/SortSettingsDialog.qml:33
msgid "Sort by size (Smaller first)"
-msgstr "Sortiert nach Größe (Kleinstes zuerst)"
+msgstr ""
#: ../src/app/qml/documentPage/SortSettingsDialog.qml:47
msgid "Reverse order"
-msgstr "Umgekehrte Reihenfolge"
+msgstr ""
#. TRANSLATORS: "Contents" refers to the "Table of Contents" of a PDF document.
#: ../src/app/qml/pdfView/PdfContentsPage.qml:32
@@ -376,6 +390,6 @@
msgid "Open"
msgstr "Öffnen"
-#: /home/stefano/Progetti/docviewer/build-ubuntu-docviewer-app-Desktop-Default/po/com.ubuntu.docviewer.desktop.in.in.h:2
+#: /home/m/dev/core/ubuntu-docviewer-app-icon-fix/obj-x86_64-linux-gnu/po/com.ubuntu.docviewer.desktop.in.in.h:2
msgid "documents;viewer;pdf;reader;"
msgstr "Dokumente;Betrachter;PDF;Leser;Dokumentenbetrachter;PDF-Betrachter"
=== modified file 'po/el.po'
--- po/el.po 2015-08-18 05:56:20 +0000
+++ po/el.po 2015-10-08 20:57:10 +0000
@@ -7,16 +7,21 @@
msgstr ""
"Project-Id-Version: ubuntu-docviewer-app\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
-"POT-Creation-Date: 2015-07-24 11:10+0200\n"
-"PO-Revision-Date: 2015-07-17 10:02+0000\n"
-"Last-Translator: Simos Xenitellis <Unknown>\n"
+"POT-Creation-Date: 2015-06-24 22:48+0200\n"
+"PO-Revision-Date: 2015-03-08 18:24+0000\n"
+"Last-Translator: Aggelos Arnaoutis <angelosarn@xxxxxxxxxxx>\n"
"Language-Team: Greek <el@xxxxxx>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
+<<<<<<< TREE
"X-Launchpad-Export-Date: 2015-08-18 05:56+0000\n"
"X-Generator: Launchpad (build 17690)\n"
+=======
+"X-Launchpad-Export-Date: 2015-06-26 04:58+0000\n"
+"X-Generator: Launchpad (build 17578)\n"
+>>>>>>> MERGE-SOURCE
#. TRANSLATORS: This string is used for renaming a copied file,
#. when a file with the same name already exists in user's
@@ -30,12 +35,12 @@
#: ../src/app/content-communicator.cpp:105
#, qt-format
msgid "copy %1"
-msgstr "αντίγραφο %1"
+msgstr ""
#: ../src/app/docviewer-application.cpp:171
-#: /home/stefano/Progetti/docviewer/build-ubuntu-docviewer-app-Desktop-Default/po/com.ubuntu.docviewer.desktop.in.in.h:1
+#: /home/m/dev/core/ubuntu-docviewer-app-icon-fix/obj-x86_64-linux-gnu/po/com.ubuntu.docviewer.desktop.in.in.h:1
msgid "Document Viewer"
-msgstr "Προβολή εγγράφων"
+msgstr "Προβολέας εγγράφων"
#: ../src/app/qml/common/DetailsPage.qml:27
#: ../src/app/qml/pdfView/PdfViewDefaultHeader.qml:97
@@ -83,27 +88,27 @@
#: ../src/app/qml/common/PickImportedDialog.qml:29
msgid "Multiple documents imported"
-msgstr "Εισήχθησαν πολλαπλά έγγραφα"
+msgstr ""
#: ../src/app/qml/common/PickImportedDialog.qml:30
msgid "Choose which one to open:"
-msgstr "Επιλέξτε ποιο να ανοίξετε:"
+msgstr ""
#: ../src/app/qml/common/RejectedImportDialog.qml:28
msgid "File not supported"
msgid_plural "Files not supported"
-msgstr[0] "Δεν υποστηρίζεται το αρχείο"
-msgstr[1] "Δεν υποστηρίζονται τα αρχεία"
+msgstr[0] ""
+msgstr[1] ""
#: ../src/app/qml/common/RejectedImportDialog.qml:29
msgid "Following document has not been imported:"
msgid_plural "Following documents have not been imported:"
-msgstr[0] "Το παρακάτω έγγραφο δεν εισήχθη:"
-msgstr[1] "Τα παρακάτω έγγραφα δεν εισήχθησαν:"
+msgstr[0] ""
+msgstr[1] ""
#: ../src/app/qml/common/ToastWithAction.qml:97
msgid "Dismiss"
-msgstr "Κλείσιμο"
+msgstr ""
#: ../src/app/qml/common/UnknownTypeDialog.qml:26
msgid "Unknown file type"
@@ -115,7 +120,7 @@
"as a plain text?"
msgstr ""
"Συγγνωμή αλλά δεν είναι δυνατό να βρεθεί τρόπος να εμφανιστεί αυτό το "
-"αρχείο. Θέλετε να το ανοίξετα ως απλό κείμενο;"
+"αρχείο. Θέλετε να το ανοίξετα σαν απλό κείμενο;"
#: ../src/app/qml/common/UnknownTypeDialog.qml:29
msgid "Yes"
@@ -147,80 +152,91 @@
#: ../src/app/qml/common/utils.js:33
#, qt-format
msgid "%1 byte"
-msgstr "%1 byte"
+msgstr ""
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:36
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:28
msgid "Delete file"
msgstr "Διαγραφή αρχείου"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:37
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:29
#, qt-format
msgid "Delete %1 file"
msgid_plural "Delete %1 files"
msgstr[0] "ΔΙαγραφή %1 αρχείου"
msgstr[1] "Διαγραφή %1 αρχείων"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:38
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:39
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:30
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:31
msgid "Are you sure you want to permanently delete this file?"
msgid_plural "Are you sure you want to permanently delete these files?"
-msgstr[0] "Θέλετε σίγουρα να διαγράψετε για πάντα αυτό το αρχείο;"
-msgstr[1] "Θέλετε σίγουρα να διαγράψετε για πάντα αυτά τα αρχεία;"
+msgstr[0] "Είστε σίγουρος πως θέλετε να διαγράψετε μόνιμα αυτό το αρχείο;"
+msgstr[1] "Είστε σίγουρος πως θέλετε να διαγράψετε μόνιμα αυτά τα αρχεία;"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:44
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:36
#: ../src/app/qml/documentPage/DocumentPagePickModeHeader.qml:27
#: ../src/app/qml/pdfView/PdfViewGotoDialog.qml:52
msgid "Cancel"
-msgstr "Ακύρωση"
+msgstr ""
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:49
-#: ../src/app/qml/documentPage/DocumentDelegateActions.qml:25
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:41
#: ../src/app/qml/documentPage/DocumentPageSelectionModeHeader.qml:82
msgid "Delete"
msgstr "Διαγραφή"
#: ../src/app/qml/documentPage/DocumentEmptyState.qml:24
msgid "No document found"
-msgstr "Δεν βρέθηκαν έγγραφα"
+msgstr "Κανένα έγγραφο δεν βρέθηκε"
#: ../src/app/qml/documentPage/DocumentEmptyState.qml:28
msgid ""
"Connect your device to any computer and simply drag files to the Documents "
"folder."
msgstr ""
-"Συνδέστε τη συσκευή σας σε οποιονδήποτε υπολογιστή και απλά σύρτε αρχεία στο "
-"φάκελο Έγγραφα."
+"Συνεστε την συσκευή σας σε οποιονδήποτε υπολογιστή και απλά σύτερε αρχεία "
+"στον φάκελο Έγγραφα."
#. TRANSLATORS: %1 refers to a time formatted as Locale.ShortFormat (e.g. hh:mm). It depends on system settings.
#. http://qt-project.org/doc/qt-4.8/qlocale.html#FormatType-enum
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:32
-#: ../src/app/qml/documentPage/DocumentListDelegate.qml:37
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:35
#, qt-format
msgid "Today, %1"
msgstr "Σήμερα, %1"
#. TRANSLATORS: %1 refers to a time formatted as Locale.ShortFormat (e.g. hh:mm). It depends on system settings.
#. http://qt-project.org/doc/qt-4.8/qlocale.html#FormatType-enum
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:37
-#: ../src/app/qml/documentPage/DocumentListDelegate.qml:42
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:40
#, qt-format
msgid "Yesterday, %1"
-msgstr "Χθες, %1"
+msgstr "Χθές, %1"
#. TRANSLATORS: this is a datetime formatting string,
#. see http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:42
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:45
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:58
msgid "dddd, hh:mm"
-msgstr "dddd, hh:mm"
+msgstr "ηηηη, ωω:λλ"
#. TRANSLATORS: this is a datetime formatting string,
#. see http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:46
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:49
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:47
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:63
msgid "dd-MM-yyyy hh:mm"
-msgstr "dd-MM-yyyy hh:mm"
+msgstr "ηη-ΜΜ-εεε ωω:λλ"
+
+#. TRANSLATORS: this is a datetime formatting string, and the
+#. singlequote is an escape character.
+#. See http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
+#: ../src/app/qml/documentPage/DocumentListDelegate.qml:36
+msgid "'Today', hh:mm"
+msgstr ""
+
+#. TRANSLATORS: this is a datetime formatting string, and the
+#. singlequote is an escape character.
+#. See http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
+#: ../src/app/qml/documentPage/DocumentListDelegate.qml:42
+msgid "'Yesterday', hh:mm"
+msgstr ""
#: ../src/app/qml/documentPage/DocumentListView.qml:157
msgid "Today"
@@ -232,27 +248,27 @@
#: ../src/app/qml/documentPage/DocumentListView.qml:163
msgid "Earlier this week"
-msgstr "Νωρίτερα αυτή την εβδομάδα"
+msgstr "Νωρίτερα αυτήν την εβδομάδα"
#: ../src/app/qml/documentPage/DocumentListView.qml:166
msgid "Earlier this month"
-msgstr "Νωρίτερα αυτό τον μήνα"
+msgstr "Νωρίτερα αυτόν τον μήνα"
#: ../src/app/qml/documentPage/DocumentListView.qml:168
msgid "Even earlier..."
-msgstr "Ακόμα νωρίτερα..."
+msgstr "Ακόμα νωρίτερα"
#: ../src/app/qml/documentPage/DocumentPage.qml:24
msgid "Documents"
-msgstr "Έγγραφα"
+msgstr ""
#: ../src/app/qml/documentPage/DocumentPageDefaultHeader.qml:29
msgid "Search..."
-msgstr "Αναζήτηση..."
+msgstr ""
#: ../src/app/qml/documentPage/DocumentPageDefaultHeader.qml:37
msgid "Sorting settings..."
-msgstr "Ρυθμίσεις ταξινόμησης..."
+msgstr ""
#: ../src/app/qml/documentPage/DocumentPageDefaultHeader.qml:46
#: ../src/app/qml/documentPage/DocumentPagePickModeHeader.qml:35
@@ -276,7 +292,7 @@
#: ../src/app/qml/documentPage/DocumentPageSearchHeader.qml:47
msgid "search in documents..."
-msgstr "αναζήτηση στα έγγραφα..."
+msgstr ""
#: ../src/app/qml/documentPage/DocumentPageSelectionModeHeader.qml:52
msgid "Select None"
@@ -288,34 +304,32 @@
#: ../src/app/qml/documentPage/SearchEmptyState.qml:24
msgid "No matching document found"
-msgstr "Δεν βρέθηκαν έγγραφα που ταιριάζουν"
+msgstr ""
#: ../src/app/qml/documentPage/SearchEmptyState.qml:26
msgid ""
"Please ensure that your query is not misspelled and/or try a different query."
msgstr ""
-"Παρακαλούμε επιβεβαιώστε ότι το λεκτικό αναζήτησης είναι σωστό και/ή "
-"δοκιμάστε με άλλο λεκτικό."
#: ../src/app/qml/documentPage/SortSettingsDialog.qml:26
msgid "Sorting settings"
-msgstr "Ρυθμίσεις ταξινόμησης"
+msgstr ""
#: ../src/app/qml/documentPage/SortSettingsDialog.qml:31
msgid "Sort by date (Latest first)"
-msgstr "Ταξινόμηση ανά ημερομηνία (Πιο πρόσφατα πρώτα)"
+msgstr ""
#: ../src/app/qml/documentPage/SortSettingsDialog.qml:32
msgid "Sort by name (A-Z)"
-msgstr "Ταξινόμηση ανά όνομα (Α-Ω)"
+msgstr ""
#: ../src/app/qml/documentPage/SortSettingsDialog.qml:33
msgid "Sort by size (Smaller first)"
-msgstr "Ταξινόμηση ανά μέγεθος (Πιο μικρά πρώτα)"
+msgstr ""
#: ../src/app/qml/documentPage/SortSettingsDialog.qml:47
msgid "Reverse order"
-msgstr "Αντίστροφη σειρά"
+msgstr ""
#. TRANSLATORS: "Contents" refers to the "Table of Contents" of a PDF document.
#: ../src/app/qml/pdfView/PdfContentsPage.qml:32
@@ -325,7 +339,7 @@
#: ../src/app/qml/pdfView/PdfContentsPage.qml:38
msgid "Hide table of contents"
-msgstr "Απόκρυψη του πίνακα περιεχομένων"
+msgstr ""
#. TRANSLATORS: the first argument (%1) refers to the page currently shown on the screen,
#. while the second one (%2) refers to the total pages count.
@@ -336,17 +350,17 @@
#: ../src/app/qml/pdfView/PdfViewDefaultHeader.qml:85
msgid "Go to page..."
-msgstr "Μετάβαση στη σελίδα..."
+msgstr "Μετάβαση στην σελίδα..."
#: ../src/app/qml/pdfView/PdfViewDefaultHeader.qml:91
#: ../src/app/qml/textView/TextViewDefaultHeader.qml:77
msgid "Disable night mode"
-msgstr "Απενεργοποίηση της ρύθμισης νύχτας"
+msgstr ""
#: ../src/app/qml/pdfView/PdfViewDefaultHeader.qml:91
#: ../src/app/qml/textView/TextViewDefaultHeader.qml:77
msgid "Enable night mode"
-msgstr "Ενεργοποίηση της ρύθμισης νύχτας"
+msgstr ""
#: ../src/app/qml/pdfView/PdfViewGotoDialog.qml:25
msgid "Go to page"
@@ -359,7 +373,7 @@
#: ../src/app/qml/pdfView/PdfViewGotoDialog.qml:44
msgid "GO!"
-msgstr "ΠΑΜΕ!"
+msgstr ""
#: ../src/app/qml/textView/TextView.qml:42
msgid "Loading..."
@@ -368,13 +382,13 @@
#: ../src/app/qml/ubuntu-docviewer-app.qml:240
msgid "Document successfully imported!"
msgid_plural "Documents successfully imported!"
-msgstr[0] "Το έγγραφο εισήχθη επιτυχώς!"
-msgstr[1] "Τα έγγραφα εισήχθησαν επιτυχώς!"
+msgstr[0] ""
+msgstr[1] ""
#: ../src/app/qml/ubuntu-docviewer-app.qml:243
msgid "Open"
-msgstr "Άνοιγμα"
+msgstr ""
-#: /home/stefano/Progetti/docviewer/build-ubuntu-docviewer-app-Desktop-Default/po/com.ubuntu.docviewer.desktop.in.in.h:2
+#: /home/m/dev/core/ubuntu-docviewer-app-icon-fix/obj-x86_64-linux-gnu/po/com.ubuntu.docviewer.desktop.in.in.h:2
msgid "documents;viewer;pdf;reader;"
-msgstr "documents;viewer;pdf;reader;έγγραφα;προβολή;πδφ;αναγνώστης;διάβασμα;"
+msgstr ""
=== modified file 'po/en_AU.po'
--- po/en_AU.po 2015-08-18 05:56:20 +0000
+++ po/en_AU.po 2015-10-08 20:57:10 +0000
@@ -7,7 +7,7 @@
msgstr ""
"Project-Id-Version: ubuntu-docviewer-app\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
-"POT-Creation-Date: 2015-07-24 11:10+0200\n"
+"POT-Creation-Date: 2015-06-24 22:48+0200\n"
"PO-Revision-Date: 2015-06-27 01:15+0000\n"
"Last-Translator: Joel Addison <jaddi27@xxxxxxxxx>\n"
"Language-Team: English (Australia) <en_AU@xxxxxx>\n"
@@ -15,8 +15,13 @@
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
+<<<<<<< TREE
"X-Launchpad-Export-Date: 2015-08-18 05:56+0000\n"
"X-Generator: Launchpad (build 17690)\n"
+=======
+"X-Launchpad-Export-Date: 2015-06-28 05:35+0000\n"
+"X-Generator: Launchpad (build 17578)\n"
+>>>>>>> MERGE-SOURCE
#. TRANSLATORS: This string is used for renaming a copied file,
#. when a file with the same name already exists in user's
@@ -33,7 +38,7 @@
msgstr "copy %1"
#: ../src/app/docviewer-application.cpp:171
-#: /home/stefano/Progetti/docviewer/build-ubuntu-docviewer-app-Desktop-Default/po/com.ubuntu.docviewer.desktop.in.in.h:1
+#: /home/m/dev/core/ubuntu-docviewer-app-icon-fix/obj-x86_64-linux-gnu/po/com.ubuntu.docviewer.desktop.in.in.h:1
msgid "Document Viewer"
msgstr "Document Viewer"
@@ -149,32 +154,31 @@
msgid "%1 byte"
msgstr "%1 byte"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:36
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:28
msgid "Delete file"
msgstr "Delete file"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:37
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:29
#, qt-format
msgid "Delete %1 file"
msgid_plural "Delete %1 files"
msgstr[0] "Delete %1 file"
msgstr[1] "Delete %1 files"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:38
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:39
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:30
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:31
msgid "Are you sure you want to permanently delete this file?"
msgid_plural "Are you sure you want to permanently delete these files?"
msgstr[0] "Are you sure you want to permanently delete this file?"
msgstr[1] "Are you sure you want to permanently delete these files?"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:44
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:36
#: ../src/app/qml/documentPage/DocumentPagePickModeHeader.qml:27
#: ../src/app/qml/pdfView/PdfViewGotoDialog.qml:52
msgid "Cancel"
msgstr "Cancel"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:49
-#: ../src/app/qml/documentPage/DocumentDelegateActions.qml:25
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:41
#: ../src/app/qml/documentPage/DocumentPageSelectionModeHeader.qml:82
msgid "Delete"
msgstr "Delete"
@@ -193,35 +197,47 @@
#. TRANSLATORS: %1 refers to a time formatted as Locale.ShortFormat (e.g. hh:mm). It depends on system settings.
#. http://qt-project.org/doc/qt-4.8/qlocale.html#FormatType-enum
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:32
-#: ../src/app/qml/documentPage/DocumentListDelegate.qml:37
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:35
#, qt-format
msgid "Today, %1"
msgstr "Today, %1"
#. TRANSLATORS: %1 refers to a time formatted as Locale.ShortFormat (e.g. hh:mm). It depends on system settings.
#. http://qt-project.org/doc/qt-4.8/qlocale.html#FormatType-enum
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:37
-#: ../src/app/qml/documentPage/DocumentListDelegate.qml:42
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:40
#, qt-format
msgid "Yesterday, %1"
msgstr "Yesterday, %1"
#. TRANSLATORS: this is a datetime formatting string,
#. see http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:42
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:45
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:58
msgid "dddd, hh:mm"
msgstr "dddd, hh:mm"
#. TRANSLATORS: this is a datetime formatting string,
#. see http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:46
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:49
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:47
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:63
msgid "dd-MM-yyyy hh:mm"
msgstr "dd-MM-yyyy hh:mm"
+#. TRANSLATORS: this is a datetime formatting string, and the
+#. singlequote is an escape character.
+#. See http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
+#: ../src/app/qml/documentPage/DocumentListDelegate.qml:36
+msgid "'Today', hh:mm"
+msgstr "'Today', hh:mm"
+
+#. TRANSLATORS: this is a datetime formatting string, and the
+#. singlequote is an escape character.
+#. See http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
+#: ../src/app/qml/documentPage/DocumentListDelegate.qml:42
+msgid "'Yesterday', hh:mm"
+msgstr "'Yesterday', hh:mm"
+
#: ../src/app/qml/documentPage/DocumentListView.qml:157
msgid "Today"
msgstr "Today"
@@ -374,6 +390,6 @@
msgid "Open"
msgstr "Open"
-#: /home/stefano/Progetti/docviewer/build-ubuntu-docviewer-app-Desktop-Default/po/com.ubuntu.docviewer.desktop.in.in.h:2
+#: /home/m/dev/core/ubuntu-docviewer-app-icon-fix/obj-x86_64-linux-gnu/po/com.ubuntu.docviewer.desktop.in.in.h:2
msgid "documents;viewer;pdf;reader;"
msgstr "documents;viewer;pdf;reader;"
=== modified file 'po/en_GB.po'
--- po/en_GB.po 2015-08-18 05:56:20 +0000
+++ po/en_GB.po 2015-10-08 20:57:10 +0000
@@ -7,16 +7,21 @@
msgstr ""
"Project-Id-Version: ubuntu-docviewer-app\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
-"POT-Creation-Date: 2015-07-24 11:10+0200\n"
-"PO-Revision-Date: 2015-06-30 14:30+0000\n"
-"Last-Translator: James Tait <Unknown>\n"
+"POT-Creation-Date: 2015-06-24 22:48+0200\n"
+"PO-Revision-Date: 2015-06-13 21:56+0000\n"
+"Last-Translator: Andi Chandler <Unknown>\n"
"Language-Team: English (United Kingdom) <en_GB@xxxxxx>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
+<<<<<<< TREE
"X-Launchpad-Export-Date: 2015-08-18 05:56+0000\n"
"X-Generator: Launchpad (build 17690)\n"
+=======
+"X-Launchpad-Export-Date: 2015-06-26 04:59+0000\n"
+"X-Generator: Launchpad (build 17578)\n"
+>>>>>>> MERGE-SOURCE
#. TRANSLATORS: This string is used for renaming a copied file,
#. when a file with the same name already exists in user's
@@ -33,7 +38,7 @@
msgstr "copy %1"
#: ../src/app/docviewer-application.cpp:171
-#: /home/stefano/Progetti/docviewer/build-ubuntu-docviewer-app-Desktop-Default/po/com.ubuntu.docviewer.desktop.in.in.h:1
+#: /home/m/dev/core/ubuntu-docviewer-app-icon-fix/obj-x86_64-linux-gnu/po/com.ubuntu.docviewer.desktop.in.in.h:1
msgid "Document Viewer"
msgstr "Document Viewer"
@@ -149,32 +154,31 @@
msgid "%1 byte"
msgstr "%1 byte"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:36
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:28
msgid "Delete file"
msgstr "Delete file"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:37
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:29
#, qt-format
msgid "Delete %1 file"
msgid_plural "Delete %1 files"
msgstr[0] "Delete %1 file"
msgstr[1] "Delete %1 files"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:38
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:39
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:30
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:31
msgid "Are you sure you want to permanently delete this file?"
msgid_plural "Are you sure you want to permanently delete these files?"
msgstr[0] "Are you sure you want to permanently delete this file?"
msgstr[1] "Are you sure you want to permanently delete these files?"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:44
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:36
#: ../src/app/qml/documentPage/DocumentPagePickModeHeader.qml:27
#: ../src/app/qml/pdfView/PdfViewGotoDialog.qml:52
msgid "Cancel"
msgstr "Cancel"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:49
-#: ../src/app/qml/documentPage/DocumentDelegateActions.qml:25
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:41
#: ../src/app/qml/documentPage/DocumentPageSelectionModeHeader.qml:82
msgid "Delete"
msgstr "Delete"
@@ -193,35 +197,47 @@
#. TRANSLATORS: %1 refers to a time formatted as Locale.ShortFormat (e.g. hh:mm). It depends on system settings.
#. http://qt-project.org/doc/qt-4.8/qlocale.html#FormatType-enum
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:32
-#: ../src/app/qml/documentPage/DocumentListDelegate.qml:37
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:35
#, qt-format
msgid "Today, %1"
msgstr "Today, %1"
#. TRANSLATORS: %1 refers to a time formatted as Locale.ShortFormat (e.g. hh:mm). It depends on system settings.
#. http://qt-project.org/doc/qt-4.8/qlocale.html#FormatType-enum
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:37
-#: ../src/app/qml/documentPage/DocumentListDelegate.qml:42
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:40
#, qt-format
msgid "Yesterday, %1"
msgstr "Yesterday, %1"
#. TRANSLATORS: this is a datetime formatting string,
#. see http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:42
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:45
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:58
msgid "dddd, hh:mm"
msgstr "dddd, hh:mm"
#. TRANSLATORS: this is a datetime formatting string,
#. see http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:46
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:49
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:47
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:63
msgid "dd-MM-yyyy hh:mm"
msgstr "dd-MM-yyyy hh:mm"
+#. TRANSLATORS: this is a datetime formatting string, and the
+#. singlequote is an escape character.
+#. See http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
+#: ../src/app/qml/documentPage/DocumentListDelegate.qml:36
+msgid "'Today', hh:mm"
+msgstr ""
+
+#. TRANSLATORS: this is a datetime formatting string, and the
+#. singlequote is an escape character.
+#. See http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
+#: ../src/app/qml/documentPage/DocumentListDelegate.qml:42
+msgid "'Yesterday', hh:mm"
+msgstr ""
+
#: ../src/app/qml/documentPage/DocumentListView.qml:157
msgid "Today"
msgstr "Today"
@@ -244,15 +260,15 @@
#: ../src/app/qml/documentPage/DocumentPage.qml:24
msgid "Documents"
-msgstr "Documents"
+msgstr ""
#: ../src/app/qml/documentPage/DocumentPageDefaultHeader.qml:29
msgid "Search..."
-msgstr "Search..."
+msgstr ""
#: ../src/app/qml/documentPage/DocumentPageDefaultHeader.qml:37
msgid "Sorting settings..."
-msgstr "Sorting settings..."
+msgstr ""
#: ../src/app/qml/documentPage/DocumentPageDefaultHeader.qml:46
#: ../src/app/qml/documentPage/DocumentPagePickModeHeader.qml:35
@@ -276,7 +292,7 @@
#: ../src/app/qml/documentPage/DocumentPageSearchHeader.qml:47
msgid "search in documents..."
-msgstr "search in documents..."
+msgstr ""
#: ../src/app/qml/documentPage/DocumentPageSelectionModeHeader.qml:52
msgid "Select None"
@@ -288,33 +304,32 @@
#: ../src/app/qml/documentPage/SearchEmptyState.qml:24
msgid "No matching document found"
-msgstr "No matching document found"
+msgstr ""
#: ../src/app/qml/documentPage/SearchEmptyState.qml:26
msgid ""
"Please ensure that your query is not misspelled and/or try a different query."
msgstr ""
-"Please ensure that your query is not misspelled and/or try a different query."
#: ../src/app/qml/documentPage/SortSettingsDialog.qml:26
msgid "Sorting settings"
-msgstr "Sorting settings"
+msgstr ""
#: ../src/app/qml/documentPage/SortSettingsDialog.qml:31
msgid "Sort by date (Latest first)"
-msgstr "Sort by date (Latest first)"
+msgstr ""
#: ../src/app/qml/documentPage/SortSettingsDialog.qml:32
msgid "Sort by name (A-Z)"
-msgstr "Sort by name (A-Z)"
+msgstr ""
#: ../src/app/qml/documentPage/SortSettingsDialog.qml:33
msgid "Sort by size (Smaller first)"
-msgstr "Sort by size (Smaller first)"
+msgstr ""
#: ../src/app/qml/documentPage/SortSettingsDialog.qml:47
msgid "Reverse order"
-msgstr "Reverse order"
+msgstr ""
#. TRANSLATORS: "Contents" refers to the "Table of Contents" of a PDF document.
#: ../src/app/qml/pdfView/PdfContentsPage.qml:32
@@ -374,6 +389,6 @@
msgid "Open"
msgstr "Open"
-#: /home/stefano/Progetti/docviewer/build-ubuntu-docviewer-app-Desktop-Default/po/com.ubuntu.docviewer.desktop.in.in.h:2
+#: /home/m/dev/core/ubuntu-docviewer-app-icon-fix/obj-x86_64-linux-gnu/po/com.ubuntu.docviewer.desktop.in.in.h:2
msgid "documents;viewer;pdf;reader;"
msgstr "documents;viewer;pdf;reader;"
=== modified file 'po/eo.po'
--- po/eo.po 2015-08-18 05:56:20 +0000
+++ po/eo.po 2015-10-08 20:57:10 +0000
@@ -7,16 +7,21 @@
msgstr ""
"Project-Id-Version: ubuntu-docviewer-app\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
-"POT-Creation-Date: 2015-07-24 11:10+0200\n"
-"PO-Revision-Date: 2015-07-17 05:33+0000\n"
-"Last-Translator: Adolfo Jayme <fitoschido@xxxxxxxxx>\n"
+"POT-Creation-Date: 2015-06-24 22:48+0200\n"
+"PO-Revision-Date: 2015-03-03 23:59+0000\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Esperanto <eo@xxxxxx>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
+<<<<<<< TREE
"X-Launchpad-Export-Date: 2015-08-18 05:56+0000\n"
"X-Generator: Launchpad (build 17690)\n"
+=======
+"X-Launchpad-Export-Date: 2015-06-26 04:58+0000\n"
+"X-Generator: Launchpad (build 17578)\n"
+>>>>>>> MERGE-SOURCE
#. TRANSLATORS: This string is used for renaming a copied file,
#. when a file with the same name already exists in user's
@@ -30,46 +35,46 @@
#: ../src/app/content-communicator.cpp:105
#, qt-format
msgid "copy %1"
-msgstr "%1-a kopio"
+msgstr ""
#: ../src/app/docviewer-application.cpp:171
-#: /home/stefano/Progetti/docviewer/build-ubuntu-docviewer-app-Desktop-Default/po/com.ubuntu.docviewer.desktop.in.in.h:1
+#: /home/m/dev/core/ubuntu-docviewer-app-icon-fix/obj-x86_64-linux-gnu/po/com.ubuntu.docviewer.desktop.in.in.h:1
msgid "Document Viewer"
-msgstr "Dokumentmontrilo"
+msgstr ""
#: ../src/app/qml/common/DetailsPage.qml:27
#: ../src/app/qml/pdfView/PdfViewDefaultHeader.qml:97
#: ../src/app/qml/textView/TextViewDefaultHeader.qml:83
msgid "Details"
-msgstr "Detaloj"
+msgstr ""
#: ../src/app/qml/common/DetailsPage.qml:33
msgid "Location"
-msgstr "Loko"
+msgstr ""
#: ../src/app/qml/common/DetailsPage.qml:37
msgid "Size"
-msgstr "Grandeco"
+msgstr ""
#: ../src/app/qml/common/DetailsPage.qml:42
msgid "Created"
-msgstr "Kreita"
+msgstr ""
#: ../src/app/qml/common/DetailsPage.qml:47
msgid "Last modified"
-msgstr "Laste ŝanĝita"
+msgstr ""
#: ../src/app/qml/common/DetailsPage.qml:54
msgid "MIME type"
-msgstr "MIME-tipo"
+msgstr ""
#: ../src/app/qml/common/FileNotFoundDialog.qml:24
msgid "Error"
-msgstr "Eraro"
+msgstr ""
#: ../src/app/qml/common/FileNotFoundDialog.qml:25
msgid "File does not exist"
-msgstr "La dosiero ne ekzistas"
+msgstr ""
#: ../src/app/qml/common/FileNotFoundDialog.qml:28
#: ../src/app/qml/common/PickImportedDialog.qml:47
@@ -79,7 +84,7 @@
#: ../src/app/qml/pdfView/PdfViewDefaultHeader.qml:61
#: ../src/app/qml/textView/TextViewDefaultHeader.qml:61
msgid "Close"
-msgstr "Fermi"
+msgstr ""
#: ../src/app/qml/common/PickImportedDialog.qml:29
msgid "Multiple documents imported"
@@ -107,7 +112,7 @@
#: ../src/app/qml/common/UnknownTypeDialog.qml:26
msgid "Unknown file type"
-msgstr "Nekonata dosierspeco"
+msgstr ""
#: ../src/app/qml/common/UnknownTypeDialog.qml:27
msgid ""
@@ -117,62 +122,61 @@
#: ../src/app/qml/common/UnknownTypeDialog.qml:29
msgid "Yes"
-msgstr "Jes"
+msgstr ""
#: ../src/app/qml/common/UnknownTypeDialog.qml:38
msgid "No"
-msgstr "Ne"
+msgstr ""
#. TRANSLATORS: %1 is the size of a file, expressed in GB
#: ../src/app/qml/common/utils.js:22
#, qt-format
msgid "%1 GB"
-msgstr "%1 GB"
+msgstr ""
#. TRANSLATORS: %1 is the size of a file, expressed in MB
#: ../src/app/qml/common/utils.js:26
#, qt-format
msgid "%1 MB"
-msgstr "%1 MB"
+msgstr ""
#. TRANSLATORS: %1 is the size of a file, expressed in kB
#: ../src/app/qml/common/utils.js:30
#, qt-format
msgid "%1 kB"
-msgstr "%1 kB"
+msgstr ""
#. TRANSLATORS: %1 is the size of a file, expressed in byte
#: ../src/app/qml/common/utils.js:33
#, qt-format
msgid "%1 byte"
-msgstr "%1 bitoko"
+msgstr ""
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:36
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:28
msgid "Delete file"
-msgstr "Forigi dosieron"
+msgstr ""
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:37
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:29
#, qt-format
msgid "Delete %1 file"
msgid_plural "Delete %1 files"
msgstr[0] ""
msgstr[1] ""
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:38
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:39
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:30
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:31
msgid "Are you sure you want to permanently delete this file?"
msgid_plural "Are you sure you want to permanently delete these files?"
msgstr[0] ""
msgstr[1] ""
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:44
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:36
#: ../src/app/qml/documentPage/DocumentPagePickModeHeader.qml:27
#: ../src/app/qml/pdfView/PdfViewGotoDialog.qml:52
msgid "Cancel"
msgstr ""
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:49
-#: ../src/app/qml/documentPage/DocumentDelegateActions.qml:25
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:41
#: ../src/app/qml/documentPage/DocumentPageSelectionModeHeader.qml:82
msgid "Delete"
msgstr ""
@@ -189,42 +193,54 @@
#. TRANSLATORS: %1 refers to a time formatted as Locale.ShortFormat (e.g. hh:mm). It depends on system settings.
#. http://qt-project.org/doc/qt-4.8/qlocale.html#FormatType-enum
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:32
-#: ../src/app/qml/documentPage/DocumentListDelegate.qml:37
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:35
#, qt-format
msgid "Today, %1"
msgstr ""
#. TRANSLATORS: %1 refers to a time formatted as Locale.ShortFormat (e.g. hh:mm). It depends on system settings.
#. http://qt-project.org/doc/qt-4.8/qlocale.html#FormatType-enum
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:37
-#: ../src/app/qml/documentPage/DocumentListDelegate.qml:42
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:40
#, qt-format
msgid "Yesterday, %1"
msgstr ""
#. TRANSLATORS: this is a datetime formatting string,
#. see http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:42
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:45
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:58
msgid "dddd, hh:mm"
msgstr ""
#. TRANSLATORS: this is a datetime formatting string,
#. see http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:46
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:49
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:47
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:63
msgid "dd-MM-yyyy hh:mm"
msgstr ""
+#. TRANSLATORS: this is a datetime formatting string, and the
+#. singlequote is an escape character.
+#. See http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
+#: ../src/app/qml/documentPage/DocumentListDelegate.qml:36
+msgid "'Today', hh:mm"
+msgstr ""
+
+#. TRANSLATORS: this is a datetime formatting string, and the
+#. singlequote is an escape character.
+#. See http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
+#: ../src/app/qml/documentPage/DocumentListDelegate.qml:42
+msgid "'Yesterday', hh:mm"
+msgstr ""
+
#: ../src/app/qml/documentPage/DocumentListView.qml:157
msgid "Today"
-msgstr "Hodiaŭ"
+msgstr ""
#: ../src/app/qml/documentPage/DocumentListView.qml:160
msgid "Yesterday"
-msgstr "Hieraŭ"
+msgstr ""
#: ../src/app/qml/documentPage/DocumentListView.qml:163
msgid "Earlier this week"
@@ -326,7 +342,7 @@
#: ../src/app/qml/pdfView/PdfView.qml:34
#, qt-format
msgid "Page %1 of %2"
-msgstr "Paĝo %1 el %2"
+msgstr ""
#: ../src/app/qml/pdfView/PdfViewDefaultHeader.qml:85
msgid "Go to page..."
@@ -369,6 +385,6 @@
msgid "Open"
msgstr ""
-#: /home/stefano/Progetti/docviewer/build-ubuntu-docviewer-app-Desktop-Default/po/com.ubuntu.docviewer.desktop.in.in.h:2
+#: /home/m/dev/core/ubuntu-docviewer-app-icon-fix/obj-x86_64-linux-gnu/po/com.ubuntu.docviewer.desktop.in.in.h:2
msgid "documents;viewer;pdf;reader;"
msgstr ""
=== modified file 'po/es.po'
--- po/es.po 2015-08-18 05:56:20 +0000
+++ po/es.po 2015-10-08 20:57:10 +0000
@@ -7,7 +7,7 @@
msgstr ""
"Project-Id-Version: ubuntu-docviewer-app\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
-"POT-Creation-Date: 2015-07-24 11:10+0200\n"
+"POT-Creation-Date: 2015-06-24 22:48+0200\n"
"PO-Revision-Date: 2015-06-27 21:08+0000\n"
"Last-Translator: Adolfo Jayme <fitoschido@xxxxxxxxx>\n"
"Language-Team: Spanish <es@xxxxxx>\n"
@@ -15,8 +15,13 @@
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
+<<<<<<< TREE
"X-Launchpad-Export-Date: 2015-08-18 05:56+0000\n"
"X-Generator: Launchpad (build 17690)\n"
+=======
+"X-Launchpad-Export-Date: 2015-06-28 05:35+0000\n"
+"X-Generator: Launchpad (build 17578)\n"
+>>>>>>> MERGE-SOURCE
#. TRANSLATORS: This string is used for renaming a copied file,
#. when a file with the same name already exists in user's
@@ -33,7 +38,7 @@
msgstr "copia %1"
#: ../src/app/docviewer-application.cpp:171
-#: /home/stefano/Progetti/docviewer/build-ubuntu-docviewer-app-Desktop-Default/po/com.ubuntu.docviewer.desktop.in.in.h:1
+#: /home/m/dev/core/ubuntu-docviewer-app-icon-fix/obj-x86_64-linux-gnu/po/com.ubuntu.docviewer.desktop.in.in.h:1
msgid "Document Viewer"
msgstr "Visor de documentos"
@@ -149,32 +154,31 @@
msgid "%1 byte"
msgstr "%1 byte"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:36
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:28
msgid "Delete file"
msgstr "Eliminar archivo"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:37
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:29
#, qt-format
msgid "Delete %1 file"
msgid_plural "Delete %1 files"
msgstr[0] "Eliminar %1 archivo"
msgstr[1] "Eliminar %1 archivos"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:38
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:39
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:30
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:31
msgid "Are you sure you want to permanently delete this file?"
msgid_plural "Are you sure you want to permanently delete these files?"
msgstr[0] "¿Confirma la eliminación permanente de este archivo?"
msgstr[1] "¿Confirma la eliminación permanente de estos archivos?"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:44
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:36
#: ../src/app/qml/documentPage/DocumentPagePickModeHeader.qml:27
#: ../src/app/qml/pdfView/PdfViewGotoDialog.qml:52
msgid "Cancel"
msgstr "Cancelar"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:49
-#: ../src/app/qml/documentPage/DocumentDelegateActions.qml:25
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:41
#: ../src/app/qml/documentPage/DocumentPageSelectionModeHeader.qml:82
msgid "Delete"
msgstr "Eliminar"
@@ -192,35 +196,47 @@
#. TRANSLATORS: %1 refers to a time formatted as Locale.ShortFormat (e.g. hh:mm). It depends on system settings.
#. http://qt-project.org/doc/qt-4.8/qlocale.html#FormatType-enum
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:32
-#: ../src/app/qml/documentPage/DocumentListDelegate.qml:37
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:35
#, qt-format
msgid "Today, %1"
msgstr "Hoy, %1"
#. TRANSLATORS: %1 refers to a time formatted as Locale.ShortFormat (e.g. hh:mm). It depends on system settings.
#. http://qt-project.org/doc/qt-4.8/qlocale.html#FormatType-enum
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:37
-#: ../src/app/qml/documentPage/DocumentListDelegate.qml:42
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:40
#, qt-format
msgid "Yesterday, %1"
msgstr "Ayer, %1"
#. TRANSLATORS: this is a datetime formatting string,
#. see http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:42
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:45
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:58
msgid "dddd, hh:mm"
msgstr "dddd, hh:mm"
#. TRANSLATORS: this is a datetime formatting string,
#. see http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:46
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:49
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:47
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:63
msgid "dd-MM-yyyy hh:mm"
msgstr "dd/MM/yyyy hh:mm"
+#. TRANSLATORS: this is a datetime formatting string, and the
+#. singlequote is an escape character.
+#. See http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
+#: ../src/app/qml/documentPage/DocumentListDelegate.qml:36
+msgid "'Today', hh:mm"
+msgstr "'Hoy', hh:mm"
+
+#. TRANSLATORS: this is a datetime formatting string, and the
+#. singlequote is an escape character.
+#. See http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
+#: ../src/app/qml/documentPage/DocumentListDelegate.qml:42
+msgid "'Yesterday', hh:mm"
+msgstr "'Ayer', hh:mm"
+
#: ../src/app/qml/documentPage/DocumentListView.qml:157
msgid "Today"
msgstr "Hoy"
@@ -373,6 +389,6 @@
msgid "Open"
msgstr "Abrir"
-#: /home/stefano/Progetti/docviewer/build-ubuntu-docviewer-app-Desktop-Default/po/com.ubuntu.docviewer.desktop.in.in.h:2
+#: /home/m/dev/core/ubuntu-docviewer-app-icon-fix/obj-x86_64-linux-gnu/po/com.ubuntu.docviewer.desktop.in.in.h:2
msgid "documents;viewer;pdf;reader;"
msgstr "documentos;visor;pdf;lector;"
=== modified file 'po/eu.po'
--- po/eu.po 2015-08-18 05:56:20 +0000
+++ po/eu.po 2015-10-08 20:57:10 +0000
@@ -7,7 +7,7 @@
msgstr ""
"Project-Id-Version: ubuntu-docviewer-app\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
-"POT-Creation-Date: 2015-07-24 11:10+0200\n"
+"POT-Creation-Date: 2015-06-24 22:48+0200\n"
"PO-Revision-Date: 2015-03-23 21:50+0000\n"
"Last-Translator: Asier Iturralde Sarasola <Unknown>\n"
"Language-Team: Basque <eu@xxxxxx>\n"
@@ -15,8 +15,13 @@
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
+<<<<<<< TREE
"X-Launchpad-Export-Date: 2015-08-18 05:56+0000\n"
"X-Generator: Launchpad (build 17690)\n"
+=======
+"X-Launchpad-Export-Date: 2015-06-26 04:58+0000\n"
+"X-Generator: Launchpad (build 17578)\n"
+>>>>>>> MERGE-SOURCE
#. TRANSLATORS: This string is used for renaming a copied file,
#. when a file with the same name already exists in user's
@@ -33,7 +38,7 @@
msgstr ""
#: ../src/app/docviewer-application.cpp:171
-#: /home/stefano/Progetti/docviewer/build-ubuntu-docviewer-app-Desktop-Default/po/com.ubuntu.docviewer.desktop.in.in.h:1
+#: /home/m/dev/core/ubuntu-docviewer-app-icon-fix/obj-x86_64-linux-gnu/po/com.ubuntu.docviewer.desktop.in.in.h:1
msgid "Document Viewer"
msgstr "Dokumentu-ikustailea"
@@ -147,32 +152,31 @@
msgid "%1 byte"
msgstr "%1 byte"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:36
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:28
msgid "Delete file"
msgstr "Ezabatu fitxategia"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:37
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:29
#, qt-format
msgid "Delete %1 file"
msgid_plural "Delete %1 files"
msgstr[0] "Ezabatu fitxategi %1"
msgstr[1] "Ezabatu %1 fitxategi"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:38
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:39
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:30
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:31
msgid "Are you sure you want to permanently delete this file?"
msgid_plural "Are you sure you want to permanently delete these files?"
msgstr[0] "Ziur zaude fitxategi hau behin-betiko ezabatu nahi duzula?"
msgstr[1] "Ziur zaude fitxategi hauek behin-betiko ezabatu nahi dituzula?"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:44
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:36
#: ../src/app/qml/documentPage/DocumentPagePickModeHeader.qml:27
#: ../src/app/qml/pdfView/PdfViewGotoDialog.qml:52
msgid "Cancel"
msgstr "Utzi"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:49
-#: ../src/app/qml/documentPage/DocumentDelegateActions.qml:25
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:41
#: ../src/app/qml/documentPage/DocumentPageSelectionModeHeader.qml:82
msgid "Delete"
msgstr "Ezabatu"
@@ -189,35 +193,47 @@
#. TRANSLATORS: %1 refers to a time formatted as Locale.ShortFormat (e.g. hh:mm). It depends on system settings.
#. http://qt-project.org/doc/qt-4.8/qlocale.html#FormatType-enum
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:32
-#: ../src/app/qml/documentPage/DocumentListDelegate.qml:37
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:35
#, qt-format
msgid "Today, %1"
msgstr "Gaur, %1"
#. TRANSLATORS: %1 refers to a time formatted as Locale.ShortFormat (e.g. hh:mm). It depends on system settings.
#. http://qt-project.org/doc/qt-4.8/qlocale.html#FormatType-enum
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:37
-#: ../src/app/qml/documentPage/DocumentListDelegate.qml:42
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:40
#, qt-format
msgid "Yesterday, %1"
msgstr "Atzo, %1"
#. TRANSLATORS: this is a datetime formatting string,
#. see http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:42
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:45
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:58
msgid "dddd, hh:mm"
msgstr "dddd, hh:mm"
#. TRANSLATORS: this is a datetime formatting string,
#. see http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:46
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:49
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:47
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:63
msgid "dd-MM-yyyy hh:mm"
msgstr "yyyy-MM-dd hh:mm"
+#. TRANSLATORS: this is a datetime formatting string, and the
+#. singlequote is an escape character.
+#. See http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
+#: ../src/app/qml/documentPage/DocumentListDelegate.qml:36
+msgid "'Today', hh:mm"
+msgstr ""
+
+#. TRANSLATORS: this is a datetime formatting string, and the
+#. singlequote is an escape character.
+#. See http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
+#: ../src/app/qml/documentPage/DocumentListDelegate.qml:42
+msgid "'Yesterday', hh:mm"
+msgstr ""
+
#: ../src/app/qml/documentPage/DocumentListView.qml:157
msgid "Today"
msgstr "Gaur"
@@ -369,6 +385,6 @@
msgid "Open"
msgstr ""
-#: /home/stefano/Progetti/docviewer/build-ubuntu-docviewer-app-Desktop-Default/po/com.ubuntu.docviewer.desktop.in.in.h:2
+#: /home/m/dev/core/ubuntu-docviewer-app-icon-fix/obj-x86_64-linux-gnu/po/com.ubuntu.docviewer.desktop.in.in.h:2
msgid "documents;viewer;pdf;reader;"
msgstr "dokumentu;ikustailea;pdf;irakurlea"
=== modified file 'po/fa.po'
--- po/fa.po 2015-08-18 05:56:20 +0000
+++ po/fa.po 2015-10-08 20:57:10 +0000
@@ -7,16 +7,21 @@
msgstr ""
"Project-Id-Version: ubuntu-docviewer-app\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
-"POT-Creation-Date: 2015-07-24 11:10+0200\n"
-"PO-Revision-Date: 2015-07-17 10:09+0000\n"
+"POT-Creation-Date: 2015-06-24 22:48+0200\n"
+"PO-Revision-Date: 2015-05-30 22:19+0000\n"
"Last-Translator: Danial Behzadi <dani.behzi@xxxxxxxxx>\n"
"Language-Team: Persian <fa@xxxxxx>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
+<<<<<<< TREE
"X-Launchpad-Export-Date: 2015-08-18 05:56+0000\n"
"X-Generator: Launchpad (build 17690)\n"
+=======
+"X-Launchpad-Export-Date: 2015-06-26 04:58+0000\n"
+"X-Generator: Launchpad (build 17578)\n"
+>>>>>>> MERGE-SOURCE
#. TRANSLATORS: This string is used for renaming a copied file,
#. when a file with the same name already exists in user's
@@ -33,7 +38,7 @@
msgstr "رونوشت %1"
#: ../src/app/docviewer-application.cpp:171
-#: /home/stefano/Progetti/docviewer/build-ubuntu-docviewer-app-Desktop-Default/po/com.ubuntu.docviewer.desktop.in.in.h:1
+#: /home/m/dev/core/ubuntu-docviewer-app-icon-fix/obj-x86_64-linux-gnu/po/com.ubuntu.docviewer.desktop.in.in.h:1
msgid "Document Viewer"
msgstr "نمایشگر سند"
@@ -147,30 +152,29 @@
msgid "%1 byte"
msgstr "%1 بایت"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:36
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:28
msgid "Delete file"
msgstr "حذف پرونده"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:37
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:29
#, qt-format
msgid "Delete %1 file"
msgid_plural "Delete %1 files"
msgstr[0] "حذف %1 پرونده"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:38
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:39
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:30
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:31
msgid "Are you sure you want to permanently delete this file?"
msgid_plural "Are you sure you want to permanently delete these files?"
msgstr[0] "مطمئنید که میخواهید این پروندهها را برای همیشه حذف کنید؟"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:44
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:36
#: ../src/app/qml/documentPage/DocumentPagePickModeHeader.qml:27
#: ../src/app/qml/pdfView/PdfViewGotoDialog.qml:52
msgid "Cancel"
msgstr "لغو"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:49
-#: ../src/app/qml/documentPage/DocumentDelegateActions.qml:25
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:41
#: ../src/app/qml/documentPage/DocumentPageSelectionModeHeader.qml:82
msgid "Delete"
msgstr "حذف"
@@ -189,35 +193,47 @@
#. TRANSLATORS: %1 refers to a time formatted as Locale.ShortFormat (e.g. hh:mm). It depends on system settings.
#. http://qt-project.org/doc/qt-4.8/qlocale.html#FormatType-enum
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:32
-#: ../src/app/qml/documentPage/DocumentListDelegate.qml:37
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:35
#, qt-format
msgid "Today, %1"
msgstr "امروز، %1"
#. TRANSLATORS: %1 refers to a time formatted as Locale.ShortFormat (e.g. hh:mm). It depends on system settings.
#. http://qt-project.org/doc/qt-4.8/qlocale.html#FormatType-enum
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:37
-#: ../src/app/qml/documentPage/DocumentListDelegate.qml:42
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:40
#, qt-format
msgid "Yesterday, %1"
msgstr "دیروز، %1"
#. TRANSLATORS: this is a datetime formatting string,
#. see http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:42
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:45
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:58
msgid "dddd, hh:mm"
msgstr "dddd، hh:mm"
#. TRANSLATORS: this is a datetime formatting string,
#. see http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:46
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:49
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:47
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:63
msgid "dd-MM-yyyy hh:mm"
msgstr "dd/MM/yyyy hh:mm"
+#. TRANSLATORS: this is a datetime formatting string, and the
+#. singlequote is an escape character.
+#. See http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
+#: ../src/app/qml/documentPage/DocumentListDelegate.qml:36
+msgid "'Today', hh:mm"
+msgstr ""
+
+#. TRANSLATORS: this is a datetime formatting string, and the
+#. singlequote is an escape character.
+#. See http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
+#: ../src/app/qml/documentPage/DocumentListDelegate.qml:42
+msgid "'Yesterday', hh:mm"
+msgstr ""
+
#: ../src/app/qml/documentPage/DocumentListView.qml:157
msgid "Today"
msgstr "امروز"
@@ -240,15 +256,15 @@
#: ../src/app/qml/documentPage/DocumentPage.qml:24
msgid "Documents"
-msgstr "مستندات"
+msgstr ""
#: ../src/app/qml/documentPage/DocumentPageDefaultHeader.qml:29
msgid "Search..."
-msgstr "جستوجو…"
+msgstr ""
#: ../src/app/qml/documentPage/DocumentPageDefaultHeader.qml:37
msgid "Sorting settings..."
-msgstr "تنظیمات چینش…"
+msgstr ""
#: ../src/app/qml/documentPage/DocumentPageDefaultHeader.qml:46
#: ../src/app/qml/documentPage/DocumentPagePickModeHeader.qml:35
@@ -272,7 +288,7 @@
#: ../src/app/qml/documentPage/DocumentPageSearchHeader.qml:47
msgid "search in documents..."
-msgstr "جستوجو در مستندات…"
+msgstr ""
#: ../src/app/qml/documentPage/DocumentPageSelectionModeHeader.qml:52
msgid "Select None"
@@ -284,34 +300,32 @@
#: ../src/app/qml/documentPage/SearchEmptyState.qml:24
msgid "No matching document found"
-msgstr "هیچ سند مطابقی یافت نشد"
+msgstr ""
#: ../src/app/qml/documentPage/SearchEmptyState.qml:26
msgid ""
"Please ensure that your query is not misspelled and/or try a different query."
msgstr ""
-"لطفاُ مطمئن شوید که پرسوجویتان اشتباه نداشت و/یا پرسوجوی دیگری را امتحان "
-"کنید."
#: ../src/app/qml/documentPage/SortSettingsDialog.qml:26
msgid "Sorting settings"
-msgstr "تنظیمات چینش"
+msgstr ""
#: ../src/app/qml/documentPage/SortSettingsDialog.qml:31
msgid "Sort by date (Latest first)"
-msgstr "چینش بر اساس تاریخ (ابتدا جدیدترینها)"
+msgstr ""
#: ../src/app/qml/documentPage/SortSettingsDialog.qml:32
msgid "Sort by name (A-Z)"
-msgstr "چینش بر اساس نام (صعودی)"
+msgstr ""
#: ../src/app/qml/documentPage/SortSettingsDialog.qml:33
msgid "Sort by size (Smaller first)"
-msgstr "چینش بر اساس اندازه (ابتدا کوچکترها)"
+msgstr ""
#: ../src/app/qml/documentPage/SortSettingsDialog.qml:47
msgid "Reverse order"
-msgstr "ترتیب معکوس"
+msgstr ""
#. TRANSLATORS: "Contents" refers to the "Table of Contents" of a PDF document.
#: ../src/app/qml/pdfView/PdfContentsPage.qml:32
@@ -370,6 +384,6 @@
msgid "Open"
msgstr "گشودن"
-#: /home/stefano/Progetti/docviewer/build-ubuntu-docviewer-app-Desktop-Default/po/com.ubuntu.docviewer.desktop.in.in.h:2
+#: /home/m/dev/core/ubuntu-docviewer-app-icon-fix/obj-x86_64-linux-gnu/po/com.ubuntu.docviewer.desktop.in.in.h:2
msgid "documents;viewer;pdf;reader;"
msgstr "documents;viewer;pdf;reader;"
=== modified file 'po/fi.po'
--- po/fi.po 2015-08-18 05:56:20 +0000
+++ po/fi.po 2015-10-08 20:57:10 +0000
@@ -7,16 +7,21 @@
msgstr ""
"Project-Id-Version: ubuntu-docviewer-app\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
-"POT-Creation-Date: 2015-07-24 11:10+0200\n"
-"PO-Revision-Date: 2015-06-29 11:40+0000\n"
+"POT-Creation-Date: 2015-06-24 22:48+0200\n"
+"PO-Revision-Date: 2015-06-26 14:12+0000\n"
"Last-Translator: Jiri Grönroos <Unknown>\n"
"Language-Team: Finnish <fi@xxxxxx>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
+<<<<<<< TREE
"X-Launchpad-Export-Date: 2015-08-18 05:56+0000\n"
"X-Generator: Launchpad (build 17690)\n"
+=======
+"X-Launchpad-Export-Date: 2015-06-27 05:35+0000\n"
+"X-Generator: Launchpad (build 17578)\n"
+>>>>>>> MERGE-SOURCE
#. TRANSLATORS: This string is used for renaming a copied file,
#. when a file with the same name already exists in user's
@@ -33,7 +38,7 @@
msgstr "kopio %1"
#: ../src/app/docviewer-application.cpp:171
-#: /home/stefano/Progetti/docviewer/build-ubuntu-docviewer-app-Desktop-Default/po/com.ubuntu.docviewer.desktop.in.in.h:1
+#: /home/m/dev/core/ubuntu-docviewer-app-icon-fix/obj-x86_64-linux-gnu/po/com.ubuntu.docviewer.desktop.in.in.h:1
msgid "Document Viewer"
msgstr "Asiakirjakatselin"
@@ -149,32 +154,31 @@
msgid "%1 byte"
msgstr "%1 tavu"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:36
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:28
msgid "Delete file"
msgstr "Poista tiedosto"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:37
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:29
#, qt-format
msgid "Delete %1 file"
msgid_plural "Delete %1 files"
msgstr[0] "Poista %1 tiedosto"
msgstr[1] "Poista %1 tiedostoa"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:38
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:39
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:30
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:31
msgid "Are you sure you want to permanently delete this file?"
msgid_plural "Are you sure you want to permanently delete these files?"
msgstr[0] "Haluatko varmasti poistaa tämän tiedoston pysyvästi?"
msgstr[1] "Haluatko varmasti poistaa nämä tiedostot pysyvästi?"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:44
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:36
#: ../src/app/qml/documentPage/DocumentPagePickModeHeader.qml:27
#: ../src/app/qml/pdfView/PdfViewGotoDialog.qml:52
msgid "Cancel"
msgstr "Peru"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:49
-#: ../src/app/qml/documentPage/DocumentDelegateActions.qml:25
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:41
#: ../src/app/qml/documentPage/DocumentPageSelectionModeHeader.qml:82
msgid "Delete"
msgstr "Poista"
@@ -193,35 +197,47 @@
#. TRANSLATORS: %1 refers to a time formatted as Locale.ShortFormat (e.g. hh:mm). It depends on system settings.
#. http://qt-project.org/doc/qt-4.8/qlocale.html#FormatType-enum
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:32
-#: ../src/app/qml/documentPage/DocumentListDelegate.qml:37
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:35
#, qt-format
msgid "Today, %1"
msgstr "Tänään, %1"
#. TRANSLATORS: %1 refers to a time formatted as Locale.ShortFormat (e.g. hh:mm). It depends on system settings.
#. http://qt-project.org/doc/qt-4.8/qlocale.html#FormatType-enum
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:37
-#: ../src/app/qml/documentPage/DocumentListDelegate.qml:42
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:40
#, qt-format
msgid "Yesterday, %1"
msgstr "Eilen, %1"
#. TRANSLATORS: this is a datetime formatting string,
#. see http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:42
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:45
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:58
msgid "dddd, hh:mm"
msgstr "dddd, hh.mm"
#. TRANSLATORS: this is a datetime formatting string,
#. see http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:46
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:49
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:47
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:63
msgid "dd-MM-yyyy hh:mm"
msgstr "dd-MM-yyyy hh.mm"
+#. TRANSLATORS: this is a datetime formatting string, and the
+#. singlequote is an escape character.
+#. See http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
+#: ../src/app/qml/documentPage/DocumentListDelegate.qml:36
+msgid "'Today', hh:mm"
+msgstr ""
+
+#. TRANSLATORS: this is a datetime formatting string, and the
+#. singlequote is an escape character.
+#. See http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
+#: ../src/app/qml/documentPage/DocumentListDelegate.qml:42
+msgid "'Yesterday', hh:mm"
+msgstr ""
+
#: ../src/app/qml/documentPage/DocumentListView.qml:157
msgid "Today"
msgstr "Tänään"
@@ -375,6 +391,6 @@
msgid "Open"
msgstr "Avaa"
-#: /home/stefano/Progetti/docviewer/build-ubuntu-docviewer-app-Desktop-Default/po/com.ubuntu.docviewer.desktop.in.in.h:2
+#: /home/m/dev/core/ubuntu-docviewer-app-icon-fix/obj-x86_64-linux-gnu/po/com.ubuntu.docviewer.desktop.in.in.h:2
msgid "documents;viewer;pdf;reader;"
msgstr "documents;viewer;pdf;reader;asiakirjat;dokumentit;katselin;lukija;"
=== modified file 'po/fr.po'
--- po/fr.po 2015-08-18 05:56:20 +0000
+++ po/fr.po 2015-10-08 20:57:10 +0000
@@ -7,16 +7,21 @@
msgstr ""
"Project-Id-Version: ubuntu-docviewer-app\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
-"POT-Creation-Date: 2015-07-24 11:10+0200\n"
-"PO-Revision-Date: 2015-07-07 12:33+0000\n"
-"Last-Translator: Anne <anneonyme017@xxxxxxxxx>\n"
+"POT-Creation-Date: 2015-06-24 22:48+0200\n"
+"PO-Revision-Date: 2015-05-10 13:11+0000\n"
+"Last-Translator: Yuri <Unknown>\n"
"Language-Team: French <fr@xxxxxx>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
+<<<<<<< TREE
"X-Launchpad-Export-Date: 2015-08-18 05:56+0000\n"
"X-Generator: Launchpad (build 17690)\n"
+=======
+"X-Launchpad-Export-Date: 2015-06-26 04:58+0000\n"
+"X-Generator: Launchpad (build 17578)\n"
+>>>>>>> MERGE-SOURCE
#. TRANSLATORS: This string is used for renaming a copied file,
#. when a file with the same name already exists in user's
@@ -33,7 +38,7 @@
msgstr "copie %1"
#: ../src/app/docviewer-application.cpp:171
-#: /home/stefano/Progetti/docviewer/build-ubuntu-docviewer-app-Desktop-Default/po/com.ubuntu.docviewer.desktop.in.in.h:1
+#: /home/m/dev/core/ubuntu-docviewer-app-icon-fix/obj-x86_64-linux-gnu/po/com.ubuntu.docviewer.desktop.in.in.h:1
msgid "Document Viewer"
msgstr "Visionneuse de document"
@@ -149,32 +154,31 @@
msgid "%1 byte"
msgstr "%1 octet"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:36
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:28
msgid "Delete file"
msgstr "Supprimer le fichier"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:37
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:29
#, qt-format
msgid "Delete %1 file"
msgid_plural "Delete %1 files"
msgstr[0] "Supprimer %1 fichier"
msgstr[1] "Supprimer %1 fichiers"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:38
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:39
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:30
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:31
msgid "Are you sure you want to permanently delete this file?"
msgid_plural "Are you sure you want to permanently delete these files?"
msgstr[0] "Êtes-vous sûr de vouloir supprimer définitivement ce fichier ?"
msgstr[1] "Êtes-vous sûr de vouloir supprimer définitivement ces fichiers ?"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:44
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:36
#: ../src/app/qml/documentPage/DocumentPagePickModeHeader.qml:27
#: ../src/app/qml/pdfView/PdfViewGotoDialog.qml:52
msgid "Cancel"
msgstr "Annuler"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:49
-#: ../src/app/qml/documentPage/DocumentDelegateActions.qml:25
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:41
#: ../src/app/qml/documentPage/DocumentPageSelectionModeHeader.qml:82
msgid "Delete"
msgstr "Supprimer"
@@ -193,35 +197,47 @@
#. TRANSLATORS: %1 refers to a time formatted as Locale.ShortFormat (e.g. hh:mm). It depends on system settings.
#. http://qt-project.org/doc/qt-4.8/qlocale.html#FormatType-enum
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:32
-#: ../src/app/qml/documentPage/DocumentListDelegate.qml:37
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:35
#, qt-format
msgid "Today, %1"
msgstr "Aujourd'hui, %1"
#. TRANSLATORS: %1 refers to a time formatted as Locale.ShortFormat (e.g. hh:mm). It depends on system settings.
#. http://qt-project.org/doc/qt-4.8/qlocale.html#FormatType-enum
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:37
-#: ../src/app/qml/documentPage/DocumentListDelegate.qml:42
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:40
#, qt-format
msgid "Yesterday, %1"
msgstr "Hier, %1"
#. TRANSLATORS: this is a datetime formatting string,
#. see http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:42
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:45
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:58
msgid "dddd, hh:mm"
msgstr "dddd, hh:mm"
#. TRANSLATORS: this is a datetime formatting string,
#. see http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:46
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:49
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:47
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:63
msgid "dd-MM-yyyy hh:mm"
msgstr "dd-MM-yyyy hh:mm"
+#. TRANSLATORS: this is a datetime formatting string, and the
+#. singlequote is an escape character.
+#. See http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
+#: ../src/app/qml/documentPage/DocumentListDelegate.qml:36
+msgid "'Today', hh:mm"
+msgstr ""
+
+#. TRANSLATORS: this is a datetime formatting string, and the
+#. singlequote is an escape character.
+#. See http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
+#: ../src/app/qml/documentPage/DocumentListDelegate.qml:42
+msgid "'Yesterday', hh:mm"
+msgstr ""
+
#: ../src/app/qml/documentPage/DocumentListView.qml:157
msgid "Today"
msgstr "Aujourd'hui"
@@ -244,15 +260,15 @@
#: ../src/app/qml/documentPage/DocumentPage.qml:24
msgid "Documents"
-msgstr "Documents"
+msgstr ""
#: ../src/app/qml/documentPage/DocumentPageDefaultHeader.qml:29
msgid "Search..."
-msgstr "Rechercher..."
+msgstr ""
#: ../src/app/qml/documentPage/DocumentPageDefaultHeader.qml:37
msgid "Sorting settings..."
-msgstr "Paramètres de tri..."
+msgstr ""
#: ../src/app/qml/documentPage/DocumentPageDefaultHeader.qml:46
#: ../src/app/qml/documentPage/DocumentPagePickModeHeader.qml:35
@@ -276,7 +292,7 @@
#: ../src/app/qml/documentPage/DocumentPageSearchHeader.qml:47
msgid "search in documents..."
-msgstr "rechercher dans les documents..."
+msgstr ""
#: ../src/app/qml/documentPage/DocumentPageSelectionModeHeader.qml:52
msgid "Select None"
@@ -288,34 +304,32 @@
#: ../src/app/qml/documentPage/SearchEmptyState.qml:24
msgid "No matching document found"
-msgstr "Aucun document correspondant trouvé"
+msgstr ""
#: ../src/app/qml/documentPage/SearchEmptyState.qml:26
msgid ""
"Please ensure that your query is not misspelled and/or try a different query."
msgstr ""
-"Veuillez vérifier que votre requête n'est pas mal orthographiée et/ou "
-"essayez une requête différente."
#: ../src/app/qml/documentPage/SortSettingsDialog.qml:26
msgid "Sorting settings"
-msgstr "Paramètres de tri"
+msgstr ""
#: ../src/app/qml/documentPage/SortSettingsDialog.qml:31
msgid "Sort by date (Latest first)"
-msgstr "Tri par date (plus récente en premier)"
+msgstr ""
#: ../src/app/qml/documentPage/SortSettingsDialog.qml:32
msgid "Sort by name (A-Z)"
-msgstr "Trier par nom (A-Z)"
+msgstr ""
#: ../src/app/qml/documentPage/SortSettingsDialog.qml:33
msgid "Sort by size (Smaller first)"
-msgstr "Trier par taille (plus petite en premier)"
+msgstr ""
#: ../src/app/qml/documentPage/SortSettingsDialog.qml:47
msgid "Reverse order"
-msgstr "Ordre inversé"
+msgstr ""
#. TRANSLATORS: "Contents" refers to the "Table of Contents" of a PDF document.
#: ../src/app/qml/pdfView/PdfContentsPage.qml:32
@@ -375,6 +389,6 @@
msgid "Open"
msgstr "Ouvrir"
-#: /home/stefano/Progetti/docviewer/build-ubuntu-docviewer-app-Desktop-Default/po/com.ubuntu.docviewer.desktop.in.in.h:2
+#: /home/m/dev/core/ubuntu-docviewer-app-icon-fix/obj-x86_64-linux-gnu/po/com.ubuntu.docviewer.desktop.in.in.h:2
msgid "documents;viewer;pdf;reader;"
msgstr "documents;visionneuse;pdf;lecteur;"
=== modified file 'po/gd.po'
--- po/gd.po 2015-08-18 05:56:20 +0000
+++ po/gd.po 2015-10-08 20:57:10 +0000
@@ -7,7 +7,7 @@
msgstr ""
"Project-Id-Version: ubuntu-docviewer-app\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
-"POT-Creation-Date: 2015-07-24 11:10+0200\n"
+"POT-Creation-Date: 2015-06-24 22:48+0200\n"
"PO-Revision-Date: 2015-06-27 15:42+0000\n"
"Last-Translator: GunChleoc <Unknown>\n"
"Language-Team: Fòram na Gàidhlig\n"
@@ -16,8 +16,13 @@
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=4; plural=(n==1 || n==11) ? 0 : (n==2 || n==12) ? 1 : "
"(n > 2 && n < 20) ? 2 : 3;\n"
+<<<<<<< TREE
"X-Launchpad-Export-Date: 2015-08-18 05:56+0000\n"
"X-Generator: Launchpad (build 17690)\n"
+=======
+"X-Launchpad-Export-Date: 2015-06-28 05:35+0000\n"
+"X-Generator: Launchpad (build 17578)\n"
+>>>>>>> MERGE-SOURCE
"Language: gd\n"
#. TRANSLATORS: This string is used for renaming a copied file,
@@ -35,7 +40,7 @@
msgstr "lethbhreac %1"
#: ../src/app/docviewer-application.cpp:171
-#: /home/stefano/Progetti/docviewer/build-ubuntu-docviewer-app-Desktop-Default/po/com.ubuntu.docviewer.desktop.in.in.h:1
+#: /home/m/dev/core/ubuntu-docviewer-app-icon-fix/obj-x86_64-linux-gnu/po/com.ubuntu.docviewer.desktop.in.in.h:1
msgid "Document Viewer"
msgstr "Sealladair sgrìobhainnean"
@@ -155,11 +160,11 @@
msgid "%1 byte"
msgstr "%1 baidht"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:36
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:28
msgid "Delete file"
msgstr "Sguab às am faidhle"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:37
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:29
#, qt-format
msgid "Delete %1 file"
msgid_plural "Delete %1 files"
@@ -168,8 +173,8 @@
msgstr[2] "Sguab às %1 faidhlichean"
msgstr[3] "Sguab às %1 faidhle"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:38
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:39
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:30
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:31
msgid "Are you sure you want to permanently delete this file?"
msgid_plural "Are you sure you want to permanently delete these files?"
msgstr[0] ""
@@ -185,14 +190,13 @@
"A bheil thu cinnteach gu bheil thu airson na faidhlichean seo a sguabadh às "
"gu buan?"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:44
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:36
#: ../src/app/qml/documentPage/DocumentPagePickModeHeader.qml:27
#: ../src/app/qml/pdfView/PdfViewGotoDialog.qml:52
msgid "Cancel"
msgstr "Sguir dheth"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:49
-#: ../src/app/qml/documentPage/DocumentDelegateActions.qml:25
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:41
#: ../src/app/qml/documentPage/DocumentPageSelectionModeHeader.qml:82
msgid "Delete"
msgstr "Sguab às"
@@ -211,35 +215,47 @@
#. TRANSLATORS: %1 refers to a time formatted as Locale.ShortFormat (e.g. hh:mm). It depends on system settings.
#. http://qt-project.org/doc/qt-4.8/qlocale.html#FormatType-enum
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:32
-#: ../src/app/qml/documentPage/DocumentListDelegate.qml:37
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:35
#, qt-format
msgid "Today, %1"
msgstr "An-diugh %1"
#. TRANSLATORS: %1 refers to a time formatted as Locale.ShortFormat (e.g. hh:mm). It depends on system settings.
#. http://qt-project.org/doc/qt-4.8/qlocale.html#FormatType-enum
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:37
-#: ../src/app/qml/documentPage/DocumentListDelegate.qml:42
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:40
#, qt-format
msgid "Yesterday, %1"
msgstr "An-dè %1"
#. TRANSLATORS: this is a datetime formatting string,
#. see http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:42
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:45
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:58
msgid "dddd, hh:mm"
msgstr "dddd hh:mm"
#. TRANSLATORS: this is a datetime formatting string,
#. see http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:46
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:49
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:47
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:63
msgid "dd-MM-yyyy hh:mm"
msgstr "dd.MM.yyyy hh:mm"
+#. TRANSLATORS: this is a datetime formatting string, and the
+#. singlequote is an escape character.
+#. See http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
+#: ../src/app/qml/documentPage/DocumentListDelegate.qml:36
+msgid "'Today', hh:mm"
+msgstr "'An-diugh' aig hh:mm"
+
+#. TRANSLATORS: this is a datetime formatting string, and the
+#. singlequote is an escape character.
+#. See http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
+#: ../src/app/qml/documentPage/DocumentListDelegate.qml:42
+msgid "'Yesterday', hh:mm"
+msgstr "'An-dè' aig hh:mm"
+
#: ../src/app/qml/documentPage/DocumentListView.qml:157
msgid "Today"
msgstr "An-diugh"
@@ -395,7 +411,7 @@
msgid "Open"
msgstr "Fosgail"
-#: /home/stefano/Progetti/docviewer/build-ubuntu-docviewer-app-Desktop-Default/po/com.ubuntu.docviewer.desktop.in.in.h:2
+#: /home/m/dev/core/ubuntu-docviewer-app-icon-fix/obj-x86_64-linux-gnu/po/com.ubuntu.docviewer.desktop.in.in.h:2
msgid "documents;viewer;pdf;reader;"
msgstr ""
"documents;viewer;pdf;reader;sgrìobhainnean;sealladair;leughadair;inneal-"
=== modified file 'po/gl.po'
--- po/gl.po 2015-09-19 05:34:40 +0000
+++ po/gl.po 2015-10-08 20:57:10 +0000
@@ -7,16 +7,26 @@
msgstr ""
"Project-Id-Version: ubuntu-docviewer-app\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+<<<<<<< TREE
"POT-Creation-Date: 2015-07-24 11:10+0200\n"
"PO-Revision-Date: 2015-09-18 16:42+0000\n"
+=======
+"POT-Creation-Date: 2015-06-24 22:48+0200\n"
+"PO-Revision-Date: 2015-06-23 17:13+0000\n"
+>>>>>>> MERGE-SOURCE
"Last-Translator: Marcos Lans <Unknown>\n"
"Language-Team: Galician <gl@xxxxxx>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
+<<<<<<< TREE
"X-Launchpad-Export-Date: 2015-09-19 05:34+0000\n"
"X-Generator: Launchpad (build 17746)\n"
+=======
+"X-Launchpad-Export-Date: 2015-06-26 04:58+0000\n"
+"X-Generator: Launchpad (build 17578)\n"
+>>>>>>> MERGE-SOURCE
#. TRANSLATORS: This string is used for renaming a copied file,
#. when a file with the same name already exists in user's
@@ -33,7 +43,7 @@
msgstr "copia %1"
#: ../src/app/docviewer-application.cpp:171
-#: /home/stefano/Progetti/docviewer/build-ubuntu-docviewer-app-Desktop-Default/po/com.ubuntu.docviewer.desktop.in.in.h:1
+#: /home/m/dev/core/ubuntu-docviewer-app-icon-fix/obj-x86_64-linux-gnu/po/com.ubuntu.docviewer.desktop.in.in.h:1
msgid "Document Viewer"
msgstr "Visor de documentos"
@@ -149,32 +159,31 @@
msgid "%1 byte"
msgstr "%1 byte"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:36
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:28
msgid "Delete file"
msgstr "Eliminar ficheiro"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:37
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:29
#, qt-format
msgid "Delete %1 file"
msgid_plural "Delete %1 files"
msgstr[0] "Eliminar %1 ficheiro"
msgstr[1] "Eliminar %1 ficheiros"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:38
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:39
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:30
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:31
msgid "Are you sure you want to permanently delete this file?"
msgid_plural "Are you sure you want to permanently delete these files?"
msgstr[0] "Confirma a eliminación permanente deste ficheiro?"
msgstr[1] "Confirma a eliminación permanente destes ficheiros?"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:44
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:36
#: ../src/app/qml/documentPage/DocumentPagePickModeHeader.qml:27
#: ../src/app/qml/pdfView/PdfViewGotoDialog.qml:52
msgid "Cancel"
msgstr "Cancelar"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:49
-#: ../src/app/qml/documentPage/DocumentDelegateActions.qml:25
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:41
#: ../src/app/qml/documentPage/DocumentPageSelectionModeHeader.qml:82
msgid "Delete"
msgstr "Eliminar"
@@ -193,35 +202,47 @@
#. TRANSLATORS: %1 refers to a time formatted as Locale.ShortFormat (e.g. hh:mm). It depends on system settings.
#. http://qt-project.org/doc/qt-4.8/qlocale.html#FormatType-enum
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:32
-#: ../src/app/qml/documentPage/DocumentListDelegate.qml:37
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:35
#, qt-format
msgid "Today, %1"
msgstr "Hoxe, %1"
#. TRANSLATORS: %1 refers to a time formatted as Locale.ShortFormat (e.g. hh:mm). It depends on system settings.
#. http://qt-project.org/doc/qt-4.8/qlocale.html#FormatType-enum
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:37
-#: ../src/app/qml/documentPage/DocumentListDelegate.qml:42
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:40
#, qt-format
msgid "Yesterday, %1"
msgstr "Onte, %1"
#. TRANSLATORS: this is a datetime formatting string,
#. see http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:42
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:45
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:58
msgid "dddd, hh:mm"
msgstr "dddd, hh:mm"
#. TRANSLATORS: this is a datetime formatting string,
#. see http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:46
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:49
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:47
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:63
msgid "dd-MM-yyyy hh:mm"
msgstr "dd-MM-yyyy hh:mm"
+#. TRANSLATORS: this is a datetime formatting string, and the
+#. singlequote is an escape character.
+#. See http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
+#: ../src/app/qml/documentPage/DocumentListDelegate.qml:36
+msgid "'Today', hh:mm"
+msgstr "«Hoxe», hh:mm"
+
+#. TRANSLATORS: this is a datetime formatting string, and the
+#. singlequote is an escape character.
+#. See http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
+#: ../src/app/qml/documentPage/DocumentListDelegate.qml:42
+msgid "'Yesterday', hh:mm"
+msgstr "«Onte», hh:mm"
+
#: ../src/app/qml/documentPage/DocumentListView.qml:157
msgid "Today"
msgstr "Hoxe"
@@ -276,7 +297,7 @@
#: ../src/app/qml/documentPage/DocumentPageSearchHeader.qml:47
msgid "search in documents..."
-msgstr "buscar documentos..."
+msgstr "buscar nos documentos..."
#: ../src/app/qml/documentPage/DocumentPageSelectionModeHeader.qml:52
msgid "Select None"
@@ -375,6 +396,6 @@
msgid "Open"
msgstr "Abrir"
-#: /home/stefano/Progetti/docviewer/build-ubuntu-docviewer-app-Desktop-Default/po/com.ubuntu.docviewer.desktop.in.in.h:2
+#: /home/m/dev/core/ubuntu-docviewer-app-icon-fix/obj-x86_64-linux-gnu/po/com.ubuntu.docviewer.desktop.in.in.h:2
msgid "documents;viewer;pdf;reader;"
msgstr "documentos;visor;pdf;lector;"
=== modified file 'po/hu.po'
--- po/hu.po 2015-08-18 05:56:20 +0000
+++ po/hu.po 2015-10-08 20:57:10 +0000
@@ -7,7 +7,7 @@
msgstr ""
"Project-Id-Version: ubuntu-docviewer-app\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
-"POT-Creation-Date: 2015-07-24 11:10+0200\n"
+"POT-Creation-Date: 2015-06-24 22:48+0200\n"
"PO-Revision-Date: 2015-06-24 17:52+0000\n"
"Last-Translator: Richard Somlói <ricsipontaz@xxxxxxxxx>\n"
"Language-Team: Hungarian <hu@xxxxxx>\n"
@@ -15,8 +15,13 @@
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
+<<<<<<< TREE
"X-Launchpad-Export-Date: 2015-08-18 05:56+0000\n"
"X-Generator: Launchpad (build 17690)\n"
+=======
+"X-Launchpad-Export-Date: 2015-06-26 04:58+0000\n"
+"X-Generator: Launchpad (build 17578)\n"
+>>>>>>> MERGE-SOURCE
#. TRANSLATORS: This string is used for renaming a copied file,
#. when a file with the same name already exists in user's
@@ -33,7 +38,7 @@
msgstr "másolat %1"
#: ../src/app/docviewer-application.cpp:171
-#: /home/stefano/Progetti/docviewer/build-ubuntu-docviewer-app-Desktop-Default/po/com.ubuntu.docviewer.desktop.in.in.h:1
+#: /home/m/dev/core/ubuntu-docviewer-app-icon-fix/obj-x86_64-linux-gnu/po/com.ubuntu.docviewer.desktop.in.in.h:1
msgid "Document Viewer"
msgstr "Dokumentummegjelenítő"
@@ -149,32 +154,31 @@
msgid "%1 byte"
msgstr "%1 bájt"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:36
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:28
msgid "Delete file"
msgstr "Fájl törlése"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:37
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:29
#, qt-format
msgid "Delete %1 file"
msgid_plural "Delete %1 files"
msgstr[0] "%1 fájl törlése"
msgstr[1] "%1 fájl törlése"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:38
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:39
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:30
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:31
msgid "Are you sure you want to permanently delete this file?"
msgid_plural "Are you sure you want to permanently delete these files?"
msgstr[0] "Biztos, hogy véglegesen törölni szeretné ezt a fájlt?"
msgstr[1] "Biztos, hogy véglegesen törölni szeretné ezeket a fájlokat?"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:44
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:36
#: ../src/app/qml/documentPage/DocumentPagePickModeHeader.qml:27
#: ../src/app/qml/pdfView/PdfViewGotoDialog.qml:52
msgid "Cancel"
msgstr "Mégse"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:49
-#: ../src/app/qml/documentPage/DocumentDelegateActions.qml:25
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:41
#: ../src/app/qml/documentPage/DocumentPageSelectionModeHeader.qml:82
msgid "Delete"
msgstr "Törlés"
@@ -193,35 +197,47 @@
#. TRANSLATORS: %1 refers to a time formatted as Locale.ShortFormat (e.g. hh:mm). It depends on system settings.
#. http://qt-project.org/doc/qt-4.8/qlocale.html#FormatType-enum
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:32
-#: ../src/app/qml/documentPage/DocumentListDelegate.qml:37
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:35
#, qt-format
msgid "Today, %1"
msgstr "Ma, %1"
#. TRANSLATORS: %1 refers to a time formatted as Locale.ShortFormat (e.g. hh:mm). It depends on system settings.
#. http://qt-project.org/doc/qt-4.8/qlocale.html#FormatType-enum
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:37
-#: ../src/app/qml/documentPage/DocumentListDelegate.qml:42
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:40
#, qt-format
msgid "Yesterday, %1"
msgstr "Tegnap, %1"
#. TRANSLATORS: this is a datetime formatting string,
#. see http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:42
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:45
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:58
msgid "dddd, hh:mm"
msgstr "dddd, hh.mm"
#. TRANSLATORS: this is a datetime formatting string,
#. see http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:46
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:49
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:47
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:63
msgid "dd-MM-yyyy hh:mm"
msgstr "yyyy.MM.dd. hh.mm"
+#. TRANSLATORS: this is a datetime formatting string, and the
+#. singlequote is an escape character.
+#. See http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
+#: ../src/app/qml/documentPage/DocumentListDelegate.qml:36
+msgid "'Today', hh:mm"
+msgstr "'Ma', hh.mm"
+
+#. TRANSLATORS: this is a datetime formatting string, and the
+#. singlequote is an escape character.
+#. See http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
+#: ../src/app/qml/documentPage/DocumentListDelegate.qml:42
+msgid "'Yesterday', hh:mm"
+msgstr "'Tegnap', hh.mm"
+
#: ../src/app/qml/documentPage/DocumentListView.qml:157
msgid "Today"
msgstr "Ma"
@@ -375,6 +391,6 @@
msgid "Open"
msgstr "Megnyitás"
-#: /home/stefano/Progetti/docviewer/build-ubuntu-docviewer-app-Desktop-Default/po/com.ubuntu.docviewer.desktop.in.in.h:2
+#: /home/m/dev/core/ubuntu-docviewer-app-icon-fix/obj-x86_64-linux-gnu/po/com.ubuntu.docviewer.desktop.in.in.h:2
msgid "documents;viewer;pdf;reader;"
msgstr "dokumentumok;megtekintő;pdf;olvasó;"
=== modified file 'po/id.po'
--- po/id.po 2015-08-18 05:56:20 +0000
+++ po/id.po 2015-10-08 20:57:10 +0000
@@ -7,7 +7,7 @@
msgstr ""
"Project-Id-Version: ubuntu-docviewer-app\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
-"POT-Creation-Date: 2015-07-24 11:10+0200\n"
+"POT-Creation-Date: 2015-06-24 22:48+0200\n"
"PO-Revision-Date: 2015-05-30 07:55+0000\n"
"Last-Translator: Dirgita <Unknown>\n"
"Language-Team: Indonesian <id@xxxxxx>\n"
@@ -15,8 +15,13 @@
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
+<<<<<<< TREE
"X-Launchpad-Export-Date: 2015-08-18 05:56+0000\n"
"X-Generator: Launchpad (build 17690)\n"
+=======
+"X-Launchpad-Export-Date: 2015-06-26 04:58+0000\n"
+"X-Generator: Launchpad (build 17578)\n"
+>>>>>>> MERGE-SOURCE
#. TRANSLATORS: This string is used for renaming a copied file,
#. when a file with the same name already exists in user's
@@ -33,7 +38,7 @@
msgstr "kopi %1"
#: ../src/app/docviewer-application.cpp:171
-#: /home/stefano/Progetti/docviewer/build-ubuntu-docviewer-app-Desktop-Default/po/com.ubuntu.docviewer.desktop.in.in.h:1
+#: /home/m/dev/core/ubuntu-docviewer-app-icon-fix/obj-x86_64-linux-gnu/po/com.ubuntu.docviewer.desktop.in.in.h:1
msgid "Document Viewer"
msgstr "Penampil Dokumen"
@@ -147,30 +152,29 @@
msgid "%1 byte"
msgstr "%1 bita"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:36
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:28
msgid "Delete file"
msgstr "Menghapus berkas"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:37
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:29
#, qt-format
msgid "Delete %1 file"
msgid_plural "Delete %1 files"
msgstr[0] "Menghapus %1 berkas"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:38
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:39
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:30
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:31
msgid "Are you sure you want to permanently delete this file?"
msgid_plural "Are you sure you want to permanently delete these files?"
msgstr[0] "Yakin menghapus berkas ini?"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:44
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:36
#: ../src/app/qml/documentPage/DocumentPagePickModeHeader.qml:27
#: ../src/app/qml/pdfView/PdfViewGotoDialog.qml:52
msgid "Cancel"
msgstr "Batal"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:49
-#: ../src/app/qml/documentPage/DocumentDelegateActions.qml:25
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:41
#: ../src/app/qml/documentPage/DocumentPageSelectionModeHeader.qml:82
msgid "Delete"
msgstr "Hapus"
@@ -189,35 +193,47 @@
#. TRANSLATORS: %1 refers to a time formatted as Locale.ShortFormat (e.g. hh:mm). It depends on system settings.
#. http://qt-project.org/doc/qt-4.8/qlocale.html#FormatType-enum
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:32
-#: ../src/app/qml/documentPage/DocumentListDelegate.qml:37
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:35
#, qt-format
msgid "Today, %1"
msgstr "Hari ini, %1"
#. TRANSLATORS: %1 refers to a time formatted as Locale.ShortFormat (e.g. hh:mm). It depends on system settings.
#. http://qt-project.org/doc/qt-4.8/qlocale.html#FormatType-enum
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:37
-#: ../src/app/qml/documentPage/DocumentListDelegate.qml:42
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:40
#, qt-format
msgid "Yesterday, %1"
msgstr "Kemarin, %1"
#. TRANSLATORS: this is a datetime formatting string,
#. see http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:42
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:45
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:58
msgid "dddd, hh:mm"
msgstr "dddd, HH:mm"
#. TRANSLATORS: this is a datetime formatting string,
#. see http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:46
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:49
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:47
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:63
msgid "dd-MM-yyyy hh:mm"
msgstr "dd-MM-yyyy HH:mm"
+#. TRANSLATORS: this is a datetime formatting string, and the
+#. singlequote is an escape character.
+#. See http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
+#: ../src/app/qml/documentPage/DocumentListDelegate.qml:36
+msgid "'Today', hh:mm"
+msgstr ""
+
+#. TRANSLATORS: this is a datetime formatting string, and the
+#. singlequote is an escape character.
+#. See http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
+#: ../src/app/qml/documentPage/DocumentListDelegate.qml:42
+msgid "'Yesterday', hh:mm"
+msgstr ""
+
#: ../src/app/qml/documentPage/DocumentListView.qml:157
msgid "Today"
msgstr "Hari ini"
@@ -368,6 +384,6 @@
msgid "Open"
msgstr "Buka"
-#: /home/stefano/Progetti/docviewer/build-ubuntu-docviewer-app-Desktop-Default/po/com.ubuntu.docviewer.desktop.in.in.h:2
+#: /home/m/dev/core/ubuntu-docviewer-app-icon-fix/obj-x86_64-linux-gnu/po/com.ubuntu.docviewer.desktop.in.in.h:2
msgid "documents;viewer;pdf;reader;"
msgstr "documents;viewer;pdf;reader;dokumen;penampil;pembaca"
=== modified file 'po/it.po'
--- po/it.po 2015-08-18 05:56:20 +0000
+++ po/it.po 2015-10-08 20:57:10 +0000
@@ -7,16 +7,21 @@
msgstr ""
"Project-Id-Version: ubuntu-docviewer-app\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
-"POT-Creation-Date: 2015-07-24 11:10+0200\n"
-"PO-Revision-Date: 2015-06-30 06:59+0000\n"
+"POT-Creation-Date: 2015-06-24 22:48+0200\n"
+"PO-Revision-Date: 2015-06-26 13:58+0000\n"
"Last-Translator: Claudio Arseni <claudio.arseni@xxxxxxxxx>\n"
"Language-Team: Italian <it@xxxxxx>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
+<<<<<<< TREE
"X-Launchpad-Export-Date: 2015-08-18 05:56+0000\n"
"X-Generator: Launchpad (build 17690)\n"
+=======
+"X-Launchpad-Export-Date: 2015-06-27 05:35+0000\n"
+"X-Generator: Launchpad (build 17578)\n"
+>>>>>>> MERGE-SOURCE
#. TRANSLATORS: This string is used for renaming a copied file,
#. when a file with the same name already exists in user's
@@ -33,7 +38,7 @@
msgstr "copia %1"
#: ../src/app/docviewer-application.cpp:171
-#: /home/stefano/Progetti/docviewer/build-ubuntu-docviewer-app-Desktop-Default/po/com.ubuntu.docviewer.desktop.in.in.h:1
+#: /home/m/dev/core/ubuntu-docviewer-app-icon-fix/obj-x86_64-linux-gnu/po/com.ubuntu.docviewer.desktop.in.in.h:1
msgid "Document Viewer"
msgstr "Visualizzatore di documenti"
@@ -149,32 +154,31 @@
msgid "%1 byte"
msgstr "%1 byte"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:36
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:28
msgid "Delete file"
msgstr "Elimina file"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:37
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:29
#, qt-format
msgid "Delete %1 file"
msgid_plural "Delete %1 files"
msgstr[0] "Elimina %1 file"
msgstr[1] "Elimina %1 file"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:38
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:39
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:30
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:31
msgid "Are you sure you want to permanently delete this file?"
msgid_plural "Are you sure you want to permanently delete these files?"
msgstr[0] "Eliminare veramente in modo permanente questo file?"
msgstr[1] "Eliminare veramente in modo permanente questi file?"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:44
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:36
#: ../src/app/qml/documentPage/DocumentPagePickModeHeader.qml:27
#: ../src/app/qml/pdfView/PdfViewGotoDialog.qml:52
msgid "Cancel"
msgstr "Annulla"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:49
-#: ../src/app/qml/documentPage/DocumentDelegateActions.qml:25
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:41
#: ../src/app/qml/documentPage/DocumentPageSelectionModeHeader.qml:82
msgid "Delete"
msgstr "Elimina"
@@ -193,35 +197,47 @@
#. TRANSLATORS: %1 refers to a time formatted as Locale.ShortFormat (e.g. hh:mm). It depends on system settings.
#. http://qt-project.org/doc/qt-4.8/qlocale.html#FormatType-enum
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:32
-#: ../src/app/qml/documentPage/DocumentListDelegate.qml:37
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:35
#, qt-format
msgid "Today, %1"
msgstr "Oggi, %1"
#. TRANSLATORS: %1 refers to a time formatted as Locale.ShortFormat (e.g. hh:mm). It depends on system settings.
#. http://qt-project.org/doc/qt-4.8/qlocale.html#FormatType-enum
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:37
-#: ../src/app/qml/documentPage/DocumentListDelegate.qml:42
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:40
#, qt-format
msgid "Yesterday, %1"
msgstr "Ieri, %1"
#. TRANSLATORS: this is a datetime formatting string,
#. see http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:42
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:45
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:58
msgid "dddd, hh:mm"
msgstr "dddd, hh:mm"
#. TRANSLATORS: this is a datetime formatting string,
#. see http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:46
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:49
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:47
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:63
msgid "dd-MM-yyyy hh:mm"
msgstr "dd/MM/yyyy hh:mm"
+#. TRANSLATORS: this is a datetime formatting string, and the
+#. singlequote is an escape character.
+#. See http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
+#: ../src/app/qml/documentPage/DocumentListDelegate.qml:36
+msgid "'Today', hh:mm"
+msgstr "«Oggi», hh:mm"
+
+#. TRANSLATORS: this is a datetime formatting string, and the
+#. singlequote is an escape character.
+#. See http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
+#: ../src/app/qml/documentPage/DocumentListDelegate.qml:42
+msgid "'Yesterday', hh:mm"
+msgstr "«Ieri», hh:mm"
+
#: ../src/app/qml/documentPage/DocumentListView.qml:157
msgid "Today"
msgstr "Oggi"
@@ -375,6 +391,6 @@
msgid "Open"
msgstr "Apri"
-#: /home/stefano/Progetti/docviewer/build-ubuntu-docviewer-app-Desktop-Default/po/com.ubuntu.docviewer.desktop.in.in.h:2
+#: /home/m/dev/core/ubuntu-docviewer-app-icon-fix/obj-x86_64-linux-gnu/po/com.ubuntu.docviewer.desktop.in.in.h:2
msgid "documents;viewer;pdf;reader;"
msgstr "documenti;visualizzatore;pdf;lettore;viewer;reader;"
=== modified file 'po/lo.po'
--- po/lo.po 2015-08-18 05:56:20 +0000
+++ po/lo.po 2015-10-08 20:57:10 +0000
@@ -7,7 +7,7 @@
msgstr ""
"Project-Id-Version: ubuntu-docviewer-app\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
-"POT-Creation-Date: 2015-07-24 11:10+0200\n"
+"POT-Creation-Date: 2015-06-24 22:48+0200\n"
"PO-Revision-Date: 2015-03-04 07:27+0000\n"
"Last-Translator: Anousak <anousak@xxxxxxxxx>\n"
"Language-Team: Lao <lo@xxxxxx>\n"
@@ -15,8 +15,13 @@
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
+<<<<<<< TREE
"X-Launchpad-Export-Date: 2015-08-18 05:56+0000\n"
"X-Generator: Launchpad (build 17690)\n"
+=======
+"X-Launchpad-Export-Date: 2015-06-26 04:58+0000\n"
+"X-Generator: Launchpad (build 17578)\n"
+>>>>>>> MERGE-SOURCE
#. TRANSLATORS: This string is used for renaming a copied file,
#. when a file with the same name already exists in user's
@@ -33,7 +38,7 @@
msgstr ""
#: ../src/app/docviewer-application.cpp:171
-#: /home/stefano/Progetti/docviewer/build-ubuntu-docviewer-app-Desktop-Default/po/com.ubuntu.docviewer.desktop.in.in.h:1
+#: /home/m/dev/core/ubuntu-docviewer-app-icon-fix/obj-x86_64-linux-gnu/po/com.ubuntu.docviewer.desktop.in.in.h:1
msgid "Document Viewer"
msgstr "ຕົວເບີ່ງເອກະສານ"
@@ -147,32 +152,31 @@
msgid "%1 byte"
msgstr ""
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:36
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:28
msgid "Delete file"
msgstr "ລຶບຟາຍ"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:37
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:29
#, qt-format
msgid "Delete %1 file"
msgid_plural "Delete %1 files"
msgstr[0] ""
msgstr[1] ""
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:38
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:39
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:30
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:31
msgid "Are you sure you want to permanently delete this file?"
msgid_plural "Are you sure you want to permanently delete these files?"
msgstr[0] ""
msgstr[1] ""
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:44
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:36
#: ../src/app/qml/documentPage/DocumentPagePickModeHeader.qml:27
#: ../src/app/qml/pdfView/PdfViewGotoDialog.qml:52
msgid "Cancel"
msgstr "ຍົກເລີອກ"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:49
-#: ../src/app/qml/documentPage/DocumentDelegateActions.qml:25
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:41
#: ../src/app/qml/documentPage/DocumentPageSelectionModeHeader.qml:82
msgid "Delete"
msgstr "ລຶບ"
@@ -189,35 +193,47 @@
#. TRANSLATORS: %1 refers to a time formatted as Locale.ShortFormat (e.g. hh:mm). It depends on system settings.
#. http://qt-project.org/doc/qt-4.8/qlocale.html#FormatType-enum
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:32
-#: ../src/app/qml/documentPage/DocumentListDelegate.qml:37
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:35
#, qt-format
msgid "Today, %1"
msgstr ""
#. TRANSLATORS: %1 refers to a time formatted as Locale.ShortFormat (e.g. hh:mm). It depends on system settings.
#. http://qt-project.org/doc/qt-4.8/qlocale.html#FormatType-enum
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:37
-#: ../src/app/qml/documentPage/DocumentListDelegate.qml:42
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:40
#, qt-format
msgid "Yesterday, %1"
msgstr ""
#. TRANSLATORS: this is a datetime formatting string,
#. see http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:42
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:45
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:58
msgid "dddd, hh:mm"
msgstr "dddd, hh:mm"
#. TRANSLATORS: this is a datetime formatting string,
#. see http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:46
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:49
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:47
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:63
msgid "dd-MM-yyyy hh:mm"
msgstr "dd-MM-yyyy hh:mm"
+#. TRANSLATORS: this is a datetime formatting string, and the
+#. singlequote is an escape character.
+#. See http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
+#: ../src/app/qml/documentPage/DocumentListDelegate.qml:36
+msgid "'Today', hh:mm"
+msgstr ""
+
+#. TRANSLATORS: this is a datetime formatting string, and the
+#. singlequote is an escape character.
+#. See http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
+#: ../src/app/qml/documentPage/DocumentListDelegate.qml:42
+msgid "'Yesterday', hh:mm"
+msgstr ""
+
#: ../src/app/qml/documentPage/DocumentListView.qml:157
msgid "Today"
msgstr "ມື້ນີ້"
@@ -369,6 +385,6 @@
msgid "Open"
msgstr ""
-#: /home/stefano/Progetti/docviewer/build-ubuntu-docviewer-app-Desktop-Default/po/com.ubuntu.docviewer.desktop.in.in.h:2
+#: /home/m/dev/core/ubuntu-docviewer-app-icon-fix/obj-x86_64-linux-gnu/po/com.ubuntu.docviewer.desktop.in.in.h:2
msgid "documents;viewer;pdf;reader;"
msgstr "ເກະສານ;ຕົວເບີ່ງ;ພີດີເເຟບ;ຕົວອ່ານ;"
=== modified file 'po/lv.po'
--- po/lv.po 2015-08-18 05:56:20 +0000
+++ po/lv.po 2015-10-08 20:57:10 +0000
@@ -7,7 +7,7 @@
msgstr ""
"Project-Id-Version: ubuntu-docviewer-app\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
-"POT-Creation-Date: 2015-07-24 11:10+0200\n"
+"POT-Creation-Date: 2015-06-24 22:48+0200\n"
"PO-Revision-Date: 2015-02-28 13:37+0000\n"
"Last-Translator: Rūdolfs Mazurs <Unknown>\n"
"Language-Team: Latvian <lv@xxxxxx>\n"
@@ -15,8 +15,13 @@
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2;\n"
+<<<<<<< TREE
"X-Launchpad-Export-Date: 2015-08-18 05:56+0000\n"
"X-Generator: Launchpad (build 17690)\n"
+=======
+"X-Launchpad-Export-Date: 2015-06-26 04:58+0000\n"
+"X-Generator: Launchpad (build 17578)\n"
+>>>>>>> MERGE-SOURCE
#. TRANSLATORS: This string is used for renaming a copied file,
#. when a file with the same name already exists in user's
@@ -33,7 +38,7 @@
msgstr ""
#: ../src/app/docviewer-application.cpp:171
-#: /home/stefano/Progetti/docviewer/build-ubuntu-docviewer-app-Desktop-Default/po/com.ubuntu.docviewer.desktop.in.in.h:1
+#: /home/m/dev/core/ubuntu-docviewer-app-icon-fix/obj-x86_64-linux-gnu/po/com.ubuntu.docviewer.desktop.in.in.h:1
msgid "Document Viewer"
msgstr "Dokumentu skatītājs"
@@ -149,32 +154,31 @@
msgid "%1 byte"
msgstr ""
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:36
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:28
msgid "Delete file"
msgstr ""
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:37
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:29
#, qt-format
msgid "Delete %1 file"
msgid_plural "Delete %1 files"
msgstr[0] ""
msgstr[1] ""
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:38
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:39
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:30
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:31
msgid "Are you sure you want to permanently delete this file?"
msgid_plural "Are you sure you want to permanently delete these files?"
msgstr[0] ""
msgstr[1] ""
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:44
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:36
#: ../src/app/qml/documentPage/DocumentPagePickModeHeader.qml:27
#: ../src/app/qml/pdfView/PdfViewGotoDialog.qml:52
msgid "Cancel"
msgstr "Atcelt"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:49
-#: ../src/app/qml/documentPage/DocumentDelegateActions.qml:25
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:41
#: ../src/app/qml/documentPage/DocumentPageSelectionModeHeader.qml:82
msgid "Delete"
msgstr ""
@@ -191,35 +195,47 @@
#. TRANSLATORS: %1 refers to a time formatted as Locale.ShortFormat (e.g. hh:mm). It depends on system settings.
#. http://qt-project.org/doc/qt-4.8/qlocale.html#FormatType-enum
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:32
-#: ../src/app/qml/documentPage/DocumentListDelegate.qml:37
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:35
#, qt-format
msgid "Today, %1"
msgstr ""
#. TRANSLATORS: %1 refers to a time formatted as Locale.ShortFormat (e.g. hh:mm). It depends on system settings.
#. http://qt-project.org/doc/qt-4.8/qlocale.html#FormatType-enum
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:37
-#: ../src/app/qml/documentPage/DocumentListDelegate.qml:42
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:40
#, qt-format
msgid "Yesterday, %1"
msgstr ""
#. TRANSLATORS: this is a datetime formatting string,
#. see http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:42
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:45
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:58
msgid "dddd, hh:mm"
msgstr ""
#. TRANSLATORS: this is a datetime formatting string,
#. see http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:46
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:49
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:47
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:63
msgid "dd-MM-yyyy hh:mm"
msgstr ""
+#. TRANSLATORS: this is a datetime formatting string, and the
+#. singlequote is an escape character.
+#. See http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
+#: ../src/app/qml/documentPage/DocumentListDelegate.qml:36
+msgid "'Today', hh:mm"
+msgstr ""
+
+#. TRANSLATORS: this is a datetime formatting string, and the
+#. singlequote is an escape character.
+#. See http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
+#: ../src/app/qml/documentPage/DocumentListDelegate.qml:42
+msgid "'Yesterday', hh:mm"
+msgstr ""
+
#: ../src/app/qml/documentPage/DocumentListView.qml:157
msgid "Today"
msgstr ""
@@ -371,6 +387,6 @@
msgid "Open"
msgstr ""
-#: /home/stefano/Progetti/docviewer/build-ubuntu-docviewer-app-Desktop-Default/po/com.ubuntu.docviewer.desktop.in.in.h:2
+#: /home/m/dev/core/ubuntu-docviewer-app-icon-fix/obj-x86_64-linux-gnu/po/com.ubuntu.docviewer.desktop.in.in.h:2
msgid "documents;viewer;pdf;reader;"
msgstr "dokumenti;skatītājs;pdf;lasītājs;"
=== modified file 'po/nb.po'
--- po/nb.po 2015-10-04 06:08:56 +0000
+++ po/nb.po 2015-10-08 20:57:10 +0000
@@ -7,16 +7,27 @@
msgstr ""
"Project-Id-Version: ubuntu-docviewer-app\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+<<<<<<< TREE
"POT-Creation-Date: 2015-07-24 11:10+0200\n"
"PO-Revision-Date: 2015-10-03 02:19+0000\n"
"Last-Translator: Marius Gripsgard <me@xxxxxxxxxxxxx>\n"
+=======
+"POT-Creation-Date: 2015-06-24 22:48+0200\n"
+"PO-Revision-Date: 2015-06-28 13:54+0000\n"
+"Last-Translator: Åka Sikrom <Unknown>\n"
+>>>>>>> MERGE-SOURCE
"Language-Team: Norwegian Bokmal <nb@xxxxxx>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
+<<<<<<< TREE
"X-Launchpad-Export-Date: 2015-10-04 06:08+0000\n"
"X-Generator: Launchpad (build 17783)\n"
+=======
+"X-Launchpad-Export-Date: 2015-06-29 05:36+0000\n"
+"X-Generator: Launchpad (build 17578)\n"
+>>>>>>> MERGE-SOURCE
#. TRANSLATORS: This string is used for renaming a copied file,
#. when a file with the same name already exists in user's
@@ -33,7 +44,7 @@
msgstr "kopi nr. %1"
#: ../src/app/docviewer-application.cpp:171
-#: /home/stefano/Progetti/docviewer/build-ubuntu-docviewer-app-Desktop-Default/po/com.ubuntu.docviewer.desktop.in.in.h:1
+#: /home/m/dev/core/ubuntu-docviewer-app-icon-fix/obj-x86_64-linux-gnu/po/com.ubuntu.docviewer.desktop.in.in.h:1
msgid "Document Viewer"
msgstr "Dokumentvisning"
@@ -147,32 +158,31 @@
msgid "%1 byte"
msgstr "%1 byte"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:36
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:28
msgid "Delete file"
msgstr "Slett fil"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:37
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:29
#, qt-format
msgid "Delete %1 file"
msgid_plural "Delete %1 files"
msgstr[0] "Slett %1 fil"
msgstr[1] "Slett %1 filer"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:38
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:39
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:30
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:31
msgid "Are you sure you want to permanently delete this file?"
msgid_plural "Are you sure you want to permanently delete these files?"
msgstr[0] "Er du sikker på at du vil slette denne fila for godt?"
msgstr[1] "Er du sikker på at du vil slette disse filene for godt?"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:44
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:36
#: ../src/app/qml/documentPage/DocumentPagePickModeHeader.qml:27
#: ../src/app/qml/pdfView/PdfViewGotoDialog.qml:52
msgid "Cancel"
msgstr "Avbryt"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:49
-#: ../src/app/qml/documentPage/DocumentDelegateActions.qml:25
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:41
#: ../src/app/qml/documentPage/DocumentPageSelectionModeHeader.qml:82
msgid "Delete"
msgstr "Slett"
@@ -189,35 +199,47 @@
#. TRANSLATORS: %1 refers to a time formatted as Locale.ShortFormat (e.g. hh:mm). It depends on system settings.
#. http://qt-project.org/doc/qt-4.8/qlocale.html#FormatType-enum
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:32
-#: ../src/app/qml/documentPage/DocumentListDelegate.qml:37
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:35
#, qt-format
msgid "Today, %1"
msgstr "I dag %1"
#. TRANSLATORS: %1 refers to a time formatted as Locale.ShortFormat (e.g. hh:mm). It depends on system settings.
#. http://qt-project.org/doc/qt-4.8/qlocale.html#FormatType-enum
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:37
-#: ../src/app/qml/documentPage/DocumentListDelegate.qml:42
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:40
#, qt-format
msgid "Yesterday, %1"
msgstr "I går %1"
#. TRANSLATORS: this is a datetime formatting string,
#. see http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:42
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:45
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:58
msgid "dddd, hh:mm"
msgstr "dddd hh:mm"
#. TRANSLATORS: this is a datetime formatting string,
#. see http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:46
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:49
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:47
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:63
msgid "dd-MM-yyyy hh:mm"
msgstr "dd.MM.yyyy hh:mm"
+#. TRANSLATORS: this is a datetime formatting string, and the
+#. singlequote is an escape character.
+#. See http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
+#: ../src/app/qml/documentPage/DocumentListDelegate.qml:36
+msgid "'Today', hh:mm"
+msgstr "'Today', hh:mm"
+
+#. TRANSLATORS: this is a datetime formatting string, and the
+#. singlequote is an escape character.
+#. See http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
+#: ../src/app/qml/documentPage/DocumentListDelegate.qml:42
+msgid "'Yesterday', hh:mm"
+msgstr "'Yesterday', hh:mm"
+
#: ../src/app/qml/documentPage/DocumentListView.qml:157
msgid "Today"
msgstr "I dag"
@@ -370,6 +392,6 @@
msgid "Open"
msgstr "Åpen"
-#: /home/stefano/Progetti/docviewer/build-ubuntu-docviewer-app-Desktop-Default/po/com.ubuntu.docviewer.desktop.in.in.h:2
+#: /home/m/dev/core/ubuntu-docviewer-app-icon-fix/obj-x86_64-linux-gnu/po/com.ubuntu.docviewer.desktop.in.in.h:2
msgid "documents;viewer;pdf;reader;"
msgstr "dokumenter;visning;pdf;leser;"
=== modified file 'po/nl.po'
--- po/nl.po 2015-08-18 05:56:20 +0000
+++ po/nl.po 2015-10-08 20:57:10 +0000
@@ -7,16 +7,21 @@
msgstr ""
"Project-Id-Version: ubuntu-docviewer-app\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
-"POT-Creation-Date: 2015-07-24 11:10+0200\n"
-"PO-Revision-Date: 2015-06-29 10:07+0000\n"
+"POT-Creation-Date: 2015-06-24 22:48+0200\n"
+"PO-Revision-Date: 2015-06-27 15:34+0000\n"
"Last-Translator: Hannie Dumoleyn <Unknown>\n"
"Language-Team: Dutch <nl@xxxxxx>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
+<<<<<<< TREE
"X-Launchpad-Export-Date: 2015-08-18 05:56+0000\n"
"X-Generator: Launchpad (build 17690)\n"
+=======
+"X-Launchpad-Export-Date: 2015-06-28 05:35+0000\n"
+"X-Generator: Launchpad (build 17578)\n"
+>>>>>>> MERGE-SOURCE
#. TRANSLATORS: This string is used for renaming a copied file,
#. when a file with the same name already exists in user's
@@ -33,7 +38,7 @@
msgstr "kopie %1"
#: ../src/app/docviewer-application.cpp:171
-#: /home/stefano/Progetti/docviewer/build-ubuntu-docviewer-app-Desktop-Default/po/com.ubuntu.docviewer.desktop.in.in.h:1
+#: /home/m/dev/core/ubuntu-docviewer-app-icon-fix/obj-x86_64-linux-gnu/po/com.ubuntu.docviewer.desktop.in.in.h:1
msgid "Document Viewer"
msgstr "Documentenviewer"
@@ -149,32 +154,31 @@
msgid "%1 byte"
msgstr "%1 byte"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:36
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:28
msgid "Delete file"
msgstr "Bestand verwijderen"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:37
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:29
#, qt-format
msgid "Delete %1 file"
msgid_plural "Delete %1 files"
msgstr[0] "%1 bestand verwijderen"
msgstr[1] "%1 bestanden verwijderen"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:38
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:39
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:30
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:31
msgid "Are you sure you want to permanently delete this file?"
msgid_plural "Are you sure you want to permanently delete these files?"
msgstr[0] "Weet u zeker dat u dit bestand definitief wilt verwijderen?"
msgstr[1] "Weet u zeker dat u deze bestanden definitief wilt verwijderen?"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:44
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:36
#: ../src/app/qml/documentPage/DocumentPagePickModeHeader.qml:27
#: ../src/app/qml/pdfView/PdfViewGotoDialog.qml:52
msgid "Cancel"
msgstr "Annuleren"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:49
-#: ../src/app/qml/documentPage/DocumentDelegateActions.qml:25
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:41
#: ../src/app/qml/documentPage/DocumentPageSelectionModeHeader.qml:82
msgid "Delete"
msgstr "Verwijderen"
@@ -193,35 +197,47 @@
#. TRANSLATORS: %1 refers to a time formatted as Locale.ShortFormat (e.g. hh:mm). It depends on system settings.
#. http://qt-project.org/doc/qt-4.8/qlocale.html#FormatType-enum
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:32
-#: ../src/app/qml/documentPage/DocumentListDelegate.qml:37
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:35
#, qt-format
msgid "Today, %1"
msgstr "Vandaag, %1"
#. TRANSLATORS: %1 refers to a time formatted as Locale.ShortFormat (e.g. hh:mm). It depends on system settings.
#. http://qt-project.org/doc/qt-4.8/qlocale.html#FormatType-enum
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:37
-#: ../src/app/qml/documentPage/DocumentListDelegate.qml:42
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:40
#, qt-format
msgid "Yesterday, %1"
msgstr "Gisteren, %1"
#. TRANSLATORS: this is a datetime formatting string,
#. see http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:42
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:45
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:58
msgid "dddd, hh:mm"
msgstr "dddd, hh:mm"
#. TRANSLATORS: this is a datetime formatting string,
#. see http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:46
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:49
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:47
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:63
msgid "dd-MM-yyyy hh:mm"
msgstr "dd-MM-yyyy hh:mm"
+#. TRANSLATORS: this is a datetime formatting string, and the
+#. singlequote is an escape character.
+#. See http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
+#: ../src/app/qml/documentPage/DocumentListDelegate.qml:36
+msgid "'Today', hh:mm"
+msgstr "‘Vandaag’, hh:mm"
+
+#. TRANSLATORS: this is a datetime formatting string, and the
+#. singlequote is an escape character.
+#. See http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
+#: ../src/app/qml/documentPage/DocumentListDelegate.qml:42
+msgid "'Yesterday', hh:mm"
+msgstr "‘Gisteren’, hh:mm"
+
#: ../src/app/qml/documentPage/DocumentListView.qml:157
msgid "Today"
msgstr "Vandaag"
@@ -375,6 +391,6 @@
msgid "Open"
msgstr "Openen"
-#: /home/stefano/Progetti/docviewer/build-ubuntu-docviewer-app-Desktop-Default/po/com.ubuntu.docviewer.desktop.in.in.h:2
+#: /home/m/dev/core/ubuntu-docviewer-app-icon-fix/obj-x86_64-linux-gnu/po/com.ubuntu.docviewer.desktop.in.in.h:2
msgid "documents;viewer;pdf;reader;"
msgstr "documenten;viewer;pdf;lezer;"
=== modified file 'po/ny.po'
--- po/ny.po 2015-08-18 05:56:20 +0000
+++ po/ny.po 2015-10-08 20:57:10 +0000
@@ -7,7 +7,7 @@
msgstr ""
"Project-Id-Version: ubuntu-docviewer-app\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
-"POT-Creation-Date: 2015-07-24 11:10+0200\n"
+"POT-Creation-Date: 2015-06-24 22:48+0200\n"
"PO-Revision-Date: 2015-03-09 08:42+0000\n"
"Last-Translator: Herald Luwizghie <luwizghieherald@xxxxxxxxx>\n"
"Language-Team: Chewa; Chichewa; Nyanja <ny@xxxxxx>\n"
@@ -15,8 +15,13 @@
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
+<<<<<<< TREE
"X-Launchpad-Export-Date: 2015-08-18 05:56+0000\n"
"X-Generator: Launchpad (build 17690)\n"
+=======
+"X-Launchpad-Export-Date: 2015-06-26 04:58+0000\n"
+"X-Generator: Launchpad (build 17578)\n"
+>>>>>>> MERGE-SOURCE
#. TRANSLATORS: This string is used for renaming a copied file,
#. when a file with the same name already exists in user's
@@ -33,7 +38,7 @@
msgstr ""
#: ../src/app/docviewer-application.cpp:171
-#: /home/stefano/Progetti/docviewer/build-ubuntu-docviewer-app-Desktop-Default/po/com.ubuntu.docviewer.desktop.in.in.h:1
+#: /home/m/dev/core/ubuntu-docviewer-app-icon-fix/obj-x86_64-linux-gnu/po/com.ubuntu.docviewer.desktop.in.in.h:1
msgid "Document Viewer"
msgstr "Chonela ma dokumenti"
@@ -149,32 +154,31 @@
msgid "%1 byte"
msgstr "%1 byte"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:36
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:28
msgid "Delete file"
msgstr "Fufuta failo"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:37
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:29
#, qt-format
msgid "Delete %1 file"
msgid_plural "Delete %1 files"
msgstr[0] "Kufufuta %1 failo"
msgstr[1] "Kufufuta %1 mafailo"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:38
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:39
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:30
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:31
msgid "Are you sure you want to permanently delete this file?"
msgid_plural "Are you sure you want to permanently delete these files?"
msgstr[0] "Zoonadi mukufuna mufufutiletu failoyi?"
msgstr[1] "Zoonadi mukufiuna mufufutiletu mafailowa?"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:44
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:36
#: ../src/app/qml/documentPage/DocumentPagePickModeHeader.qml:27
#: ../src/app/qml/pdfView/PdfViewGotoDialog.qml:52
msgid "Cancel"
msgstr "Lepheletsa"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:49
-#: ../src/app/qml/documentPage/DocumentDelegateActions.qml:25
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:41
#: ../src/app/qml/documentPage/DocumentPageSelectionModeHeader.qml:82
msgid "Delete"
msgstr "Fufuta"
@@ -193,35 +197,47 @@
#. TRANSLATORS: %1 refers to a time formatted as Locale.ShortFormat (e.g. hh:mm). It depends on system settings.
#. http://qt-project.org/doc/qt-4.8/qlocale.html#FormatType-enum
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:32
-#: ../src/app/qml/documentPage/DocumentListDelegate.qml:37
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:35
#, qt-format
msgid "Today, %1"
msgstr "Lero, %1"
#. TRANSLATORS: %1 refers to a time formatted as Locale.ShortFormat (e.g. hh:mm). It depends on system settings.
#. http://qt-project.org/doc/qt-4.8/qlocale.html#FormatType-enum
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:37
-#: ../src/app/qml/documentPage/DocumentListDelegate.qml:42
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:40
#, qt-format
msgid "Yesterday, %1"
msgstr "Dzulo, %1"
#. TRANSLATORS: this is a datetime formatting string,
#. see http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:42
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:45
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:58
msgid "dddd, hh:mm"
msgstr "ddd, hh:mm"
#. TRANSLATORS: this is a datetime formatting string,
#. see http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:46
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:49
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:47
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:63
msgid "dd-MM-yyyy hh:mm"
msgstr "dd-MM-yyyy hh:mm"
+#. TRANSLATORS: this is a datetime formatting string, and the
+#. singlequote is an escape character.
+#. See http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
+#: ../src/app/qml/documentPage/DocumentListDelegate.qml:36
+msgid "'Today', hh:mm"
+msgstr ""
+
+#. TRANSLATORS: this is a datetime formatting string, and the
+#. singlequote is an escape character.
+#. See http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
+#: ../src/app/qml/documentPage/DocumentListDelegate.qml:42
+msgid "'Yesterday', hh:mm"
+msgstr ""
+
#: ../src/app/qml/documentPage/DocumentListView.qml:157
msgid "Today"
msgstr "Lero"
@@ -373,6 +389,6 @@
msgid "Open"
msgstr ""
-#: /home/stefano/Progetti/docviewer/build-ubuntu-docviewer-app-Desktop-Default/po/com.ubuntu.docviewer.desktop.in.in.h:2
+#: /home/m/dev/core/ubuntu-docviewer-app-icon-fix/obj-x86_64-linux-gnu/po/com.ubuntu.docviewer.desktop.in.in.h:2
msgid "documents;viewer;pdf;reader;"
msgstr "dokumenti;choonela;pdf;chowelengela;"
=== modified file 'po/pa.po'
--- po/pa.po 2015-08-18 05:56:20 +0000
+++ po/pa.po 2015-10-08 20:57:10 +0000
@@ -7,16 +7,21 @@
msgstr ""
"Project-Id-Version: ubuntu-docviewer-app\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
-"POT-Creation-Date: 2015-07-24 11:10+0200\n"
-"PO-Revision-Date: 2015-06-30 04:21+0000\n"
+"POT-Creation-Date: 2015-06-24 22:48+0200\n"
+"PO-Revision-Date: 2015-05-10 04:07+0000\n"
"Last-Translator: Gursharnjit_Singh <ubuntuser13@xxxxxxxxx>\n"
"Language-Team: Punjabi <pa@xxxxxx>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
+<<<<<<< TREE
"X-Launchpad-Export-Date: 2015-08-18 05:56+0000\n"
"X-Generator: Launchpad (build 17690)\n"
+=======
+"X-Launchpad-Export-Date: 2015-06-26 04:58+0000\n"
+"X-Generator: Launchpad (build 17578)\n"
+>>>>>>> MERGE-SOURCE
#. TRANSLATORS: This string is used for renaming a copied file,
#. when a file with the same name already exists in user's
@@ -33,7 +38,7 @@
msgstr "ਕਾਪੀ %1"
#: ../src/app/docviewer-application.cpp:171
-#: /home/stefano/Progetti/docviewer/build-ubuntu-docviewer-app-Desktop-Default/po/com.ubuntu.docviewer.desktop.in.in.h:1
+#: /home/m/dev/core/ubuntu-docviewer-app-icon-fix/obj-x86_64-linux-gnu/po/com.ubuntu.docviewer.desktop.in.in.h:1
msgid "Document Viewer"
msgstr "ਦਸਤਾਵੇਜ ਦਰਸ਼ਕ"
@@ -149,32 +154,31 @@
msgid "%1 byte"
msgstr "%1 ਬਾਈਟ"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:36
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:28
msgid "Delete file"
msgstr "ਫ਼ਾਈਲ ਹਟਾਓ"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:37
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:29
#, qt-format
msgid "Delete %1 file"
msgid_plural "Delete %1 files"
msgstr[0] "%1 ਫ਼ਾਈਲ ਹਟਾਓ"
msgstr[1] "%1 ਫ਼ਾਈਲਾਂ ਹਟਾਓ"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:38
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:39
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:30
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:31
msgid "Are you sure you want to permanently delete this file?"
msgid_plural "Are you sure you want to permanently delete these files?"
msgstr[0] "ਕੀ ਤੁਸੀਂ ਇਸ ਫ਼ਾਈਲ ਨੂੰ ਪੱਕੇ ਤੌਰ ਤੇ ਹਟਾਉਣਾ ਚਾਹੁੰਦੇ ਹੋ?"
msgstr[1] "ਕੀ ਤੁਸੀਂ ਇਹਨਾਂ ਫ਼ਾਈਲਾਂ ਨੂੰ ਪੱਕੇ ਤੌਰ ਤੇ ਹਟਾਉਣਾ ਚਾਹੁੰਦੇ ਹੋ?"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:44
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:36
#: ../src/app/qml/documentPage/DocumentPagePickModeHeader.qml:27
#: ../src/app/qml/pdfView/PdfViewGotoDialog.qml:52
msgid "Cancel"
msgstr "ਰੱਦ"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:49
-#: ../src/app/qml/documentPage/DocumentDelegateActions.qml:25
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:41
#: ../src/app/qml/documentPage/DocumentPageSelectionModeHeader.qml:82
msgid "Delete"
msgstr "ਹਟਾਓ"
@@ -193,35 +197,47 @@
#. TRANSLATORS: %1 refers to a time formatted as Locale.ShortFormat (e.g. hh:mm). It depends on system settings.
#. http://qt-project.org/doc/qt-4.8/qlocale.html#FormatType-enum
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:32
-#: ../src/app/qml/documentPage/DocumentListDelegate.qml:37
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:35
#, qt-format
msgid "Today, %1"
msgstr "ਅੱਜ, %1"
#. TRANSLATORS: %1 refers to a time formatted as Locale.ShortFormat (e.g. hh:mm). It depends on system settings.
#. http://qt-project.org/doc/qt-4.8/qlocale.html#FormatType-enum
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:37
-#: ../src/app/qml/documentPage/DocumentListDelegate.qml:42
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:40
#, qt-format
msgid "Yesterday, %1"
msgstr "ਕੱਲ੍ਹ, %1"
#. TRANSLATORS: this is a datetime formatting string,
#. see http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:42
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:45
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:58
msgid "dddd, hh:mm"
msgstr "dddd, hh:mm"
#. TRANSLATORS: this is a datetime formatting string,
#. see http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:46
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:49
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:47
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:63
msgid "dd-MM-yyyy hh:mm"
msgstr "dd-MM-yyyy hh:mm"
+#. TRANSLATORS: this is a datetime formatting string, and the
+#. singlequote is an escape character.
+#. See http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
+#: ../src/app/qml/documentPage/DocumentListDelegate.qml:36
+msgid "'Today', hh:mm"
+msgstr ""
+
+#. TRANSLATORS: this is a datetime formatting string, and the
+#. singlequote is an escape character.
+#. See http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
+#: ../src/app/qml/documentPage/DocumentListDelegate.qml:42
+msgid "'Yesterday', hh:mm"
+msgstr ""
+
#: ../src/app/qml/documentPage/DocumentListView.qml:157
msgid "Today"
msgstr "ਅੱਜ"
@@ -244,15 +260,15 @@
#: ../src/app/qml/documentPage/DocumentPage.qml:24
msgid "Documents"
-msgstr "ਦਸਤਾਵੇਜ਼"
+msgstr ""
#: ../src/app/qml/documentPage/DocumentPageDefaultHeader.qml:29
msgid "Search..."
-msgstr "ਖੋਜ..."
+msgstr ""
#: ../src/app/qml/documentPage/DocumentPageDefaultHeader.qml:37
msgid "Sorting settings..."
-msgstr "ਕਿਸਮ ਵੰਡ ਸੈਟਿੰਗ..."
+msgstr ""
#: ../src/app/qml/documentPage/DocumentPageDefaultHeader.qml:46
#: ../src/app/qml/documentPage/DocumentPagePickModeHeader.qml:35
@@ -276,7 +292,7 @@
#: ../src/app/qml/documentPage/DocumentPageSearchHeader.qml:47
msgid "search in documents..."
-msgstr "ਦਸਤਾਵੇਜ਼ਾਂ ਵਿੱਚ ਖੋਜੋ..."
+msgstr ""
#: ../src/app/qml/documentPage/DocumentPageSelectionModeHeader.qml:52
msgid "Select None"
@@ -288,34 +304,32 @@
#: ../src/app/qml/documentPage/SearchEmptyState.qml:24
msgid "No matching document found"
-msgstr "ਕੋਈ ਢੁੱਕਵਾਂ ਦਸਤਾਵੇਜ਼ ਨਹੀਂ ਮਿਲਿਆ"
+msgstr ""
#: ../src/app/qml/documentPage/SearchEmptyState.qml:26
msgid ""
"Please ensure that your query is not misspelled and/or try a different query."
msgstr ""
-"ਕਿਰਪਾ ਕਰਕੇ ਯਕੀਨੀ ਬਣਾਓ ਕੀ ਪੁੱਛ-ਗਿੱਛ ਦੇ ਅੱਖਰ ਠੀਕ ਹਨ ਅਤੇ/ਜਾਂ ਇੱਕ ਵੱਖ ਪੁੱਛ-ਗਿ਼ੱਛ "
-"ਵਰਤੋਂ।"
#: ../src/app/qml/documentPage/SortSettingsDialog.qml:26
msgid "Sorting settings"
-msgstr "ਕਿਸਮ ਵੰਡ ਸੈਟਿੰਗਾਂ"
+msgstr ""
#: ../src/app/qml/documentPage/SortSettingsDialog.qml:31
msgid "Sort by date (Latest first)"
-msgstr "ਮਿਤੀ ਅਨੁਸਾਰ ਵੰਡੋ (ਨਵੀਆਂ ਪਹਿਲਾਂ)"
+msgstr ""
#: ../src/app/qml/documentPage/SortSettingsDialog.qml:32
msgid "Sort by name (A-Z)"
-msgstr "ਨਾਂ ਅਨੁਸਾਰ ਵੰਡੋ (A-Z)"
+msgstr ""
#: ../src/app/qml/documentPage/SortSettingsDialog.qml:33
msgid "Sort by size (Smaller first)"
-msgstr "ਅਕਾਰ ਅਨੁਸਾਰ ਵੰਡੋ (ਛੋਟਾ ਪਹਿਲਾਂ)"
+msgstr ""
#: ../src/app/qml/documentPage/SortSettingsDialog.qml:47
msgid "Reverse order"
-msgstr "ਉਲਟ ਤਰਤੀਬ"
+msgstr ""
#. TRANSLATORS: "Contents" refers to the "Table of Contents" of a PDF document.
#: ../src/app/qml/pdfView/PdfContentsPage.qml:32
@@ -375,6 +389,6 @@
msgid "Open"
msgstr "ਖੋਲ੍ਹੋ"
-#: /home/stefano/Progetti/docviewer/build-ubuntu-docviewer-app-Desktop-Default/po/com.ubuntu.docviewer.desktop.in.in.h:2
+#: /home/m/dev/core/ubuntu-docviewer-app-icon-fix/obj-x86_64-linux-gnu/po/com.ubuntu.docviewer.desktop.in.in.h:2
msgid "documents;viewer;pdf;reader;"
msgstr "ਦਸਤਾਵੇਜ;ਦਰਸਕ;pdf;ਰੀਡਰ;"
=== modified file 'po/pl.po'
--- po/pl.po 2015-09-14 05:58:13 +0000
+++ po/pl.po 2015-10-08 20:57:10 +0000
@@ -7,8 +7,13 @@
msgstr ""
"Project-Id-Version: ubuntu-docviewer-app\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+<<<<<<< TREE
"POT-Creation-Date: 2015-07-24 11:10+0200\n"
"PO-Revision-Date: 2015-09-13 16:25+0000\n"
+=======
+"POT-Creation-Date: 2015-06-24 22:48+0200\n"
+"PO-Revision-Date: 2015-04-29 08:23+0000\n"
+>>>>>>> MERGE-SOURCE
"Last-Translator: Krzysztof Tataradziński <Unknown>\n"
"Language-Team: Polish <pl@xxxxxx>\n"
"MIME-Version: 1.0\n"
@@ -16,8 +21,13 @@
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
"|| n%100>=20) ? 1 : 2;\n"
+<<<<<<< TREE
"X-Launchpad-Export-Date: 2015-09-14 05:58+0000\n"
"X-Generator: Launchpad (build 17720)\n"
+=======
+"X-Launchpad-Export-Date: 2015-06-26 04:58+0000\n"
+"X-Generator: Launchpad (build 17578)\n"
+>>>>>>> MERGE-SOURCE
#. TRANSLATORS: This string is used for renaming a copied file,
#. when a file with the same name already exists in user's
@@ -34,7 +44,7 @@
msgstr "kopia %1"
#: ../src/app/docviewer-application.cpp:171
-#: /home/stefano/Progetti/docviewer/build-ubuntu-docviewer-app-Desktop-Default/po/com.ubuntu.docviewer.desktop.in.in.h:1
+#: /home/m/dev/core/ubuntu-docviewer-app-icon-fix/obj-x86_64-linux-gnu/po/com.ubuntu.docviewer.desktop.in.in.h:1
msgid "Document Viewer"
msgstr "Przeglądarka dokumentów"
@@ -150,13 +160,13 @@
#: ../src/app/qml/common/utils.js:33
#, qt-format
msgid "%1 byte"
-msgstr "%1 B"
+msgstr "%1 bajtów"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:36
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:28
msgid "Delete file"
msgstr "Usuń plik"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:37
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:29
#, qt-format
msgid "Delete %1 file"
msgid_plural "Delete %1 files"
@@ -164,67 +174,76 @@
msgstr[1] "Usuń %1 pliki"
msgstr[2] "Usuń %1 plików"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:38
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:39
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:30
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:31
msgid "Are you sure you want to permanently delete this file?"
msgid_plural "Are you sure you want to permanently delete these files?"
-msgstr[0] "Jesteś pewien, że chcesz trwale usunąć ten plik?"
-msgstr[1] "Jesteś pewien, że chcesz trwale usunąć te pliki?"
-msgstr[2] "Jesteś pewien, że chcesz trwale usunąć te pliki?"
+msgstr[0] ""
+msgstr[1] ""
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:44
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:36
#: ../src/app/qml/documentPage/DocumentPagePickModeHeader.qml:27
#: ../src/app/qml/pdfView/PdfViewGotoDialog.qml:52
msgid "Cancel"
msgstr "Anuluj"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:49
-#: ../src/app/qml/documentPage/DocumentDelegateActions.qml:25
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:41
#: ../src/app/qml/documentPage/DocumentPageSelectionModeHeader.qml:82
msgid "Delete"
msgstr "Usuń"
#: ../src/app/qml/documentPage/DocumentEmptyState.qml:24
msgid "No document found"
-msgstr "Nie znaleziono dokumentu"
+msgstr ""
#: ../src/app/qml/documentPage/DocumentEmptyState.qml:28
msgid ""
"Connect your device to any computer and simply drag files to the Documents "
"folder."
msgstr ""
-"Podłącz urządzenie do komputera i przeciągnij pliki do folderu Dokumenty."
#. TRANSLATORS: %1 refers to a time formatted as Locale.ShortFormat (e.g. hh:mm). It depends on system settings.
#. http://qt-project.org/doc/qt-4.8/qlocale.html#FormatType-enum
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:32
-#: ../src/app/qml/documentPage/DocumentListDelegate.qml:37
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:35
#, qt-format
msgid "Today, %1"
msgstr "Dziś, %1"
#. TRANSLATORS: %1 refers to a time formatted as Locale.ShortFormat (e.g. hh:mm). It depends on system settings.
#. http://qt-project.org/doc/qt-4.8/qlocale.html#FormatType-enum
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:37
-#: ../src/app/qml/documentPage/DocumentListDelegate.qml:42
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:40
#, qt-format
msgid "Yesterday, %1"
msgstr "Wczoraj, %1"
#. TRANSLATORS: this is a datetime formatting string,
#. see http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:42
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:45
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:58
msgid "dddd, hh:mm"
msgstr "dddd, hh:mm"
#. TRANSLATORS: this is a datetime formatting string,
#. see http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:46
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:49
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:47
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:63
msgid "dd-MM-yyyy hh:mm"
-msgstr "dd.MM.yyyy, hh:mm"
+msgstr "dd-MM-yyyy hh:mm"
+
+#. TRANSLATORS: this is a datetime formatting string, and the
+#. singlequote is an escape character.
+#. See http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
+#: ../src/app/qml/documentPage/DocumentListDelegate.qml:36
+msgid "'Today', hh:mm"
+msgstr ""
+
+#. TRANSLATORS: this is a datetime formatting string, and the
+#. singlequote is an escape character.
+#. See http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
+#: ../src/app/qml/documentPage/DocumentListDelegate.qml:42
+msgid "'Yesterday', hh:mm"
+msgstr ""
#: ../src/app/qml/documentPage/DocumentListView.qml:157
msgid "Today"
@@ -379,6 +398,6 @@
msgid "Open"
msgstr "Otwórz"
-#: /home/stefano/Progetti/docviewer/build-ubuntu-docviewer-app-Desktop-Default/po/com.ubuntu.docviewer.desktop.in.in.h:2
+#: /home/m/dev/core/ubuntu-docviewer-app-icon-fix/obj-x86_64-linux-gnu/po/com.ubuntu.docviewer.desktop.in.in.h:2
msgid "documents;viewer;pdf;reader;"
msgstr "dokumenty;przeglądarka;pdf;czytnik"
=== modified file 'po/pt.po'
--- po/pt.po 2015-08-18 05:56:20 +0000
+++ po/pt.po 2015-10-08 20:57:10 +0000
@@ -7,16 +7,21 @@
msgstr ""
"Project-Id-Version: ubuntu-docviewer-app\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
-"POT-Creation-Date: 2015-07-24 11:10+0200\n"
-"PO-Revision-Date: 2015-07-17 16:14+0000\n"
+"POT-Creation-Date: 2015-06-24 22:48+0200\n"
+"PO-Revision-Date: 2015-06-27 21:08+0000\n"
"Last-Translator: António Miranda <Unknown>\n"
"Language-Team: Portuguese <pt@xxxxxx>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
+<<<<<<< TREE
"X-Launchpad-Export-Date: 2015-08-18 05:56+0000\n"
"X-Generator: Launchpad (build 17690)\n"
+=======
+"X-Launchpad-Export-Date: 2015-06-28 05:35+0000\n"
+"X-Generator: Launchpad (build 17578)\n"
+>>>>>>> MERGE-SOURCE
#. TRANSLATORS: This string is used for renaming a copied file,
#. when a file with the same name already exists in user's
@@ -33,9 +38,9 @@
msgstr "cópia %1"
#: ../src/app/docviewer-application.cpp:171
-#: /home/stefano/Progetti/docviewer/build-ubuntu-docviewer-app-Desktop-Default/po/com.ubuntu.docviewer.desktop.in.in.h:1
+#: /home/m/dev/core/ubuntu-docviewer-app-icon-fix/obj-x86_64-linux-gnu/po/com.ubuntu.docviewer.desktop.in.in.h:1
msgid "Document Viewer"
-msgstr "Documentos"
+msgstr "Visualizador de Documentos"
#: ../src/app/qml/common/DetailsPage.qml:27
#: ../src/app/qml/pdfView/PdfViewDefaultHeader.qml:97
@@ -149,32 +154,31 @@
msgid "%1 byte"
msgstr "%1 byte"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:36
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:28
msgid "Delete file"
msgstr "Apagar o ficheiro"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:37
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:29
#, qt-format
msgid "Delete %1 file"
msgid_plural "Delete %1 files"
msgstr[0] "Apagar %1 ficheiro"
msgstr[1] "Apagar %1 ficheiros"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:38
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:39
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:30
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:31
msgid "Are you sure you want to permanently delete this file?"
msgid_plural "Are you sure you want to permanently delete these files?"
msgstr[0] "Tem a certeza que quer eliminar este ficheiro?"
msgstr[1] "Tem a certeza que quer eliminar estes ficheiros?"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:44
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:36
#: ../src/app/qml/documentPage/DocumentPagePickModeHeader.qml:27
#: ../src/app/qml/pdfView/PdfViewGotoDialog.qml:52
msgid "Cancel"
msgstr "Cancelar"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:49
-#: ../src/app/qml/documentPage/DocumentDelegateActions.qml:25
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:41
#: ../src/app/qml/documentPage/DocumentPageSelectionModeHeader.qml:82
msgid "Delete"
msgstr "Apagar"
@@ -193,35 +197,47 @@
#. TRANSLATORS: %1 refers to a time formatted as Locale.ShortFormat (e.g. hh:mm). It depends on system settings.
#. http://qt-project.org/doc/qt-4.8/qlocale.html#FormatType-enum
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:32
-#: ../src/app/qml/documentPage/DocumentListDelegate.qml:37
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:35
#, qt-format
msgid "Today, %1"
msgstr "Hoje, %1"
#. TRANSLATORS: %1 refers to a time formatted as Locale.ShortFormat (e.g. hh:mm). It depends on system settings.
#. http://qt-project.org/doc/qt-4.8/qlocale.html#FormatType-enum
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:37
-#: ../src/app/qml/documentPage/DocumentListDelegate.qml:42
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:40
#, qt-format
msgid "Yesterday, %1"
msgstr "Ontem, %1"
#. TRANSLATORS: this is a datetime formatting string,
#. see http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:42
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:45
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:58
msgid "dddd, hh:mm"
msgstr "dddd, hh:mm"
#. TRANSLATORS: this is a datetime formatting string,
#. see http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:46
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:49
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:47
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:63
msgid "dd-MM-yyyy hh:mm"
msgstr "dd-MM-yyyy hh:mm"
+#. TRANSLATORS: this is a datetime formatting string, and the
+#. singlequote is an escape character.
+#. See http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
+#: ../src/app/qml/documentPage/DocumentListDelegate.qml:36
+msgid "'Today', hh:mm"
+msgstr "'Hoje', hh:mm"
+
+#. TRANSLATORS: this is a datetime formatting string, and the
+#. singlequote is an escape character.
+#. See http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
+#: ../src/app/qml/documentPage/DocumentListDelegate.qml:42
+msgid "'Yesterday', hh:mm"
+msgstr "'Ontem', hh:mm"
+
#: ../src/app/qml/documentPage/DocumentListView.qml:157
msgid "Today"
msgstr "Hoje"
@@ -375,6 +391,6 @@
msgid "Open"
msgstr "Abrir"
-#: /home/stefano/Progetti/docviewer/build-ubuntu-docviewer-app-Desktop-Default/po/com.ubuntu.docviewer.desktop.in.in.h:2
+#: /home/m/dev/core/ubuntu-docviewer-app-icon-fix/obj-x86_64-linux-gnu/po/com.ubuntu.docviewer.desktop.in.in.h:2
msgid "documents;viewer;pdf;reader;"
msgstr "visualizador;documentos;leitor;pdf"
=== modified file 'po/pt_BR.po'
--- po/pt_BR.po 2015-08-18 05:56:20 +0000
+++ po/pt_BR.po 2015-10-08 20:57:10 +0000
@@ -7,7 +7,7 @@
msgstr ""
"Project-Id-Version: ubuntu-docviewer-app\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
-"POT-Creation-Date: 2015-07-24 11:10+0200\n"
+"POT-Creation-Date: 2015-06-24 22:48+0200\n"
"PO-Revision-Date: 2015-03-04 02:07+0000\n"
"Last-Translator: Rafael Neri <Unknown>\n"
"Language-Team: Brazilian Portuguese <pt_BR@xxxxxx>\n"
@@ -15,8 +15,13 @@
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
+<<<<<<< TREE
"X-Launchpad-Export-Date: 2015-08-18 05:56+0000\n"
"X-Generator: Launchpad (build 17690)\n"
+=======
+"X-Launchpad-Export-Date: 2015-06-26 04:59+0000\n"
+"X-Generator: Launchpad (build 17578)\n"
+>>>>>>> MERGE-SOURCE
#. TRANSLATORS: This string is used for renaming a copied file,
#. when a file with the same name already exists in user's
@@ -33,7 +38,7 @@
msgstr ""
#: ../src/app/docviewer-application.cpp:171
-#: /home/stefano/Progetti/docviewer/build-ubuntu-docviewer-app-Desktop-Default/po/com.ubuntu.docviewer.desktop.in.in.h:1
+#: /home/m/dev/core/ubuntu-docviewer-app-icon-fix/obj-x86_64-linux-gnu/po/com.ubuntu.docviewer.desktop.in.in.h:1
msgid "Document Viewer"
msgstr "Visualizador de documentos"
@@ -149,32 +154,31 @@
msgid "%1 byte"
msgstr ""
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:36
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:28
msgid "Delete file"
msgstr "Excluir arquivo"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:37
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:29
#, qt-format
msgid "Delete %1 file"
msgid_plural "Delete %1 files"
msgstr[0] ""
msgstr[1] ""
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:38
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:39
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:30
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:31
msgid "Are you sure you want to permanently delete this file?"
msgid_plural "Are you sure you want to permanently delete these files?"
msgstr[0] ""
msgstr[1] ""
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:44
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:36
#: ../src/app/qml/documentPage/DocumentPagePickModeHeader.qml:27
#: ../src/app/qml/pdfView/PdfViewGotoDialog.qml:52
msgid "Cancel"
msgstr "Cancelar"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:49
-#: ../src/app/qml/documentPage/DocumentDelegateActions.qml:25
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:41
#: ../src/app/qml/documentPage/DocumentPageSelectionModeHeader.qml:82
msgid "Delete"
msgstr "Excluir"
@@ -193,35 +197,47 @@
#. TRANSLATORS: %1 refers to a time formatted as Locale.ShortFormat (e.g. hh:mm). It depends on system settings.
#. http://qt-project.org/doc/qt-4.8/qlocale.html#FormatType-enum
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:32
-#: ../src/app/qml/documentPage/DocumentListDelegate.qml:37
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:35
#, qt-format
msgid "Today, %1"
msgstr ""
#. TRANSLATORS: %1 refers to a time formatted as Locale.ShortFormat (e.g. hh:mm). It depends on system settings.
#. http://qt-project.org/doc/qt-4.8/qlocale.html#FormatType-enum
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:37
-#: ../src/app/qml/documentPage/DocumentListDelegate.qml:42
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:40
#, qt-format
msgid "Yesterday, %1"
msgstr ""
#. TRANSLATORS: this is a datetime formatting string,
#. see http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:42
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:45
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:58
msgid "dddd, hh:mm"
msgstr "dddd, hh:mm"
#. TRANSLATORS: this is a datetime formatting string,
#. see http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:46
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:49
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:47
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:63
msgid "dd-MM-yyyy hh:mm"
msgstr "dd/MM/yyyy hh:mm"
+#. TRANSLATORS: this is a datetime formatting string, and the
+#. singlequote is an escape character.
+#. See http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
+#: ../src/app/qml/documentPage/DocumentListDelegate.qml:36
+msgid "'Today', hh:mm"
+msgstr ""
+
+#. TRANSLATORS: this is a datetime formatting string, and the
+#. singlequote is an escape character.
+#. See http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
+#: ../src/app/qml/documentPage/DocumentListDelegate.qml:42
+msgid "'Yesterday', hh:mm"
+msgstr ""
+
#: ../src/app/qml/documentPage/DocumentListView.qml:157
msgid "Today"
msgstr "Hoje"
@@ -373,6 +389,6 @@
msgid "Open"
msgstr ""
-#: /home/stefano/Progetti/docviewer/build-ubuntu-docviewer-app-Desktop-Default/po/com.ubuntu.docviewer.desktop.in.in.h:2
+#: /home/m/dev/core/ubuntu-docviewer-app-icon-fix/obj-x86_64-linux-gnu/po/com.ubuntu.docviewer.desktop.in.in.h:2
msgid "documents;viewer;pdf;reader;"
msgstr "documentos;visualizador;pdf;leitor"
=== modified file 'po/ru.po'
--- po/ru.po 2015-08-18 05:56:20 +0000
+++ po/ru.po 2015-10-08 20:57:10 +0000
@@ -7,7 +7,7 @@
msgstr ""
"Project-Id-Version: ubuntu-docviewer-app\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
-"POT-Creation-Date: 2015-07-24 11:10+0200\n"
+"POT-Creation-Date: 2015-06-24 22:48+0200\n"
"PO-Revision-Date: 2015-06-26 14:22+0000\n"
"Last-Translator: Oleg Koptev <koptev.oleg@xxxxxxxxx>\n"
"Language-Team: Russian <ru@xxxxxx>\n"
@@ -16,8 +16,13 @@
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
+<<<<<<< TREE
"X-Launchpad-Export-Date: 2015-08-18 05:56+0000\n"
"X-Generator: Launchpad (build 17690)\n"
+=======
+"X-Launchpad-Export-Date: 2015-06-27 05:35+0000\n"
+"X-Generator: Launchpad (build 17578)\n"
+>>>>>>> MERGE-SOURCE
#. TRANSLATORS: This string is used for renaming a copied file,
#. when a file with the same name already exists in user's
@@ -34,7 +39,7 @@
msgstr "копия %1"
#: ../src/app/docviewer-application.cpp:171
-#: /home/stefano/Progetti/docviewer/build-ubuntu-docviewer-app-Desktop-Default/po/com.ubuntu.docviewer.desktop.in.in.h:1
+#: /home/m/dev/core/ubuntu-docviewer-app-icon-fix/obj-x86_64-linux-gnu/po/com.ubuntu.docviewer.desktop.in.in.h:1
msgid "Document Viewer"
msgstr "Программа просмотра документов"
@@ -151,11 +156,11 @@
msgid "%1 byte"
msgstr "%1 байт"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:36
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:28
msgid "Delete file"
msgstr "Удалить файл"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:37
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:29
#, qt-format
msgid "Delete %1 file"
msgid_plural "Delete %1 files"
@@ -163,22 +168,21 @@
msgstr[1] "Удалить %1 файла"
msgstr[2] "Удалить %1 файлов"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:38
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:39
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:30
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:31
msgid "Are you sure you want to permanently delete this file?"
msgid_plural "Are you sure you want to permanently delete these files?"
msgstr[0] "Удалить этот файл окончательно?"
msgstr[1] "Удалить эти файлы окончательно?"
msgstr[2] "Удалить эти файлы окончательно?"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:44
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:36
#: ../src/app/qml/documentPage/DocumentPagePickModeHeader.qml:27
#: ../src/app/qml/pdfView/PdfViewGotoDialog.qml:52
msgid "Cancel"
msgstr "Отменить"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:49
-#: ../src/app/qml/documentPage/DocumentDelegateActions.qml:25
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:41
#: ../src/app/qml/documentPage/DocumentPageSelectionModeHeader.qml:82
msgid "Delete"
msgstr "Удалить"
@@ -197,35 +201,47 @@
#. TRANSLATORS: %1 refers to a time formatted as Locale.ShortFormat (e.g. hh:mm). It depends on system settings.
#. http://qt-project.org/doc/qt-4.8/qlocale.html#FormatType-enum
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:32
-#: ../src/app/qml/documentPage/DocumentListDelegate.qml:37
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:35
#, qt-format
msgid "Today, %1"
msgstr "Сегодня, %1"
#. TRANSLATORS: %1 refers to a time formatted as Locale.ShortFormat (e.g. hh:mm). It depends on system settings.
#. http://qt-project.org/doc/qt-4.8/qlocale.html#FormatType-enum
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:37
-#: ../src/app/qml/documentPage/DocumentListDelegate.qml:42
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:40
#, qt-format
msgid "Yesterday, %1"
msgstr "Вчера, %1"
#. TRANSLATORS: this is a datetime formatting string,
#. see http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:42
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:45
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:58
msgid "dddd, hh:mm"
msgstr "dddd, hh:mm"
#. TRANSLATORS: this is a datetime formatting string,
#. see http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:46
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:49
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:47
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:63
msgid "dd-MM-yyyy hh:mm"
msgstr "dd-MM-yyyy hh:mm"
+#. TRANSLATORS: this is a datetime formatting string, and the
+#. singlequote is an escape character.
+#. See http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
+#: ../src/app/qml/documentPage/DocumentListDelegate.qml:36
+msgid "'Today', hh:mm"
+msgstr "'Сегодня', hh:mm"
+
+#. TRANSLATORS: this is a datetime formatting string, and the
+#. singlequote is an escape character.
+#. See http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
+#: ../src/app/qml/documentPage/DocumentListDelegate.qml:42
+msgid "'Yesterday', hh:mm"
+msgstr "'Вчера', hh:mm"
+
#: ../src/app/qml/documentPage/DocumentListView.qml:157
msgid "Today"
msgstr "Сегодня"
@@ -379,6 +395,6 @@
msgid "Open"
msgstr "Открыть"
-#: /home/stefano/Progetti/docviewer/build-ubuntu-docviewer-app-Desktop-Default/po/com.ubuntu.docviewer.desktop.in.in.h:2
+#: /home/m/dev/core/ubuntu-docviewer-app-icon-fix/obj-x86_64-linux-gnu/po/com.ubuntu.docviewer.desktop.in.in.h:2
msgid "documents;viewer;pdf;reader;"
msgstr "документы;просмотр;pdf;чтение;"
=== modified file 'po/sl.po'
--- po/sl.po 2015-08-18 05:56:20 +0000
+++ po/sl.po 2015-10-08 20:57:10 +0000
@@ -7,8 +7,8 @@
msgstr ""
"Project-Id-Version: ubuntu-docviewer-app\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
-"POT-Creation-Date: 2015-07-24 11:10+0200\n"
-"PO-Revision-Date: 2015-07-20 09:45+0000\n"
+"POT-Creation-Date: 2015-06-24 22:48+0200\n"
+"PO-Revision-Date: 2015-06-27 12:32+0000\n"
"Last-Translator: Sasa Batistic <Unknown>\n"
"Language-Team: Slovenian <sl@xxxxxx>\n"
"MIME-Version: 1.0\n"
@@ -16,8 +16,13 @@
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || "
"n%100==4 ? 3 : 0);\n"
+<<<<<<< TREE
"X-Launchpad-Export-Date: 2015-08-18 05:56+0000\n"
"X-Generator: Launchpad (build 17690)\n"
+=======
+"X-Launchpad-Export-Date: 2015-06-28 05:35+0000\n"
+"X-Generator: Launchpad (build 17578)\n"
+>>>>>>> MERGE-SOURCE
#. TRANSLATORS: This string is used for renaming a copied file,
#. when a file with the same name already exists in user's
@@ -34,7 +39,7 @@
msgstr "kopija %1"
#: ../src/app/docviewer-application.cpp:171
-#: /home/stefano/Progetti/docviewer/build-ubuntu-docviewer-app-Desktop-Default/po/com.ubuntu.docviewer.desktop.in.in.h:1
+#: /home/m/dev/core/ubuntu-docviewer-app-icon-fix/obj-x86_64-linux-gnu/po/com.ubuntu.docviewer.desktop.in.in.h:1
msgid "Document Viewer"
msgstr "Pregledovalnik dokumentov"
@@ -84,27 +89,23 @@
#: ../src/app/qml/common/PickImportedDialog.qml:29
msgid "Multiple documents imported"
-msgstr "Več dokumentov je uvoženih"
+msgstr ""
#: ../src/app/qml/common/PickImportedDialog.qml:30
msgid "Choose which one to open:"
-msgstr "Izberite, katerega boste odprli:"
+msgstr ""
#: ../src/app/qml/common/RejectedImportDialog.qml:28
msgid "File not supported"
msgid_plural "Files not supported"
-msgstr[0] "Datotek ni podprtih"
-msgstr[1] "Datoteka ni podprta"
-msgstr[2] "Datoteki nista podprti"
-msgstr[3] "Datoteke niso podprte"
+msgstr[0] ""
+msgstr[1] ""
#: ../src/app/qml/common/RejectedImportDialog.qml:29
msgid "Following document has not been imported:"
msgid_plural "Following documents have not been imported:"
-msgstr[0] "Sledečih dokumentov ni bilo uvoženih:"
-msgstr[1] "Sledeči dokument ni bil uvožen:"
-msgstr[2] "Sledeča dokumenta nisa bila uvožena:"
-msgstr[3] "Sledeči dokumenti niso bili uvoženi:"
+msgstr[0] ""
+msgstr[1] ""
#: ../src/app/qml/common/ToastWithAction.qml:97
msgid "Dismiss"
@@ -152,38 +153,33 @@
#: ../src/app/qml/common/utils.js:33
#, qt-format
msgid "%1 byte"
-msgstr "%1 bajt"
+msgstr ""
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:36
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:28
msgid "Delete file"
msgstr "Izbriši datoteko"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:37
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:29
#, qt-format
msgid "Delete %1 file"
msgid_plural "Delete %1 files"
-msgstr[0] "Izbriši %1 datotek"
-msgstr[1] "Izbriši %1 datoteko"
-msgstr[2] "Izbriši %1 datoteki"
-msgstr[3] "Izbriši %1 datoteke"
+msgstr[0] ""
+msgstr[1] ""
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:38
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:39
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:30
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:31
msgid "Are you sure you want to permanently delete this file?"
msgid_plural "Are you sure you want to permanently delete these files?"
-msgstr[0] "Ali ste prepričani, da želite trajno izbrisati datotek?"
-msgstr[1] "Ali ste prepričani, da želite trajno izbrisati to datoteko?"
-msgstr[2] "Ali ste prepričani, da želite trajno izbrisati ti datoteki?"
-msgstr[3] "Ali ste prepričani, da želite trajno izbrisati te datoteke?"
+msgstr[0] ""
+msgstr[1] ""
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:44
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:36
#: ../src/app/qml/documentPage/DocumentPagePickModeHeader.qml:27
#: ../src/app/qml/pdfView/PdfViewGotoDialog.qml:52
msgid "Cancel"
msgstr "Prekliči"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:49
-#: ../src/app/qml/documentPage/DocumentDelegateActions.qml:25
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:41
#: ../src/app/qml/documentPage/DocumentPageSelectionModeHeader.qml:82
msgid "Delete"
msgstr "Izbriši"
@@ -202,35 +198,47 @@
#. TRANSLATORS: %1 refers to a time formatted as Locale.ShortFormat (e.g. hh:mm). It depends on system settings.
#. http://qt-project.org/doc/qt-4.8/qlocale.html#FormatType-enum
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:32
-#: ../src/app/qml/documentPage/DocumentListDelegate.qml:37
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:35
#, qt-format
msgid "Today, %1"
-msgstr "Danes, %1"
+msgstr ""
#. TRANSLATORS: %1 refers to a time formatted as Locale.ShortFormat (e.g. hh:mm). It depends on system settings.
#. http://qt-project.org/doc/qt-4.8/qlocale.html#FormatType-enum
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:37
-#: ../src/app/qml/documentPage/DocumentListDelegate.qml:42
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:40
#, qt-format
msgid "Yesterday, %1"
-msgstr "Včeraj, %1"
+msgstr ""
#. TRANSLATORS: this is a datetime formatting string,
#. see http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:42
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:45
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:58
msgid "dddd, hh:mm"
msgstr "dddd, hh:mm"
#. TRANSLATORS: this is a datetime formatting string,
#. see http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:46
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:49
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:47
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:63
msgid "dd-MM-yyyy hh:mm"
msgstr "dd-MM-yyyy hh:mm"
+#. TRANSLATORS: this is a datetime formatting string, and the
+#. singlequote is an escape character.
+#. See http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
+#: ../src/app/qml/documentPage/DocumentListDelegate.qml:36
+msgid "'Today', hh:mm"
+msgstr ""
+
+#. TRANSLATORS: this is a datetime formatting string, and the
+#. singlequote is an escape character.
+#. See http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
+#: ../src/app/qml/documentPage/DocumentListDelegate.qml:42
+msgid "'Yesterday', hh:mm"
+msgstr ""
+
#: ../src/app/qml/documentPage/DocumentListView.qml:157
msgid "Today"
msgstr "Danes"
@@ -253,15 +261,15 @@
#: ../src/app/qml/documentPage/DocumentPage.qml:24
msgid "Documents"
-msgstr "Dokumenti"
+msgstr ""
#: ../src/app/qml/documentPage/DocumentPageDefaultHeader.qml:29
msgid "Search..."
-msgstr "Poišči ..."
+msgstr ""
#: ../src/app/qml/documentPage/DocumentPageDefaultHeader.qml:37
msgid "Sorting settings..."
-msgstr "Nastavitve razvrščanja ..."
+msgstr ""
#: ../src/app/qml/documentPage/DocumentPageDefaultHeader.qml:46
#: ../src/app/qml/documentPage/DocumentPagePickModeHeader.qml:35
@@ -285,7 +293,7 @@
#: ../src/app/qml/documentPage/DocumentPageSearchHeader.qml:47
msgid "search in documents..."
-msgstr "išči v dokumentih ..."
+msgstr ""
#: ../src/app/qml/documentPage/DocumentPageSelectionModeHeader.qml:52
msgid "Select None"
@@ -297,34 +305,32 @@
#: ../src/app/qml/documentPage/SearchEmptyState.qml:24
msgid "No matching document found"
-msgstr "Ni ujemajočega dokumenta"
+msgstr ""
#: ../src/app/qml/documentPage/SearchEmptyState.qml:26
msgid ""
"Please ensure that your query is not misspelled and/or try a different query."
msgstr ""
-"Prepričajte se, da vaša poizvedba ni napačno črkovana in/ali poskusite drugo "
-"poizvedbo."
#: ../src/app/qml/documentPage/SortSettingsDialog.qml:26
msgid "Sorting settings"
-msgstr "Nastavitve razvrščanja"
+msgstr ""
#: ../src/app/qml/documentPage/SortSettingsDialog.qml:31
msgid "Sort by date (Latest first)"
-msgstr "Razvrsti po datumu (najnovejši so prvi)"
+msgstr ""
#: ../src/app/qml/documentPage/SortSettingsDialog.qml:32
msgid "Sort by name (A-Z)"
-msgstr "Razvrsti po imenu (A-Z)"
+msgstr ""
#: ../src/app/qml/documentPage/SortSettingsDialog.qml:33
msgid "Sort by size (Smaller first)"
-msgstr "Razvrsti po velikosti (najmanjši so prvi)"
+msgstr ""
#: ../src/app/qml/documentPage/SortSettingsDialog.qml:47
msgid "Reverse order"
-msgstr "Preobrni red"
+msgstr ""
#. TRANSLATORS: "Contents" refers to the "Table of Contents" of a PDF document.
#: ../src/app/qml/pdfView/PdfContentsPage.qml:32
@@ -334,7 +340,7 @@
#: ../src/app/qml/pdfView/PdfContentsPage.qml:38
msgid "Hide table of contents"
-msgstr "Skrij kazalo vsebine"
+msgstr ""
#. TRANSLATORS: the first argument (%1) refers to the page currently shown on the screen,
#. while the second one (%2) refers to the total pages count.
@@ -350,12 +356,12 @@
#: ../src/app/qml/pdfView/PdfViewDefaultHeader.qml:91
#: ../src/app/qml/textView/TextViewDefaultHeader.qml:77
msgid "Disable night mode"
-msgstr "Onemogoči nočni način"
+msgstr ""
#: ../src/app/qml/pdfView/PdfViewDefaultHeader.qml:91
#: ../src/app/qml/textView/TextViewDefaultHeader.qml:77
msgid "Enable night mode"
-msgstr "Omogoči nočni način"
+msgstr ""
#: ../src/app/qml/pdfView/PdfViewGotoDialog.qml:25
msgid "Go to page"
@@ -377,15 +383,13 @@
#: ../src/app/qml/ubuntu-docviewer-app.qml:240
msgid "Document successfully imported!"
msgid_plural "Documents successfully imported!"
-msgstr[0] "Dokumentov uspešno uvoženih!"
-msgstr[1] "Dokument uspešno uvožen!"
-msgstr[2] "Dokumenta uspešno uvožena!"
-msgstr[3] "Dokumenti uspešno uvoženi!"
+msgstr[0] ""
+msgstr[1] ""
#: ../src/app/qml/ubuntu-docviewer-app.qml:243
msgid "Open"
-msgstr "Odpri"
+msgstr ""
-#: /home/stefano/Progetti/docviewer/build-ubuntu-docviewer-app-Desktop-Default/po/com.ubuntu.docviewer.desktop.in.in.h:2
+#: /home/m/dev/core/ubuntu-docviewer-app-icon-fix/obj-x86_64-linux-gnu/po/com.ubuntu.docviewer.desktop.in.in.h:2
msgid "documents;viewer;pdf;reader;"
msgstr "dokumenti;pregledovalnik;pdf;bralnik;"
=== modified file 'po/tr.po'
--- po/tr.po 2015-08-18 05:56:20 +0000
+++ po/tr.po 2015-10-08 20:57:10 +0000
@@ -7,7 +7,7 @@
msgstr ""
"Project-Id-Version: ubuntu-docviewer-app\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
-"POT-Creation-Date: 2015-07-24 11:10+0200\n"
+"POT-Creation-Date: 2015-06-24 22:48+0200\n"
"PO-Revision-Date: 2015-03-22 15:24+0000\n"
"Last-Translator: Arda Ünlü <aarda.uunlu@xxxxxxxxx>\n"
"Language-Team: Turkish <tr@xxxxxx>\n"
@@ -15,8 +15,13 @@
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
+<<<<<<< TREE
"X-Launchpad-Export-Date: 2015-08-18 05:56+0000\n"
"X-Generator: Launchpad (build 17690)\n"
+=======
+"X-Launchpad-Export-Date: 2015-06-26 04:59+0000\n"
+"X-Generator: Launchpad (build 17578)\n"
+>>>>>>> MERGE-SOURCE
#. TRANSLATORS: This string is used for renaming a copied file,
#. when a file with the same name already exists in user's
@@ -33,7 +38,7 @@
msgstr ""
#: ../src/app/docviewer-application.cpp:171
-#: /home/stefano/Progetti/docviewer/build-ubuntu-docviewer-app-Desktop-Default/po/com.ubuntu.docviewer.desktop.in.in.h:1
+#: /home/m/dev/core/ubuntu-docviewer-app-icon-fix/obj-x86_64-linux-gnu/po/com.ubuntu.docviewer.desktop.in.in.h:1
msgid "Document Viewer"
msgstr "Belge Görüntüleyici"
@@ -149,32 +154,31 @@
msgid "%1 byte"
msgstr "%1 bayt"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:36
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:28
msgid "Delete file"
msgstr "Dosyayı sil"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:37
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:29
#, qt-format
msgid "Delete %1 file"
msgid_plural "Delete %1 files"
msgstr[0] "%1 dosyayı sil"
msgstr[1] "%1 dosyayı sil"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:38
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:39
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:30
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:31
msgid "Are you sure you want to permanently delete this file?"
msgid_plural "Are you sure you want to permanently delete these files?"
msgstr[0] "Bu dosyayı kalıcı olarak silmek istediğinizden emin misiniz?"
msgstr[1] "Bu dosyaları kalıcı olarak silmek istediğinizden emin misiniz?"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:44
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:36
#: ../src/app/qml/documentPage/DocumentPagePickModeHeader.qml:27
#: ../src/app/qml/pdfView/PdfViewGotoDialog.qml:52
msgid "Cancel"
msgstr "İptal"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:49
-#: ../src/app/qml/documentPage/DocumentDelegateActions.qml:25
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:41
#: ../src/app/qml/documentPage/DocumentPageSelectionModeHeader.qml:82
msgid "Delete"
msgstr "Sil"
@@ -193,35 +197,47 @@
#. TRANSLATORS: %1 refers to a time formatted as Locale.ShortFormat (e.g. hh:mm). It depends on system settings.
#. http://qt-project.org/doc/qt-4.8/qlocale.html#FormatType-enum
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:32
-#: ../src/app/qml/documentPage/DocumentListDelegate.qml:37
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:35
#, qt-format
msgid "Today, %1"
msgstr "Bugün, %1"
#. TRANSLATORS: %1 refers to a time formatted as Locale.ShortFormat (e.g. hh:mm). It depends on system settings.
#. http://qt-project.org/doc/qt-4.8/qlocale.html#FormatType-enum
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:37
-#: ../src/app/qml/documentPage/DocumentListDelegate.qml:42
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:40
#, qt-format
msgid "Yesterday, %1"
msgstr "Dün, %1"
#. TRANSLATORS: this is a datetime formatting string,
#. see http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:42
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:45
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:58
msgid "dddd, hh:mm"
msgstr "hh:mm dddd"
#. TRANSLATORS: this is a datetime formatting string,
#. see http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:46
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:49
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:47
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:63
msgid "dd-MM-yyyy hh:mm"
msgstr "dd/MM/yyyy hh.mm"
+#. TRANSLATORS: this is a datetime formatting string, and the
+#. singlequote is an escape character.
+#. See http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
+#: ../src/app/qml/documentPage/DocumentListDelegate.qml:36
+msgid "'Today', hh:mm"
+msgstr ""
+
+#. TRANSLATORS: this is a datetime formatting string, and the
+#. singlequote is an escape character.
+#. See http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
+#: ../src/app/qml/documentPage/DocumentListDelegate.qml:42
+msgid "'Yesterday', hh:mm"
+msgstr ""
+
#: ../src/app/qml/documentPage/DocumentListView.qml:157
msgid "Today"
msgstr "Bugün"
@@ -373,6 +389,6 @@
msgid "Open"
msgstr ""
-#: /home/stefano/Progetti/docviewer/build-ubuntu-docviewer-app-Desktop-Default/po/com.ubuntu.docviewer.desktop.in.in.h:2
+#: /home/m/dev/core/ubuntu-docviewer-app-icon-fix/obj-x86_64-linux-gnu/po/com.ubuntu.docviewer.desktop.in.in.h:2
msgid "documents;viewer;pdf;reader;"
msgstr "belgeler;görüntüleyici;pdf;okuyucu;gösterici;"
=== modified file 'po/uk.po'
--- po/uk.po 2015-08-18 05:56:20 +0000
+++ po/uk.po 2015-10-08 20:57:10 +0000
@@ -7,7 +7,7 @@
msgstr ""
"Project-Id-Version: ubuntu-docviewer-app\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
-"POT-Creation-Date: 2015-07-24 11:10+0200\n"
+"POT-Creation-Date: 2015-06-24 22:48+0200\n"
"PO-Revision-Date: 2015-06-26 14:13+0000\n"
"Last-Translator: Yuri Chornoivan <yurchor@xxxxxxxxx>\n"
"Language-Team: Ukrainian <uk@xxxxxx>\n"
@@ -16,8 +16,13 @@
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
+<<<<<<< TREE
"X-Launchpad-Export-Date: 2015-08-18 05:56+0000\n"
"X-Generator: Launchpad (build 17690)\n"
+=======
+"X-Launchpad-Export-Date: 2015-06-27 05:35+0000\n"
+"X-Generator: Launchpad (build 17578)\n"
+>>>>>>> MERGE-SOURCE
#. TRANSLATORS: This string is used for renaming a copied file,
#. when a file with the same name already exists in user's
@@ -34,7 +39,7 @@
msgstr "копія %1"
#: ../src/app/docviewer-application.cpp:171
-#: /home/stefano/Progetti/docviewer/build-ubuntu-docviewer-app-Desktop-Default/po/com.ubuntu.docviewer.desktop.in.in.h:1
+#: /home/m/dev/core/ubuntu-docviewer-app-icon-fix/obj-x86_64-linux-gnu/po/com.ubuntu.docviewer.desktop.in.in.h:1
msgid "Document Viewer"
msgstr "Перегляд документів"
@@ -152,11 +157,11 @@
msgid "%1 byte"
msgstr "%1 байт"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:36
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:28
msgid "Delete file"
msgstr "Вилучити файл"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:37
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:29
#, qt-format
msgid "Delete %1 file"
msgid_plural "Delete %1 files"
@@ -164,22 +169,21 @@
msgstr[1] "Вилучити %1 файли"
msgstr[2] "Вилучити %1 файлів"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:38
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:39
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:30
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:31
msgid "Are you sure you want to permanently delete this file?"
msgid_plural "Are you sure you want to permanently delete these files?"
msgstr[0] "Ви впевнені, що хочете остаточно видалити цей файл?"
msgstr[1] "Ви впевнені, що хочете остаточно видалити ці файли?"
msgstr[2] "Ви впевнені, що хочете остаточно видалити ці файли?"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:44
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:36
#: ../src/app/qml/documentPage/DocumentPagePickModeHeader.qml:27
#: ../src/app/qml/pdfView/PdfViewGotoDialog.qml:52
msgid "Cancel"
msgstr "Скасувати"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:49
-#: ../src/app/qml/documentPage/DocumentDelegateActions.qml:25
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:41
#: ../src/app/qml/documentPage/DocumentPageSelectionModeHeader.qml:82
msgid "Delete"
msgstr "Вилучити"
@@ -198,35 +202,47 @@
#. TRANSLATORS: %1 refers to a time formatted as Locale.ShortFormat (e.g. hh:mm). It depends on system settings.
#. http://qt-project.org/doc/qt-4.8/qlocale.html#FormatType-enum
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:32
-#: ../src/app/qml/documentPage/DocumentListDelegate.qml:37
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:35
#, qt-format
msgid "Today, %1"
msgstr "Сьогодні, %1"
#. TRANSLATORS: %1 refers to a time formatted as Locale.ShortFormat (e.g. hh:mm). It depends on system settings.
#. http://qt-project.org/doc/qt-4.8/qlocale.html#FormatType-enum
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:37
-#: ../src/app/qml/documentPage/DocumentListDelegate.qml:42
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:40
#, qt-format
msgid "Yesterday, %1"
msgstr "Вчора, %1"
#. TRANSLATORS: this is a datetime formatting string,
#. see http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:42
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:45
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:58
msgid "dddd, hh:mm"
msgstr "dddd, hh:mm"
#. TRANSLATORS: this is a datetime formatting string,
#. see http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:46
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:49
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:47
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:63
msgid "dd-MM-yyyy hh:mm"
msgstr "dd-MM-yyyy hh:mm"
+#. TRANSLATORS: this is a datetime formatting string, and the
+#. singlequote is an escape character.
+#. See http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
+#: ../src/app/qml/documentPage/DocumentListDelegate.qml:36
+msgid "'Today', hh:mm"
+msgstr "'Today', hh:mm"
+
+#. TRANSLATORS: this is a datetime formatting string, and the
+#. singlequote is an escape character.
+#. See http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
+#: ../src/app/qml/documentPage/DocumentListDelegate.qml:42
+msgid "'Yesterday', hh:mm"
+msgstr "'Yesterday', hh:mm"
+
#: ../src/app/qml/documentPage/DocumentListView.qml:157
msgid "Today"
msgstr "Сьогодні"
@@ -381,6 +397,6 @@
msgid "Open"
msgstr "Відкрити"
-#: /home/stefano/Progetti/docviewer/build-ubuntu-docviewer-app-Desktop-Default/po/com.ubuntu.docviewer.desktop.in.in.h:2
+#: /home/m/dev/core/ubuntu-docviewer-app-icon-fix/obj-x86_64-linux-gnu/po/com.ubuntu.docviewer.desktop.in.in.h:2
msgid "documents;viewer;pdf;reader;"
msgstr "documents;viewer;pdf;reader;документи;перегляд;пдф;читання;"
=== added file 'po/uz.po'
--- po/uz.po 1970-01-01 00:00:00 +0000
+++ po/uz.po 2015-10-08 20:57:10 +0000
@@ -0,0 +1,395 @@
+# Uzbek translation for ubuntu-docviewer-app
+# Copyright (c) 2015 Rosetta Contributors and Canonical Ltd 2015
+# This file is distributed under the same license as the ubuntu-docviewer-app package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2015.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: ubuntu-docviewer-app\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2015-06-24 22:48+0200\n"
+"PO-Revision-Date: 2015-06-26 14:48+0000\n"
+"Last-Translator: Learner <muzaffar.habibullayev@xxxxxxxxx>\n"
+"Language-Team: Uzbek <uz@xxxxxx>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Launchpad-Export-Date: 2015-06-27 05:35+0000\n"
+"X-Generator: Launchpad (build 17578)\n"
+
+#. TRANSLATORS: This string is used for renaming a copied file,
+#. when a file with the same name already exists in user's
+#. Documents folder.
+#.
+#. e.g. "Manual_Aquaris_E4.5_ubuntu_EN.pdf" will become
+#. "Manual_Aquaris_E4.5_ubuntu_EN (copy 2).pdf"
+#.
+#. where "2" is given by the argument "%1"
+#.
+#: ../src/app/content-communicator.cpp:105
+#, qt-format
+msgid "copy %1"
+msgstr "nusxasi %1"
+
+#: ../src/app/docviewer-application.cpp:171
+#: /home/m/dev/core/ubuntu-docviewer-app-icon-fix/obj-x86_64-linux-gnu/po/com.ubuntu.docviewer.desktop.in.in.h:1
+msgid "Document Viewer"
+msgstr "Hujjat ko'ruvchi"
+
+#: ../src/app/qml/common/DetailsPage.qml:27
+#: ../src/app/qml/pdfView/PdfViewDefaultHeader.qml:97
+#: ../src/app/qml/textView/TextViewDefaultHeader.qml:83
+msgid "Details"
+msgstr "Tafsilotlar"
+
+#: ../src/app/qml/common/DetailsPage.qml:33
+msgid "Location"
+msgstr "Manzili"
+
+#: ../src/app/qml/common/DetailsPage.qml:37
+msgid "Size"
+msgstr "Hajmi"
+
+#: ../src/app/qml/common/DetailsPage.qml:42
+msgid "Created"
+msgstr "Yaratilgan"
+
+#: ../src/app/qml/common/DetailsPage.qml:47
+msgid "Last modified"
+msgstr "So'ngi o'zgartirilgan"
+
+#: ../src/app/qml/common/DetailsPage.qml:54
+msgid "MIME type"
+msgstr "MIME turi"
+
+#: ../src/app/qml/common/FileNotFoundDialog.qml:24
+msgid "Error"
+msgstr "Xato"
+
+#: ../src/app/qml/common/FileNotFoundDialog.qml:25
+msgid "File does not exist"
+msgstr "Fayl mavjud emas"
+
+#: ../src/app/qml/common/FileNotFoundDialog.qml:28
+#: ../src/app/qml/common/PickImportedDialog.qml:47
+#: ../src/app/qml/common/RejectedImportDialog.qml:38
+#: ../src/app/qml/documentPage/DocumentPageSelectionModeHeader.qml:32
+#: ../src/app/qml/documentPage/SortSettingsDialog.qml:53
+#: ../src/app/qml/pdfView/PdfViewDefaultHeader.qml:61
+#: ../src/app/qml/textView/TextViewDefaultHeader.qml:61
+msgid "Close"
+msgstr "Yopish"
+
+#: ../src/app/qml/common/PickImportedDialog.qml:29
+msgid "Multiple documents imported"
+msgstr "Ko'p hujjatlar import qilindi"
+
+#: ../src/app/qml/common/PickImportedDialog.qml:30
+msgid "Choose which one to open:"
+msgstr "Qaysi birini ochilsin:"
+
+#: ../src/app/qml/common/RejectedImportDialog.qml:28
+msgid "File not supported"
+msgid_plural "Files not supported"
+msgstr[0] ""
+"Fayl qo'llab quvvatlanmaydi\r\n"
+"Fayllar qo'llab quvvatlanmaydi"
+
+#: ../src/app/qml/common/RejectedImportDialog.qml:29
+msgid "Following document has not been imported:"
+msgid_plural "Following documents have not been imported:"
+msgstr[0] ""
+"Ushbu hujjat import qilindi: \r\n"
+"Ushbu hujjatlar import qilindi:"
+
+#: ../src/app/qml/common/ToastWithAction.qml:97
+msgid "Dismiss"
+msgstr "Bekor qilish"
+
+#: ../src/app/qml/common/UnknownTypeDialog.qml:26
+msgid "Unknown file type"
+msgstr "Noma'lum fayl turi"
+
+#: ../src/app/qml/common/UnknownTypeDialog.qml:27
+msgid ""
+"Sorry but we can't find a way to display this file. Do you want to open it "
+"as a plain text?"
+msgstr ""
+"Uzr lekin ushbu faylni qanday ochishni bilmayapmiz. Oddiy matn holida "
+"ochilsinmi?"
+
+#: ../src/app/qml/common/UnknownTypeDialog.qml:29
+msgid "Yes"
+msgstr "Ha"
+
+#: ../src/app/qml/common/UnknownTypeDialog.qml:38
+msgid "No"
+msgstr "Yo‘q"
+
+#. TRANSLATORS: %1 is the size of a file, expressed in GB
+#: ../src/app/qml/common/utils.js:22
+#, qt-format
+msgid "%1 GB"
+msgstr "%1 GB"
+
+#. TRANSLATORS: %1 is the size of a file, expressed in MB
+#: ../src/app/qml/common/utils.js:26
+#, qt-format
+msgid "%1 MB"
+msgstr "%1 MB"
+
+#. TRANSLATORS: %1 is the size of a file, expressed in kB
+#: ../src/app/qml/common/utils.js:30
+#, qt-format
+msgid "%1 kB"
+msgstr "%1 kB"
+
+#. TRANSLATORS: %1 is the size of a file, expressed in byte
+#: ../src/app/qml/common/utils.js:33
+#, qt-format
+msgid "%1 byte"
+msgstr "%1 bayt"
+
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:28
+msgid "Delete file"
+msgstr "Fayli o'chirish"
+
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:29
+#, qt-format
+msgid "Delete %1 file"
+msgid_plural "Delete %1 files"
+msgstr[0] ""
+"%1 faylni o'chirish\r\n"
+"%1 fayllarni o'chirish"
+
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:30
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:31
+msgid "Are you sure you want to permanently delete this file?"
+msgid_plural "Are you sure you want to permanently delete these files?"
+msgstr[0] ""
+"Ushbu faylni butunlay o'chirmoqchimisiz?\r\n"
+"Ushbu fayllarni butunlay o'chirmoqchimisiz?"
+
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:36
+#: ../src/app/qml/documentPage/DocumentPagePickModeHeader.qml:27
+#: ../src/app/qml/pdfView/PdfViewGotoDialog.qml:52
+msgid "Cancel"
+msgstr "Bekor qilish"
+
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:41
+#: ../src/app/qml/documentPage/DocumentPageSelectionModeHeader.qml:82
+msgid "Delete"
+msgstr "O‘chirish"
+
+#: ../src/app/qml/documentPage/DocumentEmptyState.qml:24
+msgid "No document found"
+msgstr "Hujjat topilmadi"
+
+#: ../src/app/qml/documentPage/DocumentEmptyState.qml:28
+msgid ""
+"Connect your device to any computer and simply drag files to the Documents "
+"folder."
+msgstr ""
+"Uskunani kompyuterga ulang va shunchaki fayllarni Hujjatlar jildiga tashlang."
+
+#. TRANSLATORS: %1 refers to a time formatted as Locale.ShortFormat (e.g. hh:mm). It depends on system settings.
+#. http://qt-project.org/doc/qt-4.8/qlocale.html#FormatType-enum
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:35
+#, qt-format
+msgid "Today, %1"
+msgstr "Bugun, %1"
+
+#. TRANSLATORS: %1 refers to a time formatted as Locale.ShortFormat (e.g. hh:mm). It depends on system settings.
+#. http://qt-project.org/doc/qt-4.8/qlocale.html#FormatType-enum
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:40
+#, qt-format
+msgid "Yesterday, %1"
+msgstr "Kecha, %1"
+
+#. TRANSLATORS: this is a datetime formatting string,
+#. see http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:45
+#: ../src/app/qml/documentPage/DocumentListDelegate.qml:58
+msgid "dddd, hh:mm"
+msgstr "dddd, hh:mm"
+
+#. TRANSLATORS: this is a datetime formatting string,
+#. see http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:49
+#: ../src/app/qml/documentPage/DocumentListDelegate.qml:47
+#: ../src/app/qml/documentPage/DocumentListDelegate.qml:63
+msgid "dd-MM-yyyy hh:mm"
+msgstr "dd-MM-yyyy hh:mm"
+
+#. TRANSLATORS: this is a datetime formatting string, and the
+#. singlequote is an escape character.
+#. See http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
+#: ../src/app/qml/documentPage/DocumentListDelegate.qml:36
+msgid "'Today', hh:mm"
+msgstr "'Bugun', hh:mm"
+
+#. TRANSLATORS: this is a datetime formatting string, and the
+#. singlequote is an escape character.
+#. See http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
+#: ../src/app/qml/documentPage/DocumentListDelegate.qml:42
+msgid "'Yesterday', hh:mm"
+msgstr "'Kecha', hh:mm"
+
+#: ../src/app/qml/documentPage/DocumentListView.qml:157
+msgid "Today"
+msgstr "Bugun"
+
+#: ../src/app/qml/documentPage/DocumentListView.qml:160
+msgid "Yesterday"
+msgstr "Kecha"
+
+#: ../src/app/qml/documentPage/DocumentListView.qml:163
+msgid "Earlier this week"
+msgstr "Shu hafta oldinroq"
+
+#: ../src/app/qml/documentPage/DocumentListView.qml:166
+msgid "Earlier this month"
+msgstr "Shu oy oldinroq"
+
+#: ../src/app/qml/documentPage/DocumentListView.qml:168
+msgid "Even earlier..."
+msgstr "Yanada oldin ..."
+
+#: ../src/app/qml/documentPage/DocumentPage.qml:24
+msgid "Documents"
+msgstr "Hujjatlar"
+
+#: ../src/app/qml/documentPage/DocumentPageDefaultHeader.qml:29
+msgid "Search..."
+msgstr "Izlash..."
+
+#: ../src/app/qml/documentPage/DocumentPageDefaultHeader.qml:37
+msgid "Sorting settings..."
+msgstr ""
+
+#: ../src/app/qml/documentPage/DocumentPageDefaultHeader.qml:46
+#: ../src/app/qml/documentPage/DocumentPagePickModeHeader.qml:35
+msgid "Switch to single column list"
+msgstr "Bir ustunli ro'yxatga o'tkazish"
+
+#: ../src/app/qml/documentPage/DocumentPageDefaultHeader.qml:46
+#: ../src/app/qml/documentPage/DocumentPagePickModeHeader.qml:35
+msgid "Switch to grid"
+msgstr ""
+
+#: ../src/app/qml/documentPage/DocumentPagePickModeHeader.qml:43
+msgid "Pick"
+msgstr ""
+
+#: ../src/app/qml/documentPage/DocumentPageSearchHeader.qml:27
+#: ../src/app/qml/pdfView/PdfViewDefaultHeader.qml:61
+#: ../src/app/qml/textView/TextViewDefaultHeader.qml:61
+msgid "Back"
+msgstr "Orqaga"
+
+#: ../src/app/qml/documentPage/DocumentPageSearchHeader.qml:47
+msgid "search in documents..."
+msgstr "hujjatlardan qidirish..."
+
+#: ../src/app/qml/documentPage/DocumentPageSelectionModeHeader.qml:52
+msgid "Select None"
+msgstr "Hech qaysini tanlamaslik"
+
+#: ../src/app/qml/documentPage/DocumentPageSelectionModeHeader.qml:54
+msgid "Select All"
+msgstr "Barchasini tanlash"
+
+#: ../src/app/qml/documentPage/SearchEmptyState.qml:24
+msgid "No matching document found"
+msgstr "Mos hujjat topilmadi"
+
+#: ../src/app/qml/documentPage/SearchEmptyState.qml:26
+msgid ""
+"Please ensure that your query is not misspelled and/or try a different query."
+msgstr ""
+"Izlashingiz to'g'ri yozilganiga ichonch hosil qiling yoki boshqa qidiruv "
+"boshlang."
+
+#: ../src/app/qml/documentPage/SortSettingsDialog.qml:26
+msgid "Sorting settings"
+msgstr ""
+
+#: ../src/app/qml/documentPage/SortSettingsDialog.qml:31
+msgid "Sort by date (Latest first)"
+msgstr ""
+
+#: ../src/app/qml/documentPage/SortSettingsDialog.qml:32
+msgid "Sort by name (A-Z)"
+msgstr ""
+
+#: ../src/app/qml/documentPage/SortSettingsDialog.qml:33
+msgid "Sort by size (Smaller first)"
+msgstr ""
+
+#: ../src/app/qml/documentPage/SortSettingsDialog.qml:47
+msgid "Reverse order"
+msgstr ""
+
+#. TRANSLATORS: "Contents" refers to the "Table of Contents" of a PDF document.
+#: ../src/app/qml/pdfView/PdfContentsPage.qml:32
+#: ../src/app/qml/pdfView/PdfView.qml:37
+msgid "Contents"
+msgstr "Tarkibi"
+
+#: ../src/app/qml/pdfView/PdfContentsPage.qml:38
+msgid "Hide table of contents"
+msgstr "Mundarijani yashirish"
+
+#. TRANSLATORS: the first argument (%1) refers to the page currently shown on the screen,
+#. while the second one (%2) refers to the total pages count.
+#: ../src/app/qml/pdfView/PdfView.qml:34
+#, qt-format
+msgid "Page %1 of %2"
+msgstr "%2 dan %1 sahifa"
+
+#: ../src/app/qml/pdfView/PdfViewDefaultHeader.qml:85
+msgid "Go to page..."
+msgstr "Sahifaga o'tish ..."
+
+#: ../src/app/qml/pdfView/PdfViewDefaultHeader.qml:91
+#: ../src/app/qml/textView/TextViewDefaultHeader.qml:77
+msgid "Disable night mode"
+msgstr "Tungi rejimni o'chirish"
+
+#: ../src/app/qml/pdfView/PdfViewDefaultHeader.qml:91
+#: ../src/app/qml/textView/TextViewDefaultHeader.qml:77
+msgid "Enable night mode"
+msgstr "Tungi rejimni yoqish"
+
+#: ../src/app/qml/pdfView/PdfViewGotoDialog.qml:25
+msgid "Go to page"
+msgstr "Sahifaga o'tish"
+
+#: ../src/app/qml/pdfView/PdfViewGotoDialog.qml:26
+#, qt-format
+msgid "Choose a page between 1 and %1"
+msgstr ""
+
+#: ../src/app/qml/pdfView/PdfViewGotoDialog.qml:44
+msgid "GO!"
+msgstr "Ketdik!"
+
+#: ../src/app/qml/textView/TextView.qml:42
+msgid "Loading..."
+msgstr "Yuklanmoqda..."
+
+#: ../src/app/qml/ubuntu-docviewer-app.qml:240
+msgid "Document successfully imported!"
+msgid_plural "Documents successfully imported!"
+msgstr[0] ""
+"Hujjat muvaffaqiyatli import qilindi!\r\n"
+"Hujjatlar muvaffaqiyatli import qilindi!"
+
+#: ../src/app/qml/ubuntu-docviewer-app.qml:243
+msgid "Open"
+msgstr "Ochish"
+
+#: /home/m/dev/core/ubuntu-docviewer-app-icon-fix/obj-x86_64-linux-gnu/po/com.ubuntu.docviewer.desktop.in.in.h:2
+msgid "documents;viewer;pdf;reader;"
+msgstr "hujjatlar;ko'ruvchi;pdf;o'quvchi;"
=== renamed file 'po/uz.po' => 'po/uz.po.moved'
=== modified file 'po/zh_CN.po'
--- po/zh_CN.po 2015-08-18 05:56:20 +0000
+++ po/zh_CN.po 2015-10-08 20:57:10 +0000
@@ -7,7 +7,7 @@
msgstr ""
"Project-Id-Version: ubuntu-docviewer-app\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
-"POT-Creation-Date: 2015-07-24 11:10+0200\n"
+"POT-Creation-Date: 2015-06-24 22:48+0200\n"
"PO-Revision-Date: 2015-03-04 01:02+0000\n"
"Last-Translator: Luo Lei <luolei@xxxxxxxxxxxxxxx>\n"
"Language-Team: Chinese (Simplified) <zh_CN@xxxxxx>\n"
@@ -15,8 +15,13 @@
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
+<<<<<<< TREE
"X-Launchpad-Export-Date: 2015-08-18 05:56+0000\n"
"X-Generator: Launchpad (build 17690)\n"
+=======
+"X-Launchpad-Export-Date: 2015-06-26 04:59+0000\n"
+"X-Generator: Launchpad (build 17578)\n"
+>>>>>>> MERGE-SOURCE
#. TRANSLATORS: This string is used for renaming a copied file,
#. when a file with the same name already exists in user's
@@ -33,7 +38,7 @@
msgstr ""
#: ../src/app/docviewer-application.cpp:171
-#: /home/stefano/Progetti/docviewer/build-ubuntu-docviewer-app-Desktop-Default/po/com.ubuntu.docviewer.desktop.in.in.h:1
+#: /home/m/dev/core/ubuntu-docviewer-app-icon-fix/obj-x86_64-linux-gnu/po/com.ubuntu.docviewer.desktop.in.in.h:1
msgid "Document Viewer"
msgstr ""
@@ -147,32 +152,31 @@
msgid "%1 byte"
msgstr ""
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:36
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:28
msgid "Delete file"
msgstr ""
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:37
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:29
#, qt-format
msgid "Delete %1 file"
msgid_plural "Delete %1 files"
msgstr[0] ""
msgstr[1] ""
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:38
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:39
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:30
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:31
msgid "Are you sure you want to permanently delete this file?"
msgid_plural "Are you sure you want to permanently delete these files?"
msgstr[0] ""
msgstr[1] ""
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:44
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:36
#: ../src/app/qml/documentPage/DocumentPagePickModeHeader.qml:27
#: ../src/app/qml/pdfView/PdfViewGotoDialog.qml:52
msgid "Cancel"
msgstr ""
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:49
-#: ../src/app/qml/documentPage/DocumentDelegateActions.qml:25
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:41
#: ../src/app/qml/documentPage/DocumentPageSelectionModeHeader.qml:82
msgid "Delete"
msgstr ""
@@ -189,35 +193,47 @@
#. TRANSLATORS: %1 refers to a time formatted as Locale.ShortFormat (e.g. hh:mm). It depends on system settings.
#. http://qt-project.org/doc/qt-4.8/qlocale.html#FormatType-enum
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:32
-#: ../src/app/qml/documentPage/DocumentListDelegate.qml:37
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:35
#, qt-format
msgid "Today, %1"
msgstr ""
#. TRANSLATORS: %1 refers to a time formatted as Locale.ShortFormat (e.g. hh:mm). It depends on system settings.
#. http://qt-project.org/doc/qt-4.8/qlocale.html#FormatType-enum
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:37
-#: ../src/app/qml/documentPage/DocumentListDelegate.qml:42
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:40
#, qt-format
msgid "Yesterday, %1"
msgstr ""
#. TRANSLATORS: this is a datetime formatting string,
#. see http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:42
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:45
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:58
msgid "dddd, hh:mm"
msgstr ""
#. TRANSLATORS: this is a datetime formatting string,
#. see http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:46
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:49
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:47
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:63
msgid "dd-MM-yyyy hh:mm"
msgstr ""
+#. TRANSLATORS: this is a datetime formatting string, and the
+#. singlequote is an escape character.
+#. See http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
+#: ../src/app/qml/documentPage/DocumentListDelegate.qml:36
+msgid "'Today', hh:mm"
+msgstr ""
+
+#. TRANSLATORS: this is a datetime formatting string, and the
+#. singlequote is an escape character.
+#. See http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
+#: ../src/app/qml/documentPage/DocumentListDelegate.qml:42
+msgid "'Yesterday', hh:mm"
+msgstr ""
+
#: ../src/app/qml/documentPage/DocumentListView.qml:157
msgid "Today"
msgstr ""
@@ -369,6 +385,6 @@
msgid "Open"
msgstr ""
-#: /home/stefano/Progetti/docviewer/build-ubuntu-docviewer-app-Desktop-Default/po/com.ubuntu.docviewer.desktop.in.in.h:2
+#: /home/m/dev/core/ubuntu-docviewer-app-icon-fix/obj-x86_64-linux-gnu/po/com.ubuntu.docviewer.desktop.in.in.h:2
msgid "documents;viewer;pdf;reader;"
msgstr ""
=== modified file 'po/zh_TW.po'
--- po/zh_TW.po 2015-08-18 05:56:20 +0000
+++ po/zh_TW.po 2015-10-08 20:57:10 +0000
@@ -7,7 +7,7 @@
msgstr ""
"Project-Id-Version: ubuntu-docviewer-app\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
-"POT-Creation-Date: 2015-07-24 11:10+0200\n"
+"POT-Creation-Date: 2015-06-24 22:48+0200\n"
"PO-Revision-Date: 2015-03-01 07:42+0000\n"
"Last-Translator: Cheng-Chia Tseng <pswo10680@xxxxxxxxx>\n"
"Language-Team: Chinese (Traditional) <zh_TW@xxxxxx>\n"
@@ -15,8 +15,13 @@
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
+<<<<<<< TREE
"X-Launchpad-Export-Date: 2015-08-18 05:56+0000\n"
"X-Generator: Launchpad (build 17690)\n"
+=======
+"X-Launchpad-Export-Date: 2015-06-26 04:59+0000\n"
+"X-Generator: Launchpad (build 17578)\n"
+>>>>>>> MERGE-SOURCE
#. TRANSLATORS: This string is used for renaming a copied file,
#. when a file with the same name already exists in user's
@@ -33,7 +38,7 @@
msgstr ""
#: ../src/app/docviewer-application.cpp:171
-#: /home/stefano/Progetti/docviewer/build-ubuntu-docviewer-app-Desktop-Default/po/com.ubuntu.docviewer.desktop.in.in.h:1
+#: /home/m/dev/core/ubuntu-docviewer-app-icon-fix/obj-x86_64-linux-gnu/po/com.ubuntu.docviewer.desktop.in.in.h:1
msgid "Document Viewer"
msgstr "文件檢視器"
@@ -147,32 +152,31 @@
msgid "%1 byte"
msgstr ""
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:36
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:28
msgid "Delete file"
msgstr ""
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:37
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:29
#, qt-format
msgid "Delete %1 file"
msgid_plural "Delete %1 files"
msgstr[0] ""
msgstr[1] ""
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:38
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:39
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:30
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:31
msgid "Are you sure you want to permanently delete this file?"
msgid_plural "Are you sure you want to permanently delete these files?"
msgstr[0] ""
msgstr[1] ""
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:44
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:36
#: ../src/app/qml/documentPage/DocumentPagePickModeHeader.qml:27
#: ../src/app/qml/pdfView/PdfViewGotoDialog.qml:52
msgid "Cancel"
msgstr "取消"
-#: ../src/app/qml/documentPage/DeleteFileDialog.qml:49
-#: ../src/app/qml/documentPage/DocumentDelegateActions.qml:25
+#: ../src/app/qml/documentPage/DeleteFileDialog.qml:41
#: ../src/app/qml/documentPage/DocumentPageSelectionModeHeader.qml:82
msgid "Delete"
msgstr ""
@@ -189,35 +193,47 @@
#. TRANSLATORS: %1 refers to a time formatted as Locale.ShortFormat (e.g. hh:mm). It depends on system settings.
#. http://qt-project.org/doc/qt-4.8/qlocale.html#FormatType-enum
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:32
-#: ../src/app/qml/documentPage/DocumentListDelegate.qml:37
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:35
#, qt-format
msgid "Today, %1"
msgstr ""
#. TRANSLATORS: %1 refers to a time formatted as Locale.ShortFormat (e.g. hh:mm). It depends on system settings.
#. http://qt-project.org/doc/qt-4.8/qlocale.html#FormatType-enum
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:37
-#: ../src/app/qml/documentPage/DocumentListDelegate.qml:42
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:40
#, qt-format
msgid "Yesterday, %1"
msgstr ""
#. TRANSLATORS: this is a datetime formatting string,
#. see http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:42
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:45
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:58
msgid "dddd, hh:mm"
msgstr ""
#. TRANSLATORS: this is a datetime formatting string,
#. see http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
-#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:46
+#: ../src/app/qml/documentPage/DocumentGridDelegate.qml:49
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:47
#: ../src/app/qml/documentPage/DocumentListDelegate.qml:63
msgid "dd-MM-yyyy hh:mm"
msgstr ""
+#. TRANSLATORS: this is a datetime formatting string, and the
+#. singlequote is an escape character.
+#. See http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
+#: ../src/app/qml/documentPage/DocumentListDelegate.qml:36
+msgid "'Today', hh:mm"
+msgstr ""
+
+#. TRANSLATORS: this is a datetime formatting string, and the
+#. singlequote is an escape character.
+#. See http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions.
+#: ../src/app/qml/documentPage/DocumentListDelegate.qml:42
+msgid "'Yesterday', hh:mm"
+msgstr ""
+
#: ../src/app/qml/documentPage/DocumentListView.qml:157
msgid "Today"
msgstr ""
@@ -369,6 +385,6 @@
msgid "Open"
msgstr ""
-#: /home/stefano/Progetti/docviewer/build-ubuntu-docviewer-app-Desktop-Default/po/com.ubuntu.docviewer.desktop.in.in.h:2
+#: /home/m/dev/core/ubuntu-docviewer-app-icon-fix/obj-x86_64-linux-gnu/po/com.ubuntu.docviewer.desktop.in.in.h:2
msgid "documents;viewer;pdf;reader;"
msgstr "documents;viewer;pdf;reader;文件;檢視器;閱讀器;"
=== modified file 'src/app/CMakeLists.txt'
--- src/app/CMakeLists.txt 2015-04-29 16:06:32 +0000
+++ src/app/CMakeLists.txt 2015-10-08 20:57:10 +0000
@@ -1,8 +1,6 @@
file(GLOB_RECURSE QML_SRCS *.qml *.js)
file(GLOB_RECURSE IMAGE_FILES *.qml *.js)
-pkg_check_modules(CONTENTHUB REQUIRED libcontent-hub)
-
add_definitions(
-DGETTEXT_PACKAGE=\"${PROJECT_NAME}\"
-DGETTEXT_LOCALEDIR=\"${CMAKE_INSTALL_LOCALEDIR}\"
@@ -10,7 +8,6 @@
set(docviewer_SRCS
main.cpp
- content-communicator.cpp
command-line-parser.cpp
docviewer-application.cpp
urlhandler.cpp
@@ -19,11 +16,7 @@
add_executable(ubuntu-docviewer-app ${docviewer_SRCS})
-qt5_use_modules(ubuntu-docviewer-app Widgets Gui Qml Quick DBus)
-
-target_link_libraries( ubuntu-docviewer-app
- ${CONTENTHUB_LIBRARIES}
-)
+qt5_use_modules(ubuntu-docviewer-app Widgets Gui Qml Quick DBus Concurrent)
if(NOT "${CMAKE_CURRENT_SOURCE_DIR}" STREQUAL "${CMAKE_CURRENT_BINARY_DIR}")
add_custom_target(docviewer-qmlfiles ALL
=== modified file 'src/app/command-line-parser.cpp'
--- src/app/command-line-parser.cpp 2015-04-29 15:23:32 +0000
+++ src/app/command-line-parser.cpp 2015-10-08 20:57:10 +0000
@@ -30,8 +30,8 @@
CommandLineParser::CommandLineParser()
: m_pickMode(false),
+ m_isFullscreen(false),
m_testability(false),
- m_isFullscreen(false),
m_documentFile(""),
m_documentsDir("")
{
=== removed file 'src/app/content-communicator.cpp'
--- src/app/content-communicator.cpp 2015-04-27 15:58:12 +0000
+++ src/app/content-communicator.cpp 1970-01-01 00:00:00 +0000
@@ -1,251 +0,0 @@
-/*
- * Copyright (C) 2013 Canonical, Ltd.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; version 3.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-
-#include "content-communicator.h"
-
-#include <QApplication>
-#include <QStandardPaths>
-#include <QMimeDatabase>
-#include <QDebug>
-#include <QFileInfo>
-
-#include <com/ubuntu/content/hub.h>
-#include <com/ubuntu/content/item.h>
-#include <com/ubuntu/content/transfer.h>
-
-
-using namespace com::ubuntu::content;
-
-/*!
- * \brief ContentCommunicator::ContentCommunicator
- * \param parent
- */
-ContentCommunicator::ContentCommunicator(QObject *parent)
- : ImportExportHandler(parent),
- m_transfer(nullptr)
-{
-}
-
-/*!
- * \brief ContentCommunicator::registerWithHub Register the handlers provided
- * by ContentCommunicator with the content hub
- */
-void ContentCommunicator::registerWithHub()
-{
- Hub *hub = Hub::Client::instance();
- hub->register_import_export_handler(this);
-}
-
-/*!
- * \brief \reimp
- */
-void ContentCommunicator::handle_import(content::Transfer *transfer)
-{
- // FIXME: If a file is imported from $HOME/Documents, a new copy of the file is created.
- // Could be use md5? http://doc.qt.io/qt-5/qml-qtqml-qt.html#md5-method
- QVariantList importedDocuments;
- QVector<Item> transferedItems = transfer->collect();
- foreach (const Item &hubItem, transferedItems) {
- QFileInfo fi(hubItem.url().toLocalFile());
-
- QString dir;
- QString destination;
- bool rejected = false;
-
- QMimeDatabase mdb;
- QMimeType mt = mdb.mimeTypeForFile(hubItem.url().toLocalFile());
-
- // Check if the item is supported by Ubuntu Document Viewer
- if (isSupportedMimetype(mt.name())) {
- /* We don't support formats that use a double extension
- (e.g. tar.gz), so we can safely use completeBaseName() and
- suffix() functions, in order to properly detect the name of
- the document even when there's a dot in the middle of the name.*/
- QString suffix = fi.suffix();
- QString filenameWithoutSuffix = fi.completeBaseName();
-
- if(suffix.isEmpty()) {
- // If the filename doesn't have an extension add one from the
- // detected mimetype
- if(!mt.preferredSuffix().isEmpty()) {
- suffix = mt.preferredSuffix();
- }
- }
-
- dir = QStandardPaths::writableLocation(QStandardPaths::DocumentsLocation) + QDir::separator();
- destination = QString("%1.%2").arg(dir + filenameWithoutSuffix, suffix);
-
- // If we already have a file of this name reformat to "filename (copy x).png"
- // (where x is a number, incremented until we find an available filename)
- if(QFile::exists(destination)) {
- /*
- TRANSLATORS: This string is used for renaming a copied file,
- when a file with the same name already exists in user's
- Documents folder.
-
- e.g. "Manual_Aquaris_E4.5_ubuntu_EN.pdf" will become
- "Manual_Aquaris_E4.5_ubuntu_EN (copy 2).pdf"
-
- where "2" is given by the argument "%1"
- */
- QString reformattedSuffix = QString(_("copy %1"));
-
- QRegExp rx(" \\(" + reformattedSuffix.arg(QString("\\d+")) + "\\)");
- int reformattedSuffixPos = filenameWithoutSuffix.lastIndexOf(rx);
-
- // Check if the file has already a "copy" suffix
- if(reformattedSuffixPos != -1) {
- // Remove the "copy" suffix. We will re-put it later.
- filenameWithoutSuffix.truncate(reformattedSuffixPos);
- }
-
- int append = 1;
- do {
- destination = QString("%1 (%2).%3").arg(dir + filenameWithoutSuffix,
- reformattedSuffix.arg(QString::number(append)),
- suffix);
- append++;
- } while(QFile::exists(destination));
- }
-
- QFile::copy(hubItem.url().toLocalFile(), destination);
- } else {
- rejected = true;
- }
-
- // Append an entry for the imported document in the list that will be
- // emitted with the 'documentImported' signal.
- QVariantMap entry;
- if (rejected) {
- entry["fileName"] = fi.fileName();
- } else {
- entry["fileName"] = destination;
- }
- entry["rejected"] = rejected;
-
- importedDocuments.append(entry);
- }
-
- // Allow content-hub to clean up temporary files in .cache/ once we've
- // moved them
- transfer->finalize();
-
- emit documentImported(importedDocuments);
-}
-
-/*!
- * \brief \reimp
- */
-void ContentCommunicator::handle_export(content::Transfer *transfer)
-{
- if (m_transfer != nullptr) {
- qWarning() << "docviewer-app does only one content export at a time";
- transfer->abort();
- return;
- }
-
- m_transfer = transfer;
- emit documentRequested();
- emit selectionTypeChanged();
- emit singleContentPickModeChanged();
-}
-
-/*!
- * \brief \reimp
- */
-void ContentCommunicator::handle_share(content::Transfer *)
-{
- qDebug() << Q_FUNC_INFO << "docviewer does not share content";
-}
-
-/*!
- * \brief ContentCommunicator::cancelTransfer aborts the current transfer
- */
-void ContentCommunicator::cancelTransfer()
-{
- if (!m_transfer) {
- qWarning() << "No ongoing transfer to cancel";
- return;
- }
-
- m_transfer->abort();
- m_transfer = nullptr;
-}
-
-/*!
- * \brief ContentCommunicator::returnSocuments returns the given documents
- * via content hub to the requester
- * \param urls
- */
-void ContentCommunicator::returnDocuments(const QVector<QUrl> &urls)
-{
- if (!m_transfer) {
- qWarning() << "No ongoing transfer to return a document";
- return;
- }
-
- QVector<Item> items;
- items.reserve(urls.size());
- foreach (const QUrl &url, urls) {
- items.append(Item(url));
- }
-
- m_transfer->charge(items);
- m_transfer = nullptr;
-}
-
-/*!
- * \brief ContentCommunicator::selectionType return if the transfer requests
- * one single item only, or multiple
- * \return
- */
-ContentCommunicator::SelectionType ContentCommunicator::selectionType() const
-{
- if (!m_transfer)
- return SingleSelect;
-
- return static_cast<SelectionType>(m_transfer->selectionType());
-}
-
-/*!
- * \brief ContentCommunicator::singleContentPickMode
- * \return
- */
-bool ContentCommunicator::singleContentPickMode() const
-{
- if (!m_transfer)
- return true;
-
- // FIXME: Shouldn't be Transfer::SelectionType::SingleSelect?
- return m_transfer->selectionType() == Transfer::SelectionType::single;
-}
-
-/*!
- * \brief ContentCommunicator::isSupportedMimetype returns true if the given
- * mimetype is supported by Ubuntu Document Viewer
- * \param mimetype
- */
-bool ContentCommunicator::isSupportedMimetype(QString mimetype)
-{
- if (mimetype.startsWith("text/"))
- return true;
-
- if (mimetype == "application/pdf")
- return true;
-
- return false;
-}
=== removed file 'src/app/content-communicator.h'
--- src/app/content-communicator.h 2015-04-20 16:24:06 +0000
+++ src/app/content-communicator.h 1970-01-01 00:00:00 +0000
@@ -1,74 +0,0 @@
-/*
- * Copyright (C) 2013 Canonical, Ltd.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; version 3.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-
-#ifndef CONTENTCOMMUNICATOR_H
-#define CONTENTCOMMUNICATOR_H
-
-#include <com/ubuntu/content/import_export_handler.h>
-#include <com/ubuntu/content/transfer.h>
-
-#include <QUrl>
-#include <QVector>
-#include <libintl.h>
-
-#define _(value) dgettext(GETTEXT_PACKAGE, value)
-
-using namespace com::ubuntu;
-
-/*!
- * Class to handle the communication with the content manager
- */
-class ContentCommunicator : public content::ImportExportHandler
-{
- Q_OBJECT
- Q_PROPERTY(bool singleContentPickMode READ singleContentPickMode NOTIFY singleContentPickModeChanged)
- Q_PROPERTY(SelectionType selectionType READ selectionType NOTIFY selectionTypeChanged)
- Q_ENUMS(SelectionType)
-
-public:
- enum SelectionType {
- SingleSelect = content::Transfer::single,
- MultiSelect = content::Transfer::multiple
- };
-
- ContentCommunicator(QObject *parent = nullptr);
-
- virtual void handle_import(content::Transfer*);
- virtual void handle_export(content::Transfer *transfer);
- virtual void handle_share(content::Transfer*);
-
- void cancelTransfer();
- void returnDocuments(const QVector<QUrl> &urls);
-
- SelectionType selectionType() const;
- bool singleContentPickMode() const;
-
- void registerWithHub();
-
-signals:
- void documentRequested();
- void documentImported(QVariantList documents);
- void selectionTypeChanged();
- void singleContentPickModeChanged();
-
-private:
- content::Transfer *m_transfer;
-
- bool isSupportedMimetype(QString mimetype);
-};
-
-#endif // CONTENTCOMMUNICATOR_H
=== modified file 'src/app/docviewer-application.cpp'
--- src/app/docviewer-application.cpp 2015-04-29 15:23:32 +0000
+++ src/app/docviewer-application.cpp 2015-10-08 20:57:10 +0000
@@ -18,7 +18,6 @@
*/
#include "docviewer-application.h"
-#include "content-communicator.h"
#include "command-line-parser.h"
#include "urlhandler.h"
@@ -38,9 +37,6 @@
DocViewerApplication::DocViewerApplication(int& argc, char** argv)
: QApplication(argc, argv),
m_view(new QQuickView()),
- m_contentCommunicator(new ContentCommunicator(this)),
- m_pickModeEnabled(false),
- m_defaultUiMode(BrowseContentMode),
m_documentFile(""),
m_documentLoaded(false)
{
@@ -73,15 +69,10 @@
registerQML();
- if (m_cmdLineParser->pickModeEnabled())
+ // FIXME: Broken after removal of it.
+ /*if (m_cmdLineParser->pickModeEnabled())
setDefaultUiMode(DocViewerApplication::PickContentMode);
-
- QObject::connect(m_contentCommunicator, SIGNAL(documentRequested()),
- this, SLOT(switchToPickMode()));
-
- QObject::connect(m_contentCommunicator, SIGNAL(documentImported()),
- this, SLOT(switchToBrowseMode()));
-
+*/
return true;
}
@@ -172,7 +163,6 @@
// Set ourselves up to expose functionality to run external commands from QML...
m_view->engine()->rootContext()->setContextProperty("DOC_VIEWER", this);
- m_view->engine()->rootContext()->setContextProperty("PICKER_HUB", m_contentCommunicator);
QObject::connect(m_view->engine(), SIGNAL(quit()), this, SLOT(quit()));
@@ -201,7 +191,6 @@
qFatal("File: %s does not exist at any of the standard paths!", qPrintable(filePath));
}
- registerHub();
m_view->setSource(QUrl::fromLocalFile(qmlfile));
setDocumentFile(m_cmdLineParser->documentFile());
@@ -217,57 +206,6 @@
}
/*!
- * \brief DocViewerApplication::setDefaultUiMode set the default UI mode. This might
- * get overridden during the lifetime
- * \param mode
- */
-void DocViewerApplication::setDefaultUiMode(DocViewerApplication::UiMode mode)
-{
- m_defaultUiMode = mode;
- setUiMode(mode);
-}
-
-/*!
- * \brief DocViewerApplication::setUiMode set's the current UI mode
- * \param mode
- */
-void DocViewerApplication::setUiMode(DocViewerApplication::UiMode mode)
-{
- bool enablePickMode = (mode == PickContentMode);
-
- if (enablePickMode != m_pickModeEnabled) {
- m_pickModeEnabled = enablePickMode;
- Q_EMIT pickModeEnabledChanged();
- }
-}
-
-/*!
- * \brief DocViewerApplication::pickModeEnabled returns true if the current UI
- * mode should be for picking acontent
- * \return
- */
-bool DocViewerApplication::pickModeEnabled() const
-{
- return m_pickModeEnabled;
-}
-
-/*!
- * \brief DocViewerApplication::switchToPickMode
- */
-void DocViewerApplication::switchToPickMode()
-{
- setUiMode(PickContentMode);
-}
-
-/*!
- * \brief DocViewerApplication::switchToBrowseMode
- */
-void DocViewerApplication::switchToBrowseMode()
-{
- Q_EMIT browseModeRequested();
-}
-
-/*!
* \brief DocViewerApplication::setFullScreen
* Change window state to fullScreen or no state
*/
@@ -292,50 +230,6 @@
}
}
-/*!
- * \brief DocViewerApplication::returnPickedContent passes the selcted items to the
- * content manager
- * \param variant
- */
-void DocViewerApplication::returnPickedContent(QList<QString> paths)
-{
- QVector<QUrl> selectedMedias;
- selectedMedias.reserve(paths.size());
- foreach (const QString path, paths) {
- // We handle paths without "file://" prefix, so we need to add it when exporting to content-hub.
- selectedMedias.append(QUrl("file://" + path));
- }
- m_contentCommunicator->returnDocuments(selectedMedias);
-
- if (m_defaultUiMode == BrowseContentMode) {
- setUiMode(BrowseContentMode);
- } else {
- // give the app and content-hub some time to finish taks (run the event loop)
- QTimer::singleShot(10, this, SLOT(quit()));
- }
-}
-
-/*!
- * \brief DocViewerApplication::contentPickingCanceled tell the content manager, that
- * the picking was canceled
- */
-void DocViewerApplication::contentPickingCanceled()
-{
- m_contentCommunicator->cancelTransfer();
-
- if (m_defaultUiMode == BrowseContentMode) {
- setUiMode(BrowseContentMode);
- } else {
- // give the app and content-hub some time to finish taks (run the event loop)
- QTimer::singleShot(10, this, SLOT(quit()));
- }
-}
-
-void DocViewerApplication::registerHub()
-{
- m_contentCommunicator->registerWithHub();
-}
-
void DocViewerApplication::parseUri(const QString &arg)
{
if (m_urlHandler->processUri(arg)) {
=== modified file 'src/app/docviewer-application.h'
--- src/app/docviewer-application.h 2015-04-29 15:23:32 +0000
+++ src/app/docviewer-application.h 2015-10-08 20:57:10 +0000
@@ -37,62 +37,42 @@
class DocViewerApplication : public QApplication
{
Q_OBJECT
- Q_PROPERTY(bool pickModeEnabled READ pickModeEnabled NOTIFY pickModeEnabledChanged)
Q_PROPERTY(bool desktopMode READ isDesktopMode CONSTANT)
Q_PROPERTY(bool fullScreen READ isFullScreen WRITE setFullScreen NOTIFY fullScreenChanged)
Q_PROPERTY(QString documentFile READ getDocumentFile WRITE setDocumentFile NOTIFY documentFileChanged)
Q_PROPERTY(QString documentsDir READ getDocumentsDir CONSTANT)
public:
- enum UiMode{
- BrowseContentMode,
- PickContentMode
- };
-
explicit DocViewerApplication(int& argc, char** argv);
virtual ~DocViewerApplication();
bool init();
int exec();
- void setDefaultUiMode(UiMode mode);
- UiMode defaultUiMode() const;
- void setUiMode(UiMode mode);
- bool pickModeEnabled() const;
bool isDesktopMode() const;
bool isFullScreen() const;
const QString &getDocumentFile() const;
const QString &getDocumentsDir() const;
- Q_INVOKABLE void returnPickedContent(QList<QString> paths);
- Q_INVOKABLE void contentPickingCanceled();
Q_INVOKABLE void parseUri(const QString &arg);
Q_INVOKABLE void releaseResources();
signals:
- void pickModeEnabledChanged();
void fullScreenChanged();
void documentFileChanged();
- void browseModeRequested();
private slots:
- void switchToPickMode();
- void switchToBrowseMode();
void setFullScreen(bool fullScreen);
void setDocumentFile(const QString &documentFile);
private:
- void registerHub();
void registerQML();
void createView();
QQuickView *m_view;
CommandLineParser* m_cmdLineParser;
UrlHandler *m_urlHandler;
- ContentCommunicator *m_contentCommunicator;
- bool m_pickModeEnabled;
- UiMode m_defaultUiMode;
QString m_documentFile;
bool m_documentLoaded;
};
=== removed file 'src/app/graphics/sd-card-symbolic.png'
Binary files src/app/graphics/sd-card-symbolic.png 2015-05-13 14:22:36 +0000 and src/app/graphics/sd-card-symbolic.png 1970-01-01 00:00:00 +0000 differ
=== modified file 'src/app/main.cpp'
--- src/app/main.cpp 2015-03-03 16:49:48 +0000
+++ src/app/main.cpp 2015-10-08 20:57:10 +0000
@@ -19,6 +19,7 @@
// Uncomment if you need to use QML analyzer
// #define QT_QML_DEBUG
+// #include <QtQuick>
#include "docviewer-application.h"
#include <QDebug>
=== added file 'src/app/qml/common/ContentHubProxy.qml'
--- src/app/qml/common/ContentHubProxy.qml 1970-01-01 00:00:00 +0000
+++ src/app/qml/common/ContentHubProxy.qml 2015-10-08 20:57:10 +0000
@@ -0,0 +1,149 @@
+/*
+ * Copyright (C) 2012-2014 Canonical, Ltd.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 3.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+import QtQuick 2.3
+import Ubuntu.Content 1.1
+import DocumentViewer 1.0
+
+// TODO: Show a dialog asking for the destination (internal storage or SD card)
+
+Item {
+ id: contentHubProxy
+
+ property var activeTransfer
+
+ // This property is used in ../documentPage/Document(Grid|List)View.qml
+ // so that we avoid to import Ubuntu.Content module outside this proxy.
+ property bool multipleSelectionType: !activeTransfer || activeTransfer.selectionType == ContentTransfer.Multiple
+
+ property alias rejectedDocuments: rejectedDocsModel
+ property alias importedDocuments: importedDocsModel
+
+ ListModel { id: rejectedDocsModel }
+ ListModel { id: importedDocsModel }
+
+ ContentTransferHint {
+ activeTransfer: contentHubProxy.activeTransfer
+ }
+
+ Connections {
+ target: ContentHub
+
+ onImportRequested: {
+ activeTransfer = transfer
+
+ if (activeTransfer.state === ContentTransfer.Charged) {
+ mainView.switchToBrowseMode()
+
+ internal.clearModels()
+
+ for (var i=0; i<activeTransfer.items.length; i++) {
+ var sourcePath = internal.getPathFromUrl(activeTransfer.items[i].url)
+
+ if (DocumentViewer.isFileSupported(sourcePath)) {
+ var documentsLocation = DocumentViewer.getXdgDocumentsLocation()
+
+ // Check if we have already imported the same document in the past.
+ var earlierImportedFile = DocumentViewer.checkIfFileAlreadyImported(sourcePath, [documentsLocation])
+ if (earlierImportedFile.length > 0) {
+ // Document has been already imported in the past.
+ // Append the path of the earlier copy of the
+ // document in our model, so we can open it instead.
+ importedDocsModel.append({ path: earlierImportedFile })
+ } else {
+ // No document has been found, so we can safely copy it.
+ var destPath = DocumentViewer.buildDestinationPath(documentsLocation, sourcePath);
+
+ internal.importDocument(sourcePath, destPath)
+ }
+ } else {
+ // Document is not supported, append its entry into the
+ // rejected documents model, so that we can inform the
+ // user of what happened.
+ rejectedDocsModel.append({ path: sourcePath })
+ }
+ }
+
+ internal.finalizeImport()
+
+ internal.handleNotifications()
+ }
+ }
+
+ onExportRequested: {
+ activeTransfer = transfer
+ mainView.switchToPickMode()
+ }
+ }
+
+ QtObject {
+ id: internal
+
+ function __openDocument() {
+ if (contentHubProxy.importedDocuments.count > 1) {
+ // If it has been imported more than a document, show
+ // a file picker when user taps the "open" action.
+ PopupUtils.open(
+ Qt.resolvedUrl("common/PickImportedDialog.qml"),
+ mainView,
+ {
+ parent: mainView,
+ model: contentHubProxy.importedDocuments
+ })
+ } else {
+ // It has been imported just a document, open it when
+ // user taps the action button.
+ mainView.openDocument(contentHubProxy.importedDocuments.get(0).path)
+ }
+ }
+
+ function clearModels() {
+ rejectedDocsModel.clear()
+ importedDocsModel.clear()
+ }
+
+ function getPathFromUrl(url) {
+ return url.toString().replace("file://", "")
+ }
+
+ function importDocument(sourcePath, destPath) {
+ DocumentViewer.copy(sourcePath, destPath)
+ importedDocsModel.append({ path: destPath })
+ }
+
+ function finalizeImport() {
+ activeTransfer.finalize()
+ }
+
+ function handleNotifications() {
+ // Check if there's any rejected document in the last transfer.
+ // If so, show an error dialog.
+ if (contentHubProxy.rejectedDocuments.count > 0) {
+ var rejectedDialog = PopupUtils.open(
+ Qt.resolvedUrl("common/RejectedImportDialog.qml"),
+ mainView,
+ {
+ parent: mainView,
+ model: contentHubProxy.rejectedDocuments
+ })
+ rejectedDialog.closed.connect(openDocument)
+ } else {
+ // Open the document, or show a pick dialog if more than one have been imported.
+ __openDocument()
+ }
+ }
+ }
+}
=== modified file 'src/app/qml/common/PickImportedDialog.qml'
--- src/app/qml/common/PickImportedDialog.qml 2015-04-10 17:00:59 +0000
+++ src/app/qml/common/PickImportedDialog.qml 2015-10-08 20:57:10 +0000
@@ -32,13 +32,13 @@
// We don't use a Flickable, since it already lives in the Dialog itself.
Repeater {
id: repeater
- delegate: ListItem.Standard {
- text: Utils.getNameOfFile(modelData)
+ ListItem.Standard {
+ text: Utils.getNameOfFile(model.path)
__foregroundColor: Theme.palette.selected.backgroundText
onClicked: {
PopupUtils.close(multipleImportDialog);
- mainView.openDocument(modelData);
+ mainView.openDocument(model.path);
}
}
}
=== modified file 'src/app/qml/common/RejectedImportDialog.qml'
--- src/app/qml/common/RejectedImportDialog.qml 2015-04-12 15:34:47 +0000
+++ src/app/qml/common/RejectedImportDialog.qml 2015-10-08 20:57:10 +0000
@@ -25,13 +25,13 @@
signal closed
- title: i18n.tr("File not supported", "Files not supported", model.length)
+ title: i18n.tr("File not supported", "Files not supported", repeater.count)
text: i18n.tr("Following document has not been imported:",
- "Following documents have not been imported:", model.length)
+ "Following documents have not been imported:", repeater.count)
Repeater {
id: repeater
- delegate: Label { text: modelData }
+ Label { text: model.path }
}
Button {
=== removed file 'src/app/qml/common/Toast.qml'
--- src/app/qml/common/Toast.qml 2015-04-07 22:03:03 +0000
+++ src/app/qml/common/Toast.qml 1970-01-01 00:00:00 +0000
@@ -1,82 +0,0 @@
-/*
- This file is part of quick-memo
- Copyright (C) 2014, 2015 Stefano Verzegnassi
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License 3 as published by
- the Free Software Foundation.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see http://www.gnu.org/licenses/.
-*/
-
-import QtQuick 2.0
-import Ubuntu.Components 1.1
-
-Rectangle {
- id: rootItem
-
- property alias text: label.text
-
- width: parent.width
- height: units.gu(8)
-
- color: "#131313"
- opacity: 0.85
- layer.enabled: true
-
- anchors {
- horizontalCenter: parent.horizontalCenter
- bottom: parent.bottom; bottomMargin: - height
- }
-
- Label {
- id: label
- anchors.centerIn: parent
-
- font.weight: Font.DemiBold
- color: "white"
- }
-
- MouseArea {
- anchors.fill: parent
-
- onClicked: {
- showAnimation.stop()
- destroyAnimation.restart()
- }
- }
-
- Rectangle {
- anchors {
- bottom: parent.bottom
- left: parent.left
- right: parent.right
- }
-
- height: units.dp(2)
- color: UbuntuColors.orange
- }
-
- SequentialAnimation {
- id: showAnimation
- running: true
-
- NumberAnimation { target: rootItem; property: "anchors.bottomMargin"; to: 0; duration: 300 }
- PauseAnimation { duration: 2000 }
- ScriptAction { script: destroyAnimation.restart() }
- }
-
- SequentialAnimation {
- id: destroyAnimation
-
- NumberAnimation { target: rootItem; property: "opacity"; to: 0; duration: 500 }
- ScriptAction { script: rootItem.destroy() }
- }
-}
-
=== removed file 'src/app/qml/common/ToastWithAction.qml'
--- src/app/qml/common/ToastWithAction.qml 2015-07-14 15:43:11 +0000
+++ src/app/qml/common/ToastWithAction.qml 1970-01-01 00:00:00 +0000
@@ -1,117 +0,0 @@
-/*
- Copyright (C) 2014, 2015 Stefano Verzegnassi
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License 3 as published by
- the Free Software Foundation.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see http://www.gnu.org/licenses/.
-*/
-
-import QtQuick 2.0
-import Ubuntu.Components 1.1
-import QtQuick.Layouts 1.1
-
-Rectangle {
- id: rootItem
-
- property alias text: label.text
- readonly property alias action: action
-
- width: parent.width
- height: units.gu(8)
-
- color: "#131313"
- opacity: 0.85
- layer.enabled: true
-
- anchors {
- horizontalCenter: parent.horizontalCenter
- bottom: parent.bottom; bottomMargin: - height
- }
-
- MouseArea {
- anchors.fill: parent
-
- onClicked: {
- showAnimation.stop()
- destroyAnimation.restart()
- }
- }
-
- RowLayout {
- anchors {
- fill: parent
- margins: units.gu(2)
- }
-
- Label {
- id: label
- Layout.fillWidth: true
-
- font.weight: Font.DemiBold
- color: "white"
- }
-
- AbstractButton {
- Layout.preferredWidth: actionLabel.paintedWidth
- Layout.fillHeight: true
-
- onClicked: {
- action.triggered("[Toast] Action %1 clicked!".arg(action.text))
- }
-
- Label {
- id: actionLabel
- text: action.text
-
- font.capitalization: Font.AllUppercase
- font.weight: Font.DemiBold
- color: UbuntuColors.orange
-
- anchors.centerIn: parent
- }
- }
- }
-
- Rectangle {
- anchors {
- bottom: parent.bottom
- left: parent.left
- right: parent.right
- }
-
- height: units.dp(2)
- color: UbuntuColors.orange
- }
-
- Action {
- id: action
-
- text: i18n.tr("Dismiss")
- onTriggered: destroyAnimation.restart()
- }
-
- SequentialAnimation {
- id: showAnimation
- running: true
-
- NumberAnimation { target: rootItem; property: "anchors.bottomMargin"; to: 0; duration: 300 }
- PauseAnimation { duration: 2000 }
- ScriptAction { script: destroyAnimation.restart() }
- }
-
- SequentialAnimation {
- id: destroyAnimation
-
- NumberAnimation { target: rootItem; property: "opacity"; to: 0; duration: 500 }
- ScriptAction { script: rootItem.destroy() }
- }
-}
-
=== modified file 'src/app/qml/common/loadComponent.js'
--- src/app/qml/common/loadComponent.js 2015-02-13 15:30:01 +0000
+++ src/app/qml/common/loadComponent.js 2015-10-08 20:57:10 +0000
@@ -27,6 +27,16 @@
if (mimetype === "application/pdf")
qmlToLoad = Qt.resolvedUrl("../pdfView/PdfView.qml");
+ // Check if LibreOffice document
+ if (mimetype.indexOf("application/vnd.oasis.opendocument") > -1
+ || mimetype === "application/vnd.openxmlformats-officedocument.wordprocessingml.document"
+ || mimetype === "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
+ || mimetype === "application/vnd.openxmlformats-officedocument.presentationml.presentation"
+ || mimetype === "application/msword"
+ || mimetype === "application/vnd.ms-excel"
+ || mimetype === "application/vnd.ms-powerpoint")
+ qmlToLoad = Qt.resolvedUrl("../loView/LOViewPage.qml")
+
if (qmlToLoad != "") {
pageStack.push(qmlToLoad);
} else {
=== modified file 'src/app/qml/documentPage/DocumentDelegateActions.qml'
--- src/app/qml/documentPage/DocumentDelegateActions.qml 2015-07-01 16:05:59 +0000
+++ src/app/qml/documentPage/DocumentDelegateActions.qml 2015-10-08 20:57:10 +0000
@@ -37,5 +37,13 @@
}
]
- property list<Action> trailingActions
+ property list<Action> trailingActions: [
+ Action {
+ iconName: "share"
+ text: i18n.tr("Share")
+ onTriggered: {
+ pageStack.push(Qt.resolvedUrl("./SharePage.qml"), { fileUrl: model.path })
+ }
+ }
+ ]
}
=== modified file 'src/app/qml/documentPage/DocumentEmptyState.qml'
--- src/app/qml/documentPage/DocumentEmptyState.qml 2015-02-26 20:16:32 +0000
+++ src/app/qml/documentPage/DocumentEmptyState.qml 2015-10-08 20:57:10 +0000
@@ -22,10 +22,7 @@
EmptyState {
title: i18n.tr("No document found")
-
- // TODO: Add "or insert removable media with documents." to subTitle when
- // the support for SD card will be implemented.
- subTitle: i18n.tr("Connect your device to any computer and simply drag files to the Documents folder.")
+ subTitle: i18n.tr("Connect your device to any computer and simply drag files to the Documents folder or insert removable media with documents.")
iconName: "edit-copy"
anchors.centerIn: parent
=== modified file 'src/app/qml/documentPage/DocumentGridDelegate.qml'
--- src/app/qml/documentPage/DocumentGridDelegate.qml 2015-07-14 13:43:17 +0000
+++ src/app/qml/documentPage/DocumentGridDelegate.qml 2015-10-08 20:57:10 +0000
@@ -65,7 +65,7 @@
}
visible: model.isFromExternalStorage
- source: Qt.resolvedUrl("../../graphics/sd-card-symbolic.png")
+ name: "sdcard-symbolic"
}
// Document mimetype icon
=== modified file 'src/app/qml/documentPage/DocumentGridView.qml'
--- src/app/qml/documentPage/DocumentGridView.qml 2015-06-22 17:04:27 +0000
+++ src/app/qml/documentPage/DocumentGridView.qml 2015-10-08 20:57:10 +0000
@@ -37,6 +37,16 @@
cellWidth: (mainView.width > units.gu(50)) ? units.gu(24)
: (mainView.width - units.gu(2)) * 0.5
+ // We allow multiple selection both in selection and pick mode.
+ multipleSelection: {
+ // No active transfer, then we're in selection mode.
+ if (!contentHubProxy.activeTransfer)
+ return true
+
+ // We have an active transfer, get the value from the content hub proxy
+ return contentHubProxy.multipleSelectionType
+ }
+
listDelegate: DocumentGridDelegate {
id: delegate
width: cellWidth
@@ -80,5 +90,5 @@
}
}
- Component.onCompleted: { if (DOC_VIEWER.pickModeEnabled) documentGridView.startSelection(); }
+ Component.onCompleted: { if (mainView.pickMode) documentGridView.startSelection(); }
}
=== modified file 'src/app/qml/documentPage/DocumentListDelegate.qml'
--- src/app/qml/documentPage/DocumentListDelegate.qml 2015-07-24 09:12:38 +0000
+++ src/app/qml/documentPage/DocumentListDelegate.qml 2015-10-08 20:57:10 +0000
@@ -92,6 +92,21 @@
if (model.mimetype === "application/pdf")
return "application-pdf-symbolic"
+ if (model.mimetype === "application/vnd.oasis.opendocument.text"
+ || model.mimetype === "application/msword"
+ || model.mimetype === "application/vnd.openxmlformats-officedocument.wordprocessingml.document")
+ return "x-office-document-symbolic"
+
+ if (model.mimetype === "application/vnd.oasis.opendocument.spreadsheet"
+ || model.mimetype === "application/vnd.ms-excel"
+ || model.mimetype === "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
+ return "x-office-spreadsheet-symbolic"
+
+ if (model.mimetype === "application/vnd.oasis.opendocument.presentation"
+ || model.mimetype === "application/vnd.ms-powerpoint"
+ || model.mimetype === "application/vnd.openxmlformats-officedocument.presentationml.presentation")
+ return "x-office-presentation-symbolic"
+
return "package-x-generic-symbolic"
}
@@ -109,7 +124,7 @@
Icon {
anchors.fill: parent
- source: Qt.resolvedUrl("../../graphics/sd-card-symbolic.png")
+ name: "sdcard-symbolic"
}
}
}
=== modified file 'src/app/qml/documentPage/DocumentListView.qml'
--- src/app/qml/documentPage/DocumentListView.qml 2015-06-22 17:04:27 +0000
+++ src/app/qml/documentPage/DocumentListView.qml 2015-10-08 20:57:10 +0000
@@ -48,6 +48,16 @@
}
}
+ // We allow multiple selection both in selection and pick mode.
+ multipleSelection: {
+ // No active transfer, then we're in selection mode.
+ if (!contentHubProxy.activeTransfer)
+ return true
+
+ // We have an active transfer, get the value from the content hub proxy
+ return contentHubProxy.multipleSelectionType
+ }
+
listDelegate: DocumentListDelegate {
id: delegate
@@ -185,5 +195,5 @@
}
}
- Component.onCompleted: { if (DOC_VIEWER.pickModeEnabled) documentListView.startSelection(); }
+ Component.onCompleted: { if (mainView.pickMode) documentListView.startSelection(); }
}
=== modified file 'src/app/qml/documentPage/DocumentPage.qml'
--- src/app/qml/documentPage/DocumentPage.qml 2015-06-22 16:39:07 +0000
+++ src/app/qml/documentPage/DocumentPage.qml 2015-10-08 20:57:10 +0000
@@ -77,10 +77,10 @@
]
Connections {
- target: DOC_VIEWER
+ target: mainView
- onPickModeEnabledChanged: {
- if (DOC_VIEWER.pickModeEnabled) {
+ onPickModeChanged: {
+ if (mainView.pickMode) {
viewLoader.item.startSelection()
} else {
viewLoader.item.cancelSelection()
=== modified file 'src/app/qml/documentPage/DocumentPagePickModeHeader.qml'
--- src/app/qml/documentPage/DocumentPagePickModeHeader.qml 2015-03-03 15:41:11 +0000
+++ src/app/qml/documentPage/DocumentPagePickModeHeader.qml 2015-10-08 20:57:10 +0000
@@ -16,6 +16,7 @@
import QtQuick 2.3
import Ubuntu.Components 1.1
+import Ubuntu.Content 1.1
PageHeadState {
id: rootItem
@@ -27,7 +28,12 @@
text: i18n.tr("Cancel")
objectName: "cancelButton"
iconName: "close"
- onTriggered: DOC_VIEWER.contentPickingCanceled()
+ onTriggered: {
+ if (!contentHubProxy.activeTransfer)
+ return;
+
+ contentHubProxy.activeTransfer.state = ContentTransfer.Aborted;
+ }
}
actions: [
@@ -45,17 +51,18 @@
enabled: viewLoader.item.selectedItems.count > 0
iconName: "ok"
onTriggered: {
- if (!enabled)
+ if (!enabled || !contentHubProxy.activeTransfer)
return;
var urlList = []
var items = documentPage.view.item.selectedItems;
for (var i=0; i < items.count; i++) {
- urlList.push(items.get(i).model.path);
+ urlList.push("file://" + items.get(i).model.path);
}
- DOC_VIEWER.returnPickedContent(urlList);
+ contentHubProxy.activeTransfer.items = urlList
+ contentHubProxy.activeTransfer.state = ContentTransfer.Charged
}
}
]
=== added file 'src/app/qml/documentPage/SharePage.qml'
--- src/app/qml/documentPage/SharePage.qml 1970-01-01 00:00:00 +0000
+++ src/app/qml/documentPage/SharePage.qml 2015-10-08 20:57:10 +0000
@@ -0,0 +1,56 @@
+/*
+ Copyright (C) 2015 Stefano Verzegnassi
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License 3 as published by
+ the Free Software Foundation.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see http://www.gnu.org/licenses/.
+*/
+
+import QtQuick 2.3
+import Ubuntu.Components 1.1
+import Ubuntu.Content 1.1
+
+Page {
+ id: sharePage
+ title: i18n.tr("Share to")
+
+ property url fileUrl
+ property var activeTransfer
+
+ ContentPeerPicker {
+ id: picker
+
+ contentType: ContentType.Documents
+ handler: ContentHandler.Share
+ showTitle: false
+
+ onPeerSelected: {
+ activeTransfer = peer.request();
+ activeTransfer.items = [ resultComponent.createObject(sharePage, { "url": fileUrl }) ];
+ activeTransfer.state = ContentTransfer.Charged;
+ pageStack.pop();
+ }
+
+ onCancelPressed: {
+ pageStack.pop();
+ }
+ }
+
+ ContentTransferHint {
+ anchors.fill: parent
+ activeTransfer: sharePage.activeTransfer
+ }
+
+ Component {
+ id: resultComponent
+ ContentItem {}
+ }
+}
=== added directory 'src/app/qml/loView'
=== added file 'src/app/qml/loView/KeybHelper.js'
--- src/app/qml/loView/KeybHelper.js 1970-01-01 00:00:00 +0000
+++ src/app/qml/loView/KeybHelper.js 2015-10-08 20:57:10 +0000
@@ -0,0 +1,144 @@
+/*
+ * Copyright (C) 2015 Stefano Verzegnassi
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 3.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+function parseEvent(event) {
+ var pixelDiff = 5;
+
+ var view = loPageContentLoader.item.loView
+ var isPresentation = view.document.documentType === LO.Document.PresentationDocument
+
+ if (event.key == Qt.Key_PageUp) {
+ if (isPresentation)
+ view.document.currentPart -= 1
+ else
+ view.moveView("vertical", -view.height)
+
+ return;
+ }
+
+ if (event.key == Qt.Key_PageDown) {
+ if (isPresentation)
+ view.document.currentPart += 1
+ else
+ view.moveView("vertical", view.height)
+
+ return;
+ }
+
+ if (event.key == Qt.Key_Home) {
+ if (event.modifiers & Qt.ControlModifier) {
+ view.contentX = 0
+ view.contentY = 0
+ view.document.currentPart = 0
+ } else {
+ view.contentX = 0
+ view.contentY = 0
+ }
+ }
+
+ if (event.key == Qt.Key_End) {
+ if (event.modifiers & Qt.ControlModifier) {
+ view.contentX = view.contentWidth - view.width
+ view.contentY = view.contentHeight - view.height
+ console.log(view.document.currentPart, view.document.partsCount - 1)
+ view.document.currentPart = view.document.partsCount - 1
+ } else {
+ view.contentX = view.contentWidth - view.width
+ view.contentY = view.contentHeight - view.height
+ }
+ }
+
+ if (event.key == Qt.Key_Up) {
+ view.moveView("vertical", -pixelDiff)
+ return;
+ }
+
+ if (event.key == Qt.Key_Down) {
+ view.moveView("vertical", pixelDiff)
+ return;
+ }
+
+ if (event.key == Qt.Key_Left) {
+ view.moveView("horizontal", -pixelDiff)
+ return;
+ }
+
+ if (event.key == Qt.Key_Right) {
+ view.moveView("horizontal", pixelDiff)
+ return;
+ }
+
+ if (event.key == Qt.Key_Plus) {
+ if (event.modifiers & Qt.ControlModifier) {
+ view.zoomFactor = Math.max(4.0, view.zoomFactor + 0.25)
+ }
+ }
+
+ if (event.key == Qt.Key_Minus) {
+ if (event.modifiers & Qt.ControlModifier) {
+ view.zoomFactor = Math.min(0.5, view.zoomFactor - 0.25)
+ }
+ }
+
+
+ /*
+ if (event.key == Qt.Key_C) {
+ if (event.modifiers & Qt.ControlModifier) {
+
+ }
+ }
+ */
+
+ /*
+ if (event.key == Qt.Key_X) {
+ if (event.modifiers & Qt.ControlModifier) {
+
+ }
+ }
+ */
+
+ /*
+ if (event.key == Qt.Key_V) {
+ if (event.modifiers & Qt.ControlModifier) {
+
+ }
+ }
+ */
+
+ /*
+ if (event.key == Qt.Key_A) {
+ if (event.modifiers & Qt.ControlModifier) {
+
+ }
+ }
+ */
+
+ /*
+ if (event.key == Qt.Key_L) {
+ if (event.modifiers & Qt.ControlModifier) {
+ // TODO: Go to page dialog
+ }
+ }
+ */
+
+ /*
+ if (event.key == Qt.Key_Question) {
+ if (event.modifiers & (Qt.ControlModifier | Qt.ShiftModifier)) {
+ // TODO: Keyboard shortcuts
+ }
+ }
+ */
+}
=== added file 'src/app/qml/loView/LOViewDefaultHeader.qml'
--- src/app/qml/loView/LOViewDefaultHeader.qml 1970-01-01 00:00:00 +0000
+++ src/app/qml/loView/LOViewDefaultHeader.qml 2015-10-08 20:57:10 +0000
@@ -0,0 +1,119 @@
+/*
+ * Copyright (C) 2014-2015 Canonical, Ltd.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 3.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+import QtQuick 2.3
+import Ubuntu.Components 1.1
+import QtQuick.Layouts 1.1
+import Ubuntu.Components.Popups 1.0
+
+PageHeadState {
+ id: rootItem
+
+ property Page targetPage
+ property alias activityRunning: activity.running
+
+ head: targetPage.head
+
+ contents: RowLayout {
+ anchors.fill: parent
+ spacing: units.gu(1)
+
+ ActivityIndicator { id: activity }
+
+ Column {
+ id: layout
+ Layout.fillWidth: true
+
+ Label {
+ width: parent.width
+ //horizontalAlignment: Text.AlignHCenter
+ elide: Text.ElideMiddle
+
+ font.weight: Font.DemiBold
+ text: targetPage.title
+ }
+ Label {
+ width: parent.width
+ //horizontalAlignment: Text.AlignHCenter
+ elide: Text.ElideMiddle
+
+ fontSize: "small"
+ text: {
+ if (!loPageContentLoader.item)
+ return i18n.tr("Loading...")
+
+ switch(loPageContentLoader.item.loDocument.documentType) {
+ case 0:
+ return i18n.tr("LibreOffice text document")
+ case 1:
+ return i18n.tr("LibreOffice spread sheet")
+ case 2:
+ return i18n.tr("LibreOffice presentation")
+ case 3:
+ return i18n.tr("LibreOffice Draw document")
+ case 4:
+ return i18n.tr("Unknown LibreOffice document")
+ default:
+ return i18n.tr("Unknown type document")
+ }
+ }
+ }
+ }
+ }
+
+ backAction: Action {
+ iconName: "back"
+ text: (pageStack.depth > 1) ? i18n.tr("Back") : i18n.tr("Close")
+ onTriggered: {
+ if (pageStack.depth > 1) {
+ // Go back to Welcome page
+ pageStack.pop();
+ } else {
+ // File has been imported through Content Hub (or was not chosen through WelcomePage)
+ // Close the application and show our source app (e.g. ubuntu-filemanager-app, if used to open a document)
+ Qt.quit()
+ }
+ }
+ }
+
+ actions: [
+ Action {
+ iconName: "zoom-in"
+ text: i18n.tr("Show zoom controls")
+ onTriggered: targetPage.state = "zoom"
+ },
+
+ Action {
+ objectName:"gotopage"
+ iconName: "browser-tabs"
+ text: i18n.tr("Go to page...")
+ enabled: false
+ },
+
+ Action {
+ iconName: "night-mode"
+ text: mainView.nightModeEnabled ? i18n.tr("Disable night mode") : i18n.tr("Enable night mode")
+ onTriggered: mainView.nightModeEnabled = !mainView.nightModeEnabled
+ },
+
+ Action {
+ objectName: "detailsAction"
+ text: i18n.tr("Details")
+ iconName: "info"
+ onTriggered: pageStack.push(Qt.resolvedUrl("../common/DetailsPage.qml"))
+ }
+ ]
+}
=== added file 'src/app/qml/loView/LOViewPage.qml'
--- src/app/qml/loView/LOViewPage.qml 1970-01-01 00:00:00 +0000
+++ src/app/qml/loView/LOViewPage.qml 2015-10-08 20:57:10 +0000
@@ -0,0 +1,221 @@
+/*
+ * Copyright (C) 2013-2015 Canonical, Ltd.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 3.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+import QtQuick 2.3
+import Ubuntu.Components 1.1
+import Ubuntu.Layouts 1.0
+import DocumentViewer.LibreOffice 1.0 as LO
+
+import "../upstreamComponents"
+
+import "../common/utils.js" as Utils
+import "KeybHelper.js" as KeybHelper
+
+PageWithBottomEdge {
+ id: loPage
+ title: Utils.getNameOfFile(file.path);
+ flickable: null
+
+ readonly property bool wideWindow: width > units.gu(120)
+
+ bottomEdgeTitle: i18n.tr("Slides")
+ bottomEdgeEnabled: {
+ if (!loPageContentLoader.loaded)
+ return false
+
+ // else
+ return loPageContentLoader.item.loDocument.documentType == LO.Document.PresentationDocument && !wideWindow
+ }
+
+ Loader {
+ id: loPageContentLoader
+
+ asynchronous: true
+ anchors.fill: parent
+ sourceComponent: loPageContentComponent
+
+ onLoaded: {
+ if (loaded) {
+ // FIXME: At the moment don't hide header if the document is a presentation
+ var isPresentation = (item.loDocument.documentType === LO.Document.PresentationDocument)
+ loPage.flickable = isPresentation ? null : item.loView
+
+ loPage.bottomEdgePageComponent = item.bottomEdgePartsPage
+
+ } else {
+ loPage.flickable = null
+ }
+ }
+ }
+
+ ActivityIndicator {
+ running: loPageContentLoader.status != Loader.Ready
+ visible: running
+ anchors.centerIn: parent
+ }
+
+ Component {
+ id: loPageContentComponent
+
+ FocusScope {
+ id: loPageContent
+ anchors.fill: parent
+
+ property alias loDocument: loView.document
+ property alias loView: loView
+ property alias bottomEdgePartsPage: bottomEdgePartsPage
+
+ Layouts {
+ id: layouts
+ anchors.fill: parent
+
+ layouts: [
+ ConditionalLayout {
+ when: wideWindow
+ name: "wideWindowLayout"
+
+ Item {
+ anchors.fill: parent
+
+ // TODO: Add a setting to show/hide sidebar when width > units.gu(80)
+ PartsView {
+ id: partsView
+ anchors {
+ top: parent.top
+ bottom: bottomBarLayoutItem.top
+ left: parent.left
+ }
+
+ model: loView.partsModel //LO.PartsModel { document: loPageContent.loDocument }
+ visible: /*loView.partsModel &&*/ loDocument.documentType == LO.Document.PresentationDocument
+ width: visible ? units.gu(40) : 0
+ }
+
+ Item {
+ anchors {
+ left: partsView.right
+ right: parent.right
+ top: parent.top
+ bottom: bottomBarLayoutItem.top
+ }
+
+ ItemLayout {
+ item: "loView"
+ anchors.fill: parent
+
+ // Keyboard events
+ focus: true
+ Keys.onPressed: KeybHelper.parseEvent(event)
+ Component.onCompleted: loPageContent.forceActiveFocus()
+ }
+ }
+
+ Item {
+ id: bottomBarLayoutItem
+ visible: loDocument.documentType == LO.Document.PresentationDocument
+ height: visible ? units.gu(5) : 0
+ anchors {
+ left: parent.left
+ right: parent.right
+ bottom: parent.bottom
+ }
+
+ ItemLayout { item: "bottomBar"; anchors.fill: parent }
+ }
+ }
+ }
+ ]
+
+ LO.Viewer {
+ id: loView
+ objectName: "loView"
+ Layouts.item: "loView"
+ anchors {
+ left: parent.left
+ right: parent.right
+ top: parent.top
+ bottom: bottomBar.top
+ }
+
+ clip: true
+ documentPath: file.path
+
+ // Keyboard events
+ focus: true
+ Keys.onPressed: KeybHelper.parseEvent(event)
+
+ Component.onCompleted: {
+ // WORKAROUND: Fix for wrong grid unit size
+ flickDeceleration = 1500 * units.gridUnit / 8
+ maximumFlickVelocity = 2500 * units.gridUnit / 8
+ loPageContent.forceActiveFocus()
+ }
+
+ Scrollbar { flickableItem: loView; parent: loView.parent }
+ Scrollbar { flickableItem: loView; parent: loView.parent; align: Qt.AlignBottom }
+ }
+
+ // TODO: When we'll have to merge this with the zooming branch, replace this
+ // and use a single bottom panel
+ SlideControllerPanel {
+ id: bottomBar
+ Layouts.item: "bottomBar"
+ visible: loDocument.documentType == LO.Document.PresentationDocument
+ height: visible ? units.gu(5) : 0
+ anchors {
+ left: parent.left
+ right: parent.right
+ bottom: parent.bottom
+ }
+ }
+ }
+
+ Component {
+ id: bottomEdgePartsPage
+ Page {
+ title: i18n.tr("Slides")
+ head.backAction: Action {
+ text: i18n.tr("Back")
+ iconName: "down"
+ onTriggered: pageStack.pop()
+ }
+
+ flickable: null
+
+ PartsView {
+ property bool belongsToNestedPage: true
+ anchors.fill: parent
+ model: loView.partsModel //LO.PartsModel { document: loPageContent.loDocument }
+ }
+ }
+ }
+ }
+ }
+
+ // *** HEADER ***
+ state: "default"
+ states: [
+ LOViewDefaultHeader {
+ name: "default"
+ targetPage: loPage
+ },
+
+ LOViewZoomHeader {
+ name: "zoom"
+ targetPage: loPage
+ }
+ ]
+}
=== added file 'src/app/qml/loView/LOViewZoomHeader.qml'
--- src/app/qml/loView/LOViewZoomHeader.qml 1970-01-01 00:00:00 +0000
+++ src/app/qml/loView/LOViewZoomHeader.qml 2015-10-08 20:57:10 +0000
@@ -0,0 +1,59 @@
+/*
+ * Copyright (C) 2014-2015 Canonical, Ltd.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 3.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+import QtQuick 2.3
+import Ubuntu.Components 1.1
+import QtQuick.Layouts 1.1
+import Ubuntu.Components.Popups 1.0
+
+PageHeadState {
+ id: rootItem
+
+ property Page targetPage
+ head: targetPage.head
+
+ contents: Item {
+ anchors.fill: parent
+
+ ZoomSelector {
+ width: units.gu(24)
+ anchors {
+ right: parent.right
+ verticalCenter: parent.verticalCenter
+ }
+ }
+ }
+
+ backAction: Action {
+ iconName: "close"
+ text: i18n.tr("Hide zoom controls")
+ onTriggered: targetPage.state = "default"
+ }
+
+ actions: [
+ Action {
+ iconName: "zoom-in"
+ text: i18n.tr("Zoom in")
+ onTriggered: loPageContentLoader.item.loView.zoomFactor += 0.1
+ },
+
+ Action {
+ iconName: "zoom-out"
+ text: i18n.tr("Zoom out")
+ onTriggered: loPageContentLoader.item.loView.zoomFactor -= 0.1
+ }
+ ]
+}
=== added file 'src/app/qml/loView/PanelButton.qml'
--- src/app/qml/loView/PanelButton.qml 1970-01-01 00:00:00 +0000
+++ src/app/qml/loView/PanelButton.qml 2015-10-08 20:57:10 +0000
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2015 Canonical, Ltd.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 3.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+import QtQuick 2.3
+import Ubuntu.Components 1.1
+
+AbstractButton {
+ width: units.gu(4); height: parent.height
+
+ property alias iconName: icon.name
+ property alias iconSource: icon.source
+
+ Icon {
+ id: icon
+ anchors.centerIn: parent
+ width: units.gu(2.5); height: width
+ }
+}
=== added file 'src/app/qml/loView/PartsView.qml'
--- src/app/qml/loView/PartsView.qml 1970-01-01 00:00:00 +0000
+++ src/app/qml/loView/PartsView.qml 2015-10-08 20:57:10 +0000
@@ -0,0 +1,89 @@
+/*
+ * Copyright (C) 2015 Stefano Verzegnassi
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 3.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+import QtQuick 2.3
+import Ubuntu.Components 1.1
+import QtQuick.Layouts 1.1
+import DocumentViewer.LibreOffice 1.0 as LibreOffice
+
+import "../upstreamComponents"
+
+ListView {
+ id: view
+ objectName: "view"
+ clip: true
+
+ property bool expanded: true
+
+ currentIndex: view.model ? loView.document.currentPart : -1
+ highlightMoveDuration: UbuntuAnimation.SnapDuration
+
+ delegate: ListItemWithActions {
+ id: delegate
+
+ width: parent.width
+ height: units.gu(16)
+
+ color: (loView.document.currentPart === model.index) ? Theme.palette.selected.background
+ : "transparent"
+
+ AbstractButton {
+ objectName: "abstractbutton"
+ anchors.fill: parent
+
+ onClicked: {
+ loView.document.currentPart = model.index
+
+ // Check if the view has been included in a nested page (e.g.
+ // bottomEdge). If so, close that page and return to the
+ // main viewer.
+ if (view.hasOwnProperty("belongsToNestedPage"))
+ pageStack.pop();
+ }
+ }
+
+ RowLayout {
+ anchors.fill: parent
+ spacing: units.gu(1)
+
+ Image {
+ Layout.fillHeight: true
+ Layout.preferredWidth: height
+ fillMode: Image.PreserveAspectFit
+ // Do not store a cache of the thumbnail, so that we don't show
+ // thumbnails of a previously loaded document.
+ cache: true // TODO PLAY WITH IT
+ source: model.thumbnail
+ }
+
+ Label {
+ Layout.fillWidth: true
+ wrapMode: Text.WordWrap
+ text: model.name
+ color: (loView.document.currentPart === model.index) ? UbuntuColors.orange
+ : Theme.palette.selected.backgroundText
+ }
+
+ Label {
+ text: model.index + 1
+ color: (loView.document.currentPart === model.index) ? UbuntuColors.orange
+ : Theme.palette.selected.backgroundText
+ }
+ }
+ }
+
+ Scrollbar { flickableItem: view; parent: view.parent }
+}
=== added file 'src/app/qml/loView/SlideControllerPanel.qml'
--- src/app/qml/loView/SlideControllerPanel.qml 1970-01-01 00:00:00 +0000
+++ src/app/qml/loView/SlideControllerPanel.qml 2015-10-08 20:57:10 +0000
@@ -0,0 +1,87 @@
+/*
+ * Copyright (C) 2015 Stefano Verzegnassi
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 3.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+import QtQuick 2.3
+import Ubuntu.Components 1.1
+import QtQuick.Layouts 1.1
+import Ubuntu.Components.ListItems 1.0 as ListItems
+
+Rectangle {
+ id: bottomBar
+ color: "transparent"
+ height: units.gu(5)
+
+ ListItems.ThinDivider {
+ anchors {
+ top: parent.top
+ left: parent.left
+ right: parent.right
+ }
+ }
+
+ Row {
+ anchors.centerIn: parent
+ //spacing: units.gu(2)
+
+ AbstractButton {
+ width: units.gu(4); height: parent.height
+ onClicked: loPageContentLoader.item.loView.goFirstPart()
+
+ Icon {
+ anchors.centerIn: parent
+ width: units.gu(2.5); height: width
+ name: "go-first"
+ }
+ }
+
+ AbstractButton {
+ width: units.gu(4); height: parent.height
+ onClicked: loPageContentLoader.item.loView.goPreviousPart()
+
+ Icon {
+ anchors.centerIn: parent
+ width: units.gu(2.5); height: width
+ name: "go-previous"
+ }
+ }
+
+ Label {
+ text: i18n.tr("Slide %1 of %2").arg(loPageContentLoader.item.loDocument.currentPart + 1).arg(loPageContentLoader.item.loDocument.partsCount)
+ }
+
+ AbstractButton {
+ width: units.gu(4); height: parent.height
+ onClicked: loPageContentLoader.item.loView.goNextPart()
+
+ Icon {
+ anchors.centerIn: parent
+ width: units.gu(2.5); height: width
+ name: "go-next"
+ }
+ }
+
+ AbstractButton {
+ width: units.gu(4); height: parent.height
+ onClicked: loPageContentLoader.item.loView.goLastPart()
+
+ Icon {
+ anchors.centerIn: parent
+ width: units.gu(2.5); height: width
+ name: "go-last"
+ }
+ }
+ }
+}
=== added file 'src/app/qml/loView/ZoomSelector.qml'
--- src/app/qml/loView/ZoomSelector.qml 1970-01-01 00:00:00 +0000
+++ src/app/qml/loView/ZoomSelector.qml 2015-10-08 20:57:10 +0000
@@ -0,0 +1,149 @@
+/*
+ * Copyright (C) 2015 Canonical, Ltd.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 3.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+import QtQuick 2.3
+import Ubuntu.Components 1.1
+import Ubuntu.Components.Popups 1.0
+import DocumentViewer.LibreOffice 1.0 as LibreOffice
+
+TextField {
+ id: textField
+ anchors.verticalCenter: parent.verticalCenter
+ width: units.gu(24)
+
+ property var values: ["auto", 0.5, 0.7, 0.85, 1.0, 1.25, 1.5, 1.75, 2.0, 3.0, 4.0]
+ property var labels: [
+ i18n.tr("Automatic (Fit width)"),
+ "50%", "70%", "85%", "100%", "125%",
+ "150%", "175%","200%", "300%", "400%"
+ ]
+
+ property bool expanded: false
+
+ hasClearButton: true
+ inputMethodHints: Qt.ImhFormattedNumbersOnly
+ validator: IntValidator{ bottom: 50; top: 400 }
+
+ onAccepted: {
+ loPageContentLoader.item.loView.zoomFactor = parseInt(text) / 100
+ focus = false
+ }
+
+ secondaryItem: AbstractButton {
+ visible: !textField.highlighted
+ id: listButton
+ height: parent.height
+ width: visible ? height : 0
+
+ Rectangle {
+ anchors.left: parent.left
+ anchors.verticalCenter: parent.verticalCenter
+ height: parent.height - units.gu(1)
+
+ width: units.dp(1)
+ color: "Grey"
+ opacity: 0.5
+ }
+
+ Icon {
+ id: _upArrow
+
+ width: units.gu(2)
+ height: width
+ anchors.centerIn: parent
+
+ name: "go-down"
+ color: "Grey"
+ rotation: textField.expanded ? 180 : 0
+
+ Behavior on rotation {
+ UbuntuNumberAnimation {}
+ }
+ }
+
+ onClicked: {
+ textField.expanded = true
+ PopupUtils.open(zoomSelectorDialog, listButton)
+ }
+ }
+
+ onHighlightedChanged: {
+ if (highlighted) {
+ text = parseInt(loPageContentLoader.item.loView.zoomFactor * 100)
+ } else text = ""
+ }
+
+ Label {
+ anchors.verticalCenter: parent.verticalCenter
+ anchors.left: parent.left
+ anchors.leftMargin: units.gu(2)
+ visible: !textField.highlighted
+ text: loPageContentLoader.item.loView.zoomMode == LibreOffice.View.FitToWidth ? i18n.tr("Automatic (%1%)").arg(parseInt(loPageContentLoader.item.loView.zoomFactor*100))
+ : i18n.tr("Zoom: %1%").arg(parseInt(loPageContentLoader.item.loView.zoomFactor*100))
+ }
+
+ Component {
+ id: zoomSelectorDialog
+ Popover {
+ id: zoomSelectorDialogue
+ autoClose: false
+ contentHeight: units.gu(24)
+ contentWidth: units.gu(24)
+ Component.onDestruction: textField.expanded = false
+
+ // We don't use 'autoClose' property, since we want to propagate
+ // mouse/touch events to other items (e.g. when zoomSelectorDialogue
+ // is visible, and user taps the zoom+ button on its right, we want
+ // the zoom button to receive the event).
+ InverseMouseArea {
+ anchors.fill: parent
+ propagateComposedEvents: true
+
+ onPressed: {
+ mouse.accepted = false
+ PopupUtils.close(zoomSelectorDialogue)
+ }
+ }
+
+ OptionSelector {
+ expanded: true
+ width: parent.width
+ containerHeight: units.gu(24)
+ model: textField.labels
+ selectedIndex: {
+ if (loPageContentLoader.item.loView.zoomMode == LibreOffice.View.FitToWidth)
+ return 0
+
+ for (var i=0; i<textField.values.length; i++) {
+ if (values[i] == loView.zoomFactor)
+ return i
+ }
+ return -1
+ }
+
+ onSelectedIndexChanged: {
+ if (selectedIndex == 0) {
+ loView.adjustZoomToWidth();
+ return;
+ }
+
+ loPageContentLoader.item.loView.zoomFactor = textField.values[selectedIndex]
+ PopupUtils.close(zoomSelectorDialogue)
+ }
+ }
+ }
+ }
+}
=== modified file 'src/app/qml/ubuntu-docviewer-app.qml'
--- src/app/qml/ubuntu-docviewer-app.qml 2015-06-22 16:45:36 +0000
+++ src/app/qml/ubuntu-docviewer-app.qml 2015-10-08 20:57:10 +0000
@@ -28,7 +28,8 @@
id: mainView
objectName: "mainView"
- property bool pickMode: DOC_VIEWER.pickModeEnabled
+ // TODO: Connect with arguments
+ property bool pickMode: false
readonly property bool isLandscape: Screen.orientation == Qt.LandscapeOrientation ||
Screen.orientation == Qt.InvertedLandscapeOrientation
@@ -36,7 +37,7 @@
useDeprecatedToolbar: false
automaticOrientation: true
- width: units.gu(50)
+ width: units.gu(150)
height: units.gu(75)
function openDocument(path) {
@@ -66,26 +67,12 @@
mainView, { parent: mainView });
}
- function showNotification(args) {
- var component = Qt.createComponent("common/Toast.qml")
- var toast = component.createObject(mainView, args);
-
- return toast;
- }
-
- function showNotificationWithAction(args) {
- var component = Qt.createComponent("common/ToastWithAction.qml")
- var toast = component.createObject(mainView, args);
-
- return toast;
- }
-
function setFullScreen(fullScreen) {
DOC_VIEWER.fullScreen = fullScreen;
}
function toggleFullScreen() {
- DOC_VIEWER.fullScreen = !APP.fullScreen;
+ DOC_VIEWER.fullScreen = !DOC_VIEWER.fullScreen;
}
function setHeaderVisibility(visible, toggleFullscreen) {
@@ -108,6 +95,19 @@
setHeaderVisibility(!header.visible);
}
+ function setPickMode(pickMode) {
+ mainView.pickMode = pickMode
+ }
+
+ function switchToBrowseMode() {
+ setPickMode(false)
+ }
+
+ function switchToPickMode() {
+ setPickMode(true)
+ }
+
+
// On screen rotation, force updating of header/U8 indicators panel visibility
onIsLandscapeChanged: setHeaderVisibility(true);
@@ -183,6 +183,16 @@
property bool reverseOrder: false
}
+ // Content Hub support
+ property alias contentHubProxy: contentHubLoader.item
+ Loader {
+ id: contentHubLoader
+
+ asynchronous: true
+ source: Qt.resolvedUrl("common/ContentHubProxy.qml")
+ }
+
+ // Uri Handler support
Connections {
target: UriHandler
onOpened: {
@@ -198,91 +208,13 @@
onDocumentFileChanged: {
openDocument(DOC_VIEWER.documentFile);
}
-
- onPickModeEnabledChanged: {
- mainView.pickMode = DOC_VIEWER.pickModeEnabled
-
- if (mainView.pickMode) {
- // If a document is loaded, pop() its page.
- while (pageStack.depth > 1) {
- pageStack.pop()
- }
- }
- }
}
- Connections {
- target: PICKER_HUB
-
- onDocumentImported: {
- // Create two arrays: one for rejected documents, and the other
- // for imported documents.
- var importedDocuments = [];
- var rejectedDocuments = [];
- var entry;
-
- // Fill the arrays.
- for (var i=0; i<documents.length; i++) {
- entry = documents[i];
-
- if (entry.rejected) {
- rejectedDocuments.push(entry.fileName);
- break;
- }
-
- importedDocuments.push(entry.fileName);
- }
-
- // Prepare import notification
- var showImportNotification = function() {
- if (importedDocuments.length > 0) {
- var importDialog = showNotificationWithAction({
- "text": i18n.tr("Document successfully imported!",
- "Documents successfully imported!",
- importedDocuments.length),
- "action.text": i18n.tr("Open")
- })
-
- if (importedDocuments.length > 1) {
- // If it has been imported more than a document, show
- // a file picker when user taps the "open" action.
- importDialog.action.triggered.connect(function() {
- PopupUtils.open(
- Qt.resolvedUrl("common/PickImportedDialog.qml"),
- mainView,
- {
- parent: mainView,
- model: importedDocuments
- }
- );
- });
- } else {
- // It has been imported just a document, open it when
- // user taps the action button.
- importDialog.action.triggered.connect(function() {
- openDocument(importedDocuments[0]);
- });
- }
- }
- }
-
- // Check if there's any rejected document in the last transfer.
- // If so, show an error dialog.
- if (rejectedDocuments.length > 0) {
- var rejectedDialog = PopupUtils.open(
- Qt.resolvedUrl("common/RejectedImportDialog.qml"),
- mainView,
- {
- parent: mainView,
- model: rejectedDocuments
- }
- );
-
- // Show import notification after the dialog has been closed.
- rejectedDialog.closed.connect(showImportNotification)
- } else {
- // No dialog has been shown. Show the notification.
- showImportNotification.call();
+ onPickModeChanged: {
+ if (mainView.pickMode) {
+ // If a document is loaded, pop() its page.
+ while (pageStack.depth > 1) {
+ pageStack.pop()
}
}
}
=== modified file 'src/plugin/CMakeLists.txt'
--- src/plugin/CMakeLists.txt 2014-10-20 21:38:36 +0000
+++ src/plugin/CMakeLists.txt 2015-10-08 20:57:10 +0000
@@ -1,2 +1,3 @@
add_subdirectory(file-qml-plugin)
add_subdirectory(poppler-qml-plugin)
+add_subdirectory(libreofficetoolkit-qml-plugin)
=== modified file 'src/plugin/file-qml-plugin/CMakeLists.txt'
--- src/plugin/file-qml-plugin/CMakeLists.txt 2015-05-13 14:22:36 +0000
+++ src/plugin/file-qml-plugin/CMakeLists.txt 2015-10-08 20:57:10 +0000
@@ -3,12 +3,11 @@
#add the sources to compile
set(fileqmlplugin_SRCS
- backend.cpp
- documentmodel.cpp
- fswatcher.cpp
- docviewerfile.cpp
- qstorageinfo.cpp
- qstorageinfo_unix.cpp
+ backend.cpp
+ documentmodel.cpp
+ fswatcher.cpp
+ docviewerfile.cpp
+ docviewerutils.cpp
)
add_library(fileqmlplugin MODULE
=== modified file 'src/plugin/file-qml-plugin/backend.cpp'
--- src/plugin/file-qml-plugin/backend.cpp 2015-04-29 15:23:32 +0000
+++ src/plugin/file-qml-plugin/backend.cpp 2015-10-08 20:57:10 +0000
@@ -21,6 +21,16 @@
#include "backend.h"
#include "documentmodel.h"
#include "docviewerfile.h"
+#include "docviewerutils.h"
+
+static QObject *registerDocviewerUtils (QQmlEngine *engine, QJSEngine *scriptEngine)
+{
+ Q_UNUSED(engine)
+ Q_UNUSED(scriptEngine)
+
+ DocviewerUtils *ch = new DocviewerUtils();
+ return ch;
+}
void BackendPlugin::registerTypes(const char *uri)
{
@@ -30,6 +40,8 @@
qmlRegisterType<DocumentModel>(uri, 1, 0, "DocumentsModel");
qmlRegisterType<DocviewerFile>(uri, 1, 0, "File");
+
+ qmlRegisterSingletonType<DocviewerUtils>(uri, 1, 0, "DocumentViewer", registerDocviewerUtils);
}
void BackendPlugin::initializeEngine(QQmlEngine *engine, const char *uri)
=== modified file 'src/plugin/file-qml-plugin/documentmodel.cpp'
--- src/plugin/file-qml-plugin/documentmodel.cpp 2015-07-30 11:06:22 +0000
+++ src/plugin/file-qml-plugin/documentmodel.cpp 2015-10-08 20:57:10 +0000
@@ -17,12 +17,12 @@
#include "documentmodel.h"
#include "fswatcher.h"
-#include "qstorageinfo.h"
+#include "docviewerutils.h"
#include <QStandardPaths>
#include <QDir>
#include <QFileInfo>
-
+#include <QStorageInfo>
#include <QMimeDatabase>
#include <QDateTime>
@@ -115,10 +115,7 @@
bool DocumentModel::isFileSupported(const QString &path)
{
- QMimeDatabase db;
- QString mimetype = db.mimeTypeForFile(path).name();
-
- return (mimetype.startsWith("text/") || mimetype == "application/pdf");
+ return DocviewerUtils::isFileSupported(path);
}
QHash<int, QByteArray> DocumentModel::roleNames() const
=== added file 'src/plugin/file-qml-plugin/docviewerutils.cpp'
--- src/plugin/file-qml-plugin/docviewerutils.cpp 1970-01-01 00:00:00 +0000
+++ src/plugin/file-qml-plugin/docviewerutils.cpp 2015-10-08 20:57:10 +0000
@@ -0,0 +1,159 @@
+/*
+ Copyright (C) 2015 Canonical, Ltd.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License 3 as published by
+ the Free Software Foundation.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see http://www.gnu.org/licenses/.
+*/
+
+#include "docviewerutils.h"
+
+#include <QFileInfo>
+#include <QDir>
+#include <QMimeDatabase>
+#include <QStandardPaths>
+#include <QDirIterator>
+#include <QDateTime>
+
+bool DocviewerUtils::exists(const QString &path)
+{
+ QFileInfo fi(path);
+
+ if (fi.isFile())
+ return fi.exists();
+
+ // else
+ return QDir(path).exists();
+}
+
+bool DocviewerUtils::copy(const QString &source, const QString &destination)
+{
+ return QFile::copy(source, destination);
+}
+
+bool DocviewerUtils::isFileSupported(const QString &path)
+{
+ QMimeDatabase mdb;
+ const QString mimetype = mdb.mimeTypeForFile(path).name();
+
+ return mimetype.startsWith("text/")
+ || mimetype == "application/pdf"
+ || mimetype.startsWith("application/vnd.oasis.opendocument")
+ || mimetype == "application/msword"
+ || mimetype == "application/vnd.openxmlformats-officedocument.wordprocessingml.document"
+ || mimetype == "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
+ || mimetype == "application/vnd.openxmlformats-officedocument.presentationml.presentation"
+ || mimetype == "application/vnd.ms-excel"
+ || mimetype == "application/vnd.ms-powerpoint";
+}
+
+QString DocviewerUtils::getXdgDocumentsLocation()
+{
+ return QStandardPaths::writableLocation(QStandardPaths::DocumentsLocation);
+}
+
+QString DocviewerUtils::buildDestinationPath(const QString &destinationDir, const QString &sourcePath)
+{
+ QFileInfo fi(sourcePath);
+
+ /*
+ We don't support formats that use a double extension
+ (e.g. tar.gz), so we can safely use completeBaseName() and
+ suffix() functions, in order to properly detect the name of
+ the document even when there's a dot in the middle of the name.
+ */
+ QString suffix = fi.suffix();
+ QString filenameWithoutSuffix = fi.completeBaseName();
+
+ QMimeDatabase mdb;
+ QMimeType mt = mdb.mimeTypeForFile(sourcePath);
+
+ // If the filename doesn't have an extension add one from the
+ // detected mimetype
+ if (suffix.isEmpty())
+ suffix = mt.preferredSuffix();
+
+ QString dir = QStandardPaths::writableLocation(QStandardPaths::DocumentsLocation) + QDir::separator();
+ QString destination = QString("%1.%2").arg(dir + filenameWithoutSuffix, suffix);
+
+ // If there's already a file of this name, reformat it to
+ // "filename (copy x).png" where x is a number, incremented until we find an
+ // available filename.
+ if (QFile::exists(destination)) {
+ /*
+ TRANSLATORS: This string is used for renaming a copied file,
+ when a file with the same name already exists in user's
+ Documents folder.
+
+ e.g. "Manual_Aquaris_E4.5_ubuntu_EN.pdf" will become
+ "Manual_Aquaris_E4.5_ubuntu_EN (copy 2).pdf"
+
+ where "2" is given by the argument "%1"
+ */
+ QString reformattedSuffix = QString(tr("copy %1"));
+
+ // Check if the file has already a "copy" suffix
+ // If so, remove it since we will update it later.
+ QRegExp rx(" \\(" + reformattedSuffix.arg(QString("\\d+")) + "\\)");
+ int reformattedSuffixPos = filenameWithoutSuffix.lastIndexOf(rx);
+
+ if (reformattedSuffixPos != -1)
+ filenameWithoutSuffix.truncate(reformattedSuffixPos);
+
+ // Add the right "copy" suffix.
+ int append = 1;
+ while (QFile::exists(destination)) {
+ destination = QString("%1 (%2).%3").arg(
+ dir + filenameWithoutSuffix,
+ reformattedSuffix.arg(QString::number(append)),
+ suffix);
+ append++;
+ }
+ }
+
+ return destination;
+}
+
+// Return the path of the file, if found in the storageLocation paths,
+// otherwise return an empty string.
+// Used for prevent importing of a second copy of a file through ContentHub.
+QString DocviewerUtils::checkIfFileAlreadyImported(const QString &filePath, const QStringList &storageLocationList)
+{
+ QFileInfo fi(filePath);
+ QStringList files;
+
+ // Get the list of all the files in the watched folders
+ Q_FOREACH(const QString &storageLocation, storageLocationList) {
+ QDirIterator dir(storageLocation, QDir::Files | QDir::NoDotAndDotDot | QDir::Readable,
+ QDirIterator::Subdirectories);
+
+ while (dir.hasNext())
+ {
+ dir.next();
+ files.append(dir.filePath());
+ }
+ }
+
+ // Check if there's a file with the same name in the list
+ Q_FOREACH(const QString &file, files) {
+ if (file.endsWith(fi.fileName())) {
+ // Seems there could be already the same file in the watched
+ // folders. Check also size and lastModified date.
+ QFileInfo fileToCheck(file);
+
+ if (fi.size() == fileToCheck.size() &&
+ fi.lastModified() == fileToCheck.lastModified())
+ return file;
+ }
+ }
+
+ return QString();
+}
=== added file 'src/plugin/file-qml-plugin/docviewerutils.h'
--- src/plugin/file-qml-plugin/docviewerutils.h 1970-01-01 00:00:00 +0000
+++ src/plugin/file-qml-plugin/docviewerutils.h 2015-10-08 20:57:10 +0000
@@ -0,0 +1,39 @@
+/*
+ Copyright (C) 2015 Canonical, Ltd.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License 3 as published by
+ the Free Software Foundation.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see http://www.gnu.org/licenses/.
+*/
+
+#ifndef DOCVIEWERUTILS_H
+#define DOCVIEWERUTILS_H
+
+#include <QObject>
+#include <QThread>
+
+class DocviewerUtils : public QObject
+{
+ Q_OBJECT
+
+public:
+ Q_INVOKABLE static bool exists(const QString &path);
+ Q_INVOKABLE static bool copy(const QString &source, const QString &destination);
+
+ Q_INVOKABLE static bool isFileSupported(const QString &path);
+ Q_INVOKABLE static QString getXdgDocumentsLocation();
+
+ Q_INVOKABLE static QString buildDestinationPath(const QString &destinationDir, const QString &sourcePath);
+
+ Q_INVOKABLE static QString checkIfFileAlreadyImported(const QString &filePath, const QStringList &storageLocationList);
+};
+
+#endif // DOCVIEWERUTILS_H
=== removed file 'src/plugin/file-qml-plugin/qstorageinfo.cpp'
--- src/plugin/file-qml-plugin/qstorageinfo.cpp 2015-05-13 14:22:36 +0000
+++ src/plugin/file-qml-plugin/qstorageinfo.cpp 1970-01-01 00:00:00 +0000
@@ -1,378 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2014 Ivan Komissarov <ABBAPOH@xxxxxxxxx>
-** Contact: http://www.qt-project.org/legal
-**
-** This file is part of the QtCore module of the Qt Toolkit.
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by
-** the Free Software Foundation; version 3.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU General Public License for more details.
-**
-** You should have received a copy of the GNU General Public License
-** along with this program. If not, see <http://www.gnu.org/licenses/>.
-**
-****************************************************************************/
-
-#include "qstorageinfo.h"
-#include "qstorageinfo_p.h"
-
-QT_BEGIN_NAMESPACE
-
-/*!
- \class QStorageInfo
- \inmodule QtCore
- \since 5.4
- \brief Provides information about currently mounted storage and drives.
-
- \ingroup io
- \ingroup shared
-
- Allows retrieving information about the volume's space, its mount point,
- label, and filesystem name.
-
- You can create an instance of QStorageInfo by passing the path to the
- volume's mount point as a constructor parameter, or you can set it using
- the setPath() method. The static mountedVolumes() method can be used to get the
- list of all mounted filesystems.
-
- QStorageInfo always caches the retrieved information, but you can call
- refresh() to invalidate the cache.
-
- The following example retrieves the most common information about the root
- volume of the system, and prints information about it.
-
- \snippet code/src_corelib_io_qstorageinfo.cpp 2
-*/
-
-/*!
- Constructs an empty QStorageInfo object.
-
- Objects created with the default constructor will be invalid and therefore
- not ready for use.
-
- \sa setPath(), isReady(), isValid()
-*/
-QStorageInfo::QStorageInfo()
- : d(new QStorageInfoPrivate)
-{
-}
-
-/*!
- Constructs a new QStorageInfo object that gives information about the volume
- mounted at \a path.
-
- If you pass a directory or file, the QStorageInfo object will refer to the
- volume where this directory or file is located.
- You can check if the created object is correct using the isValid() method.
-
- The following example shows how to get the volume on which the application is
- located. It is recommended to always check that the volume is ready and valid.
-
- \snippet code/src_corelib_io_qstorageinfo.cpp 0
-
- \sa setPath()
-*/
-QStorageInfo::QStorageInfo(const QString &path)
- : d(new QStorageInfoPrivate)
-{
- setPath(path);
-}
-
-/*!
- Constructs a new QStorageInfo object that gives information about the volume
- containing the \a dir folder.
-*/
-QStorageInfo::QStorageInfo(const QDir &dir)
- : d(new QStorageInfoPrivate)
-{
- setPath(dir.absolutePath());
-}
-
-/*!
- Constructs a new QStorageInfo object that is a copy of the \a other QStorageInfo object.
-*/
-QStorageInfo::QStorageInfo(const QStorageInfo &other)
- : d(other.d)
-{
-}
-
-/*!
- Destroys the QStorageInfo object and frees its resources.
-*/
-QStorageInfo::~QStorageInfo()
-{
-}
-
-/*!
- Makes a copy of the QStorageInfo object \a other and assigns it to this QStorageInfo object.
-*/
-QStorageInfo &QStorageInfo::operator=(const QStorageInfo &other)
-{
- d = other.d;
- return *this;
-}
-
-/*!
- \fn QStorageInfo &QStorageInfo::operator=(QStorageInfo &&other)
-
- Assigns \a other to this QStorageInfo instance.
-*/
-
-/*!
- \fn void QStorageInfo::swap(QStorageInfo &other)
-
- Swaps this volume info with \a other. This function is very fast and
- never fails.
-*/
-
-/*!
- Sets this QStorageInfo object to the filesystem mounted where \a path is located.
-
- \a path can either be a root path of the filesystem, a directory, or a file
- within that filesystem.
-
- \sa rootPath()
-*/
-void QStorageInfo::setPath(const QString &path)
-{
- if (d->rootPath == path)
- return;
- d.detach();
- d->rootPath = path;
- d->doStat();
-}
-
-/*!
- Returns the mount point of the filesystem this QStorageInfo object
- represents.
-
- On Windows, it returns the volume letter in case the volume is not mounted to
- a directory.
-
- Note that the value returned by rootPath() is the real mount point of a
- volume, and may not be equal to the value passed to the constructor or setPath()
- method. For example, if you have only the root volume in the system, and
- pass '/directory' to setPath(), then this method will return '/'.
-
- \sa setPath(), device()
-*/
-QString QStorageInfo::rootPath() const
-{
- return d->rootPath;
-}
-
-/*!
- Returns the size (in bytes) available for the current user. It returns
- the total size available if the user is the root user or a system administrator.
-
- This size can be less than or equal to the free size returned by
- bytesFree() function.
-
- \sa bytesTotal(), bytesFree()
-*/
-qint64 QStorageInfo::bytesAvailable() const
-{
- return d->bytesAvailable;
-}
-
-/*!
- Returns the number of free bytes in a volume. Note that if there are
- quotas on the filesystem, this value can be larger than the value
- returned by bytesAvailable().
-
- \sa bytesTotal(), bytesAvailable()
-*/
-qint64 QStorageInfo::bytesFree() const
-{
- return d->bytesFree;
-}
-
-/*!
- Returns the total volume size in bytes.
-
- \sa bytesFree(), bytesAvailable()
-*/
-qint64 QStorageInfo::bytesTotal() const
-{
- return d->bytesTotal;
-}
-
-/*!
- Returns the type name of the filesystem.
-
- This is a platform-dependent function, and filesystem names can vary
- between different operating systems. For example, on Windows filesystems
- they can be named \c NTFS, and on Linux they can be named \c ntfs-3g or \c fuseblk.
-
- \sa name()
-*/
-QByteArray QStorageInfo::fileSystemType() const
-{
- return d->fileSystemType;
-}
-
-/*!
- Returns the device for this volume.
-
- For example, on Unix filesystems (including OS X), this returns the
- devpath like \c /dev/sda0 for local storages. On Windows, it returns the UNC
- path starting with \c \\\\?\\ for local storages (in other words, the volume GUID).
-
- \sa rootPath()
-*/
-QByteArray QStorageInfo::device() const
-{
- return d->device;
-}
-
-/*!
- Returns the human-readable name of a filesystem, usually called \c label.
-
- Not all filesystems support this feature. In this case, the value returned by
- this method could be empty. An empty string is returned if the file system
- does not support labels, or if no label is set.
-
- On Linux, retrieving the volume's label requires \c udev to be present in the
- system.
-
- \sa fileSystemType()
-*/
-QString QStorageInfo::name() const
-{
- return d->name;
-}
-
-/*!
- Returns the volume's name, if available, or the root path if not.
-*/
-QString QStorageInfo::displayName() const
-{
- if (!d->name.isEmpty())
- return d->name;
- return d->rootPath;
-}
-
-/*!
- \fn bool QStorageInfo::isRoot() const
-
- Returns true if this QStorageInfo represents the system root volume; false
- otherwise.
-
- On Unix filesystems, the root volume is a volume mounted on \c /. On Windows,
- the root volume is the volume where the OS is installed.
-
- \sa root()
-*/
-
-/*!
- Returns true if the current filesystem is protected from writing; false
- otherwise.
-*/
-bool QStorageInfo::isReadOnly() const
-{
- return d->readOnly;
-}
-
-/*!
- Returns true if the current filesystem is ready to work; false otherwise. For
- example, false is returned if the CD volume is not inserted.
-
- Note that fileSystemType(), name(), bytesTotal(), bytesFree(), and
- bytesAvailable() will return invalid data until the volume is ready.
-
- \sa isValid()
-*/
-bool QStorageInfo::isReady() const
-{
- return d->ready;
-}
-
-/*!
- Returns true if the QStorageInfo specified by rootPath exists and is mounted
- correctly.
-
- \sa isReady()
-*/
-bool QStorageInfo::isValid() const
-{
- return d->valid;
-}
-
-/*!
- Resets QStorageInfo's internal cache.
-
- QStorageInfo caches information about storage to speed up performance.
- QStorageInfo retrieves information during object construction and/or when calling
- the setPath() method. You have to manually reset the cache by calling this
- function to update storage information.
-*/
-void QStorageInfo::refresh()
-{
- d.detach();
- d->doStat();
-}
-
-/*!
- Returns the list of QStorageInfo objects that corresponds to the list of currently
- mounted filesystems.
-
- On Windows, this returns the drives visible in the \gui{My Computer} folder. On Unix
- operating systems, it returns the list of all mounted filesystems (except for
- pseudo filesystems).
-
- Returns all currently mounted filesystems by default.
-
- The example shows how to retrieve all available filesystems, skipping read-only ones.
-
- \snippet code/src_corelib_io_qstorageinfo.cpp 1
-
- \sa root()
-*/
-QList<QStorageInfo> QStorageInfo::mountedVolumes()
-{
- return QStorageInfoPrivate::mountedVolumes();
-}
-
-Q_GLOBAL_STATIC_WITH_ARGS(QStorageInfo, getRoot, (QStorageInfoPrivate::root()))
-
-/*!
- Returns a QStorageInfo object that represents the system root volume.
-
- On Unix systems this call returns the root ('/') volume; in Windows the volume where
- the operating system is installed.
-
- \sa isRoot()
-*/
-QStorageInfo QStorageInfo::root()
-{
- return *getRoot();
-}
-
-/*!
- \fn inline bool operator==(const QStorageInfo &first, const QStorageInfo &second)
-
- \relates QStorageInfo
-
- Returns true if the \a first QStorageInfo object refers to the same drive or volume
- as the \a second; otherwise it returns false.
-
- Note that the result of comparing two invalid QStorageInfo objects is always
- positive.
-*/
-
-/*!
- \fn inline bool operator!=(const QStorageInfo &first, const QStorageInfo &second)
-
- \relates QStorageInfo
-
- Returns true if the \a first QStorageInfo object refers to a different drive or
- volume than the \a second; otherwise returns false.
-*/
-
-QT_END_NAMESPACE
=== removed file 'src/plugin/file-qml-plugin/qstorageinfo.h'
--- src/plugin/file-qml-plugin/qstorageinfo.h 2015-05-13 14:22:36 +0000
+++ src/plugin/file-qml-plugin/qstorageinfo.h 1970-01-01 00:00:00 +0000
@@ -1,102 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2014 Ivan Komissarov <ABBAPOH@xxxxxxxxx>
-** Contact: http://www.qt-project.org/legal
-**
-** This file is part of the QtCore module of the Qt Toolkit.
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by
-** the Free Software Foundation; version 3.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU General Public License for more details.
-**
-** You should have received a copy of the GNU General Public License
-** along with this program. If not, see <http://www.gnu.org/licenses/>.
-**
-****************************************************************************/
-
-#ifndef QSTORAGEINFO_H
-#define QSTORAGEINFO_H
-
-#include <QtCore/qbytearray.h>
-#include <QtCore/qdir.h>
-#include <QtCore/qlist.h>
-#include <QtCore/qmetatype.h>
-#include <QtCore/qstring.h>
-#include <QtCore/qshareddata.h>
-
-QT_BEGIN_NAMESPACE
-
-class QStorageInfoPrivate;
-class Q_CORE_EXPORT QStorageInfo
-{
-public:
- QStorageInfo();
- explicit QStorageInfo(const QString &path);
- explicit QStorageInfo(const QDir &dir);
- QStorageInfo(const QStorageInfo &other);
- ~QStorageInfo();
-
- QStorageInfo &operator=(const QStorageInfo &other);
-#ifdef Q_COMPILER_RVALUE_REFS
- inline QStorageInfo &operator=(QStorageInfo &&other)
- { qSwap(d, other.d); return *this; }
-#endif
-
- inline void swap(QStorageInfo &other)
- { qSwap(d, other.d); }
-
- void setPath(const QString &path);
-
- QString rootPath() const;
- QByteArray device() const;
- QByteArray fileSystemType() const;
- QString name() const;
- QString displayName() const;
-
- qint64 bytesTotal() const;
- qint64 bytesFree() const;
- qint64 bytesAvailable() const;
-
- inline bool isRoot() const;
- bool isReadOnly() const;
- bool isReady() const;
- bool isValid() const;
-
- void refresh();
-
- static QList<QStorageInfo> mountedVolumes();
- static QStorageInfo root();
-
-private:
- friend class QStorageInfoPrivate;
- friend bool operator==(const QStorageInfo &first, const QStorageInfo &second);
- QExplicitlySharedDataPointer<QStorageInfoPrivate> d;
-};
-
-inline bool operator==(const QStorageInfo &first, const QStorageInfo &second)
-{
- if (first.d == second.d)
- return true;
- return first.device() == second.device();
-}
-
-inline bool operator!=(const QStorageInfo &first, const QStorageInfo &second)
-{
- return !(first == second);
-}
-
-inline bool QStorageInfo::isRoot() const
-{ return *this == QStorageInfo::root(); }
-
-Q_DECLARE_SHARED(QStorageInfo)
-
-QT_END_NAMESPACE
-
-Q_DECLARE_METATYPE(QStorageInfo)
-
-#endif // QSTORAGEINFO_H
=== removed file 'src/plugin/file-qml-plugin/qstorageinfo_p.h'
--- src/plugin/file-qml-plugin/qstorageinfo_p.h 2015-05-13 14:22:36 +0000
+++ src/plugin/file-qml-plugin/qstorageinfo_p.h 1970-01-01 00:00:00 +0000
@@ -1,84 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2014 Ivan Komissarov <ABBAPOH@xxxxxxxxx>
-** Contact: http://www.qt-project.org/legal
-**
-**
-** This file is part of the QtCore module of the Qt Toolkit.
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by
-** the Free Software Foundation; version 3.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU General Public License for more details.
-**
-** You should have received a copy of the GNU General Public License
-** along with this program. If not, see <http://www.gnu.org/licenses/>.
-**
-****************************************************************************/
-
-#ifndef QSTORAGEINFO_P_H
-#define QSTORAGEINFO_P_H
-
-//
-// W A R N I N G
-// -------------
-//
-// This file is not part of the Qt API. It exists purely as an
-// implementation detail. This header file may change from version to
-// version without notice, or even be removed.
-//
-// We mean it.
-//
-
-#include "qstorageinfo.h"
-
-QT_BEGIN_NAMESPACE
-
-class QStorageInfoPrivate : public QSharedData
-{
-public:
- inline QStorageInfoPrivate() : QSharedData(),
- bytesTotal(0), bytesFree(0), bytesAvailable(0),
- readOnly(false), ready(false), valid(false)
- {}
-
- void initRootPath();
- void doStat();
-
- static QList<QStorageInfo> mountedVolumes();
- static QStorageInfo root();
-
-protected:
-#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE) && !defined(Q_OS_WINRT)
- void retreiveVolumeInfo();
- void retreiveDiskFreeSpace();
-#elif defined(Q_OS_MAC)
- void retrievePosixInfo();
- void retrieveUrlProperties(bool initRootPath = false);
- void retrieveLabel();
-#elif defined(Q_OS_UNIX)
- void retreiveVolumeInfo();
-#endif
-
-public:
- QString rootPath;
- QByteArray device;
- QByteArray fileSystemType;
- QString name;
-
- qint64 bytesTotal;
- qint64 bytesFree;
- qint64 bytesAvailable;
-
- bool readOnly;
- bool ready;
- bool valid;
-};
-
-QT_END_NAMESPACE
-
-#endif // QSTORAGEINFO_P_H
=== removed file 'src/plugin/file-qml-plugin/qstorageinfo_unix.cpp'
--- src/plugin/file-qml-plugin/qstorageinfo_unix.cpp 2015-05-13 14:22:36 +0000
+++ src/plugin/file-qml-plugin/qstorageinfo_unix.cpp 1970-01-01 00:00:00 +0000
@@ -1,442 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2014 Ivan Komissarov <ABBAPOH@xxxxxxxxx>
-** Contact: http://www.qt-project.org/legal
-**
-** This file is part of the QtCore module of the Qt Toolkit.
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by
-** the Free Software Foundation; version 3.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU General Public License for more details.
-**
-** You should have received a copy of the GNU General Public License
-** along with this program. If not, see <http://www.gnu.org/licenses/>.
-**
-****************************************************************************/
-
-#include "qstorageinfo_p.h"
-
-#include <QtCore/qdiriterator.h>
-#include <QtCore/qfileinfo.h>
-#include <QtCore/qtextstream.h>
-
-// Copy this definition directly instead of importing the whole file which
-// would pull in more dependencies we don't need.
-//#include <QtCore/private/qcore_unix_p.h>
-#define EINTR_LOOP(var, cmd) \
- do { \
- var = cmd; \
- } while (var == -1 && errno == EINTR)
-
-#include <errno.h>
-#include <sys/stat.h>
-
-#if defined(Q_OS_BSD4)
-# include <sys/mount.h>
-# include <sys/statvfs.h>
-#elif defined(Q_OS_ANDROID)
-# include <sys/mount.h>
-# include <sys/vfs.h>
-# include <mntent.h>
-#elif defined(Q_OS_LINUX)
-# include <mntent.h>
-# include <sys/statvfs.h>
-#elif defined(Q_OS_SOLARIS)
-# include <sys/mnttab.h>
-#else
-# include <sys/statvfs.h>
-#endif
-
-#if defined(Q_OS_BSD4)
-# define QT_STATFSBUF struct statvfs
-# define QT_STATFS ::statvfs
-#elif defined(Q_OS_ANDROID)
-# define QT_STATFS ::statfs
-# define QT_STATFSBUF struct statfs
-# if !defined(ST_RDONLY)
-# define ST_RDONLY 1 // hack for missing define on Android
-# endif
-#else
-# if defined(QT_LARGEFILE_SUPPORT)
-# define QT_STATFSBUF struct statvfs64
-# define QT_STATFS ::statvfs64
-# else
-# define QT_STATFSBUF struct statvfs
-# define QT_STATFS ::statvfs
-# endif // QT_LARGEFILE_SUPPORT
-#endif // Q_OS_BSD4
-
-QT_BEGIN_NAMESPACE
-
-static bool isPseudoFs(const QString &mountDir, const QByteArray &type)
-{
- if (mountDir.startsWith(QLatin1String("/dev"))
- || mountDir.startsWith(QLatin1String("/proc"))
- || mountDir.startsWith(QLatin1String("/sys"))
- || mountDir.startsWith(QLatin1String("/var/run"))
- || mountDir.startsWith(QLatin1String("/var/lock"))) {
- return true;
- }
- if (type == "tmpfs")
- return true;
-#if defined(Q_OS_LINUX)
- if (type == "rootfs" || type == "rpc_pipefs")
- return true;
-#endif
-
- return false;
-}
-
-class QStorageIterator
-{
-public:
- QStorageIterator();
- ~QStorageIterator();
-
- inline bool isValid() const;
- inline bool next();
- inline QString rootPath() const;
- inline QByteArray fileSystemType() const;
- inline QByteArray device() const;
-private:
-#if defined(Q_OS_BSD4)
- struct statfs *stat_buf;
- int entryCount;
- int currentIndex;
-#elif defined(Q_OS_SOLARIS)
- FILE *fp;
- mnttab mnt;
-#elif defined(Q_OS_ANDROID)
- QFile file;
- QByteArray m_rootPath;
- QByteArray m_fileSystemType;
- QByteArray m_device;
-#elif defined(Q_OS_LINUX)
- FILE *fp;
- mntent mnt;
- QByteArray buffer;
-#endif
-};
-
-#if defined(Q_OS_BSD4)
-
-inline QStorageIterator::QStorageIterator()
- : entryCount(::getmntinfo(&stat_buf, 0)),
- currentIndex(-1)
-{
-}
-
-inline QStorageIterator::~QStorageIterator()
-{
-}
-
-inline bool QStorageIterator::isValid() const
-{
- return entryCount != -1;
-}
-
-inline bool QStorageIterator::next()
-{
- return ++currentIndex < entryCount;
-}
-
-inline QString QStorageIterator::rootPath() const
-{
- return QFile::decodeName(stat_buf[currentIndex].f_mntonname);
-}
-
-inline QByteArray QStorageIterator::fileSystemType() const
-{
- return QByteArray(stat_buf[currentIndex].f_fstypename);
-}
-
-inline QByteArray QStorageIterator::device() const
-{
- return QByteArray(stat_buf[currentIndex].f_mntfromname);
-}
-
-#elif defined(Q_OS_SOLARIS)
-
-static const char pathMounted[] = "/etc/mnttab";
-
-inline QStorageIterator::QStorageIterator()
-{
- const int fd = qt_safe_open(pathMounted, O_RDONLY);
- fp = ::fdopen(fd, "r");
-}
-
-inline QStorageIterator::~QStorageIterator()
-{
- if (fp)
- ::fclose(fp);
-}
-
-inline bool QStorageIterator::isValid() const
-{
- return fp != Q_NULLPTR;
-}
-
-inline bool QStorageIterator::next()
-{
- return ::getmntent(fp, &mnt) == Q_NULLPTR;
-}
-
-inline QString QStorageIterator::rootPath() const
-{
- return QFile::decodeName(mnt->mnt_mountp);
-}
-
-inline QByteArray QStorageIterator::fileSystemType() const
-{
- return QByteArray(mnt->mnt_fstype);
-}
-
-inline QByteArray QStorageIterator::device() const
-{
- return QByteArray(mnt->mnt_mntopts);
-}
-
-#elif defined(Q_OS_ANDROID)
-
-static const char pathMounted[] = "/proc/mounts";
-
-inline QStorageIterator::QStorageIterator()
-{
- file.setFileName(pathMounted);
- file.open(QIODevice::ReadOnly | QIODevice::Text);
-}
-
-inline QStorageIterator::~QStorageIterator()
-{
-}
-
-inline bool QStorageIterator::isValid() const
-{
- return file.isOpen();
-}
-
-inline bool QStorageIterator::next()
-{
- QList<QByteArray> data;
- do {
- const QByteArray line = file.readLine();
- data = line.split(' ');
- } while (data.count() < 3 && !file.atEnd());
-
- if (file.atEnd())
- return false;
- m_device = data.at(0);
- m_rootPath = data.at(1);
- m_fileSystemType = data.at(2);
-
- return true;
-}
-
-inline QString QStorageIterator::rootPath() const
-{
- return QFile::decodeName(m_rootPath);
-}
-
-inline QByteArray QStorageIterator::fileSystemType() const
-{
- return m_fileSystemType;
-}
-
-inline QByteArray QStorageIterator::device() const
-{
- return m_device;
-}
-
-#elif defined(Q_OS_LINUX)
-
-static const char pathMounted[] = "/etc/mtab";
-static const int bufferSize = 3*PATH_MAX; // 2 paths (mount point+device) and metainfo
-
-inline QStorageIterator::QStorageIterator() :
- buffer(QByteArray(bufferSize, 0))
-{
- fp = ::setmntent(pathMounted, "r");
-}
-
-inline QStorageIterator::~QStorageIterator()
-{
- if (fp)
- ::endmntent(fp);
-}
-
-inline bool QStorageIterator::isValid() const
-{
- return fp != Q_NULLPTR;
-}
-
-inline bool QStorageIterator::next()
-{
- return ::getmntent_r(fp, &mnt, buffer.data(), buffer.size()) != Q_NULLPTR;
-}
-
-inline QString QStorageIterator::rootPath() const
-{
- return QFile::decodeName(mnt.mnt_dir);
-}
-
-inline QByteArray QStorageIterator::fileSystemType() const
-{
- return QByteArray(mnt.mnt_type);
-}
-
-inline QByteArray QStorageIterator::device() const
-{
- return QByteArray(mnt.mnt_fsname);
-}
-
-#else
-
-inline QStorageIterator::QStorageIterator()
-{
-}
-
-inline QStorageIterator::~QStorageIterator()
-{
-}
-
-inline bool QStorageIterator::isValid() const
-{
- return false;
-}
-
-inline bool QStorageIterator::next()
-{
- return false;
-}
-
-inline QString QStorageIterator::rootPath() const
-{
- return QString();
-}
-
-inline QByteArray QStorageIterator::fileSystemType() const
-{
- return QByteArray();
-}
-
-inline QByteArray QStorageIterator::device() const
-{
- return QByteArray();
-}
-
-#endif
-
-void QStorageInfoPrivate::initRootPath()
-{
- rootPath = QFileInfo(rootPath).canonicalFilePath();
-
- if (rootPath.isEmpty())
- return;
-
- QStorageIterator it;
- if (!it.isValid()) {
- rootPath = QStringLiteral("/");
- return;
- }
-
- int maxLength = 0;
- const QString oldRootPath = rootPath;
- rootPath.clear();
-
- while (it.next()) {
- const QString mountDir = it.rootPath();
- const QByteArray fsName = it.fileSystemType();
- if (isPseudoFs(mountDir, fsName))
- continue;
- // we try to find most suitable entry
- if (oldRootPath.startsWith(mountDir) && maxLength < mountDir.length()) {
- maxLength = mountDir.length();
- rootPath = mountDir;
- device = it.device();
- fileSystemType = fsName;
- }
- }
-}
-
-static inline QString retrieveLabel(const QByteArray &device)
-{
-#ifdef Q_OS_LINUX
- static const char pathDiskByLabel[] = "/dev/disk/by-label";
-
- QDirIterator it(QLatin1String(pathDiskByLabel), QDir::NoDotAndDotDot);
- while (it.hasNext()) {
- it.next();
- QFileInfo fileInfo(it.fileInfo());
- if (fileInfo.isSymLink() && fileInfo.symLinkTarget().toLocal8Bit() == device)
- return fileInfo.fileName();
- }
-#else
- Q_UNUSED(device);
-#endif
-
- return QString();
-}
-
-void QStorageInfoPrivate::doStat()
-{
- initRootPath();
- if (rootPath.isEmpty())
- return;
-
- retreiveVolumeInfo();
- name = retrieveLabel(device);
-}
-
-void QStorageInfoPrivate::retreiveVolumeInfo()
-{
- QT_STATFSBUF statfs_buf;
- int result;
- EINTR_LOOP(result, QT_STATFS(QFile::encodeName(rootPath).constData(), &statfs_buf));
- if (result == 0) {
- valid = true;
- ready = true;
-
- bytesTotal = statfs_buf.f_blocks * statfs_buf.f_bsize;
- bytesFree = statfs_buf.f_bfree * statfs_buf.f_bsize;
- bytesAvailable = statfs_buf.f_bavail * statfs_buf.f_bsize;
-#if defined(Q_OS_ANDROID)
-#if defined(_STATFS_F_FLAGS)
- readOnly = (statfs_buf.f_flags & ST_RDONLY) != 0;
-#endif
-#else
- readOnly = (statfs_buf.f_flag & ST_RDONLY) != 0;
-#endif
- }
-}
-
-QList<QStorageInfo> QStorageInfoPrivate::mountedVolumes()
-{
- QStorageIterator it;
- if (!it.isValid())
- return QList<QStorageInfo>() << root();
-
- QList<QStorageInfo> volumes;
-
- while (it.next()) {
- const QString mountDir = it.rootPath();
- const QByteArray fsName = it.fileSystemType();
- if (isPseudoFs(mountDir, fsName))
- continue;
-
- volumes.append(QStorageInfo(mountDir));
- }
-
- return volumes;
-}
-
-QStorageInfo QStorageInfoPrivate::root()
-{
- return QStorageInfo(QStringLiteral("/"));
-}
-
-QT_END_NAMESPACE
=== added directory 'src/plugin/libreofficetoolkit-qml-plugin'
=== added file 'src/plugin/libreofficetoolkit-qml-plugin/CMakeLists.txt'
--- src/plugin/libreofficetoolkit-qml-plugin/CMakeLists.txt 1970-01-01 00:00:00 +0000
+++ src/plugin/libreofficetoolkit-qml-plugin/CMakeLists.txt 2015-10-08 20:57:10 +0000
@@ -0,0 +1,53 @@
+set(PLUGIN_DIR DocumentViewer/LibreOffice)
+
+file(GLOB_RECURSE QML_SRCS
+ qml/*.qml
+ qml/*.js
+)
+
+include_directories(
+ ${CMAKE_CURRENT_SOURCE_DIR}
+ ${CMAKE_CURRENT_BINARY_DIR}
+ ${CMAKE_CURRENT_SOURCE_DIR}/LibreOfficeKit/
+)
+
+#add the sources to compile
+set(libreofficetoolkitqmlplugin_SRCS
+ plugin.cpp
+ lodocument.cpp
+ loview.cpp
+ sgtileitem.cpp
+ lopartsimageprovider.cpp
+ lopartsmodel.cpp
+ renderengine.cpp
+ ${QML_SRCS}
+)
+
+#add the headers to compile
+set(libreofficetoolkitqmlplugin_HDRS
+ twips.h
+ config.h
+)
+
+add_library(libreofficetoolkitqmlplugin MODULE
+ ${libreofficetoolkitqmlplugin_SRCS}
+ ${libreofficetoolkitqmlplugin_HDRS}
+)
+
+#target_link_libraries(libreofficetoolkitqmlplugin dl)
+qt5_use_modules(libreofficetoolkitqmlplugin Gui Qml Quick)
+
+# Copy the plugin, the qmldir file and other assets to the build dir for running in QtCreator
+if(NOT "${CMAKE_CURRENT_SOURCE_DIR}" STREQUAL "${CMAKE_CURRENT_BINARY_DIR}")
+add_custom_command(TARGET libreofficetoolkitqmlplugin POST_BUILD
+ COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/../${PLUGIN_DIR}
+ COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/qmldir ${CMAKE_CURRENT_BINARY_DIR}/../${PLUGIN_DIR}
+ COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:libreofficetoolkitqmlplugin> ${CMAKE_CURRENT_BINARY_DIR}/../${PLUGIN_DIR}
+ COMMAND ${CMAKE_COMMAND} -E copy ${QML_SRCS} ${CMAKE_CURRENT_BINARY_DIR}/../${PLUGIN_DIR}
+)
+endif(NOT "${CMAKE_CURRENT_SOURCE_DIR}" STREQUAL "${CMAKE_CURRENT_BINARY_DIR}")
+
+# Install plugin file
+install(TARGETS libreofficetoolkitqmlplugin DESTINATION ${QT_IMPORTS_DIR}/${PLUGIN_DIR})
+install(FILES qmldir DESTINATION ${QT_IMPORTS_DIR}/${PLUGIN_DIR})
+install(FILES ${QML_SRCS} DESTINATION ${QT_IMPORTS_DIR}/${PLUGIN_DIR})
=== added directory 'src/plugin/libreofficetoolkit-qml-plugin/LibreOfficeKit'
=== added file 'src/plugin/libreofficetoolkit-qml-plugin/LibreOfficeKit/LibreOfficeKit.h'
--- src/plugin/libreofficetoolkit-qml-plugin/LibreOfficeKit/LibreOfficeKit.h 1970-01-01 00:00:00 +0000
+++ src/plugin/libreofficetoolkit-qml-plugin/LibreOfficeKit/LibreOfficeKit.h 2015-10-08 20:57:10 +0000
@@ -0,0 +1,171 @@
+/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+#ifndef INCLUDED_LIBREOFFICEKIT_LIBREOFFICEKIT_H
+#define INCLUDED_LIBREOFFICEKIT_LIBREOFFICEKIT_H
+
+#include <stddef.h>
+
+#include <LibreOfficeKit/LibreOfficeKitTypes.h>
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+typedef struct _LibreOfficeKit LibreOfficeKit;
+typedef struct _LibreOfficeKitClass LibreOfficeKitClass;
+
+typedef struct _LibreOfficeKitDocument LibreOfficeKitDocument;
+typedef struct _LibreOfficeKitDocumentClass LibreOfficeKitDocumentClass;
+
+// Do we have an extended member in this struct ?
+#define LIBREOFFICEKIT_HAS_MEMBER(strct,member,nSize) \
+ (offsetof(strct, member) < (nSize))
+
+#define LIBREOFFICEKIT_HAS(pKit,member) LIBREOFFICEKIT_HAS_MEMBER(LibreOfficeKitClass,member,(pKit)->pClass->nSize)
+
+struct _LibreOfficeKit
+{
+ LibreOfficeKitClass* pClass;
+};
+
+struct _LibreOfficeKitClass
+{
+ size_t nSize;
+
+ void (*destroy) (LibreOfficeKit* pThis);
+
+ LibreOfficeKitDocument* (*documentLoad) (LibreOfficeKit* pThis,
+ const char* pURL);
+
+ char* (*getError) (LibreOfficeKit* pThis);
+
+ LibreOfficeKitDocument* (*documentLoadWithOptions) (LibreOfficeKit* pThis,
+ const char* pURL,
+ const char* pOptions);
+#ifdef LOK_USE_UNSTABLE_API
+ void (*registerCallback) (LibreOfficeKit* pThis,
+ LibreOfficeKitCallback pCallback,
+ void* pData);
+#endif
+};
+
+#define LIBREOFFICEKIT_DOCUMENT_HAS(pDoc,member) LIBREOFFICEKIT_HAS_MEMBER(LibreOfficeKitDocumentClass,member,(pDoc)->pClass->nSize)
+
+struct _LibreOfficeKitDocument
+{
+ LibreOfficeKitDocumentClass* pClass;
+};
+
+struct _LibreOfficeKitDocumentClass
+{
+ size_t nSize;
+
+ void (*destroy) (LibreOfficeKitDocument* pThis);
+
+ int (*saveAs) (LibreOfficeKitDocument* pThis,
+ const char* pUrl,
+ const char* pFormat,
+ const char* pFilterOptions);
+
+#ifdef LOK_USE_UNSTABLE_API
+ /// @see lok::Document::getDocumentType().
+ int (*getDocumentType) (LibreOfficeKitDocument* pThis);
+
+ /// @see lok::Document::getParts().
+ int (*getParts) (LibreOfficeKitDocument* pThis);
+
+ /// @see lok::Document::getPart().
+ int (*getPart) (LibreOfficeKitDocument* pThis);
+
+ /// @see lok::Document::setPart().
+ void (*setPart) (LibreOfficeKitDocument* pThis,
+ int nPart);
+
+ /// @see lok::Document::getPartName().
+ char* (*getPartName) (LibreOfficeKitDocument* pThis,
+ int nPart);
+
+ /** Sets mode of the current part.
+ *
+ * @param nMode - element from the LibreOfficeKitPartMode enum.
+ */
+ void (*setPartMode) (LibreOfficeKitDocument* pThis,
+ int nMode);
+
+ /// @see lok::Document::paintTile().
+ void (*paintTile) (LibreOfficeKitDocument* pThis,
+ unsigned char* pBuffer,
+ const int nCanvasWidth,
+ const int nCanvasHeight,
+ const int nTilePosX,
+ const int nTilePosY,
+ const int nTileWidth,
+ const int nTileHeight);
+
+ /// @see lok::Document::getDocumentSize().
+ void (*getDocumentSize) (LibreOfficeKitDocument* pThis,
+ long* pWidth,
+ long* pHeight);
+
+ /// @see lok::Document::initializeForRendering().
+ void (*initializeForRendering) (LibreOfficeKitDocument* pThis);
+
+ void (*registerCallback) (LibreOfficeKitDocument* pThis,
+ LibreOfficeKitCallback pCallback,
+ void* pData);
+
+ /// @see lok::Document::postKeyEvent
+ void (*postKeyEvent) (LibreOfficeKitDocument* pThis,
+ int nType,
+ int nCharCode,
+ int nKeyCode);
+
+ /// @see lok::Document::postMouseEvent
+ void (*postMouseEvent) (LibreOfficeKitDocument* pThis,
+ int nType,
+ int nX,
+ int nY,
+ int nCount);
+
+ /// @see lok::Document::postUnoCommand
+ void (*postUnoCommand) (LibreOfficeKitDocument* pThis,
+ const char* pCommand,
+ const char* pArguments);
+
+ /// @see lok::Document::setTextSelection
+ void (*setTextSelection) (LibreOfficeKitDocument* pThis,
+ int nType,
+ int nX,
+ int nY);
+
+ /// @see lok::Document::getTextSelection
+ char* (*getTextSelection) (LibreOfficeKitDocument* pThis,
+ const char* pMimeType,
+ char** pUsedMimeType);
+
+ /// @see lok::Document::setGraphicSelection
+ void (*setGraphicSelection) (LibreOfficeKitDocument* pThis,
+ int nType,
+ int nX,
+ int nY);
+
+ /// @see lok::Document::resetSelection
+ void (*resetSelection) (LibreOfficeKitDocument* pThis);
+#endif // LOK_USE_UNSTABLE_API
+};
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // INCLUDED_LIBREOFFICEKIT_LIBREOFFICEKIT_H
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
=== added file 'src/plugin/libreofficetoolkit-qml-plugin/LibreOfficeKit/LibreOfficeKit.hxx'
--- src/plugin/libreofficetoolkit-qml-plugin/LibreOfficeKit/LibreOfficeKit.hxx 1970-01-01 00:00:00 +0000
+++ src/plugin/libreofficetoolkit-qml-plugin/LibreOfficeKit/LibreOfficeKit.hxx 2015-10-08 20:57:10 +0000
@@ -0,0 +1,310 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+#ifndef INCLUDED_LIBREOFFICEKIT_LIBREOFFICEKIT_HXX
+#define INCLUDED_LIBREOFFICEKIT_LIBREOFFICEKIT_HXX
+
+#include "LibreOfficeKit.h"
+
+/*
+ * The reasons this C++ code is not as pretty as it could be are:
+ * a) provide a pure C API - that's useful for some people
+ * b) allow ABI stability - C++ vtables are not good for that.
+ * c) avoid C++ types as part of the API.
+ */
+namespace lok
+{
+
+/// The lok::Document class represents one loaded document instance.
+class Document
+{
+private:
+ LibreOfficeKitDocument* mpDoc;
+
+public:
+ /// A lok::Document is typically created by the lok::Office::documentLoad() method.
+ inline Document(LibreOfficeKitDocument* pDoc) :
+ mpDoc(pDoc)
+ {}
+
+ inline ~Document()
+ {
+ mpDoc->pClass->destroy(mpDoc);
+ }
+
+ /**
+ * Stores the document's persistent data to a URL and
+ * continues to be a representation of the old URL.
+ *
+ * @param pUrl the location where to store the document
+ * @param pFormat the format to use while exporting, when omitted, then deducted from pURL's extension
+ * @param pFilterOptions options for the export filter, e.g. SkipImages.
+ */
+ inline bool saveAs(const char* pUrl, const char* pFormat = NULL, const char* pFilterOptions = NULL)
+ {
+ return mpDoc->pClass->saveAs(mpDoc, pUrl, pFormat, pFilterOptions) != 0;
+ }
+
+ /// Gives access to the underlying C pointer.
+ inline LibreOfficeKitDocument *get() { return mpDoc; }
+
+#ifdef LOK_USE_UNSTABLE_API
+ /**
+ * Get document type.
+ *
+ * @return an element of the LibreOfficeKitDocumentType enum.
+ */
+ inline int getDocumentType()
+ {
+ return mpDoc->pClass->getDocumentType(mpDoc);
+ }
+
+ /**
+ * Get number of part that the document contains.
+ *
+ * Part refers to either indivual sheets in a Calc, or slides in Impress,
+ * and has no relevance for Writer.
+ */
+ inline int getParts()
+ {
+ return mpDoc->pClass->getParts(mpDoc);
+ }
+
+ /// Get the current part of the document.
+ inline int getPart()
+ {
+ return mpDoc->pClass->getPart(mpDoc);
+ }
+
+ /// Set the current part of the document.
+ inline void setPart(int nPart)
+ {
+ mpDoc->pClass->setPart(mpDoc, nPart);
+ }
+
+ /// Get the current part's name.
+ inline char* getPartName(int nPart)
+ {
+ return mpDoc->pClass->getPartName(mpDoc, nPart);
+ }
+
+ /**
+ * Renders a subset of the document to a pre-allocated buffer.
+ *
+ * Note that the buffer size and the tile size implicitly supports
+ * rendering at different zoom levels, as the number of rendered pixels and
+ * the rendered rectangle of the document are independent.
+ *
+ * @param pBuffer pointer to the buffer, its size is determined by nCanvasWidth and nCanvasHeight.
+ * @param nCanvasWidth number of pixels in a row of pBuffer.
+ * @param nCanvasHeight number of pixels in a column of pBuffer.
+ * @param nTilePosX logical X position of the top left corner of the rendered rectangle, in TWIPs.
+ * @param nTilePosY logical Y position of the top left corner of the rendered rectangle, in TWIPs.
+ * @param nTileWidth logical width of the rendered rectangle, in TWIPs.
+ * @param nTileHeight logical height of the rendered rectangle, in TWIPs.
+ */
+ inline void paintTile(
+ unsigned char* pBuffer,
+ const int nCanvasWidth,
+ const int nCanvasHeight,
+ const int nTilePosX,
+ const int nTilePosY,
+ const int nTileWidth,
+ const int nTileHeight)
+ {
+ return mpDoc->pClass->paintTile(mpDoc, pBuffer, nCanvasWidth, nCanvasHeight,
+ nTilePosX, nTilePosY, nTileWidth, nTileHeight);
+ }
+
+ /// Get the document sizes in TWIPs.
+ inline void getDocumentSize(long* pWidth, long* pHeight)
+ {
+ mpDoc->pClass->getDocumentSize(mpDoc, pWidth, pHeight);
+ }
+
+ /**
+ * Initialize document for rendering.
+ *
+ * Sets the rendering and document parameters to default values that are
+ * needed to render the document correctly using tiled rendering. This
+ * method has to be called right after documentLoad() in case any of the
+ * tiled rendering methods are to be used later.
+ */
+ inline void initializeForRendering()
+ {
+ mpDoc->pClass->initializeForRendering(mpDoc);
+ }
+
+ /**
+ * Registers a callback. LOK will invoke this function when it wants to
+ * inform the client about events.
+ *
+ * @param pCallback the callback to invoke
+ * @param pData the user data, will be passed to the callback on invocation
+ */
+ inline void registerCallback(LibreOfficeKitCallback pCallback, void* pData)
+ {
+ mpDoc->pClass->registerCallback(mpDoc, pCallback, pData);
+ }
+
+ /**
+ * Posts a keyboard event to the focused frame.
+ *
+ * @param nType Event type, like press or release.
+ * @param nCharCode contains the Unicode character generated by this event or 0
+ * @param nKeyCode contains the integer code representing the key of the event (non-zero for control keys)
+ */
+ inline void postKeyEvent(int nType, int nCharCode, int nKeyCode)
+ {
+ mpDoc->pClass->postKeyEvent(mpDoc, nType, nCharCode, nKeyCode);
+ }
+
+ /**
+ * Posts a mouse event to the document.
+ *
+ * @param nType Event type, like down, move or up.
+ * @param nX horizontal position in document coordinates
+ * @param nY vertical position in document coordinates
+ * @param nCount number of clicks: 1 for single click, 2 for double click
+ */
+ inline void postMouseEvent(int nType, int nX, int nY, int nCount)
+ {
+ mpDoc->pClass->postMouseEvent(mpDoc, nType, nX, nY, nCount);
+ }
+
+ /**
+ * Posts an UNO command to the document.
+ *
+ * Example argument string:
+ *
+ * {
+ * "SearchItem.SearchString":
+ * {
+ * "type": "string",
+ * "value": "foobar"
+ * },
+ * "SearchItem.Backward":
+ * {
+ * "type": "boolean",
+ * "value": "false"
+ * }
+ * }
+ *
+ * @param pCommand uno command to be posted to the document, like ".uno:Bold"
+ * @param pArguments arguments of the uno command.
+ */
+ inline void postUnoCommand(const char* pCommand, const char* pArguments = 0)
+ {
+ mpDoc->pClass->postUnoCommand(mpDoc, pCommand, pArguments);
+ }
+
+ /**
+ * Sets the start or end of a text selection.
+ *
+ * @param nType @see LibreOfficeKitSetTextSelectionType
+ * @param nX horizontal position in document coordinates
+ * @param nY vertical position in document coordinates
+ */
+ inline void setTextSelection(int nType, int nX, int nY)
+ {
+ mpDoc->pClass->setTextSelection(mpDoc, nType, nX, nY);
+ }
+
+ /**
+ * Gets the currently selected text.
+ *
+ * @param pMimeType suggests the return format, for example text/plain;charset=utf-8.
+ * @param pUsedMimeType output parameter to inform about the determined format (suggested one or plain text).
+ */
+ inline char* getTextSelection(const char* pMimeType, char** pUsedMimeType = 0)
+ {
+ return mpDoc->pClass->getTextSelection(mpDoc, pMimeType, pUsedMimeType);
+ }
+
+ /**
+ * Adjusts the graphic selection.
+ *
+ * @param nType @see LibreOfficeKitSetGraphicSelectionType
+ * @param nX horizontal position in document coordinates
+ * @param nY vertical position in document coordinates
+ */
+ inline void setGraphicSelection(int nType, int nX, int nY)
+ {
+ mpDoc->pClass->setGraphicSelection(mpDoc, nType, nX, nY);
+ }
+
+ /**
+ * Gets rid of any text or graphic selection.
+ */
+ inline void resetSelection()
+ {
+ mpDoc->pClass->resetSelection(mpDoc);
+ }
+#endif // LOK_USE_UNSTABLE_API
+};
+
+/// The lok::Office class represents one started LibreOfficeKit instance.
+class Office
+{
+private:
+ LibreOfficeKit* mpThis;
+
+public:
+ /// A lok::Office is typically created by the lok_cpp_init() function.
+ inline Office(LibreOfficeKit* pThis) :
+ mpThis(pThis)
+ {}
+
+ inline ~Office()
+ {
+ mpThis->pClass->destroy(mpThis);
+ }
+
+ /**
+ * Loads a document from an URL.
+ *
+ * @param pUrl the URL of the document to load
+ * @param pFilterOptions options for the import filter, e.g. SkipImages.
+ */
+ inline Document* documentLoad(const char* pUrl, const char* pFilterOptions = NULL)
+ {
+ LibreOfficeKitDocument* pDoc = NULL;
+
+ if (LIBREOFFICEKIT_HAS(mpThis, documentLoadWithOptions))
+ pDoc = mpThis->pClass->documentLoadWithOptions(mpThis, pUrl, pFilterOptions);
+ else
+ pDoc = mpThis->pClass->documentLoad(mpThis, pUrl);
+
+ if (pDoc == NULL)
+ return NULL;
+
+ return new Document(pDoc);
+ }
+
+ /// Returns the last error as a string, the returned pointer has to be freed by the caller.
+ inline char* getError()
+ {
+ return mpThis->pClass->getError(mpThis);
+ }
+};
+
+/// Factory method to create a lok::Office instance.
+inline Office* lok_cpp_init(const char* pInstallPath, const char* pUserProfilePath = NULL)
+{
+ LibreOfficeKit* pThis = lok_init_2(pInstallPath, pUserProfilePath);
+ if (pThis == NULL || pThis->pClass->nSize == 0)
+ return NULL;
+ return new ::lok::Office(pThis);
+}
+
+}
+
+#endif // INCLUDED_LIBREOFFICEKIT_LIBREOFFICEKIT_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
=== added file 'src/plugin/libreofficetoolkit-qml-plugin/LibreOfficeKit/LibreOfficeKitEnums.h'
--- src/plugin/libreofficetoolkit-qml-plugin/LibreOfficeKit/LibreOfficeKitEnums.h 1970-01-01 00:00:00 +0000
+++ src/plugin/libreofficetoolkit-qml-plugin/LibreOfficeKit/LibreOfficeKitEnums.h 2015-10-08 20:57:10 +0000
@@ -0,0 +1,229 @@
+/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+#ifndef INCLUDED_LIBREOFFICEKIT_LIBREOFFICEKITENUMS_H
+#define INCLUDED_LIBREOFFICEKIT_LIBREOFFICEKITENUMS_H
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+#ifdef LOK_USE_UNSTABLE_API
+typedef enum
+{
+ LOK_DOCTYPE_TEXT,
+ LOK_DOCTYPE_SPREADSHEET,
+ LOK_DOCTYPE_PRESENTATION,
+ LOK_DOCTYPE_DRAWING,
+ LOK_DOCTYPE_OTHER
+}
+LibreOfficeKitDocumentType;
+
+typedef enum
+{
+ LOK_PARTMODE_DEFAULT,
+ LOK_PARTMODE_SLIDE,
+ LOK_PARTMODE_NOTES,
+ LOK_PARTMODE_SLIDENOTES,
+ LOK_PARTMODE_EMBEDDEDOBJ
+}
+LibreOfficeKitPartMode;
+
+typedef enum
+{
+ /**
+ * Any tiles which are over the rectangle described in the payload are no
+ * longer valid.
+ *
+ * Rectangle format: "width, height, x, y", where all numbers are document
+ * coordinates, in twips. When all tiles are supposed to be dropped, the
+ * format is the "EMPTY" string.
+ */
+ LOK_CALLBACK_INVALIDATE_TILES,
+ /**
+ * The size and/or the position of the visible cursor changed.
+ *
+ * Rectangle format is the same as LOK_CALLBACK_INVALIDATE_TILES.
+ */
+ LOK_CALLBACK_INVALIDATE_VISIBLE_CURSOR,
+ /**
+ * The list of rectangles representing the current text selection changed.
+ *
+ * List format is "rectangle1[; rectangle2[; ...]]" (without quotes and
+ * brackets), where rectangleN has the same format as
+ * LOK_CALLBACK_INVALIDATE_TILES. When there is no selection, an empty
+ * string is provided.
+ */
+ LOK_CALLBACK_TEXT_SELECTION,
+ /**
+ * The position and size of the cursor rectangle at the text
+ * selection start. It is used to draw the selection handles.
+ *
+ * This callback must be called prior to LOK_CALLBACK_TEXT_SELECTION every
+ * time the selection is updated.
+ *
+ * Rectangle format is the same as LOK_CALLBACK_INVALIDATE_TILES.
+ */
+ LOK_CALLBACK_TEXT_SELECTION_START,
+ /**
+ * The position and size of the cursor rectangle at the text
+ * selection end. It is used to draw the selection handles.
+ *
+ * This callback must be called prior to LOK_CALLBACK_TEXT_SELECTION every
+ * time the selection is updated.
+ *
+ * Rectangle format is the same as LOK_CALLBACK_INVALIDATE_TILES.
+ */
+ LOK_CALLBACK_TEXT_SELECTION_END,
+ /**
+ * The blinking text cursor is now visible or not.
+ *
+ * Clients should assume that this is true initially and are expected to
+ * hide the blinking cursor at the rectangle described by
+ * LOK_CALLBACK_INVALIDATE_VISIBLE_CURSOR once it becomes false. Payload is
+ * either the "true" or the "false" string.
+ */
+ LOK_CALLBACK_CURSOR_VISIBLE,
+ /**
+ * The size and/or the position of the graphic selection changed.
+ *
+ * Rectangle format is the same as LOK_CALLBACK_INVALIDATE_TILES.
+ */
+ LOK_CALLBACK_GRAPHIC_SELECTION,
+
+ /**
+ * User clicked on an hyperlink that should be handled by other
+ * applications accordingly.
+ */
+ LOK_CALLBACK_HYPERLINK_CLICKED,
+
+ /**
+ * Emit state update to the client.
+ * For example, when cursor is on bold text, this callback is triggered
+ * with payload: ".uno:Bold=true"
+ */
+ LOK_CALLBACK_STATE_CHANGED,
+
+ /**
+ * Start a "status indicator" (here restricted to a progress bar type
+ * indicator). The payload is the descriptive text (or empty). Even if
+ * there is no documentation that would promise so, we assume that de facto
+ * for a document being viewed or edited, there will be at most one status
+ * indicator, and its descriptive text will not change.
+ *
+ * Note that for the case of the progress indication during loading of a
+ * document, the status indicator callbacks will arrive to the callback
+ * registered for the LibreOfficeKit (singleton) object, not a
+ * LibreOfficeKitDocument one, because we are in the very progress of
+ * loading a docuemnt and then constructing a LibreOfficeKitDocument
+ * object.
+ */
+ LOK_CALLBACK_STATUS_INDICATOR_START,
+
+ /**
+ * Sets the numeric value of the status indicator.
+ * The payload should be a percentage, an integer between 0 and 100.
+ */
+ LOK_CALLBACK_STATUS_INDICATOR_SET_VALUE,
+
+ /**
+ * Ends the status indicator.
+ *
+ * Not necessarily ever emitted.
+ */
+ LOK_CALLBACK_STATUS_INDICATOR_FINISH,
+
+ /**
+ * No match was found for the search input
+ */
+ LOK_CALLBACK_SEARCH_NOT_FOUND,
+
+ /**
+ * Size of the document changed.
+ *
+ * Payload format is "width, height", i.e. clients get the new size without
+ * having to do an explicit lok::Document::getDocumentSize() call.
+ */
+ LOK_CALLBACK_DOCUMENT_SIZE_CHANGED,
+
+ /**
+ * The current part number is changed.
+ *
+ * Payload is a single 0-based integer.
+ */
+ LOK_CALLBACK_SET_PART
+}
+LibreOfficeKitCallbackType;
+
+typedef enum
+{
+ /// A key on the keyboard is pressed.
+ LOK_KEYEVENT_KEYINPUT,
+ /// A key on the keyboard is released.
+ LOK_KEYEVENT_KEYUP
+}
+LibreOfficeKitKeyEventType;
+
+typedef enum
+{
+ /// A pressed gesture has started.
+ LOK_MOUSEEVENT_MOUSEBUTTONDOWN,
+ /// A pressed gesture has finished.
+ LOK_MOUSEEVENT_MOUSEBUTTONUP,
+ /// A change has happened during a press gesture.
+ LOK_MOUSEEVENT_MOUSEMOVE
+}
+LibreOfficeKitMouseEventType;
+
+typedef enum
+{
+ /// The start of selection is to be adjusted.
+ LOK_SETTEXTSELECTION_START,
+ /// The end of selection is to be adjusted.
+ LOK_SETTEXTSELECTION_END,
+ /// Both the start and the end of selection is to be adjusted.
+ LOK_SETTEXTSELECTION_RESET
+}
+LibreOfficeKitSetTextSelectionType;
+
+typedef enum
+{
+ /**
+ * A move or a resize action starts. It is assumed that there is a valid
+ * graphic selection (see LOK_CALLBACK_GRAPHIC_SELECTION) and the supplied
+ * coordinates are the ones the user tapped on.
+ *
+ * The type of the action is move by default, unless the coordinates are
+ * the position of a handle (see below), in which case it's a resize.
+ *
+ * There are 8 handles for a graphic selection:
+ * - top-left, top-center, top-right
+ * - middle-left, middle-right
+ * - bottom-left, bottom-center, bottom-right
+ */
+ LOK_SETGRAPHICSELECTION_START,
+ /**
+ * A move or resize action stops. It is assumed that this is always used
+ * only after a LOK_SETTEXTSELECTION_START. The supplied coordinates are
+ * the ones where the user released the screen.
+ */
+ LOK_SETGRAPHICSELECTION_END
+}
+LibreOfficeKitSetGraphicSelectionType;
+
+#endif // LOK_USE_UNSTABLE_API
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // INCLUDED_LIBREOFFICEKIT_LIBREOFFICEKITENUMS_H
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
=== added file 'src/plugin/libreofficetoolkit-qml-plugin/LibreOfficeKit/LibreOfficeKitGtk.h'
--- src/plugin/libreofficetoolkit-qml-plugin/LibreOfficeKit/LibreOfficeKitGtk.h 1970-01-01 00:00:00 +0000
+++ src/plugin/libreofficetoolkit-qml-plugin/LibreOfficeKit/LibreOfficeKitGtk.h 2015-10-08 20:57:10 +0000
@@ -0,0 +1,86 @@
+/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+#ifndef INCLUDED_LIBREOFFICEKIT_LIBREOFFICEKITGTK_H
+#define INCLUDED_LIBREOFFICEKIT_LIBREOFFICEKITGTK_H
+
+#include <gtk/gtk.h>
+#include <gdk/gdk.h>
+
+#define LOK_USE_UNSTABLE_API
+#include <LibreOfficeKit/LibreOfficeKit.h>
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+#define LOK_DOCVIEW(obj) GTK_CHECK_CAST (obj, lok_docview_get_type(), LOKDocView)
+#define LOK_DOCVIEW_CLASS(klass) GTK_CHECK_CLASS_CAST (klass, lok_docview_get_type(), LOKDocViewClass)
+#define IS_LOK_DOCVIEW(obj) GTK_CHECK_TYPE (obj, lok_docview_get_type())
+
+typedef struct _LOKDocView LOKDocView;
+typedef struct _LOKDocViewClass LOKDocViewClass;
+
+struct _LOKDocView
+{
+ GtkScrolledWindow aScrollWindow;
+ struct LOKDocView_Impl* m_pImpl;
+};
+
+struct _LOKDocViewClass
+{
+ GtkScrolledWindowClass parent_class;
+ void (* edit_changed) (LOKDocView* pView, gboolean was_edit);
+ void (* command_changed) (LOKDocView* pView, char* new_state);
+ void (* search_not_found) (LOKDocView* pView, char* new_state);
+ void (* part_changed) (LOKDocView* pView, int new_part);
+};
+
+guint lok_docview_get_type (void);
+GtkWidget* lok_docview_new ( LibreOfficeKit* pOffice );
+gboolean lok_docview_open_document (LOKDocView* pDocView,
+ char* pPath);
+
+/// Gets the document the viewer displays.
+LibreOfficeKitDocument* lok_docview_get_document(LOKDocView* pDocView);
+
+void lok_docview_set_zoom (LOKDocView* pDocView,
+ float fZoom);
+float lok_docview_get_zoom (LOKDocView* pDocView);
+
+int lok_docview_get_parts (LOKDocView* pDocView);
+int lok_docview_get_part (LOKDocView* pDocView);
+void lok_docview_set_part (LOKDocView* pDocView,
+ int nPart);
+char* lok_docview_get_part_name (LOKDocView* pDocView,
+ int nPart);
+void lok_docview_set_partmode (LOKDocView* pDocView,
+ int nPartMode);
+/// Sets if the viewer is actually an editor or not.
+void lok_docview_set_edit (LOKDocView* pDocView,
+ gboolean bEdit);
+/// Gets if the viewer is actually an editor or not.
+gboolean lok_docview_get_edit (LOKDocView* pDocView);
+
+/// Posts the .uno: command to the LibreOfficeKit.
+void lok_docview_post_command (LOKDocView* pDocView, const char* pCommand, const char* pArguments);
+
+/// Posts a keyboard event to LibreOfficeKit.
+void lok_docview_post_key (GtkWidget* pWidget, GdkEventKey* pEvent, gpointer pData);
+
+/// Get the visible area of the document (in twips).
+void lok_docview_get_visarea(LOKDocView* pThis, GdkRectangle* pArea);
+#ifdef __cplusplus
+}
+#endif
+
+#endif // INCLUDED_LIBREOFFICEKIT_LIBREOFFICEKITGTK_H
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
=== added file 'src/plugin/libreofficetoolkit-qml-plugin/LibreOfficeKit/LibreOfficeKitInit.h'
--- src/plugin/libreofficetoolkit-qml-plugin/LibreOfficeKit/LibreOfficeKitInit.h 1970-01-01 00:00:00 +0000
+++ src/plugin/libreofficetoolkit-qml-plugin/LibreOfficeKit/LibreOfficeKitInit.h 2015-10-08 20:57:10 +0000
@@ -0,0 +1,257 @@
+/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+#ifndef INCLUDED_LIBREOFFICEKIT_LIBREOFFICEKITINIT_H
+#define INCLUDED_LIBREOFFICEKIT_LIBREOFFICEKITINIT_H
+
+#include "LibreOfficeKit.h"
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+#if defined(__linux__) || defined (__FreeBSD_kernel__) || defined(_AIX) || defined(_WIN32) || defined(__APPLE__)
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/stat.h>
+
+#ifndef _WIN32
+
+ #include "dlfcn.h"
+
+ #ifdef _AIX
+ # include <sys/ldr.h>
+ #endif
+ #ifdef __APPLE__
+ #define TARGET_LIB "lib" "sofficeapp" ".dylib"
+ #define TARGET_MERGED_LIB "lib" "mergedlo" ".dylib"
+ #else
+ #define TARGET_LIB "lib" "sofficeapp" ".so"
+ #define TARGET_MERGED_LIB "lib" "mergedlo" ".so"
+ #endif
+ #define SEPARATOR '/'
+
+ void *_dlopen(const char *pFN)
+ {
+ return dlopen(pFN, RTLD_LAZY
+#if defined __clang__ && defined __linux__ \
+ && defined ENABLE_RUNTIME_OPTIMIZATIONS
+#if !ENABLE_RUNTIME_OPTIMIZATIONS
+ | RTLD_GLOBAL
+#endif
+#endif
+ );
+ }
+
+ char *_dlerror(void)
+ {
+ return dlerror();
+ }
+
+ void *_dlsym(void *Hnd, const char *pName)
+ {
+ return dlsym(Hnd, pName);
+ }
+
+ int _dlclose(void *Hnd)
+ {
+ return dlclose(Hnd);
+ }
+
+ void extendUnoPath(const char *pPath)
+ {
+ (void)pPath;
+ }
+
+#else
+
+ #include <windows.h>
+ #define TARGET_LIB "sofficeapp" ".dll"
+ #define TARGET_MERGED_LIB "mergedlo" ".dll"
+ #define SEPARATOR '\\'
+ #define UNOPATH "\\..\\URE\\bin"
+
+ void *_dlopen(const char *pFN)
+ {
+ return (void *) LoadLibrary(pFN);
+ }
+
+ char *_dlerror(void)
+ {
+ LPSTR buf = NULL;
+ FormatMessageA(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, NULL, GetLastError(), 0, reinterpret_cast<LPSTR>(&buf), 0, NULL);
+ return buf;
+ }
+
+ void *_dlsym(void *Hnd, const char *pName)
+ {
+ return GetProcAddress((HINSTANCE) Hnd, pName);
+ }
+
+ int _dlclose(void *Hnd)
+ {
+ return FreeLibrary((HINSTANCE) Hnd);
+ }
+
+ void extendUnoPath(const char *pPath)
+ {
+ if (!pPath)
+ return;
+
+ char* sEnvPath = NULL;
+ DWORD cChars = GetEnvironmentVariable("PATH", sEnvPath, 0);
+ if (cChars > 0)
+ {
+ sEnvPath = new char[cChars];
+ cChars = GetEnvironmentVariable("PATH", sEnvPath, cChars);
+ //If PATH is not set then it is no error
+ if (cChars == 0 && GetLastError() != ERROR_ENVVAR_NOT_FOUND)
+ {
+ delete[] sEnvPath;
+ return;
+ }
+ }
+ //prepare the new PATH. Add the Ure/bin directory at the front.
+ //note also adding ';'
+ char * sNewPath = new char[strlen(sEnvPath) + strlen(pPath) + strlen(UNOPATH) + 2];
+ sNewPath[0] = L'\0';
+ strcat(sNewPath, pPath);
+ strcat(sNewPath, UNOPATH);
+ if (strlen(sEnvPath))
+ {
+ strcat(sNewPath, ";");
+ strcat(sNewPath, sEnvPath);
+ }
+
+ SetEnvironmentVariable("PATH", sNewPath);
+
+ delete[] sEnvPath;
+ delete[] sNewPath;
+ }
+#endif
+
+typedef LibreOfficeKit *(HookFunction)( const char *install_path);
+
+typedef LibreOfficeKit *(HookFunction2)( const char *install_path, const char *user_profile_path );
+
+static LibreOfficeKit *lok_init_2( const char *install_path, const char *user_profile_path )
+{
+ char *imp_lib;
+ void *dlhandle;
+ HookFunction *pSym;
+ HookFunction2 *pSym2;
+
+#if !(defined(__APPLE__) && defined(__arm__))
+ size_t partial_length;
+
+ if (!install_path)
+ return NULL;
+
+ // allocate large enough buffer
+ partial_length = strlen(install_path);
+ imp_lib = (char *) malloc(partial_length + sizeof(TARGET_LIB) + sizeof(TARGET_MERGED_LIB) + 2);
+ if (!imp_lib)
+ {
+ fprintf( stderr, "failed to open library : not enough memory\n");
+ return NULL;
+ }
+
+ strcpy(imp_lib, install_path);
+
+ extendUnoPath(install_path);
+
+ imp_lib[partial_length++] = SEPARATOR;
+ strcpy(imp_lib + partial_length, TARGET_LIB);
+
+ dlhandle = _dlopen(imp_lib);
+ if (!dlhandle)
+ {
+ // If TARGET_LIB exists, and likely is a real library (not a
+ // small one-line text stub as in the --enable-mergedlib
+ // case), but dlopen failed for some reason, don't try
+ // TARGET_MERGED_LIB.
+ struct stat st;
+ if (stat(imp_lib, &st) == 0 && st.st_size > 100)
+ {
+ fprintf(stderr, "failed to open library '%s': %s\n",
+ imp_lib, _dlerror());
+ free(imp_lib);
+ return NULL;
+ }
+
+ strcpy(imp_lib + partial_length, TARGET_MERGED_LIB);
+
+ dlhandle = _dlopen(imp_lib);
+ if (!dlhandle)
+ {
+ fprintf(stderr, "failed to open library '%s': %s\n",
+ imp_lib, _dlerror());
+ free(imp_lib);
+ return NULL;
+ }
+ }
+#else
+ imp_lib = strdup("the app executable");
+ dlhandle = RTLD_MAIN_ONLY;
+#endif
+
+ pSym2 = (HookFunction2 *) _dlsym( dlhandle, "libreofficekit_hook_2" );
+ if (!pSym2)
+ {
+ if (user_profile_path != NULL)
+ {
+ fprintf( stderr, "the LibreOffice version in '%s' does not support passing a user profile to the hook function\n",
+ imp_lib );
+ _dlclose( dlhandle );
+ free( imp_lib );
+ return NULL;
+ }
+ pSym = (HookFunction *) _dlsym( dlhandle, "libreofficekit_hook" );
+ if (!pSym)
+ {
+ fprintf( stderr, "failed to find hook in library '%s'\n", imp_lib );
+ _dlclose( dlhandle );
+ free( imp_lib );
+ return NULL;
+ }
+ free( imp_lib );
+ // dlhandle is "leaked"
+ // coverity[leaked_storage]
+ return pSym( install_path );
+ }
+
+ free( imp_lib );
+ // dlhandle is "leaked"
+ // coverity[leaked_storage]
+ return pSym2( install_path, user_profile_path );
+}
+
+static
+#ifdef __GNUC__
+__attribute__((used))
+#endif
+LibreOfficeKit *lok_init( const char *install_path )
+{
+ return lok_init_2( install_path, NULL );
+}
+
+#undef SEPARATOR // It is used at least in enum class MenuItemType
+
+#endif // defined(__linux__) || defined (__FreeBSD_kernel__) || defined(_AIX) || defined(_WIN32) || defined(__APPLE__)
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // INCLUDED_LIBREOFFICEKIT_LIBREOFFICEKITINIT_H
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
=== added file 'src/plugin/libreofficetoolkit-qml-plugin/LibreOfficeKit/LibreOfficeKitTypes.h'
--- src/plugin/libreofficetoolkit-qml-plugin/LibreOfficeKit/LibreOfficeKitTypes.h 1970-01-01 00:00:00 +0000
+++ src/plugin/libreofficetoolkit-qml-plugin/LibreOfficeKit/LibreOfficeKitTypes.h 2015-10-08 20:57:10 +0000
@@ -0,0 +1,30 @@
+/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+#ifndef INCLUDED_LIBREOFFICEKIT_LIBREOFFICEKIT_TYPES_H
+#define INCLUDED_LIBREOFFICEKIT_LIBREOFFICEKIT_TYPES_H
+
+#include <stddef.h>
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+#ifdef LOK_USE_UNSTABLE_API
+typedef void (*LibreOfficeKitCallback)(int nType, const char* pPayload, void* pData);
+#endif // LOK_USE_UNSTABLE_API
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // INCLUDED_LIBREOFFICEKIT_LIBREOFFICEKIT_TYPES_H
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
=== added file 'src/plugin/libreofficetoolkit-qml-plugin/config.h'
--- src/plugin/libreofficetoolkit-qml-plugin/config.h 1970-01-01 00:00:00 +0000
+++ src/plugin/libreofficetoolkit-qml-plugin/config.h 2015-10-08 20:57:10 +0000
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2015 Canonical, Ltd.
+ *
+ * This program is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 3, as published
+ * by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranties of
+ * MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#ifndef CONFIG_H
+#define CONFIG_H
+
+// This is the hardcoded Ubuntu/Debian paths to find the LibreOffice
+// installation. If you want to use a parallel installation, change the path
+// in the following line.
+#define LO_PATH "/usr/lib/libreoffice/program/"
+
+// FIXME: Perhaps we want to use smaller tiles on mobile devices?
+#define TILE_SIZE 256.0
+
+// Uncomment it if you want to see tiles boundaries
+//#define DEBUG_SHOW_TILE_BORDER
+
+// Uncomment for benchmarking tile rendering performance
+//#define DEBUG_TILE_BENCHMARK
+
+// Uncomment if you want more verbose application output
+//#define DEBUG_VERBOSE
+
+#endif // CONFIG_H
=== added file 'src/plugin/libreofficetoolkit-qml-plugin/lodocument.cpp'
--- src/plugin/libreofficetoolkit-qml-plugin/lodocument.cpp 1970-01-01 00:00:00 +0000
+++ src/plugin/libreofficetoolkit-qml-plugin/lodocument.cpp 2015-10-08 20:57:10 +0000
@@ -0,0 +1,244 @@
+/*
+ * Copyright (C) 2013-2015 Canonical, Ltd.
+ *
+ * This program is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 3, as published
+ * by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranties of
+ * MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include "lodocument.h"
+#include "twips.h"
+#include "config.h"
+
+#include <QImage>
+#include <QDebug>
+
+#define LOK_USE_UNSTABLE_API
+#include <LibreOfficeKit/LibreOfficeKitInit.h>
+#include <LibreOfficeKit/LibreOfficeKit.hxx>
+
+// TODO: Error management
+
+#ifdef DEBUG_TILE_BENCHMARK
+#include <QElapsedTimer>
+#endif
+
+lok::Office *LODocument::s_office = nullptr;
+
+LODocument::LODocument()
+ : m_path("")
+ , m_currentPart(-1)
+ , m_document(nullptr)
+{
+ // This space is intentionally empty.
+}
+
+// Return the path of the loaded document
+QString LODocument::path() const
+{
+ return m_path;
+}
+
+// Set the path of the document, then it tries to load it.
+void LODocument::setPath(const QString& pathName)
+{
+ if (pathName.isEmpty())
+ return;
+
+ m_path = pathName;
+ Q_EMIT pathChanged();
+
+ // Load the new document
+ this->loadDocument(m_path);
+}
+
+int LODocument::currentPart() {
+ return m_currentPart;
+}
+
+void LODocument::setCurrentPart(int index)
+{
+ if (!m_document)
+ return;
+
+ if (m_currentPart == index || index < 0 || index > partsCount() - 1)
+ return;
+
+ m_currentPart = index;
+ Q_EMIT currentPartChanged();
+}
+
+// Load the document
+bool LODocument::loadDocument(const QString &pathName)
+{
+ qDebug() << "Loading document...";
+
+ if (pathName.isEmpty()) {
+ qDebug() << "Can't load the document, path is empty.";
+ return false;
+ }
+
+ if (!s_office)
+ s_office = lok::lok_cpp_init(LO_PATH);
+
+ m_document = s_office->documentLoad(m_path.toUtf8().constData());
+
+ m_docType = DocumentType(m_document->getDocumentType());
+ Q_EMIT documentTypeChanged();
+
+ setCurrentPart(m_document->getPart());
+
+ m_document->initializeForRendering();
+ qDebug() << "Document loaded successfully !";
+
+ return true;
+}
+
+// Return the type of the loaded document (e.g. text document,
+// spreadsheet or presentation).
+LODocument::DocumentType LODocument::documentType() const
+{
+ return m_docType;
+}
+
+int LODocument::documentPart() const
+{
+ return m_document->getPart();
+}
+
+void LODocument::setDocumentPart(int p)
+{
+ if (documentPart() != p)
+ m_document->setPart(p);
+}
+
+// Return the size of the document, in TWIPs
+QSize LODocument::documentSize() const
+{
+ if (!m_document)
+ return QSize(0, 0);
+
+ long pWidth(0);
+ long pHeight(0);
+ m_document->getDocumentSize(&pWidth, &pHeight);
+
+ return QSize(pWidth, pHeight);
+}
+
+// Paint a tile, with size=canvasSize, of the part of the document defined by
+// the rect tileSize.
+QImage LODocument::paintTile(const QSize& canvasSize, const QRect& tileSize, const qreal &zoom)
+{
+ if (!m_document)
+ return QImage();
+
+// if (m_currentPart != m_document->getPart())
+// m_document->setPart(m_currentPart);
+
+ QImage result = QImage(canvasSize.width(), canvasSize.height(), QImage::Format_RGB32);
+
+#ifdef DEBUG_TILE_BENCHMARK
+ QElapsedTimer renderTimer;
+ renderTimer.start();
+#endif
+
+ m_document->paintTile(result.bits(),
+ canvasSize.width(), canvasSize.height(),
+ Twips::convertPixelsToTwips(tileSize.x(), zoom),
+ Twips::convertPixelsToTwips(tileSize.y(), zoom),
+ Twips::convertPixelsToTwips(tileSize.width(), zoom),
+ Twips::convertPixelsToTwips(tileSize.height(), zoom));
+
+#ifdef DEBUG_TILE_BENCHMARK
+ qDebug() << "Time to render the tile:" << renderTimer.elapsed() << "ms";
+#endif
+
+ return result.rgbSwapped();
+}
+
+QImage LODocument::paintThumbnail(qreal size)
+{
+ if (!m_document)
+ return QImage();
+
+#ifdef DEBUG_TILE_BENCHMARK
+ QElapsedTimer renderTimer;
+ renderTimer.start();
+#endif
+
+ qreal tWidth = this->documentSize().width();
+ qreal tHeight = this->documentSize().height();
+
+ QSize resultSize;
+
+ if (tWidth > tHeight) {
+ resultSize.setWidth(size);
+ resultSize.setHeight(size * tHeight / tWidth);
+ } else {
+ resultSize.setHeight(size);
+ resultSize.setWidth(size * tWidth / tHeight);
+ }
+
+ QImage result = QImage(resultSize.width(), resultSize.height(), QImage::Format_RGB32);
+ m_document->paintTile(result.bits(), resultSize.width(), resultSize.height(),
+ 0, 0, tWidth, tHeight);
+
+#ifdef DEBUG_TILE_BENCHMARK
+ qDebug() << "Time to render the thumbnail:" << renderTimer.elapsed() << "ms";
+#endif
+
+ return result.rgbSwapped();
+}
+
+int LODocument::partsCount()
+{
+ if (!m_document)
+ return int(0);
+
+ return m_document->getParts();
+}
+
+QString LODocument::getPartName(int index) const
+{
+ if (!m_document)
+ return QString();
+
+ return QString::fromUtf8(m_document->getPartName(index));
+}
+
+/* Export the file in a given format:
+ * - url is a mandatory argument.
+ * - format is optional. If not specified, lok will try to get it from the file
+ * extension given at the 'url' argument.
+ * - filerOptions is also optional.
+ */
+// TODO: Is there some documentation on safe formats or filterOptions that can
+// be used?
+bool LODocument::saveAs(QString url, QString format = QString(), QString filterOptions = QString())
+{
+ if (!m_document) {
+ qDebug() << "No loaded document. It's not possible to save this file.";
+ return false;
+ }
+
+ return m_document->saveAs(url.toLatin1().constData(),
+ format.toLatin1().constData(),
+ filterOptions.toLatin1().constData());
+}
+
+LODocument::~LODocument()
+{
+ delete m_document;
+#ifdef DEBUG_VERBOSE
+ qDebug() << " ---- ~LODocument";
+#endif
+}
=== added file 'src/plugin/libreofficetoolkit-qml-plugin/lodocument.h'
--- src/plugin/libreofficetoolkit-qml-plugin/lodocument.h 1970-01-01 00:00:00 +0000
+++ src/plugin/libreofficetoolkit-qml-plugin/lodocument.h 2015-10-08 20:57:10 +0000
@@ -0,0 +1,93 @@
+/*
+ * Copyright (C) 2013-2015 Canonical, Ltd.
+ *
+ * This program is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 3, as published
+ * by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranties of
+ * MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#ifndef LODOCUMENT_H
+#define LODOCUMENT_H
+
+#include <QObject>
+
+namespace lok {
+class Office;
+class Document;
+}
+
+class LODocument : public QObject
+{
+ Q_OBJECT
+ Q_DISABLE_COPY(LODocument)
+
+ Q_PROPERTY(QString path READ path WRITE setPath NOTIFY pathChanged)
+ Q_PROPERTY(int currentPart READ currentPart WRITE setCurrentPart NOTIFY currentPartChanged)
+ // Declare partsCount as constant at the moment, since LOK-plugin is just a viewer for now.
+ Q_PROPERTY(int partsCount READ partsCount CONSTANT)
+ Q_PROPERTY(int documentPart READ documentPart WRITE setDocumentPart NOTIFY documentPartChanged)
+ Q_PROPERTY(DocumentType documentType READ documentType NOTIFY documentTypeChanged)
+ Q_ENUMS(DocumentType)
+
+public:
+ explicit LODocument();
+ virtual ~LODocument();
+
+ enum DocumentType {
+ TextDocument = 0,
+ SpreadsheetDocument = 1,
+ PresentationDocument = 2,
+ DrawingDocument = 3,
+ OtherDocument = 4
+ };
+
+ QString path() const;
+ void setPath(const QString& pathName);
+
+ int currentPart();
+ void setCurrentPart(int index);
+
+ DocumentType documentType() const;
+
+ int documentPart() const;
+ void setDocumentPart(int p);
+
+ QSize documentSize() const;
+
+ QImage paintTile(const QSize& canvasSize, const QRect& tileSize, const qreal& zoom = 1.0);
+ QImage paintThumbnail(qreal size);
+
+ int partsCount();
+ QString getPartName(int index) const;
+ void setPart(int index);
+
+ Q_INVOKABLE bool saveAs(QString url, QString format, QString filterOptions);
+
+Q_SIGNALS:
+ void pathChanged();
+ void currentPartChanged();
+ void documentTypeChanged();
+ void documentPartChanged();
+
+private:
+ QString m_path;
+ int m_currentPart;
+ DocumentType m_docType;
+
+ bool loadDocument(const QString &pathNAme);
+
+ lok::Document *m_document;
+
+ static lok::Office *s_office;
+};
+
+#endif // LODOCUMENT_H
=== added file 'src/plugin/libreofficetoolkit-qml-plugin/lopartsimageprovider.cpp'
--- src/plugin/libreofficetoolkit-qml-plugin/lopartsimageprovider.cpp 1970-01-01 00:00:00 +0000
+++ src/plugin/libreofficetoolkit-qml-plugin/lopartsimageprovider.cpp 2015-10-08 20:57:10 +0000
@@ -0,0 +1,54 @@
+/*
+ * Copyright (C) 2015 Canonical, Ltd.
+ *
+ * This program is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 3, as published
+ * by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranties of
+ * MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "lopartsimageprovider.h"
+#include "lodocument.h"
+#include "renderengine.h"
+
+LOPartsImageProvider::LOPartsImageProvider(const QSharedPointer<LODocument>& d)
+ : QQuickImageProvider(QQuickImageProvider::Image),
+ m_document(d)
+{ }
+
+QImage LOPartsImageProvider::requestImage(const QString & id, QSize * size, const QSize & requestedSize)
+{
+ Q_UNUSED(size)
+
+ QString type = id.section("/", 0, 0);
+
+ if (requestedSize.isNull() || type != "part" ||
+ m_document->documentType() != LODocument::PresentationDocument)
+ return QImage();
+
+ // Get info from "id".
+ int partNumber = id.section("/", 1, 1).toInt();
+ int itemId = id.section("/", 2, 2).toInt();
+
+ // Once rendered images can be found in hash.
+ if (m_images.contains(itemId))
+ return m_images[itemId];
+
+ const int defaultSize = 256;
+
+ RenderEngine::instance()->enqueueTask(m_document, partNumber, defaultSize, itemId);
+
+ // Return default image (empty).
+ static QImage defaultImage;
+ if (defaultImage.isNull())
+ defaultImage = QImage(defaultSize, defaultSize, QImage::Format_ARGB32);
+
+ return defaultImage;
+}
=== added file 'src/plugin/libreofficetoolkit-qml-plugin/lopartsimageprovider.h'
--- src/plugin/libreofficetoolkit-qml-plugin/lopartsimageprovider.h 1970-01-01 00:00:00 +0000
+++ src/plugin/libreofficetoolkit-qml-plugin/lopartsimageprovider.h 2015-10-08 20:57:10 +0000
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2015 Canonical, Ltd.
+ *
+ * This program is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 3, as published
+ * by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranties of
+ * MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#ifndef LOPARTSIMAGEPROVIDER_H
+#define LOPARTSIMAGEPROVIDER_H
+
+#include <QQuickImageProvider>
+#include <QSharedPointer>
+#include <QHash>
+#include <QDebug>
+
+class LODocument;
+
+class LOPartsImageProvider : public QQuickImageProvider
+{
+public:
+ LOPartsImageProvider(const QSharedPointer<LODocument>& d);
+ QImage requestImage(const QString & id, QSize * size, const QSize & requestedSize);
+
+ QHash<int, QImage> m_images;
+
+private:
+ QSharedPointer<LODocument> m_document;
+};
+
+#endif // LOPARTSIMAGEPROVIDER_H
=== added file 'src/plugin/libreofficetoolkit-qml-plugin/lopartsmodel.cpp'
--- src/plugin/libreofficetoolkit-qml-plugin/lopartsmodel.cpp 1970-01-01 00:00:00 +0000
+++ src/plugin/libreofficetoolkit-qml-plugin/lopartsmodel.cpp 2015-10-08 20:57:10 +0000
@@ -0,0 +1,130 @@
+/*
+ * Copyright (C) 2015 Canonical Ltd.
+ *
+ * This program is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 3, as published
+ * by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranties of
+ * MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include "lopartsmodel.h"
+#include "lodocument.h"
+#include "lopartsimageprovider.h"
+
+#include <QQmlContext>
+#include <QQmlEngine>
+#include <QDebug>
+
+
+
+LOPartsModel::LOPartsModel(const QSharedPointer<LODocument>& document, QAbstractListModel *parent):
+ QAbstractListModel(parent)
+{
+ m_document = document;
+ fillModel();
+}
+
+QHash<int, QByteArray> LOPartsModel::roleNames() const
+{
+ QHash<int, QByteArray> roles;
+ roles[IndexRole] = "index";
+ roles[NameRole] = "name";
+ roles[IdRole] = "id";
+ roles[ThumbnailRole] = "thumbnail";
+
+ return roles;
+}
+
+int LOPartsModel::rowCount(const QModelIndex & parent) const
+{
+ Q_UNUSED(parent)
+ return m_entries.count();
+}
+
+QVariant LOPartsModel::data(const QModelIndex & index, int role) const
+{
+ if (index.row() < 0 || index.row() > m_entries.count())
+ return QVariant();
+
+ const LOPartEntry &part = m_entries.at(index.row());
+
+ switch (role) {
+ case IndexRole:
+ return part.index;
+ case NameRole:
+ return part.name;
+ case IdRole:
+ return part.id;
+ case ThumbnailRole:
+ return part.thumbnail;
+
+ default:
+ return 0;
+ }
+}
+
+QVariantMap LOPartsModel::get(int index) const
+{
+ if (index < 0 || index > m_entries.count() - 1) {
+ qWarning() << Q_FUNC_INFO << "Index not valid, return undefined";
+ return QVariantMap();
+ }
+
+ const LOPartEntry &part = m_entries.at(index);
+
+ QVariantMap map;
+ map["name"] = part.name;
+ map["index"] = part.index;
+ map["id"] = part.id;
+ map["thumbnail"] = part.thumbnail;
+
+ return map;
+}
+
+void LOPartsModel::notifyAboutChanges(int id)
+{
+ for (int i = 0; i < m_entries.size(); i++)
+ if (m_entries[i].id == id) {
+ m_entries[i].thumbnail += "/cached";
+ Q_EMIT dataChanged(createIndex(i, 0), createIndex(i + 1, 0));
+ break;
+ }
+}
+
+void LOPartsModel::fillModel() {
+ if (!m_document)
+ return;
+
+ if (!m_entries.isEmpty()) {
+ beginRemoveRows(QModelIndex(), 0, rowCount());
+ m_entries.clear();
+ endRemoveRows();
+ }
+
+ int partsCount = m_document->partsCount();
+ beginInsertColumns(QModelIndex(), 0, qMax(partsCount - 1, 0));
+ for (int i = 0; i < partsCount; i++) {
+ LOPartEntry part;
+
+ part.index = i;
+ part.name = m_document->getPartName(i);
+ part.id = RenderEngine::getNextId();
+ part.thumbnail = QString("image://lok/part/%1/%2").arg(QString::number(part.index)).arg(QString::number(part.id));
+
+ m_entries.append(part);
+ }
+ endInsertColumns();
+
+ Q_EMIT countChanged();
+}
+
+LOPartsModel::~LOPartsModel()
+{ }
=== added file 'src/plugin/libreofficetoolkit-qml-plugin/lopartsmodel.h'
--- src/plugin/libreofficetoolkit-qml-plugin/lopartsmodel.h 1970-01-01 00:00:00 +0000
+++ src/plugin/libreofficetoolkit-qml-plugin/lopartsmodel.h 2015-10-08 20:57:10 +0000
@@ -0,0 +1,87 @@
+/*
+ * Copyright (C) 2015 Canonical Ltd.
+ *
+ * This program is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 3, as published
+ * by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranties of
+ * MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#ifndef LOPARTSMODEL_H
+#define LOPARTSMODEL_H
+
+#include <QAbstractListModel>
+#include <QImage>
+#include <QHash>
+#include <QSharedPointer>
+
+#include "renderengine.h"
+
+class LODocument;
+
+class LOPartEntry
+{
+public:
+ LOPartEntry():
+ index(0)
+ {
+ id = RenderEngine::getNextId();
+ }
+
+ int id;
+ QString name;
+ int index;
+ QString thumbnail;
+};
+
+class LOPartsModel : public QAbstractListModel
+{
+ Q_OBJECT
+ Q_DISABLE_COPY(LOPartsModel)
+ // Q_PROPERTY(LODocument* document READ document WRITE setDocument NOTIFY documentChanged)
+ Q_PROPERTY(int count READ rowCount NOTIFY countChanged)
+
+public:
+ enum Roles {
+ NameRole = Qt::UserRole + 1,
+ IndexRole,
+ IdRole,
+ ThumbnailRole
+ };
+
+ explicit LOPartsModel(const QSharedPointer<LODocument>& document, QAbstractListModel *parent = 0);
+ ~LOPartsModel();
+
+ // LODocument* document() { return m_document; }
+ //void setDocument(LODocument* document);
+
+ QHash<int, QByteArray> roleNames() const;
+
+ int rowCount(const QModelIndex & parent = QModelIndex()) const;
+ QVariant data(const QModelIndex & index, int role = Qt::DisplayRole) const;
+
+ Q_INVOKABLE QVariantMap get(int index) const;
+
+ void notifyAboutChanges(int id);
+
+Q_SIGNALS:
+ // void documentChanged();
+ void countChanged();
+
+private slots:
+ void fillModel();
+
+private:
+ QSharedPointer<LODocument> m_document;
+ QList<LOPartEntry> m_entries;
+};
+
+#endif // LOPARTSMODEL_H
=== added file 'src/plugin/libreofficetoolkit-qml-plugin/loview.cpp'
--- src/plugin/libreofficetoolkit-qml-plugin/loview.cpp 1970-01-01 00:00:00 +0000
+++ src/plugin/libreofficetoolkit-qml-plugin/loview.cpp 2015-10-08 20:57:10 +0000
@@ -0,0 +1,395 @@
+/*
+ * Copyright (C) 2015 Canonical, Ltd.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 3.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "loview.h"
+#include "lodocument.h"
+#include "sgtileitem.h"
+#include "twips.h"
+#include "config.h"
+
+#include <QPainter>
+#include <QImage>
+#include <QTimer>
+#include <QtCore/qmath.h>
+
+static qreal zoomValueToFitWidth;
+
+static qreal getZoomToFitWidth(const qreal &width, int documentWidth)
+{
+ return qreal(width / Twips::convertTwipsToPixels(documentWidth, 1.0));
+}
+
+LOView::LOView(QQuickItem *parent)
+ : QQuickItem(parent)
+ , m_parentFlickable(nullptr)
+ , m_document(nullptr)
+ , m_partsModel(nullptr)
+ , m_zoomFactor(1.0)
+ , m_cacheBuffer(TILE_SIZE * 3)
+ , m_visibleArea(0, 0, 0, 0)
+ , m_bufferArea(0, 0, 0, 0)
+{
+ Q_UNUSED(parent)
+
+ connect(this, SIGNAL(documentChanged()), this, SLOT(updateViewSize()));
+ connect(this, SIGNAL(zoomFactorChanged()), this, SLOT(updateViewSize()));
+ connect(this, SIGNAL(parentFlickableChanged()), this, SLOT(updateVisibleRect()));
+ connect(this, SIGNAL(cacheBufferChanged()), this, SLOT(updateVisibleRect()));
+ connect(&m_updateTimer, SIGNAL(timeout()), this, SLOT(updateVisibleRect()));
+
+ connect(RenderEngine::instance(), SIGNAL(renderFinished(int,QImage)),
+ this, SLOT(slotTileRenderFinished(int,QImage)));
+ connect(RenderEngine::instance(), SIGNAL(thumbnailRenderFinished(int,QImage)),
+ this, SLOT(slotThumbnailRenderFinished(int,QImage)));
+}
+
+// Returns the parent QML Flickable
+QQuickItem* LOView::parentFlickable() const
+{
+ return m_parentFlickable;
+}
+
+// Set the parent QML Flickable
+void LOView::setParentFlickable(QQuickItem *flickable)
+{
+ if (m_parentFlickable == flickable)
+ return;
+
+ if (m_parentFlickable)
+ m_parentFlickable->disconnect(this);
+
+ m_parentFlickable = flickable;
+
+ connect(m_parentFlickable, SIGNAL(widthChanged()), this, SLOT(updateVisibleRect()));
+ connect(m_parentFlickable, SIGNAL(heightChanged()), this, SLOT(updateVisibleRect()));
+
+ connect(m_parentFlickable, SIGNAL(contentXChanged()), this, SLOT(scheduleVisibleRectUpdate()));
+ connect(m_parentFlickable, SIGNAL(contentYChanged()), this, SLOT(scheduleVisibleRectUpdate()));
+
+ Q_EMIT parentFlickableChanged();
+}
+
+void LOView::initializeDocument(const QString &path)
+{
+ if (m_document)
+ m_document->disconnect(this);
+
+ m_document = QSharedPointer<LODocument>(new LODocument());
+ m_document->setPath(path);
+
+ // TODO MOVE
+ m_partsModel = new LOPartsModel(m_document);
+ Q_EMIT partsModelChanged();
+
+ // --------------------------------------------------
+ QQmlEngine *engine = QQmlEngine::contextForObject(this)->engine();
+ if (engine->imageProvider("lok"))
+ engine->removeImageProvider("lok");
+
+ m_imageProvider = new LOPartsImageProvider(m_document);
+ engine->addImageProvider("lok", m_imageProvider);
+ // --------------------------------------------------
+
+ connect(m_document.data(), SIGNAL(currentPartChanged()), this, SLOT(invalidateAllTiles()));
+
+ Q_EMIT documentChanged();
+}
+
+// Return the LODocument rendered by this class
+LODocument* LOView::document() const
+{
+ return m_document.data();
+}
+
+LOPartsModel *LOView::partsModel() const
+{
+ return m_partsModel;
+}
+
+qreal LOView::zoomFactor() const
+{
+ return m_zoomFactor;
+}
+
+void LOView::setZoomFactor(const qreal zoom)
+{
+ if (m_zoomFactor == zoom)
+ return;
+
+ m_zoomFactor = zoom;
+
+ if (m_zoomFactor != zoomValueToFitWidth)
+ setZoomMode(LOView::Manual);
+
+ Q_EMIT zoomFactorChanged();
+}
+
+LOView::ZoomMode LOView::zoomMode() const
+{
+ return m_zoomMode;
+}
+
+void LOView::setZoomMode(const ZoomMode zoomMode)
+{
+ if (m_zoomMode == zoomMode)
+ return;
+
+ m_zoomMode = zoomMode;
+ Q_EMIT zoomModeChanged();
+}
+
+int LOView::cacheBuffer() const
+{
+ return m_cacheBuffer;
+}
+
+void LOView::setCacheBuffer(int cacheBuffer)
+{
+ if (m_cacheBuffer == cacheBuffer)
+ return;
+
+ m_cacheBuffer = cacheBuffer;
+ Q_EMIT cacheBufferChanged();
+}
+
+void LOView::adjustZoomToWidth()
+ {
+ setZoomMode(LOView::FitToWidth);
+
+ zoomValueToFitWidth = getZoomToFitWidth(m_parentFlickable->width(),
+ m_document->documentSize().width());
+
+ setZoomFactor(zoomValueToFitWidth);
+ qDebug() << "Adjust zoom to width - value:" << zoomValueToFitWidth;
+ }
+
+bool LOView::updateZoomIfAutomatic()
+{
+ // This function is only used in LOView::updateVisibleRect()
+ // It returns a bool, so that we can stop the execution of that function,
+ // which will be triggered again when we'll automatically update the zoom value.
+ if (m_zoomMode == LOView::FitToWidth) {
+ zoomValueToFitWidth = getZoomToFitWidth(m_parentFlickable->width(),
+ m_document->documentSize().width());
+
+ if (m_zoomFactor != zoomValueToFitWidth) {
+ setZoomFactor(zoomValueToFitWidth);
+
+ qDebug() << "Adjust automatic zoom to width - value:" << zoomValueToFitWidth;
+ return true;
+ }
+ }
+
+ return false;
+}
+
+// Update the size of LOView, according to the size of the loaded document.
+void LOView::updateViewSize()
+{
+ if (!m_document)
+ return;
+
+ QSize docSize = m_document->documentSize();
+
+ this->setWidth(Twips::convertTwipsToPixels(docSize.width(), m_zoomFactor));
+ this->setHeight(Twips::convertTwipsToPixels(docSize.height(), m_zoomFactor));
+
+ // TODO: Consider to use connections to widthChanged and heightChanged
+ this->updateVisibleRect();
+}
+
+// Update the informations of the currently visible area of the parent
+// Flickable, then generate/delete all the required tiles, according to these
+// informations.
+void LOView::updateVisibleRect()
+{
+ if (!m_parentFlickable)
+ return;
+
+ // Changes in parentFlickable width/height trigger directly LOView::updateVisibleRect(),
+ // since they don't imply a change in the zoom factor - i.e. LOView::updateViewSize().
+ // Anyway, this class also handle an automatic zoom when the parentFlickable has been
+ // resized, so we need to take care of it.
+ // updateZoomIfAutomatic() returns a bool, which is true when the zoomFactor is
+ // set to a new value.
+ // If that happens, stop the execution of this function, since the change of
+ // zoomFactor will trigger the updateViewSize() function, which triggers this
+ // function again.
+ if (this->updateZoomIfAutomatic())
+ return;
+
+ // Check if current tiles have a different zoom value
+ if (!m_tiles.isEmpty()) {
+ SGTileItem* tile = m_tiles.first();
+
+ if (tile->zoomFactor() != m_zoomFactor) {
+ clearView();
+
+#ifdef DEBUG_VERBOSE
+ qDebug() << "Zoom value of tiles is different than the current zoom value. Erasing cache...";
+#endif
+ }
+ }
+
+ // Update information about the visible area
+ m_visibleArea.setRect(m_parentFlickable->property("contentX").toInt(),
+ m_parentFlickable->property("contentY").toInt(),
+ m_parentFlickable->width(),
+ m_parentFlickable->height());
+
+ // Update information about the buffer area
+ m_bufferArea.setRect(qMax(0, m_visibleArea.x() - this->cacheBuffer()),
+ qMax(0, m_visibleArea.y() - this->cacheBuffer()),
+ qMin(int(this->width() - m_bufferArea.x()), m_visibleArea.width() + (this->cacheBuffer() * 2)),
+ qMin(int(this->height() - m_bufferArea.y()), m_visibleArea.height() + (this->cacheBuffer() * 2)));
+
+ // Delete tiles that are outside the loading area
+ if (!m_tiles.isEmpty()) {
+ auto i = m_tiles.begin();
+ while (i != m_tiles.end()) {
+ SGTileItem* sgtile = i.value();
+
+ // Ok - we still need this item.
+ if (m_bufferArea.intersects(sgtile->area())) {
+ i++;
+ continue;
+ }
+
+ // Out of buffer - we should delete this item.
+#ifdef DEBUG_VERBOSE
+ qDebug() << "Removing tile indexed as" << i.key();
+#endif
+
+ RenderEngine::instance()->dequeueTask(sgtile->id());
+ sgtile->deleteLater();
+ i = m_tiles.erase(i);
+ }
+ }
+
+ /*
+ FIXME: It seems that LOView loads more tiles than necessary.
+ This can be easily tested with DEBUG_SHOW_TILE_BORDER enabled.
+
+ Step to reproduce:
+ 1) Open Document Viewer
+ 2) Resize the window, BEFORE opening any LibreOffice document
+ (Trying to resize the window or scrolling the Flickable when the
+ document is already loaded causes bad flickering)
+ 3) Outside the document area, at the bottom-right corner, there are
+ a few tiles that should not be visible/rendered/generated.
+ */
+
+ // Number of tiles per row
+ int tilesPerWidth = qCeil(this->width() / TILE_SIZE);
+
+ // Get indexes for visible tiles
+ int visiblesFromWidth = int(m_visibleArea.left() / TILE_SIZE);
+ int visiblesFromHeight = int(m_visibleArea.top() / TILE_SIZE);
+ int visiblesToWidth = qCeil(qreal(m_visibleArea.right()) / TILE_SIZE);
+ int visiblesToHeight = qCeil(qreal(m_visibleArea.bottom()) / TILE_SIZE);
+
+ // Get indexes for tiles in the visible area
+ int bufferFromWidth = int(m_bufferArea.left() / TILE_SIZE);
+ int bufferFromHeight = int(m_bufferArea.top() / TILE_SIZE);
+ int bufferToWidth = qCeil(qreal(m_bufferArea.right()) / TILE_SIZE);
+ int bufferToHeight = qCeil(qreal(m_bufferArea.bottom()) / TILE_SIZE);
+
+ this->generateTiles(visiblesFromWidth, visiblesFromHeight, visiblesToWidth, visiblesToHeight, tilesPerWidth);
+ this->generateTiles(bufferFromWidth, bufferFromHeight, bufferToWidth, bufferToHeight, tilesPerWidth);
+}
+
+void LOView::generateTiles(int x1, int y1, int x2, int y2, int tilesPerWidth)
+{
+ for (int x = x1; x < x2; x++) {
+ for (int y = y1; y < y2; y++) {
+ QRect tileRect(x * TILE_SIZE, y * TILE_SIZE, TILE_SIZE, TILE_SIZE);
+ int index = y * tilesPerWidth + x;
+
+ this->createTile(index, tileRect);
+ }
+ }
+}
+
+// FIXME: Just for the moment. In zoom branch we have all we need :)
+void LOView::invalidateAllTiles()
+{
+ clearView();
+ updateViewSize();
+}
+
+void LOView::createTile(int index, QRect rect)
+{
+ if (!m_tiles.contains(index)) {
+#ifdef DEBUG_VERBOSE
+ qDebug() << "Creating tile indexed as" << index;
+#endif
+
+ auto tile = new SGTileItem(rect, m_zoomFactor, RenderEngine::getNextId(), this);
+ m_tiles.insert(index, tile);
+ RenderEngine::instance()->enqueueTask(m_document, m_document->currentPart(), rect, m_zoomFactor, tile->id());
+ }
+#ifdef DEBUG_VERBOSE
+ else {
+ qDebug() << "tile" << index << "already exists";
+ }
+#endif
+}
+
+void LOView::scheduleVisibleRectUpdate()
+{
+ if (!m_updateTimer.isActive())
+ m_updateTimer.start(20);
+}
+
+void LOView::slotTileRenderFinished(int id, QImage img)
+{
+ for (auto i = m_tiles.begin(); i != m_tiles.end(); ++i) {
+ SGTileItem* sgtile = i.value();
+ if (sgtile->id() == id) {
+ sgtile->setData(img);
+ break;
+ }
+ }
+}
+
+void LOView::slotThumbnailRenderFinished(int id, QImage img)
+{
+ if (!m_imageProvider->m_images.contains(id))
+ m_imageProvider->m_images.insert(id, img);
+ m_partsModel->notifyAboutChanges(id);
+}
+
+void LOView::clearView()
+{
+ for (auto i = m_tiles.begin(); i != m_tiles.end(); ++i)
+ RenderEngine::instance()->dequeueTask(i.value()->id());
+
+ m_tiles.clear();
+}
+
+LOView::~LOView()
+{
+ delete m_partsModel;
+
+ disconnect(RenderEngine::instance(), SIGNAL(renderFinished(int,QImage)),
+ this, SLOT(slotTileRenderFinished(int,QImage)));
+ disconnect(RenderEngine::instance(), SIGNAL(thumbnailRenderFinished(int,QImage)),
+ this, SLOT(slotThumbnailRenderFinished(int,QImage)));
+
+ // Remove all tasks from rendering queue.
+ for (auto i = m_tiles.begin(); i != m_tiles.end(); ++i)
+ RenderEngine::instance()->dequeueTask(i.value()->id());
+}
=== added file 'src/plugin/libreofficetoolkit-qml-plugin/loview.h'
--- src/plugin/libreofficetoolkit-qml-plugin/loview.h 1970-01-01 00:00:00 +0000
+++ src/plugin/libreofficetoolkit-qml-plugin/loview.h 2015-10-08 20:57:10 +0000
@@ -0,0 +1,114 @@
+/*
+ * Copyright (C) 2015 Canonical, Ltd.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 3.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef LOVIEW_H
+#define LOVIEW_H
+
+#include <QQuickPaintedItem>
+#include <QQuickItem>
+#include <QTimer>
+#include <QSharedPointer>
+#include <QQmlContext>
+#include <QQmlEngine>
+
+#include "renderengine.h"
+#include "lopartsmodel.h"
+#include "lopartsimageprovider.h"
+
+class LODocument;
+class SGTileItem;
+
+class LOView : public QQuickItem
+{
+ Q_OBJECT
+ Q_ENUMS(ZoomMode)
+ Q_PROPERTY(QQuickItem* parentFlickable READ parentFlickable WRITE setParentFlickable NOTIFY parentFlickableChanged)
+ Q_PROPERTY(LODocument* document READ document /*WRITE setDocument*/ NOTIFY documentChanged)
+ Q_PROPERTY(LOPartsModel* partsModel READ partsModel NOTIFY partsModelChanged)
+ Q_PROPERTY(qreal zoomFactor READ zoomFactor WRITE setZoomFactor NOTIFY zoomFactorChanged)
+ Q_PROPERTY(ZoomMode zoomMode READ zoomMode NOTIFY zoomModeChanged)
+ Q_PROPERTY(int cacheBuffer READ cacheBuffer WRITE setCacheBuffer NOTIFY cacheBufferChanged)
+
+public:
+ LOView(QQuickItem *parent = 0);
+ ~LOView();
+
+ enum ZoomMode {
+ FitToWidth,
+ Manual
+ };
+
+ QQuickItem* parentFlickable() const;
+ void setParentFlickable(QQuickItem* flickable);
+
+ Q_INVOKABLE void initializeDocument(const QString& path);
+
+ LODocument* document() const;
+ LOPartsModel* partsModel() const;
+
+ qreal zoomFactor() const;
+ void setZoomFactor(const qreal zoom);
+
+ ZoomMode zoomMode() const;
+
+ int cacheBuffer() const;
+ void setCacheBuffer(int cacheBuffer);
+
+ Q_INVOKABLE void adjustZoomToWidth();
+
+Q_SIGNALS:
+ void parentFlickableChanged();
+ void documentChanged();
+ void partsModelChanged();
+ void zoomFactorChanged();
+ void zoomModeChanged();
+ void cacheBufferChanged();
+
+private Q_SLOTS:
+ void updateViewSize();
+ void updateVisibleRect();
+ void scheduleVisibleRectUpdate();
+ void invalidateAllTiles();
+
+ void slotTileRenderFinished(int id, QImage img);
+ void slotThumbnailRenderFinished(int id, QImage img);
+
+private:
+
+ QQuickItem* m_parentFlickable;
+ QSharedPointer<LODocument> m_document;
+ LOPartsModel* m_partsModel; // TODO MB move to document.
+ LOPartsImageProvider* m_imageProvider; // The QQmlEngine takes ownership of provider.
+
+ qreal m_zoomFactor;
+ ZoomMode m_zoomMode;
+ int m_cacheBuffer;
+
+ QRect m_visibleArea;
+ QRect m_bufferArea;
+
+ QTimer m_updateTimer;
+
+ QMap<int, SGTileItem*> m_tiles;
+
+ void generateTiles(int x1, int y1, int x2, int y2, int tilesPerWidth);
+ void createTile(int index, QRect rect);
+ void setZoomMode(const ZoomMode zoomMode);
+ bool updateZoomIfAutomatic();
+ void clearView();
+};
+
+#endif // LOVIEW_H
=== added file 'src/plugin/libreofficetoolkit-qml-plugin/plugin.cpp'
--- src/plugin/libreofficetoolkit-qml-plugin/plugin.cpp 1970-01-01 00:00:00 +0000
+++ src/plugin/libreofficetoolkit-qml-plugin/plugin.cpp 2015-10-08 20:57:10 +0000
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2015 Canonical, Ltd.
+ *
+ * This program is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 3, as published
+ * by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranties of
+ * MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include <QtQml>
+#include <QtQml/QQmlContext>
+
+#include "plugin.h"
+#include "lodocument.h"
+#include "loview.h"
+#include "lopartsmodel.h"
+
+void LOPlugin::registerTypes(const char *uri)
+{
+ Q_ASSERT(uri == QLatin1String("DocumentViewer.LibreOffice"));
+
+ //@uri DocumentViewer.LibreOffice
+ qmlRegisterType<LODocument>(uri, 1, 0, "Document");
+ qmlRegisterType<LOView>(uri, 1, 0, "View");
+ qmlRegisterUncreatableType<LOPartsModel>(uri, 1, 0, "PartsModel", "You shouldn't create LOPartsModel in QML");
+}
+
+void LOPlugin::initializeEngine(QQmlEngine *engine, const char *uri)
+{
+ QQmlExtensionPlugin::initializeEngine(engine, uri);
+}
=== added file 'src/plugin/libreofficetoolkit-qml-plugin/plugin.h'
--- src/plugin/libreofficetoolkit-qml-plugin/plugin.h 1970-01-01 00:00:00 +0000
+++ src/plugin/libreofficetoolkit-qml-plugin/plugin.h 2015-10-08 20:57:10 +0000
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2015 Canonical, Ltd.
+ *
+ * This program is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 3, as published
+ * by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranties of
+ * MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#ifndef LOPLUGIN_H
+#define LOPLUGIN_H
+
+#include <QQmlExtensionPlugin>
+
+class LOPlugin : public QQmlExtensionPlugin
+{
+ Q_OBJECT
+ Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QQmlExtensionInterface")
+
+public:
+ void registerTypes(const char *uri);
+ void initializeEngine(QQmlEngine *engine, const char *uri);
+};
+
+#endif // LO_H
=== added directory 'src/plugin/libreofficetoolkit-qml-plugin/qml'
=== added file 'src/plugin/libreofficetoolkit-qml-plugin/qml/Viewer.qml'
--- src/plugin/libreofficetoolkit-qml-plugin/qml/Viewer.qml 1970-01-01 00:00:00 +0000
+++ src/plugin/libreofficetoolkit-qml-plugin/qml/Viewer.qml 2015-10-08 20:57:10 +0000
@@ -0,0 +1,96 @@
+/*
+ * Copyright (C) 2015 Canonical, Ltd.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 3.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+import QtQuick 2.4
+import DocumentViewer.LibreOffice 1.0 as LibreOffice
+
+Flickable {
+ id: rootFlickable
+
+ property alias document: view.document
+ property alias zoomFactor: view.zoomFactor
+ property alias cacheBuffer: view.cacheBuffer
+ property alias partsModel: view.partsModel
+ property alias zoomMode: view.zoomMode
+
+ property string documentPath: ""
+
+ function adjustZoomToWidth()
+ {
+ view.adjustZoomToWidth();
+ }
+
+ function moveView(axis, diff)
+ {
+ if (axis == "vertical") {
+ var maxContentY = Math.max(0, rootFlickable.contentHeight - rootFlickable.height)
+ rootFlickable.contentY = Math.max(0, Math.min(rootFlickable.contentY + diff, maxContentY ))
+ } else {
+ var maxContentX = Math.max(0, rootFlickable.contentWidth - rootFlickable.width)
+ rootFlickable.contentX = Math.max(0, Math.min(rootFlickable.contentX + diff, maxContentX ))
+ }
+ }
+
+ function goNextPart()
+ {
+ document.currentPart = Math.min(document.currentPart + 1, document.partsCount - 1)
+ }
+
+ function goPreviousPart()
+ {
+ document.currentPart = Math.max(0, document.currentPart - 1)
+ }
+
+ function goFirstPart()
+ {
+ document.currentPart = 0
+ }
+
+ function goLastPart()
+ {
+ document.currentPart = document.partsCount - 1
+ }
+
+ onDocumentPathChanged: {
+ if (documentPath)
+ view.initializeDocument(documentPath)
+ }
+
+ // zoomFactor is not used here to set contentSize, since it's all managed
+ // internally, in the LibreOffice.View component.
+ contentHeight: view.height
+ contentWidth: view.width
+
+ boundsBehavior: Flickable.StopAtBounds
+
+ Component.onCompleted: adjustZoomToWidth()
+
+ LibreOffice.View {
+ id: view
+
+ parentFlickable: rootFlickable
+ }
+
+ Connections {
+ target: view.document
+
+ onCurrentPartChanged: {
+ // Position view at top-left corner
+ rootFlickable.contentX = 0
+ rootFlickable.contentY = 0
+ }
+ }
+}
=== added file 'src/plugin/libreofficetoolkit-qml-plugin/qmldir'
--- src/plugin/libreofficetoolkit-qml-plugin/qmldir 1970-01-01 00:00:00 +0000
+++ src/plugin/libreofficetoolkit-qml-plugin/qmldir 2015-10-08 20:57:10 +0000
@@ -0,0 +1,4 @@
+module DocumentViewer.LibreOffice
+plugin libreofficetoolkitqmlplugin
+
+Viewer 1.0 Viewer.qml
=== added file 'src/plugin/libreofficetoolkit-qml-plugin/renderengine.cpp'
--- src/plugin/libreofficetoolkit-qml-plugin/renderengine.cpp 1970-01-01 00:00:00 +0000
+++ src/plugin/libreofficetoolkit-qml-plugin/renderengine.cpp 2015-10-08 20:57:10 +0000
@@ -0,0 +1,93 @@
+#include "renderengine.h"
+#include <QtConcurrent/QtConcurrent>
+#include <QThread>
+
+RenderEngine* RenderEngine::s_instance = nullptr;
+
+RenderEngine::RenderEngine():
+ QObject(nullptr),
+ m_activeTaskCount(0),
+ m_enabled(true),
+ m_lastPart(-1)
+{
+ int itc = QThread::idealThreadCount();
+ m_idealThreadCount = itc == -1 ? DefaultIdealThreadCount : itc;
+
+ connect(this, SIGNAL(enabledChanged()), this, SLOT(doNextTask()));
+}
+
+void RenderEngine::enqueueTask(const QSharedPointer<LODocument>& doc, int part, const QRect& area, const qreal &zoom, int id)
+{
+ Q_ASSERT(doc != nullptr);
+
+ m_queue.enqueue(EngineTask(doc, part, area, zoom, id));
+
+ doNextTask();
+}
+
+void RenderEngine::enqueueTask(const QSharedPointer<LODocument> &doc, int part, qreal size, int id)
+{
+ Q_ASSERT(doc != nullptr);
+
+ m_queue.enqueue(EngineTask(doc, part, size, id));
+
+ doNextTask();
+}
+
+void RenderEngine::dequeueTask(int id)
+{
+ for (int i = 0; i < m_queue.size(); i++)
+ if (m_queue.at(i).id == id) {
+ m_queue.removeAt(i);
+ break;
+ }
+}
+
+void RenderEngine::internalRenderCallback(int id, QImage img, bool isThumbnail)
+{
+ m_activeTaskCount--;
+ if (isThumbnail)
+ Q_EMIT thumbnailRenderFinished(id, img);
+ else Q_EMIT renderFinished(id, img);
+ doNextTask();
+}
+
+void RenderEngine::doNextTask()
+{
+#ifdef DEBUG_VERBOSE
+ qDebug() << " ---- doNextTask" << m_activeTaskCount << m_queue.count();
+#endif
+
+ // Check for too much threads or empty queue.
+ if (m_activeTaskCount >= m_idealThreadCount || !m_queue.count() || !m_enabled)
+ return;
+
+ // We should avoid different part rendering in the same time.
+ if (m_activeTaskCount && m_queue.head().part != m_lastPart)
+ return;
+
+ m_activeTaskCount++;
+ EngineTask task = m_queue.dequeue();
+
+ // Set correct part.
+ m_lastPart = task.part;
+ task.document->setDocumentPart(m_lastPart);
+
+ QtConcurrent::run( [=] {
+ if (task.isThumbnail) {
+ QImage img = task.document->paintThumbnail(task.size);
+ QMetaObject::invokeMethod(this, "internalRenderCallback",
+ Q_ARG(int, task.id), Q_ARG(QImage, img), Q_ARG(bool, task.isThumbnail));
+ } else {
+ QImage img = task.document->paintTile(task.area.size(), task.area, task.zoom);
+ QMetaObject::invokeMethod(this, "internalRenderCallback",
+ Q_ARG(int, task.id), Q_ARG(QImage, img), Q_ARG(bool, task.isThumbnail));
+ }
+// QImage img = task.isThumbnail ?
+// //task.document->paintThumbnail(task.size) :
+// task.document->paintTile(task.area.size(), task.area, task.zoom) :
+// task.document->paintTile(task.area.size(), task.area, task.zoom);
+// QMetaObject::invokeMethod(this, "internalRenderCallback",
+// Q_ARG(int, task.id), Q_ARG(QImage, img), Q_ARG(bool, task.isThumbnail));
+ });
+}
=== added file 'src/plugin/libreofficetoolkit-qml-plugin/renderengine.h'
--- src/plugin/libreofficetoolkit-qml-plugin/renderengine.h 1970-01-01 00:00:00 +0000
+++ src/plugin/libreofficetoolkit-qml-plugin/renderengine.h 2015-10-08 20:57:10 +0000
@@ -0,0 +1,98 @@
+#ifndef RENDERENGINE_H
+#define RENDERENGINE_H
+
+#include <QObject>
+#include <QImage>
+#include <QSharedPointer>
+#include <QHash>
+#include <QQueue>
+#include <QAtomicInt>
+
+#include "lodocument.h"
+
+// TODO replace with class.
+
+
+// TODO Need more OOP here.
+struct EngineTask
+{
+ int id;
+ int part;
+ QSharedPointer<LODocument> document;
+ // Used in thumbnail rendering.
+ qreal size;
+ // Used in tile rendering.
+ QRect area;
+ qreal zoom;
+ // Internal.
+ bool isThumbnail;
+public:
+
+ EngineTask(const QSharedPointer<LODocument>& d, int p, const QRect& a, const qreal& z, int i):
+ id(i),
+ part(p),
+ document(d),
+ size(0),
+ area(a),
+ zoom(z),
+ isThumbnail(false)
+ { }
+
+ EngineTask(const QSharedPointer<LODocument>& d, int p, qreal s, int i):
+ id(i),
+ part(p),
+ document(d),
+ size(s),
+ area(),
+ zoom(0),
+ isThumbnail(true)
+ { }
+};
+
+class RenderEngine : public QObject
+{
+ Q_OBJECT
+ Q_DISABLE_COPY(RenderEngine)
+
+ static RenderEngine* s_instance;
+ RenderEngine();
+
+ const int DefaultIdealThreadCount = 2;
+
+public:
+ void enqueueTask(const QSharedPointer<LODocument>& doc, int part, const QRect& area, const qreal& zoom, int id);
+ void enqueueTask(const QSharedPointer<LODocument>& doc, int part, qreal size, int id);
+ void dequeueTask(int id);
+
+ static RenderEngine* instance() {
+ if(!s_instance)
+ s_instance = new RenderEngine();
+ return s_instance;
+ }
+
+ static int getNextId() {
+ static int idCounter = 0xDEAD0000;
+ return idCounter++;
+ }
+
+Q_SIGNALS:
+ void renderFinished(int id, QImage img);
+ void thumbnailRenderFinished(int id, QImage img);
+ void enabledChanged();
+
+private:
+ Q_INVOKABLE void internalRenderCallback(int id, QImage img, bool isThumbnail);
+
+private slots:
+ void doNextTask();
+
+private:
+ QQueue<EngineTask> m_queue;
+ int m_activeTaskCount;
+ int m_idealThreadCount;
+ int m_lastPart;
+
+ QAtomicInt m_enabled;
+};
+
+#endif // RENDERENGINE_H
=== added file 'src/plugin/libreofficetoolkit-qml-plugin/sgtileitem.cpp'
--- src/plugin/libreofficetoolkit-qml-plugin/sgtileitem.cpp 1970-01-01 00:00:00 +0000
+++ src/plugin/libreofficetoolkit-qml-plugin/sgtileitem.cpp 2015-10-08 20:57:10 +0000
@@ -0,0 +1,85 @@
+#include "sgtileitem.h"
+
+#include "lodocument.h"
+#include "config.h"
+
+#ifdef DEBUG_SHOW_TILE_BORDER
+#include <QSGGeometryNode>
+#include <QSGFlatColorMaterial>
+#endif
+
+//int SGTileItem::s_idCounter = 0xDEAD0000;
+
+SGTileItem::SGTileItem(const QRect& area, qreal zoom, int id, QQuickItem *parent)
+ : QQuickItem(parent)
+ , m_area(area)
+ , m_zoomFactor(zoom)
+ , m_id (id)
+{
+ setFlag(ItemHasContents, true);
+}
+
+SGTileItem::~SGTileItem()
+{ }
+
+QSGNode *SGTileItem::updatePaintNode(QSGNode *oldNode, QQuickItem::UpdatePaintNodeData *)
+{
+ QSGSimpleTextureNode* node = static_cast<QSGSimpleTextureNode*>(oldNode);
+ QQuickWindow* wnd = window();
+
+ if (!node && wnd && !m_data.isNull()) {
+ QImage image = m_data;
+ auto texture = wnd->createTextureFromImage(image);
+ node = new QSGSimpleTextureNode();
+ node->setTexture(texture);
+ node->setOwnsTexture(true);
+ node->setRect(m_area);
+
+#ifdef DEBUG_SHOW_TILE_BORDER
+ drawTileBorders(node);
+#endif
+ }
+
+ return node;
+}
+
+void SGTileItem::geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry)
+{
+ QQuickItem::geometryChanged(newGeometry, oldGeometry);
+}
+
+#ifdef DEBUG_SHOW_TILE_BORDER
+void SGTileItem::drawTileBorders(QSGNode* basicNode)
+{
+ auto node = basicNode;
+ auto tileBorderGeometry = new QSGGeometry(QSGGeometry::defaultAttributes_Point2D(), 8);
+ tileBorderGeometry->setDrawingMode(GL_LINES);
+ tileBorderGeometry->setLineWidth(4);
+
+ QSGGeometry::Point2D* vertex = tileBorderGeometry->vertexDataAsPoint2D();
+ vertex[0].set(node->rect().left(), node->rect().top());
+ vertex[1].set(node->rect().left(), node->rect().bottom());
+
+ vertex[2].set(node->rect().right(), node->rect().top());
+ vertex[3].set(node->rect().right(), node->rect().bottom());
+
+ vertex[4].set(vertex[0].x, vertex[0].y);
+ vertex[5].set(vertex[2].x, vertex[2].y);
+
+ vertex[6].set(vertex[1].x, vertex[1].y);
+ vertex[7].set(vertex[3].x, vertex[3].y);
+
+ auto tileBorderMaterial = new QSGFlatColorMaterial;
+ tileBorderMaterial->setColor(Qt::red);
+
+ auto tileBorderNode = new QSGGeometryNode;
+
+ tileBorderNode->setGeometry(tileBorderGeometry);
+ tileBorderNode->setFlag(QSGNode::OwnsGeometry);
+
+ tileBorderNode->setMaterial(tileBorderMaterial);
+ tileBorderNode->setFlag(QSGNode::OwnsMaterial);
+
+ node->appendChildNode(tileBorderNode);
+}
+#endif
=== added file 'src/plugin/libreofficetoolkit-qml-plugin/sgtileitem.h'
--- src/plugin/libreofficetoolkit-qml-plugin/sgtileitem.h 1970-01-01 00:00:00 +0000
+++ src/plugin/libreofficetoolkit-qml-plugin/sgtileitem.h 2015-10-08 20:57:10 +0000
@@ -0,0 +1,50 @@
+#ifndef SGTILEITEM_H
+#define SGTILEITEM_H
+
+#include <QQuickItem>
+#include <QQuickWindow>
+#include <QSGSimpleTextureNode>
+#include <QImage>
+#include <QtConcurrent/QtConcurrent>
+#include <QAtomicInteger>
+
+class LODocument;
+
+class SGTileItem : public QQuickItem
+{
+ Q_OBJECT
+public:
+ SGTileItem(const QRect& area, qreal zoom, int id, QQuickItem *parent = 0);
+ ~SGTileItem();
+
+ inline const QRect& area() { return m_area; }
+ inline void setArea(const QRect& rect) { m_area = rect; }
+
+ inline const qreal& zoomFactor() const { return m_zoomFactor; }
+ inline void setZoomFactor(const qreal &zoom) { m_zoomFactor = zoom; }
+
+ inline int id() { return m_id; }
+ inline void setId(int id) { m_id = id; }
+
+ inline QImage data() { return m_data; }
+ inline void setData(QImage data) { m_data = data; update(); }
+
+protected:
+ virtual QSGNode *updatePaintNode(QSGNode *, UpdatePaintNodeData *);
+ virtual void geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry);
+
+private:
+#ifdef DEBUG_SHOW_TILE_BORDER
+ void drawTileBorders(QSGNode* basicNode);
+#endif
+
+private:
+ QRect m_area;
+ qreal m_zoomFactor;
+ QImage m_data;
+ int m_id;
+
+ // static int s_idCounter;
+};
+
+#endif // SGTILEITEM_H
=== added file 'src/plugin/libreofficetoolkit-qml-plugin/twips.h'
--- src/plugin/libreofficetoolkit-qml-plugin/twips.h 1970-01-01 00:00:00 +0000
+++ src/plugin/libreofficetoolkit-qml-plugin/twips.h 2015-10-08 20:57:10 +0000
@@ -0,0 +1,59 @@
+/*
+ * Copyright (C) 2015 Canonical, Ltd.
+ *
+ * This program is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 3, as published
+ * by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranties of
+ * MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Author: Stefano Verzegnassi <stefano92.100@xxxxxxxxx>
+ */
+
+#ifndef TWIPS_H
+#define TWIPS_H
+
+#include <QtGlobal>
+#include <QtWidgets/QApplication>
+#include <QScreen>
+
+#define DEFAULT_DPI 96.0
+
+class Twips
+{
+public:
+ static inline int convertTwipsToPixels(int twips, qreal zoom = 1.0) {
+ qreal dpi = getLogicalDotsPerInch();
+ return int(twips / 1440.0 * (dpi ? dpi : DEFAULT_DPI) * zoom);
+ }
+
+ static inline int convertPixelsToTwips(int pixels, qreal zoom = 1.0) {
+ qreal dpi = getLogicalDotsPerInch();
+ return int(pixels * 1440.0 / (dpi ? dpi : DEFAULT_DPI) / zoom);
+ }
+
+ static inline qreal getLogicalDotsPerInch()
+ {
+ static qreal value = 0;
+ if (!value) {
+ QList<QScreen*> screens = QGuiApplication::screens();
+ if (screens.size()) {
+ QScreen *screen = screens.at(0);
+ // Subscribe for changing signal (just to make caching rock-solid).
+ QObject::connect(screen, &QScreen::logicalDotsPerInchChanged,
+ [] (const qreal newValue) { value = newValue; } );
+ value = screen->logicalDotsPerInch();
+ }
+ }
+
+ return value;
+ }
+};
+
+#endif // TWIPS_H