← Back to team overview

ubuntu-touch-coreapps-reviewers team mailing list archive

[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