From 2462d03f322261bd616721c2b2065c4004b36c9c Mon Sep 17 00:00:00 2001 From: Michele Calgaro Date: Sat, 11 May 2024 21:28:48 +0900 Subject: Initial import (as is) from Debian Snapshot's 'fbreader' source code (https://snapshot.debian.org/package/fbreader/0.99.4%2Bdfsg-6). The Debian code is provided under GPL2 license. Signed-off-by: Michele Calgaro --- .pc/.quilt_patches | 1 + .pc/.quilt_series | 1 + .pc/.version | 1 + .../ui/src/qt4/filesystem/ZLQtFSManager.cpp | 51 + .pc/0002-Qt5.patch/makefiles/arch/desktop.mk | 42 + .../ui/src/qt4/application/LineEditParameter.cpp | 84 + .../src/qt4/application/ZLQtApplicationWindow.cpp | 331 + .../ui/src/qt4/application/ZLQtApplicationWindow.h | 141 + .../zlibrary/ui/src/qt4/dialogs/ZLQtDialog.cpp | 56 + .../zlibrary/ui/src/qt4/dialogs/ZLQtDialog.h | 43 + .../ui/src/qt4/dialogs/ZLQtDialogContent.cpp | 104 + .../ui/src/qt4/dialogs/ZLQtDialogManager.cpp | 109 + .../ui/src/qt4/dialogs/ZLQtOpenFileDialog.cpp | 70 + .../zlibrary/ui/src/qt4/dialogs/ZLQtOptionView.cpp | 462 + .../ui/src/qt4/dialogs/ZLQtOptionsDialog.cpp | 100 + .../ui/src/qt4/dialogs/ZLQtOptionsDialog.h | 52 + .../ui/src/qt4/dialogs/ZLQtProgressDialog.cpp | 98 + .../ui/src/qt4/dialogs/ZLQtProgressDialog.h | 77 + .../zlibrary/ui/src/qt4/dialogs/ZLQtTreeDialog.cpp | 347 + .../zlibrary/ui/src/qt4/dialogs/ZLQtTreeDialog.h | 143 + .../zlibrary/ui/src/qt4/library/ZLQApplication.h | 36 + .../zlibrary/ui/src/qt4/library/ZLibrary.cpp | 114 + .../ui/src/qt4/network/ZLQtNetworkManager.cpp | 453 + .../zlibrary/ui/src/qt4/tree/QtWaitingSpinner.cpp | 155 + .../zlibrary/ui/src/qt4/tree/QtWaitingSpinner.h | 59 + .../ui/src/qt4/tree/ZLQtItemsListWidget.cpp | 255 + .../zlibrary/ui/src/qt4/tree/ZLQtItemsListWidget.h | 106 + .../zlibrary/ui/src/qt4/tree/ZLQtPreviewWidget.cpp | 411 + .../zlibrary/ui/src/qt4/tree/ZLQtPreviewWidget.h | 121 + .../zlibrary/ui/src/qt4/tree/ZLQtSearchField.cpp | 125 + .../zlibrary/ui/src/qt4/tree/ZLQtSearchField.h | 54 + .../zlibrary/ui/src/qt4/view/ZLQtViewWidget.cpp | 300 + .../zlibrary/ui/src/qt4/view/ZLQtViewWidget.h | 88 + .../fbreader/src/formats/doc/OleStorage.cpp | 304 + .../zlibrary/core/Makefile | 109 + .../zlibrary/text/Makefile | 74 + .../makefiles/arch/desktop.mk | 24 + .../makefiles/gtksubdir.mk | 28 + .../makefiles/platforms.mk | 15 + .../makefiles/qsubdir.mk | 28 + .../makefiles/subdir.mk | 48 + .../fbreader/Makefile | 72 + .../core/src/unix/curl/ZLCurlNetworkManager.cpp | 320 + .../fbreader/Makefile | 70 + .../fbreader/desktop/desktop | 23 + .pc/applied-patches | 9 + ChangeLog | 98 + Makefile | 44 + README.build | 72 + build_packages.sh | 155 + debian/README.source | 9 + debian/changelog | 759 + debian/control | 149 + debian/copyright | 570 + debian/dfsg-repack | 33 + debian/fbreader.links | 2 + debian/gbp.conf | 4 + debian/libzlcore-data.dirs | 1 + debian/libzlcore0.13t64.dirs | 1 + debian/libzlcore0.13t64.lintian-overrides | 1 + debian/libzltext-data.dirs | 1 + debian/libzltext0.13t64.dirs | 1 + debian/libzltext0.13t64.lintian-overrides | 1 + debian/manpages | 1 + debian/patches/0001-ZLQtFSManager.cpp.patch | 12 + debian/patches/0002-Qt5.patch | 503 + debian/patches/0003-gcc-6.patch | 14 + debian/patches/0004-prevent-so-install.patch | 23 + debian/patches/0008-951-fix-calling-compiler.patch | 102 + ...kefile-do-not-try-to-install-empty-format.patch | 22 + ...nix-curl-avoid-duplicate-case-in-a-switch.patch | 32 + ...-Makefile-make-linking-order-reproducible.patch | 21 + debian/patches/1014-desktop-mime-type.patch | 19 + debian/patches/series | 9 + debian/rules | 44 + debian/source/format | 1 + distributions/debian/desktop/changelog | 354 + distributions/debian/desktop/compat | 1 + distributions/debian/desktop/control | 30 + distributions/debian/desktop/copyright | 51 + distributions/debian/desktop/menu | 2 + distributions/debian/desktop/rules | 50 + distributions/debian/desktop/watch | 2 + distributions/debian/maemo2/changelog | 225 + distributions/debian/maemo2/compat | 1 + distributions/debian/maemo2/control | 81 + .../debian/maemo2/fbreader-maemo2.postinst | 21 + distributions/debian/maemo2/fbreader-maemo2.postrm | 16 + .../maemo2/libzlibrary-maemo2-noconic.postinst | 7 + .../maemo2/libzlibrary-maemo2-noconic.postrm | 7 + .../maemo2/libzlibrary-maemo2-noconic.shlibs | 2 + distributions/debian/maemo2/rules | 66 + distributions/debian/maemo3/changelog | 225 + distributions/debian/maemo3/compat | 1 + distributions/debian/maemo3/control | 81 + .../debian/maemo3/fbreader-maemo2.postinst | 21 + distributions/debian/maemo3/fbreader-maemo2.postrm | 16 + .../debian/maemo3/libzlibrary-maemo2.postinst | 7 + .../debian/maemo3/libzlibrary-maemo2.postrm | 7 + .../debian/maemo3/libzlibrary-maemo2.shlibs | 2 + distributions/debian/maemo3/rules | 66 + distributions/debian/maemo4/changelog | 200 + distributions/debian/maemo4/compat | 1 + distributions/debian/maemo4/control | 79 + distributions/debian/maemo4/fbreader.postinst | 21 + distributions/debian/maemo4/fbreader.postrm | 16 + distributions/debian/maemo4/libzlibrary.postinst | 7 + distributions/debian/maemo4/libzlibrary.postrm | 7 + distributions/debian/maemo4/libzlibrary.shlibs | 2 + distributions/debian/maemo4/rules | 66 + distributions/debian/maemo5/changelog | 218 + distributions/debian/maemo5/compat | 1 + distributions/debian/maemo5/control | 79 + distributions/debian/maemo5/fbreader.postinst | 21 + distributions/debian/maemo5/fbreader.postrm | 16 + distributions/debian/maemo5/libzlibrary.postinst | 7 + distributions/debian/maemo5/libzlibrary.postrm | 7 + distributions/debian/maemo5/libzlibrary.shlibs | 2 + distributions/debian/maemo5/rules | 66 + distributions/debian/smartq/changelog | 344 + distributions/debian/smartq/compat | 1 + distributions/debian/smartq/control | 115 + distributions/debian/smartq/copyright | 51 + distributions/debian/smartq/menu | 2 + .../smartq/patches/110-use-sensible-browser.patch | 11 + .../smartq/patches/120-key-names-and-actions.patch | 58 + .../smartq/patches/130-default-indicator.patch | 13 + .../smartq/patches/140-fullscreen-scrolling.patch | 41 + .../patches/150-default-rotation-direction.patch | 12 + .../debian/smartq/patches/160-use-gcc-4-3.patch | 14 + .../patches/170-disable-selection-by-default.patch | 10 + distributions/debian/smartq/patches/series | 7 + distributions/debian/smartq/rules | 58 + distributions/debian/smartq/watch | 2 + distributions/debipk/opensimpad/fbreader.control | 9 + distributions/debipk/opensimpad/fbreader.name | 1 + distributions/debipk/opensimpad/rules | 17 + .../debipk/openzaurus_gpe/240x320.control | 9 + distributions/debipk/openzaurus_gpe/240x320.name | 1 + .../debipk/openzaurus_gpe/640x480.control | 9 + distributions/debipk/openzaurus_gpe/640x480.name | 1 + distributions/debipk/openzaurus_gpe/rules | 23 + .../debipk/openzaurus_opie/240x320.control | 9 + distributions/debipk/openzaurus_opie/240x320.name | 1 + .../debipk/openzaurus_opie/640x480.control | 9 + distributions/debipk/openzaurus_opie/640x480.name | 1 + distributions/debipk/openzaurus_opie/rules | 23 + distributions/ipk/pdaxrom/fbreader.control | 10 + distributions/ipk/pdaxrom/rules | 16 + distributions/ipk/pma400/fbreader.control | 11 + distributions/ipk/pma400/rules | 14 + distributions/ipk/zaurus240x320/fbreader.control | 11 + .../ipk/zaurus240x320/libzlibrary.control | 11 + distributions/ipk/zaurus240x320/rules | 16 + distributions/ipk/zaurus640x480/fbreader.control | 11 + .../ipk/zaurus640x480/libzlibrary.control | 11 + distributions/ipk/zaurus640x480/rules | 16 + distributions/motopkg/moto/rules | 29 + distributions/nsi/win32/control.nsi | 91 + distributions/nsi/win32/rules | 17 + distributions/tarball/desktop/rules | 26 + distributions/tarball/source/rules | 13 + fbreader/LICENSE | 340 + fbreader/Makefile | 70 + fbreader/VERSION | 1 + fbreader/data/default/config.desktop.xml | 17 + fbreader/data/default/config.macosx.xml | 19 + fbreader/data/default/config.maemo.xml | 14 + fbreader/data/default/config.maemo5.xml | 15 + fbreader/data/default/config.moto.xml | 57 + fbreader/data/default/config.openzaurus.xml | 10 + fbreader/data/default/config.opie.xml | 10 + fbreader/data/default/config.pdaxrom.xml | 10 + fbreader/data/default/config.pepperpad3.xml | 18 + fbreader/data/default/config.pma400.xml | 10 + fbreader/data/default/config.zaurus.xml | 10 + fbreader/data/default/external.desktop.xml | 9 + fbreader/data/default/external.macosx.xml | 8 + fbreader/data/default/external.maemo.xml | 14 + fbreader/data/default/external.moto.xml | 8 + .../data/default/external.opensimpad-0.9.0.xml | 1 + fbreader/data/default/external.openzaurus.xml | 1 + fbreader/data/default/external.pdaxrom.xml | 1 + fbreader/data/default/external.pepperpad3.xml | 9 + fbreader/data/default/external.pma400.xml | 1 + fbreader/data/default/external.qtopia.xml | 21 + fbreader/data/default/external.qvfb.xml | 1 + fbreader/data/default/external.win32.xml | 8 + fbreader/data/default/external.zaurus.xml | 1 + .../data/default/fullscreen_toolbar.desktop.xml | 3 + fbreader/data/default/keymap.desktop.xml | 36 + fbreader/data/default/keymap.macosx.xml | 38 + fbreader/data/default/keymap.maemo.xml | 12 + fbreader/data/default/keymap.moto.xml | 13 + fbreader/data/default/keymap.opie-opensimpad.xml | 17 + fbreader/data/default/keymap.pdaxrom.xml | 24 + fbreader/data/default/keymap.pepperpad3.xml | 33 + fbreader/data/default/keymap.pma400.xml | 9 + fbreader/data/default/keymap.win32.xml | 37 + fbreader/data/default/keymap.zaurus.xml | 25 + fbreader/data/default/menubar.maemo5.xml | 12 + fbreader/data/default/menubar.moto.xml | 38 + fbreader/data/default/menubar.xml | 39 + fbreader/data/default/messages.maemo.xml | 5 + fbreader/data/default/styles.240x320.xml | 41 + fbreader/data/default/styles.640x480.xml | 41 + fbreader/data/default/styles.desktop.xml | 40 + fbreader/data/default/styles.gpe240x320.xml | 41 + fbreader/data/default/styles.gpe640x480.xml | 41 + fbreader/data/default/styles.maemo.xml | 40 + fbreader/data/default/styles.moto.xml | 40 + fbreader/data/default/styles.pepperpad3.xml | 40 + fbreader/data/default/styles.win32.xml | 40 + fbreader/data/default/toolbar.desktop.xml | 35 + fbreader/data/default/toolbar.full.xml | 25 + fbreader/data/default/toolbar.macosx.xml | 35 + fbreader/data/default/toolbar.maemo.xml | 25 + fbreader/data/default/toolbar.short.xml | 23 + fbreader/data/default/toolbar.zaurus.xml | 21 + fbreader/data/formats/fb2/FBReaderVersion.ent | 1 + fbreader/data/formats/fb2/fb2genres.xml | 933 + fbreader/data/formats/html/html.ent | 253 + fbreader/data/help/MiniHelp.240x320.de.fb2 | 45 + fbreader/data/help/MiniHelp.240x320.en.fb2 | 45 + fbreader/data/help/MiniHelp.240x320.fi.fb2 | 45 + fbreader/data/help/MiniHelp.240x320.fr.fb2 | 45 + fbreader/data/help/MiniHelp.240x320.id.fb2 | 46 + fbreader/data/help/MiniHelp.240x320.it.fb2 | 45 + fbreader/data/help/MiniHelp.240x320.ru.fb2 | 45 + fbreader/data/help/MiniHelp.240x320.sv.fb2 | 45 + fbreader/data/help/MiniHelp.240x320.uk.fb2 | 45 + fbreader/data/help/MiniHelp.640x480.de.fb2 | 52 + fbreader/data/help/MiniHelp.640x480.en.fb2 | 52 + fbreader/data/help/MiniHelp.640x480.fi.fb2 | 52 + fbreader/data/help/MiniHelp.640x480.fr.fb2 | 52 + fbreader/data/help/MiniHelp.640x480.id.fb2 | 53 + fbreader/data/help/MiniHelp.640x480.it.fb2 | 52 + fbreader/data/help/MiniHelp.640x480.ru.fb2 | 52 + fbreader/data/help/MiniHelp.640x480.sv.fb2 | 52 + fbreader/data/help/MiniHelp.640x480.uk.fb2 | 52 + fbreader/data/help/MiniHelp.desktop.bg.fb2 | 196 + fbreader/data/help/MiniHelp.desktop.cs.fb2 | 197 + fbreader/data/help/MiniHelp.desktop.de.fb2 | 196 + fbreader/data/help/MiniHelp.desktop.en.fb2 | 196 + fbreader/data/help/MiniHelp.desktop.es.fb2 | 197 + fbreader/data/help/MiniHelp.desktop.fi.fb2 | 195 + fbreader/data/help/MiniHelp.desktop.fr.fb2 | 195 + fbreader/data/help/MiniHelp.desktop.he.fb2 | 201 + fbreader/data/help/MiniHelp.desktop.hu.fb2 | 196 + fbreader/data/help/MiniHelp.desktop.id.fb2 | 196 + fbreader/data/help/MiniHelp.desktop.it.fb2 | 195 + fbreader/data/help/MiniHelp.desktop.lt.fb2 | 218 + fbreader/data/help/MiniHelp.desktop.nl.fb2 | 196 + fbreader/data/help/MiniHelp.desktop.ru.fb2 | 195 + fbreader/data/help/MiniHelp.desktop.sv.fb2 | 195 + fbreader/data/help/MiniHelp.desktop.uk.fb2 | 195 + fbreader/data/help/MiniHelp.desktop.vi.fb2 | 224 + fbreader/data/help/MiniHelp.desktop.zh.fb2 | 197 + fbreader/data/help/MiniHelp.maemo.bg.fb2 | 196 + fbreader/data/help/MiniHelp.maemo.cs.fb2 | 196 + fbreader/data/help/MiniHelp.maemo.de.fb2 | 196 + fbreader/data/help/MiniHelp.maemo.en.fb2 | 196 + fbreader/data/help/MiniHelp.maemo.eo.fb2 | 196 + fbreader/data/help/MiniHelp.maemo.es.fb2 | 197 + fbreader/data/help/MiniHelp.maemo.fi.fb2 | 195 + fbreader/data/help/MiniHelp.maemo.fr.fb2 | 195 + fbreader/data/help/MiniHelp.maemo.he.fb2 | 200 + fbreader/data/help/MiniHelp.maemo.hu.fb2 | 196 + fbreader/data/help/MiniHelp.maemo.id.fb2 | 196 + fbreader/data/help/MiniHelp.maemo.it.fb2 | 195 + fbreader/data/help/MiniHelp.maemo.pl.fb2 | 196 + fbreader/data/help/MiniHelp.maemo.ru.fb2 | 195 + fbreader/data/help/MiniHelp.maemo.sv.fb2 | 195 + fbreader/data/help/MiniHelp.maemo.uk.fb2 | 195 + fbreader/data/help/MiniHelp.maemo.vi.fb2 | 224 + fbreader/data/help/MiniHelp.unix.bg.fb2 | 196 + fbreader/data/help/MiniHelp.unix.eo.fb2 | 197 + fbreader/data/help/MiniHelp.unix.pl.fb2 | 196 + fbreader/data/help/MiniHelp.win32.bg.fb2 | 208 + fbreader/data/help/MiniHelp.win32.cs.fb2 | 208 + fbreader/data/help/MiniHelp.win32.de.fb2 | 208 + fbreader/data/help/MiniHelp.win32.en.fb2 | 208 + fbreader/data/help/MiniHelp.win32.eo.fb2 | 208 + fbreader/data/help/MiniHelp.win32.es.fb2 | 208 + fbreader/data/help/MiniHelp.win32.fi.fb2 | 207 + fbreader/data/help/MiniHelp.win32.fr.fb2 | 207 + fbreader/data/help/MiniHelp.win32.he.fb2 | 212 + fbreader/data/help/MiniHelp.win32.hu.fb2 | 210 + fbreader/data/help/MiniHelp.win32.id.fb2 | 208 + fbreader/data/help/MiniHelp.win32.it.fb2 | 207 + fbreader/data/help/MiniHelp.win32.lt.fb2 | 230 + fbreader/data/help/MiniHelp.win32.pl.fb2 | 208 + fbreader/data/help/MiniHelp.win32.ru.fb2 | 207 + fbreader/data/help/MiniHelp.win32.sv.fb2 | 207 + fbreader/data/help/MiniHelp.win32.uk.fb2 | 207 + fbreader/data/help/MiniHelp.win32.vi.fb2 | 262 + fbreader/data/help/MiniHelp.win32.zh.fb2 | 212 + fbreader/data/icons/application/16x16.png | Bin 0 -> 612 bytes fbreader/data/icons/application/26x26.png | Bin 0 -> 1069 bytes fbreader/data/icons/application/32x24.png | Bin 0 -> 1230 bytes fbreader/data/icons/application/32x32.png | Bin 0 -> 1316 bytes fbreader/data/icons/application/48x48.png | Bin 0 -> 2106 bytes fbreader/data/icons/application/64x43.png | Bin 0 -> 1534 bytes fbreader/data/icons/application/64x64.png | Bin 0 -> 2883 bytes fbreader/data/icons/application/FBReader.icns | Bin 0 -> 163060 bytes fbreader/data/icons/application/desktop.png | 1 + .../data/icons/application/opensimpad-0.9.0.png | 1 + .../data/icons/application/openzaurus_240x320.png | 1 + .../data/icons/application/openzaurus_640x480.png | 1 + fbreader/data/icons/application/pdaxrom.png | 1 + fbreader/data/icons/application/pepperpad3.png | 1 + fbreader/data/icons/application/pma400.png | 1 + fbreader/data/icons/application/qvfb.png | 1 + fbreader/data/icons/application/win32.ico | Bin 0 -> 140462 bytes fbreader/data/icons/application/zaurus_240x320.png | 1 + fbreader/data/icons/application/zaurus_640x480.png | 1 + fbreader/data/icons/back_button.png | Bin 0 -> 340 bytes fbreader/data/icons/back_button_disabled.png | Bin 0 -> 337 bytes .../22x22-transparent-png/tree-authorinfo.png | Bin 0 -> 4023 bytes .../22x22-transparent-png/tree-bookinfo.png | Bin 0 -> 1226 bytes .../22x22-transparent-png/tree-download-demo.png | Bin 0 -> 2927 bytes .../22x22-transparent-png/tree-download-epub.png | Bin 0 -> 4196 bytes .../22x22-transparent-png/tree-download-fb2.png | Bin 0 -> 4184 bytes .../22x22-transparent-png/tree-download-mobi.png | Bin 0 -> 4177 bytes .../22x22-transparent-png/tree-local-demo.png | Bin 0 -> 2988 bytes .../22x22-transparent-png/tree-local-epub.png | Bin 0 -> 4179 bytes .../22x22-transparent-png/tree-local-fb2.png | Bin 0 -> 4171 bytes .../22x22-transparent-png/tree-local-mobi.png | Bin 0 -> 4167 bytes .../22x22-transparent-png/tree-open-in-browser.png | Bin 0 -> 1355 bytes .../22x22-transparent-png/tree-order-series.png | Bin 0 -> 4306 bytes .../22x22-transparent-png/tree-purchase.png | Bin 0 -> 2914 bytes .../22x22-transparent-png/tree-removebook.png | Bin 0 -> 1503 bytes .../22x22-transparent-png/tree-removetag.png | Bin 0 -> 4379 bytes .../booktree/22x22-transparent-png/tree-strut.png | Bin 0 -> 108 bytes .../22x22-transparent-png/tree-taginfo.png | Bin 0 -> 4269 bytes .../28x28-transparent-png/tree-authorinfo.png | Bin 0 -> 1620 bytes .../28x28-transparent-png/tree-bookinfo.png | Bin 0 -> 1776 bytes .../28x28-transparent-png/tree-download-epub.png | Bin 0 -> 2241 bytes .../28x28-transparent-png/tree-download-fb2.png | Bin 0 -> 2208 bytes .../28x28-transparent-png/tree-download-mobi.png | Bin 0 -> 2186 bytes .../28x28-transparent-png/tree-local-epub.png | Bin 0 -> 2272 bytes .../28x28-transparent-png/tree-local-fb2.png | Bin 0 -> 2217 bytes .../28x28-transparent-png/tree-local-mobi.png | Bin 0 -> 2244 bytes .../28x28-transparent-png/tree-open-in-browser.png | Bin 0 -> 2083 bytes .../28x28-transparent-png/tree-orderseries.png | Bin 0 -> 2069 bytes .../28x28-transparent-png/tree-removebook.png | Bin 0 -> 2150 bytes .../28x28-transparent-png/tree-removetag.png | Bin 0 -> 2436 bytes .../booktree/28x28-transparent-png/tree-strut.png | Bin 0 -> 177 bytes .../28x28-transparent-png/tree-taginfo.png | Bin 0 -> 2247 bytes fbreader/data/icons/booktree/desktop | 1 + fbreader/data/icons/booktree/maemo | 1 + fbreader/data/icons/booktree/moto | 1 + .../data/icons/booktree/new/booktree-author.png | Bin 0 -> 2487 bytes fbreader/data/icons/booktree/new/booktree-book.png | Bin 0 -> 2890 bytes .../data/icons/booktree/new/booktree-catalog.png | Bin 0 -> 398 bytes fbreader/data/icons/booktree/new/booktree-tag.png | Bin 0 -> 2270 bytes fbreader/data/icons/booktree/new/searchresult.png | Bin 0 -> 3040 bytes fbreader/data/icons/booktree/opensimpad-0.9.0 | 1 + fbreader/data/icons/booktree/openzaurus_240x320 | 1 + fbreader/data/icons/booktree/openzaurus_640x480 | 1 + fbreader/data/icons/booktree/pdaxrom | 1 + fbreader/data/icons/booktree/pepperpad3 | 1 + fbreader/data/icons/booktree/pma400 | 1 + fbreader/data/icons/booktree/qvfb | 1 + fbreader/data/icons/booktree/win32 | 1 + fbreader/data/icons/booktree/zaurus_240x320 | 1 + fbreader/data/icons/booktree/zaurus_640x480 | 1 + fbreader/data/icons/filetree/12x12-png/fb2.png | Bin 0 -> 205 bytes fbreader/data/icons/filetree/12x12-png/folder.png | Bin 0 -> 193 bytes fbreader/data/icons/filetree/12x12-png/html.png | Bin 0 -> 269 bytes .../data/icons/filetree/12x12-png/mobipocket.png | Bin 0 -> 205 bytes fbreader/data/icons/filetree/12x12-png/oeb.png | Bin 0 -> 205 bytes .../data/icons/filetree/12x12-png/openreader.png | Bin 0 -> 205 bytes fbreader/data/icons/filetree/12x12-png/palm.png | Bin 0 -> 205 bytes fbreader/data/icons/filetree/12x12-png/plucker.png | Bin 0 -> 205 bytes fbreader/data/icons/filetree/12x12-png/rtf.png | Bin 0 -> 205 bytes fbreader/data/icons/filetree/12x12-png/tcr.png | Bin 0 -> 205 bytes fbreader/data/icons/filetree/12x12-png/unknown.png | Bin 0 -> 205 bytes .../data/icons/filetree/12x12-png/upfolder.png | Bin 0 -> 193 bytes fbreader/data/icons/filetree/12x12-png/weasel.png | Bin 0 -> 205 bytes .../data/icons/filetree/12x12-png/zipfolder.png | Bin 0 -> 227 bytes .../icons/filetree/22x22-transparent-ico/fb2.ico | Bin 0 -> 2086 bytes .../filetree/22x22-transparent-ico/folder.ico | Bin 0 -> 2086 bytes .../icons/filetree/22x22-transparent-ico/html.ico | Bin 0 -> 2086 bytes .../filetree/22x22-transparent-ico/mobipocket.ico | Bin 0 -> 2086 bytes .../icons/filetree/22x22-transparent-ico/oeb.ico | Bin 0 -> 2086 bytes .../filetree/22x22-transparent-ico/openreader.ico | Bin 0 -> 2086 bytes .../icons/filetree/22x22-transparent-ico/palm.ico | Bin 0 -> 2086 bytes .../filetree/22x22-transparent-ico/plucker.ico | Bin 0 -> 2086 bytes .../icons/filetree/22x22-transparent-ico/rtf.ico | Bin 0 -> 2086 bytes .../icons/filetree/22x22-transparent-ico/tcr.ico | Bin 0 -> 2086 bytes .../filetree/22x22-transparent-ico/unknown.ico | Bin 0 -> 2086 bytes .../filetree/22x22-transparent-ico/upfolder.ico | Bin 0 -> 2086 bytes .../filetree/22x22-transparent-ico/weasel.ico | Bin 0 -> 2086 bytes .../filetree/22x22-transparent-ico/zipfolder.ico | Bin 0 -> 2086 bytes .../icons/filetree/22x22-transparent-png/fb2.png | Bin 0 -> 523 bytes .../filetree/22x22-transparent-png/folder.png | Bin 0 -> 680 bytes .../icons/filetree/22x22-transparent-png/html.png | Bin 0 -> 1097 bytes .../filetree/22x22-transparent-png/mobipocket.png | Bin 0 -> 523 bytes .../icons/filetree/22x22-transparent-png/oeb.png | Bin 0 -> 523 bytes .../filetree/22x22-transparent-png/openreader.png | Bin 0 -> 523 bytes .../icons/filetree/22x22-transparent-png/palm.png | Bin 0 -> 523 bytes .../filetree/22x22-transparent-png/plucker.png | Bin 0 -> 523 bytes .../icons/filetree/22x22-transparent-png/rtf.png | Bin 0 -> 654 bytes .../icons/filetree/22x22-transparent-png/tcr.png | Bin 0 -> 523 bytes .../filetree/22x22-transparent-png/unknown.png | Bin 0 -> 523 bytes .../filetree/22x22-transparent-png/upfolder.png | Bin 0 -> 836 bytes .../filetree/22x22-transparent-png/weasel.png | Bin 0 -> 523 bytes .../filetree/22x22-transparent-png/zipfolder.png | Bin 0 -> 695 bytes .../icons/filetree/32x32-transparent-png/fb2.png | Bin 0 -> 744 bytes .../filetree/32x32-transparent-png/folder.png | Bin 0 -> 1015 bytes .../icons/filetree/32x32-transparent-png/html.png | Bin 0 -> 1759 bytes .../filetree/32x32-transparent-png/mobipocket.png | Bin 0 -> 744 bytes .../icons/filetree/32x32-transparent-png/oeb.png | Bin 0 -> 744 bytes .../filetree/32x32-transparent-png/openreader.png | Bin 0 -> 744 bytes .../icons/filetree/32x32-transparent-png/palm.png | Bin 0 -> 744 bytes .../filetree/32x32-transparent-png/plucker.png | Bin 0 -> 744 bytes .../icons/filetree/32x32-transparent-png/rtf.png | Bin 0 -> 744 bytes .../icons/filetree/32x32-transparent-png/tcr.png | Bin 0 -> 744 bytes .../filetree/32x32-transparent-png/unknown.png | Bin 0 -> 744 bytes .../filetree/32x32-transparent-png/upfolder.png | Bin 0 -> 1519 bytes .../filetree/32x32-transparent-png/weasel.png | Bin 0 -> 744 bytes .../filetree/32x32-transparent-png/zipfolder.png | Bin 0 -> 1067 bytes fbreader/data/icons/filetree/desktop | 1 + fbreader/data/icons/filetree/macosx | 1 + fbreader/data/icons/filetree/maemo | 1 + fbreader/data/icons/filetree/moto | 1 + fbreader/data/icons/filetree/opensimpad-0.9.0 | 1 + fbreader/data/icons/filetree/openzaurus_240x320 | 1 + fbreader/data/icons/filetree/openzaurus_640x480 | 1 + fbreader/data/icons/filetree/pdaxrom | 1 + fbreader/data/icons/filetree/pepperpad3 | 1 + fbreader/data/icons/filetree/pma400 | 1 + fbreader/data/icons/filetree/qvfb | 1 + fbreader/data/icons/filetree/win32 | 1 + fbreader/data/icons/filetree/zaurus_240x320 | 1 + fbreader/data/icons/filetree/zaurus_640x480 | 1 + fbreader/data/icons/forward_button.png | Bin 0 -> 343 bytes fbreader/data/icons/forward_button_disabled.png | Bin 0 -> 342 bytes fbreader/data/icons/refresh-icon-1.png | Bin 0 -> 2124 bytes fbreader/data/icons/refresh-icon-2.png | Bin 0 -> 3700 bytes fbreader/data/icons/refresh-icon.svg | 10 + fbreader/data/icons/search_icon.png | Bin 0 -> 546 bytes fbreader/data/icons/spinner.gif | Bin 0 -> 2037 bytes fbreader/data/icons/toolbar/14x15-png/addBook.png | Bin 0 -> 241 bytes fbreader/data/icons/toolbar/14x15-png/bookInfo.png | Bin 0 -> 247 bytes fbreader/data/icons/toolbar/14x15-png/findNext.png | Bin 0 -> 371 bytes .../data/icons/toolbar/14x15-png/findPrevious.png | Bin 0 -> 376 bytes fbreader/data/icons/toolbar/14x15-png/gotoHome.png | Bin 0 -> 303 bytes .../data/icons/toolbar/14x15-png/preferences.png | Bin 0 -> 235 bytes fbreader/data/icons/toolbar/14x15-png/redo.png | Bin 0 -> 166 bytes fbreader/data/icons/toolbar/14x15-png/rotate.png | Bin 0 -> 219 bytes fbreader/data/icons/toolbar/14x15-png/search.png | Bin 0 -> 495 bytes .../data/icons/toolbar/14x15-png/showLibrary.png | Bin 0 -> 256 bytes .../data/icons/toolbar/14x15-png/showReading.png | Bin 0 -> 171 bytes .../data/icons/toolbar/14x15-png/showRecent.png | Bin 0 -> 134 bytes fbreader/data/icons/toolbar/14x15-png/toc.png | Bin 0 -> 175 bytes fbreader/data/icons/toolbar/14x15-png/undo.png | Bin 0 -> 171 bytes fbreader/data/icons/toolbar/22x18-png/addBook.png | Bin 0 -> 274 bytes fbreader/data/icons/toolbar/22x18-png/bookInfo.png | Bin 0 -> 275 bytes fbreader/data/icons/toolbar/22x18-png/findNext.png | Bin 0 -> 533 bytes .../data/icons/toolbar/22x18-png/findPrevious.png | Bin 0 -> 525 bytes fbreader/data/icons/toolbar/22x18-png/gotoHome.png | Bin 0 -> 338 bytes .../data/icons/toolbar/22x18-png/preferences.png | Bin 0 -> 270 bytes fbreader/data/icons/toolbar/22x18-png/redo.png | Bin 0 -> 202 bytes fbreader/data/icons/toolbar/22x18-png/rotate.png | Bin 0 -> 218 bytes fbreader/data/icons/toolbar/22x18-png/search.png | Bin 0 -> 613 bytes .../data/icons/toolbar/22x18-png/showLibrary.png | Bin 0 -> 275 bytes .../data/icons/toolbar/22x18-png/showReading.png | Bin 0 -> 196 bytes .../data/icons/toolbar/22x18-png/showRecent.png | Bin 0 -> 147 bytes fbreader/data/icons/toolbar/22x18-png/toc.png | Bin 0 -> 207 bytes fbreader/data/icons/toolbar/22x18-png/undo.png | Bin 0 -> 196 bytes .../toolbar/32x32-transparent-ico/addBook.ico | Bin 0 -> 4286 bytes .../advancedSearchOnNetwork.ico | Bin 0 -> 4286 bytes .../toolbar/32x32-transparent-ico/bookInfo.ico | Bin 0 -> 4286 bytes .../toolbar/32x32-transparent-ico/byAuthor.ico | Bin 0 -> 4286 bytes .../icons/toolbar/32x32-transparent-ico/byTag.ico | Bin 0 -> 4286 bytes .../toolbar/32x32-transparent-ico/findNext.ico | Bin 0 -> 4286 bytes .../toolbar/32x32-transparent-ico/findPrevious.ico | Bin 0 -> 4286 bytes .../toolbar/32x32-transparent-ico/gotoHome.ico | Bin 0 -> 4286 bytes .../toolbar/32x32-transparent-ico/preferences.ico | Bin 0 -> 4286 bytes .../icons/toolbar/32x32-transparent-ico/redo.ico | Bin 0 -> 4286 bytes .../icons/toolbar/32x32-transparent-ico/rotate.ico | Bin 0 -> 4286 bytes .../icons/toolbar/32x32-transparent-ico/search.ico | Bin 0 -> 4286 bytes .../toolbar/32x32-transparent-ico/showHelp.ico | Bin 0 -> 4286 bytes .../toolbar/32x32-transparent-ico/showLibrary.ico | Bin 0 -> 4286 bytes .../32x32-transparent-ico/showNetLibrary.ico | Bin 0 -> 4286 bytes .../toolbar/32x32-transparent-ico/showReading.ico | Bin 0 -> 4286 bytes .../toolbar/32x32-transparent-ico/showRecent.ico | Bin 0 -> 4286 bytes .../icons/toolbar/32x32-transparent-ico/toc.ico | Bin 0 -> 4286 bytes .../icons/toolbar/32x32-transparent-ico/undo.ico | Bin 0 -> 4286 bytes .../toolbar/32x32-transparent-png/addBook.png | Bin 0 -> 2253 bytes .../advancedSearchOnNetwork.png | Bin 0 -> 2903 bytes .../toolbar/32x32-transparent-png/bookInfo.png | Bin 0 -> 2733 bytes .../toolbar/32x32-transparent-png/byAuthor.png | Bin 0 -> 1970 bytes .../icons/toolbar/32x32-transparent-png/byTag.png | Bin 0 -> 2668 bytes .../toolbar/32x32-transparent-png/findNext.png | Bin 0 -> 2535 bytes .../toolbar/32x32-transparent-png/findPrevious.png | Bin 0 -> 2511 bytes .../toolbar/32x32-transparent-png/gotoHome.png | Bin 0 -> 2020 bytes .../toolbar/32x32-transparent-png/preferences.png | Bin 0 -> 2534 bytes .../icons/toolbar/32x32-transparent-png/redo.png | Bin 0 -> 1621 bytes .../icons/toolbar/32x32-transparent-png/rotate.png | Bin 0 -> 3016 bytes .../icons/toolbar/32x32-transparent-png/search.png | Bin 0 -> 2756 bytes .../toolbar/32x32-transparent-png/showHelp.png | Bin 0 -> 2150 bytes .../toolbar/32x32-transparent-png/showLibrary.png | Bin 0 -> 2688 bytes .../32x32-transparent-png/showNetLibrary.png | Bin 0 -> 2901 bytes .../32x32-transparent-png/showNetworkLibrary.png | 1 + .../toolbar/32x32-transparent-png/showReading.png | Bin 0 -> 2363 bytes .../toolbar/32x32-transparent-png/showRecent.png | Bin 0 -> 2895 bytes .../icons/toolbar/32x32-transparent-png/toc.png | Bin 0 -> 2344 bytes .../icons/toolbar/32x32-transparent-png/undo.png | Bin 0 -> 1617 bytes fbreader/data/icons/toolbar/desktop | 1 + fbreader/data/icons/toolbar/macosx | 1 + fbreader/data/icons/toolbar/maemo | 1 + fbreader/data/icons/toolbar/moto/addBook.png | Bin 0 -> 632 bytes fbreader/data/icons/toolbar/moto/bookInfo.png | Bin 0 -> 659 bytes fbreader/data/icons/toolbar/moto/findNext.png | Bin 0 -> 690 bytes fbreader/data/icons/toolbar/moto/findPrevious.png | Bin 0 -> 676 bytes fbreader/data/icons/toolbar/moto/gotoHome.png | Bin 0 -> 659 bytes fbreader/data/icons/toolbar/moto/preferences.png | Bin 0 -> 834 bytes fbreader/data/icons/toolbar/moto/redo.png | Bin 0 -> 592 bytes fbreader/data/icons/toolbar/moto/rotate.png | Bin 0 -> 816 bytes fbreader/data/icons/toolbar/moto/search.png | Bin 0 -> 670 bytes fbreader/data/icons/toolbar/moto/showHelp.png | Bin 0 -> 638 bytes fbreader/data/icons/toolbar/moto/showLibrary.png | Bin 0 -> 656 bytes fbreader/data/icons/toolbar/moto/showReading.png | Bin 0 -> 600 bytes fbreader/data/icons/toolbar/moto/showRecent.png | Bin 0 -> 722 bytes fbreader/data/icons/toolbar/moto/toc.png | Bin 0 -> 537 bytes fbreader/data/icons/toolbar/moto/undo.png | Bin 0 -> 600 bytes fbreader/data/icons/toolbar/opensimpad-0.9.0 | 1 + fbreader/data/icons/toolbar/openzaurus_240x320 | 1 + fbreader/data/icons/toolbar/openzaurus_640x480 | 1 + fbreader/data/icons/toolbar/pdaxrom | 1 + fbreader/data/icons/toolbar/pepperpad3 | 1 + fbreader/data/icons/toolbar/pma400 | 1 + fbreader/data/icons/toolbar/qvfb | 1 + fbreader/data/icons/toolbar/win32 | 1 + fbreader/data/icons/toolbar/zaurus_240x320 | 1 + fbreader/data/icons/toolbar/zaurus_640x480 | 1 + fbreader/data/resources/RIGHTS | 20 + fbreader/data/resources/ar.xml | 683 + fbreader/data/resources/bg.xml | 683 + fbreader/data/resources/cs.xml | 683 + fbreader/data/resources/de.xml | 683 + fbreader/data/resources/en.xml | 716 + fbreader/data/resources/eo.xml | 683 + fbreader/data/resources/es.xml | 683 + fbreader/data/resources/fi.xml | 683 + fbreader/data/resources/fr.xml | 683 + fbreader/data/resources/he.xml | 683 + fbreader/data/resources/hu.xml | 683 + fbreader/data/resources/id.xml | 683 + fbreader/data/resources/it.xml | 683 + fbreader/data/resources/lt.xml | 683 + fbreader/data/resources/nl.xml | 683 + fbreader/data/resources/pl.xml | 683 + fbreader/data/resources/ru.xml | 719 + fbreader/data/resources/sv.xml | 683 + fbreader/data/resources/uk.xml | 683 + fbreader/data/resources/vi.xml | 683 + fbreader/data/resources/zh.xml | 683 + fbreader/desktop/FBReader.1 | 41 + fbreader/desktop/Makefile | 19 + fbreader/desktop/desktop | 24 + fbreader/fbreader.pro | 592 + fbreader/macosx/English.lproj/MainMenu.xib | 247 + fbreader/macosx/Info.plist | 51 + fbreader/macosx/Makefile | 20 + fbreader/maemo/FBReader.backup | 5 + fbreader/maemo/FBReader.desktop | 12 + fbreader/maemo/FBReader.service | 3 + fbreader/maemo/Makefile | 31 + fbreader/moto/FBReader.desktop | 13 + fbreader/moto/FBReader.sh | 8 + fbreader/moto/Makefile | 17 + fbreader/moto/util/Makefile | 11 + fbreader/moto/util/language_detector | Bin 0 -> 6572 bytes fbreader/moto/util/language_detector.cpp | 33 + fbreader/opensimpad-0.9.0 | 1 + fbreader/openzaurus/Makefile | 23 + fbreader/openzaurus/gpe/fbreader.desktop | 9 + fbreader/openzaurus/opie | 1 + fbreader/opie/Makefile | 15 + fbreader/opie/fbreader.desktop | 7 + fbreader/pdaxrom/Makefile | 16 + .../pdaxrom/data/apps/Office/FBReader/AppInfo.xml | 7 + fbreader/pdaxrom/data/apps/Office/FBReader/AppRun | 2 + .../data/share/applications/FBReader.desktop | 10 + fbreader/pepperpad/fbreader.spec | 143 + fbreader/pepperpad3 | 1 + fbreader/pma400/FBReader.desktop | 7 + fbreader/pma400/Makefile | 13 + fbreader/qvfb | 1 + fbreader/scripts/install_config.sh | 33 + fbreader/scripts/install_help.sh | 34 + fbreader/scripts/install_toolbar_and_menu.sh | 67 + fbreader/src/blockTree/FBReaderNode.cpp | 275 + fbreader/src/blockTree/FBReaderNode.h | 92 + fbreader/src/bookmodel/BookModel.cpp | 68 + fbreader/src/bookmodel/BookModel.h | 91 + fbreader/src/bookmodel/BookReader.cpp | 303 + fbreader/src/bookmodel/BookReader.h | 114 + fbreader/src/bookmodel/FBHyperlinkType.h | 30 + fbreader/src/bookmodel/FBTextKind.h | 70 + fbreader/src/database/booksdb/BooksDB.cpp | 503 + fbreader/src/database/booksdb/BooksDB.h | 174 + fbreader/src/database/booksdb/BooksDBQuery.cpp | 327 + fbreader/src/database/booksdb/BooksDBQuery.h | 99 + fbreader/src/database/booksdb/BooksDBUtil.cpp | 184 + fbreader/src/database/booksdb/BooksDBUtil.h | 61 + .../src/database/booksdb/BooksDB_BookAuthor.cpp | 76 + .../src/database/booksdb/BooksDB_BookSeries.cpp | 83 + fbreader/src/database/booksdb/BooksDB_BookTag.cpp | 246 + fbreader/src/database/booksdb/DBRunnables.h | 311 + .../booksdb/runnables/ClearBooksDBRunnable.cpp | 46 + .../booksdb/runnables/DeleteBookRunnable.cpp | 37 + .../runnables/DeleteFileEntriesRunnable.cpp | 60 + .../booksdb/runnables/FindFileIdRunnable.cpp | 123 + .../booksdb/runnables/InitBooksDBRunnable.cpp | 40 + .../booksdb/runnables/LoadFileEntriesRunnable.cpp | 68 + .../booksdb/runnables/LoadRecentBooksRunnable.cpp | 51 + .../booksdb/runnables/SaveAuthorsRunnable.cpp | 75 + .../booksdb/runnables/SaveBookRunnable.cpp | 43 + .../runnables/SaveBookStateStackRunnable.cpp | 56 + .../booksdb/runnables/SaveRecentBooksRunnable.cpp | 49 + .../booksdb/runnables/SaveSeriesRunnable.cpp | 58 + .../booksdb/runnables/SaveTableBookRunnable.cpp | 80 + fbreader/src/database/networkdb/DBRunnables.h | 81 + fbreader/src/database/networkdb/NetworkDB.cpp | 152 + fbreader/src/database/networkdb/NetworkDB.h | 76 + fbreader/src/database/networkdb/NetworkDBQuery.cpp | 103 + fbreader/src/database/networkdb/NetworkDBQuery.h | 48 + .../networkdb/runnables/ClearNetworkDBRunnable.cpp | 39 + .../networkdb/runnables/InitNetworkDBRunnable.cpp | 30 + .../runnables/SaveNetworkLinkRunnable.cpp | 138 + fbreader/src/database/sqldb/DBCommand.cpp | 59 + fbreader/src/database/sqldb/DBCommand.h | 69 + fbreader/src/database/sqldb/DBCommandParameter.cpp | 63 + fbreader/src/database/sqldb/DBCommandParameter.h | 81 + fbreader/src/database/sqldb/DBConnection.cpp | 28 + fbreader/src/database/sqldb/DBConnection.h | 40 + fbreader/src/database/sqldb/DBDataReader.cpp | 26 + fbreader/src/database/sqldb/DBDataReader.h | 58 + fbreader/src/database/sqldb/DBIntValue.cpp | 37 + fbreader/src/database/sqldb/DBNullValue.cpp | 34 + fbreader/src/database/sqldb/DBRealValue.cpp | 37 + fbreader/src/database/sqldb/DBRunnable.h | 32 + fbreader/src/database/sqldb/DBTextValue.cpp | 48 + fbreader/src/database/sqldb/DBValue.cpp | 42 + fbreader/src/database/sqldb/DBValues.h | 145 + fbreader/src/database/sqldb/DataBase.cpp | 31 + fbreader/src/database/sqldb/DataBase.h | 55 + .../database/sqldb/implsqlite/SQLiteCommand.cpp | 366 + .../src/database/sqldb/implsqlite/SQLiteCommand.h | 117 + .../database/sqldb/implsqlite/SQLiteConnection.cpp | 86 + .../database/sqldb/implsqlite/SQLiteConnection.h | 81 + .../database/sqldb/implsqlite/SQLiteDataBase.cpp | 107 + .../src/database/sqldb/implsqlite/SQLiteDataBase.h | 82 + .../database/sqldb/implsqlite/SQLiteDataReader.cpp | 133 + .../database/sqldb/implsqlite/SQLiteDataReader.h | 64 + .../database/sqldb/implsqlite/SQLiteFactory.cpp | 113 + .../src/database/sqldb/implsqlite/SQLiteFactory.h | 61 + .../src/encodingOption/EncodingOptionEntry.cpp | 122 + fbreader/src/encodingOption/EncodingOptionEntry.h | 74 + fbreader/src/external/ProgramCollection.cpp | 188 + fbreader/src/external/ProgramCollection.h | 90 + fbreader/src/fbreader/AddBookAction.cpp | 58 + fbreader/src/fbreader/BookTextView.cpp | 419 + fbreader/src/fbreader/BookTextView.h | 100 + fbreader/src/fbreader/BooksOrderAction.cpp | 28 + fbreader/src/fbreader/ContentsView.cpp | 108 + fbreader/src/fbreader/ContentsView.h | 40 + fbreader/src/fbreader/FBReader.cpp | 558 + fbreader/src/fbreader/FBReader.h | 207 + fbreader/src/fbreader/FBReaderActionCode.cpp | 70 + fbreader/src/fbreader/FBReaderActions.cpp | 493 + fbreader/src/fbreader/FBReaderActions.h | 409 + fbreader/src/fbreader/FBView.cpp | 316 + fbreader/src/fbreader/FBView.h | 123 + fbreader/src/fbreader/FootnoteView.h | 33 + fbreader/src/fbreader/PreferencesPopupData.cpp | 73 + fbreader/src/fbreader/PreferencesPopupData.h | 46 + fbreader/src/fbreader/ReadingState.h | 41 + fbreader/src/fbreader/RecentBooksPopupData.cpp | 64 + fbreader/src/fbreader/RecentBooksPopupData.h | 41 + fbreader/src/fbreader/ScrollingAction.cpp | 101 + fbreader/src/fbreader/ScrollingAction.h | 88 + fbreader/src/fbreader/SearchActions.cpp | 155 + fbreader/src/fbreader/SearchOnNetworkAction.cpp | 177 + fbreader/src/fbreader/TimeUpdater.cpp | 40 + fbreader/src/fbreader/TimeUpdater.h | 37 + fbreader/src/fbreader/main.cpp | 31 + fbreader/src/formats/EncodedTextReader.cpp | 29 + fbreader/src/formats/EncodedTextReader.h | 37 + fbreader/src/formats/FormatPlugin.cpp | 106 + fbreader/src/formats/FormatPlugin.h | 99 + fbreader/src/formats/PluginCollection.cpp | 89 + fbreader/src/formats/chm/BitStream.cpp | 44 + fbreader/src/formats/chm/BitStream.h | 111 + fbreader/src/formats/chm/CHMFile.cpp | 490 + fbreader/src/formats/chm/CHMFile.h | 128 + fbreader/src/formats/chm/CHMFileImage.cpp | 33 + fbreader/src/formats/chm/CHMFileImage.h | 40 + fbreader/src/formats/chm/CHMPlugin.cpp | 252 + fbreader/src/formats/chm/CHMPlugin.h | 41 + .../src/formats/chm/CHMReferenceCollection.cpp | 91 + fbreader/src/formats/chm/CHMReferenceCollection.h | 50 + fbreader/src/formats/chm/E8Decoder.cpp | 61 + fbreader/src/formats/chm/HHCReader.cpp | 107 + fbreader/src/formats/chm/HHCReader.h | 57 + fbreader/src/formats/chm/HHCReferenceCollector.cpp | 62 + fbreader/src/formats/chm/HHCReferenceCollector.h | 45 + fbreader/src/formats/chm/HtmlSectionReader.cpp | 128 + fbreader/src/formats/chm/HtmlSectionReader.h | 50 + fbreader/src/formats/chm/HuffmanDecoder.cpp | 60 + fbreader/src/formats/chm/HuffmanDecoder.h | 53 + fbreader/src/formats/chm/LZXDecompressor.cpp | 287 + fbreader/src/formats/chm/LZXDecompressor.h | 88 + fbreader/src/formats/css/StyleSheetParser.cpp | 244 + fbreader/src/formats/css/StyleSheetParser.h | 84 + fbreader/src/formats/css/StyleSheetTable.cpp | 267 + fbreader/src/formats/css/StyleSheetTable.h | 76 + fbreader/src/formats/doc/DocBookReader.cpp | 377 + fbreader/src/formats/doc/DocBookReader.h | 103 + fbreader/src/formats/doc/DocFloatImageReader.cpp | 384 + fbreader/src/formats/doc/DocFloatImageReader.h | 107 + fbreader/src/formats/doc/DocInlineImageReader.cpp | 148 + fbreader/src/formats/doc/DocInlineImageReader.h | 37 + fbreader/src/formats/doc/DocMetaInfoReader.cpp | 38 + fbreader/src/formats/doc/DocMetaInfoReader.h | 46 + fbreader/src/formats/doc/DocPlugin.cpp | 71 + fbreader/src/formats/doc/DocPlugin.h | 39 + fbreader/src/formats/doc/DocStreams.cpp | 202 + fbreader/src/formats/doc/DocStreams.h | 73 + fbreader/src/formats/doc/OleMainStream.cpp | 1085 + fbreader/src/formats/doc/OleMainStream.h | 223 + fbreader/src/formats/doc/OleStorage.cpp | 304 + fbreader/src/formats/doc/OleStorage.h | 92 + fbreader/src/formats/doc/OleStream.cpp | 221 + fbreader/src/formats/doc/OleStream.h | 58 + fbreader/src/formats/doc/OleStreamParser.cpp | 210 + fbreader/src/formats/doc/OleStreamParser.h | 101 + fbreader/src/formats/doc/OleStreamReader.cpp | 86 + fbreader/src/formats/doc/OleStreamReader.h | 46 + fbreader/src/formats/doc/OleUtil.cpp | 58 + fbreader/src/formats/doc/OleUtil.h | 32 + fbreader/src/formats/docbook/DocBookBookReader.cpp | 111 + fbreader/src/formats/docbook/DocBookBookReader.h | 45 + .../formats/docbook/DocBookDescriptionReader.cpp | 137 + .../src/formats/docbook/DocBookDescriptionReader.h | 56 + fbreader/src/formats/docbook/DocBookPlugin.cpp | 43 + fbreader/src/formats/docbook/DocBookPlugin.h | 41 + fbreader/src/formats/docbook/DocBookReader.cpp | 71 + fbreader/src/formats/docbook/DocBookReader.h | 95 + fbreader/src/formats/dummy/DummyBookReader.cpp | 42 + fbreader/src/formats/dummy/DummyBookReader.h | 44 + fbreader/src/formats/dummy/DummyMetaInfoReader.cpp | 40 + fbreader/src/formats/dummy/DummyMetaInfoReader.h | 46 + fbreader/src/formats/dummy/DummyPlugin.cpp | 57 + fbreader/src/formats/dummy/DummyPlugin.h | 38 + fbreader/src/formats/dummy/createPlugin.sh | 12 + fbreader/src/formats/fb2/FB2BookReader.cpp | 336 + fbreader/src/formats/fb2/FB2BookReader.h | 61 + fbreader/src/formats/fb2/FB2CoverReader.cpp | 92 + fbreader/src/formats/fb2/FB2CoverReader.h | 49 + fbreader/src/formats/fb2/FB2MetaInfoReader.cpp | 206 + fbreader/src/formats/fb2/FB2MetaInfoReader.h | 60 + fbreader/src/formats/fb2/FB2Plugin.cpp | 48 + fbreader/src/formats/fb2/FB2Plugin.h | 42 + fbreader/src/formats/fb2/FB2Reader.cpp | 89 + fbreader/src/formats/fb2/FB2Reader.h | 94 + fbreader/src/formats/fb2/FB2TagManager.cpp | 124 + fbreader/src/formats/fb2/FB2TagManager.h | 45 + fbreader/src/formats/html/HtmlBookReader.cpp | 583 + fbreader/src/formats/html/HtmlBookReader.h | 101 + .../src/formats/html/HtmlDescriptionReader.cpp | 82 + fbreader/src/formats/html/HtmlDescriptionReader.h | 48 + fbreader/src/formats/html/HtmlEntityCollection.cpp | 71 + fbreader/src/formats/html/HtmlEntityCollection.h | 38 + fbreader/src/formats/html/HtmlPlugin.cpp | 83 + fbreader/src/formats/html/HtmlPlugin.h | 42 + fbreader/src/formats/html/HtmlReader.cpp | 373 + fbreader/src/formats/html/HtmlReader.h | 92 + fbreader/src/formats/html/HtmlReaderStream.cpp | 128 + fbreader/src/formats/html/HtmlReaderStream.h | 48 + fbreader/src/formats/html/HtmlTagActions.h | 158 + fbreader/src/formats/oeb/NCXReader.cpp | 131 + fbreader/src/formats/oeb/NCXReader.h | 69 + fbreader/src/formats/oeb/OEBBookReader.cpp | 273 + fbreader/src/formats/oeb/OEBBookReader.h | 70 + fbreader/src/formats/oeb/OEBCoverReader.cpp | 136 + fbreader/src/formats/oeb/OEBCoverReader.h | 56 + fbreader/src/formats/oeb/OEBMetaInfoReader.cpp | 194 + fbreader/src/formats/oeb/OEBMetaInfoReader.h | 63 + fbreader/src/formats/oeb/OEBPlugin.cpp | 149 + fbreader/src/formats/oeb/OEBPlugin.h | 40 + fbreader/src/formats/oeb/OEBTextStream.cpp | 101 + fbreader/src/formats/oeb/OEBTextStream.h | 43 + fbreader/src/formats/oeb/XHTMLImageFinder.cpp | 54 + fbreader/src/formats/oeb/XHTMLImageFinder.h | 43 + fbreader/src/formats/openreader/ORBookReader.cpp | 185 + fbreader/src/formats/openreader/ORBookReader.h | 77 + .../src/formats/openreader/ORDescriptionReader.cpp | 88 + .../src/formats/openreader/ORDescriptionReader.h | 53 + .../src/formats/openreader/OpenReaderPlugin.cpp | 52 + fbreader/src/formats/openreader/OpenReaderPlugin.h | 36 + fbreader/src/formats/pdb/BitReader.cpp | 57 + fbreader/src/formats/pdb/BitReader.h | 39 + fbreader/src/formats/pdb/DocDecompressor.cpp | 103 + fbreader/src/formats/pdb/DocDecompressor.h | 36 + fbreader/src/formats/pdb/EReaderPlugin.cpp | 125 + fbreader/src/formats/pdb/EReaderStream.cpp | 289 + fbreader/src/formats/pdb/EReaderStream.h | 88 + fbreader/src/formats/pdb/HtmlMetainfoReader.cpp | 89 + fbreader/src/formats/pdb/HtmlMetainfoReader.h | 60 + fbreader/src/formats/pdb/HuffDecompressor.cpp | 192 + fbreader/src/formats/pdb/HuffDecompressor.h | 63 + .../src/formats/pdb/MobipocketHtmlBookReader.cpp | 356 + .../src/formats/pdb/MobipocketHtmlBookReader.h | 89 + fbreader/src/formats/pdb/MobipocketPlugin.cpp | 229 + fbreader/src/formats/pdb/PalmDocLikePlugin.cpp | 40 + fbreader/src/formats/pdb/PalmDocLikeStream.cpp | 78 + fbreader/src/formats/pdb/PalmDocLikeStream.h | 58 + fbreader/src/formats/pdb/PalmDocPlugin.cpp | 54 + fbreader/src/formats/pdb/PalmDocStream.cpp | 209 + fbreader/src/formats/pdb/PalmDocStream.h | 50 + fbreader/src/formats/pdb/PdbPlugin.cpp | 69 + fbreader/src/formats/pdb/PdbPlugin.h | 119 + fbreader/src/formats/pdb/PdbReader.cpp | 108 + fbreader/src/formats/pdb/PdbReader.h | 82 + fbreader/src/formats/pdb/PdbStream.cpp | 109 + fbreader/src/formats/pdb/PdbStream.h | 72 + fbreader/src/formats/pdb/PluckerBookReader.cpp | 528 + fbreader/src/formats/pdb/PluckerBookReader.h | 89 + fbreader/src/formats/pdb/PluckerImages.cpp | 80 + fbreader/src/formats/pdb/PluckerImages.h | 79 + fbreader/src/formats/pdb/PluckerPlugin.cpp | 48 + fbreader/src/formats/pdb/PluckerTextStream.cpp | 159 + fbreader/src/formats/pdb/PluckerTextStream.h | 48 + fbreader/src/formats/pdb/PmlBookReader.cpp | 227 + fbreader/src/formats/pdb/PmlBookReader.h | 73 + fbreader/src/formats/pdb/PmlReader.cpp | 407 + fbreader/src/formats/pdb/PmlReader.h | 117 + fbreader/src/formats/pdb/SimplePdbPlugin.cpp | 75 + fbreader/src/formats/pdb/ZTXTPlugin.cpp | 43 + fbreader/src/formats/pdb/ZTXTStream.cpp | 77 + fbreader/src/formats/pdb/ZTXTStream.h | 45 + fbreader/src/formats/pdf/PdfBookReader.cpp | 261 + fbreader/src/formats/pdf/PdfBookReader.h | 52 + fbreader/src/formats/pdf/PdfDescriptionReader.cpp | 29 + fbreader/src/formats/pdf/PdfDescriptionReader.h | 40 + fbreader/src/formats/pdf/PdfObject.cpp | 450 + fbreader/src/formats/pdf/PdfObject.h | 201 + fbreader/src/formats/pdf/PdfPlugin.cpp | 42 + fbreader/src/formats/pdf/PdfPlugin.h | 41 + fbreader/src/formats/pdf/StringStream.cpp | 55 + fbreader/src/formats/pdf/StringStream.h | 44 + fbreader/src/formats/rtf/RtfBookReader.cpp | 232 + fbreader/src/formats/rtf/RtfBookReader.h | 71 + fbreader/src/formats/rtf/RtfDescriptionReader.cpp | 100 + fbreader/src/formats/rtf/RtfDescriptionReader.h | 55 + fbreader/src/formats/rtf/RtfPlugin.cpp | 63 + fbreader/src/formats/rtf/RtfPlugin.h | 35 + fbreader/src/formats/rtf/RtfReader.cpp | 470 + fbreader/src/formats/rtf/RtfReader.h | 209 + fbreader/src/formats/rtf/RtfReaderStream.cpp | 175 + fbreader/src/formats/rtf/RtfReaderStream.h | 50 + fbreader/src/formats/tcr/PPLBookReader.cpp | 129 + fbreader/src/formats/tcr/PPLBookReader.h | 51 + fbreader/src/formats/tcr/TcrPlugin.cpp | 82 + fbreader/src/formats/tcr/TcrPlugin.h | 43 + fbreader/src/formats/tcr/TcrStream.cpp | 125 + fbreader/src/formats/tcr/TcrStream.h | 47 + fbreader/src/formats/txt/PlainTextFormat.cpp | 253 + fbreader/src/formats/txt/PlainTextFormat.h | 112 + fbreader/src/formats/txt/TxtBookReader.cpp | 124 + fbreader/src/formats/txt/TxtBookReader.h | 59 + fbreader/src/formats/txt/TxtPlugin.cpp | 79 + fbreader/src/formats/txt/TxtPlugin.h | 37 + fbreader/src/formats/txt/TxtReader.cpp | 200 + fbreader/src/formats/txt/TxtReader.h | 56 + fbreader/src/formats/util/EntityFilesCollector.cpp | 62 + fbreader/src/formats/util/EntityFilesCollector.h | 42 + fbreader/src/formats/util/MergedStream.cpp | 72 + fbreader/src/formats/util/MergedStream.h | 45 + fbreader/src/formats/util/MiscUtil.cpp | 91 + fbreader/src/formats/util/MiscUtil.h | 39 + fbreader/src/formats/util/TextFormatDetector.cpp | 77 + fbreader/src/formats/util/TextFormatDetector.h | 35 + fbreader/src/formats/util/XMLTextStream.cpp | 124 + fbreader/src/formats/util/XMLTextStream.h | 52 + fbreader/src/formats/xhtml/XHTMLReader.cpp | 715 + fbreader/src/formats/xhtml/XHTMLReader.h | 113 + fbreader/src/library/Author.cpp | 67 + fbreader/src/library/Author.h | 71 + fbreader/src/library/Book.cpp | 280 + fbreader/src/library/Book.h | 142 + fbreader/src/library/Comparators.cpp | 106 + fbreader/src/library/Library.cpp | 439 + fbreader/src/library/Library.h | 126 + fbreader/src/library/Lists.h | 39 + fbreader/src/library/Number.cpp | 64 + fbreader/src/library/Number.h | 45 + fbreader/src/library/Tag.cpp | 139 + fbreader/src/library/Tag.h | 98 + fbreader/src/libraryActions/AuthorInfoDialog.cpp | 164 + fbreader/src/libraryActions/AuthorInfoDialog.h | 64 + fbreader/src/libraryActions/BooksUtil.cpp | 88 + fbreader/src/libraryActions/BooksUtil.h | 39 + .../src/libraryActions/LibraryAuthorActions.cpp | 41 + fbreader/src/libraryActions/LibraryAuthorActions.h | 41 + fbreader/src/libraryActions/LibraryBookActions.cpp | 132 + fbreader/src/libraryActions/LibraryBookActions.h | 67 + fbreader/src/libraryActions/LibraryTagActions.cpp | 159 + fbreader/src/libraryActions/LibraryTagActions.h | 80 + fbreader/src/libraryTree/AuthorNode.cpp | 60 + fbreader/src/libraryTree/BookNode.cpp | 116 + fbreader/src/libraryTree/LibraryByAuthorView.cpp | 173 + fbreader/src/libraryTree/LibraryByTagView.cpp | 97 + fbreader/src/libraryTree/LibraryNodes.h | 120 + fbreader/src/libraryTree/LibraryView.cpp | 86 + fbreader/src/libraryTree/LibraryView.h | 86 + fbreader/src/libraryTree/SeriesNode.cpp | 61 + fbreader/src/libraryTree/TagNode.cpp | 78 + fbreader/src/migration/BookInfo.cpp | 66 + fbreader/src/migration/BookInfo.h | 49 + fbreader/src/migration/FB2MigrationReader.cpp | 106 + fbreader/src/migration/FB2MigrationReader.h | 57 + fbreader/src/migration/HtmlDCTagsReader.cpp | 61 + fbreader/src/migration/HtmlDCTagsReader.h | 47 + fbreader/src/migration/Migration.cpp | 77 + fbreader/src/migration/Migration.h | 119 + fbreader/src/migration/Migration_0_10_4.cpp | 42 + fbreader/src/migration/Migration_0_11_0.cpp | 544 + fbreader/src/migration/Migration_0_8_11.cpp | 122 + fbreader/src/migration/Migration_0_8_13.cpp | 43 + fbreader/src/migration/Migration_0_8_16.cpp | 83 + fbreader/src/migration/Migration_0_99_0.cpp | 91 + fbreader/src/migration/Migration_0_99_1.cpp | 34 + fbreader/src/migration/OEBMigrationReader.cpp | 81 + fbreader/src/migration/OEBMigrationReader.h | 54 + fbreader/src/migration/migrate.cpp | 45 + fbreader/src/migration/migrate.h | 37 + fbreader/src/network/BookReference.cpp | 60 + fbreader/src/network/BookReference.h | 87 + fbreader/src/network/NetworkBookCollection.cpp | 71 + fbreader/src/network/NetworkBookCollection.h | 60 + fbreader/src/network/NetworkBookItem.cpp | 191 + fbreader/src/network/NetworkCatalogItem.cpp | 91 + fbreader/src/network/NetworkComparators.cpp | 120 + fbreader/src/network/NetworkComparators.h | 57 + fbreader/src/network/NetworkErrors.cpp | 70 + fbreader/src/network/NetworkErrors.h | 60 + fbreader/src/network/NetworkItem.cpp | 37 + fbreader/src/network/NetworkItems.h | 202 + fbreader/src/network/NetworkLink.cpp | 146 + fbreader/src/network/NetworkLink.h | 109 + fbreader/src/network/NetworkLinkCollection.cpp | 561 + fbreader/src/network/NetworkLinkCollection.h | 101 + fbreader/src/network/NetworkOperationData.cpp | 37 + fbreader/src/network/NetworkOperationData.h | 45 + fbreader/src/network/SearchResult.cpp | 36 + fbreader/src/network/SearchResult.h | 49 + fbreader/src/network/UserList.cpp | 85 + fbreader/src/network/UserList.h | 44 + fbreader/src/network/atom/ATOMConstructs.cpp | 339 + fbreader/src/network/atom/ATOMConstructs.h | 135 + fbreader/src/network/atom/ATOMContainers.cpp | 49 + fbreader/src/network/atom/ATOMContainers.h | 142 + fbreader/src/network/atom/ATOMMetadata.cpp | 202 + fbreader/src/network/atom/ATOMMetadata.h | 221 + .../NetworkAuthenticationManager.cpp | 80 + .../authentication/NetworkAuthenticationManager.h | 88 + .../litres/LitResAuthenticationDataParser.cpp | 158 + .../litres/LitResAuthenticationDataParser.h | 107 + .../litres/LitResAuthenticationManager.cpp | 472 + .../litres/LitResAuthenticationManager.h | 93 + fbreader/src/network/litres/LitResAuthorsItem.cpp | 111 + fbreader/src/network/litres/LitResAuthorsItem.h | 51 + .../src/network/litres/LitResAuthorsParser.cpp | 185 + fbreader/src/network/litres/LitResAuthorsParser.h | 83 + fbreader/src/network/litres/LitResBookItem.cpp | 70 + fbreader/src/network/litres/LitResBookItem.h | 53 + .../src/network/litres/LitResBooksFeedItem.cpp | 128 + fbreader/src/network/litres/LitResBooksFeedItem.h | 60 + .../src/network/litres/LitResBooksFeedParser.cpp | 433 + .../src/network/litres/LitResBooksFeedParser.h | 89 + .../src/network/litres/LitResBookshelfItem.cpp | 111 + fbreader/src/network/litres/LitResBookshelfItem.h | 51 + fbreader/src/network/litres/LitResByGenresItem.cpp | 71 + fbreader/src/network/litres/LitResByGenresItem.h | 47 + fbreader/src/network/litres/LitResGenre.cpp | 206 + fbreader/src/network/litres/LitResGenre.h | 66 + fbreader/src/network/litres/LitResGenresParser.cpp | 81 + fbreader/src/network/litres/LitResGenresParser.h | 56 + .../network/litres/LitResRecommendationsItem.cpp | 51 + .../src/network/litres/LitResRecommendationsItem.h | 40 + fbreader/src/network/litres/LitResUtil.cpp | 178 + fbreader/src/network/litres/LitResUtil.h | 54 + fbreader/src/network/litres/SortedCatalogItem.cpp | 49 + fbreader/src/network/litres/SortedCatalogItem.h | 100 + .../src/network/opds/NetworkOPDSFeedReader.cpp | 198 + fbreader/src/network/opds/NetworkOPDSFeedReader.h | 60 + fbreader/src/network/opds/OPDSBookItem.cpp | 310 + fbreader/src/network/opds/OPDSBookItem.h | 88 + fbreader/src/network/opds/OPDSCatalogItem.cpp | 81 + fbreader/src/network/opds/OPDSCatalogItem.h | 51 + fbreader/src/network/opds/OPDSFeedReader.h | 40 + fbreader/src/network/opds/OPDSLink.cpp | 216 + fbreader/src/network/opds/OPDSLink.h | 112 + .../src/network/opds/OPDSLink_AdvancedSearch.h | 72 + .../network/opds/OPDSLink_GenericFeedReader.cpp | 134 + .../src/network/opds/OPDSLink_GenericFeedReader.h | 61 + .../src/network/opds/OPDSLink_GenericXMLParser.cpp | 109 + .../src/network/opds/OPDSLink_GenericXMLParser.h | 35 + fbreader/src/network/opds/OPDSMetadata.cpp | 89 + fbreader/src/network/opds/OPDSMetadata.h | 139 + fbreader/src/network/opds/OPDSXMLParser.cpp | 554 + fbreader/src/network/opds/OPDSXMLParser.h | 79 + fbreader/src/network/opds/OpenSearchXMLReader.cpp | 49 + fbreader/src/network/opds/OpenSearchXMLReader.h | 42 + fbreader/src/network/opds/URLRewritingRule.cpp | 77 + fbreader/src/network/opds/URLRewritingRule.h | 50 + fbreader/src/network/tree/NetworkAuthorTree.cpp | 53 + fbreader/src/network/tree/NetworkBookTree.cpp | 262 + .../src/network/tree/NetworkCatalogRootTree.cpp | 265 + fbreader/src/network/tree/NetworkCatalogTree.cpp | 292 + fbreader/src/network/tree/NetworkCatalogUtil.cpp | 92 + fbreader/src/network/tree/NetworkCatalogUtil.h | 45 + fbreader/src/network/tree/NetworkLibrary.cpp | 101 + fbreader/src/network/tree/NetworkLibrary.h | 57 + fbreader/src/network/tree/NetworkSearcher.cpp | 179 + fbreader/src/network/tree/NetworkSearcher.h | 59 + fbreader/src/network/tree/NetworkSeriesTree.cpp | 72 + fbreader/src/network/tree/NetworkTree.cpp | 31 + fbreader/src/network/tree/NetworkTreeFactory.cpp | 123 + fbreader/src/network/tree/NetworkTreeFactory.h | 42 + fbreader/src/network/tree/NetworkTreeNodes.h | 275 + fbreader/src/network/tree/RootTree.cpp | 42 + fbreader/src/network/tree/SearchCatalogTree.cpp | 41 + .../src/networkActions/AuthenticationDialog.cpp | 122 + fbreader/src/networkActions/AuthenticationDialog.h | 50 + .../networkActions/AuthenticationDialogManager.cpp | 192 + .../networkActions/AuthenticationDialogManager.h | 37 + fbreader/src/networkActions/NetworkActions.cpp | 357 + fbreader/src/networkActions/NetworkActions.h | 103 + .../networkActions/NetworkOperationRunnable.cpp | 187 + .../src/networkActions/NetworkOperationRunnable.h | 184 + .../src/networkActions/PasswordRecoveryDialog.cpp | 95 + .../src/networkActions/PasswordRecoveryDialog.h | 46 + fbreader/src/networkActions/RegisterUserDialog.cpp | 146 + fbreader/src/networkActions/RegisterUserDialog.h | 50 + fbreader/src/options/FBCategoryKey.cpp | 27 + fbreader/src/options/FBCategoryKey.h | 36 + fbreader/src/options/FBOptions.cpp | 64 + fbreader/src/options/FBOptions.h | 65 + fbreader/src/options/FBTextStyle.cpp | 107 + fbreader/src/options/FBTextStyle.h | 71 + .../src/optionsDialog/AbstractOptionsDialog.cpp | 48 + fbreader/src/optionsDialog/AbstractOptionsDialog.h | 50 + fbreader/src/optionsDialog/IntegrationTab.cpp | 159 + .../src/optionsDialog/bookInfo/BookInfoDialog.cpp | 564 + .../src/optionsDialog/bookInfo/BookInfoDialog.h | 80 + .../optionsDialog/library/LibraryOptionsDialog.cpp | 39 + .../optionsDialog/library/LibraryOptionsDialog.h | 32 + .../lookAndFeel/FormatOptionsPage.cpp | 112 + .../optionsDialog/lookAndFeel/FormatOptionsPage.h | 33 + .../lookAndFeel/LookAndFeelOptionsDialog.cpp | 78 + .../lookAndFeel/LookAndFeelOptionsDialog.h | 38 + .../src/optionsDialog/lookAndFeel/OptionsPage.cpp | 52 + .../src/optionsDialog/lookAndFeel/OptionsPage.h | 76 + .../optionsDialog/lookAndFeel/StyleOptionsPage.cpp | 127 + .../optionsDialog/lookAndFeel/StyleOptionsPage.h | 34 + .../optionsDialog/network/NetworkOptionsDialog.cpp | 104 + .../optionsDialog/network/NetworkOptionsDialog.h | 32 + .../src/optionsDialog/reading/IndicatorTab.cpp | 171 + .../src/optionsDialog/reading/KeyBindingsTab.cpp | 285 + .../optionsDialog/reading/ReadingOptionsDialog.cpp | 125 + .../optionsDialog/reading/ReadingOptionsDialog.h | 36 + .../optionsDialog/system/SystemOptionsDialog.cpp | 86 + .../src/optionsDialog/system/SystemOptionsDialog.h | 32 + fbreader/src/tree/FBTree.cpp | 142 + fbreader/src/tree/FBTree.h | 64 + fbreader/win32/Makefile | 10 + fbreader/win32/manifest | 22 + fbreader/zaurus/FBReader.240x320.desktop | 7 + fbreader/zaurus/FBReader.640x480.desktop | 8 + fbreader/zaurus/Makefile | 19 + makefiles/arch/bb10.mk | 42 + makefiles/arch/desktop.mk | 23 + makefiles/arch/ebr.mk | 19 + makefiles/arch/iphone.mk | 21 + makefiles/arch/macosx.mk | 34 + makefiles/arch/maemo.mk | 33 + makefiles/arch/moto.mk | 23 + makefiles/arch/opensimpad-0.9.0.mk | 26 + makefiles/arch/openzaurus.mk | 33 + makefiles/arch/pdaxrom.mk | 29 + makefiles/arch/pepperpad3.mk | 1 + makefiles/arch/pma400.mk | 19 + makefiles/arch/pocketpc.mk | 32 + makefiles/arch/qvfb.mk | 19 + makefiles/arch/unix.mk | 0 makefiles/arch/win32.mk | 34 + makefiles/arch/zaurus.mk | 23 + makefiles/config.mk | 54 + makefiles/gtksubdir.mk | 24 + makefiles/packaging.mk | 101 + makefiles/platforms.mk | 13 + makefiles/qsubdir.mk | 24 + makefiles/subdir.mk | 41 + makefiles/target.mk | 4 + zlibrary/VERSION | 1 + zlibrary/core/Makefile | 108 + zlibrary/core/SOVERSION | 1 + zlibrary/core/core.pro | 300 + zlibrary/core/data/default/config.desktop.xml | 9 + zlibrary/core/data/default/config.macosx.xml | 9 + zlibrary/core/data/default/config.maemo.xml | 10 + zlibrary/core/data/default/config.moto.xml | 9 + .../core/data/default/config.opensimpad-0.9.0.xml | 9 + .../core/data/default/config.openzaurus-gpe.xml | 9 + .../core/data/default/config.openzaurus-opie.xml | 9 + zlibrary/core/data/default/config.pdaxrom.xml | 9 + zlibrary/core/data/default/config.pepperpad3.xml | 9 + zlibrary/core/data/default/config.pma400.xml | 9 + zlibrary/core/data/default/config.qvfb.xml | 9 + zlibrary/core/data/default/config.zaurus.xml | 9 + zlibrary/core/data/encodings/Big5 | 13712 ++++++++++++ zlibrary/core/data/encodings/Encodings.xml | 241 + zlibrary/core/data/encodings/GBK | 21888 +++++++++++++++++++ zlibrary/core/data/encodings/IBM866 | 130 + zlibrary/core/data/encodings/ISO-8859-1 | 2 + zlibrary/core/data/encodings/ISO-8859-10 | 97 + zlibrary/core/data/encodings/ISO-8859-11 | 89 + zlibrary/core/data/encodings/ISO-8859-13 | 97 + zlibrary/core/data/encodings/ISO-8859-14 | 97 + zlibrary/core/data/encodings/ISO-8859-15 | 10 + zlibrary/core/data/encodings/ISO-8859-16 | 97 + zlibrary/core/data/encodings/ISO-8859-2 | 97 + zlibrary/core/data/encodings/ISO-8859-3 | 90 + zlibrary/core/data/encodings/ISO-8859-4 | 97 + zlibrary/core/data/encodings/ISO-8859-5 | 130 + zlibrary/core/data/encodings/ISO-8859-6 | 51 + zlibrary/core/data/encodings/ISO-8859-7 | 91 + zlibrary/core/data/encodings/ISO-8859-8 | 53 + zlibrary/core/data/encodings/ISO-8859-9 | 9 + zlibrary/core/data/encodings/KOI8-R | 130 + zlibrary/core/data/encodings/windows-1251 | 130 + zlibrary/core/data/encodings/windows-1252 | 34 + zlibrary/core/data/languagePatterns.zip | Bin 0 -> 218905 bytes zlibrary/core/data/resources/ar.xml | 91 + zlibrary/core/data/resources/bg.xml | 91 + zlibrary/core/data/resources/cs.xml | 91 + zlibrary/core/data/resources/de.xml | 91 + zlibrary/core/data/resources/en.xml | 90 + zlibrary/core/data/resources/eo.xml | 91 + zlibrary/core/data/resources/es.xml | 91 + zlibrary/core/data/resources/fi.xml | 91 + zlibrary/core/data/resources/fr.xml | 91 + zlibrary/core/data/resources/he.xml | 91 + zlibrary/core/data/resources/hu.xml | 91 + zlibrary/core/data/resources/id.xml | 91 + zlibrary/core/data/resources/it.xml | 91 + zlibrary/core/data/resources/lt.xml | 91 + zlibrary/core/data/resources/nl.xml | 91 + zlibrary/core/data/resources/pl.xml | 91 + zlibrary/core/data/resources/ru.xml | 90 + zlibrary/core/data/resources/sv.xml | 91 + zlibrary/core/data/resources/uk.xml | 91 + zlibrary/core/data/resources/vi.xml | 91 + zlibrary/core/data/resources/zh.xml | 91 + zlibrary/core/data/unicode.xml.gz | Bin 0 -> 39400 bytes zlibrary/core/include/ZLApplication.h | 1 + zlibrary/core/include/ZLAsynchronousInputStream.h | 1 + zlibrary/core/include/ZLBase64EncodedImage.h | 1 + zlibrary/core/include/ZLBase64InputStream.h | 1 + zlibrary/core/include/ZLBlockTreeNode.h | 1 + zlibrary/core/include/ZLBlockTreeView.h | 1 + zlibrary/core/include/ZLBoolean3.h | 1 + zlibrary/core/include/ZLColor.h | 1 + zlibrary/core/include/ZLDialog.h | 1 + zlibrary/core/include/ZLDialogContent.h | 1 + zlibrary/core/include/ZLDialogManager.h | 1 + zlibrary/core/include/ZLDir.h | 1 + zlibrary/core/include/ZLEncodingConverter.h | 1 + zlibrary/core/include/ZLExecutionUtil.h | 1 + zlibrary/core/include/ZLFile.h | 1 + zlibrary/core/include/ZLFileImage.h | 1 + zlibrary/core/include/ZLFileInfo.h | 1 + zlibrary/core/include/ZLFileUtil.h | 1 + zlibrary/core/include/ZLHexInputStream.h | 1 + zlibrary/core/include/ZLImage.h | 1 + zlibrary/core/include/ZLImageManager.h | 1 + zlibrary/core/include/ZLInputStream.h | 1 + zlibrary/core/include/ZLKeyBindings.h | 1 + zlibrary/core/include/ZLLanguageDetector.h | 1 + zlibrary/core/include/ZLLanguageList.h | 1 + zlibrary/core/include/ZLLanguageUtil.h | 1 + zlibrary/core/include/ZLLogger.h | 1 + zlibrary/core/include/ZLMessage.h | 1 + zlibrary/core/include/ZLMimeType.h | 1 + zlibrary/core/include/ZLMirroredPaintContext.h | 1 + zlibrary/core/include/ZLNetworkImage.h | 1 + zlibrary/core/include/ZLNetworkManager.h | 1 + zlibrary/core/include/ZLNetworkRequest.h | 1 + zlibrary/core/include/ZLNetworkUtil.h | 1 + zlibrary/core/include/ZLOpenFileDialog.h | 1 + zlibrary/core/include/ZLOptionEntry.h | 1 + zlibrary/core/include/ZLOptions.h | 1 + zlibrary/core/include/ZLOptionsDialog.h | 1 + zlibrary/core/include/ZLOutputStream.h | 1 + zlibrary/core/include/ZLPaintContext.h | 1 + .../core/include/ZLPlainAsynchronousInputStream.h | 1 + zlibrary/core/include/ZLPopupData.h | 1 + zlibrary/core/include/ZLProgressDialog.h | 1 + zlibrary/core/include/ZLResource.h | 1 + zlibrary/core/include/ZLRunnable.h | 1 + zlibrary/core/include/ZLSearchUtil.h | 1 + zlibrary/core/include/ZLSliceInputStream.h | 1 + zlibrary/core/include/ZLStreamImage.h | 1 + zlibrary/core/include/ZLStringUtil.h | 1 + zlibrary/core/include/ZLTime.h | 1 + zlibrary/core/include/ZLTimeManager.h | 1 + zlibrary/core/include/ZLTreeActionNode.h | 1 + zlibrary/core/include/ZLTreeDialog.h | 1 + zlibrary/core/include/ZLTreeListener.h | 1 + zlibrary/core/include/ZLTreeNode.h | 1 + zlibrary/core/include/ZLTreePageNode.h | 1 + zlibrary/core/include/ZLTreeSearcher.h | 1 + zlibrary/core/include/ZLTreeTitledNode.h | 1 + zlibrary/core/include/ZLTypeId.h | 1 + zlibrary/core/include/ZLUnicodeUtil.h | 1 + zlibrary/core/include/ZLUserData.h | 1 + zlibrary/core/include/ZLView.h | 1 + zlibrary/core/include/ZLXMLNamespace.h | 1 + zlibrary/core/include/ZLXMLReader.h | 1 + zlibrary/core/include/ZLXMLWriter.h | 1 + zlibrary/core/include/ZLZDecompressor.h | 1 + zlibrary/core/include/ZLibrary.h | 1 + zlibrary/core/include/allocator.h | 1 + .../include/optionEntries/ZLColorOptionBuilder.h | 1 + .../optionEntries/ZLFontFamilyOptionEntry.h | 1 + .../include/optionEntries/ZLLanguageOptionEntry.h | 1 + .../include/optionEntries/ZLSimpleKeyOptionEntry.h | 1 + .../include/optionEntries/ZLSimpleOptionEntry.h | 1 + .../optionEntries/ZLStringEditOptionEntry.h | 1 + .../core/include/optionEntries/ZLStringInfoEntry.h | 1 + .../optionEntries/ZLToggleBooleanOptionEntry.h | 1 + zlibrary/core/include/shared_ptr.h | 1 + zlibrary/core/src/application/ZLApplication.cpp | 306 + zlibrary/core/src/application/ZLApplication.h | 201 + .../core/src/application/ZLApplicationActions.cpp | 64 + .../core/src/application/ZLApplicationBase.cpp | 42 + .../core/src/application/ZLApplicationWindow.cpp | 217 + .../core/src/application/ZLApplicationWindow.h | 129 + zlibrary/core/src/application/ZLKeyBindings.cpp | 133 + zlibrary/core/src/application/ZLKeyBindings.h | 48 + zlibrary/core/src/application/ZLMenu.cpp | 171 + zlibrary/core/src/application/ZLMenu.h | 127 + zlibrary/core/src/application/ZLPopupData.h | 43 + zlibrary/core/src/application/ZLToolbar.cpp | 289 + zlibrary/core/src/application/ZLToolbar.h | 190 + .../core/src/blockTreeView/ZLBlockTreeNode.cpp | 169 + zlibrary/core/src/blockTreeView/ZLBlockTreeNode.h | 104 + .../core/src/blockTreeView/ZLBlockTreeView.cpp | 294 + zlibrary/core/src/blockTreeView/ZLBlockTreeView.h | 97 + zlibrary/core/src/constants/ZLMimeType.cpp | 133 + zlibrary/core/src/constants/ZLMimeType.h | 93 + zlibrary/core/src/constants/ZLXMLNamespace.cpp | 32 + zlibrary/core/src/constants/ZLXMLNamespace.h | 44 + .../application/ZLDesktopApplicationWindow.cpp | 31 + .../application/ZLDesktopApplicationWindow.h | 46 + .../desktop/dialogs/ZLDesktopOpenFileDialog.cpp | 47 + .../src/desktop/dialogs/ZLDesktopOpenFileDialog.h | 50 + .../src/desktop/dialogs/ZLDesktopOptionsDialog.cpp | 31 + .../src/desktop/dialogs/ZLDesktopOptionsDialog.h | 45 + zlibrary/core/src/dialogs/ZLDialog.cpp | 47 + zlibrary/core/src/dialogs/ZLDialog.h | 51 + zlibrary/core/src/dialogs/ZLDialogContent.cpp | 94 + zlibrary/core/src/dialogs/ZLDialogContent.h | 65 + .../core/src/dialogs/ZLDialogContentBuilder.cpp | 36 + zlibrary/core/src/dialogs/ZLDialogContentBuilder.h | 32 + zlibrary/core/src/dialogs/ZLDialogManager.cpp | 102 + zlibrary/core/src/dialogs/ZLDialogManager.h | 101 + zlibrary/core/src/dialogs/ZLOpenFileDialog.cpp | 23 + zlibrary/core/src/dialogs/ZLOpenFileDialog.h | 43 + zlibrary/core/src/dialogs/ZLOptionEntry.cpp | 72 + zlibrary/core/src/dialogs/ZLOptionEntry.h | 294 + zlibrary/core/src/dialogs/ZLOptionView.cpp | 61 + zlibrary/core/src/dialogs/ZLOptionView.h | 62 + zlibrary/core/src/dialogs/ZLOptionsDialog.cpp | 55 + zlibrary/core/src/dialogs/ZLOptionsDialog.h | 75 + zlibrary/core/src/dialogs/ZLProgressDialog.cpp | 70 + zlibrary/core/src/dialogs/ZLProgressDialog.h | 49 + zlibrary/core/src/dialogs/ZLTreeDialog.cpp | 43 + zlibrary/core/src/dialogs/ZLTreeDialog.h | 54 + .../core/src/encoding/DummyEncodingConverter.cpp | 64 + .../core/src/encoding/DummyEncodingConverter.h | 33 + .../core/src/encoding/EncodingCollectionReader.cpp | 82 + .../core/src/encoding/EncodingCollectionReader.h | 44 + zlibrary/core/src/encoding/MyEncodingConverter.cpp | 322 + zlibrary/core/src/encoding/MyEncodingConverter.h | 39 + .../core/src/encoding/Utf8EncodingConverter.cpp | 92 + zlibrary/core/src/encoding/Utf8EncodingConverter.h | 33 + .../core/src/encoding/ZLEncodingCollection.cpp | 93 + zlibrary/core/src/encoding/ZLEncodingConverter.cpp | 90 + zlibrary/core/src/encoding/ZLEncodingConverter.h | 130 + .../src/encoding/ZLEncodingConverterProvider.h | 44 + zlibrary/core/src/encoding/ZLEncodingSet.cpp | 35 + zlibrary/core/src/filesystem/ZLDir.cpp | 57 + zlibrary/core/src/filesystem/ZLDir.h | 58 + zlibrary/core/src/filesystem/ZLFSDir.h | 39 + zlibrary/core/src/filesystem/ZLFSManager.cpp | 66 + zlibrary/core/src/filesystem/ZLFSManager.h | 85 + zlibrary/core/src/filesystem/ZLFSPlugin.h | 63 + zlibrary/core/src/filesystem/ZLFSPluginManager.cpp | 133 + zlibrary/core/src/filesystem/ZLFSPluginManager.h | 62 + zlibrary/core/src/filesystem/ZLFile.cpp | 250 + zlibrary/core/src/filesystem/ZLFile.h | 129 + zlibrary/core/src/filesystem/ZLFileInfo.h | 34 + zlibrary/core/src/filesystem/ZLInputStream.h | 71 + .../core/src/filesystem/ZLInputStreamDecorator.cpp | 59 + zlibrary/core/src/filesystem/ZLOutputStream.h | 45 + .../src/filesystem/bzip2/ZLBzip2InputStream.cpp | 117 + .../core/src/filesystem/bzip2/ZLBzip2InputStream.h | 63 + .../src/filesystem/bzip2/ZLFSCompressorBzip2.cpp | 55 + .../src/filesystem/bzip2/ZLFSCompressorBzip2.h | 35 + .../core/src/filesystem/tar/ZLFSArchiverTar.cpp | 66 + zlibrary/core/src/filesystem/tar/ZLFSArchiverTar.h | 36 + zlibrary/core/src/filesystem/tar/ZLTar.cpp | 202 + zlibrary/core/src/filesystem/tar/ZLTar.h | 74 + .../core/src/filesystem/zip/ZLFSArchiverZip.cpp | 58 + zlibrary/core/src/filesystem/zip/ZLFSArchiverZip.h | 36 + .../core/src/filesystem/zip/ZLFSCompressorGzip.cpp | 55 + .../core/src/filesystem/zip/ZLFSCompressorGzip.h | 35 + .../core/src/filesystem/zip/ZLGzipInputStream.cpp | 121 + .../core/src/filesystem/zip/ZLZDecompressor.cpp | 85 + zlibrary/core/src/filesystem/zip/ZLZDecompressor.h | 45 + zlibrary/core/src/filesystem/zip/ZLZip.h | 143 + zlibrary/core/src/filesystem/zip/ZLZipDir.cpp | 32 + .../core/src/filesystem/zip/ZLZipEntryCache.cpp | 85 + zlibrary/core/src/filesystem/zip/ZLZipHeader.cpp | 131 + zlibrary/core/src/filesystem/zip/ZLZipHeader.h | 51 + .../core/src/filesystem/zip/ZLZipInputStream.cpp | 112 + zlibrary/core/src/image/ZLBase64EncodedImage.cpp | 77 + zlibrary/core/src/image/ZLBase64EncodedImage.h | 47 + zlibrary/core/src/image/ZLFileImage.cpp | 135 + zlibrary/core/src/image/ZLFileImage.h | 61 + zlibrary/core/src/image/ZLHexEncodedImage.cpp | 73 + zlibrary/core/src/image/ZLHexEncodedImage.h | 41 + zlibrary/core/src/image/ZLImage.cpp | 71 + zlibrary/core/src/image/ZLImage.h | 83 + zlibrary/core/src/image/ZLImageManager.cpp | 321 + zlibrary/core/src/image/ZLImageManager.h | 83 + zlibrary/core/src/image/ZLNetworkImage.cpp | 88 + zlibrary/core/src/image/ZLNetworkImage.h | 43 + zlibrary/core/src/image/ZLStreamImage.cpp | 46 + zlibrary/core/src/image/ZLStreamImage.h | 44 + zlibrary/core/src/language/ZLCharSequence.cpp | 106 + zlibrary/core/src/language/ZLCharSequence.h | 71 + zlibrary/core/src/language/ZLLanguageDetector.cpp | 130 + zlibrary/core/src/language/ZLLanguageDetector.h | 51 + zlibrary/core/src/language/ZLLanguageList.cpp | 59 + zlibrary/core/src/language/ZLLanguageList.h | 41 + zlibrary/core/src/language/ZLLanguageMatcher.cpp | 53 + zlibrary/core/src/language/ZLLanguageMatcher.h | 52 + zlibrary/core/src/language/ZLStatistics.cpp | 339 + zlibrary/core/src/language/ZLStatistics.h | 139 + .../core/src/language/ZLStatisticsGenerator.cpp | 89 + zlibrary/core/src/language/ZLStatisticsGenerator.h | 48 + zlibrary/core/src/language/ZLStatisticsItem.cpp | 59 + zlibrary/core/src/language/ZLStatisticsItem.h | 91 + .../core/src/language/ZLStatisticsXMLReader.cpp | 68 + zlibrary/core/src/language/ZLStatisticsXMLReader.h | 45 + .../core/src/language/ZLStatisticsXMLWriter.cpp | 81 + zlibrary/core/src/language/ZLStatisticsXMLWriter.h | 41 + zlibrary/core/src/library/ZLibrary.cpp | 136 + zlibrary/core/src/library/ZLibrary.h | 89 + zlibrary/core/src/logger/ZLLogger.cpp | 57 + zlibrary/core/src/logger/ZLLogger.h | 48 + zlibrary/core/src/message/ZLMessage.cpp | 135 + zlibrary/core/src/message/ZLMessage.h | 92 + .../core/src/network/ZLAsynchronousInputStream.cpp | 43 + .../core/src/network/ZLAsynchronousInputStream.h | 72 + .../src/network/ZLGzipAsynchronousInputStream.cpp | 158 + .../src/network/ZLGzipAsynchronousInputStream.h | 55 + zlibrary/core/src/network/ZLNetworkManager.cpp | 178 + zlibrary/core/src/network/ZLNetworkManager.h | 103 + zlibrary/core/src/network/ZLNetworkRequest.cpp | 85 + zlibrary/core/src/network/ZLNetworkRequest.h | 120 + zlibrary/core/src/network/ZLNetworkUtil.cpp | 141 + zlibrary/core/src/network/ZLNetworkUtil.h | 42 + .../src/network/ZLPlainAsynchronousInputStream.cpp | 33 + .../src/network/ZLPlainAsynchronousInputStream.h | 40 + .../network/requests/ZLNetworkDownloadRequest.cpp | 87 + .../network/requests/ZLNetworkDownloadRequest.h | 52 + .../network/requests/ZLNetworkNoActionRequest.cpp | 38 + .../network/requests/ZLNetworkNoActionRequest.h | 38 + .../requests/ZLNetworkReadToStringRequest.cpp | 60 + .../requests/ZLNetworkReadToStringRequest.h | 43 + .../network/requests/ZLNetworkXMLParserRequest.cpp | 91 + .../network/requests/ZLNetworkXMLParserRequest.h | 50 + .../src/optionEntries/ZLColorOptionBuilder.cpp | 141 + .../core/src/optionEntries/ZLColorOptionBuilder.h | 42 + .../src/optionEntries/ZLFontFamilyOptionEntry.cpp | 41 + .../src/optionEntries/ZLFontFamilyOptionEntry.h | 44 + .../src/optionEntries/ZLLanguageOptionEntry.cpp | 68 + .../core/src/optionEntries/ZLLanguageOptionEntry.h | 57 + .../src/optionEntries/ZLSimpleKeyOptionEntry.cpp | 62 + .../src/optionEntries/ZLSimpleKeyOptionEntry.h | 58 + .../core/src/optionEntries/ZLSimpleOptionEntry.cpp | 96 + .../core/src/optionEntries/ZLSimpleOptionEntry.h | 97 + .../src/optionEntries/ZLStringEditOptionEntry.cpp | 31 + .../src/optionEntries/ZLStringEditOptionEntry.h | 36 + .../core/src/optionEntries/ZLStringInfoEntry.cpp | 38 + .../core/src/optionEntries/ZLStringInfoEntry.h | 39 + .../optionEntries/ZLToggleBooleanOptionEntry.cpp | 33 + .../src/optionEntries/ZLToggleBooleanOptionEntry.h | 37 + zlibrary/core/src/options/ZLCategoryKey.cpp | 38 + zlibrary/core/src/options/ZLConfig.cpp | 29 + zlibrary/core/src/options/ZLConfig.h | 76 + zlibrary/core/src/options/ZLOptions.cpp | 311 + zlibrary/core/src/options/ZLOptions.h | 217 + zlibrary/core/src/resources/ZLResource.cpp | 355 + zlibrary/core/src/resources/ZLResource.h | 59 + zlibrary/core/src/runnable/ZLExecutionUtil.cpp | 54 + zlibrary/core/src/runnable/ZLExecutionUtil.h | 77 + zlibrary/core/src/runnable/ZLRunnable.cpp | 29 + zlibrary/core/src/runnable/ZLRunnable.h | 45 + zlibrary/core/src/time/ZLTime.cpp | 63 + zlibrary/core/src/time/ZLTime.h | 46 + zlibrary/core/src/time/ZLTimeManager.cpp | 88 + zlibrary/core/src/time/ZLTimeManager.h | 94 + zlibrary/core/src/tree/ZLTreeActionNode.cpp | 26 + zlibrary/core/src/tree/ZLTreeActionNode.h | 36 + zlibrary/core/src/tree/ZLTreeListener.h | 49 + zlibrary/core/src/tree/ZLTreeNode.cpp | 228 + zlibrary/core/src/tree/ZLTreeNode.h | 125 + zlibrary/core/src/tree/ZLTreePageNode.cpp | 41 + zlibrary/core/src/tree/ZLTreePageNode.h | 53 + zlibrary/core/src/tree/ZLTreeSearcher.h | 30 + zlibrary/core/src/tree/ZLTreeTitledNode.cpp | 45 + zlibrary/core/src/tree/ZLTreeTitledNode.h | 49 + zlibrary/core/src/typeId/ZLTypeId.cpp | 42 + zlibrary/core/src/typeId/ZLTypeId.h | 79 + .../core/src/unix/curl/ZLCurlNetworkManager.cpp | 313 + zlibrary/core/src/unix/curl/ZLCurlNetworkManager.h | 51 + zlibrary/core/src/unix/filesystem/ZLUnixFSDir.cpp | 77 + zlibrary/core/src/unix/filesystem/ZLUnixFSDir.h | 34 + .../core/src/unix/filesystem/ZLUnixFSManager.cpp | 200 + .../core/src/unix/filesystem/ZLUnixFSManager.h | 48 + .../src/unix/filesystem/ZLUnixFileInputStream.cpp | 92 + .../src/unix/filesystem/ZLUnixFileInputStream.h | 46 + .../src/unix/filesystem/ZLUnixFileOutputStream.cpp | 70 + .../src/unix/filesystem/ZLUnixFileOutputStream.h | 44 + .../core/src/unix/iconv/IConvEncodingConverter.cpp | 146 + .../core/src/unix/iconv/IConvEncodingConverter.h | 33 + zlibrary/core/src/unix/library/ZLibrary.cpp | 143 + .../core/src/unix/library/ZLibraryImplementation.h | 42 + zlibrary/core/src/unix/time/ZLUnixTime.cpp | 56 + zlibrary/core/src/unix/time/ZLUnixTime.h | 37 + zlibrary/core/src/unix/xmlconfig/AsciiEncoder.cpp | 100 + zlibrary/core/src/unix/xmlconfig/AsciiEncoder.h | 32 + zlibrary/core/src/unix/xmlconfig/XMLConfig.cpp | 201 + zlibrary/core/src/unix/xmlconfig/XMLConfig.h | 118 + .../core/src/unix/xmlconfig/XMLConfigDelta.cpp | 86 + zlibrary/core/src/unix/xmlconfig/XMLConfigDelta.h | 88 + .../src/unix/xmlconfig/XMLConfigDeltaWriter.cpp | 54 + .../core/src/unix/xmlconfig/XMLConfigDeltaWriter.h | 37 + zlibrary/core/src/unix/xmlconfig/XMLConfigIO.cpp | 103 + .../core/src/unix/xmlconfig/XMLConfigReader.cpp | 71 + zlibrary/core/src/unix/xmlconfig/XMLConfigReader.h | 43 + zlibrary/core/src/unix/xmlconfig/XMLConfigValue.h | 32 + .../core/src/unix/xmlconfig/XMLConfigWriter.cpp | 54 + zlibrary/core/src/unix/xmlconfig/XMLConfigWriter.h | 40 + zlibrary/core/src/util/ZLBase64InputStream.cpp | 228 + zlibrary/core/src/util/ZLBase64InputStream.h | 54 + zlibrary/core/src/util/ZLBoolean3.h | 29 + zlibrary/core/src/util/ZLColor.h | 42 + zlibrary/core/src/util/ZLFileUtil.cpp | 52 + zlibrary/core/src/util/ZLFileUtil.h | 34 + zlibrary/core/src/util/ZLHexInputStream.cpp | 123 + zlibrary/core/src/util/ZLHexInputStream.h | 50 + zlibrary/core/src/util/ZLKeyUtil.cpp | 100 + zlibrary/core/src/util/ZLKeyUtil.h | 46 + zlibrary/core/src/util/ZLLanguageUtil.cpp | 163 + zlibrary/core/src/util/ZLLanguageUtil.h | 38 + zlibrary/core/src/util/ZLSearchUtil.cpp | 77 + zlibrary/core/src/util/ZLSearchUtil.h | 60 + zlibrary/core/src/util/ZLSliceInputStream.cpp | 71 + zlibrary/core/src/util/ZLSliceInputStream.h | 43 + zlibrary/core/src/util/ZLStringUtil.cpp | 173 + zlibrary/core/src/util/ZLStringUtil.h | 84 + zlibrary/core/src/util/ZLUnicodeUtil.cpp | 523 + zlibrary/core/src/util/ZLUnicodeUtil.h | 83 + zlibrary/core/src/util/ZLUserData.cpp | 46 + zlibrary/core/src/util/ZLUserData.h | 50 + zlibrary/core/src/util/allocator.h | 83 + zlibrary/core/src/util/shared_ptr.h | 424 + zlibrary/core/src/view/ZLMirroredPaintContext.cpp | 98 + zlibrary/core/src/view/ZLMirroredPaintContext.h | 72 + zlibrary/core/src/view/ZLPaintContext.cpp | 75 + zlibrary/core/src/view/ZLPaintContext.h | 98 + zlibrary/core/src/view/ZLView.cpp | 248 + zlibrary/core/src/view/ZLView.h | 110 + zlibrary/core/src/view/ZLViewWidget.h | 68 + zlibrary/core/src/win32/config/RegistryUtil.cpp | 102 + zlibrary/core/src/win32/config/StringEncoder.cpp | 92 + zlibrary/core/src/win32/config/StringEncoder.h | 32 + zlibrary/core/src/win32/config/ZLWin32Config.cpp | 174 + zlibrary/core/src/win32/config/ZLWin32Config.h | 111 + zlibrary/core/src/win32/config/ZLWin32ConfigIO.cpp | 64 + .../core/src/win32/config/ZLWin32ConfigValue.h | 32 + .../win32/encoding/ZLWin32EncodingConverter.cpp | 222 + .../src/win32/encoding/ZLWin32EncodingConverter.h | 33 + .../core/src/win32/filesystem/ZLWin32FSDir.cpp | 91 + zlibrary/core/src/win32/filesystem/ZLWin32FSDir.h | 34 + .../core/src/win32/filesystem/ZLWin32FSManager.cpp | 224 + .../core/src/win32/filesystem/ZLWin32FSManager.h | 58 + .../win32/filesystem/ZLWin32FileInputStream.cpp | 95 + .../src/win32/filesystem/ZLWin32FileInputStream.h | 47 + .../win32/filesystem/ZLWin32FileOutputStream.cpp | 60 + .../src/win32/filesystem/ZLWin32FileOutputStream.h | 44 + .../core/src/win32/filesystem/ZLWin32RootDir.cpp | 36 + .../core/src/win32/filesystem/ZLWin32RootDir.h | 34 + zlibrary/core/src/win32/util/W32WCHARUtil.h | 45 + zlibrary/core/src/xml/ZLXMLReader.cpp | 257 + zlibrary/core/src/xml/ZLXMLReader.h | 125 + zlibrary/core/src/xml/ZLXMLWriter.cpp | 132 + zlibrary/core/src/xml/ZLXMLWriter.h | 88 + .../core/src/xml/expat/ZLXMLReaderInternal.cpp | 170 + zlibrary/core/src/xml/expat/ZLXMLReaderInternal.h | 54 + zlibrary/text/Makefile | 73 + zlibrary/text/SOVERSION | 1 + zlibrary/text/data/hyphenationPatterns.zip | Bin 0 -> 423983 bytes zlibrary/text/include/ZLHyperlinkType.h | 1 + zlibrary/text/include/ZLTextAlignmentType.h | 1 + zlibrary/text/include/ZLTextArea.h | 1 + zlibrary/text/include/ZLTextAreaController.h | 1 + zlibrary/text/include/ZLTextElement.h | 1 + zlibrary/text/include/ZLTextHyphenator.h | 1 + zlibrary/text/include/ZLTextKind.h | 1 + zlibrary/text/include/ZLTextMark.h | 1 + zlibrary/text/include/ZLTextModel.h | 1 + zlibrary/text/include/ZLTextParagraph.h | 1 + zlibrary/text/include/ZLTextParagraphCursor.h | 1 + zlibrary/text/include/ZLTextPositionIndicator.h | 1 + .../text/include/ZLTextPositionIndicatorInfo.h | 1 + zlibrary/text/include/ZLTextRectangle.h | 1 + zlibrary/text/include/ZLTextRowMemoryAllocator.h | 1 + zlibrary/text/include/ZLTextSelectionModel.h | 1 + zlibrary/text/include/ZLTextStyle.h | 1 + zlibrary/text/include/ZLTextStyleCollection.h | 1 + zlibrary/text/include/ZLTextStyleEntry.h | 1 + zlibrary/text/include/ZLTextStyleOptions.h | 1 + zlibrary/text/include/ZLTextTeXHyphenator.h | 1 + zlibrary/text/include/ZLTextView.h | 1 + zlibrary/text/include/ZLTextWord.h | 1 + zlibrary/text/src/area/ZLTextArea.cpp | 198 + zlibrary/text/src/area/ZLTextArea.h | 149 + zlibrary/text/src/area/ZLTextAreaController.cpp | 399 + zlibrary/text/src/area/ZLTextAreaController.h | 96 + zlibrary/text/src/area/ZLTextAreaStyle.cpp | 180 + zlibrary/text/src/area/ZLTextAreaStyle.h | 64 + zlibrary/text/src/area/ZLTextArea_drawTextLine.cpp | 260 + .../text/src/area/ZLTextArea_drawTreeLines.cpp | 83 + zlibrary/text/src/area/ZLTextArea_drawWord.cpp | 104 + .../text/src/area/ZLTextArea_prepareTextLine.cpp | 187 + .../text/src/area/ZLTextArea_processTextLine.cpp | 281 + zlibrary/text/src/area/ZLTextElement.cpp | 40 + zlibrary/text/src/area/ZLTextElement.h | 161 + zlibrary/text/src/area/ZLTextLineInfo.h | 74 + zlibrary/text/src/area/ZLTextParagraphBuilder.cpp | 212 + zlibrary/text/src/area/ZLTextParagraphBuilder.h | 67 + zlibrary/text/src/area/ZLTextParagraphCursor.cpp | 368 + zlibrary/text/src/area/ZLTextParagraphCursor.h | 277 + zlibrary/text/src/area/ZLTextRectangle.h | 71 + zlibrary/text/src/area/ZLTextSelectionModel.cpp | 560 + zlibrary/text/src/area/ZLTextSelectionModel.h | 117 + zlibrary/text/src/area/ZLTextWord.cpp | 53 + zlibrary/text/src/area/ZLTextWord.h | 99 + .../src/hyphenation/ZLTextHyphenationReader.cpp | 53 + .../text/src/hyphenation/ZLTextHyphenationReader.h | 45 + zlibrary/text/src/hyphenation/ZLTextHyphenator.cpp | 78 + zlibrary/text/src/hyphenation/ZLTextHyphenator.h | 77 + .../text/src/hyphenation/ZLTextTeXHyphenator.cpp | 175 + .../text/src/hyphenation/ZLTextTeXHyphenator.h | 76 + zlibrary/text/src/model/ZLHyperlinkType.h | 25 + zlibrary/text/src/model/ZLTextAlignmentType.h | 32 + zlibrary/text/src/model/ZLTextKind.h | 25 + zlibrary/text/src/model/ZLTextMark.h | 64 + zlibrary/text/src/model/ZLTextModel.cpp | 281 + zlibrary/text/src/model/ZLTextModel.h | 135 + zlibrary/text/src/model/ZLTextParagraph.cpp | 256 + zlibrary/text/src/model/ZLTextParagraph.h | 309 + .../text/src/model/ZLTextRowMemoryAllocator.cpp | 66 + zlibrary/text/src/model/ZLTextRowMemoryAllocator.h | 45 + zlibrary/text/src/model/ZLTextStyleEntry.h | 160 + zlibrary/text/src/style/ZLTextDecoratedStyle.cpp | 203 + zlibrary/text/src/style/ZLTextDecoratedStyle.h | 169 + zlibrary/text/src/style/ZLTextStyle.cpp | 25 + zlibrary/text/src/style/ZLTextStyle.h | 74 + zlibrary/text/src/style/ZLTextStyleCollection.cpp | 157 + zlibrary/text/src/style/ZLTextStyleCollection.h | 113 + .../text/src/styleOptions/ZLTextStyleOptions.cpp | 187 + .../text/src/styleOptions/ZLTextStyleOptions.h | 116 + zlibrary/text/src/view/ZLTextPositionIndicator.cpp | 285 + zlibrary/text/src/view/ZLTextPositionIndicator.h | 63 + .../text/src/view/ZLTextPositionIndicatorInfo.h | 55 + zlibrary/text/src/view/ZLTextSelectionScroller.cpp | 39 + zlibrary/text/src/view/ZLTextSelectionScroller.h | 53 + zlibrary/text/src/view/ZLTextView.cpp | 671 + zlibrary/text/src/view/ZLTextView.h | 158 + zlibrary/text/src/view/ZLTextView_paint.cpp | 63 + zlibrary/text/text.pro | 80 + zlibrary/ui/Makefile | 169 + zlibrary/ui/SOVERSION | 1 + zlibrary/ui/data/keynames.desktop-gtk.xml | 51 + zlibrary/ui/data/keynames.desktop-qt.xml | 86 + zlibrary/ui/data/keynames.desktop-qt4.xml | 84 + zlibrary/ui/data/keynames.macosx-cocoa.xml | 90 + zlibrary/ui/data/keynames.macosx-qt4.xml | 84 + zlibrary/ui/data/keynames.maemo-maemo.xml | 16 + zlibrary/ui/data/keynames.maemo-maemo2.xml | 1 + zlibrary/ui/data/keynames.maemo-maemo3.xml | 1 + zlibrary/ui/data/keynames.maemo-maemo4.xml | 1 + zlibrary/ui/data/keynames.maemo-maemo5.xml | 1 + zlibrary/ui/data/keynames.moto-ezx.xml | 19 + .../ui/data/keynames.opensimpad-0.9.0-opie.xml | 1 + zlibrary/ui/data/keynames.opensimpad-opie.xml | 43 + zlibrary/ui/data/keynames.openzaurus-gpe.xml | 51 + zlibrary/ui/data/keynames.openzaurus-opie.xml | 44 + zlibrary/ui/data/keynames.pdaxrom-gtk.xml | 51 + zlibrary/ui/data/keynames.pdaxrom-qt.xml | 48 + zlibrary/ui/data/keynames.pepperpad3-gtk.xml | 51 + zlibrary/ui/data/keynames.pma400-qtopia.xml | 11 + zlibrary/ui/data/keynames.qvfb-opie.xml | 1 + zlibrary/ui/data/keynames.win32-win32.xml | 85 + .../ui/data/keynames.zaurus-qtopia-240x320.xml | 1 + .../ui/data/keynames.zaurus-qtopia-640x480.xml | 1 + zlibrary/ui/data/keynames.zaurus-qtopia.xml | 89 + zlibrary/ui/data/messages.maemo.xml | 4 + zlibrary/ui/data/style.desktop.qss | 14 + zlibrary/ui/data/style.macosx.qss | 1 + zlibrary/ui/src/cocoa/application/CocoaWindow.M | 44 + zlibrary/ui/src/cocoa/application/CocoaWindow.h | 26 + .../cocoa/application/ZLCocoaApplicationWindow.M | 198 + .../cocoa/application/ZLCocoaApplicationWindow.h | 64 + .../src/cocoa/application/ZLCocoaToolbarDelegate.M | 110 + .../src/cocoa/application/ZLCocoaToolbarDelegate.h | 36 + .../ui/src/cocoa/dialogs/ZLCocoaDialogManager.M | 109 + .../ui/src/cocoa/dialogs/ZLCocoaDialogManager.h | 58 + .../ui/src/cocoa/dialogs/ZLCocoaOpenFileDialog.M | 91 + .../ui/src/cocoa/dialogs/ZLCocoaOpenFileDialog.h | 42 + .../ui/src/cocoa/dialogs/ZLCocoaProgressDialog.M | 30 + .../ui/src/cocoa/dialogs/ZLCocoaProgressDialog.h | 37 + .../ui/src/cocoa/filesystem/ZLCocoaFSManager.M | 40 + .../ui/src/cocoa/filesystem/ZLCocoaFSManager.h | 39 + zlibrary/ui/src/cocoa/image/ZLCocoaImageManager.M | 90 + zlibrary/ui/src/cocoa/image/ZLCocoaImageManager.h | 65 + zlibrary/ui/src/cocoa/library/ZLCocoaAppDelegate.M | 63 + zlibrary/ui/src/cocoa/library/ZLCocoaAppDelegate.h | 28 + zlibrary/ui/src/cocoa/library/ZLibrary.M | 85 + zlibrary/ui/src/cocoa/message/ZLCocoaMessage.M | 49 + zlibrary/ui/src/cocoa/message/ZLCocoaMessage.h | 56 + zlibrary/ui/src/cocoa/time/ZLCocoaTimeManager.M | 78 + zlibrary/ui/src/cocoa/time/ZLCocoaTimeManager.h | 52 + zlibrary/ui/src/cocoa/util/ZLCocoaKeyUtil.M | 41 + zlibrary/ui/src/cocoa/util/ZLCocoaKeyUtil.h | 31 + zlibrary/ui/src/cocoa/view/CocoaView.M | 131 + zlibrary/ui/src/cocoa/view/CocoaView.h | 26 + zlibrary/ui/src/cocoa/view/ZLCocoaPaintContext.M | 199 + zlibrary/ui/src/cocoa/view/ZLCocoaPaintContext.h | 73 + zlibrary/ui/src/cocoa/view/ZLCocoaViewWidget.M | 55 + zlibrary/ui/src/cocoa/view/ZLCocoaViewWidget.h | 43 + .../src/ezx/application/ZLQtApplicationWindow.cpp | 472 + .../ui/src/ezx/application/ZLQtApplicationWindow.h | 184 + zlibrary/ui/src/ezx/application/ZLQtMenuAction.h | 43 + zlibrary/ui/src/ezx/application/moc.mk | 1 + zlibrary/ui/src/ezx/dialogs/ZLFullScreenDialog.cpp | 92 + zlibrary/ui/src/ezx/dialogs/ZLFullScreenDialog.h | 54 + zlibrary/ui/src/ezx/dialogs/ZLQtDialog.cpp | 79 + zlibrary/ui/src/ezx/dialogs/ZLQtDialog.h | 47 + zlibrary/ui/src/ezx/dialogs/ZLQtDialogContent.cpp | 98 + zlibrary/ui/src/ezx/dialogs/ZLQtDialogContent.h | 71 + zlibrary/ui/src/ezx/dialogs/ZLQtDialogManager.cpp | 82 + zlibrary/ui/src/ezx/dialogs/ZLQtDialogManager.h | 54 + zlibrary/ui/src/ezx/dialogs/ZLQtOptionsDialog.cpp | 114 + zlibrary/ui/src/ezx/dialogs/ZLQtOptionsDialog.h | 65 + .../ui/src/ezx/dialogs/ZLQtSelectionDialog.cpp | 173 + zlibrary/ui/src/ezx/dialogs/ZLQtSelectionDialog.h | 79 + zlibrary/ui/src/ezx/dialogs/ZLQtUtil.cpp | 38 + zlibrary/ui/src/ezx/dialogs/ZLQtUtil.h | 32 + zlibrary/ui/src/ezx/dialogs/moc.mk | 1 + zlibrary/ui/src/ezx/library/ZLibrary.cpp | 71 + zlibrary/ui/src/ezx/optionView/ZLQtOptionView.cpp | 576 + zlibrary/ui/src/ezx/optionView/ZLQtOptionView.h | 252 + .../ui/src/ezx/optionView/ZLQtOptionViewHolder.cpp | 52 + .../ui/src/ezx/optionView/ZLQtOptionViewHolder.h | 49 + zlibrary/ui/src/ezx/optionView/moc.mk | 1 + zlibrary/ui/src/ezx/view/ZLQtPaintContext.cpp | 224 + zlibrary/ui/src/ezx/view/ZLQtPaintContext.h | 76 + zlibrary/ui/src/ezx/view/ZLQtViewWidget.cpp | 170 + zlibrary/ui/src/ezx/view/ZLQtViewWidget.h | 74 + .../src/gpe/application/ZLGtkApplicationWindow.cpp | 193 + .../src/gpe/application/ZLGtkApplicationWindow.h | 69 + zlibrary/ui/src/gpe/dialogs/ZLGtkDialog.cpp | 50 + zlibrary/ui/src/gpe/dialogs/ZLGtkDialog.h | 41 + zlibrary/ui/src/gpe/dialogs/ZLGtkDialogContent.cpp | 96 + zlibrary/ui/src/gpe/dialogs/ZLGtkDialogContent.h | 50 + zlibrary/ui/src/gpe/dialogs/ZLGtkDialogManager.cpp | 106 + zlibrary/ui/src/gpe/dialogs/ZLGtkDialogManager.h | 65 + zlibrary/ui/src/gpe/dialogs/ZLGtkOptionView.cpp | 542 + zlibrary/ui/src/gpe/dialogs/ZLGtkOptionView.h | 210 + zlibrary/ui/src/gpe/dialogs/ZLGtkOptionsDialog.cpp | 88 + zlibrary/ui/src/gpe/dialogs/ZLGtkOptionsDialog.h | 51 + .../ui/src/gpe/dialogs/ZLGtkSelectionDialog.cpp | 198 + zlibrary/ui/src/gpe/dialogs/ZLGtkSelectionDialog.h | 60 + zlibrary/ui/src/gpe/dialogs/ZLGtkUtil.cpp | 75 + zlibrary/ui/src/gpe/dialogs/ZLGtkUtil.h | 35 + zlibrary/ui/src/gpe/dialogs/ZLGtkWaitMessage.cpp | 74 + zlibrary/ui/src/gpe/dialogs/ZLGtkWaitMessage.h | 37 + zlibrary/ui/src/gpe/library/ZLibrary.cpp | 72 + zlibrary/ui/src/gpe/view/ZLGtkPaintContext.cpp | 319 + zlibrary/ui/src/gpe/view/ZLGtkPaintContext.h | 83 + zlibrary/ui/src/gpe/view/ZLGtkViewWidget.cpp | 179 + zlibrary/ui/src/gpe/view/ZLGtkViewWidget.h | 59 + .../gtk/application-desktop/GtkEntryParameter.cpp | 112 + .../ui/src/gtk/application-desktop/Toolbar.cpp | 225 + .../application-desktop/ZLGtkApplicationWindow.cpp | 256 + .../application-desktop/ZLGtkApplicationWindow.h | 142 + .../application-pdaxrom/ZLGtkApplicationWindow.cpp | 186 + .../application-pdaxrom/ZLGtkApplicationWindow.h | 67 + zlibrary/ui/src/gtk/application-pepperpad3 | 1 + zlibrary/ui/src/gtk/dialogs/ZLGtkDialog.cpp | 50 + zlibrary/ui/src/gtk/dialogs/ZLGtkDialog.h | 42 + zlibrary/ui/src/gtk/dialogs/ZLGtkDialogContent.cpp | 90 + zlibrary/ui/src/gtk/dialogs/ZLGtkDialogContent.h | 66 + zlibrary/ui/src/gtk/dialogs/ZLGtkDialogManager.cpp | 110 + zlibrary/ui/src/gtk/dialogs/ZLGtkDialogManager.h | 70 + .../ui/src/gtk/dialogs/ZLGtkOpenFileDialog.cpp | 99 + zlibrary/ui/src/gtk/dialogs/ZLGtkOpenFileDialog.h | 48 + zlibrary/ui/src/gtk/dialogs/ZLGtkOptionsDialog.cpp | 108 + zlibrary/ui/src/gtk/dialogs/ZLGtkOptionsDialog.h | 51 + .../ui/src/gtk/dialogs/ZLGtkProgressDialog.cpp | 98 + zlibrary/ui/src/gtk/dialogs/ZLGtkProgressDialog.h | 44 + zlibrary/ui/src/gtk/dialogs/ZLGtkUtil.cpp | 84 + zlibrary/ui/src/gtk/dialogs/ZLGtkUtil.h | 35 + zlibrary/ui/src/gtk/filesystem/ZLGtkFSManager.cpp | 61 + zlibrary/ui/src/gtk/filesystem/ZLGtkFSManager.h | 38 + zlibrary/ui/src/gtk/image/ZLGtkImageManager.cpp | 90 + zlibrary/ui/src/gtk/image/ZLGtkImageManager.h | 69 + zlibrary/ui/src/gtk/library/ZLibrary.cpp | 78 + zlibrary/ui/src/gtk/optionView/ZLGtkOptionView.cpp | 508 + zlibrary/ui/src/gtk/optionView/ZLGtkOptionView.h | 220 + .../src/gtk/optionView/ZLGtkOptionViewHolder.cpp | 52 + .../ui/src/gtk/optionView/ZLGtkOptionViewHolder.h | 47 + zlibrary/ui/src/gtk/pixbuf/ZLGtkPixbufHack.cpp | 181 + zlibrary/ui/src/gtk/pixbuf/ZLGtkPixbufHack.h | 28 + zlibrary/ui/src/gtk/time/ZLGtkTime.cpp | 42 + zlibrary/ui/src/gtk/time/ZLGtkTime.h | 39 + zlibrary/ui/src/gtk/util/ZLGtkKeyUtil.cpp | 32 + zlibrary/ui/src/gtk/util/ZLGtkKeyUtil.h | 33 + zlibrary/ui/src/gtk/util/ZLGtkSignalUtil.cpp | 38 + zlibrary/ui/src/gtk/util/ZLGtkSignalUtil.h | 42 + zlibrary/ui/src/gtk/view/ZLGtkPaintContext.cpp | 377 + zlibrary/ui/src/gtk/view/ZLGtkPaintContext.h | 87 + zlibrary/ui/src/gtk/view/ZLGtkViewWidget.cpp | 366 + zlibrary/ui/src/gtk/view/ZLGtkViewWidget.h | 79 + .../iphone/application/ZLCocoaApplicationWindow.M | 77 + .../iphone/application/ZLCocoaApplicationWindow.h | 59 + .../ui/src/iphone/dialogs/ZLCocoaDialogManager.cpp | 82 + .../ui/src/iphone/dialogs/ZLCocoaDialogManager.h | 58 + .../ui/src/iphone/filesystem/ZLCocoaFSManager.M | 35 + .../ui/src/iphone/filesystem/ZLCocoaFSManager.h | 38 + zlibrary/ui/src/iphone/image/ZLCocoaImageManager.M | 90 + zlibrary/ui/src/iphone/image/ZLCocoaImageManager.h | 65 + .../ui/src/iphone/library/ZLCocoaAppDelegate.M | 51 + .../ui/src/iphone/library/ZLCocoaAppDelegate.h | 32 + zlibrary/ui/src/iphone/library/ZLibrary.M | 86 + zlibrary/ui/src/iphone/time/ZLCocoaTimeManager.M | 78 + zlibrary/ui/src/iphone/time/ZLCocoaTimeManager.h | 52 + zlibrary/ui/src/iphone/view/CocoaView.M | 105 + zlibrary/ui/src/iphone/view/CocoaView.h | 26 + zlibrary/ui/src/iphone/view/ZLCocoaPaintContext.M | 189 + zlibrary/ui/src/iphone/view/ZLCocoaPaintContext.h | 70 + zlibrary/ui/src/iphone/view/ZLCocoaViewWidget.cpp | 59 + zlibrary/ui/src/iphone/view/ZLCocoaViewWidget.h | 45 + .../ui/src/maemo/application/GtkEntryParameter.cpp | 113 + .../maemo/application/ZLGtkApplicationWindow.cpp | 465 + .../src/maemo/application/ZLGtkApplicationWindow.h | 137 + zlibrary/ui/src/maemo/dialogs/ZLGtkDialog.cpp | 49 + zlibrary/ui/src/maemo/dialogs/ZLGtkDialog.h | 41 + .../ui/src/maemo/dialogs/ZLGtkDialogContent.cpp | 87 + zlibrary/ui/src/maemo/dialogs/ZLGtkDialogContent.h | 66 + .../ui/src/maemo/dialogs/ZLGtkDialogManager.cpp | 152 + zlibrary/ui/src/maemo/dialogs/ZLGtkDialogManager.h | 72 + .../ui/src/maemo/dialogs/ZLGtkOptionsDialog.cpp | 112 + zlibrary/ui/src/maemo/dialogs/ZLGtkOptionsDialog.h | 54 + .../ui/src/maemo/dialogs/ZLGtkProgressDialog.cpp | 98 + .../ui/src/maemo/dialogs/ZLGtkProgressDialog.h | 44 + .../ui/src/maemo/dialogs/ZLGtkSelectionDialog.cpp | 198 + .../ui/src/maemo/dialogs/ZLGtkSelectionDialog.h | 60 + zlibrary/ui/src/maemo/dialogs/ZLGtkUtil.cpp | 75 + zlibrary/ui/src/maemo/dialogs/ZLGtkUtil.h | 35 + zlibrary/ui/src/maemo/library/ZLibrary.cpp | 86 + zlibrary/ui/src/maemo/message/ZLMaemoMessage.cpp | 145 + zlibrary/ui/src/maemo/message/ZLMaemoMessage.h | 82 + .../ui/src/maemo/network/ZLMaemoNetworkManager.cpp | 90 + .../ui/src/maemo/network/ZLMaemoNetworkManager.h | 58 + .../ui/src/maemo/optionView/ZLGtkOptionView.cpp | 603 + zlibrary/ui/src/maemo/optionView/ZLGtkOptionView.h | 240 + .../src/maemo/optionView/ZLGtkOptionViewHolder.cpp | 50 + .../src/maemo/optionView/ZLGtkOptionViewHolder.h | 46 + zlibrary/ui/src/maemo/time/ZLGtkTime.cpp | 44 + zlibrary/ui/src/maemo/time/ZLGtkTime.h | 39 + zlibrary/ui/src/maemo/view/ZLGtkPaintContext.cpp | 369 + zlibrary/ui/src/maemo/view/ZLGtkPaintContext.h | 87 + zlibrary/ui/src/maemo/view/ZLGtkViewWidget.cpp | 395 + zlibrary/ui/src/maemo/view/ZLGtkViewWidget.h | 93 + .../maemo5/application/ZLGtkApplicationWindow.cpp | 304 + .../maemo5/application/ZLGtkApplicationWindow.h | 107 + zlibrary/ui/src/maemo5/dialogs/ZLGtkDialog.cpp | 49 + zlibrary/ui/src/maemo5/dialogs/ZLGtkDialog.h | 41 + .../ui/src/maemo5/dialogs/ZLGtkDialogContent.cpp | 87 + .../ui/src/maemo5/dialogs/ZLGtkDialogContent.h | 66 + .../ui/src/maemo5/dialogs/ZLGtkDialogManager.cpp | 145 + .../ui/src/maemo5/dialogs/ZLGtkDialogManager.h | 72 + .../ui/src/maemo5/dialogs/ZLGtkOpenFileDialog.cpp | 74 + .../ui/src/maemo5/dialogs/ZLGtkOpenFileDialog.h | 41 + .../ui/src/maemo5/dialogs/ZLGtkOptionsDialog.cpp | 123 + .../ui/src/maemo5/dialogs/ZLGtkOptionsDialog.h | 52 + .../ui/src/maemo5/dialogs/ZLGtkProgressDialog.cpp | 98 + .../ui/src/maemo5/dialogs/ZLGtkProgressDialog.h | 44 + zlibrary/ui/src/maemo5/dialogs/ZLGtkUtil.cpp | 75 + zlibrary/ui/src/maemo5/dialogs/ZLGtkUtil.h | 35 + zlibrary/ui/src/maemo5/library/ZLibrary.cpp | 86 + zlibrary/ui/src/maemo5/message | 1 + .../src/maemo5/network/ZLMaemoNetworkManager.cpp | 90 + .../ui/src/maemo5/network/ZLMaemoNetworkManager.h | 58 + .../ui/src/maemo5/optionView/ZLGtkOptionView.cpp | 598 + .../ui/src/maemo5/optionView/ZLGtkOptionView.h | 241 + .../maemo5/optionView/ZLGtkOptionViewHolder.cpp | 50 + .../src/maemo5/optionView/ZLGtkOptionViewHolder.h | 47 + zlibrary/ui/src/maemo5/time | 1 + zlibrary/ui/src/maemo5/view | 1 + .../src/opie/application/ZLQtApplicationWindow.cpp | 216 + .../src/opie/application/ZLQtApplicationWindow.h | 71 + zlibrary/ui/src/opie/application/moc.mk | 1 + .../ui/src/opie/dialogs/ZLFullScreenDialog.cpp | 53 + zlibrary/ui/src/opie/dialogs/ZLFullScreenDialog.h | 45 + zlibrary/ui/src/opie/dialogs/ZLQtDialog.cpp | 55 + zlibrary/ui/src/opie/dialogs/ZLQtDialog.h | 44 + zlibrary/ui/src/opie/dialogs/ZLQtDialogContent.cpp | 107 + zlibrary/ui/src/opie/dialogs/ZLQtDialogContent.h | 55 + zlibrary/ui/src/opie/dialogs/ZLQtDialogManager.cpp | 73 + zlibrary/ui/src/opie/dialogs/ZLQtDialogManager.h | 50 + zlibrary/ui/src/opie/dialogs/ZLQtOptionView.cpp | 518 + zlibrary/ui/src/opie/dialogs/ZLQtOptionView.h | 251 + zlibrary/ui/src/opie/dialogs/ZLQtOptionsDialog.cpp | 77 + zlibrary/ui/src/opie/dialogs/ZLQtOptionsDialog.h | 62 + .../ui/src/opie/dialogs/ZLQtSelectionDialog.cpp | 138 + zlibrary/ui/src/opie/dialogs/ZLQtSelectionDialog.h | 75 + zlibrary/ui/src/opie/dialogs/ZLQtUtil.cpp | 33 + zlibrary/ui/src/opie/dialogs/ZLQtUtil.h | 32 + zlibrary/ui/src/opie/dialogs/ZLQtWaitMessage.cpp | 42 + zlibrary/ui/src/opie/dialogs/ZLQtWaitMessage.h | 33 + zlibrary/ui/src/opie/dialogs/moc.mk | 1 + zlibrary/ui/src/opie/library/ZLibrary.cpp | 71 + zlibrary/ui/src/opie/view/ZLQtPaintContext.cpp | 235 + zlibrary/ui/src/opie/view/ZLQtPaintContext.h | 76 + zlibrary/ui/src/opie/view/ZLQtViewWidget.cpp | 144 + zlibrary/ui/src/opie/view/ZLQtViewWidget.h | 68 + .../application-desktop/ZLQtApplicationWindow.cpp | 355 + .../qt/application-desktop/ZLQtApplicationWindow.h | 112 + .../src/qt/application-desktop/ZLQtPopupMenu.cpp | 42 + .../ui/src/qt/application-desktop/ZLQtPopupMenu.h | 45 + zlibrary/ui/src/qt/application-desktop/moc.mk | 1 + .../application-pdaxrom/ZLQtApplicationWindow.cpp | 173 + .../qt/application-pdaxrom/ZLQtApplicationWindow.h | 67 + zlibrary/ui/src/qt/application-pdaxrom/moc.mk | 1 + zlibrary/ui/src/qt/dialogs/ZLQtDialog.cpp | 67 + zlibrary/ui/src/qt/dialogs/ZLQtDialog.h | 44 + zlibrary/ui/src/qt/dialogs/ZLQtDialogContent.cpp | 109 + zlibrary/ui/src/qt/dialogs/ZLQtDialogContent.h | 55 + zlibrary/ui/src/qt/dialogs/ZLQtDialogManager.cpp | 98 + zlibrary/ui/src/qt/dialogs/ZLQtDialogManager.h | 49 + zlibrary/ui/src/qt/dialogs/ZLQtOpenFileDialog.cpp | 70 + zlibrary/ui/src/qt/dialogs/ZLQtOpenFileDialog.h | 48 + zlibrary/ui/src/qt/dialogs/ZLQtOptionView.cpp | 580 + zlibrary/ui/src/qt/dialogs/ZLQtOptionView.h | 269 + zlibrary/ui/src/qt/dialogs/ZLQtOptionsDialog.cpp | 81 + zlibrary/ui/src/qt/dialogs/ZLQtOptionsDialog.h | 54 + zlibrary/ui/src/qt/dialogs/ZLQtProgressDialog.cpp | 103 + zlibrary/ui/src/qt/dialogs/ZLQtProgressDialog.h | 61 + zlibrary/ui/src/qt/dialogs/ZLQtUtil.cpp | 33 + zlibrary/ui/src/qt/dialogs/ZLQtUtil.h | 30 + zlibrary/ui/src/qt/dialogs/moc.mk | 1 + zlibrary/ui/src/qt/filesystem/ZLQtFSManager.cpp | 36 + zlibrary/ui/src/qt/filesystem/ZLQtFSManager.h | 38 + zlibrary/ui/src/qt/image/ZLQtImageManager.cpp | 55 + zlibrary/ui/src/qt/image/ZLQtImageManager.h | 67 + zlibrary/ui/src/qt/library/ZLibrary.cpp | 78 + zlibrary/ui/src/qt/time/ZLQtTime.cpp | 42 + zlibrary/ui/src/qt/time/ZLQtTime.h | 45 + zlibrary/ui/src/qt/util/ZLQtKeyUtil.cpp | 33 + zlibrary/ui/src/qt/util/ZLQtKeyUtil.h | 33 + zlibrary/ui/src/qt/view/ZLQtPaintContext.cpp | 229 + zlibrary/ui/src/qt/view/ZLQtPaintContext.h | 76 + zlibrary/ui/src/qt/view/ZLQtViewWidget.cpp | 307 + zlibrary/ui/src/qt/view/ZLQtViewWidget.h | 115 + zlibrary/ui/src/qt/view/moc.mk | 1 + .../ui/src/qt4/application/LineEditParameter.cpp | 84 + .../src/qt4/application/ZLQtApplicationWindow.cpp | 331 + .../ui/src/qt4/application/ZLQtApplicationWindow.h | 141 + zlibrary/ui/src/qt4/application/moc.mk | 1 + zlibrary/ui/src/qt4/dialogs/ZLQtDialog.cpp | 56 + zlibrary/ui/src/qt4/dialogs/ZLQtDialog.h | 43 + zlibrary/ui/src/qt4/dialogs/ZLQtDialogContent.cpp | 104 + zlibrary/ui/src/qt4/dialogs/ZLQtDialogContent.h | 55 + zlibrary/ui/src/qt4/dialogs/ZLQtDialogManager.cpp | 109 + zlibrary/ui/src/qt4/dialogs/ZLQtDialogManager.h | 60 + zlibrary/ui/src/qt4/dialogs/ZLQtOpenFileDialog.cpp | 70 + zlibrary/ui/src/qt4/dialogs/ZLQtOpenFileDialog.h | 48 + zlibrary/ui/src/qt4/dialogs/ZLQtOptionView.cpp | 462 + zlibrary/ui/src/qt4/dialogs/ZLQtOptionView.h | 226 + zlibrary/ui/src/qt4/dialogs/ZLQtOptionsDialog.cpp | 100 + zlibrary/ui/src/qt4/dialogs/ZLQtOptionsDialog.h | 52 + zlibrary/ui/src/qt4/dialogs/ZLQtProgressDialog.cpp | 98 + zlibrary/ui/src/qt4/dialogs/ZLQtProgressDialog.h | 77 + zlibrary/ui/src/qt4/dialogs/ZLQtTreeDialog.cpp | 347 + zlibrary/ui/src/qt4/dialogs/ZLQtTreeDialog.h | 143 + zlibrary/ui/src/qt4/dialogs/ZLQtUtil.cpp | 33 + zlibrary/ui/src/qt4/dialogs/ZLQtUtil.h | 30 + zlibrary/ui/src/qt4/dialogs/moc.mk | 1 + zlibrary/ui/src/qt4/filesystem/ZLQtFSManager.cpp | 52 + zlibrary/ui/src/qt4/filesystem/ZLQtFSManager.h | 39 + zlibrary/ui/src/qt4/image/ZLQtImageManager.cpp | 153 + zlibrary/ui/src/qt4/image/ZLQtImageManager.h | 80 + zlibrary/ui/src/qt4/image/ZLQtImageUtils.cpp | 136 + zlibrary/ui/src/qt4/image/ZLQtImageUtils.h | 41 + zlibrary/ui/src/qt4/library/ZLQApplication.h | 36 + zlibrary/ui/src/qt4/library/ZLibrary.cpp | 114 + zlibrary/ui/src/qt4/library/moc.mk | 1 + zlibrary/ui/src/qt4/network/ZLQtNetworkManager.cpp | 455 + zlibrary/ui/src/qt4/network/ZLQtNetworkManager.h | 106 + zlibrary/ui/src/qt4/network/moc.mk | 1 + zlibrary/ui/src/qt4/time/ZLQtTime.cpp | 57 + zlibrary/ui/src/qt4/time/ZLQtTime.h | 51 + zlibrary/ui/src/qt4/time/moc.mk | 1 + zlibrary/ui/src/qt4/tree/QtWaitingSpinner.cpp | 155 + zlibrary/ui/src/qt4/tree/QtWaitingSpinner.h | 59 + zlibrary/ui/src/qt4/tree/ZLQtItemsListWidget.cpp | 255 + zlibrary/ui/src/qt4/tree/ZLQtItemsListWidget.h | 106 + zlibrary/ui/src/qt4/tree/ZLQtPreviewWidget.cpp | 411 + zlibrary/ui/src/qt4/tree/ZLQtPreviewWidget.h | 121 + zlibrary/ui/src/qt4/tree/ZLQtSearchField.cpp | 125 + zlibrary/ui/src/qt4/tree/ZLQtSearchField.h | 54 + zlibrary/ui/src/qt4/tree/moc.mk | 1 + zlibrary/ui/src/qt4/util/ZLQtKeyUtil.cpp | 33 + zlibrary/ui/src/qt4/util/ZLQtKeyUtil.h | 33 + zlibrary/ui/src/qt4/view/ZLQtPaintContext.cpp | 236 + zlibrary/ui/src/qt4/view/ZLQtPaintContext.h | 76 + zlibrary/ui/src/qt4/view/ZLQtViewWidget.cpp | 300 + zlibrary/ui/src/qt4/view/ZLQtViewWidget.h | 88 + zlibrary/ui/src/qt4/view/moc.mk | 1 + .../qtopia/application/ZLQtApplicationWindow.cpp | 430 + .../src/qtopia/application/ZLQtApplicationWindow.h | 169 + .../ui/src/qtopia/application/ZLQtMenuAction.h | 45 + zlibrary/ui/src/qtopia/application/moc.mk | 1 + .../ui/src/qtopia/dialogs/ZLFullScreenDialog.cpp | 53 + .../ui/src/qtopia/dialogs/ZLFullScreenDialog.h | 45 + zlibrary/ui/src/qtopia/dialogs/ZLQtDialog.cpp | 59 + zlibrary/ui/src/qtopia/dialogs/ZLQtDialog.h | 45 + .../ui/src/qtopia/dialogs/ZLQtDialogContent.cpp | 98 + zlibrary/ui/src/qtopia/dialogs/ZLQtDialogContent.h | 71 + .../ui/src/qtopia/dialogs/ZLQtDialogManager.cpp | 96 + zlibrary/ui/src/qtopia/dialogs/ZLQtDialogManager.h | 57 + .../ui/src/qtopia/dialogs/ZLQtOptionsDialog.cpp | 79 + zlibrary/ui/src/qtopia/dialogs/ZLQtOptionsDialog.h | 62 + .../ui/src/qtopia/dialogs/ZLQtSelectionDialog.cpp | 137 + .../ui/src/qtopia/dialogs/ZLQtSelectionDialog.h | 75 + zlibrary/ui/src/qtopia/dialogs/ZLQtUtil.cpp | 33 + zlibrary/ui/src/qtopia/dialogs/ZLQtUtil.h | 32 + zlibrary/ui/src/qtopia/dialogs/ZLQtWaitMessage.cpp | 42 + zlibrary/ui/src/qtopia/dialogs/ZLQtWaitMessage.h | 33 + zlibrary/ui/src/qtopia/dialogs/moc.mk | 1 + zlibrary/ui/src/qtopia/library/ZLibrary.cpp | 70 + zlibrary/ui/src/qtopia/message/ZLQtopiaMessage.cpp | 67 + zlibrary/ui/src/qtopia/message/ZLQtopiaMessage.h | 60 + .../ui/src/qtopia/optionView/ZLQtOptionView.cpp | 520 + zlibrary/ui/src/qtopia/optionView/ZLQtOptionView.h | 250 + .../src/qtopia/optionView/ZLQtOptionViewHolder.cpp | 51 + .../src/qtopia/optionView/ZLQtOptionViewHolder.h | 49 + zlibrary/ui/src/qtopia/optionView/moc.mk | 1 + zlibrary/ui/src/qtopia/view/ZLQtPaintContext.cpp | 259 + zlibrary/ui/src/qtopia/view/ZLQtPaintContext.h | 76 + zlibrary/ui/src/qtopia/view/ZLQtViewWidget.cpp | 307 + zlibrary/ui/src/qtopia/view/ZLQtViewWidget.h | 101 + zlibrary/ui/src/qtopia/view/ZLZaurusFontHack.cpp | 46 + zlibrary/ui/src/qtopia/view/ZLZaurusFontHack.h | 39 + zlibrary/ui/src/qtopia/view/moc.mk | 1 + zlibrary/ui/src/unix/message/ZLUnixMessage.cpp | 92 + zlibrary/ui/src/unix/message/ZLUnixMessage.h | 59 + .../ui/src/win32/application/FloatingToolbar.cpp | 127 + zlibrary/ui/src/win32/application/Toolbar.cpp | 127 + .../win32/application/ZLWin32ApplicationWindow.cpp | 730 + .../win32/application/ZLWin32ApplicationWindow.h | 165 + .../ui/src/win32/application/ZLWin32PopupMenu.cpp | 176 + .../ui/src/win32/application/ZLWin32PopupMenu.h | 62 + zlibrary/ui/src/win32/dialogs/ZLWin32Dialog.cpp | 57 + zlibrary/ui/src/win32/dialogs/ZLWin32Dialog.h | 46 + .../ui/src/win32/dialogs/ZLWin32DialogContent.cpp | 102 + .../ui/src/win32/dialogs/ZLWin32DialogContent.h | 54 + .../ui/src/win32/dialogs/ZLWin32DialogManager.cpp | 128 + .../ui/src/win32/dialogs/ZLWin32DialogManager.h | 60 + .../ui/src/win32/dialogs/ZLWin32MessageBox.cpp | 77 + zlibrary/ui/src/win32/dialogs/ZLWin32MessageBox.h | 53 + .../ui/src/win32/dialogs/ZLWin32OptionView.cpp | 412 + zlibrary/ui/src/win32/dialogs/ZLWin32OptionView.h | 203 + .../ui/src/win32/dialogs/ZLWin32OptionsDialog.cpp | 64 + .../ui/src/win32/dialogs/ZLWin32OptionsDialog.h | 58 + .../ui/src/win32/dialogs/ZLWin32ProgressDialog.cpp | 143 + .../ui/src/win32/dialogs/ZLWin32ProgressDialog.h | 48 + .../ui/src/win32/image/ZLWin32ImageManager.cpp | 184 + zlibrary/ui/src/win32/image/ZLWin32ImageManager.h | 123 + .../ui/src/win32/image/ZLWin32ImageManager_bmp.cpp | 47 + .../ui/src/win32/image/ZLWin32ImageManager_gif.cpp | 134 + .../src/win32/image/ZLWin32ImageManager_jpeg.cpp | 162 + .../ui/src/win32/image/ZLWin32ImageManager_png.cpp | 124 + .../src/win32/image/ZLWin32ImageManager_tiff.cpp | 123 + zlibrary/ui/src/win32/library/ZLibraryWin32.cpp | 347 + zlibrary/ui/src/win32/message/ZLWin32Message.cpp | 64 + zlibrary/ui/src/win32/message/ZLWin32Message.h | 60 + zlibrary/ui/src/win32/time/ZLWin32Time.cpp | 54 + zlibrary/ui/src/win32/time/ZLWin32Time.h | 50 + zlibrary/ui/src/win32/view/ZLWin32PaintContext.cpp | 316 + zlibrary/ui/src/win32/view/ZLWin32PaintContext.h | 104 + zlibrary/ui/src/win32/view/ZLWin32ViewWidget.cpp | 389 + zlibrary/ui/src/win32/view/ZLWin32ViewWidget.h | 94 + zlibrary/ui/src/win32/w32widgets/W32Box.cpp | 252 + .../ui/src/win32/w32widgets/W32ColorComboBox.cpp | 204 + .../ui/src/win32/w32widgets/W32ColorComboBox.h | 66 + zlibrary/ui/src/win32/w32widgets/W32Container.cpp | 30 + zlibrary/ui/src/win32/w32widgets/W32Container.h | 170 + zlibrary/ui/src/win32/w32widgets/W32Control.cpp | 912 + zlibrary/ui/src/win32/w32widgets/W32Control.h | 368 + .../src/win32/w32widgets/W32ControlCollection.cpp | 39 + .../ui/src/win32/w32widgets/W32ControlCollection.h | 43 + .../ui/src/win32/w32widgets/W32DialogPanel.cpp | 273 + zlibrary/ui/src/win32/w32widgets/W32DialogPanel.h | 145 + zlibrary/ui/src/win32/w32widgets/W32Event.cpp | 53 + zlibrary/ui/src/win32/w32widgets/W32Event.h | 57 + .../ui/src/win32/w32widgets/W32PropertySheet.cpp | 216 + .../win32/w32widgets/W32StandaloneDialogPanel.cpp | 144 + zlibrary/ui/src/win32/w32widgets/W32Table.cpp | 244 + zlibrary/ui/src/win32/w32widgets/W32TreeView.cpp | 191 + zlibrary/ui/src/win32/w32widgets/W32TreeView.h | 80 + zlibrary/ui/src/win32/w32widgets/W32VBorderBox.cpp | 174 + zlibrary/ui/src/win32/w32widgets/W32Widget.cpp | 26 + zlibrary/ui/src/win32/w32widgets/W32Widget.h | 68 + zlibrary/ui/ui.pro | 61 + zlibrary/zlibrary.pro | 2 + 2064 files changed, 220276 insertions(+) create mode 100644 .pc/.quilt_patches create mode 100644 .pc/.quilt_series create mode 100644 .pc/.version create mode 100644 .pc/0001-ZLQtFSManager.cpp.patch/zlibrary/ui/src/qt4/filesystem/ZLQtFSManager.cpp create mode 100644 .pc/0002-Qt5.patch/makefiles/arch/desktop.mk create mode 100644 .pc/0002-Qt5.patch/zlibrary/ui/src/qt4/application/LineEditParameter.cpp create mode 100644 .pc/0002-Qt5.patch/zlibrary/ui/src/qt4/application/ZLQtApplicationWindow.cpp create mode 100644 .pc/0002-Qt5.patch/zlibrary/ui/src/qt4/application/ZLQtApplicationWindow.h create mode 100644 .pc/0002-Qt5.patch/zlibrary/ui/src/qt4/dialogs/ZLQtDialog.cpp create mode 100644 .pc/0002-Qt5.patch/zlibrary/ui/src/qt4/dialogs/ZLQtDialog.h create mode 100644 .pc/0002-Qt5.patch/zlibrary/ui/src/qt4/dialogs/ZLQtDialogContent.cpp create mode 100644 .pc/0002-Qt5.patch/zlibrary/ui/src/qt4/dialogs/ZLQtDialogManager.cpp create mode 100644 .pc/0002-Qt5.patch/zlibrary/ui/src/qt4/dialogs/ZLQtOpenFileDialog.cpp create mode 100644 .pc/0002-Qt5.patch/zlibrary/ui/src/qt4/dialogs/ZLQtOptionView.cpp create mode 100644 .pc/0002-Qt5.patch/zlibrary/ui/src/qt4/dialogs/ZLQtOptionsDialog.cpp create mode 100644 .pc/0002-Qt5.patch/zlibrary/ui/src/qt4/dialogs/ZLQtOptionsDialog.h create mode 100644 .pc/0002-Qt5.patch/zlibrary/ui/src/qt4/dialogs/ZLQtProgressDialog.cpp create mode 100644 .pc/0002-Qt5.patch/zlibrary/ui/src/qt4/dialogs/ZLQtProgressDialog.h create mode 100644 .pc/0002-Qt5.patch/zlibrary/ui/src/qt4/dialogs/ZLQtTreeDialog.cpp create mode 100644 .pc/0002-Qt5.patch/zlibrary/ui/src/qt4/dialogs/ZLQtTreeDialog.h create mode 100644 .pc/0002-Qt5.patch/zlibrary/ui/src/qt4/library/ZLQApplication.h create mode 100644 .pc/0002-Qt5.patch/zlibrary/ui/src/qt4/library/ZLibrary.cpp create mode 100644 .pc/0002-Qt5.patch/zlibrary/ui/src/qt4/network/ZLQtNetworkManager.cpp create mode 100644 .pc/0002-Qt5.patch/zlibrary/ui/src/qt4/tree/QtWaitingSpinner.cpp create mode 100644 .pc/0002-Qt5.patch/zlibrary/ui/src/qt4/tree/QtWaitingSpinner.h create mode 100644 .pc/0002-Qt5.patch/zlibrary/ui/src/qt4/tree/ZLQtItemsListWidget.cpp create mode 100644 .pc/0002-Qt5.patch/zlibrary/ui/src/qt4/tree/ZLQtItemsListWidget.h create mode 100644 .pc/0002-Qt5.patch/zlibrary/ui/src/qt4/tree/ZLQtPreviewWidget.cpp create mode 100644 .pc/0002-Qt5.patch/zlibrary/ui/src/qt4/tree/ZLQtPreviewWidget.h create mode 100644 .pc/0002-Qt5.patch/zlibrary/ui/src/qt4/tree/ZLQtSearchField.cpp create mode 100644 .pc/0002-Qt5.patch/zlibrary/ui/src/qt4/tree/ZLQtSearchField.h create mode 100644 .pc/0002-Qt5.patch/zlibrary/ui/src/qt4/view/ZLQtViewWidget.cpp create mode 100644 .pc/0002-Qt5.patch/zlibrary/ui/src/qt4/view/ZLQtViewWidget.h create mode 100644 .pc/0003-gcc-6.patch/fbreader/src/formats/doc/OleStorage.cpp create mode 100644 .pc/0004-prevent-so-install.patch/zlibrary/core/Makefile create mode 100644 .pc/0004-prevent-so-install.patch/zlibrary/text/Makefile create mode 100644 .pc/0008-951-fix-calling-compiler.patch/makefiles/arch/desktop.mk create mode 100644 .pc/0008-951-fix-calling-compiler.patch/makefiles/gtksubdir.mk create mode 100644 .pc/0008-951-fix-calling-compiler.patch/makefiles/platforms.mk create mode 100644 .pc/0008-951-fix-calling-compiler.patch/makefiles/qsubdir.mk create mode 100644 .pc/0008-951-fix-calling-compiler.patch/makefiles/subdir.mk create mode 100644 .pc/0009-fbreader-Makefile-do-not-try-to-install-empty-format.patch/fbreader/Makefile create mode 100644 .pc/0011-zlibrary-unix-curl-avoid-duplicate-case-in-a-switch.patch/zlibrary/core/src/unix/curl/ZLCurlNetworkManager.cpp create mode 100644 .pc/0013-fbreader-Makefile-make-linking-order-reproducible.patch/fbreader/Makefile create mode 100644 .pc/1014-desktop-mime-type.patch/fbreader/desktop/desktop create mode 100644 .pc/applied-patches create mode 100644 ChangeLog create mode 100644 Makefile create mode 100644 README.build create mode 100755 build_packages.sh create mode 100644 debian/README.source create mode 100644 debian/changelog create mode 100644 debian/control create mode 100644 debian/copyright create mode 100755 debian/dfsg-repack create mode 100644 debian/fbreader.links create mode 100644 debian/gbp.conf create mode 100644 debian/libzlcore-data.dirs create mode 100644 debian/libzlcore0.13t64.dirs create mode 100644 debian/libzlcore0.13t64.lintian-overrides create mode 100644 debian/libzltext-data.dirs create mode 100644 debian/libzltext0.13t64.dirs create mode 100644 debian/libzltext0.13t64.lintian-overrides create mode 100644 debian/manpages create mode 100644 debian/patches/0001-ZLQtFSManager.cpp.patch create mode 100644 debian/patches/0002-Qt5.patch create mode 100644 debian/patches/0003-gcc-6.patch create mode 100644 debian/patches/0004-prevent-so-install.patch create mode 100644 debian/patches/0008-951-fix-calling-compiler.patch create mode 100644 debian/patches/0009-fbreader-Makefile-do-not-try-to-install-empty-format.patch create mode 100644 debian/patches/0011-zlibrary-unix-curl-avoid-duplicate-case-in-a-switch.patch create mode 100644 debian/patches/0013-fbreader-Makefile-make-linking-order-reproducible.patch create mode 100644 debian/patches/1014-desktop-mime-type.patch create mode 100644 debian/patches/series create mode 100755 debian/rules create mode 100644 debian/source/format create mode 100644 distributions/debian/desktop/changelog create mode 100644 distributions/debian/desktop/compat create mode 100644 distributions/debian/desktop/control create mode 100644 distributions/debian/desktop/copyright create mode 100644 distributions/debian/desktop/menu create mode 100755 distributions/debian/desktop/rules create mode 100644 distributions/debian/desktop/watch create mode 100644 distributions/debian/maemo2/changelog create mode 100644 distributions/debian/maemo2/compat create mode 100644 distributions/debian/maemo2/control create mode 100644 distributions/debian/maemo2/fbreader-maemo2.postinst create mode 100644 distributions/debian/maemo2/fbreader-maemo2.postrm create mode 100644 distributions/debian/maemo2/libzlibrary-maemo2-noconic.postinst create mode 100644 distributions/debian/maemo2/libzlibrary-maemo2-noconic.postrm create mode 100644 distributions/debian/maemo2/libzlibrary-maemo2-noconic.shlibs create mode 100755 distributions/debian/maemo2/rules create mode 100644 distributions/debian/maemo3/changelog create mode 100644 distributions/debian/maemo3/compat create mode 100644 distributions/debian/maemo3/control create mode 100644 distributions/debian/maemo3/fbreader-maemo2.postinst create mode 100644 distributions/debian/maemo3/fbreader-maemo2.postrm create mode 100644 distributions/debian/maemo3/libzlibrary-maemo2.postinst create mode 100644 distributions/debian/maemo3/libzlibrary-maemo2.postrm create mode 100644 distributions/debian/maemo3/libzlibrary-maemo2.shlibs create mode 100755 distributions/debian/maemo3/rules create mode 100644 distributions/debian/maemo4/changelog create mode 100644 distributions/debian/maemo4/compat create mode 100644 distributions/debian/maemo4/control create mode 100644 distributions/debian/maemo4/fbreader.postinst create mode 100644 distributions/debian/maemo4/fbreader.postrm create mode 100644 distributions/debian/maemo4/libzlibrary.postinst create mode 100644 distributions/debian/maemo4/libzlibrary.postrm create mode 100644 distributions/debian/maemo4/libzlibrary.shlibs create mode 100755 distributions/debian/maemo4/rules create mode 100644 distributions/debian/maemo5/changelog create mode 100644 distributions/debian/maemo5/compat create mode 100644 distributions/debian/maemo5/control create mode 100644 distributions/debian/maemo5/fbreader.postinst create mode 100644 distributions/debian/maemo5/fbreader.postrm create mode 100644 distributions/debian/maemo5/libzlibrary.postinst create mode 100644 distributions/debian/maemo5/libzlibrary.postrm create mode 100644 distributions/debian/maemo5/libzlibrary.shlibs create mode 100755 distributions/debian/maemo5/rules create mode 100644 distributions/debian/smartq/changelog create mode 100644 distributions/debian/smartq/compat create mode 100644 distributions/debian/smartq/control create mode 100644 distributions/debian/smartq/copyright create mode 100644 distributions/debian/smartq/menu create mode 100644 distributions/debian/smartq/patches/110-use-sensible-browser.patch create mode 100644 distributions/debian/smartq/patches/120-key-names-and-actions.patch create mode 100644 distributions/debian/smartq/patches/130-default-indicator.patch create mode 100644 distributions/debian/smartq/patches/140-fullscreen-scrolling.patch create mode 100644 distributions/debian/smartq/patches/150-default-rotation-direction.patch create mode 100644 distributions/debian/smartq/patches/160-use-gcc-4-3.patch create mode 100644 distributions/debian/smartq/patches/170-disable-selection-by-default.patch create mode 100644 distributions/debian/smartq/patches/series create mode 100755 distributions/debian/smartq/rules create mode 100644 distributions/debian/smartq/watch create mode 100644 distributions/debipk/opensimpad/fbreader.control create mode 100644 distributions/debipk/opensimpad/fbreader.name create mode 100644 distributions/debipk/opensimpad/rules create mode 100644 distributions/debipk/openzaurus_gpe/240x320.control create mode 100644 distributions/debipk/openzaurus_gpe/240x320.name create mode 100644 distributions/debipk/openzaurus_gpe/640x480.control create mode 100644 distributions/debipk/openzaurus_gpe/640x480.name create mode 100644 distributions/debipk/openzaurus_gpe/rules create mode 100644 distributions/debipk/openzaurus_opie/240x320.control create mode 100644 distributions/debipk/openzaurus_opie/240x320.name create mode 100644 distributions/debipk/openzaurus_opie/640x480.control create mode 100644 distributions/debipk/openzaurus_opie/640x480.name create mode 100644 distributions/debipk/openzaurus_opie/rules create mode 100644 distributions/ipk/pdaxrom/fbreader.control create mode 100644 distributions/ipk/pdaxrom/rules create mode 100644 distributions/ipk/pma400/fbreader.control create mode 100644 distributions/ipk/pma400/rules create mode 100644 distributions/ipk/zaurus240x320/fbreader.control create mode 100644 distributions/ipk/zaurus240x320/libzlibrary.control create mode 100644 distributions/ipk/zaurus240x320/rules create mode 100644 distributions/ipk/zaurus640x480/fbreader.control create mode 100644 distributions/ipk/zaurus640x480/libzlibrary.control create mode 100644 distributions/ipk/zaurus640x480/rules create mode 100644 distributions/motopkg/moto/rules create mode 100644 distributions/nsi/win32/control.nsi create mode 100644 distributions/nsi/win32/rules create mode 100644 distributions/tarball/desktop/rules create mode 100644 distributions/tarball/source/rules create mode 100644 fbreader/LICENSE create mode 100644 fbreader/Makefile create mode 100644 fbreader/VERSION create mode 100644 fbreader/data/default/config.desktop.xml create mode 100644 fbreader/data/default/config.macosx.xml create mode 100644 fbreader/data/default/config.maemo.xml create mode 100644 fbreader/data/default/config.maemo5.xml create mode 100644 fbreader/data/default/config.moto.xml create mode 100644 fbreader/data/default/config.openzaurus.xml create mode 100644 fbreader/data/default/config.opie.xml create mode 100644 fbreader/data/default/config.pdaxrom.xml create mode 100644 fbreader/data/default/config.pepperpad3.xml create mode 100644 fbreader/data/default/config.pma400.xml create mode 100644 fbreader/data/default/config.zaurus.xml create mode 100644 fbreader/data/default/external.desktop.xml create mode 100644 fbreader/data/default/external.macosx.xml create mode 100644 fbreader/data/default/external.maemo.xml create mode 100644 fbreader/data/default/external.moto.xml create mode 120000 fbreader/data/default/external.opensimpad-0.9.0.xml create mode 120000 fbreader/data/default/external.openzaurus.xml create mode 120000 fbreader/data/default/external.pdaxrom.xml create mode 100644 fbreader/data/default/external.pepperpad3.xml create mode 120000 fbreader/data/default/external.pma400.xml create mode 100644 fbreader/data/default/external.qtopia.xml create mode 120000 fbreader/data/default/external.qvfb.xml create mode 100644 fbreader/data/default/external.win32.xml create mode 120000 fbreader/data/default/external.zaurus.xml create mode 100644 fbreader/data/default/fullscreen_toolbar.desktop.xml create mode 100644 fbreader/data/default/keymap.desktop.xml create mode 100644 fbreader/data/default/keymap.macosx.xml create mode 100644 fbreader/data/default/keymap.maemo.xml create mode 100644 fbreader/data/default/keymap.moto.xml create mode 100644 fbreader/data/default/keymap.opie-opensimpad.xml create mode 100644 fbreader/data/default/keymap.pdaxrom.xml create mode 100644 fbreader/data/default/keymap.pepperpad3.xml create mode 100644 fbreader/data/default/keymap.pma400.xml create mode 100644 fbreader/data/default/keymap.win32.xml create mode 100644 fbreader/data/default/keymap.zaurus.xml create mode 100644 fbreader/data/default/menubar.maemo5.xml create mode 100644 fbreader/data/default/menubar.moto.xml create mode 100644 fbreader/data/default/menubar.xml create mode 100644 fbreader/data/default/messages.maemo.xml create mode 100644 fbreader/data/default/styles.240x320.xml create mode 100644 fbreader/data/default/styles.640x480.xml create mode 100644 fbreader/data/default/styles.desktop.xml create mode 100644 fbreader/data/default/styles.gpe240x320.xml create mode 100644 fbreader/data/default/styles.gpe640x480.xml create mode 100644 fbreader/data/default/styles.maemo.xml create mode 100644 fbreader/data/default/styles.moto.xml create mode 100644 fbreader/data/default/styles.pepperpad3.xml create mode 100644 fbreader/data/default/styles.win32.xml create mode 100644 fbreader/data/default/toolbar.desktop.xml create mode 100644 fbreader/data/default/toolbar.full.xml create mode 100644 fbreader/data/default/toolbar.macosx.xml create mode 100644 fbreader/data/default/toolbar.maemo.xml create mode 100644 fbreader/data/default/toolbar.short.xml create mode 100644 fbreader/data/default/toolbar.zaurus.xml create mode 100644 fbreader/data/formats/fb2/FBReaderVersion.ent create mode 100644 fbreader/data/formats/fb2/fb2genres.xml create mode 100644 fbreader/data/formats/html/html.ent create mode 100644 fbreader/data/help/MiniHelp.240x320.de.fb2 create mode 100644 fbreader/data/help/MiniHelp.240x320.en.fb2 create mode 100644 fbreader/data/help/MiniHelp.240x320.fi.fb2 create mode 100644 fbreader/data/help/MiniHelp.240x320.fr.fb2 create mode 100644 fbreader/data/help/MiniHelp.240x320.id.fb2 create mode 100644 fbreader/data/help/MiniHelp.240x320.it.fb2 create mode 100644 fbreader/data/help/MiniHelp.240x320.ru.fb2 create mode 100644 fbreader/data/help/MiniHelp.240x320.sv.fb2 create mode 100644 fbreader/data/help/MiniHelp.240x320.uk.fb2 create mode 100644 fbreader/data/help/MiniHelp.640x480.de.fb2 create mode 100644 fbreader/data/help/MiniHelp.640x480.en.fb2 create mode 100644 fbreader/data/help/MiniHelp.640x480.fi.fb2 create mode 100644 fbreader/data/help/MiniHelp.640x480.fr.fb2 create mode 100644 fbreader/data/help/MiniHelp.640x480.id.fb2 create mode 100644 fbreader/data/help/MiniHelp.640x480.it.fb2 create mode 100644 fbreader/data/help/MiniHelp.640x480.ru.fb2 create mode 100644 fbreader/data/help/MiniHelp.640x480.sv.fb2 create mode 100644 fbreader/data/help/MiniHelp.640x480.uk.fb2 create mode 100644 fbreader/data/help/MiniHelp.desktop.bg.fb2 create mode 100644 fbreader/data/help/MiniHelp.desktop.cs.fb2 create mode 100644 fbreader/data/help/MiniHelp.desktop.de.fb2 create mode 100644 fbreader/data/help/MiniHelp.desktop.en.fb2 create mode 100644 fbreader/data/help/MiniHelp.desktop.es.fb2 create mode 100644 fbreader/data/help/MiniHelp.desktop.fi.fb2 create mode 100644 fbreader/data/help/MiniHelp.desktop.fr.fb2 create mode 100644 fbreader/data/help/MiniHelp.desktop.he.fb2 create mode 100644 fbreader/data/help/MiniHelp.desktop.hu.fb2 create mode 100644 fbreader/data/help/MiniHelp.desktop.id.fb2 create mode 100644 fbreader/data/help/MiniHelp.desktop.it.fb2 create mode 100644 fbreader/data/help/MiniHelp.desktop.lt.fb2 create mode 100755 fbreader/data/help/MiniHelp.desktop.nl.fb2 create mode 100644 fbreader/data/help/MiniHelp.desktop.ru.fb2 create mode 100644 fbreader/data/help/MiniHelp.desktop.sv.fb2 create mode 100644 fbreader/data/help/MiniHelp.desktop.uk.fb2 create mode 100644 fbreader/data/help/MiniHelp.desktop.vi.fb2 create mode 100644 fbreader/data/help/MiniHelp.desktop.zh.fb2 create mode 100644 fbreader/data/help/MiniHelp.maemo.bg.fb2 create mode 100644 fbreader/data/help/MiniHelp.maemo.cs.fb2 create mode 100644 fbreader/data/help/MiniHelp.maemo.de.fb2 create mode 100644 fbreader/data/help/MiniHelp.maemo.en.fb2 create mode 100644 fbreader/data/help/MiniHelp.maemo.eo.fb2 create mode 100644 fbreader/data/help/MiniHelp.maemo.es.fb2 create mode 100644 fbreader/data/help/MiniHelp.maemo.fi.fb2 create mode 100644 fbreader/data/help/MiniHelp.maemo.fr.fb2 create mode 100644 fbreader/data/help/MiniHelp.maemo.he.fb2 create mode 100644 fbreader/data/help/MiniHelp.maemo.hu.fb2 create mode 100644 fbreader/data/help/MiniHelp.maemo.id.fb2 create mode 100644 fbreader/data/help/MiniHelp.maemo.it.fb2 create mode 100644 fbreader/data/help/MiniHelp.maemo.pl.fb2 create mode 100644 fbreader/data/help/MiniHelp.maemo.ru.fb2 create mode 100644 fbreader/data/help/MiniHelp.maemo.sv.fb2 create mode 100644 fbreader/data/help/MiniHelp.maemo.uk.fb2 create mode 100644 fbreader/data/help/MiniHelp.maemo.vi.fb2 create mode 100644 fbreader/data/help/MiniHelp.unix.bg.fb2 create mode 100644 fbreader/data/help/MiniHelp.unix.eo.fb2 create mode 100644 fbreader/data/help/MiniHelp.unix.pl.fb2 create mode 100644 fbreader/data/help/MiniHelp.win32.bg.fb2 create mode 100644 fbreader/data/help/MiniHelp.win32.cs.fb2 create mode 100644 fbreader/data/help/MiniHelp.win32.de.fb2 create mode 100644 fbreader/data/help/MiniHelp.win32.en.fb2 create mode 100644 fbreader/data/help/MiniHelp.win32.eo.fb2 create mode 100644 fbreader/data/help/MiniHelp.win32.es.fb2 create mode 100644 fbreader/data/help/MiniHelp.win32.fi.fb2 create mode 100644 fbreader/data/help/MiniHelp.win32.fr.fb2 create mode 100644 fbreader/data/help/MiniHelp.win32.he.fb2 create mode 100644 fbreader/data/help/MiniHelp.win32.hu.fb2 create mode 100644 fbreader/data/help/MiniHelp.win32.id.fb2 create mode 100644 fbreader/data/help/MiniHelp.win32.it.fb2 create mode 100644 fbreader/data/help/MiniHelp.win32.lt.fb2 create mode 100644 fbreader/data/help/MiniHelp.win32.pl.fb2 create mode 100644 fbreader/data/help/MiniHelp.win32.ru.fb2 create mode 100644 fbreader/data/help/MiniHelp.win32.sv.fb2 create mode 100644 fbreader/data/help/MiniHelp.win32.uk.fb2 create mode 100644 fbreader/data/help/MiniHelp.win32.vi.fb2 create mode 100644 fbreader/data/help/MiniHelp.win32.zh.fb2 create mode 100644 fbreader/data/icons/application/16x16.png create mode 100644 fbreader/data/icons/application/26x26.png create mode 100644 fbreader/data/icons/application/32x24.png create mode 100644 fbreader/data/icons/application/32x32.png create mode 100644 fbreader/data/icons/application/48x48.png create mode 100644 fbreader/data/icons/application/64x43.png create mode 100644 fbreader/data/icons/application/64x64.png create mode 100644 fbreader/data/icons/application/FBReader.icns create mode 120000 fbreader/data/icons/application/desktop.png create mode 120000 fbreader/data/icons/application/opensimpad-0.9.0.png create mode 120000 fbreader/data/icons/application/openzaurus_240x320.png create mode 120000 fbreader/data/icons/application/openzaurus_640x480.png create mode 120000 fbreader/data/icons/application/pdaxrom.png create mode 120000 fbreader/data/icons/application/pepperpad3.png create mode 120000 fbreader/data/icons/application/pma400.png create mode 120000 fbreader/data/icons/application/qvfb.png create mode 100644 fbreader/data/icons/application/win32.ico create mode 120000 fbreader/data/icons/application/zaurus_240x320.png create mode 120000 fbreader/data/icons/application/zaurus_640x480.png create mode 100755 fbreader/data/icons/back_button.png create mode 100755 fbreader/data/icons/back_button_disabled.png create mode 100644 fbreader/data/icons/booktree/22x22-transparent-png/tree-authorinfo.png create mode 100644 fbreader/data/icons/booktree/22x22-transparent-png/tree-bookinfo.png create mode 100644 fbreader/data/icons/booktree/22x22-transparent-png/tree-download-demo.png create mode 100644 fbreader/data/icons/booktree/22x22-transparent-png/tree-download-epub.png create mode 100644 fbreader/data/icons/booktree/22x22-transparent-png/tree-download-fb2.png create mode 100644 fbreader/data/icons/booktree/22x22-transparent-png/tree-download-mobi.png create mode 100644 fbreader/data/icons/booktree/22x22-transparent-png/tree-local-demo.png create mode 100644 fbreader/data/icons/booktree/22x22-transparent-png/tree-local-epub.png create mode 100644 fbreader/data/icons/booktree/22x22-transparent-png/tree-local-fb2.png create mode 100644 fbreader/data/icons/booktree/22x22-transparent-png/tree-local-mobi.png create mode 100644 fbreader/data/icons/booktree/22x22-transparent-png/tree-open-in-browser.png create mode 100644 fbreader/data/icons/booktree/22x22-transparent-png/tree-order-series.png create mode 100644 fbreader/data/icons/booktree/22x22-transparent-png/tree-purchase.png create mode 100644 fbreader/data/icons/booktree/22x22-transparent-png/tree-removebook.png create mode 100644 fbreader/data/icons/booktree/22x22-transparent-png/tree-removetag.png create mode 100644 fbreader/data/icons/booktree/22x22-transparent-png/tree-strut.png create mode 100644 fbreader/data/icons/booktree/22x22-transparent-png/tree-taginfo.png create mode 100644 fbreader/data/icons/booktree/28x28-transparent-png/tree-authorinfo.png create mode 100644 fbreader/data/icons/booktree/28x28-transparent-png/tree-bookinfo.png create mode 100644 fbreader/data/icons/booktree/28x28-transparent-png/tree-download-epub.png create mode 100644 fbreader/data/icons/booktree/28x28-transparent-png/tree-download-fb2.png create mode 100644 fbreader/data/icons/booktree/28x28-transparent-png/tree-download-mobi.png create mode 100644 fbreader/data/icons/booktree/28x28-transparent-png/tree-local-epub.png create mode 100644 fbreader/data/icons/booktree/28x28-transparent-png/tree-local-fb2.png create mode 100644 fbreader/data/icons/booktree/28x28-transparent-png/tree-local-mobi.png create mode 100644 fbreader/data/icons/booktree/28x28-transparent-png/tree-open-in-browser.png create mode 100644 fbreader/data/icons/booktree/28x28-transparent-png/tree-orderseries.png create mode 100644 fbreader/data/icons/booktree/28x28-transparent-png/tree-removebook.png create mode 100644 fbreader/data/icons/booktree/28x28-transparent-png/tree-removetag.png create mode 100644 fbreader/data/icons/booktree/28x28-transparent-png/tree-strut.png create mode 100644 fbreader/data/icons/booktree/28x28-transparent-png/tree-taginfo.png create mode 120000 fbreader/data/icons/booktree/desktop create mode 120000 fbreader/data/icons/booktree/maemo create mode 120000 fbreader/data/icons/booktree/moto create mode 100644 fbreader/data/icons/booktree/new/booktree-author.png create mode 100644 fbreader/data/icons/booktree/new/booktree-book.png create mode 100644 fbreader/data/icons/booktree/new/booktree-catalog.png create mode 100644 fbreader/data/icons/booktree/new/booktree-tag.png create mode 100644 fbreader/data/icons/booktree/new/searchresult.png create mode 120000 fbreader/data/icons/booktree/opensimpad-0.9.0 create mode 120000 fbreader/data/icons/booktree/openzaurus_240x320 create mode 120000 fbreader/data/icons/booktree/openzaurus_640x480 create mode 120000 fbreader/data/icons/booktree/pdaxrom create mode 120000 fbreader/data/icons/booktree/pepperpad3 create mode 120000 fbreader/data/icons/booktree/pma400 create mode 120000 fbreader/data/icons/booktree/qvfb create mode 120000 fbreader/data/icons/booktree/win32 create mode 120000 fbreader/data/icons/booktree/zaurus_240x320 create mode 120000 fbreader/data/icons/booktree/zaurus_640x480 create mode 100644 fbreader/data/icons/filetree/12x12-png/fb2.png create mode 100644 fbreader/data/icons/filetree/12x12-png/folder.png create mode 100644 fbreader/data/icons/filetree/12x12-png/html.png create mode 100644 fbreader/data/icons/filetree/12x12-png/mobipocket.png create mode 100644 fbreader/data/icons/filetree/12x12-png/oeb.png create mode 100644 fbreader/data/icons/filetree/12x12-png/openreader.png create mode 100644 fbreader/data/icons/filetree/12x12-png/palm.png create mode 100644 fbreader/data/icons/filetree/12x12-png/plucker.png create mode 100644 fbreader/data/icons/filetree/12x12-png/rtf.png create mode 100644 fbreader/data/icons/filetree/12x12-png/tcr.png create mode 100644 fbreader/data/icons/filetree/12x12-png/unknown.png create mode 100644 fbreader/data/icons/filetree/12x12-png/upfolder.png create mode 100644 fbreader/data/icons/filetree/12x12-png/weasel.png create mode 100644 fbreader/data/icons/filetree/12x12-png/zipfolder.png create mode 100644 fbreader/data/icons/filetree/22x22-transparent-ico/fb2.ico create mode 100644 fbreader/data/icons/filetree/22x22-transparent-ico/folder.ico create mode 100644 fbreader/data/icons/filetree/22x22-transparent-ico/html.ico create mode 100644 fbreader/data/icons/filetree/22x22-transparent-ico/mobipocket.ico create mode 100644 fbreader/data/icons/filetree/22x22-transparent-ico/oeb.ico create mode 100644 fbreader/data/icons/filetree/22x22-transparent-ico/openreader.ico create mode 100644 fbreader/data/icons/filetree/22x22-transparent-ico/palm.ico create mode 100644 fbreader/data/icons/filetree/22x22-transparent-ico/plucker.ico create mode 100644 fbreader/data/icons/filetree/22x22-transparent-ico/rtf.ico create mode 100644 fbreader/data/icons/filetree/22x22-transparent-ico/tcr.ico create mode 100644 fbreader/data/icons/filetree/22x22-transparent-ico/unknown.ico create mode 100644 fbreader/data/icons/filetree/22x22-transparent-ico/upfolder.ico create mode 100644 fbreader/data/icons/filetree/22x22-transparent-ico/weasel.ico create mode 100644 fbreader/data/icons/filetree/22x22-transparent-ico/zipfolder.ico create mode 100644 fbreader/data/icons/filetree/22x22-transparent-png/fb2.png create mode 100644 fbreader/data/icons/filetree/22x22-transparent-png/folder.png create mode 100644 fbreader/data/icons/filetree/22x22-transparent-png/html.png create mode 100644 fbreader/data/icons/filetree/22x22-transparent-png/mobipocket.png create mode 100644 fbreader/data/icons/filetree/22x22-transparent-png/oeb.png create mode 100644 fbreader/data/icons/filetree/22x22-transparent-png/openreader.png create mode 100644 fbreader/data/icons/filetree/22x22-transparent-png/palm.png create mode 100644 fbreader/data/icons/filetree/22x22-transparent-png/plucker.png create mode 100644 fbreader/data/icons/filetree/22x22-transparent-png/rtf.png create mode 100644 fbreader/data/icons/filetree/22x22-transparent-png/tcr.png create mode 100644 fbreader/data/icons/filetree/22x22-transparent-png/unknown.png create mode 100644 fbreader/data/icons/filetree/22x22-transparent-png/upfolder.png create mode 100644 fbreader/data/icons/filetree/22x22-transparent-png/weasel.png create mode 100644 fbreader/data/icons/filetree/22x22-transparent-png/zipfolder.png create mode 100644 fbreader/data/icons/filetree/32x32-transparent-png/fb2.png create mode 100644 fbreader/data/icons/filetree/32x32-transparent-png/folder.png create mode 100644 fbreader/data/icons/filetree/32x32-transparent-png/html.png create mode 100644 fbreader/data/icons/filetree/32x32-transparent-png/mobipocket.png create mode 100644 fbreader/data/icons/filetree/32x32-transparent-png/oeb.png create mode 100644 fbreader/data/icons/filetree/32x32-transparent-png/openreader.png create mode 100644 fbreader/data/icons/filetree/32x32-transparent-png/palm.png create mode 100644 fbreader/data/icons/filetree/32x32-transparent-png/plucker.png create mode 100644 fbreader/data/icons/filetree/32x32-transparent-png/rtf.png create mode 100644 fbreader/data/icons/filetree/32x32-transparent-png/tcr.png create mode 100644 fbreader/data/icons/filetree/32x32-transparent-png/unknown.png create mode 100644 fbreader/data/icons/filetree/32x32-transparent-png/upfolder.png create mode 100644 fbreader/data/icons/filetree/32x32-transparent-png/weasel.png create mode 100644 fbreader/data/icons/filetree/32x32-transparent-png/zipfolder.png create mode 120000 fbreader/data/icons/filetree/desktop create mode 120000 fbreader/data/icons/filetree/macosx create mode 120000 fbreader/data/icons/filetree/maemo create mode 120000 fbreader/data/icons/filetree/moto create mode 120000 fbreader/data/icons/filetree/opensimpad-0.9.0 create mode 120000 fbreader/data/icons/filetree/openzaurus_240x320 create mode 120000 fbreader/data/icons/filetree/openzaurus_640x480 create mode 120000 fbreader/data/icons/filetree/pdaxrom create mode 120000 fbreader/data/icons/filetree/pepperpad3 create mode 120000 fbreader/data/icons/filetree/pma400 create mode 120000 fbreader/data/icons/filetree/qvfb create mode 120000 fbreader/data/icons/filetree/win32 create mode 120000 fbreader/data/icons/filetree/zaurus_240x320 create mode 120000 fbreader/data/icons/filetree/zaurus_640x480 create mode 100644 fbreader/data/icons/forward_button.png create mode 100755 fbreader/data/icons/forward_button_disabled.png create mode 100644 fbreader/data/icons/refresh-icon-1.png create mode 100755 fbreader/data/icons/refresh-icon-2.png create mode 100644 fbreader/data/icons/refresh-icon.svg create mode 100644 fbreader/data/icons/search_icon.png create mode 100644 fbreader/data/icons/spinner.gif create mode 100644 fbreader/data/icons/toolbar/14x15-png/addBook.png create mode 100644 fbreader/data/icons/toolbar/14x15-png/bookInfo.png create mode 100644 fbreader/data/icons/toolbar/14x15-png/findNext.png create mode 100644 fbreader/data/icons/toolbar/14x15-png/findPrevious.png create mode 100644 fbreader/data/icons/toolbar/14x15-png/gotoHome.png create mode 100644 fbreader/data/icons/toolbar/14x15-png/preferences.png create mode 100644 fbreader/data/icons/toolbar/14x15-png/redo.png create mode 100644 fbreader/data/icons/toolbar/14x15-png/rotate.png create mode 100644 fbreader/data/icons/toolbar/14x15-png/search.png create mode 100644 fbreader/data/icons/toolbar/14x15-png/showLibrary.png create mode 100644 fbreader/data/icons/toolbar/14x15-png/showReading.png create mode 100644 fbreader/data/icons/toolbar/14x15-png/showRecent.png create mode 100644 fbreader/data/icons/toolbar/14x15-png/toc.png create mode 100644 fbreader/data/icons/toolbar/14x15-png/undo.png create mode 100644 fbreader/data/icons/toolbar/22x18-png/addBook.png create mode 100644 fbreader/data/icons/toolbar/22x18-png/bookInfo.png create mode 100644 fbreader/data/icons/toolbar/22x18-png/findNext.png create mode 100644 fbreader/data/icons/toolbar/22x18-png/findPrevious.png create mode 100644 fbreader/data/icons/toolbar/22x18-png/gotoHome.png create mode 100644 fbreader/data/icons/toolbar/22x18-png/preferences.png create mode 100644 fbreader/data/icons/toolbar/22x18-png/redo.png create mode 100644 fbreader/data/icons/toolbar/22x18-png/rotate.png create mode 100644 fbreader/data/icons/toolbar/22x18-png/search.png create mode 100644 fbreader/data/icons/toolbar/22x18-png/showLibrary.png create mode 100644 fbreader/data/icons/toolbar/22x18-png/showReading.png create mode 100644 fbreader/data/icons/toolbar/22x18-png/showRecent.png create mode 100644 fbreader/data/icons/toolbar/22x18-png/toc.png create mode 100644 fbreader/data/icons/toolbar/22x18-png/undo.png create mode 100644 fbreader/data/icons/toolbar/32x32-transparent-ico/addBook.ico create mode 100644 fbreader/data/icons/toolbar/32x32-transparent-ico/advancedSearchOnNetwork.ico create mode 100644 fbreader/data/icons/toolbar/32x32-transparent-ico/bookInfo.ico create mode 100644 fbreader/data/icons/toolbar/32x32-transparent-ico/byAuthor.ico create mode 100644 fbreader/data/icons/toolbar/32x32-transparent-ico/byTag.ico create mode 100644 fbreader/data/icons/toolbar/32x32-transparent-ico/findNext.ico create mode 100644 fbreader/data/icons/toolbar/32x32-transparent-ico/findPrevious.ico create mode 100644 fbreader/data/icons/toolbar/32x32-transparent-ico/gotoHome.ico create mode 100644 fbreader/data/icons/toolbar/32x32-transparent-ico/preferences.ico create mode 100644 fbreader/data/icons/toolbar/32x32-transparent-ico/redo.ico create mode 100644 fbreader/data/icons/toolbar/32x32-transparent-ico/rotate.ico create mode 100644 fbreader/data/icons/toolbar/32x32-transparent-ico/search.ico create mode 100644 fbreader/data/icons/toolbar/32x32-transparent-ico/showHelp.ico create mode 100644 fbreader/data/icons/toolbar/32x32-transparent-ico/showLibrary.ico create mode 100644 fbreader/data/icons/toolbar/32x32-transparent-ico/showNetLibrary.ico create mode 100644 fbreader/data/icons/toolbar/32x32-transparent-ico/showReading.ico create mode 100644 fbreader/data/icons/toolbar/32x32-transparent-ico/showRecent.ico create mode 100644 fbreader/data/icons/toolbar/32x32-transparent-ico/toc.ico create mode 100644 fbreader/data/icons/toolbar/32x32-transparent-ico/undo.ico create mode 100644 fbreader/data/icons/toolbar/32x32-transparent-png/addBook.png create mode 100644 fbreader/data/icons/toolbar/32x32-transparent-png/advancedSearchOnNetwork.png create mode 100644 fbreader/data/icons/toolbar/32x32-transparent-png/bookInfo.png create mode 100644 fbreader/data/icons/toolbar/32x32-transparent-png/byAuthor.png create mode 100644 fbreader/data/icons/toolbar/32x32-transparent-png/byTag.png create mode 100644 fbreader/data/icons/toolbar/32x32-transparent-png/findNext.png create mode 100644 fbreader/data/icons/toolbar/32x32-transparent-png/findPrevious.png create mode 100644 fbreader/data/icons/toolbar/32x32-transparent-png/gotoHome.png create mode 100644 fbreader/data/icons/toolbar/32x32-transparent-png/preferences.png create mode 100644 fbreader/data/icons/toolbar/32x32-transparent-png/redo.png create mode 100644 fbreader/data/icons/toolbar/32x32-transparent-png/rotate.png create mode 100644 fbreader/data/icons/toolbar/32x32-transparent-png/search.png create mode 100644 fbreader/data/icons/toolbar/32x32-transparent-png/showHelp.png create mode 100644 fbreader/data/icons/toolbar/32x32-transparent-png/showLibrary.png create mode 100644 fbreader/data/icons/toolbar/32x32-transparent-png/showNetLibrary.png create mode 120000 fbreader/data/icons/toolbar/32x32-transparent-png/showNetworkLibrary.png create mode 100644 fbreader/data/icons/toolbar/32x32-transparent-png/showReading.png create mode 100644 fbreader/data/icons/toolbar/32x32-transparent-png/showRecent.png create mode 100644 fbreader/data/icons/toolbar/32x32-transparent-png/toc.png create mode 100644 fbreader/data/icons/toolbar/32x32-transparent-png/undo.png create mode 120000 fbreader/data/icons/toolbar/desktop create mode 120000 fbreader/data/icons/toolbar/macosx create mode 120000 fbreader/data/icons/toolbar/maemo create mode 100644 fbreader/data/icons/toolbar/moto/addBook.png create mode 100644 fbreader/data/icons/toolbar/moto/bookInfo.png create mode 100644 fbreader/data/icons/toolbar/moto/findNext.png create mode 100644 fbreader/data/icons/toolbar/moto/findPrevious.png create mode 100644 fbreader/data/icons/toolbar/moto/gotoHome.png create mode 100644 fbreader/data/icons/toolbar/moto/preferences.png create mode 100644 fbreader/data/icons/toolbar/moto/redo.png create mode 100644 fbreader/data/icons/toolbar/moto/rotate.png create mode 100644 fbreader/data/icons/toolbar/moto/search.png create mode 100644 fbreader/data/icons/toolbar/moto/showHelp.png create mode 100644 fbreader/data/icons/toolbar/moto/showLibrary.png create mode 100644 fbreader/data/icons/toolbar/moto/showReading.png create mode 100644 fbreader/data/icons/toolbar/moto/showRecent.png create mode 100644 fbreader/data/icons/toolbar/moto/toc.png create mode 100644 fbreader/data/icons/toolbar/moto/undo.png create mode 120000 fbreader/data/icons/toolbar/opensimpad-0.9.0 create mode 120000 fbreader/data/icons/toolbar/openzaurus_240x320 create mode 120000 fbreader/data/icons/toolbar/openzaurus_640x480 create mode 120000 fbreader/data/icons/toolbar/pdaxrom create mode 120000 fbreader/data/icons/toolbar/pepperpad3 create mode 120000 fbreader/data/icons/toolbar/pma400 create mode 120000 fbreader/data/icons/toolbar/qvfb create mode 120000 fbreader/data/icons/toolbar/win32 create mode 120000 fbreader/data/icons/toolbar/zaurus_240x320 create mode 120000 fbreader/data/icons/toolbar/zaurus_640x480 create mode 100644 fbreader/data/resources/RIGHTS create mode 100644 fbreader/data/resources/ar.xml create mode 100644 fbreader/data/resources/bg.xml create mode 100644 fbreader/data/resources/cs.xml create mode 100644 fbreader/data/resources/de.xml create mode 100644 fbreader/data/resources/en.xml create mode 100644 fbreader/data/resources/eo.xml create mode 100644 fbreader/data/resources/es.xml create mode 100644 fbreader/data/resources/fi.xml create mode 100644 fbreader/data/resources/fr.xml create mode 100644 fbreader/data/resources/he.xml create mode 100644 fbreader/data/resources/hu.xml create mode 100644 fbreader/data/resources/id.xml create mode 100644 fbreader/data/resources/it.xml create mode 100644 fbreader/data/resources/lt.xml create mode 100644 fbreader/data/resources/nl.xml create mode 100644 fbreader/data/resources/pl.xml create mode 100644 fbreader/data/resources/ru.xml create mode 100644 fbreader/data/resources/sv.xml create mode 100644 fbreader/data/resources/uk.xml create mode 100644 fbreader/data/resources/vi.xml create mode 100644 fbreader/data/resources/zh.xml create mode 100644 fbreader/desktop/FBReader.1 create mode 100644 fbreader/desktop/Makefile create mode 100644 fbreader/desktop/desktop create mode 100644 fbreader/fbreader.pro create mode 100644 fbreader/macosx/English.lproj/MainMenu.xib create mode 100644 fbreader/macosx/Info.plist create mode 100644 fbreader/macosx/Makefile create mode 100644 fbreader/maemo/FBReader.backup create mode 100644 fbreader/maemo/FBReader.desktop create mode 100644 fbreader/maemo/FBReader.service create mode 100644 fbreader/maemo/Makefile create mode 100644 fbreader/moto/FBReader.desktop create mode 100755 fbreader/moto/FBReader.sh create mode 100644 fbreader/moto/Makefile create mode 100644 fbreader/moto/util/Makefile create mode 100755 fbreader/moto/util/language_detector create mode 100644 fbreader/moto/util/language_detector.cpp create mode 120000 fbreader/opensimpad-0.9.0 create mode 100644 fbreader/openzaurus/Makefile create mode 100644 fbreader/openzaurus/gpe/fbreader.desktop create mode 120000 fbreader/openzaurus/opie create mode 100644 fbreader/opie/Makefile create mode 100644 fbreader/opie/fbreader.desktop create mode 100644 fbreader/pdaxrom/Makefile create mode 100644 fbreader/pdaxrom/data/apps/Office/FBReader/AppInfo.xml create mode 100755 fbreader/pdaxrom/data/apps/Office/FBReader/AppRun create mode 100644 fbreader/pdaxrom/data/share/applications/FBReader.desktop create mode 100644 fbreader/pepperpad/fbreader.spec create mode 120000 fbreader/pepperpad3 create mode 100644 fbreader/pma400/FBReader.desktop create mode 100644 fbreader/pma400/Makefile create mode 120000 fbreader/qvfb create mode 100755 fbreader/scripts/install_config.sh create mode 100755 fbreader/scripts/install_help.sh create mode 100755 fbreader/scripts/install_toolbar_and_menu.sh create mode 100644 fbreader/src/blockTree/FBReaderNode.cpp create mode 100644 fbreader/src/blockTree/FBReaderNode.h create mode 100644 fbreader/src/bookmodel/BookModel.cpp create mode 100644 fbreader/src/bookmodel/BookModel.h create mode 100644 fbreader/src/bookmodel/BookReader.cpp create mode 100644 fbreader/src/bookmodel/BookReader.h create mode 100644 fbreader/src/bookmodel/FBHyperlinkType.h create mode 100644 fbreader/src/bookmodel/FBTextKind.h create mode 100644 fbreader/src/database/booksdb/BooksDB.cpp create mode 100644 fbreader/src/database/booksdb/BooksDB.h create mode 100644 fbreader/src/database/booksdb/BooksDBQuery.cpp create mode 100644 fbreader/src/database/booksdb/BooksDBQuery.h create mode 100644 fbreader/src/database/booksdb/BooksDBUtil.cpp create mode 100644 fbreader/src/database/booksdb/BooksDBUtil.h create mode 100644 fbreader/src/database/booksdb/BooksDB_BookAuthor.cpp create mode 100644 fbreader/src/database/booksdb/BooksDB_BookSeries.cpp create mode 100644 fbreader/src/database/booksdb/BooksDB_BookTag.cpp create mode 100644 fbreader/src/database/booksdb/DBRunnables.h create mode 100644 fbreader/src/database/booksdb/runnables/ClearBooksDBRunnable.cpp create mode 100644 fbreader/src/database/booksdb/runnables/DeleteBookRunnable.cpp create mode 100644 fbreader/src/database/booksdb/runnables/DeleteFileEntriesRunnable.cpp create mode 100644 fbreader/src/database/booksdb/runnables/FindFileIdRunnable.cpp create mode 100644 fbreader/src/database/booksdb/runnables/InitBooksDBRunnable.cpp create mode 100644 fbreader/src/database/booksdb/runnables/LoadFileEntriesRunnable.cpp create mode 100644 fbreader/src/database/booksdb/runnables/LoadRecentBooksRunnable.cpp create mode 100644 fbreader/src/database/booksdb/runnables/SaveAuthorsRunnable.cpp create mode 100644 fbreader/src/database/booksdb/runnables/SaveBookRunnable.cpp create mode 100644 fbreader/src/database/booksdb/runnables/SaveBookStateStackRunnable.cpp create mode 100644 fbreader/src/database/booksdb/runnables/SaveRecentBooksRunnable.cpp create mode 100644 fbreader/src/database/booksdb/runnables/SaveSeriesRunnable.cpp create mode 100644 fbreader/src/database/booksdb/runnables/SaveTableBookRunnable.cpp create mode 100644 fbreader/src/database/networkdb/DBRunnables.h create mode 100644 fbreader/src/database/networkdb/NetworkDB.cpp create mode 100644 fbreader/src/database/networkdb/NetworkDB.h create mode 100644 fbreader/src/database/networkdb/NetworkDBQuery.cpp create mode 100644 fbreader/src/database/networkdb/NetworkDBQuery.h create mode 100644 fbreader/src/database/networkdb/runnables/ClearNetworkDBRunnable.cpp create mode 100644 fbreader/src/database/networkdb/runnables/InitNetworkDBRunnable.cpp create mode 100644 fbreader/src/database/networkdb/runnables/SaveNetworkLinkRunnable.cpp create mode 100644 fbreader/src/database/sqldb/DBCommand.cpp create mode 100644 fbreader/src/database/sqldb/DBCommand.h create mode 100644 fbreader/src/database/sqldb/DBCommandParameter.cpp create mode 100644 fbreader/src/database/sqldb/DBCommandParameter.h create mode 100644 fbreader/src/database/sqldb/DBConnection.cpp create mode 100644 fbreader/src/database/sqldb/DBConnection.h create mode 100644 fbreader/src/database/sqldb/DBDataReader.cpp create mode 100644 fbreader/src/database/sqldb/DBDataReader.h create mode 100644 fbreader/src/database/sqldb/DBIntValue.cpp create mode 100644 fbreader/src/database/sqldb/DBNullValue.cpp create mode 100644 fbreader/src/database/sqldb/DBRealValue.cpp create mode 100644 fbreader/src/database/sqldb/DBRunnable.h create mode 100644 fbreader/src/database/sqldb/DBTextValue.cpp create mode 100644 fbreader/src/database/sqldb/DBValue.cpp create mode 100644 fbreader/src/database/sqldb/DBValues.h create mode 100644 fbreader/src/database/sqldb/DataBase.cpp create mode 100644 fbreader/src/database/sqldb/DataBase.h create mode 100644 fbreader/src/database/sqldb/implsqlite/SQLiteCommand.cpp create mode 100644 fbreader/src/database/sqldb/implsqlite/SQLiteCommand.h create mode 100644 fbreader/src/database/sqldb/implsqlite/SQLiteConnection.cpp create mode 100644 fbreader/src/database/sqldb/implsqlite/SQLiteConnection.h create mode 100644 fbreader/src/database/sqldb/implsqlite/SQLiteDataBase.cpp create mode 100644 fbreader/src/database/sqldb/implsqlite/SQLiteDataBase.h create mode 100644 fbreader/src/database/sqldb/implsqlite/SQLiteDataReader.cpp create mode 100644 fbreader/src/database/sqldb/implsqlite/SQLiteDataReader.h create mode 100644 fbreader/src/database/sqldb/implsqlite/SQLiteFactory.cpp create mode 100644 fbreader/src/database/sqldb/implsqlite/SQLiteFactory.h create mode 100644 fbreader/src/encodingOption/EncodingOptionEntry.cpp create mode 100644 fbreader/src/encodingOption/EncodingOptionEntry.h create mode 100644 fbreader/src/external/ProgramCollection.cpp create mode 100644 fbreader/src/external/ProgramCollection.h create mode 100644 fbreader/src/fbreader/AddBookAction.cpp create mode 100644 fbreader/src/fbreader/BookTextView.cpp create mode 100644 fbreader/src/fbreader/BookTextView.h create mode 100644 fbreader/src/fbreader/BooksOrderAction.cpp create mode 100644 fbreader/src/fbreader/ContentsView.cpp create mode 100644 fbreader/src/fbreader/ContentsView.h create mode 100644 fbreader/src/fbreader/FBReader.cpp create mode 100644 fbreader/src/fbreader/FBReader.h create mode 100644 fbreader/src/fbreader/FBReaderActionCode.cpp create mode 100644 fbreader/src/fbreader/FBReaderActions.cpp create mode 100644 fbreader/src/fbreader/FBReaderActions.h create mode 100644 fbreader/src/fbreader/FBView.cpp create mode 100644 fbreader/src/fbreader/FBView.h create mode 100644 fbreader/src/fbreader/FootnoteView.h create mode 100644 fbreader/src/fbreader/PreferencesPopupData.cpp create mode 100644 fbreader/src/fbreader/PreferencesPopupData.h create mode 100644 fbreader/src/fbreader/ReadingState.h create mode 100644 fbreader/src/fbreader/RecentBooksPopupData.cpp create mode 100644 fbreader/src/fbreader/RecentBooksPopupData.h create mode 100644 fbreader/src/fbreader/ScrollingAction.cpp create mode 100644 fbreader/src/fbreader/ScrollingAction.h create mode 100644 fbreader/src/fbreader/SearchActions.cpp create mode 100644 fbreader/src/fbreader/SearchOnNetworkAction.cpp create mode 100644 fbreader/src/fbreader/TimeUpdater.cpp create mode 100644 fbreader/src/fbreader/TimeUpdater.h create mode 100644 fbreader/src/fbreader/main.cpp create mode 100644 fbreader/src/formats/EncodedTextReader.cpp create mode 100644 fbreader/src/formats/EncodedTextReader.h create mode 100644 fbreader/src/formats/FormatPlugin.cpp create mode 100644 fbreader/src/formats/FormatPlugin.h create mode 100644 fbreader/src/formats/PluginCollection.cpp create mode 100644 fbreader/src/formats/chm/BitStream.cpp create mode 100644 fbreader/src/formats/chm/BitStream.h create mode 100644 fbreader/src/formats/chm/CHMFile.cpp create mode 100644 fbreader/src/formats/chm/CHMFile.h create mode 100644 fbreader/src/formats/chm/CHMFileImage.cpp create mode 100644 fbreader/src/formats/chm/CHMFileImage.h create mode 100644 fbreader/src/formats/chm/CHMPlugin.cpp create mode 100644 fbreader/src/formats/chm/CHMPlugin.h create mode 100644 fbreader/src/formats/chm/CHMReferenceCollection.cpp create mode 100644 fbreader/src/formats/chm/CHMReferenceCollection.h create mode 100644 fbreader/src/formats/chm/E8Decoder.cpp create mode 100644 fbreader/src/formats/chm/HHCReader.cpp create mode 100644 fbreader/src/formats/chm/HHCReader.h create mode 100644 fbreader/src/formats/chm/HHCReferenceCollector.cpp create mode 100644 fbreader/src/formats/chm/HHCReferenceCollector.h create mode 100644 fbreader/src/formats/chm/HtmlSectionReader.cpp create mode 100644 fbreader/src/formats/chm/HtmlSectionReader.h create mode 100644 fbreader/src/formats/chm/HuffmanDecoder.cpp create mode 100644 fbreader/src/formats/chm/HuffmanDecoder.h create mode 100644 fbreader/src/formats/chm/LZXDecompressor.cpp create mode 100644 fbreader/src/formats/chm/LZXDecompressor.h create mode 100644 fbreader/src/formats/css/StyleSheetParser.cpp create mode 100644 fbreader/src/formats/css/StyleSheetParser.h create mode 100644 fbreader/src/formats/css/StyleSheetTable.cpp create mode 100644 fbreader/src/formats/css/StyleSheetTable.h create mode 100644 fbreader/src/formats/doc/DocBookReader.cpp create mode 100644 fbreader/src/formats/doc/DocBookReader.h create mode 100644 fbreader/src/formats/doc/DocFloatImageReader.cpp create mode 100644 fbreader/src/formats/doc/DocFloatImageReader.h create mode 100644 fbreader/src/formats/doc/DocInlineImageReader.cpp create mode 100644 fbreader/src/formats/doc/DocInlineImageReader.h create mode 100644 fbreader/src/formats/doc/DocMetaInfoReader.cpp create mode 100644 fbreader/src/formats/doc/DocMetaInfoReader.h create mode 100644 fbreader/src/formats/doc/DocPlugin.cpp create mode 100644 fbreader/src/formats/doc/DocPlugin.h create mode 100644 fbreader/src/formats/doc/DocStreams.cpp create mode 100644 fbreader/src/formats/doc/DocStreams.h create mode 100644 fbreader/src/formats/doc/OleMainStream.cpp create mode 100644 fbreader/src/formats/doc/OleMainStream.h create mode 100644 fbreader/src/formats/doc/OleStorage.cpp create mode 100644 fbreader/src/formats/doc/OleStorage.h create mode 100644 fbreader/src/formats/doc/OleStream.cpp create mode 100644 fbreader/src/formats/doc/OleStream.h create mode 100644 fbreader/src/formats/doc/OleStreamParser.cpp create mode 100644 fbreader/src/formats/doc/OleStreamParser.h create mode 100644 fbreader/src/formats/doc/OleStreamReader.cpp create mode 100644 fbreader/src/formats/doc/OleStreamReader.h create mode 100644 fbreader/src/formats/doc/OleUtil.cpp create mode 100644 fbreader/src/formats/doc/OleUtil.h create mode 100644 fbreader/src/formats/docbook/DocBookBookReader.cpp create mode 100644 fbreader/src/formats/docbook/DocBookBookReader.h create mode 100644 fbreader/src/formats/docbook/DocBookDescriptionReader.cpp create mode 100644 fbreader/src/formats/docbook/DocBookDescriptionReader.h create mode 100644 fbreader/src/formats/docbook/DocBookPlugin.cpp create mode 100644 fbreader/src/formats/docbook/DocBookPlugin.h create mode 100644 fbreader/src/formats/docbook/DocBookReader.cpp create mode 100644 fbreader/src/formats/docbook/DocBookReader.h create mode 100644 fbreader/src/formats/dummy/DummyBookReader.cpp create mode 100644 fbreader/src/formats/dummy/DummyBookReader.h create mode 100644 fbreader/src/formats/dummy/DummyMetaInfoReader.cpp create mode 100644 fbreader/src/formats/dummy/DummyMetaInfoReader.h create mode 100644 fbreader/src/formats/dummy/DummyPlugin.cpp create mode 100644 fbreader/src/formats/dummy/DummyPlugin.h create mode 100755 fbreader/src/formats/dummy/createPlugin.sh create mode 100644 fbreader/src/formats/fb2/FB2BookReader.cpp create mode 100644 fbreader/src/formats/fb2/FB2BookReader.h create mode 100644 fbreader/src/formats/fb2/FB2CoverReader.cpp create mode 100644 fbreader/src/formats/fb2/FB2CoverReader.h create mode 100644 fbreader/src/formats/fb2/FB2MetaInfoReader.cpp create mode 100644 fbreader/src/formats/fb2/FB2MetaInfoReader.h create mode 100644 fbreader/src/formats/fb2/FB2Plugin.cpp create mode 100644 fbreader/src/formats/fb2/FB2Plugin.h create mode 100644 fbreader/src/formats/fb2/FB2Reader.cpp create mode 100644 fbreader/src/formats/fb2/FB2Reader.h create mode 100644 fbreader/src/formats/fb2/FB2TagManager.cpp create mode 100644 fbreader/src/formats/fb2/FB2TagManager.h create mode 100644 fbreader/src/formats/html/HtmlBookReader.cpp create mode 100644 fbreader/src/formats/html/HtmlBookReader.h create mode 100644 fbreader/src/formats/html/HtmlDescriptionReader.cpp create mode 100644 fbreader/src/formats/html/HtmlDescriptionReader.h create mode 100644 fbreader/src/formats/html/HtmlEntityCollection.cpp create mode 100644 fbreader/src/formats/html/HtmlEntityCollection.h create mode 100644 fbreader/src/formats/html/HtmlPlugin.cpp create mode 100644 fbreader/src/formats/html/HtmlPlugin.h create mode 100644 fbreader/src/formats/html/HtmlReader.cpp create mode 100644 fbreader/src/formats/html/HtmlReader.h create mode 100644 fbreader/src/formats/html/HtmlReaderStream.cpp create mode 100644 fbreader/src/formats/html/HtmlReaderStream.h create mode 100644 fbreader/src/formats/html/HtmlTagActions.h create mode 100644 fbreader/src/formats/oeb/NCXReader.cpp create mode 100644 fbreader/src/formats/oeb/NCXReader.h create mode 100644 fbreader/src/formats/oeb/OEBBookReader.cpp create mode 100644 fbreader/src/formats/oeb/OEBBookReader.h create mode 100644 fbreader/src/formats/oeb/OEBCoverReader.cpp create mode 100644 fbreader/src/formats/oeb/OEBCoverReader.h create mode 100644 fbreader/src/formats/oeb/OEBMetaInfoReader.cpp create mode 100644 fbreader/src/formats/oeb/OEBMetaInfoReader.h create mode 100644 fbreader/src/formats/oeb/OEBPlugin.cpp create mode 100644 fbreader/src/formats/oeb/OEBPlugin.h create mode 100644 fbreader/src/formats/oeb/OEBTextStream.cpp create mode 100644 fbreader/src/formats/oeb/OEBTextStream.h create mode 100644 fbreader/src/formats/oeb/XHTMLImageFinder.cpp create mode 100644 fbreader/src/formats/oeb/XHTMLImageFinder.h create mode 100644 fbreader/src/formats/openreader/ORBookReader.cpp create mode 100644 fbreader/src/formats/openreader/ORBookReader.h create mode 100644 fbreader/src/formats/openreader/ORDescriptionReader.cpp create mode 100644 fbreader/src/formats/openreader/ORDescriptionReader.h create mode 100644 fbreader/src/formats/openreader/OpenReaderPlugin.cpp create mode 100644 fbreader/src/formats/openreader/OpenReaderPlugin.h create mode 100644 fbreader/src/formats/pdb/BitReader.cpp create mode 100644 fbreader/src/formats/pdb/BitReader.h create mode 100644 fbreader/src/formats/pdb/DocDecompressor.cpp create mode 100644 fbreader/src/formats/pdb/DocDecompressor.h create mode 100644 fbreader/src/formats/pdb/EReaderPlugin.cpp create mode 100644 fbreader/src/formats/pdb/EReaderStream.cpp create mode 100644 fbreader/src/formats/pdb/EReaderStream.h create mode 100644 fbreader/src/formats/pdb/HtmlMetainfoReader.cpp create mode 100644 fbreader/src/formats/pdb/HtmlMetainfoReader.h create mode 100644 fbreader/src/formats/pdb/HuffDecompressor.cpp create mode 100644 fbreader/src/formats/pdb/HuffDecompressor.h create mode 100644 fbreader/src/formats/pdb/MobipocketHtmlBookReader.cpp create mode 100644 fbreader/src/formats/pdb/MobipocketHtmlBookReader.h create mode 100644 fbreader/src/formats/pdb/MobipocketPlugin.cpp create mode 100644 fbreader/src/formats/pdb/PalmDocLikePlugin.cpp create mode 100644 fbreader/src/formats/pdb/PalmDocLikeStream.cpp create mode 100644 fbreader/src/formats/pdb/PalmDocLikeStream.h create mode 100644 fbreader/src/formats/pdb/PalmDocPlugin.cpp create mode 100644 fbreader/src/formats/pdb/PalmDocStream.cpp create mode 100644 fbreader/src/formats/pdb/PalmDocStream.h create mode 100644 fbreader/src/formats/pdb/PdbPlugin.cpp create mode 100644 fbreader/src/formats/pdb/PdbPlugin.h create mode 100644 fbreader/src/formats/pdb/PdbReader.cpp create mode 100644 fbreader/src/formats/pdb/PdbReader.h create mode 100644 fbreader/src/formats/pdb/PdbStream.cpp create mode 100644 fbreader/src/formats/pdb/PdbStream.h create mode 100644 fbreader/src/formats/pdb/PluckerBookReader.cpp create mode 100644 fbreader/src/formats/pdb/PluckerBookReader.h create mode 100644 fbreader/src/formats/pdb/PluckerImages.cpp create mode 100644 fbreader/src/formats/pdb/PluckerImages.h create mode 100644 fbreader/src/formats/pdb/PluckerPlugin.cpp create mode 100644 fbreader/src/formats/pdb/PluckerTextStream.cpp create mode 100644 fbreader/src/formats/pdb/PluckerTextStream.h create mode 100644 fbreader/src/formats/pdb/PmlBookReader.cpp create mode 100644 fbreader/src/formats/pdb/PmlBookReader.h create mode 100644 fbreader/src/formats/pdb/PmlReader.cpp create mode 100644 fbreader/src/formats/pdb/PmlReader.h create mode 100644 fbreader/src/formats/pdb/SimplePdbPlugin.cpp create mode 100644 fbreader/src/formats/pdb/ZTXTPlugin.cpp create mode 100644 fbreader/src/formats/pdb/ZTXTStream.cpp create mode 100644 fbreader/src/formats/pdb/ZTXTStream.h create mode 100644 fbreader/src/formats/pdf/PdfBookReader.cpp create mode 100644 fbreader/src/formats/pdf/PdfBookReader.h create mode 100644 fbreader/src/formats/pdf/PdfDescriptionReader.cpp create mode 100644 fbreader/src/formats/pdf/PdfDescriptionReader.h create mode 100644 fbreader/src/formats/pdf/PdfObject.cpp create mode 100644 fbreader/src/formats/pdf/PdfObject.h create mode 100644 fbreader/src/formats/pdf/PdfPlugin.cpp create mode 100644 fbreader/src/formats/pdf/PdfPlugin.h create mode 100644 fbreader/src/formats/pdf/StringStream.cpp create mode 100644 fbreader/src/formats/pdf/StringStream.h create mode 100644 fbreader/src/formats/rtf/RtfBookReader.cpp create mode 100644 fbreader/src/formats/rtf/RtfBookReader.h create mode 100644 fbreader/src/formats/rtf/RtfDescriptionReader.cpp create mode 100644 fbreader/src/formats/rtf/RtfDescriptionReader.h create mode 100644 fbreader/src/formats/rtf/RtfPlugin.cpp create mode 100644 fbreader/src/formats/rtf/RtfPlugin.h create mode 100644 fbreader/src/formats/rtf/RtfReader.cpp create mode 100644 fbreader/src/formats/rtf/RtfReader.h create mode 100644 fbreader/src/formats/rtf/RtfReaderStream.cpp create mode 100644 fbreader/src/formats/rtf/RtfReaderStream.h create mode 100644 fbreader/src/formats/tcr/PPLBookReader.cpp create mode 100644 fbreader/src/formats/tcr/PPLBookReader.h create mode 100644 fbreader/src/formats/tcr/TcrPlugin.cpp create mode 100644 fbreader/src/formats/tcr/TcrPlugin.h create mode 100644 fbreader/src/formats/tcr/TcrStream.cpp create mode 100644 fbreader/src/formats/tcr/TcrStream.h create mode 100644 fbreader/src/formats/txt/PlainTextFormat.cpp create mode 100644 fbreader/src/formats/txt/PlainTextFormat.h create mode 100644 fbreader/src/formats/txt/TxtBookReader.cpp create mode 100644 fbreader/src/formats/txt/TxtBookReader.h create mode 100644 fbreader/src/formats/txt/TxtPlugin.cpp create mode 100644 fbreader/src/formats/txt/TxtPlugin.h create mode 100644 fbreader/src/formats/txt/TxtReader.cpp create mode 100644 fbreader/src/formats/txt/TxtReader.h create mode 100644 fbreader/src/formats/util/EntityFilesCollector.cpp create mode 100644 fbreader/src/formats/util/EntityFilesCollector.h create mode 100644 fbreader/src/formats/util/MergedStream.cpp create mode 100644 fbreader/src/formats/util/MergedStream.h create mode 100644 fbreader/src/formats/util/MiscUtil.cpp create mode 100644 fbreader/src/formats/util/MiscUtil.h create mode 100644 fbreader/src/formats/util/TextFormatDetector.cpp create mode 100644 fbreader/src/formats/util/TextFormatDetector.h create mode 100644 fbreader/src/formats/util/XMLTextStream.cpp create mode 100644 fbreader/src/formats/util/XMLTextStream.h create mode 100644 fbreader/src/formats/xhtml/XHTMLReader.cpp create mode 100644 fbreader/src/formats/xhtml/XHTMLReader.h create mode 100644 fbreader/src/library/Author.cpp create mode 100644 fbreader/src/library/Author.h create mode 100644 fbreader/src/library/Book.cpp create mode 100644 fbreader/src/library/Book.h create mode 100644 fbreader/src/library/Comparators.cpp create mode 100644 fbreader/src/library/Library.cpp create mode 100644 fbreader/src/library/Library.h create mode 100644 fbreader/src/library/Lists.h create mode 100644 fbreader/src/library/Number.cpp create mode 100644 fbreader/src/library/Number.h create mode 100644 fbreader/src/library/Tag.cpp create mode 100644 fbreader/src/library/Tag.h create mode 100644 fbreader/src/libraryActions/AuthorInfoDialog.cpp create mode 100644 fbreader/src/libraryActions/AuthorInfoDialog.h create mode 100644 fbreader/src/libraryActions/BooksUtil.cpp create mode 100644 fbreader/src/libraryActions/BooksUtil.h create mode 100644 fbreader/src/libraryActions/LibraryAuthorActions.cpp create mode 100644 fbreader/src/libraryActions/LibraryAuthorActions.h create mode 100644 fbreader/src/libraryActions/LibraryBookActions.cpp create mode 100644 fbreader/src/libraryActions/LibraryBookActions.h create mode 100644 fbreader/src/libraryActions/LibraryTagActions.cpp create mode 100644 fbreader/src/libraryActions/LibraryTagActions.h create mode 100644 fbreader/src/libraryTree/AuthorNode.cpp create mode 100644 fbreader/src/libraryTree/BookNode.cpp create mode 100644 fbreader/src/libraryTree/LibraryByAuthorView.cpp create mode 100644 fbreader/src/libraryTree/LibraryByTagView.cpp create mode 100644 fbreader/src/libraryTree/LibraryNodes.h create mode 100644 fbreader/src/libraryTree/LibraryView.cpp create mode 100644 fbreader/src/libraryTree/LibraryView.h create mode 100644 fbreader/src/libraryTree/SeriesNode.cpp create mode 100644 fbreader/src/libraryTree/TagNode.cpp create mode 100644 fbreader/src/migration/BookInfo.cpp create mode 100644 fbreader/src/migration/BookInfo.h create mode 100644 fbreader/src/migration/FB2MigrationReader.cpp create mode 100644 fbreader/src/migration/FB2MigrationReader.h create mode 100644 fbreader/src/migration/HtmlDCTagsReader.cpp create mode 100644 fbreader/src/migration/HtmlDCTagsReader.h create mode 100644 fbreader/src/migration/Migration.cpp create mode 100644 fbreader/src/migration/Migration.h create mode 100644 fbreader/src/migration/Migration_0_10_4.cpp create mode 100644 fbreader/src/migration/Migration_0_11_0.cpp create mode 100644 fbreader/src/migration/Migration_0_8_11.cpp create mode 100644 fbreader/src/migration/Migration_0_8_13.cpp create mode 100644 fbreader/src/migration/Migration_0_8_16.cpp create mode 100644 fbreader/src/migration/Migration_0_99_0.cpp create mode 100644 fbreader/src/migration/Migration_0_99_1.cpp create mode 100644 fbreader/src/migration/OEBMigrationReader.cpp create mode 100644 fbreader/src/migration/OEBMigrationReader.h create mode 100644 fbreader/src/migration/migrate.cpp create mode 100644 fbreader/src/migration/migrate.h create mode 100644 fbreader/src/network/BookReference.cpp create mode 100644 fbreader/src/network/BookReference.h create mode 100644 fbreader/src/network/NetworkBookCollection.cpp create mode 100644 fbreader/src/network/NetworkBookCollection.h create mode 100644 fbreader/src/network/NetworkBookItem.cpp create mode 100644 fbreader/src/network/NetworkCatalogItem.cpp create mode 100644 fbreader/src/network/NetworkComparators.cpp create mode 100644 fbreader/src/network/NetworkComparators.h create mode 100644 fbreader/src/network/NetworkErrors.cpp create mode 100644 fbreader/src/network/NetworkErrors.h create mode 100644 fbreader/src/network/NetworkItem.cpp create mode 100644 fbreader/src/network/NetworkItems.h create mode 100644 fbreader/src/network/NetworkLink.cpp create mode 100644 fbreader/src/network/NetworkLink.h create mode 100644 fbreader/src/network/NetworkLinkCollection.cpp create mode 100644 fbreader/src/network/NetworkLinkCollection.h create mode 100644 fbreader/src/network/NetworkOperationData.cpp create mode 100644 fbreader/src/network/NetworkOperationData.h create mode 100644 fbreader/src/network/SearchResult.cpp create mode 100644 fbreader/src/network/SearchResult.h create mode 100644 fbreader/src/network/UserList.cpp create mode 100644 fbreader/src/network/UserList.h create mode 100644 fbreader/src/network/atom/ATOMConstructs.cpp create mode 100644 fbreader/src/network/atom/ATOMConstructs.h create mode 100644 fbreader/src/network/atom/ATOMContainers.cpp create mode 100644 fbreader/src/network/atom/ATOMContainers.h create mode 100644 fbreader/src/network/atom/ATOMMetadata.cpp create mode 100644 fbreader/src/network/atom/ATOMMetadata.h create mode 100644 fbreader/src/network/authentication/NetworkAuthenticationManager.cpp create mode 100644 fbreader/src/network/authentication/NetworkAuthenticationManager.h create mode 100644 fbreader/src/network/authentication/litres/LitResAuthenticationDataParser.cpp create mode 100644 fbreader/src/network/authentication/litres/LitResAuthenticationDataParser.h create mode 100644 fbreader/src/network/authentication/litres/LitResAuthenticationManager.cpp create mode 100644 fbreader/src/network/authentication/litres/LitResAuthenticationManager.h create mode 100644 fbreader/src/network/litres/LitResAuthorsItem.cpp create mode 100644 fbreader/src/network/litres/LitResAuthorsItem.h create mode 100644 fbreader/src/network/litres/LitResAuthorsParser.cpp create mode 100644 fbreader/src/network/litres/LitResAuthorsParser.h create mode 100644 fbreader/src/network/litres/LitResBookItem.cpp create mode 100644 fbreader/src/network/litres/LitResBookItem.h create mode 100644 fbreader/src/network/litres/LitResBooksFeedItem.cpp create mode 100644 fbreader/src/network/litres/LitResBooksFeedItem.h create mode 100644 fbreader/src/network/litres/LitResBooksFeedParser.cpp create mode 100644 fbreader/src/network/litres/LitResBooksFeedParser.h create mode 100644 fbreader/src/network/litres/LitResBookshelfItem.cpp create mode 100644 fbreader/src/network/litres/LitResBookshelfItem.h create mode 100644 fbreader/src/network/litres/LitResByGenresItem.cpp create mode 100644 fbreader/src/network/litres/LitResByGenresItem.h create mode 100644 fbreader/src/network/litres/LitResGenre.cpp create mode 100644 fbreader/src/network/litres/LitResGenre.h create mode 100644 fbreader/src/network/litres/LitResGenresParser.cpp create mode 100644 fbreader/src/network/litres/LitResGenresParser.h create mode 100644 fbreader/src/network/litres/LitResRecommendationsItem.cpp create mode 100644 fbreader/src/network/litres/LitResRecommendationsItem.h create mode 100644 fbreader/src/network/litres/LitResUtil.cpp create mode 100644 fbreader/src/network/litres/LitResUtil.h create mode 100644 fbreader/src/network/litres/SortedCatalogItem.cpp create mode 100644 fbreader/src/network/litres/SortedCatalogItem.h create mode 100644 fbreader/src/network/opds/NetworkOPDSFeedReader.cpp create mode 100644 fbreader/src/network/opds/NetworkOPDSFeedReader.h create mode 100644 fbreader/src/network/opds/OPDSBookItem.cpp create mode 100644 fbreader/src/network/opds/OPDSBookItem.h create mode 100644 fbreader/src/network/opds/OPDSCatalogItem.cpp create mode 100644 fbreader/src/network/opds/OPDSCatalogItem.h create mode 100644 fbreader/src/network/opds/OPDSFeedReader.h create mode 100644 fbreader/src/network/opds/OPDSLink.cpp create mode 100644 fbreader/src/network/opds/OPDSLink.h create mode 100644 fbreader/src/network/opds/OPDSLink_AdvancedSearch.h create mode 100644 fbreader/src/network/opds/OPDSLink_GenericFeedReader.cpp create mode 100644 fbreader/src/network/opds/OPDSLink_GenericFeedReader.h create mode 100644 fbreader/src/network/opds/OPDSLink_GenericXMLParser.cpp create mode 100644 fbreader/src/network/opds/OPDSLink_GenericXMLParser.h create mode 100644 fbreader/src/network/opds/OPDSMetadata.cpp create mode 100644 fbreader/src/network/opds/OPDSMetadata.h create mode 100644 fbreader/src/network/opds/OPDSXMLParser.cpp create mode 100644 fbreader/src/network/opds/OPDSXMLParser.h create mode 100644 fbreader/src/network/opds/OpenSearchXMLReader.cpp create mode 100644 fbreader/src/network/opds/OpenSearchXMLReader.h create mode 100644 fbreader/src/network/opds/URLRewritingRule.cpp create mode 100644 fbreader/src/network/opds/URLRewritingRule.h create mode 100644 fbreader/src/network/tree/NetworkAuthorTree.cpp create mode 100644 fbreader/src/network/tree/NetworkBookTree.cpp create mode 100644 fbreader/src/network/tree/NetworkCatalogRootTree.cpp create mode 100644 fbreader/src/network/tree/NetworkCatalogTree.cpp create mode 100644 fbreader/src/network/tree/NetworkCatalogUtil.cpp create mode 100644 fbreader/src/network/tree/NetworkCatalogUtil.h create mode 100644 fbreader/src/network/tree/NetworkLibrary.cpp create mode 100644 fbreader/src/network/tree/NetworkLibrary.h create mode 100644 fbreader/src/network/tree/NetworkSearcher.cpp create mode 100644 fbreader/src/network/tree/NetworkSearcher.h create mode 100644 fbreader/src/network/tree/NetworkSeriesTree.cpp create mode 100644 fbreader/src/network/tree/NetworkTree.cpp create mode 100644 fbreader/src/network/tree/NetworkTreeFactory.cpp create mode 100644 fbreader/src/network/tree/NetworkTreeFactory.h create mode 100644 fbreader/src/network/tree/NetworkTreeNodes.h create mode 100644 fbreader/src/network/tree/RootTree.cpp create mode 100644 fbreader/src/network/tree/SearchCatalogTree.cpp create mode 100644 fbreader/src/networkActions/AuthenticationDialog.cpp create mode 100644 fbreader/src/networkActions/AuthenticationDialog.h create mode 100644 fbreader/src/networkActions/AuthenticationDialogManager.cpp create mode 100644 fbreader/src/networkActions/AuthenticationDialogManager.h create mode 100644 fbreader/src/networkActions/NetworkActions.cpp create mode 100644 fbreader/src/networkActions/NetworkActions.h create mode 100644 fbreader/src/networkActions/NetworkOperationRunnable.cpp create mode 100644 fbreader/src/networkActions/NetworkOperationRunnable.h create mode 100644 fbreader/src/networkActions/PasswordRecoveryDialog.cpp create mode 100644 fbreader/src/networkActions/PasswordRecoveryDialog.h create mode 100644 fbreader/src/networkActions/RegisterUserDialog.cpp create mode 100644 fbreader/src/networkActions/RegisterUserDialog.h create mode 100644 fbreader/src/options/FBCategoryKey.cpp create mode 100644 fbreader/src/options/FBCategoryKey.h create mode 100644 fbreader/src/options/FBOptions.cpp create mode 100644 fbreader/src/options/FBOptions.h create mode 100644 fbreader/src/options/FBTextStyle.cpp create mode 100644 fbreader/src/options/FBTextStyle.h create mode 100644 fbreader/src/optionsDialog/AbstractOptionsDialog.cpp create mode 100644 fbreader/src/optionsDialog/AbstractOptionsDialog.h create mode 100644 fbreader/src/optionsDialog/IntegrationTab.cpp create mode 100644 fbreader/src/optionsDialog/bookInfo/BookInfoDialog.cpp create mode 100644 fbreader/src/optionsDialog/bookInfo/BookInfoDialog.h create mode 100644 fbreader/src/optionsDialog/library/LibraryOptionsDialog.cpp create mode 100644 fbreader/src/optionsDialog/library/LibraryOptionsDialog.h create mode 100644 fbreader/src/optionsDialog/lookAndFeel/FormatOptionsPage.cpp create mode 100644 fbreader/src/optionsDialog/lookAndFeel/FormatOptionsPage.h create mode 100644 fbreader/src/optionsDialog/lookAndFeel/LookAndFeelOptionsDialog.cpp create mode 100644 fbreader/src/optionsDialog/lookAndFeel/LookAndFeelOptionsDialog.h create mode 100644 fbreader/src/optionsDialog/lookAndFeel/OptionsPage.cpp create mode 100644 fbreader/src/optionsDialog/lookAndFeel/OptionsPage.h create mode 100644 fbreader/src/optionsDialog/lookAndFeel/StyleOptionsPage.cpp create mode 100644 fbreader/src/optionsDialog/lookAndFeel/StyleOptionsPage.h create mode 100644 fbreader/src/optionsDialog/network/NetworkOptionsDialog.cpp create mode 100644 fbreader/src/optionsDialog/network/NetworkOptionsDialog.h create mode 100644 fbreader/src/optionsDialog/reading/IndicatorTab.cpp create mode 100644 fbreader/src/optionsDialog/reading/KeyBindingsTab.cpp create mode 100644 fbreader/src/optionsDialog/reading/ReadingOptionsDialog.cpp create mode 100644 fbreader/src/optionsDialog/reading/ReadingOptionsDialog.h create mode 100644 fbreader/src/optionsDialog/system/SystemOptionsDialog.cpp create mode 100644 fbreader/src/optionsDialog/system/SystemOptionsDialog.h create mode 100644 fbreader/src/tree/FBTree.cpp create mode 100644 fbreader/src/tree/FBTree.h create mode 100644 fbreader/win32/Makefile create mode 100644 fbreader/win32/manifest create mode 100644 fbreader/zaurus/FBReader.240x320.desktop create mode 100644 fbreader/zaurus/FBReader.640x480.desktop create mode 100644 fbreader/zaurus/Makefile create mode 100644 makefiles/arch/bb10.mk create mode 100644 makefiles/arch/desktop.mk create mode 100644 makefiles/arch/ebr.mk create mode 100644 makefiles/arch/iphone.mk create mode 100644 makefiles/arch/macosx.mk create mode 100644 makefiles/arch/maemo.mk create mode 100644 makefiles/arch/moto.mk create mode 100644 makefiles/arch/opensimpad-0.9.0.mk create mode 100644 makefiles/arch/openzaurus.mk create mode 100644 makefiles/arch/pdaxrom.mk create mode 120000 makefiles/arch/pepperpad3.mk create mode 100644 makefiles/arch/pma400.mk create mode 100644 makefiles/arch/pocketpc.mk create mode 100644 makefiles/arch/qvfb.mk create mode 100644 makefiles/arch/unix.mk create mode 100644 makefiles/arch/win32.mk create mode 100644 makefiles/arch/zaurus.mk create mode 100644 makefiles/config.mk create mode 100644 makefiles/gtksubdir.mk create mode 100644 makefiles/packaging.mk create mode 100644 makefiles/platforms.mk create mode 100644 makefiles/qsubdir.mk create mode 100644 makefiles/subdir.mk create mode 100644 makefiles/target.mk create mode 100644 zlibrary/VERSION create mode 100644 zlibrary/core/Makefile create mode 100644 zlibrary/core/SOVERSION create mode 100644 zlibrary/core/core.pro create mode 100644 zlibrary/core/data/default/config.desktop.xml create mode 100644 zlibrary/core/data/default/config.macosx.xml create mode 100644 zlibrary/core/data/default/config.maemo.xml create mode 100644 zlibrary/core/data/default/config.moto.xml create mode 100644 zlibrary/core/data/default/config.opensimpad-0.9.0.xml create mode 100644 zlibrary/core/data/default/config.openzaurus-gpe.xml create mode 100644 zlibrary/core/data/default/config.openzaurus-opie.xml create mode 100644 zlibrary/core/data/default/config.pdaxrom.xml create mode 100644 zlibrary/core/data/default/config.pepperpad3.xml create mode 100644 zlibrary/core/data/default/config.pma400.xml create mode 100644 zlibrary/core/data/default/config.qvfb.xml create mode 100644 zlibrary/core/data/default/config.zaurus.xml create mode 100644 zlibrary/core/data/encodings/Big5 create mode 100644 zlibrary/core/data/encodings/Encodings.xml create mode 100644 zlibrary/core/data/encodings/GBK create mode 100644 zlibrary/core/data/encodings/IBM866 create mode 100644 zlibrary/core/data/encodings/ISO-8859-1 create mode 100644 zlibrary/core/data/encodings/ISO-8859-10 create mode 100644 zlibrary/core/data/encodings/ISO-8859-11 create mode 100644 zlibrary/core/data/encodings/ISO-8859-13 create mode 100644 zlibrary/core/data/encodings/ISO-8859-14 create mode 100644 zlibrary/core/data/encodings/ISO-8859-15 create mode 100644 zlibrary/core/data/encodings/ISO-8859-16 create mode 100644 zlibrary/core/data/encodings/ISO-8859-2 create mode 100644 zlibrary/core/data/encodings/ISO-8859-3 create mode 100644 zlibrary/core/data/encodings/ISO-8859-4 create mode 100644 zlibrary/core/data/encodings/ISO-8859-5 create mode 100644 zlibrary/core/data/encodings/ISO-8859-6 create mode 100644 zlibrary/core/data/encodings/ISO-8859-7 create mode 100644 zlibrary/core/data/encodings/ISO-8859-8 create mode 100644 zlibrary/core/data/encodings/ISO-8859-9 create mode 100644 zlibrary/core/data/encodings/KOI8-R create mode 100644 zlibrary/core/data/encodings/windows-1251 create mode 100644 zlibrary/core/data/encodings/windows-1252 create mode 100644 zlibrary/core/data/languagePatterns.zip create mode 100644 zlibrary/core/data/resources/ar.xml create mode 100644 zlibrary/core/data/resources/bg.xml create mode 100644 zlibrary/core/data/resources/cs.xml create mode 100644 zlibrary/core/data/resources/de.xml create mode 100644 zlibrary/core/data/resources/en.xml create mode 100644 zlibrary/core/data/resources/eo.xml create mode 100644 zlibrary/core/data/resources/es.xml create mode 100644 zlibrary/core/data/resources/fi.xml create mode 100644 zlibrary/core/data/resources/fr.xml create mode 100644 zlibrary/core/data/resources/he.xml create mode 100644 zlibrary/core/data/resources/hu.xml create mode 100644 zlibrary/core/data/resources/id.xml create mode 100644 zlibrary/core/data/resources/it.xml create mode 100644 zlibrary/core/data/resources/lt.xml create mode 100644 zlibrary/core/data/resources/nl.xml create mode 100644 zlibrary/core/data/resources/pl.xml create mode 100644 zlibrary/core/data/resources/ru.xml create mode 100644 zlibrary/core/data/resources/sv.xml create mode 100644 zlibrary/core/data/resources/uk.xml create mode 100644 zlibrary/core/data/resources/vi.xml create mode 100644 zlibrary/core/data/resources/zh.xml create mode 100644 zlibrary/core/data/unicode.xml.gz create mode 120000 zlibrary/core/include/ZLApplication.h create mode 120000 zlibrary/core/include/ZLAsynchronousInputStream.h create mode 120000 zlibrary/core/include/ZLBase64EncodedImage.h create mode 120000 zlibrary/core/include/ZLBase64InputStream.h create mode 120000 zlibrary/core/include/ZLBlockTreeNode.h create mode 120000 zlibrary/core/include/ZLBlockTreeView.h create mode 120000 zlibrary/core/include/ZLBoolean3.h create mode 120000 zlibrary/core/include/ZLColor.h create mode 120000 zlibrary/core/include/ZLDialog.h create mode 120000 zlibrary/core/include/ZLDialogContent.h create mode 120000 zlibrary/core/include/ZLDialogManager.h create mode 120000 zlibrary/core/include/ZLDir.h create mode 120000 zlibrary/core/include/ZLEncodingConverter.h create mode 120000 zlibrary/core/include/ZLExecutionUtil.h create mode 120000 zlibrary/core/include/ZLFile.h create mode 120000 zlibrary/core/include/ZLFileImage.h create mode 120000 zlibrary/core/include/ZLFileInfo.h create mode 120000 zlibrary/core/include/ZLFileUtil.h create mode 120000 zlibrary/core/include/ZLHexInputStream.h create mode 120000 zlibrary/core/include/ZLImage.h create mode 120000 zlibrary/core/include/ZLImageManager.h create mode 120000 zlibrary/core/include/ZLInputStream.h create mode 120000 zlibrary/core/include/ZLKeyBindings.h create mode 120000 zlibrary/core/include/ZLLanguageDetector.h create mode 120000 zlibrary/core/include/ZLLanguageList.h create mode 120000 zlibrary/core/include/ZLLanguageUtil.h create mode 120000 zlibrary/core/include/ZLLogger.h create mode 120000 zlibrary/core/include/ZLMessage.h create mode 120000 zlibrary/core/include/ZLMimeType.h create mode 120000 zlibrary/core/include/ZLMirroredPaintContext.h create mode 120000 zlibrary/core/include/ZLNetworkImage.h create mode 120000 zlibrary/core/include/ZLNetworkManager.h create mode 120000 zlibrary/core/include/ZLNetworkRequest.h create mode 120000 zlibrary/core/include/ZLNetworkUtil.h create mode 120000 zlibrary/core/include/ZLOpenFileDialog.h create mode 120000 zlibrary/core/include/ZLOptionEntry.h create mode 120000 zlibrary/core/include/ZLOptions.h create mode 120000 zlibrary/core/include/ZLOptionsDialog.h create mode 120000 zlibrary/core/include/ZLOutputStream.h create mode 120000 zlibrary/core/include/ZLPaintContext.h create mode 120000 zlibrary/core/include/ZLPlainAsynchronousInputStream.h create mode 120000 zlibrary/core/include/ZLPopupData.h create mode 120000 zlibrary/core/include/ZLProgressDialog.h create mode 120000 zlibrary/core/include/ZLResource.h create mode 120000 zlibrary/core/include/ZLRunnable.h create mode 120000 zlibrary/core/include/ZLSearchUtil.h create mode 120000 zlibrary/core/include/ZLSliceInputStream.h create mode 120000 zlibrary/core/include/ZLStreamImage.h create mode 120000 zlibrary/core/include/ZLStringUtil.h create mode 120000 zlibrary/core/include/ZLTime.h create mode 120000 zlibrary/core/include/ZLTimeManager.h create mode 120000 zlibrary/core/include/ZLTreeActionNode.h create mode 120000 zlibrary/core/include/ZLTreeDialog.h create mode 120000 zlibrary/core/include/ZLTreeListener.h create mode 120000 zlibrary/core/include/ZLTreeNode.h create mode 120000 zlibrary/core/include/ZLTreePageNode.h create mode 120000 zlibrary/core/include/ZLTreeSearcher.h create mode 120000 zlibrary/core/include/ZLTreeTitledNode.h create mode 120000 zlibrary/core/include/ZLTypeId.h create mode 120000 zlibrary/core/include/ZLUnicodeUtil.h create mode 120000 zlibrary/core/include/ZLUserData.h create mode 120000 zlibrary/core/include/ZLView.h create mode 120000 zlibrary/core/include/ZLXMLNamespace.h create mode 120000 zlibrary/core/include/ZLXMLReader.h create mode 120000 zlibrary/core/include/ZLXMLWriter.h create mode 120000 zlibrary/core/include/ZLZDecompressor.h create mode 120000 zlibrary/core/include/ZLibrary.h create mode 120000 zlibrary/core/include/allocator.h create mode 120000 zlibrary/core/include/optionEntries/ZLColorOptionBuilder.h create mode 120000 zlibrary/core/include/optionEntries/ZLFontFamilyOptionEntry.h create mode 120000 zlibrary/core/include/optionEntries/ZLLanguageOptionEntry.h create mode 120000 zlibrary/core/include/optionEntries/ZLSimpleKeyOptionEntry.h create mode 120000 zlibrary/core/include/optionEntries/ZLSimpleOptionEntry.h create mode 120000 zlibrary/core/include/optionEntries/ZLStringEditOptionEntry.h create mode 120000 zlibrary/core/include/optionEntries/ZLStringInfoEntry.h create mode 120000 zlibrary/core/include/optionEntries/ZLToggleBooleanOptionEntry.h create mode 120000 zlibrary/core/include/shared_ptr.h create mode 100644 zlibrary/core/src/application/ZLApplication.cpp create mode 100644 zlibrary/core/src/application/ZLApplication.h create mode 100644 zlibrary/core/src/application/ZLApplicationActions.cpp create mode 100644 zlibrary/core/src/application/ZLApplicationBase.cpp create mode 100644 zlibrary/core/src/application/ZLApplicationWindow.cpp create mode 100644 zlibrary/core/src/application/ZLApplicationWindow.h create mode 100644 zlibrary/core/src/application/ZLKeyBindings.cpp create mode 100644 zlibrary/core/src/application/ZLKeyBindings.h create mode 100644 zlibrary/core/src/application/ZLMenu.cpp create mode 100644 zlibrary/core/src/application/ZLMenu.h create mode 100644 zlibrary/core/src/application/ZLPopupData.h create mode 100644 zlibrary/core/src/application/ZLToolbar.cpp create mode 100644 zlibrary/core/src/application/ZLToolbar.h create mode 100644 zlibrary/core/src/blockTreeView/ZLBlockTreeNode.cpp create mode 100644 zlibrary/core/src/blockTreeView/ZLBlockTreeNode.h create mode 100644 zlibrary/core/src/blockTreeView/ZLBlockTreeView.cpp create mode 100644 zlibrary/core/src/blockTreeView/ZLBlockTreeView.h create mode 100644 zlibrary/core/src/constants/ZLMimeType.cpp create mode 100644 zlibrary/core/src/constants/ZLMimeType.h create mode 100644 zlibrary/core/src/constants/ZLXMLNamespace.cpp create mode 100644 zlibrary/core/src/constants/ZLXMLNamespace.h create mode 100644 zlibrary/core/src/desktop/application/ZLDesktopApplicationWindow.cpp create mode 100644 zlibrary/core/src/desktop/application/ZLDesktopApplicationWindow.h create mode 100644 zlibrary/core/src/desktop/dialogs/ZLDesktopOpenFileDialog.cpp create mode 100644 zlibrary/core/src/desktop/dialogs/ZLDesktopOpenFileDialog.h create mode 100644 zlibrary/core/src/desktop/dialogs/ZLDesktopOptionsDialog.cpp create mode 100644 zlibrary/core/src/desktop/dialogs/ZLDesktopOptionsDialog.h create mode 100644 zlibrary/core/src/dialogs/ZLDialog.cpp create mode 100644 zlibrary/core/src/dialogs/ZLDialog.h create mode 100644 zlibrary/core/src/dialogs/ZLDialogContent.cpp create mode 100644 zlibrary/core/src/dialogs/ZLDialogContent.h create mode 100644 zlibrary/core/src/dialogs/ZLDialogContentBuilder.cpp create mode 100644 zlibrary/core/src/dialogs/ZLDialogContentBuilder.h create mode 100644 zlibrary/core/src/dialogs/ZLDialogManager.cpp create mode 100644 zlibrary/core/src/dialogs/ZLDialogManager.h create mode 100644 zlibrary/core/src/dialogs/ZLOpenFileDialog.cpp create mode 100644 zlibrary/core/src/dialogs/ZLOpenFileDialog.h create mode 100644 zlibrary/core/src/dialogs/ZLOptionEntry.cpp create mode 100644 zlibrary/core/src/dialogs/ZLOptionEntry.h create mode 100644 zlibrary/core/src/dialogs/ZLOptionView.cpp create mode 100644 zlibrary/core/src/dialogs/ZLOptionView.h create mode 100644 zlibrary/core/src/dialogs/ZLOptionsDialog.cpp create mode 100644 zlibrary/core/src/dialogs/ZLOptionsDialog.h create mode 100644 zlibrary/core/src/dialogs/ZLProgressDialog.cpp create mode 100644 zlibrary/core/src/dialogs/ZLProgressDialog.h create mode 100644 zlibrary/core/src/dialogs/ZLTreeDialog.cpp create mode 100644 zlibrary/core/src/dialogs/ZLTreeDialog.h create mode 100644 zlibrary/core/src/encoding/DummyEncodingConverter.cpp create mode 100644 zlibrary/core/src/encoding/DummyEncodingConverter.h create mode 100644 zlibrary/core/src/encoding/EncodingCollectionReader.cpp create mode 100644 zlibrary/core/src/encoding/EncodingCollectionReader.h create mode 100644 zlibrary/core/src/encoding/MyEncodingConverter.cpp create mode 100644 zlibrary/core/src/encoding/MyEncodingConverter.h create mode 100644 zlibrary/core/src/encoding/Utf8EncodingConverter.cpp create mode 100644 zlibrary/core/src/encoding/Utf8EncodingConverter.h create mode 100644 zlibrary/core/src/encoding/ZLEncodingCollection.cpp create mode 100644 zlibrary/core/src/encoding/ZLEncodingConverter.cpp create mode 100644 zlibrary/core/src/encoding/ZLEncodingConverter.h create mode 100644 zlibrary/core/src/encoding/ZLEncodingConverterProvider.h create mode 100644 zlibrary/core/src/encoding/ZLEncodingSet.cpp create mode 100644 zlibrary/core/src/filesystem/ZLDir.cpp create mode 100644 zlibrary/core/src/filesystem/ZLDir.h create mode 100644 zlibrary/core/src/filesystem/ZLFSDir.h create mode 100644 zlibrary/core/src/filesystem/ZLFSManager.cpp create mode 100644 zlibrary/core/src/filesystem/ZLFSManager.h create mode 100644 zlibrary/core/src/filesystem/ZLFSPlugin.h create mode 100644 zlibrary/core/src/filesystem/ZLFSPluginManager.cpp create mode 100644 zlibrary/core/src/filesystem/ZLFSPluginManager.h create mode 100644 zlibrary/core/src/filesystem/ZLFile.cpp create mode 100644 zlibrary/core/src/filesystem/ZLFile.h create mode 100644 zlibrary/core/src/filesystem/ZLFileInfo.h create mode 100644 zlibrary/core/src/filesystem/ZLInputStream.h create mode 100644 zlibrary/core/src/filesystem/ZLInputStreamDecorator.cpp create mode 100644 zlibrary/core/src/filesystem/ZLOutputStream.h create mode 100644 zlibrary/core/src/filesystem/bzip2/ZLBzip2InputStream.cpp create mode 100644 zlibrary/core/src/filesystem/bzip2/ZLBzip2InputStream.h create mode 100644 zlibrary/core/src/filesystem/bzip2/ZLFSCompressorBzip2.cpp create mode 100644 zlibrary/core/src/filesystem/bzip2/ZLFSCompressorBzip2.h create mode 100644 zlibrary/core/src/filesystem/tar/ZLFSArchiverTar.cpp create mode 100644 zlibrary/core/src/filesystem/tar/ZLFSArchiverTar.h create mode 100644 zlibrary/core/src/filesystem/tar/ZLTar.cpp create mode 100644 zlibrary/core/src/filesystem/tar/ZLTar.h create mode 100644 zlibrary/core/src/filesystem/zip/ZLFSArchiverZip.cpp create mode 100644 zlibrary/core/src/filesystem/zip/ZLFSArchiverZip.h create mode 100644 zlibrary/core/src/filesystem/zip/ZLFSCompressorGzip.cpp create mode 100644 zlibrary/core/src/filesystem/zip/ZLFSCompressorGzip.h create mode 100644 zlibrary/core/src/filesystem/zip/ZLGzipInputStream.cpp create mode 100644 zlibrary/core/src/filesystem/zip/ZLZDecompressor.cpp create mode 100644 zlibrary/core/src/filesystem/zip/ZLZDecompressor.h create mode 100644 zlibrary/core/src/filesystem/zip/ZLZip.h create mode 100644 zlibrary/core/src/filesystem/zip/ZLZipDir.cpp create mode 100644 zlibrary/core/src/filesystem/zip/ZLZipEntryCache.cpp create mode 100644 zlibrary/core/src/filesystem/zip/ZLZipHeader.cpp create mode 100644 zlibrary/core/src/filesystem/zip/ZLZipHeader.h create mode 100644 zlibrary/core/src/filesystem/zip/ZLZipInputStream.cpp create mode 100644 zlibrary/core/src/image/ZLBase64EncodedImage.cpp create mode 100644 zlibrary/core/src/image/ZLBase64EncodedImage.h create mode 100644 zlibrary/core/src/image/ZLFileImage.cpp create mode 100644 zlibrary/core/src/image/ZLFileImage.h create mode 100644 zlibrary/core/src/image/ZLHexEncodedImage.cpp create mode 100644 zlibrary/core/src/image/ZLHexEncodedImage.h create mode 100644 zlibrary/core/src/image/ZLImage.cpp create mode 100644 zlibrary/core/src/image/ZLImage.h create mode 100644 zlibrary/core/src/image/ZLImageManager.cpp create mode 100644 zlibrary/core/src/image/ZLImageManager.h create mode 100644 zlibrary/core/src/image/ZLNetworkImage.cpp create mode 100644 zlibrary/core/src/image/ZLNetworkImage.h create mode 100644 zlibrary/core/src/image/ZLStreamImage.cpp create mode 100644 zlibrary/core/src/image/ZLStreamImage.h create mode 100644 zlibrary/core/src/language/ZLCharSequence.cpp create mode 100644 zlibrary/core/src/language/ZLCharSequence.h create mode 100644 zlibrary/core/src/language/ZLLanguageDetector.cpp create mode 100644 zlibrary/core/src/language/ZLLanguageDetector.h create mode 100644 zlibrary/core/src/language/ZLLanguageList.cpp create mode 100644 zlibrary/core/src/language/ZLLanguageList.h create mode 100644 zlibrary/core/src/language/ZLLanguageMatcher.cpp create mode 100644 zlibrary/core/src/language/ZLLanguageMatcher.h create mode 100644 zlibrary/core/src/language/ZLStatistics.cpp create mode 100644 zlibrary/core/src/language/ZLStatistics.h create mode 100644 zlibrary/core/src/language/ZLStatisticsGenerator.cpp create mode 100644 zlibrary/core/src/language/ZLStatisticsGenerator.h create mode 100644 zlibrary/core/src/language/ZLStatisticsItem.cpp create mode 100644 zlibrary/core/src/language/ZLStatisticsItem.h create mode 100644 zlibrary/core/src/language/ZLStatisticsXMLReader.cpp create mode 100644 zlibrary/core/src/language/ZLStatisticsXMLReader.h create mode 100644 zlibrary/core/src/language/ZLStatisticsXMLWriter.cpp create mode 100644 zlibrary/core/src/language/ZLStatisticsXMLWriter.h create mode 100644 zlibrary/core/src/library/ZLibrary.cpp create mode 100644 zlibrary/core/src/library/ZLibrary.h create mode 100644 zlibrary/core/src/logger/ZLLogger.cpp create mode 100644 zlibrary/core/src/logger/ZLLogger.h create mode 100644 zlibrary/core/src/message/ZLMessage.cpp create mode 100644 zlibrary/core/src/message/ZLMessage.h create mode 100644 zlibrary/core/src/network/ZLAsynchronousInputStream.cpp create mode 100644 zlibrary/core/src/network/ZLAsynchronousInputStream.h create mode 100644 zlibrary/core/src/network/ZLGzipAsynchronousInputStream.cpp create mode 100644 zlibrary/core/src/network/ZLGzipAsynchronousInputStream.h create mode 100644 zlibrary/core/src/network/ZLNetworkManager.cpp create mode 100644 zlibrary/core/src/network/ZLNetworkManager.h create mode 100644 zlibrary/core/src/network/ZLNetworkRequest.cpp create mode 100644 zlibrary/core/src/network/ZLNetworkRequest.h create mode 100644 zlibrary/core/src/network/ZLNetworkUtil.cpp create mode 100644 zlibrary/core/src/network/ZLNetworkUtil.h create mode 100644 zlibrary/core/src/network/ZLPlainAsynchronousInputStream.cpp create mode 100644 zlibrary/core/src/network/ZLPlainAsynchronousInputStream.h create mode 100644 zlibrary/core/src/network/requests/ZLNetworkDownloadRequest.cpp create mode 100644 zlibrary/core/src/network/requests/ZLNetworkDownloadRequest.h create mode 100644 zlibrary/core/src/network/requests/ZLNetworkNoActionRequest.cpp create mode 100644 zlibrary/core/src/network/requests/ZLNetworkNoActionRequest.h create mode 100644 zlibrary/core/src/network/requests/ZLNetworkReadToStringRequest.cpp create mode 100644 zlibrary/core/src/network/requests/ZLNetworkReadToStringRequest.h create mode 100644 zlibrary/core/src/network/requests/ZLNetworkXMLParserRequest.cpp create mode 100644 zlibrary/core/src/network/requests/ZLNetworkXMLParserRequest.h create mode 100644 zlibrary/core/src/optionEntries/ZLColorOptionBuilder.cpp create mode 100644 zlibrary/core/src/optionEntries/ZLColorOptionBuilder.h create mode 100644 zlibrary/core/src/optionEntries/ZLFontFamilyOptionEntry.cpp create mode 100644 zlibrary/core/src/optionEntries/ZLFontFamilyOptionEntry.h create mode 100644 zlibrary/core/src/optionEntries/ZLLanguageOptionEntry.cpp create mode 100644 zlibrary/core/src/optionEntries/ZLLanguageOptionEntry.h create mode 100644 zlibrary/core/src/optionEntries/ZLSimpleKeyOptionEntry.cpp create mode 100644 zlibrary/core/src/optionEntries/ZLSimpleKeyOptionEntry.h create mode 100644 zlibrary/core/src/optionEntries/ZLSimpleOptionEntry.cpp create mode 100644 zlibrary/core/src/optionEntries/ZLSimpleOptionEntry.h create mode 100644 zlibrary/core/src/optionEntries/ZLStringEditOptionEntry.cpp create mode 100644 zlibrary/core/src/optionEntries/ZLStringEditOptionEntry.h create mode 100644 zlibrary/core/src/optionEntries/ZLStringInfoEntry.cpp create mode 100644 zlibrary/core/src/optionEntries/ZLStringInfoEntry.h create mode 100644 zlibrary/core/src/optionEntries/ZLToggleBooleanOptionEntry.cpp create mode 100644 zlibrary/core/src/optionEntries/ZLToggleBooleanOptionEntry.h create mode 100644 zlibrary/core/src/options/ZLCategoryKey.cpp create mode 100644 zlibrary/core/src/options/ZLConfig.cpp create mode 100644 zlibrary/core/src/options/ZLConfig.h create mode 100644 zlibrary/core/src/options/ZLOptions.cpp create mode 100644 zlibrary/core/src/options/ZLOptions.h create mode 100644 zlibrary/core/src/resources/ZLResource.cpp create mode 100644 zlibrary/core/src/resources/ZLResource.h create mode 100644 zlibrary/core/src/runnable/ZLExecutionUtil.cpp create mode 100644 zlibrary/core/src/runnable/ZLExecutionUtil.h create mode 100644 zlibrary/core/src/runnable/ZLRunnable.cpp create mode 100644 zlibrary/core/src/runnable/ZLRunnable.h create mode 100644 zlibrary/core/src/time/ZLTime.cpp create mode 100644 zlibrary/core/src/time/ZLTime.h create mode 100644 zlibrary/core/src/time/ZLTimeManager.cpp create mode 100644 zlibrary/core/src/time/ZLTimeManager.h create mode 100644 zlibrary/core/src/tree/ZLTreeActionNode.cpp create mode 100644 zlibrary/core/src/tree/ZLTreeActionNode.h create mode 100644 zlibrary/core/src/tree/ZLTreeListener.h create mode 100644 zlibrary/core/src/tree/ZLTreeNode.cpp create mode 100644 zlibrary/core/src/tree/ZLTreeNode.h create mode 100644 zlibrary/core/src/tree/ZLTreePageNode.cpp create mode 100644 zlibrary/core/src/tree/ZLTreePageNode.h create mode 100644 zlibrary/core/src/tree/ZLTreeSearcher.h create mode 100644 zlibrary/core/src/tree/ZLTreeTitledNode.cpp create mode 100644 zlibrary/core/src/tree/ZLTreeTitledNode.h create mode 100644 zlibrary/core/src/typeId/ZLTypeId.cpp create mode 100644 zlibrary/core/src/typeId/ZLTypeId.h create mode 100644 zlibrary/core/src/unix/curl/ZLCurlNetworkManager.cpp create mode 100644 zlibrary/core/src/unix/curl/ZLCurlNetworkManager.h create mode 100644 zlibrary/core/src/unix/filesystem/ZLUnixFSDir.cpp create mode 100644 zlibrary/core/src/unix/filesystem/ZLUnixFSDir.h create mode 100644 zlibrary/core/src/unix/filesystem/ZLUnixFSManager.cpp create mode 100644 zlibrary/core/src/unix/filesystem/ZLUnixFSManager.h create mode 100644 zlibrary/core/src/unix/filesystem/ZLUnixFileInputStream.cpp create mode 100644 zlibrary/core/src/unix/filesystem/ZLUnixFileInputStream.h create mode 100644 zlibrary/core/src/unix/filesystem/ZLUnixFileOutputStream.cpp create mode 100644 zlibrary/core/src/unix/filesystem/ZLUnixFileOutputStream.h create mode 100644 zlibrary/core/src/unix/iconv/IConvEncodingConverter.cpp create mode 100644 zlibrary/core/src/unix/iconv/IConvEncodingConverter.h create mode 100644 zlibrary/core/src/unix/library/ZLibrary.cpp create mode 100644 zlibrary/core/src/unix/library/ZLibraryImplementation.h create mode 100644 zlibrary/core/src/unix/time/ZLUnixTime.cpp create mode 100644 zlibrary/core/src/unix/time/ZLUnixTime.h create mode 100644 zlibrary/core/src/unix/xmlconfig/AsciiEncoder.cpp create mode 100644 zlibrary/core/src/unix/xmlconfig/AsciiEncoder.h create mode 100644 zlibrary/core/src/unix/xmlconfig/XMLConfig.cpp create mode 100644 zlibrary/core/src/unix/xmlconfig/XMLConfig.h create mode 100644 zlibrary/core/src/unix/xmlconfig/XMLConfigDelta.cpp create mode 100644 zlibrary/core/src/unix/xmlconfig/XMLConfigDelta.h create mode 100644 zlibrary/core/src/unix/xmlconfig/XMLConfigDeltaWriter.cpp create mode 100644 zlibrary/core/src/unix/xmlconfig/XMLConfigDeltaWriter.h create mode 100644 zlibrary/core/src/unix/xmlconfig/XMLConfigIO.cpp create mode 100644 zlibrary/core/src/unix/xmlconfig/XMLConfigReader.cpp create mode 100644 zlibrary/core/src/unix/xmlconfig/XMLConfigReader.h create mode 100644 zlibrary/core/src/unix/xmlconfig/XMLConfigValue.h create mode 100644 zlibrary/core/src/unix/xmlconfig/XMLConfigWriter.cpp create mode 100644 zlibrary/core/src/unix/xmlconfig/XMLConfigWriter.h create mode 100644 zlibrary/core/src/util/ZLBase64InputStream.cpp create mode 100644 zlibrary/core/src/util/ZLBase64InputStream.h create mode 100644 zlibrary/core/src/util/ZLBoolean3.h create mode 100644 zlibrary/core/src/util/ZLColor.h create mode 100644 zlibrary/core/src/util/ZLFileUtil.cpp create mode 100644 zlibrary/core/src/util/ZLFileUtil.h create mode 100644 zlibrary/core/src/util/ZLHexInputStream.cpp create mode 100644 zlibrary/core/src/util/ZLHexInputStream.h create mode 100644 zlibrary/core/src/util/ZLKeyUtil.cpp create mode 100644 zlibrary/core/src/util/ZLKeyUtil.h create mode 100644 zlibrary/core/src/util/ZLLanguageUtil.cpp create mode 100644 zlibrary/core/src/util/ZLLanguageUtil.h create mode 100644 zlibrary/core/src/util/ZLSearchUtil.cpp create mode 100644 zlibrary/core/src/util/ZLSearchUtil.h create mode 100644 zlibrary/core/src/util/ZLSliceInputStream.cpp create mode 100644 zlibrary/core/src/util/ZLSliceInputStream.h create mode 100644 zlibrary/core/src/util/ZLStringUtil.cpp create mode 100644 zlibrary/core/src/util/ZLStringUtil.h create mode 100644 zlibrary/core/src/util/ZLUnicodeUtil.cpp create mode 100644 zlibrary/core/src/util/ZLUnicodeUtil.h create mode 100644 zlibrary/core/src/util/ZLUserData.cpp create mode 100644 zlibrary/core/src/util/ZLUserData.h create mode 100644 zlibrary/core/src/util/allocator.h create mode 100644 zlibrary/core/src/util/shared_ptr.h create mode 100644 zlibrary/core/src/view/ZLMirroredPaintContext.cpp create mode 100644 zlibrary/core/src/view/ZLMirroredPaintContext.h create mode 100644 zlibrary/core/src/view/ZLPaintContext.cpp create mode 100644 zlibrary/core/src/view/ZLPaintContext.h create mode 100644 zlibrary/core/src/view/ZLView.cpp create mode 100644 zlibrary/core/src/view/ZLView.h create mode 100644 zlibrary/core/src/view/ZLViewWidget.h create mode 100644 zlibrary/core/src/win32/config/RegistryUtil.cpp create mode 100644 zlibrary/core/src/win32/config/StringEncoder.cpp create mode 100644 zlibrary/core/src/win32/config/StringEncoder.h create mode 100644 zlibrary/core/src/win32/config/ZLWin32Config.cpp create mode 100644 zlibrary/core/src/win32/config/ZLWin32Config.h create mode 100644 zlibrary/core/src/win32/config/ZLWin32ConfigIO.cpp create mode 100644 zlibrary/core/src/win32/config/ZLWin32ConfigValue.h create mode 100644 zlibrary/core/src/win32/encoding/ZLWin32EncodingConverter.cpp create mode 100644 zlibrary/core/src/win32/encoding/ZLWin32EncodingConverter.h create mode 100644 zlibrary/core/src/win32/filesystem/ZLWin32FSDir.cpp create mode 100644 zlibrary/core/src/win32/filesystem/ZLWin32FSDir.h create mode 100644 zlibrary/core/src/win32/filesystem/ZLWin32FSManager.cpp create mode 100644 zlibrary/core/src/win32/filesystem/ZLWin32FSManager.h create mode 100644 zlibrary/core/src/win32/filesystem/ZLWin32FileInputStream.cpp create mode 100644 zlibrary/core/src/win32/filesystem/ZLWin32FileInputStream.h create mode 100644 zlibrary/core/src/win32/filesystem/ZLWin32FileOutputStream.cpp create mode 100644 zlibrary/core/src/win32/filesystem/ZLWin32FileOutputStream.h create mode 100644 zlibrary/core/src/win32/filesystem/ZLWin32RootDir.cpp create mode 100644 zlibrary/core/src/win32/filesystem/ZLWin32RootDir.h create mode 100644 zlibrary/core/src/win32/util/W32WCHARUtil.h create mode 100644 zlibrary/core/src/xml/ZLXMLReader.cpp create mode 100644 zlibrary/core/src/xml/ZLXMLReader.h create mode 100644 zlibrary/core/src/xml/ZLXMLWriter.cpp create mode 100644 zlibrary/core/src/xml/ZLXMLWriter.h create mode 100644 zlibrary/core/src/xml/expat/ZLXMLReaderInternal.cpp create mode 100644 zlibrary/core/src/xml/expat/ZLXMLReaderInternal.h create mode 100644 zlibrary/text/Makefile create mode 100644 zlibrary/text/SOVERSION create mode 100644 zlibrary/text/data/hyphenationPatterns.zip create mode 120000 zlibrary/text/include/ZLHyperlinkType.h create mode 120000 zlibrary/text/include/ZLTextAlignmentType.h create mode 120000 zlibrary/text/include/ZLTextArea.h create mode 120000 zlibrary/text/include/ZLTextAreaController.h create mode 120000 zlibrary/text/include/ZLTextElement.h create mode 120000 zlibrary/text/include/ZLTextHyphenator.h create mode 120000 zlibrary/text/include/ZLTextKind.h create mode 120000 zlibrary/text/include/ZLTextMark.h create mode 120000 zlibrary/text/include/ZLTextModel.h create mode 120000 zlibrary/text/include/ZLTextParagraph.h create mode 120000 zlibrary/text/include/ZLTextParagraphCursor.h create mode 120000 zlibrary/text/include/ZLTextPositionIndicator.h create mode 120000 zlibrary/text/include/ZLTextPositionIndicatorInfo.h create mode 120000 zlibrary/text/include/ZLTextRectangle.h create mode 120000 zlibrary/text/include/ZLTextRowMemoryAllocator.h create mode 120000 zlibrary/text/include/ZLTextSelectionModel.h create mode 120000 zlibrary/text/include/ZLTextStyle.h create mode 120000 zlibrary/text/include/ZLTextStyleCollection.h create mode 120000 zlibrary/text/include/ZLTextStyleEntry.h create mode 120000 zlibrary/text/include/ZLTextStyleOptions.h create mode 120000 zlibrary/text/include/ZLTextTeXHyphenator.h create mode 120000 zlibrary/text/include/ZLTextView.h create mode 120000 zlibrary/text/include/ZLTextWord.h create mode 100644 zlibrary/text/src/area/ZLTextArea.cpp create mode 100644 zlibrary/text/src/area/ZLTextArea.h create mode 100644 zlibrary/text/src/area/ZLTextAreaController.cpp create mode 100644 zlibrary/text/src/area/ZLTextAreaController.h create mode 100644 zlibrary/text/src/area/ZLTextAreaStyle.cpp create mode 100644 zlibrary/text/src/area/ZLTextAreaStyle.h create mode 100644 zlibrary/text/src/area/ZLTextArea_drawTextLine.cpp create mode 100644 zlibrary/text/src/area/ZLTextArea_drawTreeLines.cpp create mode 100644 zlibrary/text/src/area/ZLTextArea_drawWord.cpp create mode 100644 zlibrary/text/src/area/ZLTextArea_prepareTextLine.cpp create mode 100644 zlibrary/text/src/area/ZLTextArea_processTextLine.cpp create mode 100644 zlibrary/text/src/area/ZLTextElement.cpp create mode 100644 zlibrary/text/src/area/ZLTextElement.h create mode 100644 zlibrary/text/src/area/ZLTextLineInfo.h create mode 100644 zlibrary/text/src/area/ZLTextParagraphBuilder.cpp create mode 100644 zlibrary/text/src/area/ZLTextParagraphBuilder.h create mode 100644 zlibrary/text/src/area/ZLTextParagraphCursor.cpp create mode 100644 zlibrary/text/src/area/ZLTextParagraphCursor.h create mode 100644 zlibrary/text/src/area/ZLTextRectangle.h create mode 100644 zlibrary/text/src/area/ZLTextSelectionModel.cpp create mode 100644 zlibrary/text/src/area/ZLTextSelectionModel.h create mode 100644 zlibrary/text/src/area/ZLTextWord.cpp create mode 100644 zlibrary/text/src/area/ZLTextWord.h create mode 100644 zlibrary/text/src/hyphenation/ZLTextHyphenationReader.cpp create mode 100644 zlibrary/text/src/hyphenation/ZLTextHyphenationReader.h create mode 100644 zlibrary/text/src/hyphenation/ZLTextHyphenator.cpp create mode 100644 zlibrary/text/src/hyphenation/ZLTextHyphenator.h create mode 100644 zlibrary/text/src/hyphenation/ZLTextTeXHyphenator.cpp create mode 100644 zlibrary/text/src/hyphenation/ZLTextTeXHyphenator.h create mode 100644 zlibrary/text/src/model/ZLHyperlinkType.h create mode 100644 zlibrary/text/src/model/ZLTextAlignmentType.h create mode 100644 zlibrary/text/src/model/ZLTextKind.h create mode 100644 zlibrary/text/src/model/ZLTextMark.h create mode 100644 zlibrary/text/src/model/ZLTextModel.cpp create mode 100644 zlibrary/text/src/model/ZLTextModel.h create mode 100644 zlibrary/text/src/model/ZLTextParagraph.cpp create mode 100644 zlibrary/text/src/model/ZLTextParagraph.h create mode 100644 zlibrary/text/src/model/ZLTextRowMemoryAllocator.cpp create mode 100644 zlibrary/text/src/model/ZLTextRowMemoryAllocator.h create mode 100644 zlibrary/text/src/model/ZLTextStyleEntry.h create mode 100644 zlibrary/text/src/style/ZLTextDecoratedStyle.cpp create mode 100644 zlibrary/text/src/style/ZLTextDecoratedStyle.h create mode 100644 zlibrary/text/src/style/ZLTextStyle.cpp create mode 100644 zlibrary/text/src/style/ZLTextStyle.h create mode 100644 zlibrary/text/src/style/ZLTextStyleCollection.cpp create mode 100644 zlibrary/text/src/style/ZLTextStyleCollection.h create mode 100644 zlibrary/text/src/styleOptions/ZLTextStyleOptions.cpp create mode 100644 zlibrary/text/src/styleOptions/ZLTextStyleOptions.h create mode 100644 zlibrary/text/src/view/ZLTextPositionIndicator.cpp create mode 100644 zlibrary/text/src/view/ZLTextPositionIndicator.h create mode 100644 zlibrary/text/src/view/ZLTextPositionIndicatorInfo.h create mode 100644 zlibrary/text/src/view/ZLTextSelectionScroller.cpp create mode 100644 zlibrary/text/src/view/ZLTextSelectionScroller.h create mode 100644 zlibrary/text/src/view/ZLTextView.cpp create mode 100644 zlibrary/text/src/view/ZLTextView.h create mode 100644 zlibrary/text/src/view/ZLTextView_paint.cpp create mode 100644 zlibrary/text/text.pro create mode 100644 zlibrary/ui/Makefile create mode 100644 zlibrary/ui/SOVERSION create mode 100644 zlibrary/ui/data/keynames.desktop-gtk.xml create mode 100644 zlibrary/ui/data/keynames.desktop-qt.xml create mode 100644 zlibrary/ui/data/keynames.desktop-qt4.xml create mode 100644 zlibrary/ui/data/keynames.macosx-cocoa.xml create mode 100644 zlibrary/ui/data/keynames.macosx-qt4.xml create mode 100644 zlibrary/ui/data/keynames.maemo-maemo.xml create mode 120000 zlibrary/ui/data/keynames.maemo-maemo2.xml create mode 120000 zlibrary/ui/data/keynames.maemo-maemo3.xml create mode 120000 zlibrary/ui/data/keynames.maemo-maemo4.xml create mode 120000 zlibrary/ui/data/keynames.maemo-maemo5.xml create mode 100644 zlibrary/ui/data/keynames.moto-ezx.xml create mode 120000 zlibrary/ui/data/keynames.opensimpad-0.9.0-opie.xml create mode 100644 zlibrary/ui/data/keynames.opensimpad-opie.xml create mode 100644 zlibrary/ui/data/keynames.openzaurus-gpe.xml create mode 100644 zlibrary/ui/data/keynames.openzaurus-opie.xml create mode 100644 zlibrary/ui/data/keynames.pdaxrom-gtk.xml create mode 100644 zlibrary/ui/data/keynames.pdaxrom-qt.xml create mode 100644 zlibrary/ui/data/keynames.pepperpad3-gtk.xml create mode 100644 zlibrary/ui/data/keynames.pma400-qtopia.xml create mode 120000 zlibrary/ui/data/keynames.qvfb-opie.xml create mode 100644 zlibrary/ui/data/keynames.win32-win32.xml create mode 120000 zlibrary/ui/data/keynames.zaurus-qtopia-240x320.xml create mode 120000 zlibrary/ui/data/keynames.zaurus-qtopia-640x480.xml create mode 100644 zlibrary/ui/data/keynames.zaurus-qtopia.xml create mode 100644 zlibrary/ui/data/messages.maemo.xml create mode 100644 zlibrary/ui/data/style.desktop.qss create mode 120000 zlibrary/ui/data/style.macosx.qss create mode 100644 zlibrary/ui/src/cocoa/application/CocoaWindow.M create mode 100644 zlibrary/ui/src/cocoa/application/CocoaWindow.h create mode 100644 zlibrary/ui/src/cocoa/application/ZLCocoaApplicationWindow.M create mode 100644 zlibrary/ui/src/cocoa/application/ZLCocoaApplicationWindow.h create mode 100644 zlibrary/ui/src/cocoa/application/ZLCocoaToolbarDelegate.M create mode 100644 zlibrary/ui/src/cocoa/application/ZLCocoaToolbarDelegate.h create mode 100644 zlibrary/ui/src/cocoa/dialogs/ZLCocoaDialogManager.M create mode 100644 zlibrary/ui/src/cocoa/dialogs/ZLCocoaDialogManager.h create mode 100644 zlibrary/ui/src/cocoa/dialogs/ZLCocoaOpenFileDialog.M create mode 100644 zlibrary/ui/src/cocoa/dialogs/ZLCocoaOpenFileDialog.h create mode 100644 zlibrary/ui/src/cocoa/dialogs/ZLCocoaProgressDialog.M create mode 100644 zlibrary/ui/src/cocoa/dialogs/ZLCocoaProgressDialog.h create mode 100644 zlibrary/ui/src/cocoa/filesystem/ZLCocoaFSManager.M create mode 100644 zlibrary/ui/src/cocoa/filesystem/ZLCocoaFSManager.h create mode 100644 zlibrary/ui/src/cocoa/image/ZLCocoaImageManager.M create mode 100644 zlibrary/ui/src/cocoa/image/ZLCocoaImageManager.h create mode 100644 zlibrary/ui/src/cocoa/library/ZLCocoaAppDelegate.M create mode 100644 zlibrary/ui/src/cocoa/library/ZLCocoaAppDelegate.h create mode 100644 zlibrary/ui/src/cocoa/library/ZLibrary.M create mode 100644 zlibrary/ui/src/cocoa/message/ZLCocoaMessage.M create mode 100644 zlibrary/ui/src/cocoa/message/ZLCocoaMessage.h create mode 100644 zlibrary/ui/src/cocoa/time/ZLCocoaTimeManager.M create mode 100644 zlibrary/ui/src/cocoa/time/ZLCocoaTimeManager.h create mode 100644 zlibrary/ui/src/cocoa/util/ZLCocoaKeyUtil.M create mode 100644 zlibrary/ui/src/cocoa/util/ZLCocoaKeyUtil.h create mode 100644 zlibrary/ui/src/cocoa/view/CocoaView.M create mode 100644 zlibrary/ui/src/cocoa/view/CocoaView.h create mode 100644 zlibrary/ui/src/cocoa/view/ZLCocoaPaintContext.M create mode 100644 zlibrary/ui/src/cocoa/view/ZLCocoaPaintContext.h create mode 100644 zlibrary/ui/src/cocoa/view/ZLCocoaViewWidget.M create mode 100644 zlibrary/ui/src/cocoa/view/ZLCocoaViewWidget.h create mode 100644 zlibrary/ui/src/ezx/application/ZLQtApplicationWindow.cpp create mode 100644 zlibrary/ui/src/ezx/application/ZLQtApplicationWindow.h create mode 100644 zlibrary/ui/src/ezx/application/ZLQtMenuAction.h create mode 100644 zlibrary/ui/src/ezx/application/moc.mk create mode 100644 zlibrary/ui/src/ezx/dialogs/ZLFullScreenDialog.cpp create mode 100644 zlibrary/ui/src/ezx/dialogs/ZLFullScreenDialog.h create mode 100644 zlibrary/ui/src/ezx/dialogs/ZLQtDialog.cpp create mode 100644 zlibrary/ui/src/ezx/dialogs/ZLQtDialog.h create mode 100644 zlibrary/ui/src/ezx/dialogs/ZLQtDialogContent.cpp create mode 100644 zlibrary/ui/src/ezx/dialogs/ZLQtDialogContent.h create mode 100644 zlibrary/ui/src/ezx/dialogs/ZLQtDialogManager.cpp create mode 100644 zlibrary/ui/src/ezx/dialogs/ZLQtDialogManager.h create mode 100644 zlibrary/ui/src/ezx/dialogs/ZLQtOptionsDialog.cpp create mode 100644 zlibrary/ui/src/ezx/dialogs/ZLQtOptionsDialog.h create mode 100644 zlibrary/ui/src/ezx/dialogs/ZLQtSelectionDialog.cpp create mode 100644 zlibrary/ui/src/ezx/dialogs/ZLQtSelectionDialog.h create mode 100644 zlibrary/ui/src/ezx/dialogs/ZLQtUtil.cpp create mode 100644 zlibrary/ui/src/ezx/dialogs/ZLQtUtil.h create mode 100644 zlibrary/ui/src/ezx/dialogs/moc.mk create mode 100644 zlibrary/ui/src/ezx/library/ZLibrary.cpp create mode 100644 zlibrary/ui/src/ezx/optionView/ZLQtOptionView.cpp create mode 100644 zlibrary/ui/src/ezx/optionView/ZLQtOptionView.h create mode 100644 zlibrary/ui/src/ezx/optionView/ZLQtOptionViewHolder.cpp create mode 100644 zlibrary/ui/src/ezx/optionView/ZLQtOptionViewHolder.h create mode 100644 zlibrary/ui/src/ezx/optionView/moc.mk create mode 100644 zlibrary/ui/src/ezx/view/ZLQtPaintContext.cpp create mode 100644 zlibrary/ui/src/ezx/view/ZLQtPaintContext.h create mode 100644 zlibrary/ui/src/ezx/view/ZLQtViewWidget.cpp create mode 100644 zlibrary/ui/src/ezx/view/ZLQtViewWidget.h create mode 100644 zlibrary/ui/src/gpe/application/ZLGtkApplicationWindow.cpp create mode 100644 zlibrary/ui/src/gpe/application/ZLGtkApplicationWindow.h create mode 100644 zlibrary/ui/src/gpe/dialogs/ZLGtkDialog.cpp create mode 100644 zlibrary/ui/src/gpe/dialogs/ZLGtkDialog.h create mode 100644 zlibrary/ui/src/gpe/dialogs/ZLGtkDialogContent.cpp create mode 100644 zlibrary/ui/src/gpe/dialogs/ZLGtkDialogContent.h create mode 100644 zlibrary/ui/src/gpe/dialogs/ZLGtkDialogManager.cpp create mode 100644 zlibrary/ui/src/gpe/dialogs/ZLGtkDialogManager.h create mode 100644 zlibrary/ui/src/gpe/dialogs/ZLGtkOptionView.cpp create mode 100644 zlibrary/ui/src/gpe/dialogs/ZLGtkOptionView.h create mode 100644 zlibrary/ui/src/gpe/dialogs/ZLGtkOptionsDialog.cpp create mode 100644 zlibrary/ui/src/gpe/dialogs/ZLGtkOptionsDialog.h create mode 100644 zlibrary/ui/src/gpe/dialogs/ZLGtkSelectionDialog.cpp create mode 100644 zlibrary/ui/src/gpe/dialogs/ZLGtkSelectionDialog.h create mode 100644 zlibrary/ui/src/gpe/dialogs/ZLGtkUtil.cpp create mode 100644 zlibrary/ui/src/gpe/dialogs/ZLGtkUtil.h create mode 100644 zlibrary/ui/src/gpe/dialogs/ZLGtkWaitMessage.cpp create mode 100644 zlibrary/ui/src/gpe/dialogs/ZLGtkWaitMessage.h create mode 100644 zlibrary/ui/src/gpe/library/ZLibrary.cpp create mode 100644 zlibrary/ui/src/gpe/view/ZLGtkPaintContext.cpp create mode 100644 zlibrary/ui/src/gpe/view/ZLGtkPaintContext.h create mode 100644 zlibrary/ui/src/gpe/view/ZLGtkViewWidget.cpp create mode 100644 zlibrary/ui/src/gpe/view/ZLGtkViewWidget.h create mode 100644 zlibrary/ui/src/gtk/application-desktop/GtkEntryParameter.cpp create mode 100644 zlibrary/ui/src/gtk/application-desktop/Toolbar.cpp create mode 100644 zlibrary/ui/src/gtk/application-desktop/ZLGtkApplicationWindow.cpp create mode 100644 zlibrary/ui/src/gtk/application-desktop/ZLGtkApplicationWindow.h create mode 100644 zlibrary/ui/src/gtk/application-pdaxrom/ZLGtkApplicationWindow.cpp create mode 100644 zlibrary/ui/src/gtk/application-pdaxrom/ZLGtkApplicationWindow.h create mode 120000 zlibrary/ui/src/gtk/application-pepperpad3 create mode 100644 zlibrary/ui/src/gtk/dialogs/ZLGtkDialog.cpp create mode 100644 zlibrary/ui/src/gtk/dialogs/ZLGtkDialog.h create mode 100644 zlibrary/ui/src/gtk/dialogs/ZLGtkDialogContent.cpp create mode 100644 zlibrary/ui/src/gtk/dialogs/ZLGtkDialogContent.h create mode 100644 zlibrary/ui/src/gtk/dialogs/ZLGtkDialogManager.cpp create mode 100644 zlibrary/ui/src/gtk/dialogs/ZLGtkDialogManager.h create mode 100644 zlibrary/ui/src/gtk/dialogs/ZLGtkOpenFileDialog.cpp create mode 100644 zlibrary/ui/src/gtk/dialogs/ZLGtkOpenFileDialog.h create mode 100644 zlibrary/ui/src/gtk/dialogs/ZLGtkOptionsDialog.cpp create mode 100644 zlibrary/ui/src/gtk/dialogs/ZLGtkOptionsDialog.h create mode 100644 zlibrary/ui/src/gtk/dialogs/ZLGtkProgressDialog.cpp create mode 100644 zlibrary/ui/src/gtk/dialogs/ZLGtkProgressDialog.h create mode 100644 zlibrary/ui/src/gtk/dialogs/ZLGtkUtil.cpp create mode 100644 zlibrary/ui/src/gtk/dialogs/ZLGtkUtil.h create mode 100644 zlibrary/ui/src/gtk/filesystem/ZLGtkFSManager.cpp create mode 100644 zlibrary/ui/src/gtk/filesystem/ZLGtkFSManager.h create mode 100644 zlibrary/ui/src/gtk/image/ZLGtkImageManager.cpp create mode 100644 zlibrary/ui/src/gtk/image/ZLGtkImageManager.h create mode 100644 zlibrary/ui/src/gtk/library/ZLibrary.cpp create mode 100644 zlibrary/ui/src/gtk/optionView/ZLGtkOptionView.cpp create mode 100644 zlibrary/ui/src/gtk/optionView/ZLGtkOptionView.h create mode 100644 zlibrary/ui/src/gtk/optionView/ZLGtkOptionViewHolder.cpp create mode 100644 zlibrary/ui/src/gtk/optionView/ZLGtkOptionViewHolder.h create mode 100644 zlibrary/ui/src/gtk/pixbuf/ZLGtkPixbufHack.cpp create mode 100644 zlibrary/ui/src/gtk/pixbuf/ZLGtkPixbufHack.h create mode 100644 zlibrary/ui/src/gtk/time/ZLGtkTime.cpp create mode 100644 zlibrary/ui/src/gtk/time/ZLGtkTime.h create mode 100644 zlibrary/ui/src/gtk/util/ZLGtkKeyUtil.cpp create mode 100644 zlibrary/ui/src/gtk/util/ZLGtkKeyUtil.h create mode 100644 zlibrary/ui/src/gtk/util/ZLGtkSignalUtil.cpp create mode 100644 zlibrary/ui/src/gtk/util/ZLGtkSignalUtil.h create mode 100644 zlibrary/ui/src/gtk/view/ZLGtkPaintContext.cpp create mode 100644 zlibrary/ui/src/gtk/view/ZLGtkPaintContext.h create mode 100644 zlibrary/ui/src/gtk/view/ZLGtkViewWidget.cpp create mode 100644 zlibrary/ui/src/gtk/view/ZLGtkViewWidget.h create mode 100644 zlibrary/ui/src/iphone/application/ZLCocoaApplicationWindow.M create mode 100644 zlibrary/ui/src/iphone/application/ZLCocoaApplicationWindow.h create mode 100644 zlibrary/ui/src/iphone/dialogs/ZLCocoaDialogManager.cpp create mode 100644 zlibrary/ui/src/iphone/dialogs/ZLCocoaDialogManager.h create mode 100644 zlibrary/ui/src/iphone/filesystem/ZLCocoaFSManager.M create mode 100644 zlibrary/ui/src/iphone/filesystem/ZLCocoaFSManager.h create mode 100644 zlibrary/ui/src/iphone/image/ZLCocoaImageManager.M create mode 100644 zlibrary/ui/src/iphone/image/ZLCocoaImageManager.h create mode 100644 zlibrary/ui/src/iphone/library/ZLCocoaAppDelegate.M create mode 100644 zlibrary/ui/src/iphone/library/ZLCocoaAppDelegate.h create mode 100644 zlibrary/ui/src/iphone/library/ZLibrary.M create mode 100644 zlibrary/ui/src/iphone/time/ZLCocoaTimeManager.M create mode 100644 zlibrary/ui/src/iphone/time/ZLCocoaTimeManager.h create mode 100644 zlibrary/ui/src/iphone/view/CocoaView.M create mode 100644 zlibrary/ui/src/iphone/view/CocoaView.h create mode 100644 zlibrary/ui/src/iphone/view/ZLCocoaPaintContext.M create mode 100644 zlibrary/ui/src/iphone/view/ZLCocoaPaintContext.h create mode 100644 zlibrary/ui/src/iphone/view/ZLCocoaViewWidget.cpp create mode 100644 zlibrary/ui/src/iphone/view/ZLCocoaViewWidget.h create mode 100644 zlibrary/ui/src/maemo/application/GtkEntryParameter.cpp create mode 100644 zlibrary/ui/src/maemo/application/ZLGtkApplicationWindow.cpp create mode 100644 zlibrary/ui/src/maemo/application/ZLGtkApplicationWindow.h create mode 100644 zlibrary/ui/src/maemo/dialogs/ZLGtkDialog.cpp create mode 100644 zlibrary/ui/src/maemo/dialogs/ZLGtkDialog.h create mode 100644 zlibrary/ui/src/maemo/dialogs/ZLGtkDialogContent.cpp create mode 100644 zlibrary/ui/src/maemo/dialogs/ZLGtkDialogContent.h create mode 100644 zlibrary/ui/src/maemo/dialogs/ZLGtkDialogManager.cpp create mode 100644 zlibrary/ui/src/maemo/dialogs/ZLGtkDialogManager.h create mode 100644 zlibrary/ui/src/maemo/dialogs/ZLGtkOptionsDialog.cpp create mode 100644 zlibrary/ui/src/maemo/dialogs/ZLGtkOptionsDialog.h create mode 100644 zlibrary/ui/src/maemo/dialogs/ZLGtkProgressDialog.cpp create mode 100644 zlibrary/ui/src/maemo/dialogs/ZLGtkProgressDialog.h create mode 100644 zlibrary/ui/src/maemo/dialogs/ZLGtkSelectionDialog.cpp create mode 100644 zlibrary/ui/src/maemo/dialogs/ZLGtkSelectionDialog.h create mode 100644 zlibrary/ui/src/maemo/dialogs/ZLGtkUtil.cpp create mode 100644 zlibrary/ui/src/maemo/dialogs/ZLGtkUtil.h create mode 100644 zlibrary/ui/src/maemo/library/ZLibrary.cpp create mode 100644 zlibrary/ui/src/maemo/message/ZLMaemoMessage.cpp create mode 100644 zlibrary/ui/src/maemo/message/ZLMaemoMessage.h create mode 100644 zlibrary/ui/src/maemo/network/ZLMaemoNetworkManager.cpp create mode 100644 zlibrary/ui/src/maemo/network/ZLMaemoNetworkManager.h create mode 100644 zlibrary/ui/src/maemo/optionView/ZLGtkOptionView.cpp create mode 100644 zlibrary/ui/src/maemo/optionView/ZLGtkOptionView.h create mode 100644 zlibrary/ui/src/maemo/optionView/ZLGtkOptionViewHolder.cpp create mode 100644 zlibrary/ui/src/maemo/optionView/ZLGtkOptionViewHolder.h create mode 100644 zlibrary/ui/src/maemo/time/ZLGtkTime.cpp create mode 100644 zlibrary/ui/src/maemo/time/ZLGtkTime.h create mode 100644 zlibrary/ui/src/maemo/view/ZLGtkPaintContext.cpp create mode 100644 zlibrary/ui/src/maemo/view/ZLGtkPaintContext.h create mode 100644 zlibrary/ui/src/maemo/view/ZLGtkViewWidget.cpp create mode 100644 zlibrary/ui/src/maemo/view/ZLGtkViewWidget.h create mode 100644 zlibrary/ui/src/maemo5/application/ZLGtkApplicationWindow.cpp create mode 100644 zlibrary/ui/src/maemo5/application/ZLGtkApplicationWindow.h create mode 100644 zlibrary/ui/src/maemo5/dialogs/ZLGtkDialog.cpp create mode 100644 zlibrary/ui/src/maemo5/dialogs/ZLGtkDialog.h create mode 100644 zlibrary/ui/src/maemo5/dialogs/ZLGtkDialogContent.cpp create mode 100644 zlibrary/ui/src/maemo5/dialogs/ZLGtkDialogContent.h create mode 100644 zlibrary/ui/src/maemo5/dialogs/ZLGtkDialogManager.cpp create mode 100644 zlibrary/ui/src/maemo5/dialogs/ZLGtkDialogManager.h create mode 100644 zlibrary/ui/src/maemo5/dialogs/ZLGtkOpenFileDialog.cpp create mode 100644 zlibrary/ui/src/maemo5/dialogs/ZLGtkOpenFileDialog.h create mode 100644 zlibrary/ui/src/maemo5/dialogs/ZLGtkOptionsDialog.cpp create mode 100644 zlibrary/ui/src/maemo5/dialogs/ZLGtkOptionsDialog.h create mode 100644 zlibrary/ui/src/maemo5/dialogs/ZLGtkProgressDialog.cpp create mode 100644 zlibrary/ui/src/maemo5/dialogs/ZLGtkProgressDialog.h create mode 100644 zlibrary/ui/src/maemo5/dialogs/ZLGtkUtil.cpp create mode 100644 zlibrary/ui/src/maemo5/dialogs/ZLGtkUtil.h create mode 100644 zlibrary/ui/src/maemo5/library/ZLibrary.cpp create mode 120000 zlibrary/ui/src/maemo5/message create mode 100644 zlibrary/ui/src/maemo5/network/ZLMaemoNetworkManager.cpp create mode 100644 zlibrary/ui/src/maemo5/network/ZLMaemoNetworkManager.h create mode 100644 zlibrary/ui/src/maemo5/optionView/ZLGtkOptionView.cpp create mode 100644 zlibrary/ui/src/maemo5/optionView/ZLGtkOptionView.h create mode 100644 zlibrary/ui/src/maemo5/optionView/ZLGtkOptionViewHolder.cpp create mode 100644 zlibrary/ui/src/maemo5/optionView/ZLGtkOptionViewHolder.h create mode 120000 zlibrary/ui/src/maemo5/time create mode 120000 zlibrary/ui/src/maemo5/view create mode 100644 zlibrary/ui/src/opie/application/ZLQtApplicationWindow.cpp create mode 100644 zlibrary/ui/src/opie/application/ZLQtApplicationWindow.h create mode 100644 zlibrary/ui/src/opie/application/moc.mk create mode 100644 zlibrary/ui/src/opie/dialogs/ZLFullScreenDialog.cpp create mode 100644 zlibrary/ui/src/opie/dialogs/ZLFullScreenDialog.h create mode 100644 zlibrary/ui/src/opie/dialogs/ZLQtDialog.cpp create mode 100644 zlibrary/ui/src/opie/dialogs/ZLQtDialog.h create mode 100644 zlibrary/ui/src/opie/dialogs/ZLQtDialogContent.cpp create mode 100644 zlibrary/ui/src/opie/dialogs/ZLQtDialogContent.h create mode 100644 zlibrary/ui/src/opie/dialogs/ZLQtDialogManager.cpp create mode 100644 zlibrary/ui/src/opie/dialogs/ZLQtDialogManager.h create mode 100644 zlibrary/ui/src/opie/dialogs/ZLQtOptionView.cpp create mode 100644 zlibrary/ui/src/opie/dialogs/ZLQtOptionView.h create mode 100644 zlibrary/ui/src/opie/dialogs/ZLQtOptionsDialog.cpp create mode 100644 zlibrary/ui/src/opie/dialogs/ZLQtOptionsDialog.h create mode 100644 zlibrary/ui/src/opie/dialogs/ZLQtSelectionDialog.cpp create mode 100644 zlibrary/ui/src/opie/dialogs/ZLQtSelectionDialog.h create mode 100644 zlibrary/ui/src/opie/dialogs/ZLQtUtil.cpp create mode 100644 zlibrary/ui/src/opie/dialogs/ZLQtUtil.h create mode 100644 zlibrary/ui/src/opie/dialogs/ZLQtWaitMessage.cpp create mode 100644 zlibrary/ui/src/opie/dialogs/ZLQtWaitMessage.h create mode 100644 zlibrary/ui/src/opie/dialogs/moc.mk create mode 100644 zlibrary/ui/src/opie/library/ZLibrary.cpp create mode 100644 zlibrary/ui/src/opie/view/ZLQtPaintContext.cpp create mode 100644 zlibrary/ui/src/opie/view/ZLQtPaintContext.h create mode 100644 zlibrary/ui/src/opie/view/ZLQtViewWidget.cpp create mode 100644 zlibrary/ui/src/opie/view/ZLQtViewWidget.h create mode 100644 zlibrary/ui/src/qt/application-desktop/ZLQtApplicationWindow.cpp create mode 100644 zlibrary/ui/src/qt/application-desktop/ZLQtApplicationWindow.h create mode 100644 zlibrary/ui/src/qt/application-desktop/ZLQtPopupMenu.cpp create mode 100644 zlibrary/ui/src/qt/application-desktop/ZLQtPopupMenu.h create mode 100644 zlibrary/ui/src/qt/application-desktop/moc.mk create mode 100644 zlibrary/ui/src/qt/application-pdaxrom/ZLQtApplicationWindow.cpp create mode 100644 zlibrary/ui/src/qt/application-pdaxrom/ZLQtApplicationWindow.h create mode 100644 zlibrary/ui/src/qt/application-pdaxrom/moc.mk create mode 100644 zlibrary/ui/src/qt/dialogs/ZLQtDialog.cpp create mode 100644 zlibrary/ui/src/qt/dialogs/ZLQtDialog.h create mode 100644 zlibrary/ui/src/qt/dialogs/ZLQtDialogContent.cpp create mode 100644 zlibrary/ui/src/qt/dialogs/ZLQtDialogContent.h create mode 100644 zlibrary/ui/src/qt/dialogs/ZLQtDialogManager.cpp create mode 100644 zlibrary/ui/src/qt/dialogs/ZLQtDialogManager.h create mode 100644 zlibrary/ui/src/qt/dialogs/ZLQtOpenFileDialog.cpp create mode 100644 zlibrary/ui/src/qt/dialogs/ZLQtOpenFileDialog.h create mode 100644 zlibrary/ui/src/qt/dialogs/ZLQtOptionView.cpp create mode 100644 zlibrary/ui/src/qt/dialogs/ZLQtOptionView.h create mode 100644 zlibrary/ui/src/qt/dialogs/ZLQtOptionsDialog.cpp create mode 100644 zlibrary/ui/src/qt/dialogs/ZLQtOptionsDialog.h create mode 100644 zlibrary/ui/src/qt/dialogs/ZLQtProgressDialog.cpp create mode 100644 zlibrary/ui/src/qt/dialogs/ZLQtProgressDialog.h create mode 100644 zlibrary/ui/src/qt/dialogs/ZLQtUtil.cpp create mode 100644 zlibrary/ui/src/qt/dialogs/ZLQtUtil.h create mode 100644 zlibrary/ui/src/qt/dialogs/moc.mk create mode 100644 zlibrary/ui/src/qt/filesystem/ZLQtFSManager.cpp create mode 100644 zlibrary/ui/src/qt/filesystem/ZLQtFSManager.h create mode 100644 zlibrary/ui/src/qt/image/ZLQtImageManager.cpp create mode 100644 zlibrary/ui/src/qt/image/ZLQtImageManager.h create mode 100644 zlibrary/ui/src/qt/library/ZLibrary.cpp create mode 100644 zlibrary/ui/src/qt/time/ZLQtTime.cpp create mode 100644 zlibrary/ui/src/qt/time/ZLQtTime.h create mode 100644 zlibrary/ui/src/qt/util/ZLQtKeyUtil.cpp create mode 100644 zlibrary/ui/src/qt/util/ZLQtKeyUtil.h create mode 100644 zlibrary/ui/src/qt/view/ZLQtPaintContext.cpp create mode 100644 zlibrary/ui/src/qt/view/ZLQtPaintContext.h create mode 100644 zlibrary/ui/src/qt/view/ZLQtViewWidget.cpp create mode 100644 zlibrary/ui/src/qt/view/ZLQtViewWidget.h create mode 100644 zlibrary/ui/src/qt/view/moc.mk create mode 100644 zlibrary/ui/src/qt4/application/LineEditParameter.cpp create mode 100644 zlibrary/ui/src/qt4/application/ZLQtApplicationWindow.cpp create mode 100644 zlibrary/ui/src/qt4/application/ZLQtApplicationWindow.h create mode 100644 zlibrary/ui/src/qt4/application/moc.mk create mode 100644 zlibrary/ui/src/qt4/dialogs/ZLQtDialog.cpp create mode 100644 zlibrary/ui/src/qt4/dialogs/ZLQtDialog.h create mode 100644 zlibrary/ui/src/qt4/dialogs/ZLQtDialogContent.cpp create mode 100644 zlibrary/ui/src/qt4/dialogs/ZLQtDialogContent.h create mode 100644 zlibrary/ui/src/qt4/dialogs/ZLQtDialogManager.cpp create mode 100644 zlibrary/ui/src/qt4/dialogs/ZLQtDialogManager.h create mode 100644 zlibrary/ui/src/qt4/dialogs/ZLQtOpenFileDialog.cpp create mode 100644 zlibrary/ui/src/qt4/dialogs/ZLQtOpenFileDialog.h create mode 100644 zlibrary/ui/src/qt4/dialogs/ZLQtOptionView.cpp create mode 100644 zlibrary/ui/src/qt4/dialogs/ZLQtOptionView.h create mode 100644 zlibrary/ui/src/qt4/dialogs/ZLQtOptionsDialog.cpp create mode 100644 zlibrary/ui/src/qt4/dialogs/ZLQtOptionsDialog.h create mode 100644 zlibrary/ui/src/qt4/dialogs/ZLQtProgressDialog.cpp create mode 100644 zlibrary/ui/src/qt4/dialogs/ZLQtProgressDialog.h create mode 100644 zlibrary/ui/src/qt4/dialogs/ZLQtTreeDialog.cpp create mode 100644 zlibrary/ui/src/qt4/dialogs/ZLQtTreeDialog.h create mode 100644 zlibrary/ui/src/qt4/dialogs/ZLQtUtil.cpp create mode 100644 zlibrary/ui/src/qt4/dialogs/ZLQtUtil.h create mode 100644 zlibrary/ui/src/qt4/dialogs/moc.mk create mode 100644 zlibrary/ui/src/qt4/filesystem/ZLQtFSManager.cpp create mode 100644 zlibrary/ui/src/qt4/filesystem/ZLQtFSManager.h create mode 100644 zlibrary/ui/src/qt4/image/ZLQtImageManager.cpp create mode 100644 zlibrary/ui/src/qt4/image/ZLQtImageManager.h create mode 100644 zlibrary/ui/src/qt4/image/ZLQtImageUtils.cpp create mode 100644 zlibrary/ui/src/qt4/image/ZLQtImageUtils.h create mode 100644 zlibrary/ui/src/qt4/library/ZLQApplication.h create mode 100644 zlibrary/ui/src/qt4/library/ZLibrary.cpp create mode 100644 zlibrary/ui/src/qt4/library/moc.mk create mode 100644 zlibrary/ui/src/qt4/network/ZLQtNetworkManager.cpp create mode 100644 zlibrary/ui/src/qt4/network/ZLQtNetworkManager.h create mode 100644 zlibrary/ui/src/qt4/network/moc.mk create mode 100644 zlibrary/ui/src/qt4/time/ZLQtTime.cpp create mode 100644 zlibrary/ui/src/qt4/time/ZLQtTime.h create mode 100644 zlibrary/ui/src/qt4/time/moc.mk create mode 100644 zlibrary/ui/src/qt4/tree/QtWaitingSpinner.cpp create mode 100644 zlibrary/ui/src/qt4/tree/QtWaitingSpinner.h create mode 100644 zlibrary/ui/src/qt4/tree/ZLQtItemsListWidget.cpp create mode 100644 zlibrary/ui/src/qt4/tree/ZLQtItemsListWidget.h create mode 100644 zlibrary/ui/src/qt4/tree/ZLQtPreviewWidget.cpp create mode 100644 zlibrary/ui/src/qt4/tree/ZLQtPreviewWidget.h create mode 100644 zlibrary/ui/src/qt4/tree/ZLQtSearchField.cpp create mode 100644 zlibrary/ui/src/qt4/tree/ZLQtSearchField.h create mode 100644 zlibrary/ui/src/qt4/tree/moc.mk create mode 100644 zlibrary/ui/src/qt4/util/ZLQtKeyUtil.cpp create mode 100644 zlibrary/ui/src/qt4/util/ZLQtKeyUtil.h create mode 100644 zlibrary/ui/src/qt4/view/ZLQtPaintContext.cpp create mode 100644 zlibrary/ui/src/qt4/view/ZLQtPaintContext.h create mode 100644 zlibrary/ui/src/qt4/view/ZLQtViewWidget.cpp create mode 100644 zlibrary/ui/src/qt4/view/ZLQtViewWidget.h create mode 100644 zlibrary/ui/src/qt4/view/moc.mk create mode 100644 zlibrary/ui/src/qtopia/application/ZLQtApplicationWindow.cpp create mode 100644 zlibrary/ui/src/qtopia/application/ZLQtApplicationWindow.h create mode 100644 zlibrary/ui/src/qtopia/application/ZLQtMenuAction.h create mode 100644 zlibrary/ui/src/qtopia/application/moc.mk create mode 100644 zlibrary/ui/src/qtopia/dialogs/ZLFullScreenDialog.cpp create mode 100644 zlibrary/ui/src/qtopia/dialogs/ZLFullScreenDialog.h create mode 100644 zlibrary/ui/src/qtopia/dialogs/ZLQtDialog.cpp create mode 100644 zlibrary/ui/src/qtopia/dialogs/ZLQtDialog.h create mode 100644 zlibrary/ui/src/qtopia/dialogs/ZLQtDialogContent.cpp create mode 100644 zlibrary/ui/src/qtopia/dialogs/ZLQtDialogContent.h create mode 100644 zlibrary/ui/src/qtopia/dialogs/ZLQtDialogManager.cpp create mode 100644 zlibrary/ui/src/qtopia/dialogs/ZLQtDialogManager.h create mode 100644 zlibrary/ui/src/qtopia/dialogs/ZLQtOptionsDialog.cpp create mode 100644 zlibrary/ui/src/qtopia/dialogs/ZLQtOptionsDialog.h create mode 100644 zlibrary/ui/src/qtopia/dialogs/ZLQtSelectionDialog.cpp create mode 100644 zlibrary/ui/src/qtopia/dialogs/ZLQtSelectionDialog.h create mode 100644 zlibrary/ui/src/qtopia/dialogs/ZLQtUtil.cpp create mode 100644 zlibrary/ui/src/qtopia/dialogs/ZLQtUtil.h create mode 100644 zlibrary/ui/src/qtopia/dialogs/ZLQtWaitMessage.cpp create mode 100644 zlibrary/ui/src/qtopia/dialogs/ZLQtWaitMessage.h create mode 100644 zlibrary/ui/src/qtopia/dialogs/moc.mk create mode 100644 zlibrary/ui/src/qtopia/library/ZLibrary.cpp create mode 100644 zlibrary/ui/src/qtopia/message/ZLQtopiaMessage.cpp create mode 100644 zlibrary/ui/src/qtopia/message/ZLQtopiaMessage.h create mode 100644 zlibrary/ui/src/qtopia/optionView/ZLQtOptionView.cpp create mode 100644 zlibrary/ui/src/qtopia/optionView/ZLQtOptionView.h create mode 100644 zlibrary/ui/src/qtopia/optionView/ZLQtOptionViewHolder.cpp create mode 100644 zlibrary/ui/src/qtopia/optionView/ZLQtOptionViewHolder.h create mode 100644 zlibrary/ui/src/qtopia/optionView/moc.mk create mode 100644 zlibrary/ui/src/qtopia/view/ZLQtPaintContext.cpp create mode 100644 zlibrary/ui/src/qtopia/view/ZLQtPaintContext.h create mode 100644 zlibrary/ui/src/qtopia/view/ZLQtViewWidget.cpp create mode 100644 zlibrary/ui/src/qtopia/view/ZLQtViewWidget.h create mode 100644 zlibrary/ui/src/qtopia/view/ZLZaurusFontHack.cpp create mode 100644 zlibrary/ui/src/qtopia/view/ZLZaurusFontHack.h create mode 100644 zlibrary/ui/src/qtopia/view/moc.mk create mode 100644 zlibrary/ui/src/unix/message/ZLUnixMessage.cpp create mode 100644 zlibrary/ui/src/unix/message/ZLUnixMessage.h create mode 100644 zlibrary/ui/src/win32/application/FloatingToolbar.cpp create mode 100644 zlibrary/ui/src/win32/application/Toolbar.cpp create mode 100644 zlibrary/ui/src/win32/application/ZLWin32ApplicationWindow.cpp create mode 100644 zlibrary/ui/src/win32/application/ZLWin32ApplicationWindow.h create mode 100644 zlibrary/ui/src/win32/application/ZLWin32PopupMenu.cpp create mode 100644 zlibrary/ui/src/win32/application/ZLWin32PopupMenu.h create mode 100644 zlibrary/ui/src/win32/dialogs/ZLWin32Dialog.cpp create mode 100644 zlibrary/ui/src/win32/dialogs/ZLWin32Dialog.h create mode 100644 zlibrary/ui/src/win32/dialogs/ZLWin32DialogContent.cpp create mode 100644 zlibrary/ui/src/win32/dialogs/ZLWin32DialogContent.h create mode 100644 zlibrary/ui/src/win32/dialogs/ZLWin32DialogManager.cpp create mode 100644 zlibrary/ui/src/win32/dialogs/ZLWin32DialogManager.h create mode 100644 zlibrary/ui/src/win32/dialogs/ZLWin32MessageBox.cpp create mode 100644 zlibrary/ui/src/win32/dialogs/ZLWin32MessageBox.h create mode 100644 zlibrary/ui/src/win32/dialogs/ZLWin32OptionView.cpp create mode 100644 zlibrary/ui/src/win32/dialogs/ZLWin32OptionView.h create mode 100644 zlibrary/ui/src/win32/dialogs/ZLWin32OptionsDialog.cpp create mode 100644 zlibrary/ui/src/win32/dialogs/ZLWin32OptionsDialog.h create mode 100644 zlibrary/ui/src/win32/dialogs/ZLWin32ProgressDialog.cpp create mode 100644 zlibrary/ui/src/win32/dialogs/ZLWin32ProgressDialog.h create mode 100644 zlibrary/ui/src/win32/image/ZLWin32ImageManager.cpp create mode 100644 zlibrary/ui/src/win32/image/ZLWin32ImageManager.h create mode 100644 zlibrary/ui/src/win32/image/ZLWin32ImageManager_bmp.cpp create mode 100644 zlibrary/ui/src/win32/image/ZLWin32ImageManager_gif.cpp create mode 100644 zlibrary/ui/src/win32/image/ZLWin32ImageManager_jpeg.cpp create mode 100644 zlibrary/ui/src/win32/image/ZLWin32ImageManager_png.cpp create mode 100644 zlibrary/ui/src/win32/image/ZLWin32ImageManager_tiff.cpp create mode 100644 zlibrary/ui/src/win32/library/ZLibraryWin32.cpp create mode 100644 zlibrary/ui/src/win32/message/ZLWin32Message.cpp create mode 100644 zlibrary/ui/src/win32/message/ZLWin32Message.h create mode 100644 zlibrary/ui/src/win32/time/ZLWin32Time.cpp create mode 100644 zlibrary/ui/src/win32/time/ZLWin32Time.h create mode 100644 zlibrary/ui/src/win32/view/ZLWin32PaintContext.cpp create mode 100644 zlibrary/ui/src/win32/view/ZLWin32PaintContext.h create mode 100644 zlibrary/ui/src/win32/view/ZLWin32ViewWidget.cpp create mode 100644 zlibrary/ui/src/win32/view/ZLWin32ViewWidget.h create mode 100644 zlibrary/ui/src/win32/w32widgets/W32Box.cpp create mode 100644 zlibrary/ui/src/win32/w32widgets/W32ColorComboBox.cpp create mode 100644 zlibrary/ui/src/win32/w32widgets/W32ColorComboBox.h create mode 100644 zlibrary/ui/src/win32/w32widgets/W32Container.cpp create mode 100644 zlibrary/ui/src/win32/w32widgets/W32Container.h create mode 100644 zlibrary/ui/src/win32/w32widgets/W32Control.cpp create mode 100644 zlibrary/ui/src/win32/w32widgets/W32Control.h create mode 100644 zlibrary/ui/src/win32/w32widgets/W32ControlCollection.cpp create mode 100644 zlibrary/ui/src/win32/w32widgets/W32ControlCollection.h create mode 100644 zlibrary/ui/src/win32/w32widgets/W32DialogPanel.cpp create mode 100644 zlibrary/ui/src/win32/w32widgets/W32DialogPanel.h create mode 100644 zlibrary/ui/src/win32/w32widgets/W32Event.cpp create mode 100644 zlibrary/ui/src/win32/w32widgets/W32Event.h create mode 100644 zlibrary/ui/src/win32/w32widgets/W32PropertySheet.cpp create mode 100644 zlibrary/ui/src/win32/w32widgets/W32StandaloneDialogPanel.cpp create mode 100644 zlibrary/ui/src/win32/w32widgets/W32Table.cpp create mode 100644 zlibrary/ui/src/win32/w32widgets/W32TreeView.cpp create mode 100644 zlibrary/ui/src/win32/w32widgets/W32TreeView.h create mode 100644 zlibrary/ui/src/win32/w32widgets/W32VBorderBox.cpp create mode 100644 zlibrary/ui/src/win32/w32widgets/W32Widget.cpp create mode 100644 zlibrary/ui/src/win32/w32widgets/W32Widget.h create mode 100644 zlibrary/ui/ui.pro create mode 100755 zlibrary/zlibrary.pro diff --git a/.pc/.quilt_patches b/.pc/.quilt_patches new file mode 100644 index 0000000..6857a8d --- /dev/null +++ b/.pc/.quilt_patches @@ -0,0 +1 @@ +debian/patches diff --git a/.pc/.quilt_series b/.pc/.quilt_series new file mode 100644 index 0000000..c206706 --- /dev/null +++ b/.pc/.quilt_series @@ -0,0 +1 @@ +series diff --git a/.pc/.version b/.pc/.version new file mode 100644 index 0000000..0cfbf08 --- /dev/null +++ b/.pc/.version @@ -0,0 +1 @@ +2 diff --git a/.pc/0001-ZLQtFSManager.cpp.patch/zlibrary/ui/src/qt4/filesystem/ZLQtFSManager.cpp b/.pc/0001-ZLQtFSManager.cpp.patch/zlibrary/ui/src/qt4/filesystem/ZLQtFSManager.cpp new file mode 100644 index 0000000..50a9f09 --- /dev/null +++ b/.pc/0001-ZLQtFSManager.cpp.patch/zlibrary/ui/src/qt4/filesystem/ZLQtFSManager.cpp @@ -0,0 +1,51 @@ +/* + * Copyright (C) 2004-2012 Geometer Plus + * + * 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; either version 2 of the License, or + * (at your option) any later version. + * + * 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, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + * 02110-1301, USA. + */ + +#include +#include +#include + +#include + +#include "ZLQtFSManager.h" + +std::string ZLQtFSManager::convertFilenameToUtf8(const std::string &name) const { + if (name.empty()) { + return name; + } + + QString qString = QString::fromLocal8Bit(name.c_str()); + return (qString == QString::null) ? "" : (const char*)qString.toUtf8(); +} + +shared_ptr ZLQtFSManager::mimeType(const std::string &path) const { + // TODO: implement + return ZLMimeType::EMPTY; +} + +void ZLQtFSManager::normalizeRealPath(std::string &path) const { + if (ZLStringUtil::stringStartsWith(path, "~~/") || path == "~~") { + static const std::string replacement = + std::string((const char*)QCoreApplication::applicationDirPath().toUtf8()) + "/.."; + path = replacement + path.substr(2); + } else if (ZLStringUtil::stringStartsWith(path, "~/") || path == "~") { + static const std::string replacement = (const char*)QDir::homePath().toUtf8(); + path = replacement + path.substr(1); + } +} diff --git a/.pc/0002-Qt5.patch/makefiles/arch/desktop.mk b/.pc/0002-Qt5.patch/makefiles/arch/desktop.mk new file mode 100644 index 0000000..3e81598 --- /dev/null +++ b/.pc/0002-Qt5.patch/makefiles/arch/desktop.mk @@ -0,0 +1,42 @@ +include $(ROOTDIR)/makefiles/arch/unix.mk + +ifeq "$(INSTALLDIR)" "" + INSTALLDIR=/usr +endif +IMAGEDIR = $(INSTALLDIR)/share/pixmaps +APPIMAGEDIR = $(INSTALLDIR)/share/pixmaps/%APPLICATION_NAME% + + +CCACHE = $(shell if which ccache > /dev/null; then echo "ccache"; fi) #if ccache is not installed, do not use it +CC = $(CCACHE) gcc +AR = ar rsu +LD = g++ + +CFLAGS = -pipe -fno-exceptions -Wall -Wno-ctor-dtor-privacy -W -DLIBICONV_PLUG +LDFLAGS = +EXTERNAL_INCLUDE = $(shell pkg-config --cflags fribidi) + +ifeq "$(UI_TYPE)" "qt" + MOC = moc-qt3 + QTINCLUDE = -I /usr/include/qt3 +else + MOC = $(shell pkg-config QtCore --variable=moc_location) + QTINCLUDE = -I $(shell pkg-config --cflags QtCore) +endif + +GTKINCLUDE = $(shell pkg-config --cflags gtk+-2.0 libpng xft) + +ifeq "$(UI_TYPE)" "qt" + UILIBS = -lqt-mt +endif + +ifeq "$(UI_TYPE)" "qt4" + UILIBS = $(shell pkg-config --libs QtCore QtGui QtNetwork) +endif + +ifeq "$(UI_TYPE)" "gtk" + UILIBS = $(shell pkg-config --libs gtk+-2.0 gio-2.0) -lpng -ljpeg +endif + +RM = rm -rvf +RM_QUIET = rm -rf diff --git a/.pc/0002-Qt5.patch/zlibrary/ui/src/qt4/application/LineEditParameter.cpp b/.pc/0002-Qt5.patch/zlibrary/ui/src/qt4/application/LineEditParameter.cpp new file mode 100644 index 0000000..dfcbc0b --- /dev/null +++ b/.pc/0002-Qt5.patch/zlibrary/ui/src/qt4/application/LineEditParameter.cpp @@ -0,0 +1,84 @@ +/* + * Copyright (C) 2008-2012 Geometer Plus + * + * 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; either version 2 of the License, or + * (at your option) any later version. + * + * 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, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + * 02110-1301, USA. + */ + +#include +#include +#include +#include + +#include "ZLQtApplicationWindow.h" +#include "../util/ZLQtKeyUtil.h" + +class ZLQtLineEdit : public QLineEdit { + +public: + ZLQtLineEdit(QToolBar *toolbar, ZLQtApplicationWindow &window, ZLQtApplicationWindow::LineEditParameter ¶meter, const std::string &actionId); + +private: + void keyReleaseEvent(QKeyEvent *event); + +private: + ZLQtApplicationWindow &myWindow; + ZLQtApplicationWindow::LineEditParameter &myParameter; + const std::string myActionId; +}; + +ZLQtLineEdit::ZLQtLineEdit(QToolBar *toolbar, ZLQtApplicationWindow &window, ZLQtApplicationWindow::LineEditParameter ¶meter, const std::string &actionId) : QLineEdit(toolbar), myWindow(window), myParameter(parameter), myActionId(actionId) { +} + +void ZLQtLineEdit::keyReleaseEvent(QKeyEvent *event) { + event->accept(); + const std::string key = ZLQtKeyUtil::keyName(event); + if (key == "") { + myWindow.application().doAction(myActionId); + myWindow.setFocusToMainWidget(); + } else if (key == "") { + myParameter.restoreOldValue(); + myWindow.setFocusToMainWidget(); + } +} + +ZLQtApplicationWindow::LineEditParameter::LineEditParameter(QToolBar *toolbar, ZLQtApplicationWindow &window, const ZLToolbar::ParameterItem &textFieldItem) { + myEdit = new ZLQtLineEdit(toolbar, window, *this, textFieldItem.actionId()); + myEdit->setAlignment(Qt::AlignHCenter); + myEdit->setMaxLength(textFieldItem.maxWidth()); + myEdit->setFixedWidth(textFieldItem.maxWidth() * 10 + 10); + myEdit->setFocusPolicy(Qt::ClickFocus); + myEdit->setToolTip(QString::fromUtf8(textFieldItem.tooltip().c_str())); + myAction = toolbar->addWidget(myEdit); + // I don't understand why this code does work but it does. + //QBoxLayout *layout = (QBoxLayout*)toolbar->layout(); + //layout->addStretch(); +} + +QAction *ZLQtApplicationWindow::LineEditParameter::action() const { + return myAction; +} + +std::string ZLQtApplicationWindow::LineEditParameter::internalValue() const { + return (const char*)myEdit->text().toUtf8(); +} + +void ZLQtApplicationWindow::LineEditParameter::internalSetValue(const std::string &value) { + myEdit->setText(QString::fromUtf8(value.c_str())); +} + +void ZLQtApplicationWindow::LineEditParameter::restoreOldValue() { + VisualParameter::restoreOldValue(); +} diff --git a/.pc/0002-Qt5.patch/zlibrary/ui/src/qt4/application/ZLQtApplicationWindow.cpp b/.pc/0002-Qt5.patch/zlibrary/ui/src/qt4/application/ZLQtApplicationWindow.cpp new file mode 100644 index 0000000..6241514 --- /dev/null +++ b/.pc/0002-Qt5.patch/zlibrary/ui/src/qt4/application/ZLQtApplicationWindow.cpp @@ -0,0 +1,331 @@ +/* + * Copyright (C) 2004-2012 Geometer Plus + * + * 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; either version 2 of the License, or + * (at your option) any later version. + * + * 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, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + * 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include "ZLQtApplicationWindow.h" +#include "../dialogs/ZLQtDialogManager.h" +#include "../view/ZLQtViewWidget.h" +#include "../util/ZLQtKeyUtil.h" + +void ZLQtDialogManager::createApplicationWindow(ZLApplication *application) const { + myApplicationWindow = new ZLQtApplicationWindow(application); +} + +ZLQtToolBarAction::ZLQtToolBarAction(ZLQtApplicationWindow *parent, ZLToolbar::AbstractButtonItem &item) : QAction(parent), myItem(item) { + static std::string imagePrefix = ZLibrary::ApplicationImageDirectory() + ZLibrary::FileNameDelimiter; + const QString path = QString::fromUtf8(ZLFile(imagePrefix + myItem.iconName() + ".png").path().c_str()); + QPixmap icon(path); + setIcon(QIcon(icon)); + QSize size = icon.size(); + if (item.type() == ZLToolbar::Item::TOGGLE_BUTTON) { + setCheckable(true); + } + QString text = QString::fromUtf8(myItem.tooltip().c_str()); + setText(text); + setToolTip(text); + connect(this, SIGNAL(triggered()), this, SLOT(onActivated())); +} + +void ZLQtToolBarAction::onActivated() { + ((ZLQtApplicationWindow*)parent())->onButtonPress(myItem); +} + +void ZLQtApplicationWindow::setToggleButtonState(const ZLToolbar::ToggleButtonItem &button) { + myActions[&button]->setChecked(button.isPressed()); +} + +ZLQtApplicationWindow::ZLQtApplicationWindow(ZLApplication *application) : + ZLDesktopApplicationWindow(application), + myFullscreenToolBar(0), + myDocWidget(0), + myFullScreen(false), + myWasMaximized(false), + myCursorIsHyperlink(false) { + + const std::string iconFileName = ZLibrary::ImageDirectory() + ZLibrary::FileNameDelimiter + ZLibrary::ApplicationName() + ".png"; + QPixmap icon(iconFileName.c_str()); + setWindowIcon(icon); + + myWindowToolBar = new QToolBar(this); + myWindowToolBar->setFocusPolicy(Qt::NoFocus); + myWindowToolBar->setMovable(false); + addToolBar(myWindowToolBar); + myWindowToolBar->setIconSize(QSize(32, 32)); + + if (hasFullscreenToolbar()) { + myFullscreenToolBar = new QToolBar(); + myFullscreenToolBar->setMovable(false); + myFullscreenToolBar->setIconSize(QSize(32, 32)); + myFullscreenToolBar->hide(); + } + + resize(myWidthOption.value(), myHeightOption.value()); + move(myXOption.value(), myYOption.value()); + + menuBar()->hide(); + show(); +} + +void ZLQtApplicationWindow::init() { + ZLDesktopApplicationWindow::init(); + switch (myWindowStateOption.value()) { + case NORMAL: + break; + case FULLSCREEN: + setFullscreen(true); + break; + case MAXIMIZED: + showMaximized(); + break; + } +} + +ZLQtApplicationWindow::~ZLQtApplicationWindow() { + if (isFullscreen()) { + myWindowStateOption.setValue(FULLSCREEN); + } else if (isMaximized()) { + myWindowStateOption.setValue(MAXIMIZED); + } else { + myWindowStateOption.setValue(NORMAL); + QPoint position = pos(); + if (position.x() != -1) { + myXOption.setValue(position.x()); + } + if (position.y() != -1) { + myYOption.setValue(position.y()); + } + myWidthOption.setValue(width()); + myHeightOption.setValue(height()); + } + for (std::map::iterator it = myActions.begin(); it != myActions.end(); ++it) { + if (it->second != 0) { + delete it->second; + } + } +} + +void ZLQtApplicationWindow::setFullscreen(bool fullscreen) { + if (fullscreen == myFullScreen) { + return; + } + myFullScreen = fullscreen; + if (myFullScreen) { + myWasMaximized = isMaximized(); + myWindowToolBar->hide(); + showFullScreen(); + if (myFullscreenToolBar != 0) { + if (myDocWidget == 0) { + myDocWidget = new QDockWidget(this); + myDocWidget->setWidget(myFullscreenToolBar); + myDocWidget->setFloating(true); + myDocWidget->setAllowedAreas(Qt::NoDockWidgetArea); + } + myDocWidget->show(); + myFullscreenToolBar->show(); + myDocWidget->setMinimumSize(myDocWidget->size()); + myDocWidget->setMaximumSize(myDocWidget->size()); + } + } else { + myWindowToolBar->show(); + showNormal(); + if (myWasMaximized) { + showMaximized(); + } + if (myDocWidget != 0) { + //myFullscreenToolBar->hide(); + myDocWidget->hide(); + } + } +} + +bool ZLQtApplicationWindow::isFullscreen() const { + return myFullScreen; +} + +void ZLQtApplicationWindow::keyPressEvent(QKeyEvent *event) { + application().doActionByKey(ZLQtKeyUtil::keyName(event)); +} + +void ZLQtApplicationWindow::wheelEvent(QWheelEvent *event) { + if (event->orientation() == Qt::Vertical) { + if (event->delta() > 0) { + application().doActionByKey(ZLApplication::MouseScrollUpKey); + } else { + application().doActionByKey(ZLApplication::MouseScrollDownKey); + } + } +} + +void ZLQtApplicationWindow::closeEvent(QCloseEvent *event) { + if (application().closeView()) { + event->accept(); + } else { + event->ignore(); + } +} + +void ZLQtApplicationWindow::addToolbarItem(ZLToolbar::ItemPtr item) { + QToolBar *tb = toolbar(type(*item)); + QAction *action = 0; + + switch (item->type()) { + case ZLToolbar::Item::PLAIN_BUTTON: + case ZLToolbar::Item::TOGGLE_BUTTON: + action = new ZLQtToolBarAction(this, (ZLToolbar::AbstractButtonItem&)*item); + tb->addAction(action); + break; + case ZLToolbar::Item::MENU_BUTTON: + { + ZLToolbar::MenuButtonItem &buttonItem = (ZLToolbar::MenuButtonItem&)*item; + QToolButton *button = new QToolButton(tb); + button->setFocusPolicy(Qt::NoFocus); + button->setDefaultAction(new ZLQtToolBarAction(this, buttonItem)); + button->setMenu(new QMenu(button)); + button->setPopupMode(QToolButton::MenuButtonPopup); + action = tb->addWidget(button); + myMenuButtons[&buttonItem] = button; + shared_ptr popupData = buttonItem.popupData(); + myPopupIdMap[&buttonItem] = + popupData.isNull() ? (size_t)-1 : (popupData->id() - 1); + break; + } + case ZLToolbar::Item::TEXT_FIELD: + case ZLToolbar::Item::SEARCH_FIELD: + { + ZLToolbar::ParameterItem &textFieldItem = + (ZLToolbar::ParameterItem&)*item; + LineEditParameter *para = new LineEditParameter(tb, *this, textFieldItem); + addVisualParameter(textFieldItem.parameterId(), para); + action = para->action(); + break; + } + case ZLToolbar::Item::SEPARATOR: + action = tb->addSeparator(); + break; + } + + if (action != 0) { + myActions[&*item] = action; + } +} + +ZLQtRunPopupAction::ZLQtRunPopupAction(QObject *parent, shared_ptr data, size_t index) : QAction(parent), myData(data), myIndex(index) { + setText(QString::fromUtf8(myData->text(myIndex).c_str())); + connect(this, SIGNAL(triggered()), this, SLOT(onActivated())); +} + +ZLQtRunPopupAction::~ZLQtRunPopupAction() { +} + +void ZLQtRunPopupAction::onActivated() { + myData->run(myIndex); +} + +void ZLQtApplicationWindow::setToolbarItemState(ZLToolbar::ItemPtr item, bool visible, bool enabled) { + QAction *action = myActions[&*item]; + if (action != 0) { + action->setEnabled(enabled); + action->setVisible(visible); + } + switch (item->type()) { + default: + break; + case ZLToolbar::Item::MENU_BUTTON: + { + ZLToolbar::MenuButtonItem &buttonItem = (ZLToolbar::MenuButtonItem&)*item; + shared_ptr data = buttonItem.popupData(); + if (!data.isNull() && (data->id() != myPopupIdMap[&buttonItem])) { + myPopupIdMap[&buttonItem] = data->id(); + QToolButton *button = myMenuButtons[&buttonItem]; + QMenu *menu = button->menu(); + menu->clear(); + const size_t count = data->count(); + for (size_t i = 0; i < count; ++i) { + menu->addAction(new ZLQtRunPopupAction(menu, data, i)); + } + } + break; + } + } +} + +void ZLQtApplicationWindow::processAllEvents() { + qApp->processEvents(); +} + +ZLViewWidget *ZLQtApplicationWindow::createViewWidget() { + ZLQtViewWidget *viewWidget = new ZLQtViewWidget(this, &application()); + setCentralWidget(viewWidget->widget()); + viewWidget->widget()->show(); + return viewWidget; +} + +void ZLQtApplicationWindow::close() { + QMainWindow::close(); +} + + + +void ZLQtApplicationWindow::refresh() { + QMetaObject::invokeMethod(this, "onRefresh", Qt::AutoConnection); +} + +void ZLQtApplicationWindow::onRefresh() { + ZLApplicationWindow::refresh(); +} + +void ZLQtApplicationWindow::grabAllKeys(bool) { +} + +void ZLQtApplicationWindow::setCaption(const std::string &caption) { + QMainWindow::setWindowTitle(QString::fromUtf8(caption.c_str())); +} + +void ZLQtApplicationWindow::setHyperlinkCursor(bool hyperlink) { + if (hyperlink == myCursorIsHyperlink) { + return; + } + myCursorIsHyperlink = hyperlink; + if (hyperlink) { + myStoredCursor = cursor(); + setCursor(Qt::PointingHandCursor); + } else { + setCursor(myStoredCursor); + } +} + +void ZLQtApplicationWindow::setFocusToMainWidget() { + centralWidget()->setFocus(); +} diff --git a/.pc/0002-Qt5.patch/zlibrary/ui/src/qt4/application/ZLQtApplicationWindow.h b/.pc/0002-Qt5.patch/zlibrary/ui/src/qt4/application/ZLQtApplicationWindow.h new file mode 100644 index 0000000..3b4fd3a --- /dev/null +++ b/.pc/0002-Qt5.patch/zlibrary/ui/src/qt4/application/ZLQtApplicationWindow.h @@ -0,0 +1,141 @@ +/* + * Copyright (C) 2004-2012 Geometer Plus + * + * 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; either version 2 of the License, or + * (at your option) any later version. + * + * 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, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + * 02110-1301, USA. + */ + +#ifndef __ZLQTAPPLICATIONWINDOW_H__ +#define __ZLQTAPPLICATIONWINDOW_H__ + +#include + +#include +#include +#include + +class QDockWidget; +class QToolBar; +class QToolButton; +class QLineEdit; + +class ZLPopupData; + +#include "../../../../core/src/desktop/application/ZLDesktopApplicationWindow.h" + +class ZLQtApplicationWindow : public QMainWindow, public ZLDesktopApplicationWindow { + Q_OBJECT + +public: + ZLQtApplicationWindow(ZLApplication *application); + ~ZLQtApplicationWindow(); + + void setFocusToMainWidget(); + +private: + ZLViewWidget *createViewWidget(); + void addToolbarItem(ZLToolbar::ItemPtr item); + void init(); + void processAllEvents(); + void close(); + + void refresh(); + + void grabAllKeys(bool grab); + + void setCaption(const std::string &caption); + + void setHyperlinkCursor(bool hyperlink); + + bool isFullscreen() const; + void setFullscreen(bool fullscreen); + + void setToggleButtonState(const ZLToolbar::ToggleButtonItem &button); + void setToolbarItemState(ZLToolbar::ItemPtr item, bool visible, bool enabled); + + void closeEvent(QCloseEvent *event); + void keyPressEvent(QKeyEvent *event); + void wheelEvent(QWheelEvent *event); + +private Q_SLOTS: + void onRefresh(); + +private: + QToolBar *myWindowToolBar; + QToolBar *myFullscreenToolBar; + QDockWidget *myDocWidget; + QToolBar *toolbar(ToolbarType type) { return (type == WINDOW_TOOLBAR) ? myWindowToolBar : myFullscreenToolBar; } + +friend class ZLQtToolBarAction; + std::map myActions; + std::map myMenuButtons; + std::map myPopupIdMap; + + bool myFullScreen; + bool myWasMaximized; + + bool myCursorIsHyperlink; + QCursor myStoredCursor; + +private: + class LineEditParameter : public VisualParameter { + + public: + LineEditParameter(QToolBar *toolbar, ZLQtApplicationWindow &window, const ZLToolbar::ParameterItem &textFieldItem); + QAction *action() const; + void restoreOldValue(); + + private: + std::string internalValue() const; + void internalSetValue(const std::string &value); + void setValueList(const std::vector &values) {} + + private: + QLineEdit *myEdit; + QAction *myAction; + }; + +friend class ZLQtLineEdit; +}; + +class ZLQtToolBarAction : public QAction { + Q_OBJECT + +public: + ZLQtToolBarAction(ZLQtApplicationWindow *parent, ZLToolbar::AbstractButtonItem &item); + +private Q_SLOTS: + void onActivated(); + +private: + ZLToolbar::AbstractButtonItem &myItem; +}; + +class ZLQtRunPopupAction : public QAction { + Q_OBJECT + +public: + ZLQtRunPopupAction(QObject *parent, shared_ptr data, size_t index); + ~ZLQtRunPopupAction(); + +private Q_SLOTS: + void onActivated(); + +private: + shared_ptr myData; + const size_t myIndex; +}; + +#endif /* __ZLQTAPPLICATIONWINDOW_H__ */ diff --git a/.pc/0002-Qt5.patch/zlibrary/ui/src/qt4/dialogs/ZLQtDialog.cpp b/.pc/0002-Qt5.patch/zlibrary/ui/src/qt4/dialogs/ZLQtDialog.cpp new file mode 100644 index 0000000..24eb897 --- /dev/null +++ b/.pc/0002-Qt5.patch/zlibrary/ui/src/qt4/dialogs/ZLQtDialog.cpp @@ -0,0 +1,56 @@ +/* + * Copyright (C) 2004-2012 Geometer Plus + * + * 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; either version 2 of the License, or + * (at your option) any later version. + * + * 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, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + * 02110-1301, USA. + */ + +#include +#include + +#include + +#include "ZLQtDialog.h" +#include "ZLQtDialogContent.h" +#include "ZLQtUtil.h" + +ZLQtDialog::ZLQtDialog(const ZLResource &resource) : QDialog(qApp->activeWindow()), myButtonNumber(0) { + setModal(true); + setWindowTitle(::qtString(resource[ZLDialogManager::DIALOG_TITLE].value())); + + QVBoxLayout *layout = new QVBoxLayout(this); + QWidget *widget = new QWidget(this); + layout->addWidget(widget); + myTab = new ZLQtDialogContent(widget, resource); + + myButtonGroup = new QWidget(this); + layout->addWidget(myButtonGroup); + myButtonLayout = new QGridLayout(myButtonGroup); +} + +ZLQtDialog::~ZLQtDialog() { +} + +void ZLQtDialog::addButton(const ZLResourceKey &key, bool accept) { + QPushButton *button = new QPushButton(myButtonGroup); + button->setText(::qtButtonName(key)); + myButtonLayout->addWidget(button, 0, myButtonNumber++); + connect(button, SIGNAL(clicked()), this, accept ? SLOT(accept()) : SLOT(reject())); +} + +bool ZLQtDialog::run() { + ((ZLQtDialogContent*)myTab)->close(); + return exec(); +} diff --git a/.pc/0002-Qt5.patch/zlibrary/ui/src/qt4/dialogs/ZLQtDialog.h b/.pc/0002-Qt5.patch/zlibrary/ui/src/qt4/dialogs/ZLQtDialog.h new file mode 100644 index 0000000..068039d --- /dev/null +++ b/.pc/0002-Qt5.patch/zlibrary/ui/src/qt4/dialogs/ZLQtDialog.h @@ -0,0 +1,43 @@ +/* + * Copyright (C) 2004-2012 Geometer Plus + * + * 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; either version 2 of the License, or + * (at your option) any later version. + * + * 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, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + * 02110-1301, USA. + */ + +#ifndef __ZLQTDIALOG_H__ +#define __ZLQTDIALOG_H__ + +#include +#include + +#include + +class ZLQtDialog : public QDialog, public ZLDialog { + +public: + ZLQtDialog(const ZLResource &resource); + ~ZLQtDialog(); + + void addButton(const ZLResourceKey &key, bool accept); + bool run(); + +private: + QGridLayout *myButtonLayout; + QWidget *myButtonGroup; + int myButtonNumber; +}; + +#endif /* __ZLQTDIALOG_H__ */ diff --git a/.pc/0002-Qt5.patch/zlibrary/ui/src/qt4/dialogs/ZLQtDialogContent.cpp b/.pc/0002-Qt5.patch/zlibrary/ui/src/qt4/dialogs/ZLQtDialogContent.cpp new file mode 100644 index 0000000..e8ff422 --- /dev/null +++ b/.pc/0002-Qt5.patch/zlibrary/ui/src/qt4/dialogs/ZLQtDialogContent.cpp @@ -0,0 +1,104 @@ +/* + * Copyright (C) 2004-2012 Geometer Plus + * + * 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; either version 2 of the License, or + * (at your option) any later version. + * + * 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, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + * 02110-1301, USA. + */ + +#include +#include +#include +#include + +#include "ZLQtDialogContent.h" +#include "ZLQtOptionView.h" + +void ZLQtDialogContent::close() { + myLayout->setRowStretch(myRowCounter, 10); +} + +ZLQtDialogContent::ZLQtDialogContent(QWidget *widget, const ZLResource &resource) : ZLDialogContent(resource), myWidget(widget) { + myLayout = new QGridLayout(myWidget); + myRowCounter = 0; +} + +ZLQtDialogContent::~ZLQtDialogContent() { +} + +void ZLQtDialogContent::addOption(const std::string &name, const std::string &tooltip, ZLOptionEntry *option) { + createViewByEntry(name, tooltip, option, 0, 12); + ++myRowCounter; +} + +void ZLQtDialogContent::addOptions(const std::string &name0, const std::string &tooltip0, ZLOptionEntry *option0, const std::string &name1, const std::string &tooltip1, ZLOptionEntry *option1) { + createViewByEntry(name0, tooltip0, option0, 0, 5); + createViewByEntry(name1, tooltip1, option1, 7, 12); + ++myRowCounter; +} + +void ZLQtDialogContent::addItem(QWidget *widget, int row, int fromColumn, int toColumn) { + myLayout->addWidget(widget, row, fromColumn, 1, toColumn - fromColumn + 1); +} + +void ZLQtDialogContent::createViewByEntry(const std::string &name, const std::string &tooltip, ZLOptionEntry *option, int fromColumn, int toColumn) { + if (option == 0) { + return; + } + ZLQtOptionView *view = 0; + switch (option->kind()) { + case ZLOptionEntry::BOOLEAN: + view = new BooleanOptionView(name, tooltip, (ZLBooleanOptionEntry*)option, this, myRowCounter, fromColumn, toColumn); + break; + case ZLOptionEntry::BOOLEAN3: + view = new Boolean3OptionView(name, tooltip, (ZLBoolean3OptionEntry*)option, this, myRowCounter, fromColumn, toColumn); + break; + case ZLOptionEntry::STRING: + view = new StringOptionView(name, tooltip, (ZLStringOptionEntry*)option, this, false, myRowCounter, fromColumn, toColumn); + break; + case ZLOptionEntry::PASSWORD: + view = new StringOptionView(name, tooltip, (ZLStringOptionEntry*)option, this, true, myRowCounter, fromColumn, toColumn); + break; + case ZLOptionEntry::CHOICE: + view = new ChoiceOptionView(name, tooltip, (ZLChoiceOptionEntry*)option, this, myRowCounter, fromColumn, toColumn); + break; + case ZLOptionEntry::SPIN: + view = new SpinOptionView(name, tooltip, (ZLSpinOptionEntry*)option, this, myRowCounter, fromColumn, toColumn); + break; + case ZLOptionEntry::COMBO: + view = new ComboOptionView(name, tooltip, (ZLComboOptionEntry*)option, this, myRowCounter, fromColumn, toColumn); + break; + case ZLOptionEntry::COLOR: + view = new ColorOptionView(name, tooltip, (ZLColorOptionEntry*)option, this, myRowCounter, fromColumn, toColumn); + break; + case ZLOptionEntry::KEY: + view = new KeyOptionView(name, tooltip, (ZLKeyOptionEntry*)option, this, myRowCounter, fromColumn, toColumn); + break; + case ZLOptionEntry::ORDER: + //view = new OrderOptionView(name, tooltip, (ZLOrderOptionEntry*)option, this, myRowCounter, fromColumn, toColumn); + break; + case ZLOptionEntry::STATIC: + view = new StaticTextOptionView(name, tooltip, (ZLStaticTextOptionEntry*)option, this, myRowCounter, fromColumn, toColumn); + break; + } + + if (view != 0) { + view->setVisible(option->isVisible()); + addView(view); + } +} + +QWidget *ZLQtDialogContent::widget() { + return myWidget; +} diff --git a/.pc/0002-Qt5.patch/zlibrary/ui/src/qt4/dialogs/ZLQtDialogManager.cpp b/.pc/0002-Qt5.patch/zlibrary/ui/src/qt4/dialogs/ZLQtDialogManager.cpp new file mode 100644 index 0000000..d5eb4d4 --- /dev/null +++ b/.pc/0002-Qt5.patch/zlibrary/ui/src/qt4/dialogs/ZLQtDialogManager.cpp @@ -0,0 +1,109 @@ +/* + * Copyright (C) 2004-2012 Geometer Plus + * + * 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; either version 2 of the License, or + * (at your option) any later version. + * + * 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, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + * 02110-1301, USA. + */ + +#include +#include +#include +#include +#include + +#include "ZLQtDialogManager.h" +#include "ZLQtDialog.h" +#include "ZLQtOptionsDialog.h" +#include "ZLQtOpenFileDialog.h" +#include "ZLQtDialogContent.h" +#include "ZLQtProgressDialog.h" +#include "ZLQtTreeDialog.h" +#include "ZLQtUtil.h" + +#include "../image/ZLQtImageManager.h" + +shared_ptr ZLQtDialogManager::createDialog(const ZLResourceKey &key) const { + myStoredWindow = qApp->activeWindow(); + return new ZLQtDialog(resource()[key]); +} + +shared_ptr ZLQtDialogManager::createOptionsDialog(const ZLResourceKey &key, shared_ptr applyAction, bool showApplyButton) const { + myStoredWindow = qApp->activeWindow(); + return new ZLQtOptionsDialog(resource()[key], applyAction, showApplyButton); +} + +shared_ptr ZLQtDialogManager::createOpenFileDialog(const ZLResourceKey &key, const std::string &directoryPath, const std::string &filePath, const ZLOpenFileDialog::Filter &filter) const { + return new ZLQtOpenFileDialog(dialogTitle(key), directoryPath, filePath, filter); +} + +shared_ptr ZLQtDialogManager::createTreeDialog(const ZLResource &resource) const { + return new ZLQtTreeDialog(resource, myApplicationWindow); +} + +void ZLQtDialogManager::informationBox(const std::string &title, const std::string &message) const { + QWidget *parent = qApp->activeWindow(); + if (parent == 0) { + parent = myStoredWindow; + } + QMessageBox::information(parent, ::qtString(title), ::qtString(message), ::qtButtonName(OK_BUTTON)); +} + +void ZLQtDialogManager::errorBox(const ZLResourceKey &key, const std::string &message) const { + QWidget *parent = qApp->activeWindow(); + if (parent == 0) { + parent = myStoredWindow; + } + QMessageBox::critical(parent, ::qtString(dialogTitle(key)), ::qtString(message), ::qtButtonName(OK_BUTTON)); +} + +int ZLQtDialogManager::questionBox(const ZLResourceKey &key, const std::string &message, const ZLResourceKey &button0, const ZLResourceKey &button1, const ZLResourceKey &button2) const { + QWidget *parent = qApp->activeWindow(); + if (parent == 0) { + parent = myStoredWindow; + } + return QMessageBox::question(parent, ::qtString(dialogTitle(key)), ::qtString(message), ::qtButtonName(button0), ::qtButtonName(button1), ::qtButtonName(button2)); +} + +shared_ptr ZLQtDialogManager::createProgressDialog(const ZLResourceKey &key, bool network) const { + return new ZLQtProgressDialog(key, network); +} + +bool ZLQtDialogManager::isClipboardSupported(ClipboardType type) const { + return true; +} + +void ZLQtDialogManager::setClipboardText(const std::string &text, ClipboardType type) const { + if (!text.empty()) { + qApp->clipboard()->setText( + ::qtString(text), + (type == CLIPBOARD_MAIN) ? QClipboard::Clipboard : QClipboard::Selection + ); + } +} + +void ZLQtDialogManager::setClipboardImage(const ZLImageData &imageData, ClipboardType type) const { + qApp->clipboard()->setImage( + *((ZLQtImageData&)imageData).image(), + (type == CLIPBOARD_MAIN) ? QClipboard::Clipboard : QClipboard::Selection + ); +} + +QWidget *ZLQtDialogManager::getApplicationWindow() const { + return myApplicationWindow; +} + +void ZLQtDialogManager::notifyApplicationWindowDeleted() { + myApplicationWindow = 0; +} diff --git a/.pc/0002-Qt5.patch/zlibrary/ui/src/qt4/dialogs/ZLQtOpenFileDialog.cpp b/.pc/0002-Qt5.patch/zlibrary/ui/src/qt4/dialogs/ZLQtOpenFileDialog.cpp new file mode 100644 index 0000000..ec9e73c --- /dev/null +++ b/.pc/0002-Qt5.patch/zlibrary/ui/src/qt4/dialogs/ZLQtOpenFileDialog.cpp @@ -0,0 +1,70 @@ +/* + * Copyright (C) 2010-2012 Geometer Plus + * + * 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; either version 2 of the License, or + * (at your option) any later version. + * + * 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, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + * 02110-1301, USA. + */ + +#include + +#include "ZLQtOpenFileDialog.h" + +ZLQtOpenFileDialog::ZLQtOpenFileDialog(const std::string &title, const std::string &directoryPath, const std::string &filePath, const Filter &filter) { + myDialog = new QFileDialog(); + myDialog->setWindowTitle(QString::fromUtf8(title.c_str())); + myDialog->setDirectory(QString::fromUtf8(directoryPath.c_str())); + myDialog->selectFile(QString::fromUtf8(filePath.c_str())); +} + +ZLQtOpenFileDialog::~ZLQtOpenFileDialog() { + delete myDialog; +} + +bool ZLQtOpenFileDialog::runInternal() { + return myDialog->exec(); +} + +std::string ZLQtOpenFileDialog::filePath() const { + QStringList paths = myDialog->selectedFiles(); + return paths.size() > 0 ? (const char*)paths[0].toUtf8() : std::string(); +} + +std::string ZLQtOpenFileDialog::directoryPath() const { + return (const char*)myDialog->directory().absolutePath().toUtf8(); +} + +void ZLQtOpenFileDialog::setPosition(int x, int y) { + myDialog->move(x, y); +} + +void ZLQtOpenFileDialog::setSize(int width, int height) { + myDialog->resize(width, height); +} + +int ZLQtOpenFileDialog::x() const { + return myDialog->x(); +} + +int ZLQtOpenFileDialog::y() const { + return myDialog->y(); +} + +int ZLQtOpenFileDialog::width() const { + return myDialog->width(); +} + +int ZLQtOpenFileDialog::height() const { + return myDialog->height(); +} diff --git a/.pc/0002-Qt5.patch/zlibrary/ui/src/qt4/dialogs/ZLQtOptionView.cpp b/.pc/0002-Qt5.patch/zlibrary/ui/src/qt4/dialogs/ZLQtOptionView.cpp new file mode 100644 index 0000000..48a1b8f --- /dev/null +++ b/.pc/0002-Qt5.patch/zlibrary/ui/src/qt4/dialogs/ZLQtOptionView.cpp @@ -0,0 +1,462 @@ +/* + * Copyright (C) 2004-2012 Geometer Plus + * + * 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; either version 2 of the License, or + * (at your option) any later version. + * + * 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, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + * 02110-1301, USA. + */ + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include "../util/ZLQtKeyUtil.h" + +#include "ZLQtOptionView.h" +#include "ZLQtDialogContent.h" +#include "ZLQtUtil.h" + +void ZLQtOptionView::_show() { + for (std::vector::iterator it = myWidgets.begin(); it != myWidgets.end(); ++it) { + (*it)->show(); + } +} + +void ZLQtOptionView::_hide() { + for (std::vector::iterator it = myWidgets.begin(); it != myWidgets.end(); ++it) { + (*it)->hide(); + } +} + +void BooleanOptionView::_createItem() { + myCheckBox = new QCheckBox(::qtString(ZLOptionView::name()), myTab->widget()); + myCheckBox->setChecked(((ZLBooleanOptionEntry&)*myOption).initialState()); + myWidgets.push_back(myCheckBox); + myTab->addItem(myCheckBox, myRow, myFromColumn, myToColumn); + connect(myCheckBox, SIGNAL(toggled(bool)), this, SLOT(onStateChanged(bool))); +} + +void BooleanOptionView::_setActive(bool active) { + myCheckBox->setEnabled(active); +} + +void BooleanOptionView::_onAccept() const { + ((ZLBooleanOptionEntry&)*myOption).onAccept(myCheckBox->isChecked()); +} + +void BooleanOptionView::onStateChanged(bool state) const { + ((ZLBooleanOptionEntry&)*myOption).onStateChanged(state); +} + +void Boolean3OptionView::_createItem() { + myCheckBox = new QCheckBox(::qtString(ZLOptionView::name()), myTab->widget()); + myCheckBox->setTristate(true); + Qt::CheckState state = Qt::PartiallyChecked; + switch (((ZLBoolean3OptionEntry&)*myOption).initialState()) { + case B3_FALSE: + state = Qt::Unchecked; + break; + case B3_TRUE: + state = Qt::Checked; + break; + case B3_UNDEFINED: + state = Qt::PartiallyChecked; + break; + } + myCheckBox->setCheckState(state); + myWidgets.push_back(myCheckBox); + myTab->addItem(myCheckBox, myRow, myFromColumn, myToColumn); + connect(myCheckBox, SIGNAL(stateChanged(int)), this, SLOT(onStateChanged(int))); +} + +void Boolean3OptionView::_setActive(bool active) { + myCheckBox->setEnabled(active); +} + +void Boolean3OptionView::_onAccept() const { + ZLBoolean3 value = B3_UNDEFINED; + switch (myCheckBox->checkState()) { + case Qt::Checked: + value = B3_TRUE; + break; + case Qt::Unchecked: + value = B3_FALSE; + break; + case Qt::PartiallyChecked: + value = B3_UNDEFINED; + break; + } + ((ZLBoolean3OptionEntry&)*myOption).onAccept(value); +} + +void Boolean3OptionView::onStateChanged(int state) const { + ZLBoolean3 value = B3_UNDEFINED; + switch (state) { + case Qt::Checked: + value = B3_TRUE; + break; + case Qt::Unchecked: + value = B3_FALSE; + break; + case Qt::PartiallyChecked: + value = B3_UNDEFINED; + break; + } + ((ZLBoolean3OptionEntry&)*myOption).onStateChanged(value); +} + +void ChoiceOptionView::_createItem() { + myGroupBox = new QGroupBox(::qtString(ZLOptionView::name())); + myWidgets.push_back(myGroupBox); + QVBoxLayout *layout = new QVBoxLayout(myGroupBox); + myButtons = new QRadioButton*[((ZLChoiceOptionEntry&)*myOption).choiceNumber()]; + for (int i = 0; i < ((ZLChoiceOptionEntry&)*myOption).choiceNumber(); ++i) { + myButtons[i] = new QRadioButton(myGroupBox); + myButtons[i]->setText(::qtString(((ZLChoiceOptionEntry&)*myOption).text(i))); + layout->addWidget(myButtons[i]); + } + myButtons[((ZLChoiceOptionEntry&)*myOption).initialCheckedIndex()]->setChecked(true); + myTab->addItem(myGroupBox, myRow, myFromColumn, myToColumn); +} + +void ChoiceOptionView::_setActive(bool active) { + myGroupBox->setEnabled(active); +} + +void ChoiceOptionView::_onAccept() const { + for (int i = 0; i < ((ZLChoiceOptionEntry&)*myOption).choiceNumber(); ++i) { + if (myButtons[i]->isChecked()) { + ((ZLChoiceOptionEntry&)*myOption).onAccept(i); + return; + } + } +} + +void ComboOptionView::_createItem() { + const ZLComboOptionEntry &comboOption = (ZLComboOptionEntry&)*myOption; + QLabel *label = 0; + const std::string &name = ZLOptionView::name(); + if (!name.empty()) { + label = new QLabel(::qtString(name), myTab->widget()); + } + myComboBox = new QComboBox(myTab->widget()); + myComboBox->setEditable(comboOption.isEditable()); + + if (label != 0) { + myWidgets.push_back(label); + } + myWidgets.push_back(myComboBox); + + connect(myComboBox, SIGNAL(activated(int)), this, SLOT(onValueSelected(int))); + connect(myComboBox, SIGNAL(editTextChanged(const QString&)), this, SLOT(onValueEdited(const QString&))); + + if (label != 0) { + int width = myToColumn - myFromColumn + 1; + myTab->addItem(label, myRow, myFromColumn, myFromColumn + width / 2 - 1); + myTab->addItem(myComboBox, myRow, myFromColumn + width / 2, myToColumn); + } else { + myTab->addItem(myComboBox, myRow, myFromColumn, myToColumn); + } + + reset(); +} + +void ComboOptionView::reset() { + if (myComboBox == 0) { + return; + } + + const int count = myComboBox->count(); + for (int i = 0; i < count; ++i) { + myComboBox->removeItem(0); + } + + const ZLComboOptionEntry &comboOption = (ZLComboOptionEntry&)*myOption; + const std::vector &values = comboOption.values(); + const std::string &initial = comboOption.initialValue(); + int selectedIndex = -1; + int index = 0; + for (std::vector::const_iterator it = values.begin(); it != values.end(); ++it, ++index) { + myComboBox->insertItem(it - values.begin(), ::qtString(*it)); + if (*it == initial) { + selectedIndex = index; + } + } + if (selectedIndex >= 0) { + myComboBox->setCurrentIndex(selectedIndex); + } +} + +void ComboOptionView::_setActive(bool active) { + myComboBox->setEnabled(active); +} + +void ComboOptionView::_onAccept() const { + ((ZLComboOptionEntry&)*myOption).onAccept((const char*)myComboBox->currentText().toUtf8()); +} + +void ComboOptionView::onValueSelected(int index) { + ZLComboOptionEntry &o = (ZLComboOptionEntry&)*myOption; + if ((index >= 0) && (index < (int)o.values().size())) { + o.onValueSelected(index); + } +} + +void ComboOptionView::onValueEdited(const QString &value) { + ZLComboOptionEntry &o = (ZLComboOptionEntry&)*myOption; + if (o.useOnValueEdited()) { + o.onValueEdited((const char*)value.toUtf8()); + } +} + +void SpinOptionView::_createItem() { + ZLSpinOptionEntry &entry = (ZLSpinOptionEntry&)*myOption; + QLabel *label = new QLabel(::qtString(ZLOptionView::name()), myTab->widget()); + mySpinBox = new QSpinBox(myTab->widget()); + + myWidgets.push_back(label); + myWidgets.push_back(mySpinBox); + + mySpinBox->setMinimum(entry.minValue()); + mySpinBox->setMaximum(entry.maxValue()); + mySpinBox->setSingleStep(entry.step()); + mySpinBox->setValue(entry.initialValue()); + int width = myToColumn - myFromColumn + 1; + myTab->addItem(label, myRow, myFromColumn, myFromColumn + width / 2 - 1); + myTab->addItem(mySpinBox, myRow, myFromColumn + width / 2, myToColumn); +} + +void SpinOptionView::_onAccept() const { + ((ZLSpinOptionEntry&)*myOption).onAccept(mySpinBox->value()); +} + +void StringOptionView::_createItem() { + myLineEdit = new QLineEdit(myTab->widget()); + myLineEdit->setEchoMode(myPasswordMode ? QLineEdit::Password : QLineEdit::Normal); + myWidgets.push_back(myLineEdit); + connect(myLineEdit, SIGNAL(textChanged(const QString&)), this, SLOT(onValueEdited(const QString&))); + if (!ZLOptionView::name().empty()) { + QLabel *label = new QLabel(::qtString(ZLOptionView::name()), myTab->widget()); + myWidgets.push_back(label); + int width = myToColumn - myFromColumn + 1; + myTab->addItem(label, myRow, myFromColumn, myFromColumn + width / 2 - 1); + myTab->addItem(myLineEdit, myRow, myFromColumn + width / 2, myToColumn); + } else { + myTab->addItem(myLineEdit, myRow, myFromColumn, myToColumn); + } + reset(); +} + +void StringOptionView::_setActive(bool active) { + myLineEdit->setReadOnly(!active); +} + +void StringOptionView::_onAccept() const { + ((ZLStringOptionEntry&)*myOption).onAccept((const char*)myLineEdit->text().toUtf8()); +} + +void StringOptionView::reset() { + if (myLineEdit == 0) { + return; + } + myLineEdit->setText(::qtString(((ZLStringOptionEntry&)*myOption).initialValue())); + myLineEdit->cursorForward(false, -myLineEdit->text().length()); +} + +void StringOptionView::onValueEdited(const QString &value) { + ZLStringOptionEntry &o = (ZLStringOptionEntry&)*myOption; + if (o.useOnValueEdited()) { + o.onValueEdited((const char*)value.toUtf8()); + } +} + +class KeyLineEdit : public QLineEdit { + +public: + KeyLineEdit(KeyOptionView &keyView, QWidget *parent); + +protected: + void focusInEvent(QFocusEvent*); + void focusOutEvent(QFocusEvent*); + void keyPressEvent(QKeyEvent *keyEvent); + +private: + KeyOptionView &myKeyView; +}; + +KeyLineEdit::KeyLineEdit(KeyOptionView &keyView, QWidget *parent) : QLineEdit(parent), myKeyView(keyView) { + focusOutEvent(0); +} + +void KeyLineEdit::keyPressEvent(QKeyEvent *keyEvent) { + std::string keyText = ZLQtKeyUtil::keyName(keyEvent); + setText(keyText.c_str()); + if (!keyText.empty()) { + myKeyView.myCurrentKey = keyText; + myKeyView.myComboBox->setCurrentIndex(((ZLKeyOptionEntry&)*myKeyView.myOption).actionIndex(keyText)); + myKeyView.myComboBox->show(); + } + ((ZLKeyOptionEntry&)*myKeyView.myOption).onKeySelected(keyText); +} + +void KeyLineEdit::focusInEvent(QFocusEvent*) { + grabKeyboard(); +} + +void KeyLineEdit::focusOutEvent(QFocusEvent*) { + releaseKeyboard(); +} + +void KeyOptionView::_createItem() { + QWidget *widget = new QWidget(myTab->widget()); + QGridLayout *layout = new QGridLayout(widget); + + QLabel *label = new QLabel(widget); + label->setText(::qtString(ZLResource::resource("keyOptionView")["actionFor"].value())); + layout->addWidget(label, 0, 0); + + myKeyEditor = new KeyLineEdit(*this, widget); + layout->addWidget(myKeyEditor, 0, 1); + + myWidgets.push_back(widget); + myWidgets.push_back(label); + myWidgets.push_back(myKeyEditor); + + myComboBox = new QComboBox(widget); + const std::vector &actions = ((ZLKeyOptionEntry&)*myOption).actionNames(); + for (std::vector::const_iterator it = actions.begin(); it != actions.end(); ++it) { + myComboBox->insertItem(it - actions.begin(), ::qtString(*it)); + } + connect(myComboBox, SIGNAL(activated(int)), this, SLOT(onValueChanged(int))); + layout->addWidget(myComboBox, 1, 0, 1, 2); + myTab->addItem(widget, myRow, myFromColumn, myToColumn); +} + +void KeyOptionView::reset() { + if (myKeyEditor == 0) { + return; + } + myCurrentKey.erase(); + myKeyEditor->setText(""); + ((ZLKeyOptionEntry&)*myOption).onKeySelected(myCurrentKey); + myComboBox->hide(); +} + +void KeyOptionView::_show() { + ZLQtOptionView::_show(); + if (!myCurrentKey.empty()) { + myComboBox->show(); + } else { + myComboBox->hide(); + } +} + +void KeyOptionView::_hide() { + ZLQtOptionView::_hide(); + myComboBox->hide(); + myCurrentKey.erase(); + myKeyEditor->setText(""); + ((ZLKeyOptionEntry&)*myOption).onKeySelected(myCurrentKey); +} + +void KeyOptionView::_onAccept() const { + ((ZLKeyOptionEntry&)*myOption).onAccept(); +} + +void KeyOptionView::onValueChanged(int index) { + if (!myCurrentKey.empty()) { + ((ZLKeyOptionEntry&)*myOption).onValueChanged(myCurrentKey, index); + } +} + +QSlider *ColorOptionView::createColorSlider(QGridLayout *layout, int index, const ZLResource &resource, int value) { + layout->addWidget(new QLabel(::qtString(resource.value()), layout->parentWidget()), index, 0); + QSlider *slider = new QSlider(Qt::Horizontal, layout->parentWidget()); + layout->addWidget(slider, index, 1); + slider->setMinimum(0); + slider->setMaximum(255); + slider->setSingleStep(5); + slider->setTracking(true); + slider->setValue(value); + connect(slider, SIGNAL(sliderMoved(int)), this, SLOT(onSliderMove(int))); + return slider; +} + +void ColorOptionView::_createItem() { + QWidget *widget = new QWidget(myTab->widget()); + myWidgets.push_back(widget); + QGridLayout *layout = new QGridLayout(widget); + const ZLColor &color = ((ZLColorOptionEntry&)*myOption).color(); + const ZLResource &resource = ZLResource::resource(ZLDialogManager::COLOR_KEY); + myRSlider = createColorSlider(layout, 0, resource["red"], color.Red); + myGSlider = createColorSlider(layout, 1, resource["green"], color.Green); + myBSlider = createColorSlider(layout, 2, resource["blue"], color.Blue); + + myColorBar = new QLabel(" ", widget); + QPalette palette = myColorBar->palette(); + palette.setColor(myColorBar->backgroundRole(), QColor(color.Red, color.Green, color.Blue)); + myColorBar->setPalette(palette); + myColorBar->setFrameStyle(QFrame::Panel | QFrame::Plain); + layout->addWidget(myColorBar, 0, 2, 3, 1); + myColorBar->setAutoFillBackground(true); + + myTab->addItem(widget, myRow, myFromColumn, myToColumn); +} + +void ColorOptionView::reset() { + if (myColorBar == 0) { + return; + } + ZLColorOptionEntry &colorEntry = (ZLColorOptionEntry&)*myOption; + colorEntry.onReset(ZLColor(myRSlider->value(), myGSlider->value(), myBSlider->value())); + const ZLColor &color = colorEntry.color(); + myRSlider->setValue(color.Red); + myGSlider->setValue(color.Green); + myBSlider->setValue(color.Blue); + QPalette palette = myColorBar->palette(); + palette.setColor(myColorBar->backgroundRole(), QColor(color.Red, color.Green, color.Blue)); + myColorBar->setPalette(palette); +} + +void ColorOptionView::onSliderMove(int) { + QPalette palette = myColorBar->palette(); + palette.setColor(myColorBar->backgroundRole(), QColor(myRSlider->value(), myGSlider->value(), myBSlider->value())); + myColorBar->setPalette(palette); +} + +void ColorOptionView::_onAccept() const { + ((ZLColorOptionEntry&)*myOption).onAccept(ZLColor(myRSlider->value(), myGSlider->value(), myBSlider->value())); +} + +void StaticTextOptionView::_createItem() { + const std::string &text = ((ZLStaticTextOptionEntry&)*myOption).initialValue(); + QLabel *label = new QLabel(::qtString(text), myTab->widget()); + myWidgets.push_back(label); + myTab->addItem(label, myRow, myFromColumn, myToColumn); +} + +void StaticTextOptionView::_onAccept() const { +} + diff --git a/.pc/0002-Qt5.patch/zlibrary/ui/src/qt4/dialogs/ZLQtOptionsDialog.cpp b/.pc/0002-Qt5.patch/zlibrary/ui/src/qt4/dialogs/ZLQtOptionsDialog.cpp new file mode 100644 index 0000000..f6c36fb --- /dev/null +++ b/.pc/0002-Qt5.patch/zlibrary/ui/src/qt4/dialogs/ZLQtOptionsDialog.cpp @@ -0,0 +1,100 @@ +/* + * Copyright (C) 2004-2012 Geometer Plus + * + * 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; either version 2 of the License, or + * (at your option) any later version. + * + * 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, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + * 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include + +#include + +#include "ZLQtOptionsDialog.h" +#include "ZLQtDialogContent.h" +#include "ZLQtUtil.h" + +ZLQtOptionsDialog::ZLQtOptionsDialog(const ZLResource &resource, shared_ptr applyAction, bool showApplyButton) : QDialog(qApp->activeWindow()), ZLDesktopOptionsDialog(resource, applyAction) { + setModal(true); + setWindowTitle(::qtString(caption())); + QVBoxLayout *layout = new QVBoxLayout(this); + + myTabWidget = new QTabWidget(this); + layout->addWidget(myTabWidget); + + QWidget *group = new QWidget(this); + layout->addWidget(group); + QGridLayout *buttonLayout = new QGridLayout(group); + buttonLayout->setColumnStretch(0, 3); + + QPushButton *okButton = new QPushButton(group); + okButton->setText(::qtButtonName(ZLDialogManager::OK_BUTTON)); + buttonLayout->addWidget(okButton, 0, 1); + connect(okButton, SIGNAL(clicked()), this, SLOT(accept())); + + QPushButton *cancelButton = new QPushButton(group); + cancelButton->setText(::qtButtonName(ZLDialogManager::CANCEL_BUTTON)); + buttonLayout->addWidget(cancelButton, 0, 2); + connect(cancelButton, SIGNAL(clicked()), this, SLOT(reject())); + + if (showApplyButton) { + QPushButton *applyButton = new QPushButton(group); + applyButton->setText(::qtButtonName(ZLDialogManager::APPLY_BUTTON)); + buttonLayout->addWidget(applyButton, 0, 3); + connect(applyButton, SIGNAL(clicked()), this, SLOT(apply())); + } + + if (parent() == 0) { + QDesktopWidget *desktop = qApp->desktop(); + if (desktop != 0) { + move((desktop->width() - width()) / 2, (desktop->height() - height()) / 2); + } + } +} + +void ZLQtOptionsDialog::apply() { + ZLOptionsDialog::accept(); +} + +ZLDialogContent &ZLQtOptionsDialog::createTab(const ZLResourceKey &key) { + ZLQtDialogContent *tab = new ZLQtDialogContent(new QWidget(myTabWidget), tabResource(key)); + myTabWidget->addTab(tab->widget(), ::qtString(tab->displayName())); + myTabs.push_back(tab); + return *tab; +} + +const std::string &ZLQtOptionsDialog::selectedTabKey() const { + return myTabs[myTabWidget->currentIndex()]->key(); +} + +void ZLQtOptionsDialog::selectTab(const ZLResourceKey &key) { + for (std::vector >::const_iterator it = myTabs.begin(); it != myTabs.end(); ++it) { + if ((*it)->key() == key.Name) { + myTabWidget->setCurrentWidget(((ZLQtDialogContent&)**it).widget()); + break; + } + } +} + +bool ZLQtOptionsDialog::runInternal() { + for (std::vector >::iterator it = myTabs.begin(); it != myTabs.end(); ++it) { + ((ZLQtDialogContent&)**it).close(); + } + return exec() == QDialog::Accepted; +} diff --git a/.pc/0002-Qt5.patch/zlibrary/ui/src/qt4/dialogs/ZLQtOptionsDialog.h b/.pc/0002-Qt5.patch/zlibrary/ui/src/qt4/dialogs/ZLQtOptionsDialog.h new file mode 100644 index 0000000..e38b62a --- /dev/null +++ b/.pc/0002-Qt5.patch/zlibrary/ui/src/qt4/dialogs/ZLQtOptionsDialog.h @@ -0,0 +1,52 @@ +/* + * Copyright (C) 2004-2012 Geometer Plus + * + * 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; either version 2 of the License, or + * (at your option) any later version. + * + * 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, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + * 02110-1301, USA. + */ + +#ifndef __ZLQTOPTIONSDIALOG_H__ +#define __ZLQTOPTIONSDIALOG_H__ + +#include +#include +#include + +#include "../../../../core/src/desktop/dialogs/ZLDesktopOptionsDialog.h" + +class ZLQtOptionsDialog : public QDialog, public ZLDesktopOptionsDialog { + Q_OBJECT + +public: + ZLQtOptionsDialog(const ZLResource &resource, shared_ptr applyAction, bool showApplyButton); + ZLDialogContent &createTab(const ZLResourceKey &key); + +protected: + const std::string &selectedTabKey() const; + void selectTab(const ZLResourceKey &key); + bool runInternal(); + + void setSize(int width, int height) { QDialog::resize(width, height); } + int width() const { return QDialog::width(); } + int height() const { return QDialog::height(); } + +private Q_SLOTS: + void apply(); + +private: + QTabWidget *myTabWidget; +}; + +#endif /* __ZLQTOPTIONSDIALOG_H__ */ diff --git a/.pc/0002-Qt5.patch/zlibrary/ui/src/qt4/dialogs/ZLQtProgressDialog.cpp b/.pc/0002-Qt5.patch/zlibrary/ui/src/qt4/dialogs/ZLQtProgressDialog.cpp new file mode 100644 index 0000000..98e469e --- /dev/null +++ b/.pc/0002-Qt5.patch/zlibrary/ui/src/qt4/dialogs/ZLQtProgressDialog.cpp @@ -0,0 +1,98 @@ +/* + * Copyright (C) 2004-2012 Geometer Plus + * + * 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; either version 2 of the License, or + * (at your option) any later version. + * + * 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, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + * 02110-1301, USA. + */ + +#include + +#include +#include +#include +#include +#include +#include + +#include "../dialogs/ZLQtDialogManager.h" +#include "ZLQtProgressDialog.h" +#include "ZLQtUtil.h" + +ZLQtProgressDialog::ZLQtProgressDialog(const ZLResourceKey &key, bool network) : ZLProgressDialog(key), myIsNetworkRunnable(network), myActiveWindow(0) { +} + +void ZLQtProgressDialog::run(ZLRunnable &runnable) { + myActiveWindow = static_cast(ZLDialogManager::Instance()).getApplicationWindow(); + if (myActiveWindow != 0) { + myActiveWindow->setCursor(Qt::WaitCursor); + } + + ZLQtWaitDialog* dialog = new ZLQtWaitDialog(messageText(), myActiveWindow); + dialog->setCursor(Qt::WaitCursor); + + if (myIsNetworkRunnable) { + dialog->show(); + runnable.run(); + dialog->hide(); + } else { + ZLQtRunnableWrapper* wrapper = new ZLQtRunnableWrapper(runnable); + wrapper->setAutoDelete(true); + QObject::connect(wrapper, SIGNAL(finished()), dialog, SLOT(close()), Qt::QueuedConnection); + QThreadPool::globalInstance()->start(wrapper); + dialog->exec(); + } + dialog->deleteLater(); + restoreCursor(); +} + +void ZLQtProgressDialog::restoreCursor() { + if (myActiveWindow != 0) { + myActiveWindow->setCursor(Qt::ArrowCursor); + } +} + + +void ZLQtProgressDialog::setMessage(const std::string &message) { + //qDebug() << QString::fromStdString(message); + //TODO implement +} + +ZLQtWaitDialog::ZLQtWaitDialog(const std::string &message, QWidget* parent) : QDialog(parent) { + setWindowFlags((windowFlags() | Qt::CustomizeWindowHint) ^ Qt::WindowCloseButtonHint); //hide close button + myLayout = new QVBoxLayout; + + myLabel = new QLabel(::qtString(message)); + myLabel->setAlignment(Qt::AlignHCenter | Qt::AlignVCenter); + myLabel->setWordWrap(true); + + myProgressBar = new QProgressBar; + myProgressBar->setRange(0,0); + //myProgressBar->setFixedWidth( qApp->desktop()->availableGeometry().width()*COEF_PROGRESS_BAR_WIDTH ); + + myLayout->setAlignment(Qt::AlignHCenter | Qt::AlignVCenter); + + myLayout->addWidget(myLabel); + myLayout->addWidget(myProgressBar); + + this->setLayout(myLayout); +} + +ZLQtRunnableWrapper::ZLQtRunnableWrapper(ZLRunnable &runnable) : myRunnable(runnable) { +} + +void ZLQtRunnableWrapper::run() { + myRunnable.run(); + emit finished(); +} diff --git a/.pc/0002-Qt5.patch/zlibrary/ui/src/qt4/dialogs/ZLQtProgressDialog.h b/.pc/0002-Qt5.patch/zlibrary/ui/src/qt4/dialogs/ZLQtProgressDialog.h new file mode 100644 index 0000000..df6c73b --- /dev/null +++ b/.pc/0002-Qt5.patch/zlibrary/ui/src/qt4/dialogs/ZLQtProgressDialog.h @@ -0,0 +1,77 @@ +/* + * Copyright (C) 2004-2012 Geometer Plus + * + * 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; either version 2 of the License, or + * (at your option) any later version. + * + * 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, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + * 02110-1301, USA. + */ + +#ifndef __ZLQTWAITMESSAGE_H__ +#define __ZLQTWAITMESSAGE_H__ + +#include + +#include +#include +#include +#include +#include +#include + +#include + +class QLabel; +class QLayout; + +class ZLQtWaitDialog : public QDialog { + +public: + ZLQtWaitDialog(const std::string &message, QWidget* parent = 0); + +private: + QLayout* myLayout; + QLabel* myLabel; + QProgressBar* myProgressBar; + +friend class ZLQtProgressDialog; +}; + + +class ZLQtProgressDialog : public ZLProgressDialog { + +public: + ZLQtProgressDialog(const ZLResourceKey &key, bool network); + +private: + void run(ZLRunnable &runnable); + void setMessage(const std::string &message); + void restoreCursor(); + +private: + bool myIsNetworkRunnable; + QWidget* myActiveWindow; +}; + +class ZLQtRunnableWrapper : public QObject, public QRunnable { + Q_OBJECT; +public: + ZLQtRunnableWrapper(ZLRunnable& runnable); + void run(); +Q_SIGNALS: + void finished(); +private: + ZLRunnable& myRunnable; +}; + +#endif /* __ZLQTWAITMESSAGE_H__ */ diff --git a/.pc/0002-Qt5.patch/zlibrary/ui/src/qt4/dialogs/ZLQtTreeDialog.cpp b/.pc/0002-Qt5.patch/zlibrary/ui/src/qt4/dialogs/ZLQtTreeDialog.cpp new file mode 100644 index 0000000..65530be --- /dev/null +++ b/.pc/0002-Qt5.patch/zlibrary/ui/src/qt4/dialogs/ZLQtTreeDialog.cpp @@ -0,0 +1,347 @@ +/* + * Copyright (C) 2004-2012 Geometer Plus + * + * 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; either version 2 of the License, or + * (at your option) any later version. + * + * 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, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + * 02110-1301, USA. + */ + +#include + +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#include "../tree/ZLQtItemsListWidget.h" +#include "../tree/ZLQtPreviewWidget.h" + +#include "ZLQtTreeDialog.h" + +static const int DIALOG_WIDTH_HINT = 840; + +ZLQtTreeDialog::ZLQtTreeDialog(const ZLResource &res, QWidget *parent) : + QDialog(parent), ZLTreeDialog(res), myLastClickedNode(0), myLastClickedSearchNode(0) { + setWindowTitle(QString::fromStdString(resource().value())); //TODO maybe user resources by other way + setMinimumSize(400, 260); //minimum sensible size + + myListWidget = new ZLQtItemsListWidget; + myPreviewWidget = new ZLQtPreviewWidget; + myBackButton = new ZLQtIconButton("back_button.png", "back_button_disabled.png"); + myForwardButton = new ZLQtIconButton("forward_button.png", "forward_button_disabled.png"); + mySearchField = new ZLQtSearchField; + + myBackButton->setAutoDefault(false); + myForwardButton->setAutoDefault(false); + + QVBoxLayout *mainLayout = new QVBoxLayout; + QHBoxLayout *panelLayout = new QHBoxLayout; + + QSplitter *splitter = new QSplitter; + splitter->setChildrenCollapsible(false); + splitter->addWidget(myListWidget); + splitter->addWidget(myPreviewWidget); + + const int scrollbarWidth = 30; //myListWidget->verticalScrollBar()->width() * 2; //commented because with Qt::ScrollBarAsNeeded policy the size is too big + splitter->setSizes(QList() << DIALOG_WIDTH_HINT / 2 + scrollbarWidth << DIALOG_WIDTH_HINT / 2 - scrollbarWidth); //50/50 default size + + mainLayout->setSizeConstraint(QLayout::SetMinAndMaxSize); + + panelLayout->setSpacing(0); + panelLayout->addWidget(myBackButton); + panelLayout->addWidget(myForwardButton); + panelLayout->addStretch(); + panelLayout->addWidget(mySearchField); + + mainLayout->addLayout(panelLayout); + mainLayout->addWidget(splitter); + this->setLayout(mainLayout); + + connect(myListWidget, SIGNAL(nodeClicked(ZLQtTreeItem*)), this, SLOT(onNodeClicked(ZLQtTreeItem*))); + connect(myListWidget, SIGNAL(nodeDoubleClicked(ZLQtTreeItem*)), this, SLOT(onNodeDoubleClicked(ZLQtTreeItem*))); + connect(myBackButton, SIGNAL(clicked()), this, SLOT(onBackButton())); + connect(myForwardButton, SIGNAL(clicked()), this, SLOT(onForwardButton())); + connect(mySearchField, SIGNAL(returnPressed()), this, SLOT(onSearchField())); + connect(myListWidget, SIGNAL(wantMoreChildren()), this, SLOT(onMoreChildren())); +} + +void ZLQtTreeDialog::run(ZLTreeNode *rootNode) { + myRootNode = rootNode; + myBackHistory.clear(); + myForwardHistory.clear(); + onExpandRequest(myRootNode); //TODO make generic async loading + show(); + myListWidget->setFocus(); +} + +void ZLQtTreeDialog::onCloseRequest() { + hide(); +} + +QSize ZLQtTreeDialog::sizeHint() const { + return QSize(DIALOG_WIDTH_HINT + myListWidget->verticalScrollBar()->width(), 0); +} + +void ZLQtTreeDialog::resizeEvent(QResizeEvent *event){ + int width = event->size().width(); + int listWidth = width / 3; + int previewWidth = width / 3; + myListWidget->setMinimumWidth(listWidth); + myPreviewWidget->setMinimumWidth(previewWidth); +} + +void ZLQtTreeDialog::onExpandRequest(ZLTreeNode *node) { + myLastClickedNode = node; + node->requestChildren(new ChildrenRequestListener(this, node, false)); +} + +void ZLQtTreeDialog::onMoreChildrenRequest(ZLTreeNode *node) { + //TODO implement the way to not sending new request for more children + //qDebug() << Q_FUNC_INFO << node << node->children().size(); + //TODO don't ask many times + node->requestMoreChildren(new ChildrenRequestListener(this, node, true)); +} + +void ZLQtTreeDialog::onChildrenLoaded(ZLTreeNode *node, bool checkLast, bool successLoaded) { + if (!successLoaded) { + return; + } + if (node->children().empty()) { + return; + } + if (checkLast) { + if (node != myLastClickedNode) { //load just last clicked item + return; + } + } + saveShowParameters(); + myLastClickedNode = 0; //for case if item has been requested for several times + myBackHistory.push(node); + myForwardHistory.clear(); + if (!myBackHistory.empty()) { + myListWidget->fillNodes(myBackHistory.top()); + } + //myListWidget->verticalScrollBar()->setValue(myListWidget->verticalScrollBar()->minimum()); //to the top + setupShowParameters(); + updateAll(); + +} + +void ZLQtTreeDialog::onMoreChildrenLoaded(bool successLoaded) { + if (!successLoaded) { + return; + } + if (!myBackHistory.empty()) { + myListWidget->fillNewNodes(myBackHistory.top()); + } + updateAll(); +} + +void ZLQtTreeDialog::updateAll() { + updateNavigationButtons(); + updateWaitingIcons(); +} + +void ZLQtTreeDialog::updateWaitingIcons() { + foreach(ZLQtTreeItem *item, myListWidget->getItems()) { + ZLTreeNode *node = item->getNode(); + if (myDownloadingNodes.contains(node)) { + item->getWaitingIcon()->start(); + } else { + item->getWaitingIcon()->finish(); + } + } +} + +void ZLQtTreeDialog::onNodeUpdated(ZLTreeNode *node) { + if (!myBackHistory.empty() && myBackHistory.top() == node) { + onMoreChildrenLoaded(true); + return; + } + + foreach(ZLQtTreeItem *item, myListWidget->getItems()) { + if (node == item->getNode()) { + if (ZLTreeTitledNode *titledNode = zlobject_cast(node)) { + item->fill(titledNode); + updateAll(); + break; + } + } + } +} + +void ZLQtTreeDialog::onDownloadingStarted(ZLTreeNode *node) { + myDownloadingNodes.insert(node); + updateWaitingIcons(); +} + +void ZLQtTreeDialog::onDownloadingStopped(ZLTreeNode *node) { + myDownloadingNodes.remove(node); + updateWaitingIcons(); +} + +void ZLQtTreeDialog::onSearchStarted(ZLTreeNode *node) { + //TODO what in case if different searches started or stopped? + myLastClickedSearchNode = node; + mySearchField->getWaitingIcon()->start(); +} + +void ZLQtTreeDialog::onSearchStopped(ZLTreeNode *node) { + if (node == myLastClickedSearchNode) { + myLastClickedSearchNode = 0; + mySearchField->getWaitingIcon()->finish(); + } +} + +void ZLQtTreeDialog::onRefresh() { + myPreviewWidget->refresh(); + //TODO maybe add other refreshes? (list widget, for i.e.) +} + +void ZLQtTreeDialog::updateNavigationButtons() { + myBackButton->setEnabled(myBackHistory.size() > 1); + myForwardButton->setEnabled(!myForwardHistory.empty()); +} + +void ZLQtTreeDialog::saveShowParameters() { + if (myBackHistory.empty()) { + return; + } + ShowParameter parameter; + parameter.sliderPosition = myListWidget->verticalScrollBar()->value(); + parameter.activeItemNumber = -1; + for (int i = 0; i < myListWidget->getItems().size(); ++i) { + if (myListWidget->getItems().at(i)->isActive()) { + parameter.activeItemNumber = i; + break; + } + } + myShowParameters.insert(myBackHistory.top(), parameter); +} + +void ZLQtTreeDialog::setupShowParameters() { + if (myBackHistory.empty()) { + return; + } + if (!myShowParameters.contains(myBackHistory.top())) { + myPreviewWidget->clear(); + return; + } + //TODO implement setting a slider position + ShowParameter parameter = myShowParameters.value(myBackHistory.top()); + if (parameter.activeItemNumber != -1 && myListWidget->getItems().size() > parameter.activeItemNumber) { + myListWidget->onNodeClicked(myListWidget->getItems().at(parameter.activeItemNumber)); + } else { + myPreviewWidget->clear(); + } +} + +void ZLQtTreeDialog::onNodeClicked(ZLQtTreeItem* item) { + ZLTreeNode* node = item->getNode(); + myPreviewWidget->show(node); +} + +void ZLQtTreeDialog::onNodeDoubleClicked(ZLQtTreeItem* item) { + const ZLTreeNode* node = item->getNode(); + if (const ZLTreePageNode *pageNode = zlobject_cast(node)) { + (void)pageNode; + //TODO maybe use different kind of check + //isExpandable method for i.e. + return; + } + onExpandRequest(item->getNode()); +} + +void ZLQtTreeDialog::onBackButton() { + if (myBackHistory.size() <= 1) { + return; + } + saveShowParameters(); + myLastClickedNode = 0; + myForwardHistory.push(myBackHistory.pop()); + myListWidget->fillNodes(myBackHistory.top()); + updateAll(); + setupShowParameters(); +} + +void ZLQtTreeDialog::onForwardButton() { + if (myForwardHistory.empty()) { + return; + } + saveShowParameters(); + myLastClickedNode = 0; + myBackHistory.push(myForwardHistory.pop()); + if (!myBackHistory.empty()) { + myListWidget->fillNodes(myBackHistory.top()); + } + updateAll(); + setupShowParameters(); +} + +void ZLQtTreeDialog::onSearchField() { + if (mySearcher.isNull()) { + return; + } + if (mySearchField->text().isEmpty()) { + return; + } + mySearcher->simpleSearch(mySearchField->text().toStdString()); +} + +void ZLQtTreeDialog::onMoreChildren() { + if (!myBackHistory.empty()) { + onMoreChildrenRequest(myBackHistory.top()); + } +} + +ZLQtTreeDialog::ChildrenRequestListener::ChildrenRequestListener(ZLQtTreeDialog *dialog, ZLTreeNode *node, bool moreMode) : + myTreeDialog(dialog), myNode(node), myMoreMode(moreMode) { +} + +void ZLQtTreeDialog::ChildrenRequestListener::finished(const std::string &error) { + if (!error.empty()) { + //TODO show error message? + } + if (!myMoreMode) { + myTreeDialog->onChildrenLoaded(myNode, true, error.empty()); + } else { + myTreeDialog->onMoreChildrenLoaded(error.empty()); + } + +} + +ZLQtIconButton::ZLQtIconButton(const std::string &iconEnabled, const std::string &iconDisabled, QWidget *parent) : QPushButton(parent) { + static std::string imagePrefix = ZLibrary::ApplicationImageDirectory() + ZLibrary::FileNameDelimiter; + myEnabled = QPixmap(ZLFile(imagePrefix + iconEnabled).path().c_str()); + myDisabled = QPixmap(ZLFile(imagePrefix + iconDisabled).path().c_str()); + setIconSize(myEnabled.size()); + setFixedSize(28, 22); + + //setAttribute is needed to workaround a bug on MacOS with size for QPushButton-derived subclasses + //see https://bugreports.qt-project.org/browse/QTBUG-14591 + setAttribute(Qt::WA_LayoutUsesWidgetRect); +} + +void ZLQtIconButton::setEnabled(bool enabled) { + setIcon(enabled ? myEnabled : myDisabled); + QPushButton::setEnabled(enabled); +} + diff --git a/.pc/0002-Qt5.patch/zlibrary/ui/src/qt4/dialogs/ZLQtTreeDialog.h b/.pc/0002-Qt5.patch/zlibrary/ui/src/qt4/dialogs/ZLQtTreeDialog.h new file mode 100644 index 0000000..9cf7c47 --- /dev/null +++ b/.pc/0002-Qt5.patch/zlibrary/ui/src/qt4/dialogs/ZLQtTreeDialog.h @@ -0,0 +1,143 @@ +/* + * Copyright (C) 2004-2012 Geometer Plus + * + * 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; either version 2 of the License, or + * (at your option) any later version. + * + * 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, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + * 02110-1301, USA. + */ + +#ifndef __ZLQTTREEDIALOG_H__ +#define __ZLQTTREEDIALOG_H__ + +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +#include + +#include "../tree/ZLQtItemsListWidget.h" +#include "../tree/ZLQtPreviewWidget.h" +#include "../tree/ZLQtSearchField.h" + +class ZLQtIconButton; + +class ZLQtTreeDialog : public QDialog, public ZLTreeDialog { + Q_OBJECT +public: + ZLQtTreeDialog(const ZLResource &resource, QWidget *parent = 0); + +public: + void run(ZLTreeNode *rootNode); + +protected: + QSize sizeHint() const; + void resizeEvent(QResizeEvent *event); + +public: //listener methods + void onExpandRequest(ZLTreeNode *node); + void onCloseRequest(); + void onNodeUpdated(ZLTreeNode *node); + + void onDownloadingStarted(ZLTreeNode *node); + void onDownloadingStopped(ZLTreeNode *node); + + void onSearchStarted(ZLTreeNode *node); + void onSearchStopped(ZLTreeNode *node); + + void onRefresh(); + + void onMoreChildrenRequest(ZLTreeNode *node); + +public: + void onChildrenLoaded(ZLTreeNode *node, bool checkLast, bool success); + void onMoreChildrenLoaded(bool success); + +private: + void updateAll(); + void updateWaitingIcons(); + void updateNavigationButtons(); + +private: //TODO maybe these functions can be used as a typical updateAll() + void saveShowParameters(); + void setupShowParameters(); + +private Q_SLOTS: + void onNodeClicked(ZLQtTreeItem* item); + void onNodeDoubleClicked(ZLQtTreeItem* item); + void onBackButton(); + void onForwardButton(); + void onSearchField(); + void onMoreChildren(); + +private: + ZLTreeNode *myRootNode; + +private: + ZLQtIconButton *myBackButton; + ZLQtIconButton *myForwardButton; + ZLQtSearchField *mySearchField; +// QScrollArea *myScrollArea; + ZLQtItemsListWidget *myListWidget; + ZLQtPreviewWidget *myPreviewWidget; + + QStack myBackHistory; + QStack myForwardHistory; + + struct ShowParameter { + int sliderPosition; + int activeItemNumber; + }; + + QMap myShowParameters; + +private: + class ChildrenRequestListener : public ZLNetworkRequest::Listener { + public: + ChildrenRequestListener(ZLQtTreeDialog *dialog, ZLTreeNode *node, bool moreMode); + void finished(const std::string &error); +// const ZLTreeNode *getNode() const; + + private: + ZLQtTreeDialog *myTreeDialog; + ZLTreeNode *myNode; + bool myMoreMode; + }; + +// QList > myListeners; + QSet myDownloadingNodes; + const ZLTreeNode *myLastClickedNode; //used to 'last clicked item shows first after downloading' + const ZLTreeNode *myLastClickedSearchNode; //used to 'last clicked item shows first after downloading' + +friend class ChildrenRequestListener; + +}; + +class ZLQtIconButton : public QPushButton { + +public: + ZLQtIconButton(const std::string &iconEnabled, const std::string &iconDisabled, QWidget *parent = 0); + void setEnabled(bool enabled); +private: + QPixmap myEnabled; + QPixmap myDisabled; +}; + +#endif /* __ZLQTTREEDIALOG_H__ */ diff --git a/.pc/0002-Qt5.patch/zlibrary/ui/src/qt4/library/ZLQApplication.h b/.pc/0002-Qt5.patch/zlibrary/ui/src/qt4/library/ZLQApplication.h new file mode 100644 index 0000000..c08c536 --- /dev/null +++ b/.pc/0002-Qt5.patch/zlibrary/ui/src/qt4/library/ZLQApplication.h @@ -0,0 +1,36 @@ +/* + * Copyright (C) 2004-2012 Geometer Plus + * + * 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; either version 2 of the License, or + * (at your option) any later version. + * + * 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, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + * 02110-1301, USA. + */ + +#ifndef __ZLQAPPLICATION_H__ +#define __ZLQAPPLICATION_H__ + +#include + +class ZLQApplication : public QApplication { + +Q_OBJECT + +public: + ZLQApplication(int &argc, char **argv); + +protected: + bool event(QEvent *event); +}; + +#endif /* __ZLQAPPLICATION_H__ */ diff --git a/.pc/0002-Qt5.patch/zlibrary/ui/src/qt4/library/ZLibrary.cpp b/.pc/0002-Qt5.patch/zlibrary/ui/src/qt4/library/ZLibrary.cpp new file mode 100644 index 0000000..9648e95 --- /dev/null +++ b/.pc/0002-Qt5.patch/zlibrary/ui/src/qt4/library/ZLibrary.cpp @@ -0,0 +1,114 @@ +/* + * Copyright (C) 2004-2012 Geometer Plus + * + * 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; either version 2 of the License, or + * (at your option) any later version. + * + * 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, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + * 02110-1301, USA. + */ + +#include +#include +#include +#include + +#include +#include +#include + +#include "ZLQApplication.h" +#include "../../../../core/src/unix/library/ZLibraryImplementation.h" + +#include "../filesystem/ZLQtFSManager.h" +#include "../time/ZLQtTime.h" +#include "../dialogs/ZLQtDialogManager.h" +#include "../image/ZLQtImageManager.h" +#include "../view/ZLQtPaintContext.h" +#include "../network/ZLQtNetworkManager.h" +#include "../../unix/message/ZLUnixMessage.h" +#include "../../../../core/src/util/ZLKeyUtil.h" +#include "../../../../core/src/unix/xmlconfig/XMLConfig.h" +#include "../../../../core/src/unix/iconv/IConvEncodingConverter.h" + +class ZLQtLibraryImplementation : public ZLibraryImplementation { + +private: + void init(int &argc, char **&argv); + void setStylesheet(const std::string &filename); + ZLPaintContext *createContext(); + void run(ZLApplication *application); +}; + +void initLibrary() { + new ZLQtLibraryImplementation(); +} + +ZLQApplication::ZLQApplication(int &argc, char **argv) : QApplication(argc, argv) { +} + +bool ZLQApplication::event(QEvent *e) { + switch (e->type()) { + case QEvent::FileOpen: + { + ZLFile file((const char*)static_cast(e)->file().toUtf8(), 0); + ZLApplication::Instance().openFile(file); + return true; + } + default: + return QApplication::event(e); + } +} + +void ZLQtLibraryImplementation::init(int &argc, char **&argv) { + new ZLQApplication(argc, argv); + + QTextCodec::setCodecForCStrings(QTextCodec::codecForName("utf-8")); + + ZLibrary::parseArguments(argc, argv); + + XMLConfigManager::createInstance(); + ZLQtTimeManager::createInstance(); + ZLQtFSManager::createInstance(); + ZLQtDialogManager::createInstance(); + ZLUnixCommunicationManager::createInstance(); + ZLQtImageManager::createInstance(); + ZLEncodingCollection::Instance().registerProvider(new IConvEncodingConverterProvider()); + ZLQtNetworkManager::createInstance(); + + setStylesheet("style.qss"); + ZLKeyUtil::setKeyNamesFileName("keynames-qt4.xml"); +} + +void ZLQtLibraryImplementation::setStylesheet(const std::string &filename) { + const std::string stylesheetPath = ZLibrary::ZLibraryDirectory() + ZLibrary::FileNameDelimiter + filename; + QFile file(QString::fromStdString(ZLFile(stylesheetPath).path())); + file.open(QFile::ReadOnly); + QString styleSheet = QLatin1String(file.readAll()); + qApp->setStyleSheet(styleSheet); +} + +ZLPaintContext *ZLQtLibraryImplementation::createContext() { + return new ZLQtPaintContext(); +} + +void ZLQtLibraryImplementation::run(ZLApplication *application) { + if (ZLLanguageUtil::isRTLLanguage(ZLibrary::Language())) { + qApp->setLayoutDirection(Qt::RightToLeft); + } + static_cast(ZLNetworkManager::Instance()).initPaths(); + ZLDialogManager::Instance().createApplicationWindow(application); + application->initWindow(); + qApp->exec(); + static_cast(ZLDialogManager::Instance()).notifyApplicationWindowDeleted(); + delete application; +} diff --git a/.pc/0002-Qt5.patch/zlibrary/ui/src/qt4/network/ZLQtNetworkManager.cpp b/.pc/0002-Qt5.patch/zlibrary/ui/src/qt4/network/ZLQtNetworkManager.cpp new file mode 100644 index 0000000..47067d3 --- /dev/null +++ b/.pc/0002-Qt5.patch/zlibrary/ui/src/qt4/network/ZLQtNetworkManager.cpp @@ -0,0 +1,453 @@ +/* + * Copyright (C) 2004-2012 Geometer Plus + * + * 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; either version 2 of the License, or + * (at your option) any later version. + * + * 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, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + * 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +#include + +#include +#include +#include +#include +#include + +#include "ZLQtNetworkManager.h" + +static QString fixPath(const QString &path) { + if (path.startsWith('~')) { + return QDir::homePath() + path.mid(1); + } + return path; +} + +ZLQtNetworkManager::ZLQtNetworkManager() { + myCache = new QNetworkDiskCache(&myManager); + myManager.setCache(myCache); + myCookieJar = new ZLQtNetworkCookieJar(&myManager); + myManager.setCookieJar(myCookieJar); + QObject::connect(&myManager, SIGNAL(authenticationRequired(QNetworkReply*,QAuthenticator*)), + this, SLOT(onAuthenticationRequired(QNetworkReply*,QAuthenticator*))); + QObject::connect(&myManager, SIGNAL(finished(QNetworkReply*)), + this, SLOT(onFinished(QNetworkReply*))); +} + +ZLQtNetworkManager::~ZLQtNetworkManager() { +} + +void ZLQtNetworkManager::createInstance() { + ourInstance = new ZLQtNetworkManager(); +} + +void ZLQtNetworkManager::initPaths() { + myCookieJar->setFilePath(fixPath(QString::fromStdString(CookiesPath()))); + QDir cacheDirectory = fixPath(QString::fromStdString(CacheDirectory())); + if (!cacheDirectory.exists()) { + cacheDirectory.mkpath(cacheDirectory.absolutePath()); + } + myCache->setCacheDirectory(cacheDirectory.absolutePath()); +} + + +std::string ZLQtNetworkManager::perform(const ZLNetworkRequest::Vector &requestsList) const { + if (useProxy()) { + QString host = QString::fromStdString(proxyHost()); + QNetworkProxy proxy(QNetworkProxy::HttpProxy, host, atoi(proxyPort().c_str())); + const_cast(myManager).setProxy(proxy); + } + QList replies; + QStringList errors; + QEventLoop eventLoop; + + foreach (const shared_ptr &request, requestsList) { + if (request.isNull()) { + continue; + } + //ZLNetworkRequest &request = static_cast(*requestPtr); + QNetworkRequest networkRequest; + ZLLogger::Instance().println("network", "requesting " + request->url()); + networkRequest.setUrl(QUrl::fromUserInput(QString::fromStdString(request->url()))); + + if (!request->doBefore()) { + std::string error = request->errorMessage(); + if (error.empty()) { + const ZLResource &errorResource = ZLResource::resource("dialog")["networkError"]; + error = ZLStringUtil::printf(errorResource["somethingWrongMessage"].value(), networkRequest.url().host().toStdString()); + } + errors << QString::fromStdString(error); + continue; + } + + setHeadersAndSsl(networkRequest); + QTimer* timeoutTimer = new QTimer; + ZLQtNetworkReplyScope scope = { request, timeoutTimer, false, &replies, &errors, &eventLoop}; + prepareReply(scope, networkRequest); + } + if (!replies.isEmpty()) { + eventLoop.exec(QEventLoop::ExcludeUserInputEvents); + } + + return errors.join(QLatin1String("\n")).toStdString(); +} + +std::string ZLQtNetworkManager::performAsync(const ZLNetworkRequest::Vector &requestsList) const { + if (useProxy()) { + QString host = QString::fromStdString(proxyHost()); + QNetworkProxy proxy(QNetworkProxy::HttpProxy, host, atoi(proxyPort().c_str())); + const_cast(myManager).setProxy(proxy); + } + + foreach (const shared_ptr &request, requestsList) { + if (request.isNull()) { + continue; + } + QNetworkRequest networkRequest; + ZLLogger::Instance().println("network", "async requesting " + request->url()); + networkRequest.setUrl(QUrl::fromUserInput(QString::fromStdString(request->url()))); + + if (!request->doBefore()) { + continue; + } + + setHeadersAndSsl(networkRequest); + QTimer* timeoutTimer = new QTimer; + ZLQtNetworkReplyScope scope = { request, timeoutTimer, false, 0, 0, 0}; + prepareReply(scope, networkRequest); + } + return std::string(); +} + +void ZLQtNetworkManager::prepareReply(ZLQtNetworkReplyScope &scope, QNetworkRequest networkRequest) const { + QNetworkReply *reply = NULL; + if (!scope.request->postParameters().empty()) { + QByteArray data; + QUrl tmp; + typedef std::pair string_pair; + foreach (const string_pair &pair, scope.request->postParameters()) { + tmp.addQueryItem(QString::fromStdString(pair.first), QString::fromStdString(pair.second)); + } + data = tmp.encodedQuery(); + reply = const_cast(myManager).post(networkRequest, data); + } else { + reply = const_cast(myManager).get(networkRequest); + } + + if (scope.replies) { + scope.replies->push_back(reply); + } + + QObject::connect(reply, SIGNAL(sslErrors(QList)),this, SLOT(onSslErrors(QList))); + QObject::connect(reply, SIGNAL(readyRead()), this, SLOT(onReplyReadyRead())); + QObject::disconnect(scope.timeoutTimer, 0, this, 0); + QObject::connect(scope.timeoutTimer, SIGNAL(timeout()), this, SLOT(onTimeOut())); + reply->setProperty("scope", qVariantFromValue(scope)); + scope.timeoutTimer->setProperty("reply", qVariantFromValue(reply)); + scope.timeoutTimer->start(timeoutValue()); +} + +void ZLQtNetworkManager::onFinished(QNetworkReply *reply) { + ZLQtNetworkReplyScope scope = reply->property("scope").value(); + + if (!scope.eventLoop) { + onFinishedAsync(reply); + return; + } + + reply->deleteLater(); + scope.replies->removeOne(reply); + scope.timeoutTimer->stop(); + + if (!scope.timeoutTimer->property("expired").isValid()) { + if (handleRedirect(reply)) { + return; + } + handleHeaders(reply); + handleContent(reply); + } + + QString error = handleErrors(reply); + if (!error.isEmpty()) { + scope.errors->push_back(error); + } + if (error.isEmpty()) { + saveUserName(reply); + } + + scope.timeoutTimer->deleteLater(); + + if (!scope.request->doAfter(error.toStdString())) { + scope.errors->append(QString::fromStdString(scope.request->errorMessage())); + } + if (scope.replies->isEmpty()) { + scope.eventLoop->quit(); + } +} + +void ZLQtNetworkManager::onFinishedAsync(QNetworkReply *reply) { + ZLQtNetworkReplyScope scope = reply->property("scope").value(); + ZLLogger::Instance().println("network", "[FINISHED] async request " + scope.request->url()); + reply->deleteLater(); + scope.timeoutTimer->stop(); + + //TODO maybe timeout is working incorrect? + if (!scope.timeoutTimer->property("expired").isValid()) { + if (handleRedirect(reply)) { + return; + } + handleHeaders(reply); + handleContent(reply); + } + scope.timeoutTimer->deleteLater(); + QString error = handleErrors(reply); + if (error.isEmpty()) { + saveUserName(reply); + } + scope.request->doAfter(error.toStdString()); + return; +} + +bool ZLQtNetworkManager::handleRedirect(QNetworkReply *reply) { + ZLQtNetworkReplyScope scope = reply->property("scope").value(); + if (!scope.request->isRedirectionSupported()) { + return false; + } + QUrl redirect = reply->attribute(QNetworkRequest::RedirectionTargetAttribute).toUrl(); + if (!redirect.isValid()) { + return false; + } + QObject::disconnect(reply, 0, this, 0); + + QNetworkRequest request = reply->request(); + request.setUrl(reply->url().resolved(redirect)); + scope.authAskedAlready = false; + prepareReply(scope, request); + return true; +} + +void ZLQtNetworkManager::onReplyReadyRead() { + QNetworkReply *reply = qobject_cast(sender()); + ZLQtNetworkReplyScope scope = reply->property("scope").value(); + scope.timeoutTimer->start(timeoutValue()); +} + +void ZLQtNetworkManager::onTimeOut() { + QTimer *timer = qobject_cast(sender()); + QNetworkReply* reply = timer->property("reply").value(); + timer->stop(); + timer->setProperty("expired", true); + reply->abort(); +} + +void ZLQtNetworkManager::onAuthenticationRequired(QNetworkReply *reply, QAuthenticator *authenticator) { + ZLQtNetworkReplyScope scope = reply->property("scope").value(); + scope.timeoutTimer->stop(); + std::string userName; + std::string password; + scope.request->setUIStatus(false); + bool result = ZLApplication::Instance().showAuthDialog( + ZLNetworkUtil::hostFromUrl(reply->url().toString().toStdString()), + userName, + password, + scope.authAskedAlready ? ZLResourceKey("authenticationFailed") : ZLResourceKey()); + scope.request->setUIStatus(true); + if (result) { + scope.request->setupAuthentication(userName, password); + } else { + return; + } + + scope.timeoutTimer->start(timeoutValue()); + authenticator->setUser(QString::fromStdString(scope.request->userName())); + authenticator->setPassword(QString::fromStdString(scope.request->password())); + scope.authAskedAlready = true; + reply->setProperty("scope", qVariantFromValue(scope)); +} + +void ZLQtNetworkManager::onSslErrors(const QList &errors) { + QNetworkReply *reply = qobject_cast(sender()); + reply->ignoreSslErrors(errors); +} + +void ZLQtNetworkManager::handleHeaders(QNetworkReply *reply) const { + ZLQtNetworkReplyScope scope = reply->property("scope").value(); + //TODO set HTTP header not with predefined information (like line below) + QByteArray data = "HTTP/1.1 "; + data += reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toByteArray(); + data += " "; + data += reply->attribute(QNetworkRequest::HttpReasonPhraseAttribute).toByteArray(); + scope.request->handleHeader(data.data(), data.size()); + foreach (const QByteArray &headerName, reply->rawHeaderList()) { + data = headerName; + QByteArray value = reply->rawHeader(headerName); + data += ": "; + data += value; + if (headerName.toLower() == QString("content-encoding") && value.toLower().contains("gzip")) { + continue; + } + scope.request->handleHeader(data.data(), data.size()); + } +} + +void ZLQtNetworkManager::handleContent(QNetworkReply *reply) const { + ZLQtNetworkReplyScope scope = reply->property("scope").value(); + if (reply->error() != QNetworkReply::NoError) { + return; + } + QByteArray data = reply->readAll(); + if (!data.isEmpty()) { + scope.request->handleContent(data.data(), data.size()); + } +} + +QString ZLQtNetworkManager::handleErrors(QNetworkReply *reply) { + if (reply->error() == QNetworkReply::NoError) { + return QString(); + } + ZLLogger::Instance().println("network", QString("handleErrors: %1. Qt code: %2, url: %3").arg(reply->errorString()).arg(reply->error()).arg(reply->url().toString()).toStdString()); + std::string error; + const ZLResource &errorResource = ZLResource::resource("dialog")["networkError"]; + switch (reply->error()) { + case QNetworkReply::AuthenticationRequiredError: + error = errorResource["authenticationFailed"].value(); + break; + case QNetworkReply::OperationCanceledError: + case QNetworkReply::TimeoutError: + case QNetworkReply::ProxyTimeoutError: + error = errorResource["operationTimedOutMessage"].value(); + break; + case QNetworkReply::SslHandshakeFailedError: + error = ZLStringUtil::printf(errorResource["sslConnectErrorMessage"].value(), reply->url().toString().toStdString()); + break; + case QNetworkReply::HostNotFoundError: + error = ZLStringUtil::printf(errorResource["couldntConnectMessage"].value(), reply->url().toString().toStdString()); + break; + case QNetworkReply::ContentNotFoundError: //404 error, may be it should be other error message? + error = ZLStringUtil::printf(errorResource["somethingWrongMessage"].value(), reply->url().toString().toStdString()); + break; + case QNetworkReply::UnknownNetworkError: + error = QString("%1: %2").arg(reply->url().host()).arg(reply->errorString()).toStdString(); //TODO maybe host information is excess + break; + case QNetworkReply::UnknownProxyError: + case QNetworkReply::UnknownContentError: + case QNetworkReply::ProtocolUnknownError: + error = errorResource["unknownErrorMessage"].value(); + break; + case QNetworkReply::ProxyNotFoundError: + error = ZLStringUtil::printf(errorResource["couldntResolveProxyMessage"].value(), reply->url().toString().toStdString()); + break; + + //TODO add support of other errors code in our resources + case QNetworkReply::ConnectionRefusedError: + case QNetworkReply::RemoteHostClosedError: + // proxy errors (101-199): + case QNetworkReply::ProxyConnectionRefusedError: + case QNetworkReply::ProxyConnectionClosedError: + case QNetworkReply::ProxyAuthenticationRequiredError: + // content errors (201-299): + case QNetworkReply::ContentAccessDenied: + case QNetworkReply::ContentOperationNotPermittedError: + case QNetworkReply::ContentReSendError: + // protocol errors + case QNetworkReply::ProtocolInvalidOperationError: + case QNetworkReply::ProtocolFailure: + default: + error = reply->errorString().toStdString(); + break; + } + return QString::fromStdString(error); +} + +void ZLQtNetworkManager::setHeadersAndSsl(QNetworkRequest &networkRequest) const { + networkRequest.setRawHeader("User-Agent", userAgent().c_str()); + QSslConfiguration configuration = QSslConfiguration::defaultConfiguration(); + networkRequest.setSslConfiguration(configuration); +} + +void ZLQtNetworkManager::saveUserName(QNetworkReply *reply) const { + ZLQtNetworkReplyScope scope = reply->property("scope").value(); + std::string userName = scope.request->userName(); + if (userName.empty()) { + return; + } + std::string siteName = ZLNetworkUtil::hostFromUrl(reply->url().toString().toStdString()); + ZLApplication::Instance().saveUserName(siteName, userName); +} + +int ZLQtNetworkManager::timeoutValue() const { + return TimeoutOption().value() * 1000; +} + +ZLQtNetworkCookieJar::ZLQtNetworkCookieJar(QObject *parent) : + QNetworkCookieJar(parent) { +} + +ZLQtNetworkCookieJar::~ZLQtNetworkCookieJar() { + save(); +} + +void ZLQtNetworkCookieJar::setFilePath(const QString &filePath) { + myFilePath = filePath; + QFile file(myFilePath); + QList cookies; + if (file.open(QFile::ReadOnly)) { + cookies = QNetworkCookie::parseCookies(file.readAll()); + } + setAllCookies(cookies); +} + +bool ZLQtNetworkCookieJar::setCookiesFromUrl(const QList &cookieList, const QUrl &url) { + bool result = QNetworkCookieJar::setCookiesFromUrl(cookieList, url); + save(); + return result; +} + +void ZLQtNetworkCookieJar::save() { + if (myFilePath.isEmpty()) + return; + QFile file(myFilePath); + QDir dir = QFileInfo(myFilePath).absoluteDir(); + if (!dir.exists()) { + dir.mkpath(dir.absolutePath()); + } + if (!file.open(QFile::WriteOnly)) { + ZLLogger::Instance().println("ZLQtNetworkCookieJar", myFilePath.toStdString() + " can't be open for writing"); + return; + } + bool first = true; + foreach (const QNetworkCookie &cookie, allCookies()) { + if (first) { + first = false; + } else { + file.write("\n", 1); + } + file.write(cookie.toRawForm(QNetworkCookie::Full)); + } +} diff --git a/.pc/0002-Qt5.patch/zlibrary/ui/src/qt4/tree/QtWaitingSpinner.cpp b/.pc/0002-Qt5.patch/zlibrary/ui/src/qt4/tree/QtWaitingSpinner.cpp new file mode 100644 index 0000000..1be8569 --- /dev/null +++ b/.pc/0002-Qt5.patch/zlibrary/ui/src/qt4/tree/QtWaitingSpinner.cpp @@ -0,0 +1,155 @@ +#include +#include + +#include + +#include "QtWaitingSpinner.h" + +QtWaitingSpinner::QtWaitingSpinner(int linesNumber, int length, int width, int radius, QWidget *parent) : QWidget(parent), + myLinesNumber(linesNumber), + myLength(length + width), + myWidth(width), + myRadius(radius), + myRoundness(70.0), + myColor(Qt::black), + mySpeed(1), + myTrail(70), + myOpacity(15) +{ + myCurrentCounter = 0; + myTimer = new QTimer(this); + connect(myTimer,SIGNAL(timeout()), this, SLOT(rotate())); + updateSize(); + updateTimer(); + this->hide(); +} + +void QtWaitingSpinner::paintEvent(QPaintEvent */*ev*/) { + QPainter painter(this); + painter.fillRect(this->rect(), Qt::transparent); + painter.setRenderHint(QPainter::Antialiasing, true); + + if (myCurrentCounter >= myLinesNumber) { + myCurrentCounter = 0; + } + painter.setPen(Qt::NoPen); + for (int i = 0; i < myLinesNumber; ++i) { + painter.save(); + painter.translate(myRadius + myLength, myRadius + myLength); + qreal rotateAngle = (qreal)360 * qreal(i) / qreal(myLinesNumber); + painter.rotate(rotateAngle); + painter.translate(myRadius, 0); + int distance = lineDistance(i, myCurrentCounter, myLinesNumber); + QColor color = countTrailColor(distance, myLinesNumber, myTrail, myOpacity, myColor); + painter.setBrush(color); + //TODO improve the way rounded rect is painted + painter.drawRoundedRect(QRect(0, -myWidth/2, myLength, myWidth), myRoundness, myRoundness, Qt::RelativeSize); + painter.restore(); + } +} + +void QtWaitingSpinner::start() { + this->show(); + if (!myTimer->isActive()) { + myTimer->start(); + myCurrentCounter = 0; + } +} + +void QtWaitingSpinner::finish() { + this->hide(); + if (myTimer->isActive()) { + myTimer->stop(); + myCurrentCounter = 0; + } +} + +void QtWaitingSpinner::setLinesNumber(int linesNumber) { + myLinesNumber = linesNumber; + myCurrentCounter = 0; + updateTimer(); +} + +void QtWaitingSpinner::setLength(int length){ + myLength = length; + updateSize(); +} + +void QtWaitingSpinner::setWidth(int width) { + myWidth = width; + updateSize(); +} + +void QtWaitingSpinner::setRadius(int radius) { + myRadius = radius; + updateSize(); +} + +void QtWaitingSpinner::setRoundness(qreal roundness) { + myRoundness = std::max(0.0, std::min(100.0, roundness)); +} + +void QtWaitingSpinner::setColor(QColor color) { + myColor = color; +} + +void QtWaitingSpinner::setSpeed(qreal speed) { + mySpeed = speed; + updateTimer(); +} + +void QtWaitingSpinner::setTrail(int trail) { + myTrail = trail; +} + +void QtWaitingSpinner::setOpacity(int minOpacity) { + myOpacity = minOpacity; +} + +void QtWaitingSpinner::rotate() { + ++myCurrentCounter; + if (myCurrentCounter >= myLinesNumber) { + myCurrentCounter = 0; + } + update(); +} + +void QtWaitingSpinner::updateSize() { + int size = (myRadius + myLength) * 2; + setFixedSize(size, size); +} + +void QtWaitingSpinner::updateTimer() { + myTimer->setInterval(countTimeout(myLinesNumber, mySpeed)); +} + +int QtWaitingSpinner::countTimeout(int lines, qreal speed) { + return 1000 / (lines * speed); +} + +int QtWaitingSpinner::lineDistance(int from, int to, int lines) { + int result = to - from; + if (result < 0) { + result += lines; + } + return result; +} + +QColor QtWaitingSpinner::countTrailColor(int distance, int lines, int trail, int minOpacity, QColor color) { + if (distance == 0) { + return color; + } + const qreal minAlphaF = (qreal)minOpacity / 100; + int distanceThreshold = ceil( (lines - 1) * (qreal)trail / 100); + if (distance > distanceThreshold) { + color.setAlphaF(minAlphaF); + return color; + } + qreal alphaDiff = color.alphaF() - (qreal)minAlphaF; + qreal gradation = alphaDiff / (qreal)(distanceThreshold + 1); + qreal resultAlpha = color.alphaF() - gradation * distance; + resultAlpha = std::min(1.0, std::max(0.0, resultAlpha)); //if alpha is out of bound, force it to bounds + color.setAlphaF(resultAlpha); + return color; +} + diff --git a/.pc/0002-Qt5.patch/zlibrary/ui/src/qt4/tree/QtWaitingSpinner.h b/.pc/0002-Qt5.patch/zlibrary/ui/src/qt4/tree/QtWaitingSpinner.h new file mode 100644 index 0000000..cdaef01 --- /dev/null +++ b/.pc/0002-Qt5.patch/zlibrary/ui/src/qt4/tree/QtWaitingSpinner.h @@ -0,0 +1,59 @@ +#ifndef QTWAITINGSPINNER_H +#define QTWAITINGSPINNER_H + +#include + +#include +#include + +class QtWaitingSpinner : public QWidget { + Q_OBJECT + +public: + explicit QtWaitingSpinner(int linesNumber = 12, int length = 7, int width = 5, int radius = 10, QWidget *parent = 0); + +public Q_SLOTS: + void start(); + void finish(); + +public: + void setLinesNumber(int linesNumber); + void setLength(int length); + void setWidth(int width); + void setRadius(int radius); + void setRoundness(qreal roundness); + void setColor(QColor color); + void setSpeed(qreal speed); + void setTrail(int trail); + void setOpacity(int minOpacity); + +private Q_SLOTS: + void rotate(); + void updateSize(); + void updateTimer(); + +protected: + void paintEvent(QPaintEvent *ev); + +private: + static int countTimeout(int lines, qreal speed); + static int lineDistance(int from, int to, int lines); + static QColor countTrailColor(int distance, int lines, int trail, int minOpacity, QColor color); + +private: + int myLinesNumber; + int myLength; + int myWidth; + int myRadius; + qreal myRoundness; //0..100 + QColor myColor; + qreal mySpeed; // in rounds per second + int myTrail; + int myOpacity; + +private: + QTimer *myTimer; + int myCurrentCounter; +}; + +#endif // QTWAITINGSPINNER_H diff --git a/.pc/0002-Qt5.patch/zlibrary/ui/src/qt4/tree/ZLQtItemsListWidget.cpp b/.pc/0002-Qt5.patch/zlibrary/ui/src/qt4/tree/ZLQtItemsListWidget.cpp new file mode 100644 index 0000000..a3e5b35 --- /dev/null +++ b/.pc/0002-Qt5.patch/zlibrary/ui/src/qt4/tree/ZLQtItemsListWidget.cpp @@ -0,0 +1,255 @@ +/* + * Copyright (C) 2004-2012 Geometer Plus + * + * 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; either version 2 of the License, or + * (at your option) any later version. + * + * 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, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + * 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include +#include +#include +#include + +#include "../dialogs/ZLQtDialogManager.h" + +#include "../image/ZLQtImageUtils.h" + +#include "ZLQtPreviewWidget.h" + +#include "ZLQtItemsListWidget.h" + +static const int ITEM_HEIGHT = 98; +static const int ITEM_COUNT = 5; +static const int ITEM_SIZE = 77; +static const int WAITING_SIZE = 40; + +ZLQtItemsListWidget::ZLQtItemsListWidget(QWidget *parent) : QScrollArea(parent), myLayout(0) { + myContainerWidget = new QWidget; + myContainerWidget->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Minimum); + + verticalScrollBar()->setTracking(false); + connect(verticalScrollBar(), SIGNAL(valueChanged(int)), SLOT(onSliderMoved(int))); + + setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded); + setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + setWidget(myContainerWidget); + setFrameShape(QFrame::NoFrame); + setWidgetResizable(true); + setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Minimum); +} + +void ZLQtItemsListWidget::clear() { + if (myLayout != 0) { + delete myLayout; + qDeleteAll(myContainerWidget->children()); + } + myLayout = new QVBoxLayout; + myLayout->setContentsMargins(0,0,0,0); + myLayout->setSpacing(0); + myLayout->setSizeConstraint(QLayout::SetMinAndMaxSize); + myContainerWidget->setLayout(myLayout); + + + myItems.clear(); + +} + +void ZLQtItemsListWidget::addNode(ZLTreeTitledNode *titledNode) { + //qDebug() << QString::fromStdString(titledNode->title()); + ZLQtTreeItem *item = new ZLQtTreeItem; + item->fill(titledNode); + connect(item, SIGNAL(clicked(ZLQtTreeItem*)), this, SLOT(onNodeClicked(ZLQtTreeItem*))); //action ExpandAction used instead + connect(item, SIGNAL(doubleClicked(ZLQtTreeItem*)), this, SIGNAL(nodeDoubleClicked(ZLQtTreeItem*))); + myLayout->addWidget(item); + myItems.push_back(item); +} + +void ZLQtItemsListWidget::fillNodes(const ZLTreeNode *expandNode) { + clear(); + + foreach(ZLTreeNode* node, expandNode->children()) { + if (ZLTreeTitledNode *titledNode = zlobject_cast(node)) { + addNode(titledNode); + } + } +} + +void ZLQtItemsListWidget::fillNewNodes(const ZLTreeNode *rootNode) { + if (myLayout == 0) { + return; + } + + size_t oldSize = (size_t)myItems.size(); + + //qDebug() << Q_FUNC_INFO << oldSize << rootNode->children().size(); + + for (size_t i = oldSize; i < rootNode->children().size(); ++i) { + if (ZLTreeTitledNode *titledNode = zlobject_cast(rootNode->children().at(i))) { + addNode(titledNode); + } + } +} + +QSize ZLQtItemsListWidget::sizeHint() const { + return QSize(0, ITEM_HEIGHT * ITEM_COUNT); +} + +void ZLQtItemsListWidget::setMinimumWidth(int w) { + myContainerWidget->setMinimumWidth(w - verticalScrollBar()->width()); + QScrollArea::setMinimumWidth(w); +} + +QList ZLQtItemsListWidget::getItems() const { + return myItems; +} + +void ZLQtItemsListWidget::onNodeClicked(ZLQtTreeItem* itemClicked) { + foreach(ZLQtTreeItem *item, myItems) { + item->setActive(item == itemClicked); + } + emit nodeClicked(itemClicked); +} + +void ZLQtItemsListWidget::onSliderMoved(int value) { + int maximum = verticalScrollBar()->maximum(); + if ((double)value > (double)maximum * 0.8) { + emit wantMoreChildren(); + } +} + +ZLQtTreeItem::ZLQtTreeItem(QWidget *parent) : QFrame(parent), myNode(0), myImageRequested(false) { + setAutoFillBackground(true); + setActive(false); + + QHBoxLayout *mainLayout = new QHBoxLayout; + QHBoxLayout *infoLayout = new QHBoxLayout; + infoLayout->setAlignment(Qt::AlignLeft); + QVBoxLayout *titlesLayout = new QVBoxLayout; + + myIcon = new QLabel; + myTitle = new QLabel; + mySubtitle = new QLabel; + + myWaitingIcon = new QtWaitingSpinner(12, 6, 4, 10); + myWaitingIcon->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); + + myTitle->setWordWrap(true); + mySubtitle->setWordWrap(true); + + titlesLayout->addWidget(myTitle); + titlesLayout->addWidget(mySubtitle); + + infoLayout->addWidget(myIcon, 0); + infoLayout->addLayout(titlesLayout, 1); + mainLayout->addLayout(infoLayout, 1); + mainLayout->addWidget(myWaitingIcon, 0, Qt::AlignRight); + setLayout(mainLayout); + + setFixedHeight(ITEM_HEIGHT); + + clear(); +} + +void ZLQtTreeItem::fill(ZLTreeTitledNode *node) { + clear(); + myNode = node; + myTitle->setText(QString("%1").arg(QString::fromStdString(node->title()))); + mySubtitle->setText(QString::fromStdString(node->subtitle())); + fillImage(); +} + +void ZLQtTreeItem::fillImage() { + //separated method for deferred loding of cover (good for slow connections) + //TODO as it starts loading on paintEvent, it works bad while scrolling + if (!myImageRequested) { + return; + } + shared_ptr image = myNode->image(); + if (!image.isNull()) { + QPixmap pixmap = ZLQtImageUtils::ZLImageToQPixmapWithSize(image, QSize(ITEM_SIZE,ITEM_SIZE), false, Qt::SmoothTransformation); + if (!pixmap.isNull()) { + myIcon->setPixmap(pixmap); + } + } +} + +void ZLQtTreeItem::clear() { + myNode = 0; + myImageRequested = false; + myTitle->clear(); + mySubtitle->clear(); + + QPixmap pixmap(ITEM_SIZE, ITEM_SIZE); + pixmap.fill(Qt::transparent); + myIcon->setPixmap(pixmap); + + myWaitingIcon->finish(); +} + +void ZLQtTreeItem::setActive(bool active) { + myIsActive = active; + + //TODO due to different themes on OS, take a color from existed palette + QColor mainColor = myIsActive ? QColor::fromHsv(0, 0, 0.75 * 255) : QColor::fromHsv(0, 0, 0.95 * 255); + + setFrameStyle(QFrame::Panel | QFrame::Raised); + setLineWidth(2); + + QPalette p = palette(); + p.setColor(QPalette::Window, mainColor); + setPalette(p); + + update(); +} + +bool ZLQtTreeItem::isActive() const { + return myIsActive; +} + +ZLTreeTitledNode *ZLQtTreeItem::getNode() const { + return myNode; +} + +QtWaitingSpinner *ZLQtTreeItem::getWaitingIcon() const { + return myWaitingIcon; +} + +void ZLQtTreeItem::mousePressEvent(QMouseEvent *) { + emit clicked(this); +} + +void ZLQtTreeItem::mouseDoubleClickEvent(QMouseEvent *) { + emit doubleClicked(this); +} + +void ZLQtTreeItem::paintEvent(QPaintEvent *event) { + if (myNode && !myImageRequested) { + myNode->image(); + myImageRequested = true; + fillImage(); + } + QFrame::paintEvent(event); +} diff --git a/.pc/0002-Qt5.patch/zlibrary/ui/src/qt4/tree/ZLQtItemsListWidget.h b/.pc/0002-Qt5.patch/zlibrary/ui/src/qt4/tree/ZLQtItemsListWidget.h new file mode 100644 index 0000000..4f09cfc --- /dev/null +++ b/.pc/0002-Qt5.patch/zlibrary/ui/src/qt4/tree/ZLQtItemsListWidget.h @@ -0,0 +1,106 @@ +/* + * Copyright (C) 2004-2012 Geometer Plus + * + * 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; either version 2 of the License, or + * (at your option) any later version. + * + * 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, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + * 02110-1301, USA. + */ + +#ifndef __ZLQTITEMSLISTWIDGET_H__ +#define __ZLQTITEMSLISTWIDGET_H__ + +#include +#include +#include +#include +#include +#include + +#include + +#include "QtWaitingSpinner.h" + +class ZLQtTreeItem; + +class ZLQtItemsListWidget : public QScrollArea { + Q_OBJECT +public: + ZLQtItemsListWidget(QWidget *parent = 0); + void fillNodes(const ZLTreeNode *rootNode); + void fillNewNodes(const ZLTreeNode *rootNode); + QSize sizeHint() const; + void setMinimumWidth(int w); + QList getItems() const; + + +Q_SIGNALS: + void nodeClicked(ZLQtTreeItem* item); + void nodeDoubleClicked(ZLQtTreeItem* item); + void wantMoreChildren(); + +public Q_SLOTS: + void onNodeClicked(ZLQtTreeItem* item); + void onSliderMoved(int value); + +private: + void clear(); + void addNode(ZLTreeTitledNode *node); + +private: + QWidget *myContainerWidget; + QVBoxLayout *myLayout; + QList myItems; +}; + +class QtWaitingSpinner; + +class ZLQtTreeItem : public QFrame { + Q_OBJECT + +public: + ZLQtTreeItem(QWidget *parent = 0); + void fill(ZLTreeTitledNode *node); + void setActive(bool active); + bool isActive() const; + +public: + ZLTreeTitledNode *getNode() const; + QtWaitingSpinner *getWaitingIcon() const; + +Q_SIGNALS: + void clicked(ZLQtTreeItem* item); + void doubleClicked(ZLQtTreeItem* item); + +protected: + void mousePressEvent(QMouseEvent *event); + void mouseDoubleClickEvent(QMouseEvent *event); + void paintEvent(QPaintEvent *event); + +protected: + void fillImage(); + void clear(); + +private: + ZLTreeTitledNode *myNode; + + QLabel *myIcon; + QLabel *myTitle; + QLabel *mySubtitle; + QtWaitingSpinner *myWaitingIcon; + bool myImageRequested; + + bool myIsActive; +}; + +#endif /* __ZLQTITEMSLISTWIDGET_H__ */ diff --git a/.pc/0002-Qt5.patch/zlibrary/ui/src/qt4/tree/ZLQtPreviewWidget.cpp b/.pc/0002-Qt5.patch/zlibrary/ui/src/qt4/tree/ZLQtPreviewWidget.cpp new file mode 100644 index 0000000..472f05f --- /dev/null +++ b/.pc/0002-Qt5.patch/zlibrary/ui/src/qt4/tree/ZLQtPreviewWidget.cpp @@ -0,0 +1,411 @@ +/* + * Copyright (C) 2004-2012 Geometer Plus + * + * 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; either version 2 of the License, or + * (at your option) any later version. + * + * 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, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + * 02110-1301, USA. + */ + +#include +#include +#include +#include + +#include + +#include +#include + +#include "QtWaitingSpinner.h" +#include "../image/ZLQtImageUtils.h" + +#include "ZLQtPreviewWidget.h" + +class ZLQtLabelAction : public QLabel { + +public: + ZLQtLabelAction(shared_ptr action, QWidget *parent=0, Qt::WindowFlags f=0); + +protected: + void mousePressEvent(QMouseEvent *ev); + +private: + shared_ptr myAction; +}; + +ZLQtLabelAction::ZLQtLabelAction(shared_ptr action,QWidget *parent, Qt::WindowFlags f) : + QLabel(parent, f), myAction(action) { + setCursor(Qt::PointingHandCursor); + QPalette p = palette(); + p.setColor(QPalette::WindowText, QColor(33, 96, 180)); //blue color + setPalette(p); +} + +void ZLQtLabelAction::mousePressEvent(QMouseEvent *) { + if (myAction.isNull() || !myAction->makesSense()) { + return; + } + myAction->run(); +} + + +ZLQtButtonAction::ZLQtButtonAction(shared_ptr action,QWidget *parent) : + QPushButton(parent), myAction(action) { + connect(this, SIGNAL(clicked()), this, SLOT(onClicked()), Qt::QueuedConnection); //QueuedConnection used for sending clicked() signal for UI at first + setAttribute(Qt::WA_LayoutUsesWidgetRect); +} + +void ZLQtButtonAction::onClicked() { + if (myAction.isNull() || !myAction->makesSense()) { + return; + } + myAction->run(); +} + +ZLQtPreviewWidget::ZLQtPreviewWidget(QWidget *parent) : QWidget(parent), myCurrentNode(0) { + QSizePolicy policy = QSizePolicy(QSizePolicy::Preferred, QSizePolicy::MinimumExpanding); + //policy.setHorizontalStretch(2); + setSizePolicy(policy); +} + +void ZLQtPreviewWidget::show(ZLTreeNode *node) { + clear(); + myCurrentNode = node; + if (ZLTreePageNode *pageNode = zlobject_cast(node)) { + if (myDownloadingNodes.contains(pageNode)) { + fillWaitingIcon(); + return; + } + fillPageInfo(pageNode); + } else if (const ZLTreeTitledNode *titledNode = zlobject_cast(node)) { + fillCatalog(titledNode); + } +} + +void ZLQtPreviewWidget::refresh() { + if (myCurrentNode) { + show(myCurrentNode); + } +} + +class PageInfoLoaderListener : public ZLNetworkRequest::Listener { + public: + PageInfoLoaderListener(ZLQtPreviewWidget &previewWidget, ZLTreePageNode *node) : + myPreviewWidget(previewWidget), myNode(node) { + myPreviewWidget.myDownloadingNodes.insert(node); + } + void finished(const std::string &error) { + myPreviewWidget.myDownloadingNodes.remove(myNode); + if (myPreviewWidget.myCurrentNode == myNode) { + myPreviewWidget.refresh(); + } + } + private: + ZLQtPreviewWidget &myPreviewWidget; + ZLTreePageNode *myNode; +}; + +void ZLQtPreviewWidget::fillPageInfo(ZLTreePageNode *node) { + if (myDownloadingNodes.contains(node)) { + fillWaitingIcon(); + return; + } + shared_ptr info = node->getPageInfo(); + if (info.isNull()) { + return; + } + if (!info->isPageInfoLoaded()) { + fillWaitingIcon(); + info->loadAll(new PageInfoLoaderListener(*this, node)); + return; + } + setBasicLayout(); + QWidget *widget = new ZLQtPageWidget(*info); + widget->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::MinimumExpanding); + layout()->addWidget(widget); +} + + +void ZLQtPreviewWidget::setBasicLayout() { + QHBoxLayout *layout = new QHBoxLayout; + layout->setSizeConstraint(QLayout::SetMinimumSize); + layout->setContentsMargins(0,0,0,0); + setLayout(layout); +} + + +void ZLQtPreviewWidget::fillCatalog(const ZLTreeTitledNode *node) { + setBasicLayout(); + QWidget *widget = new ZLQtCatalogPageWidget(node); + widget->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::MinimumExpanding); + layout()->addWidget(widget); +} + +void ZLQtPreviewWidget::fillWaitingIcon() { + setBasicLayout(); + QtWaitingSpinner *icon = new QtWaitingSpinner(12, 26, 8, 36); + icon->start(); + layout()->addWidget(icon); +} + + +void ZLQtPreviewWidget::clear() { + myCurrentNode = 0; + qDeleteAll(children()); + +} + +ZLTreeNode *ZLQtPreviewWidget::getCurrentNode() const { + return myCurrentNode; +} + +QSize ZLQtPreviewWidget::sizeHint() const { + QSize hint = QWidget::sizeHint(); +// qDebug() << Q_FUNC_INFO << hint << minimumSize(); + return hint; +} + +ZLQtAbstractPageWidget::ZLQtAbstractPageWidget(QWidget *parent) : QWidget(parent) { } + +void ZLQtAbstractPageWidget::onActionActivated() { + foreach(QPushButton* button, myButtonActions) { + button->setEnabled(false); + } +} + +ZLQtPageWidget::ZLQtPageWidget(const ZLTreePageInfo &info, QWidget *parent) : ZLQtAbstractPageWidget(parent) { + //TODO fix it: if element is absent, there's a empty space instead it. Looks bad. + createElements(); + setInfo(info); +} + +void ZLQtPageWidget::createElements() { + myPicLabel = new QLabel; + + // the code inside #ifndef does crash on MacOS, + // see https://bugreports.qt-project.org/browse/QTBUG-24792 +#ifndef Q_OS_MAC + QGraphicsDropShadowEffect* effect = new QGraphicsDropShadowEffect; + effect->setBlurRadius(12); + effect->setOffset(3); + myPicLabel->setGraphicsEffect(effect); +#endif +// myPicLabel->setMaximumSize(300,300); +// myPicLabel->setMinimumSize(77,77); + + myTitleLabel = new QLabel; + myAuthorLabel = new QLabel; + myCategoriesLabel = new QLabel; + mySummaryTitleLabel = new QLabel; + mySummaryLabel = new QLabel; + + myScrollArea = new QScrollArea; + myScrollArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + myScrollArea->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded); + myScrollArea->setWidgetResizable(true); + myScrollArea->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::MinimumExpanding); + + mySummaryLabel->setAlignment(Qt::AlignLeft | Qt::AlignTop); + mySummaryLabel->setMargin(3); + //mySummaryLabel->setMaximumHeight(200); + mySummaryLabel->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::MinimumExpanding); + //mySummaryLabel->setIndent(3); + + myRelatedWidget = new QWidget; + + myActionsWidget = new QWidget; + + QVBoxLayout *layout = new QVBoxLayout; + QWidget *containerWidget = new QWidget; + + QVBoxLayout *previewLayout = new QVBoxLayout; + QHBoxLayout *actionsLayout = new QHBoxLayout; + QVBoxLayout *relatedLayout = new QVBoxLayout; + myActionsWidget->setLayout(actionsLayout); + previewLayout->setSizeConstraint(QLayout::SetMinimumSize); + + layout->setSizeConstraint(QLayout::SetMinimumSize); + + QHBoxLayout *picLayout = new QHBoxLayout; + picLayout->addStretch(); + picLayout->addWidget(myPicLabel); + picLayout->addStretch(); + + previewLayout->addLayout(picLayout); + previewLayout->addWidget(myTitleLabel); + previewLayout->addWidget(myAuthorLabel); + previewLayout->addWidget(myCategoriesLabel); + previewLayout->addWidget(mySummaryTitleLabel); + previewLayout->addWidget(mySummaryLabel); + previewLayout->addWidget(myRelatedWidget); + //previewLayout->addStretch(); + + myRelatedWidget->setLayout(relatedLayout); + containerWidget->setLayout(previewLayout); + myScrollArea->setWidget(containerWidget); + + layout->setContentsMargins(0,0,0,0); + + layout->addWidget(myScrollArea); + layout->addWidget(myActionsWidget); + setLayout(layout); +} + +void ZLQtPageWidget::setInfo(const ZLTreePageInfo &info) { + shared_ptr image = info.image(); + if (!image.isNull()) { + QPixmap pixmap = ZLQtImageUtils::ZLImageToQPixmap(image); + //TODO implement resizable pixmap widget + const int maxPreviewWidth = 300; + if (pixmap.height() > maxPreviewWidth || pixmap.width() > maxPreviewWidth) { + pixmap = pixmap.scaled(maxPreviewWidth, maxPreviewWidth, Qt::KeepAspectRatio, Qt::SmoothTransformation); + } + myPicLabel->setPixmap(pixmap); + } + + //TODO implement 'condition'-like attributes support for ZLResource + static const ZLResource &resource = ZLResource::resource("bookInfo"); + static QString colon = "%1 %2"; + + if (!info.title().empty()) { + static QString title = QString::fromStdString(resource["title"].value()); + myTitleLabel->setText(colon.arg(title, QString::fromStdString(info.title()))); + } + + if (info.authors().size() > 0) { + static QString label = QString::fromStdString(resource["authors"].value(info.authors().size())); + myAuthorLabel->setText(colon.arg(label, QString::fromStdString(ZLStringUtil::join(info.authors(), ", ")))); + } + + if (info.tags().size() > 0) { + static QString label = QString::fromStdString(resource["tags"].value(info.tags().size())); + myCategoriesLabel->setText(colon.arg(label, QString::fromStdString(ZLStringUtil::join(info.tags(), ", ")))); + } + + if (!info.summary().empty()) { + static QString annotation = QString::fromStdString(resource["annotation"].value()); + mySummaryLabel->setText(QString::fromStdString(info.summary())); + mySummaryTitleLabel->setText(QString("%1").arg(annotation)); +// mySummaryScrollArea->show(); + } + + myTitleLabel->setWordWrap(true); + myAuthorLabel->setWordWrap(true); + myCategoriesLabel->setWordWrap(true); + mySummaryLabel->setWordWrap(true); + + foreach(shared_ptr action, info.actions()) { + if (!action->makesSense()) { + continue; + } + QPushButton *actionButton = new ZLQtButtonAction(action); + QString text = QString::fromStdString(info.actionText(action)); + actionButton->setText(text); + myActionsWidget->layout()->addWidget(actionButton); + connect(actionButton, SIGNAL(clicked()), this, SLOT(onActionActivated())); + myButtonActions.push_back(actionButton); + } + + //TODO check case if I will load all links at the same time + foreach(shared_ptr action, info.relatedActions()) { + if (!action->makesSense()) { + continue; + } + QLabel *actionLabel = new ZLQtLabelAction(action); + QString text = QString::fromStdString(info.actionText(action)); + actionLabel->setText(QString("%1").arg(text)); + actionLabel->setWordWrap(true); + myRelatedWidget->layout()->addWidget(actionLabel); + } +} + +ZLQtCatalogPageWidget::ZLQtCatalogPageWidget(const ZLTreeTitledNode *node, QWidget *parent) : ZLQtAbstractPageWidget(parent) { + createElements(); + setInfo(node); +} + +void ZLQtCatalogPageWidget::createElements() { + myPicLabel = new QLabel; + myTitleLabel = new QLabel; + mySubtitleLabel = new QLabel; + + mySubtitleLabel->setWordWrap(true); + myTitleLabel->setAlignment(Qt::AlignCenter); + mySubtitleLabel->setAlignment(Qt::AlignCenter); + + myActionsWidget = new QWidget; + + QVBoxLayout *previewLayout = new QVBoxLayout; + previewLayout->setSizeConstraint(QLayout::SetMinimumSize); + + QHBoxLayout *strechActionsLayout = new QHBoxLayout; + strechActionsLayout->addStretch(); + strechActionsLayout->addWidget(myActionsWidget); + strechActionsLayout->addStretch(); + QVBoxLayout *actionsLayout = new QVBoxLayout; myActionsWidget->setLayout(actionsLayout); + + QHBoxLayout *picLayout = new QHBoxLayout; + picLayout->addStretch(); + picLayout->addWidget(myPicLabel); + picLayout->addStretch(); + + previewLayout->addStretch(); + previewLayout->addLayout(picLayout); + previewLayout->addWidget(myTitleLabel); + previewLayout->addWidget(mySubtitleLabel); + previewLayout->addLayout(strechActionsLayout); + previewLayout->addStretch(); + + setLayout(previewLayout); +} + +void ZLQtCatalogPageWidget::setInfo(const ZLTreeTitledNode *node) { + shared_ptr image = node->image(); + if (!image.isNull()) { + + //TODO make async image downloading + + ZLNetworkManager::Instance().perform(image->synchronizationData()); + QPixmap pixmap = ZLQtImageUtils::ZLImageToQPixmap(image); + //TODO implement resizable pixmap widget + const int maxPreviewWidth = 300; + if (pixmap.height() > maxPreviewWidth || pixmap.width() > maxPreviewWidth) { + pixmap = pixmap.scaled(maxPreviewWidth, maxPreviewWidth, Qt::KeepAspectRatio, Qt::SmoothTransformation); + } + myPicLabel->setPixmap(pixmap); + } + + if (!node->title().empty()) { + myTitleLabel->setText(QString("%1").arg(QString::fromStdString(node->title()))); + } + if (!node->subtitle().empty()) { + mySubtitleLabel->setText(QString::fromStdString(node->subtitle())); + } + + foreach(shared_ptr action, node->actions()) { + if (!action->makesSense()) { + continue; + } + QPushButton *actionButton = new ZLQtButtonAction(action); + QString text = QString::fromStdString(node->actionText(action)); + actionButton->setText(text); + myActionsWidget->layout()->addWidget(actionButton); + connect(actionButton, SIGNAL(clicked()), this, SLOT(onActionActivated())); + myButtonActions.push_back(actionButton); + //TODO maybe buttons should not be too big + //actionButton->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Preferred); + + } + +} diff --git a/.pc/0002-Qt5.patch/zlibrary/ui/src/qt4/tree/ZLQtPreviewWidget.h b/.pc/0002-Qt5.patch/zlibrary/ui/src/qt4/tree/ZLQtPreviewWidget.h new file mode 100644 index 0000000..1b8ebcc --- /dev/null +++ b/.pc/0002-Qt5.patch/zlibrary/ui/src/qt4/tree/ZLQtPreviewWidget.h @@ -0,0 +1,121 @@ +/* + * Copyright (C) 2004-2012 Geometer Plus + * + * 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; either version 2 of the License, or + * (at your option) any later version. + * + * 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, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + * 02110-1301, USA. + */ + +#ifndef __ZLQTPREVIEWWIDGET_H__ +#define __ZLQTPREVIEWWIDGET_H__ + +#include +#include +#include +#include +#include +#include + +#include + +class ZLQtPreviewWidget : public QWidget { + +public: + ZLQtPreviewWidget(QWidget *parent = 0); + void show(ZLTreeNode *node); + void refresh(); + void clear(); + + ZLTreeNode* getCurrentNode() const; + + QSize sizeHint() const; + +protected: + void setBasicLayout(); + void fillWaitingIcon(); + void fillPageInfo(ZLTreePageNode *node); + void fillCatalog(const ZLTreeTitledNode *node); + +private: + ZLTreeNode *myCurrentNode; + + QSet myDownloadingNodes; + +friend class PageInfoLoaderListener; +}; + +class ZLQtAbstractPageWidget : public QWidget { + Q_OBJECT +public: + ZLQtAbstractPageWidget(QWidget *parent = 0); + +public Q_SLOTS: + void onActionActivated(); + +protected: + QList myButtonActions; +}; + +class ZLQtPageWidget : public ZLQtAbstractPageWidget { + +public: + ZLQtPageWidget(const ZLTreePageInfo &info, QWidget *parent = 0); + +private: + void createElements(); + void setInfo(const ZLTreePageInfo &info); + +private: + QScrollArea *myScrollArea; + + QLabel *myPicLabel; + QLabel *myTitleLabel; + QLabel *myAuthorLabel; + QLabel *myCategoriesLabel; + QLabel *mySummaryTitleLabel; + QLabel *mySummaryLabel; + QWidget *myRelatedWidget; + QWidget *myActionsWidget; +}; + + +class ZLQtCatalogPageWidget : public ZLQtAbstractPageWidget { + +public: + ZLQtCatalogPageWidget(const ZLTreeTitledNode *node, QWidget *parent = 0); + +private: + void createElements(); + void setInfo(const ZLTreeTitledNode *); + +private: + QLabel *myPicLabel; + QLabel *myTitleLabel; + QLabel *mySubtitleLabel; + QWidget *myActionsWidget; +}; + +class ZLQtButtonAction : public QPushButton { + Q_OBJECT +public: + ZLQtButtonAction(shared_ptr action, QWidget *parent=0); + +private Q_SLOTS: + void onClicked(); + +private: + shared_ptr myAction; +}; + +#endif /* __ZLQTPREVIEWWIDGET_H__ */ diff --git a/.pc/0002-Qt5.patch/zlibrary/ui/src/qt4/tree/ZLQtSearchField.cpp b/.pc/0002-Qt5.patch/zlibrary/ui/src/qt4/tree/ZLQtSearchField.cpp new file mode 100644 index 0000000..1cddaf9 --- /dev/null +++ b/.pc/0002-Qt5.patch/zlibrary/ui/src/qt4/tree/ZLQtSearchField.cpp @@ -0,0 +1,125 @@ +/* + * Copyright (C) 2004-2012 Geometer Plus + * + * 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; either version 2 of the License, or + * (at your option) any later version. + * + * 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, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + * 02110-1301, USA. + */ + +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +#include "ZLQtSearchField.h" + +ZLQtSearchField::ZLQtSearchField(QWidget *parent) : QLineEdit(parent) { + //TODO somehow make it feathered + //TODO set active and non-active color by default of system + + setObjectName("search-field"); + + myWaitingIcon = new QtWaitingSpinner(12, 3, 2, 3, this); + myWaitingIcon->setSpeed(2); + + mySearchIcon = new QLabel(this); + static std::string iconPath = ZLibrary::ApplicationImageDirectory() + ZLibrary::FileNameDelimiter + "search_icon.png"; + QPixmap searchIcon = QPixmap(ZLFile(iconPath).path().c_str()); + mySearchIcon->setPixmap(searchIcon); + mySearchIcon->setFixedSize(searchIcon.size()); + + setFixedSize(155,25); + + setPlaceholderText(QString::fromStdString(ZLResource::resource("networkView")["searchResultNode"]["searchfield"].value())); + + int frameWidth = style()->pixelMetric(QStyle::PM_DefaultFrameWidth); + + setStyleSheet(QString("QLineEdit { padding-left: %1px; } ").arg(mySearchIcon->sizeHint().width() + frameWidth)); + + QCompleter *completer = new QCompleter(this); + completer->setCaseSensitivity(Qt::CaseInsensitive); + completer->setCompletionMode(QCompleter::PopupCompletion); + this->setCompleter(completer); + + loadSuggestions(); + connect(this, SIGNAL(returnPressed()), this, SLOT(onReturnPressed())); +} + +QtWaitingSpinner *ZLQtSearchField::getWaitingIcon() { + return myWaitingIcon; +} + +void ZLQtSearchField::onReturnPressed() { + if (text().isEmpty()) { + return; + } + if (mySuggestions.contains(text())) { + return; + } + mySuggestions.insert(text()); + saveSuggestions(); +} + +void ZLQtSearchField::updateSuggestions() { + QStringListModel *model = new QStringListModel(mySuggestions.toList(), this); + this->completer()->setModel(model); +} + +static const std::string SUGGESTION = "suggestion"; +static const std::string SUGGESTIONS = "suggestions"; + +void ZLQtSearchField::loadSuggestions() { + mySuggestions.clear(); + bool finished = false; + for (unsigned int i = 0; !finished; ++i) { + std::string suggestOptionName(SUGGESTION); + ZLStringUtil::appendNumber(suggestOptionName, i); + std::string suggestion = ZLStringOption(ZLCategoryKey::NETWORK, SUGGESTIONS, suggestOptionName, "").value(); + if (suggestion.empty()) { + finished = true; + } else { + mySuggestions.insert(QString::fromStdString(suggestion)); + } + } + updateSuggestions(); +} + +void ZLQtSearchField::saveSuggestions() { + QList suggestions = mySuggestions.values(); + for (int i = 0; i < suggestions.size(); ++i) { + if (suggestions.at(i).isEmpty()) { + continue; + } + std::string suggestOptionName(SUGGESTION); + ZLStringUtil::appendNumber(suggestOptionName, (unsigned int)i); + ZLStringOption suggestion(ZLCategoryKey::NETWORK, SUGGESTIONS, suggestOptionName, ""); + suggestion.setValue(suggestions.at(i).toStdString()); + } + updateSuggestions(); +} + +void ZLQtSearchField::resizeEvent(QResizeEvent *ev) { + int frameWidth = style()->pixelMetric(QStyle::PM_DefaultFrameWidth); + mySearchIcon->move(rect().left() + frameWidth + 4, (rect().bottom() - mySearchIcon->sizeHint().height())/2 + 2); + + QSize waitingIconSize = myWaitingIcon->size(); + myWaitingIcon->move(rect().right() - frameWidth - waitingIconSize.width() - 2, (rect().bottom() + 1 - waitingIconSize.height())/2); + QLineEdit::resizeEvent(ev); +} diff --git a/.pc/0002-Qt5.patch/zlibrary/ui/src/qt4/tree/ZLQtSearchField.h b/.pc/0002-Qt5.patch/zlibrary/ui/src/qt4/tree/ZLQtSearchField.h new file mode 100644 index 0000000..f6e174c --- /dev/null +++ b/.pc/0002-Qt5.patch/zlibrary/ui/src/qt4/tree/ZLQtSearchField.h @@ -0,0 +1,54 @@ +/* + * Copyright (C) 2004-2012 Geometer Plus + * + * 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; either version 2 of the License, or + * (at your option) any later version. + * + * 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, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + * 02110-1301, USA. + */ + +#ifndef __ZLQTSEARCHFIELD_H__ +#define __ZLQTSEARCHFIELD_H__ + +#include +#include +#include + +#include "QtWaitingSpinner.h" +#include "ZLQtItemsListWidget.h" + +class ZLQtSearchField : public QLineEdit { + Q_OBJECT; +public: + ZLQtSearchField(QWidget *parent = 0); + QtWaitingSpinner *getWaitingIcon(); + +protected Q_SLOTS: + void onReturnPressed(); + +protected: + void updateSuggestions(); + void loadSuggestions(); + void saveSuggestions(); + +protected: + void resizeEvent(QResizeEvent *ev); + +private: + QLabel *mySearchIcon; + QtWaitingSpinner *myWaitingIcon; + QSet mySuggestions; + +}; + +#endif /* __ZLQTSEARCHFIELD_H__ */ diff --git a/.pc/0002-Qt5.patch/zlibrary/ui/src/qt4/view/ZLQtViewWidget.cpp b/.pc/0002-Qt5.patch/zlibrary/ui/src/qt4/view/ZLQtViewWidget.cpp new file mode 100644 index 0000000..4f5d196 --- /dev/null +++ b/.pc/0002-Qt5.patch/zlibrary/ui/src/qt4/view/ZLQtViewWidget.cpp @@ -0,0 +1,300 @@ +/* + * Copyright (C) 2004-2012 Geometer Plus + * + * 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; either version 2 of the License, or + * (at your option) any later version. + * + * 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, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + * 02110-1301, USA. + */ + +#include + +#include +#include +#include +#include +#include + +#include +#include + +#include "ZLQtViewWidget.h" +#include "ZLQtPaintContext.h" + +class MyQScrollBar : public QScrollBar { + +public: + MyQScrollBar(Qt::Orientation orientation, QWidget *parent) : QScrollBar(orientation, parent) { + } + +private: + void mouseMoveEvent(QMouseEvent *event) { + if (orientation() == Qt::Vertical) { + const int y = event->y(); + if ((y <= 0) || (y >= height())) { + return; + } + } else { + const int x = event->x(); + if ((x <= 0) || (x >= width())) { + return; + } + } + QScrollBar::mouseMoveEvent(event); + } +}; + +ZLQtViewWidget::Widget::Widget(QWidget *parent, ZLQtViewWidget &holder) : QWidget(parent), myHolder(holder) { + //setBackgroundMode(NoBackground); +} + +QScrollBar *ZLQtViewWidget::addScrollBar(QGridLayout *layout, Qt::Orientation orientation, int x, int y) { + QScrollBar *scrollBar = new MyQScrollBar(orientation, myFrame); + layout->addWidget(scrollBar, x, y); + scrollBar->hide(); + if (orientation == Qt::Vertical) { + connect(scrollBar, SIGNAL(sliderMoved(int)), this, SLOT(onVerticalSliderMoved(int))); + connect(scrollBar, SIGNAL(actionTriggered(int)), this, SLOT(onVerticalSliderClicked(int))); + } else { + connect(scrollBar, SIGNAL(sliderMoved(int)), this, SLOT(onHorizontalSliderMoved(int))); + connect(scrollBar, SIGNAL(actionTriggered(int)), this, SLOT(onHorizontalSliderClicked(int))); + } + return scrollBar; +} + +ZLQtViewWidget::ZLQtViewWidget(QWidget *parent, ZLApplication *application) : ZLViewWidget((ZLView::Angle)application->AngleStateOption.value()), myApplication(application) { + myFrame = new QWidget(parent); + QGridLayout *layout = new QGridLayout(); + layout->setMargin(0); + layout->setSpacing(0); + myFrame->setLayout(layout); + myQWidget = new Widget(myFrame, *this); + layout->addWidget(myQWidget, 1, 1); + + myRightScrollBar = addScrollBar(layout, Qt::Vertical, 1, 2); + myLeftScrollBar = addScrollBar(layout, Qt::Vertical, 1, 0); + myShowScrollBarAtRight = true; + + myBottomScrollBar = addScrollBar(layout, Qt::Horizontal, 2, 1); + myTopScrollBar = addScrollBar(layout, Qt::Horizontal, 0, 1); + myShowScrollBarAtBottom = true; +} + +void ZLQtViewWidget::trackStylus(bool track) { + myQWidget->setMouseTracking(track); +} + +void ZLQtViewWidget::Widget::paintEvent(QPaintEvent*) { + ZLQtPaintContext &context = (ZLQtPaintContext&)myHolder.view()->context(); + switch (myHolder.rotation()) { + default: + context.setSize(width(), height()); + break; + case ZLView::DEGREES90: + case ZLView::DEGREES270: + context.setSize(height(), width()); + break; + } + myHolder.view()->paint(); + QPainter realPainter(this); + switch (myHolder.rotation()) { + default: + realPainter.drawPixmap(0, 0, context.pixmap()); + break; + case ZLView::DEGREES90: + realPainter.rotate(270); + realPainter.drawPixmap(1 - height(), -1, context.pixmap()); + break; + case ZLView::DEGREES180: + realPainter.rotate(180); + realPainter.drawPixmap(1 - width(), 1 - height(), context.pixmap()); + break; + case ZLView::DEGREES270: + realPainter.rotate(90); + realPainter.drawPixmap(-1, 1 - width(), context.pixmap()); + break; + } +} + +void ZLQtViewWidget::Widget::mousePressEvent(QMouseEvent *event) { + myHolder.view()->onStylusMove(x(event), y(event)); + myHolder.view()->onStylusPress(x(event), y(event)); +} + +void ZLQtViewWidget::Widget::mouseReleaseEvent(QMouseEvent *event) { + myHolder.view()->onStylusRelease(x(event), y(event)); +} + +void ZLQtViewWidget::Widget::mouseMoveEvent(QMouseEvent *event) { + switch (event->buttons()) { + case Qt::LeftButton: + myHolder.view()->onStylusMovePressed(x(event), y(event)); + break; + case Qt::NoButton: + myHolder.view()->onStylusMove(x(event), y(event)); + break; + default: + break; + } +} + +int ZLQtViewWidget::Widget::x(const QMouseEvent *event) const { + const int maxX = width() - 1; + const int maxY = height() - 1; + switch (myHolder.rotation()) { + default: + return std::min(std::max(event->x(), 0), maxX); + case ZLView::DEGREES90: + return maxY - std::min(std::max(event->y(), 0), maxY); + case ZLView::DEGREES180: + return maxX - std::min(std::max(event->x(), 0), maxX); + case ZLView::DEGREES270: + return std::min(std::max(event->y(), 0), maxY); + } +} + +int ZLQtViewWidget::Widget::y(const QMouseEvent *event) const { + const int maxX = width() - 1; + const int maxY = height() - 1; + switch (myHolder.rotation()) { + default: + return std::min(std::max(event->y(), 0), maxY); + case ZLView::DEGREES90: + return std::min(std::max(event->x(), 0), maxX); + case ZLView::DEGREES180: + return maxY - std::min(std::max(event->y(), 0), maxY); + case ZLView::DEGREES270: + return maxX - std::min(std::max(event->x(), 0), maxX); + } +} + +void ZLQtViewWidget::repaint() { + //myQWidget->repaint(); + myQWidget->update(); //not repaint for thread safety +} + +void ZLQtViewWidget::setScrollbarEnabled(ZLView::Direction direction, bool enabled) { + if (direction == ZLView::VERTICAL) { + myRightScrollBar->setShown(enabled && myShowScrollBarAtRight); + myLeftScrollBar->setShown(enabled && !myShowScrollBarAtRight); + } else { + myBottomScrollBar->setShown(enabled && myShowScrollBarAtBottom); + myTopScrollBar->setShown(enabled && !myShowScrollBarAtBottom); + } +} + +void ZLQtViewWidget::setScrollbarPlacement(ZLView::Direction direction, bool standard) { + if ((rotation() == ZLView::DEGREES90) || (rotation() == ZLView::DEGREES270)) { + if (ZLLanguageUtil::isRTLLanguage(ZLibrary::Language())) { + standard = !standard; + } + } + if (direction == ZLView::VERTICAL) { + if (standard != myShowScrollBarAtRight) { + myShowScrollBarAtRight = standard; + QScrollBar *old = standard ? myLeftScrollBar : myRightScrollBar; + QScrollBar *current = standard ? myRightScrollBar : myLeftScrollBar; + if (old->isVisible()) { + old->hide(); + current->show(); + } + } + } else { + if (standard != myShowScrollBarAtBottom) { + myShowScrollBarAtBottom = standard; + QScrollBar *old = standard ? myTopScrollBar : myBottomScrollBar; + QScrollBar *current = standard ? myBottomScrollBar : myTopScrollBar; + if (old->isVisible()) { + old->hide(); + current->show(); + } + } + } +} + +void ZLQtViewWidget::setScrollbarParameters(ZLView::Direction direction, size_t full, size_t from, size_t to) { + QScrollBar *bar = + (direction == ZLView::VERTICAL) ? + (myShowScrollBarAtRight ? myRightScrollBar : myLeftScrollBar) : + (myShowScrollBarAtBottom ? myBottomScrollBar : myTopScrollBar); + bar->setMinimum(0); + bar->setMaximum(full + from - to); + bar->setValue(from); + bar->setPageStep(to - from); +} + +void ZLQtViewWidget::onVerticalSliderMoved(int value) { + QScrollBar *bar = + myShowScrollBarAtRight ? myRightScrollBar : myLeftScrollBar; + int maxValue = bar->maximum(); + int pageStep = bar->pageStep(); + value = std::max(std::min(value, maxValue), 0); + onScrollbarMoved( + ZLView::VERTICAL, + maxValue + pageStep, + value, + value + pageStep + ); +} + +void ZLQtViewWidget::onHorizontalSliderMoved(int value) { + QScrollBar *bar = + myShowScrollBarAtBottom ? myBottomScrollBar : myTopScrollBar; + int maxValue = bar->maximum(); + int pageStep = bar->pageStep(); + value = std::max(std::min(value, maxValue), 0); + onScrollbarMoved( + ZLView::HORIZONTAL, + maxValue + pageStep, + value, + value + pageStep + ); +} + +void ZLQtViewWidget::onVerticalSliderClicked(int value) { + switch (value) { + case QScrollBar::SliderSingleStepAdd: + onScrollbarStep(ZLView::VERTICAL, 1); + break; + case QScrollBar::SliderSingleStepSub: + onScrollbarStep(ZLView::VERTICAL, -1); + break; + case QScrollBar::SliderPageStepAdd: + onScrollbarPageStep(ZLView::VERTICAL, 1); + break; + case QScrollBar::SliderPageStepSub: + onScrollbarPageStep(ZLView::VERTICAL, -1); + break; + } +} + +void ZLQtViewWidget::onHorizontalSliderClicked(int value) { + switch (value) { + case QScrollBar::SliderSingleStepAdd: + onScrollbarStep(ZLView::HORIZONTAL, 1); + break; + case QScrollBar::SliderSingleStepSub: + onScrollbarStep(ZLView::HORIZONTAL, -1); + break; + case QScrollBar::SliderPageStepAdd: + onScrollbarPageStep(ZLView::HORIZONTAL, 1); + break; + case QScrollBar::SliderPageStepSub: + onScrollbarPageStep(ZLView::HORIZONTAL, -1); + break; + } +} + +QWidget *ZLQtViewWidget::widget() { + return myFrame; +} diff --git a/.pc/0002-Qt5.patch/zlibrary/ui/src/qt4/view/ZLQtViewWidget.h b/.pc/0002-Qt5.patch/zlibrary/ui/src/qt4/view/ZLQtViewWidget.h new file mode 100644 index 0000000..6fabf00 --- /dev/null +++ b/.pc/0002-Qt5.patch/zlibrary/ui/src/qt4/view/ZLQtViewWidget.h @@ -0,0 +1,88 @@ +/* + * Copyright (C) 2004-2012 Geometer Plus + * + * 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; either version 2 of the License, or + * (at your option) any later version. + * + * 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, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + * 02110-1301, USA. + */ + +#ifndef __ZLQTVIEWWIDGET_H__ +#define __ZLQTVIEWWIDGET_H__ + +#include + +#include "../../../../core/src/view/ZLViewWidget.h" +#include + +class QGridLayout; +class QScrollBar; + +class ZLQtViewWidget : public QObject, public ZLViewWidget { + Q_OBJECT + +private: + class Widget : public QWidget { + + public: + Widget(QWidget *parent, ZLQtViewWidget &holder); + + private: + void paintEvent(QPaintEvent *event); + void mousePressEvent(QMouseEvent *event); + void mouseReleaseEvent(QMouseEvent *event); + void mouseMoveEvent(QMouseEvent *event); + + int x(const QMouseEvent *event) const; + int y(const QMouseEvent *event) const; + + private: + ZLQtViewWidget &myHolder; + }; + +public: + ZLQtViewWidget(QWidget *parent, ZLApplication *application); + QWidget *widget(); + +private Q_SLOTS: + void onVerticalSliderMoved(int value); + void onHorizontalSliderMoved(int value); + void onVerticalSliderClicked(int value); + void onHorizontalSliderClicked(int value); + +private: + void repaint(); + void trackStylus(bool track); + + void setScrollbarEnabled(ZLView::Direction direction, bool enabled); + void setScrollbarPlacement(ZLView::Direction direction, bool standard); + void setScrollbarParameters(ZLView::Direction direction, size_t full, size_t from, size_t to); + + QScrollBar *addScrollBar(QGridLayout *layout, Qt::Orientation orientation, int x, int y); + +private: + QWidget *myFrame; + Widget *myQWidget; + + QScrollBar *myRightScrollBar; + QScrollBar *myLeftScrollBar; + bool myShowScrollBarAtRight; + + QScrollBar *myBottomScrollBar; + QScrollBar *myTopScrollBar; + bool myShowScrollBarAtBottom; + + ZLApplication *myApplication; +}; + +#endif /* __ZLQTVIEWWIDGET_H__ */ diff --git a/.pc/0003-gcc-6.patch/fbreader/src/formats/doc/OleStorage.cpp b/.pc/0003-gcc-6.patch/fbreader/src/formats/doc/OleStorage.cpp new file mode 100644 index 0000000..016f9fd --- /dev/null +++ b/.pc/0003-gcc-6.patch/fbreader/src/formats/doc/OleStorage.cpp @@ -0,0 +1,304 @@ +/* + * Copyright (C) 2004-2012 Geometer Plus + * + * 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; either version 2 of the License, or + * (at your option) any later version. + * + * 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, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + * 02110-1301, USA. + */ + +#include + +#include "OleStorage.h" +#include "OleUtil.h" + +#include + +const std::size_t OleStorage::BBD_BLOCK_SIZE = 512; + +OleStorage::OleStorage() { + clear(); +} + +void OleStorage::clear() { + myInputStream = 0; + mySectorSize = 0; + myShortSectorSize = 0; + myStreamSize = 0; + myRootEntryIndex = -1; + + myDIFAT.clear(); + myBBD.clear(); + mySBD.clear(); + myProperties.clear(); + myEntries.clear(); +} + + + +bool OleStorage::init(shared_ptr stream, std::size_t streamSize) { + clear(); + + myInputStream = stream; + myStreamSize = streamSize; + myInputStream->seek(0, true); + + char oleBuf[BBD_BLOCK_SIZE]; + std::size_t ret = myInputStream->read(oleBuf, BBD_BLOCK_SIZE); + if (ret != BBD_BLOCK_SIZE) { + clear(); + return false; + } + static const char OLE_SIGN[] = {0xD0, 0xCF, 0x11, 0xE0, 0xA1, 0xB1, 0x1A, 0xE1, 0}; + if (std::strncmp(oleBuf, OLE_SIGN, 8) != 0) { + clear(); + return false; + } + mySectorSize = 1 << OleUtil::getU2Bytes(oleBuf, 0x1e); //offset for value of big sector size + myShortSectorSize = 1 << OleUtil::getU2Bytes(oleBuf, 0x20); //offset for value of small sector size + + if (readDIFAT(oleBuf) && readBBD(oleBuf) && readSBD(oleBuf) && readProperties(oleBuf) && readAllEntries()) { + return true; + } + clear(); + return false; +} + +bool OleStorage::readDIFAT(char *oleBuf) { + int difatBlock = OleUtil::get4Bytes(oleBuf, 0x44); //address for first difat sector + int difatSectorNumbers = OleUtil::get4Bytes(oleBuf, 0x48); //numbers of additional difat records + + //436 of difat records are stored in header, by offset 0x4c + for (unsigned int i = 0; i < 436; i += 4) { + myDIFAT.push_back(OleUtil::get4Bytes(oleBuf + 0x4c, i)); + } + + //for files > 6.78 mb we need read additional DIFAT fields + for (int i = 0; difatBlock > 0 && i < difatSectorNumbers; ++i) { + ZLLogger::Instance().println("DocPlugin", "Read additional data for DIFAT"); + char buffer[mySectorSize]; + myInputStream->seek(BBD_BLOCK_SIZE + difatBlock * mySectorSize, true); + if (myInputStream->read(buffer, mySectorSize) != mySectorSize) { + ZLLogger::Instance().println("DocPlugin", "Error read DIFAT!"); + return false; + } + for (unsigned int j = 0; j < (mySectorSize - 4); j += 4) { + myDIFAT.push_back(OleUtil::get4Bytes(buffer, j)); + } + difatBlock = OleUtil::get4Bytes(buffer, mySectorSize - 4); //next DIFAT block is pointed at the end of the sector + } + + //removing unusable DIFAT links + //0xFFFFFFFF means "free section" + while (!myDIFAT.empty() && myDIFAT.back() == (int)0xFFFFFFFF) { + myDIFAT.pop_back(); + } + return true; +} + +bool OleStorage::readBBD(char *oleBuf) { + char buffer[mySectorSize]; + unsigned int bbdNumberBlocks = OleUtil::getU4Bytes(oleBuf, 0x2c); //number of big blocks + + if (myDIFAT.size() < bbdNumberBlocks) { + //TODO maybe add check on myDIFAT == bbdNumberBlocks + ZLLogger::Instance().println("DocPlugin", "Wrong number of FAT blocks value"); + return false; + } + + for (unsigned int i = 0; i < bbdNumberBlocks; ++i) { + int bbdSector = myDIFAT.at(i); + if (bbdSector >= (int)(myStreamSize / mySectorSize) || bbdSector < 0) { + ZLLogger::Instance().println("DocPlugin", "Bad BBD entry!"); + return false; + } + myInputStream->seek(BBD_BLOCK_SIZE + bbdSector * mySectorSize, true); + if (myInputStream->read(buffer, mySectorSize) != mySectorSize) { + ZLLogger::Instance().println("DocPlugin", "Error during reading BBD!"); + return false; + } + for (unsigned int j = 0; j < mySectorSize; j += 4) { + myBBD.push_back(OleUtil::get4Bytes(buffer, j)); + } + } + return true; +} + +bool OleStorage::readSBD(char *oleBuf) { + int sbdCur = OleUtil::get4Bytes(oleBuf, 0x3c); //address of first small sector + int sbdCount = OleUtil::get4Bytes(oleBuf, 0x40); //count of small sectors + + if (sbdCur <= 0) { + ZLLogger::Instance().println("DocPlugin", "There's no SBD, don't read it"); + return true; + } + + char buffer[mySectorSize]; + for (int i = 0; i < sbdCount; ++i) { + if (i != 0) { + if (sbdCur < 0 || (unsigned int)sbdCur >= myBBD.size()) { + ZLLogger::Instance().println("DocPlugin", "error during parsing SBD"); + return false; + } + sbdCur = myBBD.at(sbdCur); + } + if (sbdCur <= 0) { + break; + } + myInputStream->seek(BBD_BLOCK_SIZE + sbdCur * mySectorSize, true); + if (myInputStream->read(buffer, mySectorSize) != mySectorSize) { + ZLLogger::Instance().println("DocPlugin", "reading error during parsing SBD"); + return false; + } + for (unsigned int j = 0; j < mySectorSize; j += 4) { + mySBD.push_back(OleUtil::get4Bytes(buffer, j)); + } + + } + return true; +} + +bool OleStorage::readProperties(char *oleBuf) { + int propCur = OleUtil::get4Bytes(oleBuf, 0x30); //offset for address of sector with first property + if (propCur < 0) { + ZLLogger::Instance().println("DocPlugin", "Wrong first directory sector location"); + return false; + } + + char buffer[mySectorSize]; + do { + myInputStream->seek(BBD_BLOCK_SIZE + propCur * mySectorSize, true); + if (myInputStream->read(buffer, mySectorSize) != mySectorSize) { + ZLLogger::Instance().println("DocPlugin", "Error during reading properties"); + return false; + } + for (unsigned int j = 0; j < mySectorSize; j += 128) { + myProperties.push_back(std::string(buffer + j, 128)); + } + if (propCur < 0 || (std::size_t)propCur >= myBBD.size()) { + break; + } + propCur = myBBD.at(propCur); + } while (propCur >= 0 && propCur < (int)(myStreamSize / mySectorSize)); + return true; +} + +bool OleStorage::readAllEntries() { + int propCount = myProperties.size(); + for (int i = 0; i < propCount; ++i) { + OleEntry entry; + bool result = readOleEntry(i, entry); + if (!result) { + break; + } + if (entry.type == OleEntry::ROOT_DIR) { + myRootEntryIndex = i; + } + myEntries.push_back(entry); + } + if (myRootEntryIndex < 0) { + return false; + } + return true; +} + +bool OleStorage::readOleEntry(int propNumber, OleEntry &e) { + static const std::string ROOT_ENTRY = "Root Entry"; + + std::string property = myProperties.at(propNumber); + + char oleType = property.at(0x42); //offset for Ole Type + if (oleType != 1 && oleType != 2 && oleType != 3 && oleType != 5) { + ZLLogger::Instance().println("DocPlugin", "entry -- not right ole type"); + return false; + } + + e.type = (OleEntry::Type)oleType; + + int nameLength = OleUtil::getU2Bytes(property.c_str(), 0x40); //offset for value entry's name length + e.name.clear(); + e.name.reserve(33); //max size of entry name + + if ((unsigned int)nameLength >= property.size()) { + return false; + } + for (int i = 0; i < nameLength; i+=2) { + char c = property.at(i); + if (c != 0) { + e.name += c; + } + } + + e.length = OleUtil::getU4Bytes(property.c_str(), 0x78); //offset for entry's length value + e.isBigBlock = e.length >= 0x1000 || e.name == ROOT_ENTRY; + + // Read sector chain + if (property.size() < 0x74 + 4) { + ZLLogger::Instance().println("DocPlugin", "problems with reading ole entry"); + return false; + } + int chainCur = OleUtil::get4Bytes(property.c_str(), 0x74); //offset for start block of entry + if (chainCur >= 0 && (chainCur <= (int)(myStreamSize / (e.isBigBlock ? mySectorSize : myShortSectorSize)))) { + //filling blocks with chains + do { + e.blocks.push_back((unsigned int)chainCur); + if (e.isBigBlock && (std::size_t)chainCur < myBBD.size()) { + chainCur = myBBD.at(chainCur); + } else if (!mySBD.empty() && (std::size_t)chainCur < mySBD.size()) { + chainCur = mySBD.at(chainCur); + } else { + chainCur = -1; + } + } while (chainCur > 0 && + chainCur < (int)(e.isBigBlock ? myBBD.size() : mySBD.size()) && + e.blocks.size() <= e.length / (e.isBigBlock ? mySectorSize : myShortSectorSize)); + } + e.length = std::min(e.length, (unsigned int)((e.isBigBlock ? mySectorSize : myShortSectorSize) * e.blocks.size())); + return true; +} + +bool OleStorage::countFileOffsetOfBlock(const OleEntry &e, unsigned int blockNumber, unsigned int &result) const { + //TODO maybe better syntax can be used? + if (e.blocks.size() <= (std::size_t)blockNumber) { + ZLLogger::Instance().println("DocPlugin", "countFileOffsetOfBlock can't be done, blockNumber is invalid"); + return false; + } + if (e.isBigBlock) { + result = BBD_BLOCK_SIZE + e.blocks.at(blockNumber) * mySectorSize; + } else { + unsigned int sbdPerSector = mySectorSize / myShortSectorSize; + unsigned int sbdSectorNumber = e.blocks.at(blockNumber) / sbdPerSector; + unsigned int sbdSectorMod = e.blocks.at(blockNumber) % sbdPerSector; + if (myEntries.at(myRootEntryIndex).blocks.size() <= (std::size_t)sbdSectorNumber) { + ZLLogger::Instance().println("DocPlugin", "countFileOffsetOfBlock can't be done, invalid sbd data"); + return false; + } + result = BBD_BLOCK_SIZE + myEntries.at(myRootEntryIndex).blocks.at(sbdSectorNumber) * mySectorSize + sbdSectorMod * myShortSectorSize; + } + return true; +} + +bool OleStorage::getEntryByName(std::string name, OleEntry &returnEntry) const { + //TODO fix the workaround for duplicates streams: now it takes a stream with max length + unsigned int maxLength = 0; + for (std::size_t i = 0; i < myEntries.size(); ++i) { + const OleEntry &entry = myEntries.at(i); + if (entry.name == name && entry.length >= maxLength) { + returnEntry = entry; + maxLength = entry.length; + } + } + return maxLength > 0; +} + + diff --git a/.pc/0004-prevent-so-install.patch/zlibrary/core/Makefile b/.pc/0004-prevent-so-install.patch/zlibrary/core/Makefile new file mode 100644 index 0000000..55c9401 --- /dev/null +++ b/.pc/0004-prevent-so-install.patch/zlibrary/core/Makefile @@ -0,0 +1,109 @@ +ROOTDIR = $(CURDIR)/../.. +MAKEFILESDIR = $(ROOTDIR)/makefiles +include $(MAKEFILESDIR)/config.mk + +VERSION = $(shell cat ../VERSION) +SOVERSION = $(shell cat SOVERSION) + +ifeq "$(ZLSHARED)" "yes" + ifeq "$(TARGET_ARCH)" "macosx" + TARGET = libzlcore.$(VERSION).dylib + TARGET_SONAME = libzlcore.$(SOVERSION).dylib + TARGET_SHORTNAME = libzlcore.dylib + else + TARGET = libzlcore.so.$(VERSION) + TARGET_SONAME = libzlcore.so.$(SOVERSION) + TARGET_SHORTNAME = libzlcore.so + endif +else + TARGET = libzlcore.a +endif + +SUBDIRS_ALL = src/library src/typeId src/util src/constants src/logger src/filesystem src/filesystem/zip src/filesystem/bzip2 src/filesystem/tar src/dialogs src/optionEntries src/application src/view src/encoding src/options src/message src/resources src/time src/xml src/xml/expat src/image src/language src/runnable src/network src/network/requests src/blockTreeView src/tree src/desktop/application src/desktop/dialogs src/unix/time src/unix/xmlconfig src/unix/filesystem src/unix/iconv src/unix/library src/unix/curl src/win32/encoding src/win32/filesystem src/win32/config + +SUBDIRS = src/library src/typeId src/util src/constants src/logger src/filesystem src/filesystem/zip src/filesystem/bzip2 src/filesystem/tar src/dialogs src/optionEntries src/application src/view src/encoding src/options src/message src/resources src/time src/xml src/xml/expat src/image src/language src/unix/time src/runnable src/network src/network/requests src/blockTreeView src/tree + +ifeq "<$(TARGET_ARCH)>" "$(findstring <$(TARGET_ARCH)>, )" + SUBDIRS += src/desktop/application src/desktop/dialogs +endif + +ifeq "$(TARGET_ARCH)" "pdaxrom" + SUBDIRS += src/desktop/dialogs +endif + +ifeq "$(TARGET_ARCH)" "win32" + SUBDIRS += src/desktop/application src/desktop/dialogs src/win32/encoding src/win32/filesystem src/win32/config +else + SUBDIRS += src/unix/xmlconfig src/unix/filesystem src/unix/iconv src/unix/library +endif + +.objects: + +@for subdir in $(SUBDIRS); do \ + if [ -d $$subdir ]; then \ + if ! $(LIBMAKE) -C $$subdir -f $(MAKEFILESDIR)/subdir.mk; then \ + exit 1; \ + fi; \ + fi; \ + done; + +$(TARGET): .objects + @echo -n 'Creating $@ ...' + @$(RM_QUIET) $(TARGET) +ifeq "$(ZLSHARED)" "yes" + @$(LD) $(LDFLAGS) -shared -Wl,-soname,$(TARGET_SONAME) -o $(TARGET) -lc $(patsubst %, %/*.o, $(SUBDIRS)) $(XML_LIBS) $(ARCHIVER_LIBS) +#@$(LD) $(LDFLAGS) -dynamiclib -dylinker_install_name $(TARGET_SONAME) -o $(TARGET) -lc $(patsubst %, %/*.o, $(SUBDIRS)) $(XML_LIBS) $(ARCHIVER_LIBS) $(ZLUI_LIB) -ldl -liconv + @ln -sf $(TARGET) $(TARGET_SONAME) + @ln -sf $(TARGET) $(TARGET_SHORTNAME) +else + @$(AR) $(TARGET) $(patsubst %, %/*.o, $(SUBDIRS)) +endif + echo ' OK' + +SHARE_ZLIBRARY = $(DESTDIR)$(SHAREDIR)/zlibrary + +ENCODING_FILES = $(wildcard data/encodings/*) +ifeq "$(TARGET_ARCH)" "maemo" + ENCODING_FILES = $(filter-out %/Big5,$(wildcard data/encodings/*)) +endif + +do_install: + @install -d $(SHARE_ZLIBRARY) + @install -d $(SHARE_ZLIBRARY)/encodings + @install -m 0644 $(ENCODING_FILES) $(SHARE_ZLIBRARY)/encodings + @install -d $(SHARE_ZLIBRARY)/resources + @install -m 0644 $(wildcard data/resources/*.xml) $(SHARE_ZLIBRARY)/resources + @install -m 0644 data/languagePatterns.zip $(SHARE_ZLIBRARY) + @install -m 0644 data/unicode.xml.gz $(SHARE_ZLIBRARY) + @install -d $(SHARE_ZLIBRARY)/default + @if [ -e data/default/config.$(TARGET_ARCH).xml ]; then \ + install -m 0644 data/default/config.$(TARGET_ARCH).xml $(SHARE_ZLIBRARY)/default/config.xml; \ + fi + @if [ -e data/default/config.$(TARGET_ARCH)-$(UI_TYPE).xml ]; then \ + install -m 0644 data/default/config.$(TARGET_ARCH)-$(UI_TYPE).xml $(SHARE_ZLIBRARY)/default/config.xml; \ + fi +ifeq "$(ZLSHARED)" "yes" + @install -d $(DESTDIR)$(LIBDIR) + @install $(TARGET) $(DESTDIR)$(LIBDIR) + @ln -sf $(TARGET) $(DESTDIR)$(LIBDIR)/$(TARGET_SONAME) + @ln -sf $(TARGET) $(DESTDIR)$(LIBDIR)/$(TARGET_SHORTNAME) +endif + +do_install_dev: + @install -d $(DESTDIR)$(LIBDIR) +ifeq "$(ZLSHARED)" "yes" + @ln -sf $(TARGET) $(DESTDIR)$(LIBDIR)/$(TARGET_SHORTNAME) +else + @install $(TARGET) $(DESTDIR)$(LIBDIR) +endif + @install -d $(DESTDIR)$(INCDIR)/zlibrary/core + @install -m 0644 $(wildcard include/*.h) $(DESTDIR)$(INCDIR)/zlibrary/core + @install -d $(DESTDIR)$(INCDIR)/zlibrary/core/optionEntries + @install -m 0644 $(wildcard include/optionEntries/*.h) $(DESTDIR)$(INCDIR)/zlibrary/core/optionEntries + +clean: + @for subdir in $(SUBDIRS_ALL); do \ + if [ -d $$subdir ]; then \ + $(MAKE) -C $$subdir -f $(MAKEFILESDIR)/subdir.mk clean; \ + fi; \ + done; + @$(RM) *.so *.so.* *.dylib *.a diff --git a/.pc/0004-prevent-so-install.patch/zlibrary/text/Makefile b/.pc/0004-prevent-so-install.patch/zlibrary/text/Makefile new file mode 100644 index 0000000..7fa8fbd --- /dev/null +++ b/.pc/0004-prevent-so-install.patch/zlibrary/text/Makefile @@ -0,0 +1,74 @@ +ROOTDIR = $(CURDIR)/../.. +MAKEFILESDIR = $(ROOTDIR)/makefiles +include $(MAKEFILESDIR)/config.mk + +VERSION = $(shell cat ../VERSION) +SOVERSION = $(shell cat SOVERSION) + +ifeq "$(ZLSHARED)" "yes" + ifeq "$(TARGET_ARCH)" "macosx" + TARGET = libzltext.$(VERSION).dylib + TARGET_SONAME = libzltext.$(SOVERSION).dylib + TARGET_SHORTNAME = libzltext.dylib + else + TARGET = libzltext.so.$(VERSION) + TARGET_SONAME = libzltext.so.$(SOVERSION) + TARGET_SHORTNAME = libzltext.so + endif +else + TARGET = libzltext.a +endif + +SUBDIRS = src/model src/area src/view src/style src/styleOptions src/hyphenation + +.objects: + +@for subdir in $(SUBDIRS); do \ + if [ -d $$subdir ]; then \ + if ! $(LIBMAKE) -C $$subdir -f $(MAKEFILESDIR)/subdir.mk; then \ + exit 1; \ + fi; \ + fi; \ + done; + +$(TARGET): .objects + @echo -n 'Creating $@ ...' + @$(RM_QUIET) $(TARGET) +ifeq "$(ZLSHARED)" "yes" + @$(LD) $(LDFLAGS) -shared -Wl,-soname,$(TARGET_SONAME) -o $(TARGET) $(patsubst %, %/*.o, $(SUBDIRS)) $(CORE_LIBS) -lunibreak -lfribidi +#@$(LD) $(LDFLAGS) -dynamiclib -dylinker_install_name $(TARGET_SONAME) -o $(TARGET) $(patsubst %, %/*.o, $(SUBDIRS)) $(CORE_LIBS) $(EXTERNAL_LIBS) -llinebreak -lfribidi + @ln -sf $(TARGET) $(TARGET_SONAME) + @ln -sf $(TARGET) $(TARGET_SHORTNAME) +else + @$(AR) $(TARGET) $(patsubst %, %/*.o, $(SUBDIRS)) +endif + @echo ' OK' + +SHARE_ZLIBRARY = $(DESTDIR)$(SHAREDIR)/zlibrary + +do_install: + @install -d $(SHARE_ZLIBRARY) + @install -m 0644 $(wildcard data/hyphenationPatterns.zip) $(SHARE_ZLIBRARY) +ifeq "$(ZLSHARED)" "yes" + @install -d $(DESTDIR)$(LIBDIR) + @install $(TARGET) $(DESTDIR)$(LIBDIR) + @ln -sf $(TARGET) $(DESTDIR)$(LIBDIR)/$(TARGET_SONAME) + @ln -sf $(TARGET) $(DESTDIR)$(LIBDIR)/$(TARGET_SHORTNAME) +endif + +do_install_dev: + @install -d $(DESTDIR)$(LIBDIR) +ifeq "$(ZLSHARED)" "yes" + @ln -sf $(TARGET) $(DESTDIR)$(LIBDIR)/$(TARGET_SHORTNAME) +else + @install $(TARGET) $(DESTDIR)$(LIBDIR) +endif + @install -d $(DESTDIR)$(INCDIR)/zlibrary/text + @install -m 0644 $(wildcard include/*.h) $(DESTDIR)$(INCDIR)/zlibrary/text + +clean: + @for subdir in $(SUBDIRS); do \ + if [ -d $$subdir ]; then \ + $(MAKE) -C $$subdir -f $(MAKEFILESDIR)/subdir.mk clean; \ + fi; \ + done; + @$(RM) *.so *.so.* *.dylib *.a diff --git a/.pc/0008-951-fix-calling-compiler.patch/makefiles/arch/desktop.mk b/.pc/0008-951-fix-calling-compiler.patch/makefiles/arch/desktop.mk new file mode 100644 index 0000000..90abdf2 --- /dev/null +++ b/.pc/0008-951-fix-calling-compiler.patch/makefiles/arch/desktop.mk @@ -0,0 +1,24 @@ +include $(ROOTDIR)/makefiles/arch/unix.mk + +ifeq "$(INSTALLDIR)" "" + INSTALLDIR=/usr +endif +IMAGEDIR = $(INSTALLDIR)/share/pixmaps +APPIMAGEDIR = $(INSTALLDIR)/share/pixmaps/%APPLICATION_NAME% + + +CCACHE = $(shell if which ccache > /dev/null; then echo "ccache"; fi) #if ccache is not installed, do not use it +CC = $(CCACHE) gcc +AR = ar rsu +LD = g++ + +CFLAGS = -pipe -fno-exceptions -Wall -Wno-ctor-dtor-privacy -W -DLIBICONV_PLUG +LDFLAGS = +EXTERNAL_INCLUDE = $(shell $(PKG_CONFIG) --cflags fribidi) + +MOC = "$(shell $(PKG_CONFIG) --variable=host_bins Qt5Core)/moc" +QTINCLUDE = $(shell $(PKG_CONFIG) --cflags Qt5Gui Qt5Widgets Qt5Network) +UILIBS = $(shell $(PKG_CONFIG) --libs Qt5Gui Qt5Widgets Qt5Network) + +RM = rm -rvf +RM_QUIET = rm -rf diff --git a/.pc/0008-951-fix-calling-compiler.patch/makefiles/gtksubdir.mk b/.pc/0008-951-fix-calling-compiler.patch/makefiles/gtksubdir.mk new file mode 100644 index 0000000..aed94f3 --- /dev/null +++ b/.pc/0008-951-fix-calling-compiler.patch/makefiles/gtksubdir.mk @@ -0,0 +1,28 @@ +include $(ROOTDIR)/makefiles/config.mk + +INCLUDE = $(ZINCLUDE) $(EXTERNAL_INCLUDE) $(GTKINCLUDE) + +HEADERS = $(wildcard *.h) +CSOURCES = $(wildcard *.c) +SOURCES = $(wildcard *.cpp) +OBJECTS = $(patsubst %.c, %.o, $(CSOURCES)) +OBJECTS += $(patsubst %.cpp, %.o, $(SOURCES)) + +.SUFFIXES: .c .cpp .o .h + +.c.o: + @echo -n 'Compiling $@ ...' + @$(CC) -MMD -c $(CFLAGS) $(INCLUDE) $< + @echo ' OK' + +.cpp.o: + @echo -n 'Compiling $@ ...' + @$(CC) -MMD -c $(CFLAGS) $(INCLUDE) $< + @echo ' OK' + +all: $(OBJECTS) + +clean: + @$(RM) *.o *.d + +-include *.d diff --git a/.pc/0008-951-fix-calling-compiler.patch/makefiles/platforms.mk b/.pc/0008-951-fix-calling-compiler.patch/makefiles/platforms.mk new file mode 100644 index 0000000..df83885 --- /dev/null +++ b/.pc/0008-951-fix-calling-compiler.patch/makefiles/platforms.mk @@ -0,0 +1,15 @@ +ifeq "$(TARGET_ARCH)$(UI_TYPE)" "" + include $(ROOTDIR)/makefiles/target.mk +endif + +ifeq "$(TARGET_ARCH)" "" +$(error TARGET_ARCH is not defined. Please edit $(ROOTDIR)/makefiles/target.mk) +endif + +ifeq "$(UI_TYPE)" "" +$(error UI_TYPE is not defined. Please edit $(ROOTDIR)/makefiles/target.mk) +endif + +ifeq "$(TARGET_STATUS)" "" + TARGET_STATUS = release +endif diff --git a/.pc/0008-951-fix-calling-compiler.patch/makefiles/qsubdir.mk b/.pc/0008-951-fix-calling-compiler.patch/makefiles/qsubdir.mk new file mode 100644 index 0000000..14b4efc --- /dev/null +++ b/.pc/0008-951-fix-calling-compiler.patch/makefiles/qsubdir.mk @@ -0,0 +1,28 @@ +include $(ROOTDIR)/makefiles/config.mk +-include moc.mk + +INCLUDE = $(QTINCLUDE) $(ZINCLUDE) $(EXTERNAL_INCLUDE) + +HEADERS = $(wildcard *.h) +SOURCES = $(wildcard *.cpp) +OBJMOC = $(patsubst %.cpp, %.o, $(SRCMOC)) +OBJECTS = $(patsubst %.cpp, %.o, $(SOURCES)) + +.SUFFIXES: .cpp .moc.cpp .moc.o .o .h + +.cpp.o: + @echo -n 'Compiling $@ ...' + @$(CC) -MMD -c $(CFLAGS) $(INCLUDE) $< + @echo ' OK' + +.h.moc.cpp: + @echo -n 'Generating $@ ...' + @$(MOC) $< -o $@ + @echo ' OK' + +all: $(OBJECTS) $(OBJMOC) + +clean: + @$(RM) *.o *.moc.cpp *.d + +-include *.d diff --git a/.pc/0008-951-fix-calling-compiler.patch/makefiles/subdir.mk b/.pc/0008-951-fix-calling-compiler.patch/makefiles/subdir.mk new file mode 100644 index 0000000..b364211 --- /dev/null +++ b/.pc/0008-951-fix-calling-compiler.patch/makefiles/subdir.mk @@ -0,0 +1,48 @@ +include $(ROOTDIR)/makefiles/config.mk + +INCLUDE = $(ZINCLUDE) $(EXTERNAL_INCLUDE) + +HEADERS = $(wildcard *.h) +SOURCES_CPP = $(wildcard *.cpp) +SOURCES_OBJCPP = $(wildcard *.M) +SOURCES_OBJC = $(wildcard *.m) +OBJECTS = $(patsubst %.cpp, %.o, $(SOURCES_CPP)) $(patsubst %.M, %.o, $(SOURCES_OBJCPP)) $(patsubst %.m, %.o, $(SOURCES_OBJC)) + +.SUFFIXES: .cpp .M .m .o .h + +.cpp.o: + @echo -n 'Compiling $@ ...' +ifdef CFLAGS_NOARCH + @$(CC) -MM $(CFLAGS_PRE) $(INCLUDE) $< -o `basename $< .cpp`.d + @$(CC) -c $(CFLAGS) $(INCLUDE) $< +else + @$(CC) -MMD -c $(CFLAGS) $(INCLUDE) $< +endif + @echo ' OK' + +.M.o: + @echo -n 'Compiling $@ ...' +ifdef CFLAGS_NOARCH + @$(CC) -MM $(CFLAGS_PRE) $(INCLUDE) $< -o `basename $< .M`.d + @$(CC) -c $(CFLAGS) $(INCLUDE) $< +else + @$(CC) -MMD -c $(CFLAGS) $(INCLUDE) $< +endif + @echo ' OK' + +.m.o: + @echo -n 'Compiling $@ ...' +ifdef CFLAGS_NOARCH + @$(CC) -MM $(CFLAGS_PRE) $(INCLUDE) $< -o `basename $< .m`.d + @$(CC) -c $(CFLAGS) $(INCLUDE) $< +else + @$(CC) -MMD -c $(CFLAGS) $(INCLUDE) $< +endif + @echo ' OK' + +all: $(OBJECTS) + +clean: + @$(RM) *.o *.s *.ld *.d + +-include *.d diff --git a/.pc/0009-fbreader-Makefile-do-not-try-to-install-empty-format.patch/fbreader/Makefile b/.pc/0009-fbreader-Makefile-do-not-try-to-install-empty-format.patch/fbreader/Makefile new file mode 100644 index 0000000..0d5ac7b --- /dev/null +++ b/.pc/0009-fbreader-Makefile-do-not-try-to-install-empty-format.patch/fbreader/Makefile @@ -0,0 +1,72 @@ +ROOTDIR = $(CURDIR)/.. + +MAKEFILESDIR = $(ROOTDIR)/makefiles + +include $(MAKEFILESDIR)/config.mk + +TARGET = FBReader +target = fbreader + +ALL_SUBDIRS = src src/database src/database/sqldb src/database/sqldb/implsqlite src/database/booksdb src/database/booksdb/runnables src/database/networkdb src/database/networkdb/runnables src/migration src/options src/library src/bookmodel src/formats src/formats/fb2 src/formats/docbook src/formats/css src/formats/html src/formats/pdb src/formats/txt src/formats/tcr src/formats/chm src/formats/xhtml src/formats/oeb src/formats/rtf src/formats/openreader src/formats/pdf src/formats/doc src/formats/dummy src/formats/util src/external src/fbreader src/encodingOption src/network src/network/authentication src/network/atom src/network/opds src/network/litres src/network/tree src/network/authentication/litres src/blockTree src/libraryActions src/libraryTree src/networkActions src/tree src/optionsDialog src/optionsDialog/bookInfo src/optionsDialog/library src/optionsDialog/network src/optionsDialog/system src/optionsDialog/reading src/optionsDialog/lookAndFeel +ALL_ARCHSUBDIRS = desktop pdaxrom opie zaurus maemo openzaurus pma400 win32 + +SUBDIRS = src/database src/database/sqldb src/database/sqldb/implsqlite src/database/booksdb src/database/booksdb/runnables src/database/networkdb src/database/networkdb/runnables src/migration src/options src/library src/bookmodel \ + src/formats src/formats/fb2 src/formats/css src/formats/html src/formats/pdb src/formats/txt src/formats/tcr src/formats/chm src/formats/xhtml src/formats/oeb src/formats/rtf src/formats/openreader src/formats/doc src/formats/util \ + src/external src/fbreader src/encodingOption src/network src/network/authentication src/network/atom src/network/opds src/network/litres src/network/tree src/network/authentication/litres \ + src/blockTree src/libraryActions src/libraryTree src/networkActions src/tree src/optionsDialog src/optionsDialog/bookInfo src/optionsDialog/library src/optionsDialog/network src/optionsDialog/system src/optionsDialog/reading src/optionsDialog/lookAndFeel + +all: .resources + @for subdir in $(SUBDIRS); do \ + if ! $(MAKE) -C $$subdir -f $(MAKEFILESDIR)/subdir.mk; then \ + exit 1; \ + fi; \ + done; + @echo -n 'Linking $(TARGET) ...' + @$(LD) $(LDFLAGS) -o $(TARGET) `find src -name *.o` $(TEXT_LIBS) $(CORE_LIBS) $(ZLUI_LIB) -lsqlite3 + @echo ' OK' + +FBSHAREDIR = $(DESTDIR)$(SHAREDIR)/FBReader +VARIANT = $(TARGET_ARCH) +ifneq "$(RESOLUTION)" "" + VARIANT = $(TARGET_ARCH)_$(RESOLUTION) +endif + +APPIMAGEDIR_REAL = $(subst %application_name%,$(target),$(subst %APPLICATION_NAME%,$(TARGET),$(APPIMAGEDIR))) + +do_install: + @install -d $(DESTDIR)$(BINDIR) + @install $(TARGET) $(DESTDIR)$(BINDIR)/FBReader + @install -d $(FBSHAREDIR) + @install -d $(FBSHAREDIR)/help + @./scripts/install_help.sh $(VARIANT) $(FBSHAREDIR)/help + @install -d $(FBSHAREDIR)/formats/html + @install -m 0644 data/formats/html/html.ent $(FBSHAREDIR)/formats/html + @install -d $(FBSHAREDIR)/formats/xhtml + @install -m 0644 $(wildcard data/formats/xhtml/*.ent) $(FBSHAREDIR)/formats/xhtml + @install -d $(FBSHAREDIR)/formats/fb2 + @sed "s/VERSION/$(VERSION)/" data/formats/fb2/FBReaderVersion.ent > $(FBSHAREDIR)/formats/fb2/FBReaderVersion.ent + @install -m 0644 data/formats/fb2/fb2genres.xml $(FBSHAREDIR)/formats/fb2 + @install -d $(FBSHAREDIR)/default + @./scripts/install_toolbar_and_menu.sh $(VARIANT) $(UI_TYPE) $(FBSHAREDIR)/default + @./scripts/install_config.sh $(VARIANT) $(UI_TYPE) $(FBSHAREDIR)/default + @install -m 0644 data/default/external.$(TARGET_ARCH).xml $(FBSHAREDIR)/default/external.xml + @if [ -f data/default/messages.$(TARGET_ARCH).xml ]; then \ + install -m 0644 data/default/messages.$(TARGET_ARCH).xml $(FBSHAREDIR)/default/messages.xml; \ + fi + @install -d $(FBSHAREDIR)/resources + @install -m 0644 $(wildcard data/resources/*.xml) $(FBSHAREDIR)/resources + @install -d $(DESTDIR)$(APPIMAGEDIR_REAL) + @install -m 0644 $(wildcard data/icons/toolbar/$(VARIANT)/*.*) $(DESTDIR)$(APPIMAGEDIR_REAL) + @install -m 0644 $(wildcard data/icons/filetree/$(VARIANT)/*.*) $(DESTDIR)$(APPIMAGEDIR_REAL) + @install -m 0644 $(wildcard data/icons/booktree/new/*.*) $(DESTDIR)$(APPIMAGEDIR_REAL) + @install -m 0644 $(wildcard data/icons/*.*) $(DESTDIR)$(APPIMAGEDIR_REAL) + @$(MAKE) -C $(TARGET_ARCH) RESOLUTION=$(RESOLUTION) install + +clean: + @for subdir in $(ALL_SUBDIRS); do \ + $(MAKE) -C $$subdir -f $(MAKEFILESDIR)/subdir.mk clean; \ + done; + @for subdir in $(ALL_ARCHSUBDIRS); do \ + cd $$subdir; $(MAKE) clean; cd ..; \ + done; + @$(RM) $(TARGET) err diff --git a/.pc/0011-zlibrary-unix-curl-avoid-duplicate-case-in-a-switch.patch/zlibrary/core/src/unix/curl/ZLCurlNetworkManager.cpp b/.pc/0011-zlibrary-unix-curl-avoid-duplicate-case-in-a-switch.patch/zlibrary/core/src/unix/curl/ZLCurlNetworkManager.cpp new file mode 100644 index 0000000..542ec80 --- /dev/null +++ b/.pc/0011-zlibrary-unix-curl-avoid-duplicate-case-in-a-switch.patch/zlibrary/core/src/unix/curl/ZLCurlNetworkManager.cpp @@ -0,0 +1,320 @@ +/* + * Copyright (C) 2008-2012 Geometer Plus + * + * 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; either version 2 of the License, or + * (at your option) any later version. + * + * 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, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + * 02110-1301, USA. + */ + +#include +#include + +#include + +#include +#include +#include +#include +#include +#include + +#include "ZLCurlNetworkManager.h" + + + +class PostData : public ZLUserData { + +public: + PostData(); + ~PostData(); + + bool addItem(const std::string &name, const std::string &content); + + const curl_httppost *postItem() const; + +private: + curl_httppost *myPostItem; + curl_httppost *myLastItem; + +private: // disable copying + PostData(const PostData &); + const PostData &operator = (const PostData &); +}; + +PostData::PostData() : myPostItem(0), myLastItem(0) { +} + +PostData::~PostData() { + if (myPostItem != 0) { + curl_formfree(myPostItem); + } +} + +bool PostData::addItem(const std::string &name, const std::string &content) { + // TODO: url-encode content??? + return curl_formadd(&myPostItem, &myLastItem, + CURLFORM_COPYNAME, name.c_str(), + CURLFORM_COPYCONTENTS, content.c_str(), + CURLFORM_END) == 0; +} + +inline const curl_httppost *PostData::postItem() const { + return myPostItem; +} + + + +static std::size_t handleHeader(void *ptr, std::size_t size, std::size_t nmemb, ZLNetworkRequest *request) { + const std::size_t dataSize = size * nmemb; + return (request->handleHeader(ptr, dataSize)) ? dataSize : 0; +} + +static std::size_t handleContent(void *ptr, std::size_t size, std::size_t nmemb, ZLNetworkRequest *request) { + const std::size_t dataSize = size * nmemb; + return (request->handleContent(ptr, dataSize)) ? dataSize : 0; +} + + + +void ZLCurlNetworkManager::createInstance() { + ourInstance = new ZLCurlNetworkManager(); +} + + +void ZLCurlNetworkManager::setStandardOptions(CURL *handle, const std::string &proxy) const { + const std::string &agent = userAgent(); + if (!agent.empty()) { + curl_easy_setopt(handle, CURLOPT_USERAGENT, agent.c_str()); + } + if (useProxy()) { + curl_easy_setopt(handle, CURLOPT_PROXY, proxy.c_str()); + } + curl_easy_setopt(handle, CURLOPT_LOW_SPEED_LIMIT, 1L); + curl_easy_setopt(handle, CURLOPT_LOW_SPEED_TIME, TimeoutOption().value()); + curl_easy_setopt(handle, CURLOPT_CONNECTTIMEOUT, ConnectTimeoutOption().value()); + curl_easy_setopt(handle, CURLOPT_SSL_VERIFYPEER, 1L); + curl_easy_setopt(handle, CURLOPT_SSL_VERIFYHOST, 2L); + + const std::string cookies = CookiesPath(); + curl_easy_setopt(handle, CURLOPT_COOKIEFILE, cookies.c_str()); + curl_easy_setopt(handle, CURLOPT_COOKIEJAR, cookies.c_str()); +} + + +std::string ZLCurlNetworkManager::doBeforeRequest(ZLNetworkRequest &request) const { + const ZLResource &errorResource = ZLResource::resource("dialog")["networkError"]; + + if (!request.doBefore()) { + const std::string &err = request.errorMessage(); + if (!err.empty()) { + return err; + } + return ZLStringUtil::printf(errorResource["somethingWrongMessage"].value(), ZLNetworkUtil::hostFromUrl(request.url())); + } + + if (request.isInstanceOf(ZLNetworkPostRequest::TYPE_ID)) { + return doBeforePostRequest((ZLNetworkPostRequest &) request); + } + return ""; +} + +std::string ZLCurlNetworkManager::doBeforePostRequest(ZLNetworkPostRequest &request) const { + shared_ptr postDataPtr = new PostData; + PostData &postData = (PostData&)*postDataPtr; + + const std::vector > &data = request.postParameters(); + for (std::size_t i = 0; i < data.size(); ++i) { + if (!postData.addItem(data[i].first, data[i].second)) { + return "Invalid form data for " + ZLNetworkUtil::hostFromUrl(request.url()); // TODO: localize + } + } + + request.addUserData("postData", postDataPtr); + return ""; +} + + +void ZLCurlNetworkManager::setRequestOptions(CURL *handle, const ZLNetworkRequest &request) const { + curl_easy_setopt(handle, CURLOPT_URL, request.url().c_str()); + if (!request.sslCertificate().Path.empty()) { + curl_easy_setopt(handle, CURLOPT_CAINFO, request.sslCertificate().Path.c_str()); + } else if (!request.sslCertificate().DoVerify) { + curl_easy_setopt(handle, CURLOPT_SSL_VERIFYPEER, 0L); + } + + curl_easy_setopt(handle, CURLOPT_HEADERFUNCTION, handleHeader); + curl_easy_setopt(handle, CURLOPT_WRITEHEADER, &request); + curl_easy_setopt(handle, CURLOPT_WRITEFUNCTION, handleContent); + curl_easy_setopt(handle, CURLOPT_WRITEDATA, &request); + + switch (request.authenticationMethod()) { + case ZLNetworkRequest::NO_AUTH: + break; + + case ZLNetworkRequest::BASIC: +#if LIBCURL_VERSION_NUM >= 0x071301 + curl_easy_setopt(handle, CURLOPT_USERNAME, request.userName().c_str()); + curl_easy_setopt(handle, CURLOPT_PASSWORD, request.password().c_str()); +#else + curl_easy_setopt( + handle, CURLOPT_USERPWD, + (request.userName() + ':' + request.password()).c_str() + ); +#endif + curl_easy_setopt(handle, CURLOPT_HTTPAUTH, (long) CURLAUTH_BASIC); + break; + } + + curl_easy_setopt(handle, CURLOPT_FOLLOWLOCATION, request.isRedirectionSupported()); + + if (request.isInstanceOf(ZLNetworkPostRequest::TYPE_ID)) { + shared_ptr postDataPtr = request.getUserData("postData"); + PostData &postData = (PostData&)*postDataPtr; + + if (postData.postItem() != 0) { + curl_easy_setopt(handle, CURLOPT_HTTPPOST, postData.postItem()); + } + } +} + + +void ZLCurlNetworkManager::clearRequestOptions(ZLNetworkRequest &request) const { + if (request.isInstanceOf(ZLNetworkPostRequest::TYPE_ID)) { + request.removeUserData("postData"); + } +} + + + +std::string ZLCurlNetworkManager::perform(const ZLExecutionData::Vector &dataList) const { + const ZLResource &errorResource = ZLResource::resource("dialog")["networkError"]; + + if (dataList.empty()) { + return errorResource["emptyLibrariesList"].value(); + } + + std::set errors; + + const std::string proxy = proxyHost() + ':' + proxyPort(); + CURLM *handle = curl_multi_init(); + + std::map > handleToRequest; + + for (ZLExecutionData::Vector::const_iterator it = dataList.begin(); it != dataList.end(); ++it) { + if (it->isNull() || !(*it)->isInstanceOf(ZLNetworkRequest::TYPE_ID)) { + continue; + } + ZLNetworkRequest &request = (ZLNetworkRequest&)**it; + const std::string err = doBeforeRequest(request); + if (!err.empty()) { + errors.insert(err); + continue; + } + CURL *easyHandle = curl_easy_init(); + if (easyHandle != 0) { + handleToRequest[easyHandle] = *it; + setStandardOptions(easyHandle, proxy); + setRequestOptions(easyHandle, request); + curl_multi_add_handle(handle, easyHandle); + } + } + + int counter; + CURLMcode res; + do { + res = curl_multi_perform(handle, &counter); + } while ((res == CURLM_CALL_MULTI_PERFORM) || (counter > 0)); + + CURLMsg *message; + do { + int queueSize; + message = curl_multi_info_read(handle, &queueSize); + if ((message != 0) && (message->msg == CURLMSG_DONE)) { + ZLNetworkRequest &request = (ZLNetworkRequest&)*handleToRequest[message->easy_handle]; + const std::string &url = request.url(); + + CURLcode result = message->data.result; + bool doAfterResult = request.doAfter(result == CURLE_OK); + if (result == CURLE_OK && !doAfterResult) { + result = CURLE_WRITE_ERROR; + } + + switch (result) { + case CURLE_OK: + break; + case CURLE_WRITE_ERROR: + if (!request.errorMessage().empty()) { + errors.insert(request.errorMessage()); + } else { + errors.insert(ZLStringUtil::printf(errorResource["somethingWrongMessage"].value(), ZLNetworkUtil::hostFromUrl(url))); + } + break; + default: + errors.insert(ZLStringUtil::printf(errorResource["somethingWrongMessage"].value(), ZLNetworkUtil::hostFromUrl(url))); + break; + case CURLE_COULDNT_RESOLVE_PROXY: + errors.insert(ZLStringUtil::printf(errorResource["couldntResolveProxyMessage"].value(), proxyHost())); + break; + case CURLE_COULDNT_RESOLVE_HOST: + errors.insert(ZLStringUtil::printf(errorResource["couldntResolveHostMessage"].value(), ZLNetworkUtil::hostFromUrl(url))); + break; + case CURLE_COULDNT_CONNECT: + errors.insert(ZLStringUtil::printf(errorResource["couldntConnectMessage"].value(), ZLNetworkUtil::hostFromUrl(url))); + break; + case CURLE_OPERATION_TIMEDOUT: + errors.insert(errorResource["operationTimedOutMessage"].value()); + break; + case CURLE_SSL_CONNECT_ERROR: + errors.insert(ZLStringUtil::printf(errorResource["sslConnectErrorMessage"].value(), curl_easy_strerror(CURLE_SSL_CONNECT_ERROR))); + break; +#if LIBCURL_VERSION_NUM > 0x071100 + case CURLE_PEER_FAILED_VERIFICATION: +#else + case CURLE_SSL_PEER_CERTIFICATE: +#endif + errors.insert(ZLStringUtil::printf(errorResource["peerFailedVerificationMessage"].value(), ZLNetworkUtil::hostFromUrl(url))); + break; + case CURLE_SSL_CACERT: + errors.insert(ZLStringUtil::printf(errorResource["sslCertificateAuthorityMessage"].value(), ZLNetworkUtil::hostFromUrl(url))); + break; + case CURLE_SSL_CACERT_BADFILE: + errors.insert(ZLStringUtil::printf(errorResource["sslBadCertificateFileMessage"].value(), request.sslCertificate().Path)); + break; + case CURLE_SSL_SHUTDOWN_FAILED: + errors.insert(ZLStringUtil::printf(errorResource["sslShutdownFailedMessage"].value(), ZLNetworkUtil::hostFromUrl(url))); + break; + } + } + } while ((message != 0) && (errors.size() < 3)); + + for (std::map >::const_iterator jt = handleToRequest.begin(); jt != handleToRequest.end(); ++jt) { + CURL *easyHandle = jt->first; + curl_multi_remove_handle(handle, easyHandle); + curl_easy_cleanup(easyHandle); + + ZLNetworkRequest &request = (ZLNetworkRequest&)*jt->second; + clearRequestOptions(request); + } + handleToRequest.clear(); + curl_multi_cleanup(handle); + + std::string result; + for (std::set::const_iterator et = errors.begin(); et != errors.end(); ++et) { + if (!result.empty()) { + result += '\n'; + } + result += *et; + } + return result; +} diff --git a/.pc/0013-fbreader-Makefile-make-linking-order-reproducible.patch/fbreader/Makefile b/.pc/0013-fbreader-Makefile-make-linking-order-reproducible.patch/fbreader/Makefile new file mode 100644 index 0000000..be5ee54 --- /dev/null +++ b/.pc/0013-fbreader-Makefile-make-linking-order-reproducible.patch/fbreader/Makefile @@ -0,0 +1,70 @@ +ROOTDIR = $(CURDIR)/.. + +MAKEFILESDIR = $(ROOTDIR)/makefiles + +include $(MAKEFILESDIR)/config.mk + +TARGET = FBReader +target = fbreader + +ALL_SUBDIRS = src src/database src/database/sqldb src/database/sqldb/implsqlite src/database/booksdb src/database/booksdb/runnables src/database/networkdb src/database/networkdb/runnables src/migration src/options src/library src/bookmodel src/formats src/formats/fb2 src/formats/docbook src/formats/css src/formats/html src/formats/pdb src/formats/txt src/formats/tcr src/formats/chm src/formats/xhtml src/formats/oeb src/formats/rtf src/formats/openreader src/formats/pdf src/formats/doc src/formats/dummy src/formats/util src/external src/fbreader src/encodingOption src/network src/network/authentication src/network/atom src/network/opds src/network/litres src/network/tree src/network/authentication/litres src/blockTree src/libraryActions src/libraryTree src/networkActions src/tree src/optionsDialog src/optionsDialog/bookInfo src/optionsDialog/library src/optionsDialog/network src/optionsDialog/system src/optionsDialog/reading src/optionsDialog/lookAndFeel +ALL_ARCHSUBDIRS = desktop pdaxrom opie zaurus maemo openzaurus pma400 win32 + +SUBDIRS = src/database src/database/sqldb src/database/sqldb/implsqlite src/database/booksdb src/database/booksdb/runnables src/database/networkdb src/database/networkdb/runnables src/migration src/options src/library src/bookmodel \ + src/formats src/formats/fb2 src/formats/css src/formats/html src/formats/pdb src/formats/txt src/formats/tcr src/formats/chm src/formats/xhtml src/formats/oeb src/formats/rtf src/formats/openreader src/formats/doc src/formats/util \ + src/external src/fbreader src/encodingOption src/network src/network/authentication src/network/atom src/network/opds src/network/litres src/network/tree src/network/authentication/litres \ + src/blockTree src/libraryActions src/libraryTree src/networkActions src/tree src/optionsDialog src/optionsDialog/bookInfo src/optionsDialog/library src/optionsDialog/network src/optionsDialog/system src/optionsDialog/reading src/optionsDialog/lookAndFeel + +all: .resources + @for subdir in $(SUBDIRS); do \ + if ! $(MAKE) -C $$subdir -f $(MAKEFILESDIR)/subdir.mk; then \ + exit 1; \ + fi; \ + done; + @echo -n 'Linking $(TARGET) ...' + @$(LD) $(LDFLAGS) -o $(TARGET) `find src -name *.o` $(TEXT_LIBS) $(CORE_LIBS) $(ZLUI_LIB) -lsqlite3 + @echo ' OK' + +FBSHAREDIR = $(DESTDIR)$(SHAREDIR)/FBReader +VARIANT = $(TARGET_ARCH) +ifneq "$(RESOLUTION)" "" + VARIANT = $(TARGET_ARCH)_$(RESOLUTION) +endif + +APPIMAGEDIR_REAL = $(subst %application_name%,$(target),$(subst %APPLICATION_NAME%,$(TARGET),$(APPIMAGEDIR))) + +do_install: + @install -d $(DESTDIR)$(BINDIR) + @install $(TARGET) $(DESTDIR)$(BINDIR)/FBReader + @install -d $(FBSHAREDIR) + @install -d $(FBSHAREDIR)/help + @./scripts/install_help.sh $(VARIANT) $(FBSHAREDIR)/help + @install -d $(FBSHAREDIR)/formats/html + @install -m 0644 data/formats/html/html.ent $(FBSHAREDIR)/formats/html + @install -d $(FBSHAREDIR)/formats/fb2 + @sed "s/VERSION/$(VERSION)/" data/formats/fb2/FBReaderVersion.ent > $(FBSHAREDIR)/formats/fb2/FBReaderVersion.ent + @install -m 0644 data/formats/fb2/fb2genres.xml $(FBSHAREDIR)/formats/fb2 + @install -d $(FBSHAREDIR)/default + @./scripts/install_toolbar_and_menu.sh $(VARIANT) $(UI_TYPE) $(FBSHAREDIR)/default + @./scripts/install_config.sh $(VARIANT) $(UI_TYPE) $(FBSHAREDIR)/default + @install -m 0644 data/default/external.$(TARGET_ARCH).xml $(FBSHAREDIR)/default/external.xml + @if [ -f data/default/messages.$(TARGET_ARCH).xml ]; then \ + install -m 0644 data/default/messages.$(TARGET_ARCH).xml $(FBSHAREDIR)/default/messages.xml; \ + fi + @install -d $(FBSHAREDIR)/resources + @install -m 0644 $(wildcard data/resources/*.xml) $(FBSHAREDIR)/resources + @install -d $(DESTDIR)$(APPIMAGEDIR_REAL) + @install -m 0644 $(wildcard data/icons/toolbar/$(VARIANT)/*.*) $(DESTDIR)$(APPIMAGEDIR_REAL) + @install -m 0644 $(wildcard data/icons/filetree/$(VARIANT)/*.*) $(DESTDIR)$(APPIMAGEDIR_REAL) + @install -m 0644 $(wildcard data/icons/booktree/new/*.*) $(DESTDIR)$(APPIMAGEDIR_REAL) + @install -m 0644 $(wildcard data/icons/*.*) $(DESTDIR)$(APPIMAGEDIR_REAL) + @$(MAKE) -C $(TARGET_ARCH) RESOLUTION=$(RESOLUTION) install + +clean: + @for subdir in $(ALL_SUBDIRS); do \ + $(MAKE) -C $$subdir -f $(MAKEFILESDIR)/subdir.mk clean; \ + done; + @for subdir in $(ALL_ARCHSUBDIRS); do \ + cd $$subdir; $(MAKE) clean; cd ..; \ + done; + @$(RM) $(TARGET) err diff --git a/.pc/1014-desktop-mime-type.patch/fbreader/desktop/desktop b/.pc/1014-desktop-mime-type.patch/fbreader/desktop/desktop new file mode 100644 index 0000000..bb35fe3 --- /dev/null +++ b/.pc/1014-desktop-mime-type.patch/fbreader/desktop/desktop @@ -0,0 +1,23 @@ +[Desktop Entry] +Name=FBReader +GenericName=E-book reader +GenericName[ar]=قارئ الكتب الإلكترونية +GenericName[es]=Lector de Libros +GenericName[hu]=E-könyv olvasó +GenericName[pl]=Czytnik e-książek +GenericName[ru]=Чтение Ñлектронных книг +GenericName[zh_CN]=电å­ä¹¦é˜…读 +Comment=FBReader E-book reader +Comment[ar]=قارئ الكتب الإلكترونية +Comment[es]=FBReader Lector de Libros Elecrónicos +Comment[hu]=FBReader, E-könyv olvasó program +Comment[pl]=FBReader, czytnik książek elektronicznych +Comment[ru]=FBReader, программа Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ Ñлектронных книг +Comment[zh_CN]=FBReader 电å­ä¹¦é˜…读器 +TryExec=FBReader +Exec=FBReader %F +StartupNotify=true +Terminal=false +Type=Application +Icon=FBReader +Categories=Office;Viewer;Literature; diff --git a/.pc/applied-patches b/.pc/applied-patches new file mode 100644 index 0000000..79b3b93 --- /dev/null +++ b/.pc/applied-patches @@ -0,0 +1,9 @@ +0001-ZLQtFSManager.cpp.patch +0002-Qt5.patch +0003-gcc-6.patch +0004-prevent-so-install.patch +0008-951-fix-calling-compiler.patch +0009-fbreader-Makefile-do-not-try-to-install-empty-format.patch +0011-zlibrary-unix-curl-avoid-duplicate-case-in-a-switch.patch +0013-fbreader-Makefile-make-linking-order-reproducible.patch +1014-desktop-mime-type.patch diff --git a/ChangeLog b/ChangeLog new file mode 100644 index 0000000..a484c92 --- /dev/null +++ b/ChangeLog @@ -0,0 +1,98 @@ +===== 0.99.4 (November 30, 2012) ===== + +* Bulgarian hyphenation patterns, converted by Kaloyan Raev +* Network catalogs: fixed Cyryllic names rendering +* Showing suggestions in search field +* Fixed bug with duplicates series items in LitRes catalog +* Fixed different network bugs in Network Library + +===== 0.99.3 (November 18, 2012) ===== + +* Code is compilable for MacOS X (10.5+) with Qt library +* Added ability to read books from archives like ".tar", ".tar.gz" and ".tar.bz2" (original code by Serge Osnach) +* Added 'Recommend' item for LitRes network catalog +* Added convenient classification (by date, by author, by title, by series) for 'My Books' in LitRes network catalog +* Fixed crash on some ePubs from Project Gutenberg +* Encoding detection for doc (ms word) files +* RTF: fixed footnotes support +* ePub: fixed
formatted text support
+* Implemented new network library view
+* Fixed crash after library scanning or book opening on some *.doc files
+
+===== 0.99.2 (September 7, 2012) =====
+
+* Added "My Books" (purchased books) section for LitRes catalog
+* Hebrew localization (by David Kachan)
+* Updated Finnish localization (by Marko Vertainen)
+* Misc build & installation fixes (by kensington)
+
+===== 0.99.1 (July 26, 2012) =====
+
+* Fixed bug with freezing at start
+* List of network libraries is updated now from fbreader.org
+* Fixed working with secured connections (now authentification and books buying on LitRes.ru catalog works)
+* Image support for Ms-Word doc format
+
+===== 0.99.0 (July 5, 2012) =====
+
+* Esperanto interface localization has been added (by Katarína Nosková)
+* Hyphenation patterns for Polish (by Tomasz DÅ‚ugosz)
+* Polish interface localization (by Tomasz DÅ‚ugosz)
+* Speed of library scanning has been increased
+* Plugin for reading MsWord (*.doc) books
+* Fixed zip reading for several ePub books (e.g. for “die Zeit†ePubs)
+* Support for book series in ePubs with point format (e.g. "2.5") has been added
+* Fixed image support in RTF books
+* Encoding & language recognizing has been improved
+* As from version 0.99.0 FBReader for Linux supports qt4 interface only
+
+===== 0.14.20100422 (April 22, 2010) =====
+
+* Chinese text drawing optimization (thanks to You Sheng (SmartDevices) for
+  idea)
+* Mobipocket image processing has been fixed
+* Standard file open dialog is now used instead of the old specially written
+  for FBReader
+* CSS processing for multi-xhtml epubs has been fixed (in 0.12.* the CSS
+  loaded for the first xhtml was also applied for all other xhtmls)
+* Chinese encodings detection has been improved
+* Language/encoding detection for small files has been improved
+* A problem with TOC in newest O'Reilly ePubs has been fixed
+* A detection of book format by mime-type (not by file extension) has been
+  partially implemented (in Gtk+ version only)
+* Polish interface localization has been added (by Rafał Bakuła)
+
+===== 0.12.10 (April 1, 2010) =====
+
+* Processing of external hyperlinks in epubs has been fixed
+
+===== 0.12.9 (March 25, 2010) =====
+
+* Processing of epub local hyperlinks of form "../dir/file.html" has been
+  fixed
+* Code is now compilable with gcc 4.4.* (missing include directives have been
+  added)
+
+===== 0.12.8 (March 22, 2010) =====
+
+* Smashwords library support has been improved: purchase links have been added
+* LitRes library support has been updated: since this version FBReader uses an
+  OPDS proxy located at http://data.fbreader.org/ for most operations with the
+  LitRes catalog
+* Processing of the xhtml hyperlinks in html encoded form (like
+  '/files/This%20is%20a%20link') has been fixed
+* A seg.fault during scanning several archives has been fixed
+* Lithuanian localization has been updated
+* Vietnamese language/encoding detection patterns have been added
+* Parsing of decimal point in CSS files has been fixed (it doesn't depend on
+the current locale now)
+
+===== 0.12.7 (March 5, 2010) =====
+
+* Vietnamese localization has been added
+* LitRes catalog browsing broken in 0.12.6 has been fixed
+
+===== 0.12.6 (March 3, 2010) =====
+
+* A processing of ePub files with incorrect CRC/entry size information
+  has been fixed. Such files are available e.g. from the FictionWise site.
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..df3706f
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,44 @@
+ROOTDIR = $(CURDIR)
+
+include makefiles/platforms.mk
+
+ZLIBDIRS = zlibrary/core zlibrary/text zlibrary/ui
+APPDIRS = fbreader 
+
+all:
+	@for dir in $(ZLIBDIRS) $(APPDIRS); do \
+		if [ -d $$dir ]; then \
+			cd $$dir; \
+			if ! $(MAKE); then \
+				exit 1; \
+			fi; \
+			cd $(ROOTDIR); \
+		fi; \
+	done;
+
+install: all do_install
+
+do_install:
+	@for dir in $(ZLIBDIRS) $(APPDIRS); do \
+		if [ -d $$dir ]; then \
+			cd $$dir; $(MAKE) $@; cd $(ROOTDIR); \
+		fi; \
+	done
+
+do_install_dev:
+	@for dir in $(ZLIBDIRS); do \
+		if [ -d $$dir ]; then \
+			cd $$dir; $(MAKE) $@; cd $(ROOTDIR); \
+		fi; \
+	done
+
+clean:
+	@for dir in $(ZLIBDIRS) $(APPDIRS); do \
+		if [ -d $$dir ]; then \
+			cd $$dir; $(MAKE) $@; cd $(ROOTDIR); \
+		fi; \
+	done
+
+distclean: clean
+	@rm -rvf *.tgz *.tar.gz *.ipk *.deb *.prc *.exe *.log *.dsc *.changes *.rpm
+	@rm -rf tmp packages packages-nonGPL fbreader-*
diff --git a/README.build b/README.build
new file mode 100644
index 0000000..2b348db
--- /dev/null
+++ b/README.build
@@ -0,0 +1,72 @@
+This is a very short description of FBReader build procedure.
+
+1. Compiler.
+
+All version of FBReader are configured for building on linux desktop
+computer. You need gcc compiler for building desktop version or cross
+gcc compiler for building package for another platform.
+
+2. Libraries.
+
+FBReader requires
+  ** expat -- library for XML parsing. AFAIK, all popular destributions
+     includes package with name like 'expat-dev' or 'libexpat-dev'.
+     If you cannot find expat in your distribution, please visit
+     http://expat.sourceforge.net
+  ** libz and libbz2 -- libraries for zip and bzip2 (de)compression
+  ** UI library -- this depends on your target platform. For desktop,
+       Qt library, version 3.* or 4.*
+     OR
+       GTK+ library, version >= 2.4 
+     should be installed
+  ** libunibreak (http://vimgadgets.cvs.sourceforge.net/vimgadgets/common/tools/linebreak/) -- library for line breaking in a Unicode sequence
+  ** libfribidi -- for bidirectional text support
+  ** libcurl, version >= 7.17 -- for network libraries integration
+	** libsqlite3
+  ** for win32 version, we use also libpng, libungif, libjpeg and libtiff
+
+3. How to configure.
+
+Before building FBReader, you should check (and maybe edit) 2 files:
+  ** makefiles/target.mk
+     In this file you should define 3 variables:
+       TARGET_ARCH -- target platform for building FBReader
+       UI_TYPE -- UI library
+       TARGET_STATUS -- "release", "debug" or "profile". "release" is
+         reasonable choice for almost all users.
+
+     Possible pairs for TARGET_ARCH + UI_TYPE are:
+        TARGET_ARCH = desktop               UI_TYPE = gtk
+        TARGET_ARCH = desktop               UI_TYPE = qt
+        TARGET_ARCH = desktop               UI_TYPE = qt4
+        TARGET_ARCH = pepperpad3            UI_TYPE = gtk
+        TARGET_ARCH = zaurus                UI_TYPE = qtopia-240x320
+        TARGET_ARCH = zaurus                UI_TYPE = qtopia-640x480
+        TARGET_ARCH = openzaurus            UI_TYPE = opie
+        TARGET_ARCH = openzaurus            UI_TYPE = gpe
+        TARGET_ARCH = pdaxrom               UI_TYPE = gtk
+        TARGET_ARCH = pdaxrom               UI_TYPE = qt
+        TARGET_ARCH = opensimpad-0.9.0      UI_TYPE = opie
+        TARGET_ARCH = maemo                 UI_TYPE = maemo2
+        TARGET_ARCH = maemo                 UI_TYPE = maemo4
+        TARGET_ARCH = pma400                UI_TYPE = qtopia
+        TARGET_ARCH = moto                  UI_TYPE = ezx
+        TARGET_ARCH = win32                 UI_TYPE = win32
+        TARGET_ARCH = macosx                UI_TYPE = cocoa
+
+  ** makefiles/arch/$(TARGET_ARCH).mk
+     This file defines compiler name and location, headers and libraries
+     locations, compilation flags, installation path (for desktop), etc.
+
+4. How to build.
+
+Just type 'make' in FBReader root directory. (FBReader root directory ==
+directory containing this file.)
+
+5. How to install.
+
+If you want to install FBReader on your desktop computer, just run 'make install'
+as root in FBReader root directory.
+
+If you want to create package for another platform, run 'make packages' in
+FBReader root directory.
diff --git a/build_packages.sh b/build_packages.sh
new file mode 100755
index 0000000..96c7564
--- /dev/null
+++ b/build_packages.sh
@@ -0,0 +1,155 @@
+#! /bin/bash
+
+version=`cat fbreader/VERSION`
+tmpdir=fbreader-$version
+
+if [ "$1" == "-non-GPL" ]; then
+	distdir=distributions-nonGPL
+	pkgdir=packages-nonGPL
+	prepare_nonGPL=true
+	shift;
+else
+	distdir=distributions
+	pkgdir=packages
+	prepare_nonGPL=false
+fi
+
+if [ $# -lt 1 ]; then
+	echo "usage:"
+	echo "  $0 [-non-GPL] "
+	echo "or"
+	echo "  $0 [-non-GPL] all"
+	echo "or"
+	echo "  $0 [-non-GPL] supported"
+	echo ""
+	echo "available architectures are:"
+	for pkgtype in $distdir/*; do
+		for archtype in $pkgtype/*; do
+			echo "  `basename $archtype`-`basename $pkgtype`";
+		done;
+	done;
+	exit 1;
+fi
+
+create_tmpdir() {
+	mkdir $tmpdir
+	cp -r Makefile build_packages.sh zlibrary fbreader makefiles README.build CHANGES* distributions distributions-nonGPL ChangeLog $tmpdir
+	rm -rf `find $tmpdir -name ".svn"`
+	make -C $tmpdir distclean 1> /dev/null 2>&1
+
+	if [ "$prepare_nonGPL" == "true" ]; then
+		pushd $tmpdir > /dev/null;
+		echo -en "Removing Arabic localization... ";
+		rm -rf fbreader/data/resources/ar.xml zlibrary/core/data/resources/ar.xml fbreader/data/help/MiniHelp.*.ar.fb2;
+		echo OK;
+		echo -en "Removing Finnish localization... ";
+		rm -rf fbreader/data/resources/fi.xml zlibrary/core/data/resources/fi.xml fbreader/data/help/MiniHelp.*.fi.fb2;
+		echo OK;
+		echo -en "Removing Swedish localization... ";
+		rm -rf fbreader/data/resources/sv.xml zlibrary/core/data/resources/sv.xml fbreader/data/help/MiniHelp.*.sv.fb2;
+		echo OK;
+		echo -en "Removing German localization... ";
+		rm -rf fbreader/data/resources/de.xml zlibrary/core/data/resources/de.xml fbreader/data/help/MiniHelp.*.de.fb2;
+		echo OK;
+		echo -en "Removing Czech hyphenation patterns... ";
+		zip -dq zlibrary/text/data/hyphenationPatterns.zip cs.pattern;
+		echo OK;
+		echo -en "Removing Indonesian hyphenation patterns... ";
+		zip -dq zlibrary/text/data/hyphenationPatterns.zip id.pattern;
+		echo OK;
+		echo -en "Removing Qt-based interface... ";
+		rm -rf zlibrary/ui/src/opie zlibrary/ui/src/qtopia zlibrary/ui/src/qt zlibrary/ui/src/qt4
+		echo OK;
+		popd > /dev/null;
+	fi;
+}
+
+remove_tmpdir() {
+	rm -rf $tmpdir
+}
+
+build_package() {
+	make_package="make -f makefiles/packaging.mk -C $tmpdir DIST_DIR=$distdir"
+
+	case "$2" in
+		debian)
+			case "$1" in
+				maemo)
+					/scratchbox/login sb-conf se SDK_ARM
+					/scratchbox/login -d `pwd` $make_package ARCHITECTURE=$1 $2
+					;;
+				maemo2|maemo3)
+					/scratchbox/login sb-conf se SDK_ARMEL
+					/scratchbox/login -d `pwd` $make_package ARCHITECTURE=$1 $2
+					;;
+				maemo4)
+					/scratchbox/login sb-conf se CHINOOK_ARMEL
+					/scratchbox/login -d `pwd` $make_package ARCHITECTURE=$1 $2
+					;;
+				maemo5)
+					/scratchbox/login sb-conf se FREMANTLE_ARMEL
+					/scratchbox/login -d `pwd` $make_package ARCHITECTURE=$1 $2
+					;;
+				*)
+					$make_package ARCHITECTURE=$1 $2
+					;;
+			esac;
+			mkdir -p $pkgdir/$1
+			mv -f $tmpdir/*.deb $tmpdir/*.dsc $tmpdir/*.changes $tmpdir/*.tar.gz $pkgdir/$1
+			;;
+		ipk|debipk)
+			$make_package ARCHITECTURE=$1 $2
+			mkdir -p $pkgdir/$1
+			mv -f $tmpdir/*.ipk $pkgdir/$1
+			;;
+		motopkg)
+			$make_package ARCHITECTURE=$1 $2
+			mkdir -p $pkgdir/$1
+			mv -f $tmpdir/*.pkg $pkgdir/$1
+			;;
+		tarball)
+			$make_package ARCHITECTURE=$1 $2
+			mkdir -p $pkgdir/$1
+			mv -f $tmpdir/*.tgz $pkgdir/$1
+			;;
+		nsi)
+			$make_package ARCHITECTURE=$1 $2
+			mkdir -p $pkgdir/$1
+			mv -f $tmpdir/*.exe $pkgdir/$1
+			;;
+		*)
+			echo no rule is defined for package type ''$2'';
+			;;
+	esac;
+}
+
+if [ $1 == all ]; then
+	create_tmpdir
+	for pkgtype in $distdir/*; do
+		for archtype in $pkgtype/*; do
+			build_package `basename $archtype` `basename $pkgtype`;
+		done;
+	done;
+	remove_tmpdir
+elif [ $1 == supported ]; then
+	create_tmpdir
+	build_package desktop debian
+	build_package win32 nsi
+	build_package source tarball
+	remove_tmpdir
+else
+	while [ $# -gt 0 ] ; do
+		archtype=`echo $1 | cut -d "-" -f 1`;
+		pkgtype=`echo $1 | cut -d "-" -f 2`;
+		extra=`echo $1 | cut -d "-" -f 3`;
+
+		if [ "$pkgtype" != "" -a "$extra" == "" -a -d $distdir/$pkgtype/$archtype ]; then
+			create_tmpdir
+			build_package $archtype $pkgtype
+			remove_tmpdir
+		else 
+			echo "unknown architecture: $1"
+		fi;
+		shift;
+	done;
+fi;
diff --git a/debian/README.source b/debian/README.source
new file mode 100644
index 0000000..67c6796
--- /dev/null
+++ b/debian/README.source
@@ -0,0 +1,9 @@
+This Debian package for FBReader does not contain some hyphenation patterns due
+to following license problems:
+
+el.pattern: no license
+fi.pattern: modification is not explicitly allowed
+tr.pattern: no license
+
+These files were removed from zlibrary/text/data/hyphenationPatterns.zip.
+
diff --git a/debian/changelog b/debian/changelog
new file mode 100644
index 0000000..9bb9b44
--- /dev/null
+++ b/debian/changelog
@@ -0,0 +1,759 @@
+fbreader (0.99.4+dfsg-6) unstable; urgency=medium
+
+  * QA upload.
+
+  * Added d/gbp.conf to describe branch layout.
+  * Updated vcs in d/control to Salsa.
+  * Updated d/gbp.conf to enforce the use of pristine-tar.
+  * Updated Standards-Version from 4.2.1 to 4.7.0.
+  * Use wrap-and-sort -at for debian control files
+  * Replaced obsolete pkg-config build dependency with pkgconf.
+  * Corrected shared library SO version in lintian overrides.
+  * Added 1014-desktop-mime-type.patch to announce MIME type support in
+    XDG desktop (Closes: #601609, #601605, #813768).
+  * Bump debhelper from deprecated 9 to 12 and use debhelper-compat version
+    in Build-Depends.
+
+ -- Petter Reinholdtsen   Fri, 10 May 2024 13:19:06 +0200
+
+fbreader (0.99.4+dfsg-5.1) unstable; urgency=medium
+
+  * Non-maintainer upload.
+  * Rename libraries for 64-bit time_t transition.
+
+ -- Michael Hudson-Doyle   Thu, 29 Feb 2024 02:32:43 +0000
+
+fbreader (0.99.4+dfsg-5) unstable; urgency=medium
+
+  * QA upload.
+  * Prevent installing .so link in non-dev library pkgs.
+  * Fix Breaks/Replaces.
+  * Drop old NEWS.
+  * Drop non-functional debian/watch.
+
+ -- Bastian Germann   Thu, 07 Sep 2023 15:41:50 +0000
+
+fbreader (0.99.4+dfsg-4) unstable; urgency=medium
+
+  * QA upload.
+  * Install liblzui in fbreader.
+
+ -- Bastian Germann   Tue, 05 Sep 2023 10:24:23 +0000
+
+fbreader (0.99.4+dfsg-3) unstable; urgency=medium
+
+  * QA upload.
+  * Prevent the same files in two different packages.
+  * Drop libzlui-qt and itegrate its contents into fbreader.
+
+ -- Bastian Germann   Tue, 05 Sep 2023 00:39:53 +0200
+
+fbreader (0.99.4+dfsg-2) experimental; urgency=medium
+
+  * QA upload.
+  * fbreader: Fix Depends on libzlui-qt instead of dropped -qt4.
+
+ -- Bastian Germann   Mon, 04 Sep 2023 20:05:08 +0200
+
+fbreader (0.99.4+dfsg-1) experimental; urgency=medium
+
+  * QA upload.
+  * Drop unneeded quilt Build-Dependency.
+  * Update to new upstream version. (Closes: #765039)
+  * Build with Qt5 patch. (Closes: #967336)
+
+ -- Bastian Germann   Sat, 02 Sep 2023 11:40:44 +0000
+
+fbreader (0.12.10dfsg2-6) unstable; urgency=low
+
+  * QA upload.
+  * Fix FTBFS with GCC-11 (Closes: #984121)
+    - Add debian/patches/0014-fix-ftbfs-gcc11.patch
+
+ -- Ying-Chun Liu (PaulLiu)   Wed, 12 Jan 2022 23:06:22 +0800
+
+fbreader (0.12.10dfsg2-5) unstable; urgency=medium
+
+  * QA upload.
+  * Orphan package.
+  * debian/source/format: Convert to "3.0 (quilt)" source package.
+  * debian/control: Replace transitional package ttf-unifont with
+    fonts-unifont.
+
+ -- Boyuan Yang   Thu, 26 Aug 2021 23:14:08 -0400
+
+fbreader (0.12.10dfsg2-4) unstable; urgency=medium
+
+  * debian/control:
+    - Drop Qt4 UI (libzlui-qt4), as Qt4 is going away. (Closes: #874867)
+  * debian/patches:
+    - New patch 0013-fbreader-Makefile-make-linking-order-reproducible, by
+      Chris Lamb. (Closes: 861770)
+
+ -- Eugene V. Lyubimkin   Sun, 01 Sep 2019 10:59:46 +0200
+
+fbreader (0.12.10dfsg2-3) unstable; urgency=medium
+
+  * debian/patches:
+    - New patch 0011-zlibrary-unix-curl-avoid-duplicate-case-in-a-switch.
+      Fixes building with curl 7.62.0. Thanks to Adrian Bunk for the report
+      and the libcurl API change hint. (Closes: #913382)
+    - New patch 0012-makefiles-use-externally-passed-PKG_CONFIG-if-availa by
+      Helmut Grohne.
+  * debian/rules:
+    - Enable cross-architecture building. Patch by Helmut Grohne.
+      (Closes: #861422)
+  * debian/control:
+    - Updated Standards-Version to 4.2.1, no changes needed.
+    - Added Recommends on sensible-utils (as suggested by lintian).
+  * debian/source/format:
+    - Created (with '1.0' inside).
+  * debian/libzlcore-data.lintian-overrides:
+    - Removed a false positive override introduced in 0.12.10dfsg2-1,
+      apparently fixed in lintian since.
+
+ -- Eugene V. Lyubimkin   Sun, 09 Dec 2018 18:21:31 +0100
+
+fbreader (0.12.10dfsg2-2) unstable; urgency=medium
+
+  * debian/patches:
+    - New patch booksdb-avoid-converting-boolean-to-shared_ptr.patch. Fixes
+      building with GCC6. Patch by Robert Bihlmeyer. (Closes: #811676)
+  * debian/copyright:
+    - Updated my e-mail address.
+    - Removed obsolete statements for DocBook/XHTML entity files removed in
+      the previous upload. (Closes: #824393)
+
+ -- Eugene V. Lyubimkin   Sun, 24 Jul 2016 13:40:32 +0200
+
+fbreader (0.12.10dfsg2-1) unstable; urgency=medium
+
+  * debian/dfsg-repack:
+    - Also remove docbook- and XHTML entity files. (Closes: #807074)
+  * debian/patches:
+    - New patch fbreader-Makefile-do-not-try-to-install-empty-format.patch, so
+      upstream Makefile doesn't install unexisting XHTML entity files.
+  * debian/control:
+    - Updated Standards-Version to 3.9.6, no changes needed.
+    - Bumped debhelper build-dependency to >= 9.
+  * debian/rules:
+    - Modernized using dh overrides.
+  * debian/menu:
+    - Removed as suggested by lintian, since a .desktop-file is present.
+  * debian/libzlcore-data.lintian-overrides:
+    - Added to override a false positive about reproducibility of
+      usr/share/zlibrary/unicode.xml.gz.
+
+ -- Eugene V. Lyubimkin   Sun, 21 Feb 2016 10:46:49 +0100
+
+fbreader (0.12.10dfsg-10) unstable; urgency=low
+
+  * NMU acknowledged - thanks, Ondřej!
+  * debian/control:
+    - Bump ABI parts of libzlcore and libzltext package names for GCC5 C++11
+      ABI transition. For historical reasons these package name parts were
+      actually a bit off the SONAMEs, and now it's a good time to fix it.
+      (Closes: #763468)
+
+ -- Eugene V. Lyubimkin   Tue, 21 Jul 2015 20:52:34 +0300
+
+fbreader (0.12.10dfsg-9.1) unstable; urgency=medium
+
+  * Change B-D to libjpeg-dev to finish the transition to libjpeg-turbo
+
+ -- Ondřej Surý   Mon, 29 Sep 2014 14:04:47 +0200
+
+fbreader (0.12.10dfsg-9) unstable; urgency=low
+
+  * debian/control:
+    - Bumped Standards-Version to 3.9.4, no changes needed.
+    - Build-depend on libunibreak-dev instead of liblinebreak2-dev.
+  * debian/patches:
+    - New patch 950-link-to-libunibreak.patch.
+    - New patch 951-fix-calling-compiler.patch, which replaces old
+      940-use-debian-compiler-flags.patch: reworked to not override compiler
+      flags by "target setup" instead of introducing DEBFLAGS, force verbose
+      compilation and introduce CPPFLAGS and CXXFLAGS where needed.
+  * debian/rules:
+    - Include dpkg's buildflags.mk if present to support hardening.
+    - Removed DEBFLAGS-hack.
+    - Removed obsolete commented Qt3-related line.
+
+ -- Eugene V. Lyubimkin   Fri, 21 Jun 2013 13:17:00 +0300
+
+fbreader (0.12.10dfsg-8) unstable; urgency=low
+
+  * debian/patches:
+    - New patch 600-fix-ftell-crash.patch, fixing a possible crash on
+      migration. (Closes: #689338)
+
+ -- Eugene V. Lyubimkin   Sat, 06 Oct 2012 12:33:58 +0300
+
+fbreader (0.12.10dfsg-7) unstable; urgency=medium
+
+  * debian/rules:
+    - Fixed FTFBS on binary-only builds. Report by Pino Toscano, patch by
+      Salvatore Bonaccorso. (Closes: #680657)
+  * debian/control:
+    - Bumped Standards-Version to 3.9.3, no changes needed.
+
+ -- Eugene V. Lyubimkin   Sun, 08 Jul 2012 12:05:01 +0300
+
+fbreader (0.12.10dfsg-6) unstable; urgency=medium
+
+  * debian/patches:
+    - New patch 910-zlui-qt4-links-to-QtCore.patch. Thanks to Stepan Golosunov
+      for the report. (Closes: #649612)
+
+ -- Eugene V. Lyubimkin   Sat, 26 Nov 2011 12:35:23 +0200
+
+fbreader (0.12.10dfsg-5) unstable; urgency=low
+
+  * debian/{control,rules}
+    - Don't build zlui-maemo anymore as its build-depends will be removed from
+      Debian repositories. (Closes: #643745)
+  * debian/patches:
+    - Dropped maemo-specific patches as not needed anymore.
+  * debian/NEWS:
+    - Set the version of really uploaded package.
+      Fixes a lintian warning 'debian-news-entry-has-unknown-version'.
+
+ -- Eugene V. Lyubimkin   Thu, 29 Sep 2011 19:25:10 +0300
+
+fbreader (0.12.10dfsg-4) unstable; urgency=low
+
+  * debian/control:
+    - Build-depend on liblinebreak{ -> 2}-dev.
+
+ -- Eugene V. Lyubimkin   Tue, 14 Jun 2011 19:38:15 +0300
+
+fbreader (0.12.10dfsg-3) unstable; urgency=medium
+
+  * debian/patches:
+    - New patch 030-use-pkgconfig-includes.patch from Steve Langasek.
+      (Closes: #620852)
+    - New patch 400-fix-building-with-gcc46.patch. Fixes FTBFS.
+      (Closes: #618051)
+  * debian/control:
+    - Bumped Standards-Version to 3.9.2, no changes needed.
+
+ -- Eugene V. Lyubimkin   Sat, 28 May 2011 14:01:16 +0300
+
+fbreader (0.12.10dfsg-2) unstable; urgency=low
+
+  * Upload to unstable. (Closes: #613902)
+
+ -- Eugene V. Lyubimkin   Sat, 19 Feb 2011 14:15:35 +0200
+
+fbreader (0.12.10dfsg-1) experimental; urgency=low
+
+  * New upstream release.
+  * debian/control:
+    - Added libjpeg8-dev build-dependency. (Closes: #598996)
+    - Bumped Standards-Version to 3.9.1, no changes needed.
+    - Reintroduced libzlui-maemo binary package and build dependencies.
+  * debian/rules:
+    - Reintroduced maemo actions.
+
+ -- Eugene V. Lyubimkin   Mon, 04 Oct 2010 19:47:39 +0300
+
+fbreader (0.12.9dfsg-1) experimental; urgency=low
+
+  * New upstream release.
+  * debian/NEWS:
+    - Added with notes about migration to 0.12.
+  * debian/control:
+    - Updated my mail address.
+    - Removed DMUA, it is not needed anymore.
+    - Added eReader to the list of supported formats.
+    - Temporarily removed libzlui-maemo binary package and build dependencies
+      for it until maemo support is ready.
+    - Dropped 'libzlui-qt' binary package.
+    - Bumped Standards-Version to 3.8.4, no changes needed.
+    - Changed the suffix of library packages from 0.10 to 0.12.
+    - Set minimum build-dependency libcurl version to 7.17 as per upstream
+      README.build.
+    - Added libsqlite3-dev build-dependency.
+  * debian/copyright:
+    - Updated copyright years.
+  * debian/patches:
+    - 930-use-shell-make-variable.patch: updated.
+    - 020-maemo-disable-libconic.patch: refreshed.
+    - 900-delete-useless-strip-flag.patch: refreshed.
+    - 930-use-shell-make-variable.patch: refreshed.
+    - 940-use-debian-compiler-flags.patch: refreshed.
+
+ -- Eugene V. Lyubimkin   Thu, 25 Mar 2010 19:58:30 +0200
+
+fbreader (0.10.7dfsg-4) unstable; urgency=medium
+
+  * debian/control:
+    - Use source:Version for dependencies on arch-independent packages.
+      Thanks to Julien Cristau for the report. Fixes FTBFS on BinNMUs.
+      (Closes: #596575)
+    - Updated my mail address.
+    - Removed DM-Upload-Allowed, not needed anymore.
+
+ -- Eugene V. Lyubimkin   Sun, 12 Sep 2010 21:23:29 +0300
+
+fbreader (0.10.7dfsg-3) unstable; urgency=low
+
+  * debian/control:
+    - Don't allow libzlui front-ends from previous series to be co-installed
+      with modern fbreader to prevent crashes. (Closes: #544138)
+    - Bumped Standards-Version to 3.8.3, no changes needed.
+
+ -- Eugene V. Lyubimkin   Sun, 30 Aug 2009 14:23:49 +0300
+
+fbreader (0.10.7dfsg-2) unstable; urgency=low
+
+  * debian/control:
+    - Fixed misspelled choice 'libzlui-qt' (Qt3 UI) in Depends.
+
+ -- Eugene V. Lyubimkin   Tue, 19 May 2009 11:21:39 +0300
+
+fbreader (0.10.7dfsg-1) unstable; urgency=low
+
+  * New upstream release, some changes:
+    - 0.10.7:
+      - A conflict between hyperlink clicks and touch scrolling has
+        been fixed.
+      - In maemo versions, empty menu items have been hidden.
+    - 0.10.6:
+      - A bug with images/css links in epub has been fixed. All the links
+        inside XHTML files were interpreted relative to the root OPF location
+        instead of XHTML file location. As a result, some images were not shown
+        in epub books.
+    - 0.10.5:
+      - The migration tool from version 0.8.* has been fixed. After an upgrade
+        from 0.8.* to this version, the first opening of your library will take
+        some time.
+      - A freeze (on some PDB books with more than one page and images, and
+        using small font size) has been fixed.
+      - Several text selection related issues have been fixed.
+    - 0.10.4:
+      - Maemo support is back.
+      - Multiple fixes in the epub format support.
+  * debian/control:
+    - Re-introduced libzlui-maemo binary package.
+    - Different minor versions of the same ui packages ('libzlui-*') are
+      incompatible between each other but have the same name, and it can cause
+      problems on upgrades. This is not a reliable behavior, so now
+      'libzlui-*' packages don't provide 'libzlui' virtual package anymore.
+      Binary package 'fbreader' now strictly depends on same or newer binary
+      versions of one of 'libzlui-*' packages. (Closes: #521136)
+    - Bumped 'Standards-Version' to 3.8.1, no changes needed.
+  * debian/rules:
+    - Uncommented building maemo binaries.
+  * debian/dfsg-repack:
+    - Corrected to output usage when the parameter is not given.
+  * debian/patches:
+    - 005-maemo-makefile.patch: refreshed.
+    - New 020-maemo-disable-libconic.patch: disable libconic-related parts of
+      the maemo UI. Libconic depends on closed source, not even available
+      software.
+    - New 200-maemo-gtkentryparameter.patch: remove tuning-only hildon calls
+      that Debian GTK+ libraries cannot (yet?) satisfy.
+    - 930-use-shell-make-variable.patch: refreshed.
+    - debian/patches/940-use-debian-compiler-flags.patch: refreshed.
+
+ -- Eugene V. Lyubimkin   Fri, 01 May 2009 00:28:06 +0300
+
+fbreader (0.10.3dfsg-1) experimental; urgency=low
+
+  * New upstream release, some changes:
+    - 0.10.3:
+      - Some issues related to multi-file tar, tar.gz and tar.bz2 archives
+        have been fixed.
+    - 0.10.2:
+      - Images order in mobipocket files has been corrected.
+      - Indonesian localization files have been updated.
+  * debian/dfsg-repack:
+    - Corrected to produce correct orig.tar.gz.
+  * debian/patches:
+    - 005-maemo-makefile.patch:
+      - Refreshed.
+
+ -- Eugene V. Lyubimkin   Fri, 27 Feb 2009 21:26:25 +0200
+
+fbreader (0.10.1dfsg-1) experimental; urgency=low
+
+  * Repacked upstream tarball, removed non-DFSG hyphenation patterns (el, fi,
+    tr languages). See also README.source.
+  * debian/README.source:
+    - Added with reasons of excluding hyphenation patterns from upstream
+      tarball.
+  * debian/copyright:
+    - Renewed copyrights, thanks to Frank Lichtenheld.
+    - Fixed GPLv2 license path on Debian systems.
+    - Mentioned all Debian packaging contributors.
+    - Provided full license and copyright info for hyphenation patterns.
+
+ -- Eugene V. Lyubimkin   Wed, 04 Feb 2009 22:59:58 +0200
+
+fbreader (0.10.1-1) experimental; urgency=low
+
+  * New upstream release, some changes:
+    - Fixed never-ending loop under certain conditions when operating with
+      library and settings.
+  * debian/patches:
+    - 200-typo-in-searchonnetworkaction.patch: removed, went upstream.
+
+ -- Eugene V. Lyubimkin   Sun, 18 Jan 2009 16:06:20 +0200
+
+fbreader (0.10.0-1) experimental; urgency=low
+
+  * New upstream release, some changes:
+    - Searching and downloading books from www.feedbooks.com and
+      www.litres.ru.
+    - Partial CSS support for Epub files.
+    - Improved support for Epub and Mobipocket book formats.
+    - Added support for right-to-left languages and bidirectional text.
+    - Added Czech localization.
+  * debian/rules:
+    - Removed some old dh_makeshlibs magic for libzlcore and libzltext.
+    - Temporarily removed libzlui-maemo binary package until maemo support is
+      ready.
+    - Added build-deps: libfribidi-dev, libcurl4-gnutls-dev.
+  * debian/control:
+    - Bumped liblinebreak dependency version to 1.0.
+    - Made qt4 interface for fbreader the default one for new installs.
+    - Updated library binary package names '0.9' -> '0.10'.
+    - Removed some obsolete Conflicts and Replaces for libzlcore0.10 and
+      libzltext0.10.
+    - As GTK2 UI cannot substitute fonts, added Suggests on 'ttf-unifont'
+      for libzlui-gtk package. (Closes: #502040)
+    - Wrote up better short descriptions, modified a bit long description
+      for libzltext0.10. (Closes: #493616)
+    - Improved long description for the libzlcore-data package.
+    - Advanced fbreader long description according to new release.
+    - Added {misc:Depends} to Depends of all packages, fixing lintian
+      warnings.
+    - Removed duplicated 'Priority' fields from binary packages' entries.
+    - Divided architecture-independent data from package libzltext0.10 to its
+      own binary package (liblztext-data) as it leads to conflict problems
+      being in library package along .so files.
+    - Set DM-Upload-Allowed flag.
+  * debian/patches:
+    - 010-add-missing-headers.patch: deleted, went upstream.
+    - 100-fix-centering-with-margins.patch: deleted, went upstream.
+    - 910-remove-deprecated-fields-in-desktop-file.patch: deleted, went
+      upstream.
+    - New 200-typo-in-searchonnetworkaction.patch, cherry-picked from
+      upstream.
+    - Added comments to all Debian patches.
+
+ -- Eugene V. Lyubimkin   Tue, 13 Jan 2009 22:19:32 +0200
+
+fbreader (0.8.17-12) unstable; urgency=low
+
+  * debian/patches:
+    - New patch 930-use-shell-make-variable.patch. It allows to do 'make -jN'.
+    - New patch 940-use-debian-compiler-flags.patch. It allows to build
+      package with debian-specific flags.
+  * debian/rules:
+    - Added support for 'parallel=n' in DEB_BUILD_OPTIONS.
+    - Added support for 'noopt' in DEB_BUILD_OPTIONS.
+    - Now package builds with '-D_REENTRANT' flag.
+  * debian/control:
+    - Added missing dependency: libzlui-qt4 on libzlcore.
+    - Included SONAME's to library packages' names:
+      - Renamed 'libzlcore' package to 'libzlcore0.9'.
+      - Renamed 'libzltext' package to 'libzltext0.9'.
+    - Split arch-independent stuff from 'libzlcore' to 'libzlcore-data'
+      package.
+    - Fixed dependency: 'libzltext-dev' depends on 'libzltext', not
+      'libzlcore'.
+
+ -- Eugene V. Lyubimkin   Sat, 12 Jul 2008 20:05:47 +0300
+
+fbreader (0.8.17-11) unstable; urgency=low
+
+  * debian/control:
+    - Enhanced all ZLibrary descriptions, not the main one.
+    - Done some renaming to use canonical names of libraries and toolkits in
+      decriptions, as suggested by developers-reference:
+      'qt' -> 'Qt', 'gtk' -> 'GTK+', 'zlibrary' -> 'ZLibrary'.
+    - Bump 'Depends' on quilt to (>= 0.24).
+  * debian/rules:
+    - Included quilt makefile instead of quilt makefile instead
+      of copy&paste'ing it.
+  * debian/fbreader.links:
+    - Added this file to relay on dh_link's work instead of using 'ln -sf'
+      directly in the debian/rules.
+
+ -- Eugene V. Lyubimkin   Tue, 17 Jun 2008 23:01:53 +0300
+
+fbreader (0.8.17-10) unstable; urgency=low
+
+  * Switched to quilt patching system.
+  * debian/control:
+    - Enhanced description for libzlcore binary package.
+    - Added 'quilt' to Build-Depends.
+  * debian/rules:
+    - Removed unnecessary 'binary-indep', 'clean' rules.
+    - Added 'patch' and 'unpatch' rules.
+
+ -- Eugene V. Lyubimkin   Fri, 13 Jun 2008 14:01:27 +0300
+
+fbreader (0.8.17-9) unstable; urgency=low
+
+  * debian/control:
+    - Bump 'Standards-Version' to 3.8.0. No changes needed.
+
+ -- Eugene V. Lyubimkin   Wed, 11 Jun 2008 21:44:43 +0300
+
+fbreader (0.8.17-8) unstable; urgency=low
+
+  * debian/rules:
+    - Added creating symbolic links to provide lowercase-only path for
+      fbreader. (Closes: #434689)
+
+  * Applied patch: removed obsolete 'Encoding' entry from fbreader desktop
+    file.
+
+ -- Eugene V. Lyubimkin   Mon, 02 Jun 2008 01:25:10 +0300
+
+fbreader (0.8.17-7) unstable; urgency=low
+
+  * Applied patch: correct centering text honoring margins.
+    (Closes: #475696)
+
+ -- Eugene V. Lyubimkin   Fri, 30 May 2008 03:13:20 +0300
+
+fbreader (0.8.17-6) unstable; urgency=low
+
+  * New maintainer. (Closes: #483257)
+  * debian/control:
+    - Updated "Maintainer:" field.
+    - Removed "Vcs-Git" field.
+  * debian/rules:
+    - Added empty 'binary-indep', 'clean' rules to satisfy lintian.
+
+ -- Eugene V. Lyubimkin   Wed, 28 May 2008 23:16:09 +0300
+
+fbreader (0.8.17-5) unstable; urgency=low
+
+  * debhelper v7, rules file minimisation
+  * Orphaned the package.
+
+ -- Joey Hess   Tue, 27 May 2008 19:18:07 -0400
+
+fbreader (0.8.17-4) unstable; urgency=low
+
+  * Use a newer version of liblinebreak-dev, which will properly link into
+    libzltext on more picky architectures. Closes: #475095
+
+ -- Joey Hess   Tue, 08 Apr 2008 19:53:36 -0400
+
+fbreader (0.8.17-3) unstable; urgency=low
+
+  * Add b-d on liblinebreak-dev. Closes: #474805
+
+ -- Joey Hess   Tue, 08 Apr 2008 17:28:05 -0400
+
+fbreader (0.8.17-2) unstable; urgency=low
+
+  * Header fix for gcc 4.3. Closes: #474805
+
+ -- Joey Hess   Mon, 07 Apr 2008 17:47:04 -0400
+
+fbreader (0.8.17-1) unstable; urgency=low
+
+  * New upstream release.
+
+ -- Joey Hess   Mon, 07 Apr 2008 12:29:01 -0400
+
+fbreader (0.8.15-1) unstable; urgency=low
+
+  * New upstream release.
+
+ -- Joey Hess   Sun, 09 Mar 2008 17:50:31 -0400
+
+fbreader (0.8.14-2) unstable; urgency=low
+
+  * Fix missing include in maemo UI to allow building with gcc 4.3.
+    Closes: #466756
+
+ -- Joey Hess   Wed, 20 Feb 2008 18:24:32 -0500
+
+fbreader (0.8.14-1) unstable; urgency=low
+
+  * New Upstream Version
+
+ -- Joey Hess   Mon, 11 Feb 2008 12:07:34 -0500
+
+fbreader (0.8.13-1) unstable; urgency=low
+
+  * New Upstream Version. Closes: #461813
+  * Fixes orig tarball snafu. Closes: #462353
+
+ -- Joey Hess   Sat, 09 Feb 2008 13:31:33 -0500
+
+fbreader (0.8.12-3) unstable; urgency=low
+
+  * Add libzlui-maemo which allows using fbreader on the maemo platform, on
+    Debian. Thanks, Riku Voipio. Closes: #462299
+  * makefiles/arch/maemo.mk: Don't build with -thumb. (Riku)
+  * Loosen dependency versions some more, so it only depends on the current
+    upstream version or higher, ignoring the Debian revision.
+  * Use binary:Version instead of deprecated Source-Version.
+
+ -- Joey Hess   Wed, 23 Jan 2008 16:51:07 -0500
+
+fbreader (0.8.12-2) unstable; urgency=low
+
+  * Include dependency loosening changes.
+
+ -- Joey Hess   Tue, 22 Jan 2008 13:27:08 -0500
+
+fbreader (0.8.12-1) unstable; urgency=low
+
+  * New upstream version. Closes: #461813
+  * Didn't include upstream's dependency changes yet.
+
+ -- Joey Hess   Mon, 21 Jan 2008 12:59:59 -0500
+
+fbreader (0.8.11-1) stable; urgency=low
+
+  * new upstream version
+  * dependency rules have been changed
+
+ -- Nikolay Pultsin   Sat, 12 Jan 2008 22:27:00 +0300
+
+fbreader (0.8.10-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Fri, 4 Jan 2008 20:53:00 +0300
+
+fbreader (0.8.9-1) unstable; urgency=low
+
+  * New Upstream Version
+
+ -- Joey Hess   Mon, 31 Dec 2007 11:40:17 -0500
+
+fbreader (0.8.8a-1) unstable; urgency=low
+
+  * New upstream release.
+
+ -- Joey Hess   Tue, 18 Dec 2007 17:26:06 -0500
+
+fbreader (0.8.8-2) unstable; urgency=low
+
+  * Fix missing include to allow building with gcc 4.3. Closes: #456085
+
+ -- Joey Hess   Thu, 13 Dec 2007 01:47:01 -0500
+
+fbreader (0.8.8-1) unstable; urgency=low
+
+  * New upstream release.
+
+ -- Joey Hess   Tue, 04 Dec 2007 12:51:45 -0500
+
+fbreader (0.8.7b-1) unstable; urgency=low
+
+  * New upstream release.
+
+ -- Joey Hess   Thu, 15 Nov 2007 19:21:34 -0500
+
+fbreader (0.8.7-1) unstable; urgency=low
+
+  [ Nikolay Pultsin ]
+  * new upstream version
+
+ -- Joey Hess   Fri, 26 Oct 2007 04:57:02 -0400
+
+fbreader (0.8.6d-2) unstable; urgency=low
+
+  * Change %U to %F in menu file, as fbreader does not support URLs.
+    Closes: #447971
+
+ -- Joey Hess   Thu, 25 Oct 2007 13:36:19 -0400
+
+fbreader (0.8.6d-1) unstable; urgency=low
+
+  * New upstream release.
+
+ -- Joey Hess   Sun, 09 Sep 2007 13:16:49 -0400
+
+fbreader (0.8.6c-1) unstable; urgency=low
+
+  * New upstream release.
+
+ -- Joey Hess   Tue, 04 Sep 2007 20:22:41 -0400
+
+fbreader (0.8.6b-1) unstable; urgency=low
+
+  * Add real Homepage field. (Needs really new dpkg.)
+  * New upstream version. (Only Windows fixes.)
+
+ -- Joey Hess   Mon, 27 Aug 2007 13:17:47 -0400
+
+fbreader (0.8.6a-2) unstable; urgency=low
+
+  * Fix handling of nostrip build option. Closes: #436837
+
+ -- Joey Hess   Sat, 11 Aug 2007 20:30:25 -0400
+
+fbreader (0.8.6a-1) unstable; urgency=low
+
+  [ Nikolay Pultsin ]
+  * new upstream version
+  * added libzlibrary-dev package
+
+  [ Joey Hess ]
+  * Small changes to the new -dev packages.
+  * Upload to Debian.
+
+ -- Joey Hess   Wed, 08 Aug 2007 10:51:40 -0700
+
+fbreader (0.8.5c-1) unstable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Thu, 19 Jul 2007 15:20:00 +0400
+
+fbreader (0.8.5b-1) unstable; urgency=low
+
+  * new upstream version
+  * almost all changes from the previous change are now included into
+    the upstream version: zlibrary shared objects moving, rpath deletion,
+    and the man page.
+
+ -- Nikolay Pultsin   Tue, 10 Jul 2007 21:50:00 +0400
+
+fbreader (0.8.5a-1) unstable; urgency=low
+
+  * First upload to Debian. Closes: #432274
+  * Misc debianisation changes.
+  * Move zlibrary shared object files to /usr/lib from /usr/share.
+  * Remove use of rpath.
+  * Use sensible-browser.
+  * Added a basic man page.
+
+ -- Joey Hess   Mon, 09 Jul 2007 15:04:31 -0400
+
+fbreader (0.8.5-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Sat, 7 Jul 2007 02:12:00 +0400
+
+fbreader (0.8.4zz-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Thu, 5 Jul 2007 03:17:00 +0400
+
+fbreader (0.8.4z-2) stable; urgency=low
+
+  * postinst/postrm scripts were added
+
+ -- Nikolay Pultsin   Fri, 29 Jun 2007 21:23:00 +0400
+
+fbreader (0.8.4z-1) stable; urgency=low
+
+  * Initial release.
+
+ -- Nikolay Pultsin   Fri, 29 Jun 2007 17:53:00 +0400
diff --git a/debian/control b/debian/control
new file mode 100644
index 0000000..38ecc41
--- /dev/null
+++ b/debian/control
@@ -0,0 +1,149 @@
+Source: fbreader
+Section: text
+Priority: optional
+Maintainer: Debian QA Group 
+Standards-Version: 4.7.0
+Build-Depends: debhelper-compat (= 12),
+               dpkg-dev (>= 1.22.5),
+               libbz2-dev,
+               libcurl4-gnutls-dev,
+               libexpat1-dev,
+               libfribidi-dev,
+               libjpeg-dev,
+               libsqlite3-dev,
+               libunibreak-dev,
+               libz-dev,
+               pkgconf,
+               qtbase5-dev,
+Homepage: http://www.fbreader.org/
+Vcs-Browser: https://salsa.debian.org/debian/fbreader
+Vcs-Git: https://salsa.debian.org/debian/fbreader.git
+
+Package: fbreader
+Architecture: any
+Replaces: fbreader-gtk,
+          fbreader-qt,
+          fbreader-qt4,
+          libzlui-gtk (<< 0.99),
+          libzlui-qt (<< 0.12),
+Depends: ${misc:Depends},
+         ${shlibs:Depends},
+Recommends: sensible-utils,
+Breaks: libzlui-gtk (<< 0.99),
+        libzlui-maemo (<< 0.12),
+        libzlui-qt (<< 0.12),
+        libzlui-qt4 (<< 0.12),
+Description: e-book reader
+ FBReader is an e-book reader.
+ .
+ Main features:
+  * supports several open e-book formats: fb2, html, chm, plucker,
+    palmdoc, ztxt, tcr (psion text), rtf, oeb, openreader, non-DRM'ed
+    mobipocket, plain text, epub, eReader
+  * reads directly from tar, zip, gzip, bzip2 archives (you can have
+    several books in one archive)
+  * supports a structured view of your e-book collection
+  * automatically determines encodings
+  * automatically generates a table of contents
+  * keeps the last open book and the last read positions for all open books
+    between runs
+  * automatic hyphenation (patterns for several languages are included)
+  * searching and downloading books from www.feedbooks.com and www.litres.ru
+  * partial CSS support for epub files
+
+Package: libzlcore0.13t64
+Provides: ${t64:Provides},
+Section: libs
+Architecture: any
+Depends: libzlcore-data (>= ${source:Version}),
+         ${misc:Depends},
+         ${shlibs:Depends},
+Breaks: libzlcore0.12,
+        libzlcore0.13 (<< ${source:Version}),
+Replaces: libzlcore0.12,
+          libzlcore0.13,
+Conflicts: fbreader-gtk,
+           fbreader-qt,
+           fbreader-qt4,
+Description: ZLibrary cross-platform development library (shared library)
+ This is the core of ZLibrary, the library that the fbreader e-book reader
+ is based on.
+ .
+ ZLibrary is a cross-platform library to build applications running on desktop
+ Linux, Windows, different Linux-based PDAs using this library.
+
+Package: libzlcore-data
+Section: libs
+Architecture: all
+Depends: ${misc:Depends},
+Breaks: libzlcore (<< 0.8.17-12),
+Replaces: libzlcore (<< 0.8.17-12),
+Description: ZLibrary cross-platform development library (support files)
+ This package contains the support files for the core of ZLibrary, the library
+ that the fbreader e-book reader is based on.
+ .
+ ZLibrary is a cross-platform library to build applications running on desktop
+ Linux, Windows, different Linux-based PDAs using this library.
+
+Package: libzltext0.13t64
+Provides: ${t64:Provides},
+Section: libs
+Architecture: any
+Depends: libzlcore0.13t64 (= ${binary:Version}),
+         libzltext-data (>= ${source:Version}),
+         ${misc:Depends},
+         ${shlibs:Depends},
+Breaks: libzltext0.12,
+        libzltext0.13 (<< ${source:Version}),
+Replaces: libzltext0.12,
+          libzltext0.13,
+Description: ZLibrary text model/viewer part (shared library)
+ This package provides text model/viewer part of ZLibrary. See also
+ libzlcore0.10 package.
+ .
+ ZLibrary is a cross-platform library to build applications running on desktop
+ Linux, Windows, different Linux-based PDAs using this library.
+
+Package: libzltext-data
+Section: libs
+Architecture: all
+Depends: ${misc:Depends},
+Conflicts: libzltext,
+           libzltext0.9,
+Replaces: libzltext,
+          libzltext0.9,
+Description: ZLibrary text model/viewer part (support files)
+ This package contains the support files for the text model/viewer part
+ of ZLibrary. See also libzltext0.13t64 package.
+ .
+ ZLibrary is a cross-platform library to build applications running on desktop
+ Linux, Windows, different Linux-based PDAs using this library.
+
+Package: libzlcore-dev
+Section: libdevel
+Architecture: any
+Breaks: libzlcore0.13t64 (<< 0.99.4+dfsg-5),
+Replaces: libzlcore0.13t64 (<< 0.99.4+dfsg-5),
+Depends: libzlcore0.13t64 (= ${binary:Version}),
+         ${misc:Depends},
+         ${shlibs:Depends},
+Description: ZLibrary cross-platform development library (development files)
+ This package contains development files for the ZLibrary core.
+ .
+ ZLibrary is a cross-platform library to build applications running on desktop
+ Linux, Windows, different Linux-based PDAs using this library.
+
+Package: libzltext-dev
+Section: libdevel
+Architecture: any
+Breaks: libzltext0.13t64 (<< 0.99.4+dfsg-5),
+Replaces: libzltext0.13t64 (<< 0.99.4+dfsg-5),
+Depends: libzltext0.13t64 (= ${binary:Version}),
+         ${misc:Depends},
+         ${shlibs:Depends},
+Description: ZLibrary text model/viewer part (development files)
+ This package contains development files for the ZLibrary text model/viewer
+ library.
+ .
+ ZLibrary is a cross-platform library to build applications running on desktop
+ Linux, Windows, different Linux-based PDAs using this library.
diff --git a/debian/copyright b/debian/copyright
new file mode 100644
index 0000000..e551ed7
--- /dev/null
+++ b/debian/copyright
@@ -0,0 +1,570 @@
+This is the Debian prepackaged version of FBReader.
+
+It was originally Debianised by Nikolay Pultsin , and
+later modified and improved by Joey Hess  and
+Eugene V. Lyubimkin .
+
+Sources are downloaded from its website at:
+
+	http://www.fbreader.org/
+
+It is copyright as follows:
+
+/*
+ * Copyright (C) 2004-2010 Geometer Plus 
+ *
+ * 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; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * 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, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ * 02110-1301, USA.
+ */
+
+On Debian systems, the full text of the GPLv2 can be found in
+/usr/share/common-licenses/GPL-2.
+
+
+Hyphenation patterns (zlibrary/text/data/hyphenationPatterns.zip):
+
+Files fi.pattern, tr.pattern, el.pattern were removed from upstream tarball.
+Check README.source to see why. You can reproduce removing procedure by using
+script debian/dfsg-repack.
+
+
+Files: cs.pattern
+License: GPLv2+.
+
+Files: en.pattern
+License: specific (follows)
+
+% Unlimited copying and redistribution of this file are permitted as long
+% as this file is not modified. Modifications are permitted, but only if
+% the resulting file is not named hyphen.tex.
+
+Files: de-traditional.pattern
+License: Latex Project Public License 1+
+Copyrights:
+
+% Copyright (C) 1988,1991 Rechenzentrum der Ruhr-Universitaet Bochum
+%               [german hyphen patterns]
+% Copyright (C) 1993,1994,1999 Bernd Raichle/DANTE e.V.
+%               [macros, adaption for TeX 2]
+%
+
+Files: de.pattern
+License: Latex Project Public License 1+
+Copyrights:
+
+% Copyright (C) 1988,1991 Rechenzentrum der Ruhr-Universitaet Bochum
+%               [german hyphen patterns]
+% Copyright (C) 1993,1994,1999 Bernd Raichle/DANTE e.V.
+%               [macros, adaption for TeX 2]
+% Copyright (C) 1998-2001 Walter Schmidt
+%               [adaption to new German orthography]
+%
+
+Files: eo.pattern
+License: Latex Project Public License 1+
+Copyrights: Copyright (C) 1999 Sergei B. Pokrovsky 
+
+Files: es.pattern
+License: Latex Project Public License
+Copyrights:
+
+% (c) Javier Bezos 1993 1997.
+% (c) Javier Bezos and CervanTeX 2001-2006
+% Some parts, (c) by Francesc Carmona
+
+Files: fr.pattern
+License: specific (follows)
+
+% This file is available for free and can used and redistributed
+% asis for free. Modified versions should have another name.
+
+Files: id.pattern
+License: GPLv2
+Copyrights: (c) Copyright 1996, 1997 J\"org Knappen and Terry Mart
+
+Files: it.pattern
+License: LGPLv2.1+
+Copyrights: Copyright  1998, 2007 Claudio Beccari
+
+Files: no.pattern:
+Copyrights: Copyright (C) 2004, 2005 Rune Kleveland, Ole Michael Selberg.
+License: specific (follows)
+
+% Copying and distribution of this file, with or without modification,
+% are permitted in any medium without royalty provided the copyright
+% notice and this notice are preserved.
+
+Files: pt.pattern:
+License: Latex Project Public License 1+
+Copyrights:
+
+% (C) 1996 by  Pedro J. de Rezende (rezende@dcc.unicamp.br)
+%          and J.Joao Dias Almeida (jj@di.uminho.pt)
+% Version: 1.2 Release date: 21/07/96
+%
+% (C) 1994 by Pedro J. de Rezende (rezende@dcc.unicamp.br)
+% Version: 1.1 Release date: 04/12/94
+%
+% (C) 1987 by Pedro J. de Rezende
+% Version: 1.0 Release date: 02/13/87
+
+Files: sv.pattern
+License: Latex Project Public License 1.2+
+Copyrights: Copyright 1994 by Jan Michael Rynning. All rights reserved.
+
+Files: uk.pattern
+License: Latex Project Public License 1+
+Copyrights: Copyright 1999 Andrij Shvaika
+
+Files: ru.pattern
+License: Latex Project Public License 1.2+
+Copyrights: Copyright 1999-2003 Alexander I. Lebedev 
+
+
+The LaTeX Project Public License
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
+
+LPPL Version 1.3c  2008-05-04
+
+Copyright 1999 2002-2008 LaTeX3 Project
+    Everyone is allowed to distribute verbatim copies of this
+    license document, but modification of it is not allowed.
+
+
+PREAMBLE
+========
+
+The LaTeX Project Public License (LPPL) is the primary license under
+which the LaTeX kernel and the base LaTeX packages are distributed.
+
+You may use this license for any work of which you hold the copyright
+and which you wish to distribute.  This license may be particularly
+suitable if your work is TeX-related (such as a LaTeX package), but
+it is written in such a way that you can use it even if your work is
+unrelated to TeX.
+
+The section `WHETHER AND HOW TO DISTRIBUTE WORKS UNDER THIS LICENSE',
+below, gives instructions, examples, and recommendations for authors
+who are considering distributing their works under this license.
+
+This license gives conditions under which a work may be distributed
+and modified, as well as conditions under which modified versions of
+that work may be distributed.
+
+We, the LaTeX3 Project, believe that the conditions below give you
+the freedom to make and distribute modified versions of your work
+that conform with whatever technical specifications you wish while
+maintaining the availability, integrity, and reliability of
+that work.  If you do not see how to achieve your goal while
+meeting these conditions, then read the document `cfgguide.tex'
+and `modguide.tex' in the base LaTeX distribution for suggestions.
+
+
+DEFINITIONS
+===========
+
+In this license document the following terms are used:
+
+   `Work'
+    Any work being distributed under this License.
+
+   `Derived Work'
+    Any work that under any applicable law is derived from the Work.
+
+   `Modification'
+    Any procedure that produces a Derived Work under any applicable
+    law -- for example, the production of a file containing an
+    original file associated with the Work or a significant portion of
+    such a file, either verbatim or with modifications and/or
+    translated into another language.
+
+   `Modify'
+    To apply any procedure that produces a Derived Work under any
+    applicable law.
+
+   `Distribution'
+    Making copies of the Work available from one person to another, in
+    whole or in part.  Distribution includes (but is not limited to)
+    making any electronic components of the Work accessible by
+    file transfer protocols such as FTP or HTTP or by shared file
+    systems such as Sun's Network File System (NFS).
+
+   `Compiled Work'
+    A version of the Work that has been processed into a form where it
+    is directly usable on a computer system.  This processing may
+    include using installation facilities provided by the Work,
+    transformations of the Work, copying of components of the Work, or
+    other activities.  Note that modification of any installation
+    facilities provided by the Work constitutes modification of the Work.
+
+   `Current Maintainer'
+    A person or persons nominated as such within the Work.  If there is
+    no such explicit nomination then it is the `Copyright Holder' under
+    any applicable law.
+
+   `Base Interpreter'
+    A program or process that is normally needed for running or
+    interpreting a part or the whole of the Work.
+
+    A Base Interpreter may depend on external components but these
+    are not considered part of the Base Interpreter provided that each
+    external component clearly identifies itself whenever it is used
+    interactively.  Unless explicitly specified when applying the
+    license to the Work, the only applicable Base Interpreter is a
+    `LaTeX-Format' or in the case of files belonging to the
+    `LaTeX-format' a program implementing the `TeX language'.
+
+
+
+CONDITIONS ON DISTRIBUTION AND MODIFICATION
+===========================================
+
+1.  Activities other than distribution and/or modification of the Work
+are not covered by this license; they are outside its scope.  In
+particular, the act of running the Work is not restricted and no
+requirements are made concerning any offers of support for the Work.
+
+2.  You may distribute a complete, unmodified copy of the Work as you
+received it.  Distribution of only part of the Work is considered
+modification of the Work, and no right to distribute such a Derived
+Work may be assumed under the terms of this clause.
+
+3.  You may distribute a Compiled Work that has been generated from a
+complete, unmodified copy of the Work as distributed under Clause 2
+above, as long as that Compiled Work is distributed in such a way that
+the recipients may install the Compiled Work on their system exactly
+as it would have been installed if they generated a Compiled Work
+directly from the Work.
+
+4.  If you are the Current Maintainer of the Work, you may, without
+restriction, modify the Work, thus creating a Derived Work.  You may
+also distribute the Derived Work without restriction, including
+Compiled Works generated from the Derived Work.  Derived Works
+distributed in this manner by the Current Maintainer are considered to
+be updated versions of the Work.
+
+5.  If you are not the Current Maintainer of the Work, you may modify
+your copy of the Work, thus creating a Derived Work based on the Work,
+and compile this Derived Work, thus creating a Compiled Work based on
+the Derived Work.
+
+6.  If you are not the Current Maintainer of the Work, you may
+distribute a Derived Work provided the following conditions are met
+for every component of the Work unless that component clearly states
+in the copyright notice that it is exempt from that condition.  Only
+the Current Maintainer is allowed to add such statements of exemption
+to a component of the Work.
+
+  a. If a component of this Derived Work can be a direct replacement
+     for a component of the Work when that component is used with the
+     Base Interpreter, then, wherever this component of the Work
+     identifies itself to the user when used interactively with that
+     Base Interpreter, the replacement component of this Derived Work
+     clearly and unambiguously identifies itself as a modified version
+     of this component to the user when used interactively with that
+     Base Interpreter.
+
+  b. Every component of the Derived Work contains prominent notices
+     detailing the nature of the changes to that component, or a
+     prominent reference to another file that is distributed as part
+     of the Derived Work and that contains a complete and accurate log
+     of the changes.
+
+  c. No information in the Derived Work implies that any persons,
+     including (but not limited to) the authors of the original version
+     of the Work, provide any support, including (but not limited to)
+     the reporting and handling of errors, to recipients of the
+     Derived Work unless those persons have stated explicitly that
+     they do provide such support for the Derived Work.
+
+  d. You distribute at least one of the following with the Derived Work:
+
+       1. A complete, unmodified copy of the Work;
+          if your distribution of a modified component is made by
+          offering access to copy the modified component from a
+          designated place, then offering equivalent access to copy
+          the Work from the same or some similar place meets this
+          condition, even though third parties are not compelled to
+          copy the Work along with the modified component;
+
+       2. Information that is sufficient to obtain a complete,
+          unmodified copy of the Work.
+
+7.  If you are not the Current Maintainer of the Work, you may
+distribute a Compiled Work generated from a Derived Work, as long as
+the Derived Work is distributed to all recipients of the Compiled
+Work, and as long as the conditions of Clause 6, above, are met with
+regard to the Derived Work.
+
+8.  The conditions above are not intended to prohibit, and hence do not
+apply to, the modification, by any method, of any component so that it
+becomes identical to an updated version of that component of the Work as
+it is distributed by the Current Maintainer under Clause 4, above.
+
+9.  Distribution of the Work or any Derived Work in an alternative
+format, where the Work or that Derived Work (in whole or in part) is
+then produced by applying some process to that format, does not relax or
+nullify any sections of this license as they pertain to the results of
+applying that process.
+
+10. a. A Derived Work may be distributed under a different license
+       provided that license itself honors the conditions listed in
+       Clause 6 above, in regard to the Work, though it does not have
+       to honor the rest of the conditions in this license.
+
+    b. If a Derived Work is distributed under a different license, that
+       Derived Work must provide sufficient documentation as part of
+       itself to allow each recipient of that Derived Work to honor the
+       restrictions in Clause 6 above, concerning changes from the Work.
+
+11. This license places no restrictions on works that are unrelated to
+the Work, nor does this license place any restrictions on aggregating
+such works with the Work by any means.
+
+12.  Nothing in this license is intended to, or may be used to, prevent
+complete compliance by all parties with all applicable laws.
+
+
+NO WARRANTY
+===========
+
+There is no warranty for the Work.  Except when otherwise stated in
+writing, the Copyright Holder provides the Work `as is', without
+warranty of any kind, either expressed or implied, including, but not
+limited to, the implied warranties of merchantability and fitness for a
+particular purpose.  The entire risk as to the quality and performance
+of the Work is with you.  Should the Work prove defective, you assume
+the cost of all necessary servicing, repair, or correction.
+
+In no event unless required by applicable law or agreed to in writing
+will The Copyright Holder, or any author named in the components of the
+Work, or any other party who may distribute and/or modify the Work as
+permitted above, be liable to you for damages, including any general,
+special, incidental or consequential damages arising out of any use of
+the Work or out of inability to use the Work (including, but not limited
+to, loss of data, data being rendered inaccurate, or losses sustained by
+anyone as a result of any failure of the Work to operate with any other
+programs), even if the Copyright Holder or said author or said other
+party has been advised of the possibility of such damages.
+
+
+MAINTENANCE OF THE WORK
+=======================
+
+The Work has the status `author-maintained' if the Copyright Holder
+explicitly and prominently states near the primary copyright notice in
+the Work that the Work can only be maintained by the Copyright Holder
+or simply that it is `author-maintained'.
+
+The Work has the status `maintained' if there is a Current Maintainer
+who has indicated in the Work that they are willing to receive error
+reports for the Work (for example, by supplying a valid e-mail
+address). It is not required for the Current Maintainer to acknowledge
+or act upon these error reports.
+
+The Work changes from status `maintained' to `unmaintained' if there
+is no Current Maintainer, or the person stated to be Current
+Maintainer of the work cannot be reached through the indicated means
+of communication for a period of six months, and there are no other
+significant signs of active maintenance.
+
+You can become the Current Maintainer of the Work by agreement with
+any existing Current Maintainer to take over this role.
+
+If the Work is unmaintained, you can become the Current Maintainer of
+the Work through the following steps:
+
+ 1.  Make a reasonable attempt to trace the Current Maintainer (and
+     the Copyright Holder, if the two differ) through the means of
+     an Internet or similar search.
+
+ 2.  If this search is successful, then enquire whether the Work
+     is still maintained.
+
+  a. If it is being maintained, then ask the Current Maintainer
+     to update their communication data within one month.
+
+  b. If the search is unsuccessful or no action to resume active
+     maintenance is taken by the Current Maintainer, then announce
+     within the pertinent community your intention to take over
+     maintenance.  (If the Work is a LaTeX work, this could be
+     done, for example, by posting to comp.text.tex.)
+
+ 3a. If the Current Maintainer is reachable and agrees to pass
+     maintenance of the Work to you, then this takes effect
+     immediately upon announcement.
+
+  b. If the Current Maintainer is not reachable and the Copyright
+     Holder agrees that maintenance of the Work be passed to you,
+     then this takes effect immediately upon announcement.
+
+ 4.  If you make an `intention announcement' as described in 2b. above
+     and after three months your intention is challenged neither by
+     the Current Maintainer nor by the Copyright Holder nor by other
+     people, then you may arrange for the Work to be changed so as
+     to name you as the (new) Current Maintainer.
+
+ 5.  If the previously unreachable Current Maintainer becomes
+     reachable once more within three months of a change completed
+     under the terms of 3b) or 4), then that Current Maintainer must
+     become or remain the Current Maintainer upon request provided
+     they then update their communication data within one month.
+
+A change in the Current Maintainer does not, of itself, alter the fact
+that the Work is distributed under the LPPL license.
+
+If you become the Current Maintainer of the Work, you should
+immediately provide, within the Work, a prominent and unambiguous
+statement of your status as Current Maintainer.  You should also
+announce your new status to the same pertinent community as
+in 2b) above.
+
+
+WHETHER AND HOW TO DISTRIBUTE WORKS UNDER THIS LICENSE
+======================================================
+
+This section contains important instructions, examples, and
+recommendations for authors who are considering distributing their
+works under this license.  These authors are addressed as `you' in
+this section.
+
+Choosing This License or Another License
+----------------------------------------
+
+If for any part of your work you want or need to use *distribution*
+conditions that differ significantly from those in this license, then
+do not refer to this license anywhere in your work but, instead,
+distribute your work under a different license.  You may use the text
+of this license as a model for your own license, but your license
+should not refer to the LPPL or otherwise give the impression that
+your work is distributed under the LPPL.
+
+The document `modguide.tex' in the base LaTeX distribution explains
+the motivation behind the conditions of this license.  It explains,
+for example, why distributing LaTeX under the GNU General Public
+License (GPL) was considered inappropriate.  Even if your work is
+unrelated to LaTeX, the discussion in `modguide.tex' may still be
+relevant, and authors intending to distribute their works under any
+license are encouraged to read it.
+
+A Recommendation on Modification Without Distribution
+-----------------------------------------------------
+
+It is wise never to modify a component of the Work, even for your own
+personal use, without also meeting the above conditions for
+distributing the modified component.  While you might intend that such
+modifications will never be distributed, often this will happen by
+accident -- you may forget that you have modified that component; or
+it may not occur to you when allowing others to access the modified
+version that you are thus distributing it and violating the conditions
+of this license in ways that could have legal implications and, worse,
+cause problems for the community.  It is therefore usually in your
+best interest to keep your copy of the Work identical with the public
+one.  Many works provide ways to control the behavior of that work
+without altering any of its licensed components.
+
+How to Use This License
+-----------------------
+
+To use this license, place in each of the components of your work both
+an explicit copyright notice including your name and the year the work
+was authored and/or last substantially modified.  Include also a
+statement that the distribution and/or modification of that
+component is constrained by the conditions in this license.
+
+Here is an example of such a notice and statement:
+
+  %% pig.dtx
+  %% Copyright 2005 M. Y. Name
+  %
+  % This work may be distributed and/or modified under the
+  % conditions of the LaTeX Project Public License, either version 1.3
+  % of this license or (at your option) any later version.
+  % The latest version of this license is in
+  %   http://www.latex-project.org/lppl.txt
+  % and version 1.3 or later is part of all distributions of LaTeX
+  % version 2005/12/01 or later.
+  %
+  % This work has the LPPL maintenance status `maintained'.
+  %
+  % The Current Maintainer of this work is M. Y. Name.
+  %
+  % This work consists of the files pig.dtx and pig.ins
+  % and the derived file pig.sty.
+
+Given such a notice and statement in a file, the conditions
+given in this license document would apply, with the `Work' referring
+to the three files `pig.dtx', `pig.ins', and `pig.sty' (the last being
+generated from `pig.dtx' using `pig.ins'), the `Base Interpreter'
+referring to any `LaTeX-Format', and both `Copyright Holder' and
+`Current Maintainer' referring to the person `M. Y. Name'.
+
+If you do not want the Maintenance section of LPPL to apply to your
+Work, change `maintained' above into `author-maintained'.
+However, we recommend that you use `maintained', as the Maintenance
+section was added in order to ensure that your Work remains useful to
+the community even when you can no longer maintain and support it
+yourself.
+
+Derived Works That Are Not Replacements
+---------------------------------------
+
+Several clauses of the LPPL specify means to provide reliability and
+stability for the user community. They therefore concern themselves
+with the case that a Derived Work is intended to be used as a
+(compatible or incompatible) replacement of the original Work. If
+this is not the case (e.g., if a few lines of code are reused for a
+completely different task), then clauses 6b and 6d shall not apply.
+
+
+Important Recommendations
+-------------------------
+
+ Defining What Constitutes the Work
+
+   The LPPL requires that distributions of the Work contain all the
+   files of the Work.  It is therefore important that you provide a
+   way for the licensee to determine which files constitute the Work.
+   This could, for example, be achieved by explicitly listing all the
+   files of the Work near the copyright notice of each file or by
+   using a line such as:
+
+    % This work consists of all files listed in manifest.txt.
+
+   in that place.  In the absence of an unequivocal list it might be
+   impossible for the licensee to determine what is considered by you
+   to comprise the Work and, in such a case, the licensee would be
+   entitled to make reasonable conjectures as to which files comprise
+   the Work.
+
+
+LGPLv2.1 clause:
+
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2.1 of the License, or (at your option) any later version.
+
+    This library 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
+    Lesser General Public License for more details.
+
+    You should have received a copy of the GNU Lesser General Public
+    License along with this library; if not, write to the Free Software
+    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+
+On Debian systems, the full text of the LGPLv2.1 can be found in
+/usr/share/common-licenses/LGPL-2.1.
diff --git a/debian/dfsg-repack b/debian/dfsg-repack
new file mode 100755
index 0000000..be18739
--- /dev/null
+++ b/debian/dfsg-repack
@@ -0,0 +1,33 @@
+#!/bin/sh
+
+set -e
+
+# This script removes non-dfsg files from upstream tarball.
+# Requires package 'zip' to be installed
+
+ORIG_TARBALL=$1
+if [ -z $ORIG_TARBALL ]; then
+	echo "Usage: $0 "
+	exit 1
+fi
+
+ZIP_FILE=zlibrary/text/data/hyphenationPatterns.zip
+FORMAT_DATA_DIR=fbreader/data/formats
+
+REPACK_DIR=./tmp-fbreader-repack
+mkdir -p $REPACK_DIR
+
+tar -C $REPACK_DIR -xzf $ORIG_TARBALL
+UPSTREAM_DIR=`ls -1 $REPACK_DIR/`; \
+(cd $REPACK_DIR && \
+	zip -d $UPSTREAM_DIR/$ZIP_FILE "el.pattern" "fi.pattern" "tr.pattern"; \
+	rm $UPSTREAM_DIR/$FORMAT_DATA_DIR/xhtml/*
+	rm $UPSTREAM_DIR/$FORMAT_DATA_DIR/docbook/*
+
+	mv $UPSTREAM_DIR ${UPSTREAM_DIR}.orig;
+)
+
+tar -C $REPACK_DIR -cf - ${UPSTREAM_DIR}.orig |
+	gzip --best -c > $ORIG_TARBALL+dfsg
+
+rm -r $REPACK_DIR
diff --git a/debian/fbreader.links b/debian/fbreader.links
new file mode 100644
index 0000000..6124499
--- /dev/null
+++ b/debian/fbreader.links
@@ -0,0 +1,2 @@
+usr/bin/FBReader usr/bin/fbreader
+usr/share/man/man1/FBReader.1.gz usr/share/man/man1/fbreader.1.gz
diff --git a/debian/gbp.conf b/debian/gbp.conf
new file mode 100644
index 0000000..2eb6cba
--- /dev/null
+++ b/debian/gbp.conf
@@ -0,0 +1,4 @@
+[DEFAULT]
+debian-branch   = debian/latest
+upstream-branch = upstream/latest
+pristine-tar    = True
diff --git a/debian/libzlcore-data.dirs b/debian/libzlcore-data.dirs
new file mode 100644
index 0000000..2e85fc0
--- /dev/null
+++ b/debian/libzlcore-data.dirs
@@ -0,0 +1 @@
+usr/share/zlibrary
diff --git a/debian/libzlcore0.13t64.dirs b/debian/libzlcore0.13t64.dirs
new file mode 100644
index 0000000..6845771
--- /dev/null
+++ b/debian/libzlcore0.13t64.dirs
@@ -0,0 +1 @@
+usr/lib
diff --git a/debian/libzlcore0.13t64.lintian-overrides b/debian/libzlcore0.13t64.lintian-overrides
new file mode 100644
index 0000000..f9e5438
--- /dev/null
+++ b/debian/libzlcore0.13t64.lintian-overrides
@@ -0,0 +1 @@
+libzlcore0.13t64: package-name-doesnt-match-sonames libzlcore0.99
diff --git a/debian/libzltext-data.dirs b/debian/libzltext-data.dirs
new file mode 100644
index 0000000..2e85fc0
--- /dev/null
+++ b/debian/libzltext-data.dirs
@@ -0,0 +1 @@
+usr/share/zlibrary
diff --git a/debian/libzltext0.13t64.dirs b/debian/libzltext0.13t64.dirs
new file mode 100644
index 0000000..6845771
--- /dev/null
+++ b/debian/libzltext0.13t64.dirs
@@ -0,0 +1 @@
+usr/lib
diff --git a/debian/libzltext0.13t64.lintian-overrides b/debian/libzltext0.13t64.lintian-overrides
new file mode 100644
index 0000000..3f294c8
--- /dev/null
+++ b/debian/libzltext0.13t64.lintian-overrides
@@ -0,0 +1 @@
+libzltext0.13t64: package-name-doesnt-match-sonames libzltext0.99
diff --git a/debian/manpages b/debian/manpages
new file mode 100644
index 0000000..0ac7b84
--- /dev/null
+++ b/debian/manpages
@@ -0,0 +1 @@
+fbreader/desktop/FBReader.1
diff --git a/debian/patches/0001-ZLQtFSManager.cpp.patch b/debian/patches/0001-ZLQtFSManager.cpp.patch
new file mode 100644
index 0000000..c21111c
--- /dev/null
+++ b/debian/patches/0001-ZLQtFSManager.cpp.patch
@@ -0,0 +1,12 @@
+Origin: https://gitlab.archlinux.org/archlinux/packaging/packages/fbreader/-/blob/0.99.4-12/fbreader-0.99.4.patch
+Subject: Fix invalid new-expression of abstract class type
+
+---
+diff -r -U2 fbreader-0.99.4.orig/zlibrary/ui/src/qt4/filesystem/ZLQtFSManager.cpp fbreader-0.99.4/zlibrary/ui/src/qt4/filesystem/ZLQtFSManager.cpp
+--- fbreader-0.99.4.orig/zlibrary/ui/src/qt4/filesystem/ZLQtFSManager.cpp	2012-11-30 19:41:25.000000000 +0700
++++ fbreader-0.99.4/zlibrary/ui/src/qt4/filesystem/ZLQtFSManager.cpp	2013-02-21 13:30:31.000000000 +0700
+@@ -49,3 +49,4 @@
+ 	  path = replacement + path.substr(1);
+ 	}
++	ZLUnixFSManager::normalizeRealPath(path);
+ }
diff --git a/debian/patches/0002-Qt5.patch b/debian/patches/0002-Qt5.patch
new file mode 100644
index 0000000..664f910
--- /dev/null
+++ b/debian/patches/0002-Qt5.patch
@@ -0,0 +1,503 @@
+Origin: https://gitlab.archlinux.org/archlinux/packaging/packages/fbreader/-/blob/0.99.4-12/fbreader-qt5.patch
+Subject: Port to Qt5 and use $(PKG_CONFIG) over pkg-config
+---
+diff -r -U2 fbreader-0.99.4.orig/makefiles/arch/desktop.mk fbreader-0.99.4/makefiles/arch/desktop.mk
+--- fbreader-0.99.4.orig/makefiles/arch/desktop.mk	2012-11-30 19:41:25.000000000 +0700
++++ fbreader-0.99.4/makefiles/arch/desktop.mk	2018-01-11 22:18:40.119207269 +0700
+@@ -15,27 +15,9 @@
+ CFLAGS = -pipe -fno-exceptions -Wall -Wno-ctor-dtor-privacy -W -DLIBICONV_PLUG
+ LDFLAGS =
+-EXTERNAL_INCLUDE = $(shell pkg-config --cflags fribidi) 
++EXTERNAL_INCLUDE = $(shell $(PKG_CONFIG) --cflags fribidi)
+ 
+-ifeq "$(UI_TYPE)" "qt"
+-  MOC = moc-qt3
+-  QTINCLUDE = -I /usr/include/qt3
+-else
+-  MOC = $(shell pkg-config QtCore --variable=moc_location)
+-  QTINCLUDE = -I $(shell pkg-config --cflags QtCore)
+-endif
+-
+-GTKINCLUDE = $(shell pkg-config --cflags gtk+-2.0 libpng xft)
+-
+-ifeq "$(UI_TYPE)" "qt"
+-  UILIBS = -lqt-mt
+-endif
+-
+-ifeq "$(UI_TYPE)" "qt4"
+-  UILIBS = $(shell pkg-config --libs QtCore QtGui QtNetwork)
+-endif
+-
+-ifeq "$(UI_TYPE)" "gtk"
+-  UILIBS = $(shell pkg-config --libs gtk+-2.0 gio-2.0) -lpng -ljpeg
+-endif
++MOC = "$(shell $(PKG_CONFIG) --variable=host_bins Qt5Core)/moc"
++QTINCLUDE = $(shell $(PKG_CONFIG) --cflags Qt5Gui Qt5Widgets Qt5Network)
++UILIBS = $(shell $(PKG_CONFIG) --libs Qt5Gui Qt5Widgets Qt5Network)
+ 
+ RM = rm -rvf
+diff -r -U2 fbreader-0.99.4.orig/zlibrary/ui/src/qt4/application/LineEditParameter.cpp fbreader-0.99.4/zlibrary/ui/src/qt4/application/LineEditParameter.cpp
+--- fbreader-0.99.4.orig/zlibrary/ui/src/qt4/application/LineEditParameter.cpp	2012-11-30 19:41:25.000000000 +0700
++++ fbreader-0.99.4/zlibrary/ui/src/qt4/application/LineEditParameter.cpp	2018-01-11 22:18:40.120207269 +0700
+@@ -18,7 +18,7 @@
+  */
+ 
+-#include 
+-#include 
+-#include 
++#include 
++#include 
++#include 
+ #include 
+ 
+diff -r -U2 fbreader-0.99.4.orig/zlibrary/ui/src/qt4/application/ZLQtApplicationWindow.cpp fbreader-0.99.4/zlibrary/ui/src/qt4/application/ZLQtApplicationWindow.cpp
+--- fbreader-0.99.4.orig/zlibrary/ui/src/qt4/application/ZLQtApplicationWindow.cpp	2012-11-30 19:41:25.000000000 +0700
++++ fbreader-0.99.4/zlibrary/ui/src/qt4/application/ZLQtApplicationWindow.cpp	2018-01-11 22:18:40.120207269 +0700
+@@ -18,15 +18,15 @@
+  */
+ 
+-#include 
++#include 
+ #include 
+ #include 
+ #include 
+-#include 
+-#include 
+-#include 
+-#include 
+-#include 
++#include 
++#include 
++#include 
++#include 
++#include 
+ #include 
+-#include 
++#include 
+ #include 
+ 
+diff -r -U2 fbreader-0.99.4.orig/zlibrary/ui/src/qt4/application/ZLQtApplicationWindow.h fbreader-0.99.4/zlibrary/ui/src/qt4/application/ZLQtApplicationWindow.h
+--- fbreader-0.99.4.orig/zlibrary/ui/src/qt4/application/ZLQtApplicationWindow.h	2012-11-30 19:41:25.000000000 +0700
++++ fbreader-0.99.4/zlibrary/ui/src/qt4/application/ZLQtApplicationWindow.h	2018-01-11 22:18:40.120207269 +0700
+@@ -23,6 +23,6 @@
+ #include 
+ 
+-#include 
+-#include 
++#include 
++#include 
+ #include 
+ 
+diff -r -U2 fbreader-0.99.4.orig/zlibrary/ui/src/qt4/dialogs/ZLQtDialog.cpp fbreader-0.99.4/zlibrary/ui/src/qt4/dialogs/ZLQtDialog.cpp
+--- fbreader-0.99.4.orig/zlibrary/ui/src/qt4/dialogs/ZLQtDialog.cpp	2012-11-30 19:41:25.000000000 +0700
++++ fbreader-0.99.4/zlibrary/ui/src/qt4/dialogs/ZLQtDialog.cpp	2018-01-11 22:18:40.120207269 +0700
+@@ -18,6 +18,6 @@
+  */
+ 
+-#include 
+-#include 
++#include 
++#include 
+ 
+ #include 
+diff -r -U2 fbreader-0.99.4.orig/zlibrary/ui/src/qt4/dialogs/ZLQtDialog.h fbreader-0.99.4/zlibrary/ui/src/qt4/dialogs/ZLQtDialog.h
+--- fbreader-0.99.4.orig/zlibrary/ui/src/qt4/dialogs/ZLQtDialog.h	2012-11-30 19:41:25.000000000 +0700
++++ fbreader-0.99.4/zlibrary/ui/src/qt4/dialogs/ZLQtDialog.h	2018-01-11 22:18:40.120207269 +0700
+@@ -21,6 +21,6 @@
+ #define __ZLQTDIALOG_H__
+ 
+-#include 
+-#include 
++#include 
++#include 
+ 
+ #include 
+diff -r -U2 fbreader-0.99.4.orig/zlibrary/ui/src/qt4/dialogs/ZLQtDialogContent.cpp fbreader-0.99.4/zlibrary/ui/src/qt4/dialogs/ZLQtDialogContent.cpp
+--- fbreader-0.99.4.orig/zlibrary/ui/src/qt4/dialogs/ZLQtDialogContent.cpp	2012-11-30 19:41:25.000000000 +0700
++++ fbreader-0.99.4/zlibrary/ui/src/qt4/dialogs/ZLQtDialogContent.cpp	2018-01-11 22:18:40.120207269 +0700
+@@ -18,8 +18,8 @@
+  */
+ 
+-#include 
+-#include 
+-#include 
+-#include 
++#include 
++#include 
++#include 
++#include 
+ 
+ #include "ZLQtDialogContent.h"
+diff -r -U2 fbreader-0.99.4.orig/zlibrary/ui/src/qt4/dialogs/ZLQtDialogManager.cpp fbreader-0.99.4/zlibrary/ui/src/qt4/dialogs/ZLQtDialogManager.cpp
+--- fbreader-0.99.4.orig/zlibrary/ui/src/qt4/dialogs/ZLQtDialogManager.cpp	2012-11-30 19:41:25.000000000 +0700
++++ fbreader-0.99.4/zlibrary/ui/src/qt4/dialogs/ZLQtDialogManager.cpp	2018-01-11 22:18:40.120207269 +0700
+@@ -18,9 +18,9 @@
+  */
+ 
+-#include 
+-#include 
+-#include 
++#include 
++#include 
++#include 
+ #include 
+-#include 
++#include 
+ 
+ #include "ZLQtDialogManager.h"
+diff -r -U2 fbreader-0.99.4.orig/zlibrary/ui/src/qt4/dialogs/ZLQtOpenFileDialog.cpp fbreader-0.99.4/zlibrary/ui/src/qt4/dialogs/ZLQtOpenFileDialog.cpp
+--- fbreader-0.99.4.orig/zlibrary/ui/src/qt4/dialogs/ZLQtOpenFileDialog.cpp	2012-11-30 19:41:25.000000000 +0700
++++ fbreader-0.99.4/zlibrary/ui/src/qt4/dialogs/ZLQtOpenFileDialog.cpp	2018-01-11 22:18:40.120207269 +0700
+@@ -18,5 +18,5 @@
+  */
+ 
+-#include 
++#include 
+ 
+ #include "ZLQtOpenFileDialog.h"
+diff -r -U2 fbreader-0.99.4.orig/zlibrary/ui/src/qt4/dialogs/ZLQtOptionView.cpp fbreader-0.99.4/zlibrary/ui/src/qt4/dialogs/ZLQtOptionView.cpp
+--- fbreader-0.99.4.orig/zlibrary/ui/src/qt4/dialogs/ZLQtOptionView.cpp	2012-11-30 19:41:25.000000000 +0700
++++ fbreader-0.99.4/zlibrary/ui/src/qt4/dialogs/ZLQtOptionView.cpp	2018-01-11 22:18:40.121207269 +0700
+@@ -20,14 +20,14 @@
+ #include 
+ 
+-#include 
+-#include 
+-#include 
+-#include 
+-#include 
+-#include 
+-#include 
+-#include 
+-#include 
+-#include 
++#include 
++#include 
++#include 
++#include 
++#include 
++#include 
++#include 
++#include 
++#include 
++#include 
+ 
+ #include 
+diff -r -U2 fbreader-0.99.4.orig/zlibrary/ui/src/qt4/dialogs/ZLQtOptionsDialog.cpp fbreader-0.99.4/zlibrary/ui/src/qt4/dialogs/ZLQtOptionsDialog.cpp
+--- fbreader-0.99.4.orig/zlibrary/ui/src/qt4/dialogs/ZLQtOptionsDialog.cpp	2012-11-30 19:41:25.000000000 +0700
++++ fbreader-0.99.4/zlibrary/ui/src/qt4/dialogs/ZLQtOptionsDialog.cpp	2018-01-11 22:18:40.121207269 +0700
+@@ -18,9 +18,9 @@
+  */
+ 
+-#include 
+-#include 
+-#include 
+-#include 
+-#include 
++#include 
++#include 
++#include 
++#include 
++#include 
+ #include 
+ 
+diff -r -U2 fbreader-0.99.4.orig/zlibrary/ui/src/qt4/dialogs/ZLQtOptionsDialog.h fbreader-0.99.4/zlibrary/ui/src/qt4/dialogs/ZLQtOptionsDialog.h
+--- fbreader-0.99.4.orig/zlibrary/ui/src/qt4/dialogs/ZLQtOptionsDialog.h	2012-11-30 19:41:25.000000000 +0700
++++ fbreader-0.99.4/zlibrary/ui/src/qt4/dialogs/ZLQtOptionsDialog.h	2018-01-11 22:18:40.121207269 +0700
+@@ -21,7 +21,7 @@
+ #define __ZLQTOPTIONSDIALOG_H__
+ 
+-#include 
+-#include 
+-#include 
++#include 
++#include 
++#include 
+ 
+ #include "../../../../core/src/desktop/dialogs/ZLDesktopOptionsDialog.h"
+diff -r -U2 fbreader-0.99.4.orig/zlibrary/ui/src/qt4/dialogs/ZLQtProgressDialog.cpp fbreader-0.99.4/zlibrary/ui/src/qt4/dialogs/ZLQtProgressDialog.cpp
+--- fbreader-0.99.4.orig/zlibrary/ui/src/qt4/dialogs/ZLQtProgressDialog.cpp	2012-11-30 19:41:25.000000000 +0700
++++ fbreader-0.99.4/zlibrary/ui/src/qt4/dialogs/ZLQtProgressDialog.cpp	2018-01-11 22:18:40.121207269 +0700
+@@ -20,9 +20,9 @@
+ #include 
+ 
+-#include 
+-#include 
+-#include 
+-#include 
+-#include 
++#include 
++#include 
++#include 
++#include 
++#include 
+ #include 
+ 
+diff -r -U2 fbreader-0.99.4.orig/zlibrary/ui/src/qt4/dialogs/ZLQtProgressDialog.h fbreader-0.99.4/zlibrary/ui/src/qt4/dialogs/ZLQtProgressDialog.h
+--- fbreader-0.99.4.orig/zlibrary/ui/src/qt4/dialogs/ZLQtProgressDialog.h	2012-11-30 19:41:25.000000000 +0700
++++ fbreader-0.99.4/zlibrary/ui/src/qt4/dialogs/ZLQtProgressDialog.h	2018-01-11 22:18:40.121207269 +0700
+@@ -23,9 +23,9 @@
+ #include 
+ 
+-#include 
++#include 
+ #include 
+-#include 
+-#include 
+-#include 
++#include 
++#include 
++#include 
+ #include 
+ 
+diff -r -U2 fbreader-0.99.4.orig/zlibrary/ui/src/qt4/dialogs/ZLQtTreeDialog.cpp fbreader-0.99.4/zlibrary/ui/src/qt4/dialogs/ZLQtTreeDialog.cpp
+--- fbreader-0.99.4.orig/zlibrary/ui/src/qt4/dialogs/ZLQtTreeDialog.cpp	2012-11-30 19:41:25.000000000 +0700
++++ fbreader-0.99.4/zlibrary/ui/src/qt4/dialogs/ZLQtTreeDialog.cpp	2018-01-11 22:18:40.120207269 +0700
+@@ -20,10 +20,10 @@
+ #include 
+ 
+-#include 
+-#include 
+-#include 
+-#include 
+ #include 
+ #include 
++#include 
++#include 
++#include 
++#include 
+ 
+ #include 
+diff -r -U2 fbreader-0.99.4.orig/zlibrary/ui/src/qt4/dialogs/ZLQtTreeDialog.h fbreader-0.99.4/zlibrary/ui/src/qt4/dialogs/ZLQtTreeDialog.h
+--- fbreader-0.99.4.orig/zlibrary/ui/src/qt4/dialogs/ZLQtTreeDialog.h	2012-11-30 19:41:25.000000000 +0700
++++ fbreader-0.99.4/zlibrary/ui/src/qt4/dialogs/ZLQtTreeDialog.h	2018-01-11 22:18:40.121207269 +0700
+@@ -25,10 +25,10 @@
+ #include 
+ 
+-#include 
+-#include 
+-#include 
+-#include 
+-#include 
+-#include 
++#include 
++#include 
++#include 
++#include 
++#include 
++#include 
+ 
+ #include 
+diff -r -U2 fbreader-0.99.4.orig/zlibrary/ui/src/qt4/library/ZLQApplication.h fbreader-0.99.4/zlibrary/ui/src/qt4/library/ZLQApplication.h
+--- fbreader-0.99.4.orig/zlibrary/ui/src/qt4/library/ZLQApplication.h	2012-11-30 19:41:25.000000000 +0700
++++ fbreader-0.99.4/zlibrary/ui/src/qt4/library/ZLQApplication.h	2018-01-11 22:18:40.121207269 +0700
+@@ -21,5 +21,5 @@
+ #define __ZLQAPPLICATION_H__
+ 
+-#include 
++#include 
+ 
+ class ZLQApplication : public QApplication {
+diff -r -U2 fbreader-0.99.4.orig/zlibrary/ui/src/qt4/library/ZLibrary.cpp fbreader-0.99.4/zlibrary/ui/src/qt4/library/ZLibrary.cpp
+--- fbreader-0.99.4.orig/zlibrary/ui/src/qt4/library/ZLibrary.cpp	2012-11-30 19:41:25.000000000 +0700
++++ fbreader-0.99.4/zlibrary/ui/src/qt4/library/ZLibrary.cpp	2018-01-11 22:18:40.121207269 +0700
+@@ -20,5 +20,5 @@
+ #include 
+ #include 
+-#include 
++#include 
+ #include 
+ 
+@@ -73,5 +73,5 @@
+ 	new ZLQApplication(argc, argv);
+ 
+-	QTextCodec::setCodecForCStrings(QTextCodec::codecForName("utf-8"));
++	QTextCodec::setCodecForLocale(QTextCodec::codecForName("utf-8"));
+ 
+ 	ZLibrary::parseArguments(argc, argv);
+diff -r -U2 fbreader-0.99.4.orig/zlibrary/ui/src/qt4/network/ZLQtNetworkManager.cpp fbreader-0.99.4/zlibrary/ui/src/qt4/network/ZLQtNetworkManager.cpp
+--- fbreader-0.99.4.orig/zlibrary/ui/src/qt4/network/ZLQtNetworkManager.cpp	2012-11-30 19:41:25.000000000 +0700
++++ fbreader-0.99.4/zlibrary/ui/src/qt4/network/ZLQtNetworkManager.cpp	2018-01-11 22:18:40.120207269 +0700
+@@ -25,5 +25,7 @@
+ #include 
+ #include 
++#include 
+ 
++#include 
+ #include 
+ #include 
+@@ -150,10 +152,10 @@
+ 	if (!scope.request->postParameters().empty()) {
+ 		QByteArray data;
+-		QUrl tmp;
++		QUrlQuery tmp;
+ 		typedef std::pair string_pair;
+ 		foreach (const string_pair &pair, scope.request->postParameters()) {
+ 			tmp.addQueryItem(QString::fromStdString(pair.first), QString::fromStdString(pair.second));
+ 		}
+-		data = tmp.encodedQuery();
++		data = tmp.query(QUrl::FullyEncoded).toUtf8(); //encodedQuery();
+ 		reply = const_cast(myManager).post(networkRequest, data);
+ 	} else {
+diff -r -U2 fbreader-0.99.4.orig/zlibrary/ui/src/qt4/tree/QtWaitingSpinner.cpp fbreader-0.99.4/zlibrary/ui/src/qt4/tree/QtWaitingSpinner.cpp
+--- fbreader-0.99.4.orig/zlibrary/ui/src/qt4/tree/QtWaitingSpinner.cpp	2012-11-30 19:41:25.000000000 +0700
++++ fbreader-0.99.4/zlibrary/ui/src/qt4/tree/QtWaitingSpinner.cpp	2018-01-11 22:13:39.639219906 +0700
+@@ -87,5 +87,5 @@
+ 
+ void QtWaitingSpinner::setRoundness(qreal roundness) {
+-	myRoundness = std::max(0.0, std::min(100.0, roundness));
++	myRoundness = std::max(static_cast(0.0), std::min(static_cast(100.0), roundness));
+ }
+ 
+@@ -149,5 +149,5 @@
+ 	qreal gradation = alphaDiff / (qreal)(distanceThreshold + 1);
+ 	qreal resultAlpha = color.alphaF() - gradation * distance;
+-	resultAlpha = std::min(1.0, std::max(0.0, resultAlpha)); //if alpha is out of bound, force it to bounds
++	resultAlpha = std::min(static_cast(1.0), std::max(static_cast(0.0), resultAlpha)); //if alpha is out of bound, force it to bounds
+ 	color.setAlphaF(resultAlpha);
+ 	return color;
+diff -r -U2 fbreader-0.99.4.orig/zlibrary/ui/src/qt4/tree/QtWaitingSpinner.h fbreader-0.99.4/zlibrary/ui/src/qt4/tree/QtWaitingSpinner.h
+--- fbreader-0.99.4.orig/zlibrary/ui/src/qt4/tree/QtWaitingSpinner.h	2012-11-30 19:41:25.000000000 +0700
++++ fbreader-0.99.4/zlibrary/ui/src/qt4/tree/QtWaitingSpinner.h	2018-01-11 22:18:40.121207269 +0700
+@@ -4,5 +4,5 @@
+ #include 
+ 
+-#include 
++#include 
+ #include 
+ 
+diff -r -U2 fbreader-0.99.4.orig/zlibrary/ui/src/qt4/tree/ZLQtItemsListWidget.cpp fbreader-0.99.4/zlibrary/ui/src/qt4/tree/ZLQtItemsListWidget.cpp
+--- fbreader-0.99.4.orig/zlibrary/ui/src/qt4/tree/ZLQtItemsListWidget.cpp	2012-11-30 19:41:25.000000000 +0700
++++ fbreader-0.99.4/zlibrary/ui/src/qt4/tree/ZLQtItemsListWidget.cpp	2018-01-11 22:18:40.120207269 +0700
+@@ -18,12 +18,12 @@
+  */
+ 
+-#include 
+-#include 
+ #include 
+ #include 
+ #include 
+ #include 
+-#include 
+ #include 
++#include 
++#include 
++#include 
+ 
+ #include 
+diff -r -U2 fbreader-0.99.4.orig/zlibrary/ui/src/qt4/tree/ZLQtItemsListWidget.h fbreader-0.99.4/zlibrary/ui/src/qt4/tree/ZLQtItemsListWidget.h
+--- fbreader-0.99.4.orig/zlibrary/ui/src/qt4/tree/ZLQtItemsListWidget.h	2012-11-30 19:41:25.000000000 +0700
++++ fbreader-0.99.4/zlibrary/ui/src/qt4/tree/ZLQtItemsListWidget.h	2018-01-11 22:18:40.120207269 +0700
+@@ -21,10 +21,10 @@
+ #define __ZLQTITEMSLISTWIDGET_H__
+ 
+-#include 
+-#include 
+-#include 
+-#include 
+-#include 
+-#include 
++#include 
++#include 
++#include 
++#include 
++#include 
++#include 
+ 
+ #include 
+diff -r -U2 fbreader-0.99.4.orig/zlibrary/ui/src/qt4/tree/ZLQtPreviewWidget.cpp fbreader-0.99.4/zlibrary/ui/src/qt4/tree/ZLQtPreviewWidget.cpp
+--- fbreader-0.99.4.orig/zlibrary/ui/src/qt4/tree/ZLQtPreviewWidget.cpp	2012-11-30 19:41:25.000000000 +0700
++++ fbreader-0.99.4/zlibrary/ui/src/qt4/tree/ZLQtPreviewWidget.cpp	2018-01-11 22:18:40.120207269 +0700
+@@ -18,8 +18,8 @@
+  */
+ 
+-#include 
+-#include 
+-#include 
+-#include 
++#include 
++#include 
++#include 
++#include 
+ 
+ #include 
+diff -r -U2 fbreader-0.99.4.orig/zlibrary/ui/src/qt4/tree/ZLQtPreviewWidget.h fbreader-0.99.4/zlibrary/ui/src/qt4/tree/ZLQtPreviewWidget.h
+--- fbreader-0.99.4.orig/zlibrary/ui/src/qt4/tree/ZLQtPreviewWidget.h	2012-11-30 19:41:25.000000000 +0700
++++ fbreader-0.99.4/zlibrary/ui/src/qt4/tree/ZLQtPreviewWidget.h	2018-01-11 22:18:40.121207269 +0700
+@@ -21,9 +21,9 @@
+ #define __ZLQTPREVIEWWIDGET_H__
+ 
+-#include 
+-#include 
+-#include 
+-#include 
+-#include 
++#include 
++#include 
++#include 
++#include 
++#include 
+ #include 
+ 
+diff -r -U2 fbreader-0.99.4.orig/zlibrary/ui/src/qt4/tree/ZLQtSearchField.cpp fbreader-0.99.4/zlibrary/ui/src/qt4/tree/ZLQtSearchField.cpp
+--- fbreader-0.99.4.orig/zlibrary/ui/src/qt4/tree/ZLQtSearchField.cpp	2012-11-30 19:41:25.000000000 +0700
++++ fbreader-0.99.4/zlibrary/ui/src/qt4/tree/ZLQtSearchField.cpp	2018-01-11 22:18:40.120207269 +0700
+@@ -19,7 +19,7 @@
+ 
+ #include 
+-#include 
+-#include 
+-#include 
++#include 
++#include 
++#include 
+ 
+ #include 
+diff -r -U2 fbreader-0.99.4.orig/zlibrary/ui/src/qt4/tree/ZLQtSearchField.h fbreader-0.99.4/zlibrary/ui/src/qt4/tree/ZLQtSearchField.h
+--- fbreader-0.99.4.orig/zlibrary/ui/src/qt4/tree/ZLQtSearchField.h	2012-11-30 19:41:25.000000000 +0700
++++ fbreader-0.99.4/zlibrary/ui/src/qt4/tree/ZLQtSearchField.h	2018-01-11 22:18:40.121207269 +0700
+@@ -22,6 +22,6 @@
+ 
+ #include 
+-#include 
+-#include 
++#include 
++#include 
+ 
+ #include "QtWaitingSpinner.h"
+diff -r -U2 fbreader-0.99.4.orig/zlibrary/ui/src/qt4/view/ZLQtViewWidget.cpp fbreader-0.99.4/zlibrary/ui/src/qt4/view/ZLQtViewWidget.cpp
+--- fbreader-0.99.4.orig/zlibrary/ui/src/qt4/view/ZLQtViewWidget.cpp	2012-11-30 19:41:25.000000000 +0700
++++ fbreader-0.99.4/zlibrary/ui/src/qt4/view/ZLQtViewWidget.cpp	2018-01-11 22:18:40.121207269 +0700
+@@ -20,6 +20,6 @@
+ #include 
+ 
+-#include 
+-#include 
++#include 
++#include 
+ #include 
+ #include 
+@@ -186,9 +186,9 @@
+ void ZLQtViewWidget::setScrollbarEnabled(ZLView::Direction direction, bool enabled) {
+ 	if (direction == ZLView::VERTICAL) {
+-		myRightScrollBar->setShown(enabled && myShowScrollBarAtRight);
+-		myLeftScrollBar->setShown(enabled && !myShowScrollBarAtRight);
++		myRightScrollBar->setVisible(enabled && myShowScrollBarAtRight);
++		myLeftScrollBar->setVisible(enabled && !myShowScrollBarAtRight);
+ 	} else {
+-		myBottomScrollBar->setShown(enabled && myShowScrollBarAtBottom);
+-		myTopScrollBar->setShown(enabled && !myShowScrollBarAtBottom);
++		myBottomScrollBar->setVisible(enabled && myShowScrollBarAtBottom);
++		myTopScrollBar->setVisible(enabled && !myShowScrollBarAtBottom);
+ 	}
+ }
+diff -r -U2 fbreader-0.99.4.orig/zlibrary/ui/src/qt4/view/ZLQtViewWidget.h fbreader-0.99.4/zlibrary/ui/src/qt4/view/ZLQtViewWidget.h
+--- fbreader-0.99.4.orig/zlibrary/ui/src/qt4/view/ZLQtViewWidget.h	2012-11-30 19:41:25.000000000 +0700
++++ fbreader-0.99.4/zlibrary/ui/src/qt4/view/ZLQtViewWidget.h	2018-01-11 22:18:40.121207269 +0700
+@@ -21,5 +21,5 @@
+ #define __ZLQTVIEWWIDGET_H__
+ 
+-#include 
++#include 
+ 
+ #include "../../../../core/src/view/ZLViewWidget.h"
diff --git a/debian/patches/0003-gcc-6.patch b/debian/patches/0003-gcc-6.patch
new file mode 100644
index 0000000..a03be95
--- /dev/null
+++ b/debian/patches/0003-gcc-6.patch
@@ -0,0 +1,14 @@
+Origin: https://gitlab.archlinux.org/archlinux/packaging/packages/fbreader/-/blob/0.99.4-12/fbreader-gcc6.patch
+Subject: Fix build with gcc 6 or later
+---
+--- a/fbreader/src/formats/doc/OleStorage.cpp.orig	2012-11-30 13:41:25.000000000 +0100
++++ b/fbreader/src/formats/doc/OleStorage.cpp	2016-08-31 17:23:18.232536401 +0200
+@@ -59,7 +59,7 @@
+ 		clear();
+ 		return false;
+ 	}
+-	static const char OLE_SIGN[] = {0xD0, 0xCF, 0x11, 0xE0, 0xA1, 0xB1, 0x1A, 0xE1, 0};
++	static const char OLE_SIGN[] = {(char)0xD0, (char)0xCF, (char)0x11, (char)0xE0, (char)0xA1, (char)0xB1, (char)0x1A, (char)0xE1, 0};
+ 	if (std::strncmp(oleBuf, OLE_SIGN, 8) != 0) {
+ 		clear();
+ 		return false;
diff --git a/debian/patches/0004-prevent-so-install.patch b/debian/patches/0004-prevent-so-install.patch
new file mode 100644
index 0000000..9046382
--- /dev/null
+++ b/debian/patches/0004-prevent-so-install.patch
@@ -0,0 +1,23 @@
+Description: Prevent installing .so link in non-dev library pkgs
+Author: Bastian Germann 
+---
+--- fbreader-0.99.4+dfsg.orig/zlibrary/core/Makefile
++++ fbreader-0.99.4+dfsg/zlibrary/core/Makefile
+@@ -85,7 +85,6 @@ ifeq "$(ZLSHARED)" "yes"
+ 	@install -d $(DESTDIR)$(LIBDIR)
+ 	@install $(TARGET) $(DESTDIR)$(LIBDIR)
+ 	@ln -sf $(TARGET) $(DESTDIR)$(LIBDIR)/$(TARGET_SONAME)
+-	@ln -sf $(TARGET) $(DESTDIR)$(LIBDIR)/$(TARGET_SHORTNAME)
+ endif
+ 
+ do_install_dev:
+--- fbreader-0.99.4+dfsg.orig/zlibrary/text/Makefile
++++ fbreader-0.99.4+dfsg/zlibrary/text/Makefile
+@@ -52,7 +52,6 @@ ifeq "$(ZLSHARED)" "yes"
+ 	@install -d $(DESTDIR)$(LIBDIR)
+ 	@install $(TARGET) $(DESTDIR)$(LIBDIR)
+ 	@ln -sf $(TARGET) $(DESTDIR)$(LIBDIR)/$(TARGET_SONAME)
+-	@ln -sf $(TARGET) $(DESTDIR)$(LIBDIR)/$(TARGET_SHORTNAME)
+ endif
+ 
+ do_install_dev:
diff --git a/debian/patches/0008-951-fix-calling-compiler.patch b/debian/patches/0008-951-fix-calling-compiler.patch
new file mode 100644
index 0000000..3ce9f49
--- /dev/null
+++ b/debian/patches/0008-951-fix-calling-compiler.patch
@@ -0,0 +1,102 @@
+From: "Eugene V. Lyubimkin" 
+Date: Sat, 20 Feb 2016 18:20:25 +0100
+Subject: 951-fix-calling-compiler
+
+===================================================================
+---
+ makefiles/arch/desktop.mk | 3 +--
+ makefiles/gtksubdir.mk    | 8 ++------
+ makefiles/platforms.mk    | 4 +---
+ makefiles/qsubdir.mk      | 8 ++------
+ makefiles/subdir.mk       | 9 +--------
+ 5 files changed, 7 insertions(+), 25 deletions(-)
+
+diff --git a/makefiles/arch/desktop.mk b/makefiles/arch/desktop.mk
+index 357f2ce..78211a8 100644
+--- a/makefiles/arch/desktop.mk
++++ b/makefiles/arch/desktop.mk
+@@ -10,8 +10,7 @@ CC = gcc
+ AR = ar rsu
+ LD = g++
+ 
+-CFLAGS = -pipe -fno-exceptions -Wall -Wno-ctor-dtor-privacy -W -DLIBICONV_PLUG
+-LDFLAGS =
++CFLAGS += -pipe -fno-exceptions -Wall -Wno-ctor-dtor-privacy -W -DLIBICONV_PLUG
+ EXTERNAL_INCLUDE = $(shell $(PKG_CONFIG) --cflags fribidi)
+ 
+ MOC = "$(shell $(PKG_CONFIG) --variable=host_bins Qt5Core)/moc"
+ QTINCLUDE = $(shell $(PKG_CONFIG) --cflags Qt5Gui Qt5Widgets Qt5Network)
+diff --git a/makefiles/gtksubdir.mk b/makefiles/gtksubdir.mk
+index aed94f3..23f51da 100644
+--- a/makefiles/gtksubdir.mk
++++ b/makefiles/gtksubdir.mk
+@@ -11,14 +11,10 @@ OBJECTS += $(patsubst %.cpp, %.o, $(SOURCES))
+ .SUFFIXES: .c .cpp .o .h
+ 
+ .c.o:
+-	@echo -n 'Compiling $@ ...'
+-	@$(CC) -MMD -c $(CFLAGS) $(INCLUDE) $<
+-	@echo ' OK'
++	$(CC) -MMD -c $(CPPFLAGS) $(CFLAGS) $(INCLUDE) $<
+ 
+ .cpp.o:
+-	@echo -n 'Compiling $@ ...'
+-	@$(CC) -MMD -c $(CFLAGS) $(INCLUDE) $<
+-	@echo ' OK'
++	$(CC) -MMD -c $(CPPFLAGS) $(CFLAGS) $(CXXFLAGS) $(INCLUDE) $<
+ 
+ all: $(OBJECTS)
+ 
+diff --git a/makefiles/platforms.mk b/makefiles/platforms.mk
+index df83885..129463b 100644
+--- a/makefiles/platforms.mk
++++ b/makefiles/platforms.mk
+@@ -10,6 +10,4 @@ ifeq "$(UI_TYPE)" ""
+ $(error UI_TYPE is not defined. Please edit $(ROOTDIR)/makefiles/target.mk)
+ endif
+ 
+-ifeq "$(TARGET_STATUS)" ""
+-	TARGET_STATUS = release
+-endif
++TARGET_STATUS = "" # Debian packaging always set flags itself
+diff --git a/makefiles/qsubdir.mk b/makefiles/qsubdir.mk
+index 14b4efc..f6ec87b 100644
+--- a/makefiles/qsubdir.mk
++++ b/makefiles/qsubdir.mk
+@@ -11,14 +11,10 @@ OBJECTS = $(patsubst %.cpp, %.o, $(SOURCES))
+ .SUFFIXES: .cpp .moc.cpp .moc.o .o .h
+ 
+ .cpp.o:
+-	@echo -n 'Compiling $@ ...'
+-	@$(CC) -MMD -c $(CFLAGS) $(INCLUDE) $<
+-	@echo ' OK'
++	$(CC) -MMD -c $(CPPFLAGS) $(CFLAGS) $(CXXFLAGS) $(INCLUDE) $<
+ 
+ .h.moc.cpp:
+-	@echo -n 'Generating $@ ...'
+-	@$(MOC) $< -o $@
+-	@echo ' OK'
++	$(MOC) $< -o $@
+ 
+ all: $(OBJECTS) $(OBJMOC)
+ 
+diff --git a/makefiles/subdir.mk b/makefiles/subdir.mk
+index b364211..63e66bf 100644
+--- a/makefiles/subdir.mk
++++ b/makefiles/subdir.mk
+@@ -11,14 +11,7 @@ OBJECTS = $(patsubst %.cpp, %.o, $(SOURCES_CPP)) $(patsubst %.M, %.o, $(SOURCES_
+ .SUFFIXES: .cpp .M .m .o .h
+ 
+ .cpp.o:
+-	@echo -n 'Compiling $@ ...'
+-ifdef CFLAGS_NOARCH
+-	@$(CC) -MM $(CFLAGS_PRE) $(INCLUDE) $< -o `basename $< .cpp`.d
+-	@$(CC) -c $(CFLAGS) $(INCLUDE) $<
+-else
+-	@$(CC) -MMD -c $(CFLAGS) $(INCLUDE) $<
+-endif
+-	@echo ' OK'
++	$(CC) -MMD -c $(CPPFLAGS) $(CFLAGS) $(CXXFLAGS) $(INCLUDE) $<
+ 
+ .M.o:
+ 	@echo -n 'Compiling $@ ...'
diff --git a/debian/patches/0009-fbreader-Makefile-do-not-try-to-install-empty-format.patch b/debian/patches/0009-fbreader-Makefile-do-not-try-to-install-empty-format.patch
new file mode 100644
index 0000000..dfa51c7
--- /dev/null
+++ b/debian/patches/0009-fbreader-Makefile-do-not-try-to-install-empty-format.patch
@@ -0,0 +1,22 @@
+From: "Eugene V. Lyubimkin" 
+Date: Sat, 20 Feb 2016 18:23:10 +0100
+Subject: fbreader: Makefile: do not try to install empty formats/xhtml
+ directory
+
+---
+ fbreader/Makefile | 2 --
+ 1 file changed, 2 deletions(-)
+
+diff --git a/fbreader/Makefile b/fbreader/Makefile
+index 6efc10b..ba247b7 100644
+--- a/fbreader/Makefile
++++ b/fbreader/Makefile
+@@ -44,8 +44,6 @@ do_install:
+ 	@./scripts/install_help.sh $(VARIANT) $(FBSHAREDIR)/help
+ 	@install -d $(FBSHAREDIR)/formats/html
+ 	@install -m 0644 data/formats/html/html.ent $(FBSHAREDIR)/formats/html
+-	@install -d $(FBSHAREDIR)/formats/xhtml
+-	@install -m 0644 $(wildcard data/formats/xhtml/*.ent) $(FBSHAREDIR)/formats/xhtml
+ 	@install -d $(FBSHAREDIR)/formats/fb2
+ 	@sed "s/VERSION/$(VERSION)/" data/formats/fb2/FBReaderVersion.ent > $(FBSHAREDIR)/formats/fb2/FBReaderVersion.ent
+ 	@install -m 0644 data/formats/fb2/fb2genres.xml $(FBSHAREDIR)/formats/fb2
diff --git a/debian/patches/0011-zlibrary-unix-curl-avoid-duplicate-case-in-a-switch.patch b/debian/patches/0011-zlibrary-unix-curl-avoid-duplicate-case-in-a-switch.patch
new file mode 100644
index 0000000..d371cbe
--- /dev/null
+++ b/debian/patches/0011-zlibrary-unix-curl-avoid-duplicate-case-in-a-switch.patch
@@ -0,0 +1,32 @@
+From: "Eugene V. Lyubimkin" 
+Date: Sun, 9 Dec 2018 16:31:45 +0100
+Subject: zlibrary: unix: curl: avoid duplicate case in a switch
+
+CURLE_SSL_CACERT was merged into CURLE_PEER_FAILED_VERIFICATION, see [1]
+
+[1] https://github.com/curl/curl/commit/3f3b26d6feb0667714902e836af608094235fca2
+---
+ zlibrary/core/src/unix/curl/ZLCurlNetworkManager.cpp | 7 -------
+ 1 file changed, 7 deletions(-)
+
+diff --git a/zlibrary/core/src/unix/curl/ZLCurlNetworkManager.cpp b/zlibrary/core/src/unix/curl/ZLCurlNetworkManager.cpp
+index a75d8bc..55865b6 100644
+--- a/zlibrary/core/src/unix/curl/ZLCurlNetworkManager.cpp
++++ b/zlibrary/core/src/unix/curl/ZLCurlNetworkManager.cpp
+@@ -277,16 +277,9 @@ std::string ZLCurlNetworkManager::perform(const ZLExecutionData::Vector &dataLis
+ 				case CURLE_SSL_CONNECT_ERROR:
+ 					errors.insert(ZLStringUtil::printf(errorResource["sslConnectErrorMessage"].value(), curl_easy_strerror(CURLE_SSL_CONNECT_ERROR)));
+ 					break;
+-#if LIBCURL_VERSION_NUM > 0x071100
+ 				case CURLE_PEER_FAILED_VERIFICATION:
+-#else
+-				case CURLE_SSL_PEER_CERTIFICATE:
+-#endif
+ 					errors.insert(ZLStringUtil::printf(errorResource["peerFailedVerificationMessage"].value(), ZLNetworkUtil::hostFromUrl(url)));
+ 					break;
+-				case CURLE_SSL_CACERT:
+-					errors.insert(ZLStringUtil::printf(errorResource["sslCertificateAuthorityMessage"].value(), ZLNetworkUtil::hostFromUrl(url)));
+-					break;
+ 				case CURLE_SSL_CACERT_BADFILE:
+ 					errors.insert(ZLStringUtil::printf(errorResource["sslBadCertificateFileMessage"].value(), request.sslCertificate().Path));
+ 					break;
diff --git a/debian/patches/0013-fbreader-Makefile-make-linking-order-reproducible.patch b/debian/patches/0013-fbreader-Makefile-make-linking-order-reproducible.patch
new file mode 100644
index 0000000..acc20ab
--- /dev/null
+++ b/debian/patches/0013-fbreader-Makefile-make-linking-order-reproducible.patch
@@ -0,0 +1,21 @@
+From: Ievgen Liubymkin 
+Date: Sun, 1 Sep 2019 09:56:54 +0200
+Subject: fbreader: Makefile: make linking order reproducible
+
+---
+ fbreader/Makefile | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/fbreader/Makefile b/fbreader/Makefile
+index ba247b7..90070bd 100644
+--- a/fbreader/Makefile
++++ b/fbreader/Makefile
+@@ -22,7 +22,7 @@ all: .resources
+ 		fi; \
+ 	done;
+ 	@echo -n 'Linking $(TARGET) ...'
+-	@$(LD) $(LDFLAGS) -o $(TARGET) `find src -name *.o` $(TEXT_LIBS) $(CORE_LIBS) $(ZLUI_LIB) -lsqlite3
++	@$(LD) $(LDFLAGS) -o $(TARGET) `find src -name *.o | LC_ALL=C sort` $(TEXT_LIBS) $(CORE_LIBS) $(ZLUI_LIB) -lsqlite3
+ 	@echo ' OK'
+ 
+ FBSHAREDIR = $(DESTDIR)$(SHAREDIR)/FBReader
diff --git a/debian/patches/1014-desktop-mime-type.patch b/debian/patches/1014-desktop-mime-type.patch
new file mode 100644
index 0000000..0b8caa5
--- /dev/null
+++ b/debian/patches/1014-desktop-mime-type.patch
@@ -0,0 +1,19 @@
+Description: Announce supported file tyes in XDG desktop entry.
+ This ensure desktop file browsers know when to propose to use
+ fbreader.
+Author: Petter Reinholdtsen
+Bug-Debian: https://bugs.debian.org/601605
+Bug-Debian: https://bugs.debian.org/601609
+Bug-Debian: https://bugs.debian.org/813768
+Forwarded: no
+Last-Update: 2024-05-10
+---
+diff --git a/fbreader/desktop/desktop b/fbreader/desktop/desktop
+index bb35fe3..5d45cfd 100644
+--- a/fbreader/desktop/desktop
++++ b/fbreader/desktop/desktop
+@@ -21,3 +21,4 @@ Terminal=false
+ Type=Application
+ Icon=FBReader
+ Categories=Office;Viewer;Literature;
++MimeType=application/epub+zip;
diff --git a/debian/patches/series b/debian/patches/series
new file mode 100644
index 0000000..79b3b93
--- /dev/null
+++ b/debian/patches/series
@@ -0,0 +1,9 @@
+0001-ZLQtFSManager.cpp.patch
+0002-Qt5.patch
+0003-gcc-6.patch
+0004-prevent-so-install.patch
+0008-951-fix-calling-compiler.patch
+0009-fbreader-Makefile-do-not-try-to-install-empty-format.patch
+0011-zlibrary-unix-curl-avoid-duplicate-case-in-a-switch.patch
+0013-fbreader-Makefile-make-linking-order-reproducible.patch
+1014-desktop-mime-type.patch
diff --git a/debian/rules b/debian/rules
new file mode 100755
index 0000000..ae83bd7
--- /dev/null
+++ b/debian/rules
@@ -0,0 +1,44 @@
+#!/usr/bin/make -f
+
+ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
+	NUMJOBS = $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
+	AUXMAKEFLAGS += -j$(NUMJOBS)
+endif
+
+DPKG_EXPORT_BUILDFLAGS=1
+include /usr/share/dpkg/architecture.mk
+include /usr/share/dpkg/buildflags.mk
+
+DEB_DIR = $(CURDIR)/debian
+
+export PKG_CONFIG=$(DEB_HOST_GNU_TYPE)-pkg-config
+AUXMAKEFLAGS += 'LD=$$(CXX)'
+
+%:
+	dh $@
+
+override_dh_auto_build:
+	dh_auto_build -- $(AUXMAKEFLAGS) -C zlibrary/core TARGET_ARCH=desktop UI_TYPE=dummy
+	dh_auto_build -- $(AUXMAKEFLAGS) -C zlibrary/text TARGET_ARCH=desktop UI_TYPE=dummy
+	dh_auto_build -- $(AUXMAKEFLAGS) -C zlibrary/ui TARGET_ARCH=desktop UI_TYPE=qt4
+	dh_auto_build -- $(AUXMAKEFLAGS) -C fbreader TARGET_ARCH=desktop UI_TYPE=dummy
+
+install-common:
+	$(MAKE) -C zlibrary/core TARGET_ARCH=desktop UI_TYPE=dummy DESTDIR=$(DEB_DIR)/tmp/zlcore do_install
+	$(MAKE) -C zlibrary/text TARGET_ARCH=desktop UI_TYPE=dummy DESTDIR=$(DEB_DIR)/tmp/zltext do_install
+
+override_dh_auto_install-indep: install-common
+	mv $(DEB_DIR)/tmp/zlcore/usr/share/zlibrary $(DEB_DIR)/libzlcore-data/usr/share
+	mv $(DEB_DIR)/tmp/zltext/usr/share/zlibrary $(DEB_DIR)/libzltext-data/usr/share
+
+override_dh_auto_install-arch: install-common
+	mv $(DEB_DIR)/tmp/zlcore/usr/lib $(DEB_DIR)/libzlcore0.13t64/usr
+	mv $(DEB_DIR)/tmp/zltext/usr/lib $(DEB_DIR)/libzltext0.13t64/usr
+	$(MAKE) -C zlibrary/core TARGET_ARCH=desktop UI_TYPE=dummy DESTDIR=$(DEB_DIR)/libzlcore-dev do_install_dev
+	$(MAKE) -C zlibrary/text TARGET_ARCH=desktop UI_TYPE=dummy DESTDIR=$(DEB_DIR)/libzltext-dev do_install_dev
+	$(MAKE) -C zlibrary/ui TARGET_ARCH=desktop UI_TYPE=qt4 DESTDIR=$(DEB_DIR)/fbreader do_install
+	$(MAKE) -C fbreader TARGET_ARCH=desktop UI_TYPE=dummy DESTDIR=$(DEB_DIR)/fbreader do_install
+
+override_dh_makeshlibs:
+	dh_makeshlibs -plibzlcore0.13t64
+	dh_makeshlibs -plibzltext0.13t64
diff --git a/debian/source/format b/debian/source/format
new file mode 100644
index 0000000..163aaf8
--- /dev/null
+++ b/debian/source/format
@@ -0,0 +1 @@
+3.0 (quilt)
diff --git a/distributions/debian/desktop/changelog b/distributions/debian/desktop/changelog
new file mode 100644
index 0000000..9e421fa
--- /dev/null
+++ b/distributions/debian/desktop/changelog
@@ -0,0 +1,354 @@
+fbreader (0.99.4-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Alexander Turkin   Fri, 30 Nov 2012 16:30:00 +0300
+
+fbreader (0.99.3-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Alexander Turkin   Sat, 17 Nov 2012 21:00:00 +0300
+
+fbreader (0.99.2-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Alexander Turkin   Fri, 7 Sep 2012 00:42:00 +0300
+
+fbreader (0.99.1-1) stable; urgency=low
+
+  * new upstream version
+  * instead of liblinebreak package it depends on libunibreak (because this package has been renamed)
+
+ -- Alexander Turkin   Wed, 25 Jul 2012 21:47:00 +0300
+
+fbreader (0.99.0-1) stable; urgency=low
+
+  * new upstream version
+  * as from version 0.99.0 FBReader for Linux supports qt4 interface only
+
+ -- Alexander Turkin   Thu, 28 Jun 2012 20:02:00 +0300
+
+fbreader (0.14.20100422-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Thu, 22 Apr 2010 13:49:00 +0400
+
+fbreader (0.12.10-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Thu, 1 Apr 2010 13:48:00 +0400
+
+fbreader (0.12.9-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Thu, 25 Mar 2010 02:33:00 +0300
+
+fbreader (0.12.8-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Mon, 22 Mar 2010 21:42:00 +0300
+
+fbreader (0.12.7-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Fri, 5 Mar 2010 00:39:00 +0300
+
+fbreader (0.12.6-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Tue, 2 Mar 2010 20:53:00 +0300
+
+fbreader (0.12.5-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Sun, 21 Feb 2010 16:20:00 +0300
+
+fbreader (0.12.2-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Fri, 29 Jan 2010 19:53:00 +0300
+
+fbreader (0.12.1-2) stable; urgency=low
+
+  * cosmetical fixes
+
+ -- Nikolay Pultsin   Sun, 13 Dec 2009 11:41:00 +0300
+
+fbreader (0.12.1-1) stable; urgency=low
+
+  * new upstream version
+  * updated man page
+
+ -- Nikolay Pultsin   Sun, 13 Dec 2009 09:23:00 +0300
+
+fbreader (0.12.0-3) stable; urgency=low
+
+  * fixed rules file
+
+ -- Nikolay Pultsin   Sun, 6 Dec 2009 19:48:00 +0300
+
+fbreader (0.12.0-2) stable; urgency=low
+
+  * fixed dependencies list
+
+ -- Nikolay Pultsin   Sun, 6 Dec 2009 19:05:00 +0300
+
+fbreader (0.12.0-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Sat, 5 Dec 2009 03:40:00 +0300
+
+fbreader (0.11.2-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Tue, 20 Oct 2009 13:22:00 +0400
+
+fbreader (0.11.1-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Tue, 13 Oct 2009 23:38:00 +0400
+
+fbreader (0.11.0-2) stable; urgency=low
+
+  * fixed package dependencies in debian files
+
+ -- Nikolay Pultsin   Sat, 26 Sep 2009 11:23:00 +0400
+
+fbreader (0.11.0-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Vasiliy Bout   Wed, 16 Sep 2009 16:48:00 +0400
+
+fbreader (0.10.7-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Mon, 30 Mar 2009 13:29:00 +0400
+
+fbreader (0.10.6-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Thu, 26 Mar 2009 22:15:00 +0200
+
+fbreader (0.10.5-1) stable; urgency=low
+
+  * new upstream version
+  * conflicts with ubuntu fbreader packages have been resolved
+  * dependencies for libzltext-dev have been fixed
+
+ -- Nikolay Pultsin   Fri, 20 Mar 2009 18:12:00 +0200
+
+fbreader (0.10.4-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Wed, 18 Mar 2009 23:33:00 +0200
+
+fbreader (0.10.3-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Thu, 5 Feb 2009 01:11:00 +0200
+
+fbreader (0.10.2-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Fri, 17 Jan 2009 23:42:00 +0300
+
+fbreader (0.10.1-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Fri, 16 Jan 2009 12:31:00 +0300
+
+fbreader (0.10.0-1) stable; urgency=low
+
+  * new upstream version
+  * add-missing-headers.patch integrated into the upstream
+  * fix-centering-with-margins.patch integrated into the upstream
+  * use-sensible-browser.patch added to the upstream debian fileset
+  * remove-deprecated-fields-in-desktop-file.patch intgerated into the upstream
+
+ -- Nikolay Pultsin   Sun, 3 Aug 2008 19:01:00 +0400
+
+fbreader (0.8.17-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Sun, 23 Mar 2008 03:30:00 +0300
+
+fbreader (0.8.16-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Fri, 20 Mar 2008 03:10:00 +0300
+
+fbreader (0.8.15-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Tue, 26 Feb 2008 02:41:00 +0300
+
+fbreader (0.8.14-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Sat, 9 Feb 2008 22:48:00 +0300
+
+fbreader (0.8.13-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Thr, 24 Jan 2008 15:24:00 +0300
+
+fbreader (0.8.12-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Sat, 19 Jan 2008 03:47:00 +0300
+
+fbreader (0.8.11-1) stable; urgency=low
+
+  * new upstream version
+  * dependency rules have been changed
+
+ -- Nikolay Pultsin   Sat, 12 Jan 2008 22:27:00 +0300
+
+fbreader (0.8.10-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Fri, 4 Jan 2008 20:53:00 +0300
+
+fbreader (0.8.9-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Thr, 27 Dec 2007 07:13:00 +0300
+
+fbreader (0.8.8d-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Mon, 24 Dec 2007 10:27:00 +0300
+
+fbreader (0.8.8c-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Sun, 23 Dec 2007 08:14:00 +0300
+
+fbreader (0.8.8a-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Mon, 17 Dec 2007 03:03:00 +0300
+
+fbreader (0.8.8-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Fri, 23 Nov 2007 22:55:00 +0300
+
+fbreader (0.8.7b-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Tue, 6 Nov 2007 22:55:00 +0300
+
+fbreader (0.8.7a-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Wed, 31 Oct 2007 00:00:00 +0400
+
+fbreader (0.8.7-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Fri, 5 Oct 2007 00:00:00 +0400
+
+fbreader (0.8.6c-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Thr, 30 Aug 2007 02:30:00 +0400
+
+fbreader (0.8.6a-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Thr, 8 Aug 2007 18:47:00 +0400
+
+fbreader (0.8.6-1) stable; urgency=low
+
+  * new upstream version
+  * added libzlibrary-dev package
+
+ -- Nikolay Pultsin   Thr, 5 Aug 2007 23:49:00 +0400
+
+fbreader (0.8.5c-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Thr, 19 Jul 2007 15:20:00 +0400
+
+fbreader (0.8.5b-1) stable; urgency=low
+
+  * new upstream version
+  * almost all changes from the previous change are now included into
+    the upstream version: zlibrary shared objects moving, rpath deletion,
+    and the man page.
+
+ -- Nikolay Pultsin   Tue, 10 Jul 2007 21:50:00 +0400
+
+fbreader (0.8.5a-1) unstable; urgency=low
+
+  * First upload to Debian. Closes: #432274
+  * Misc debianisation changes.
+  * Move zlibrary shared object files to /usr/lib from /usr/share.
+  * Remove use of rpath.
+  * Use sensible-browser.
+  * Added a basic man page.
+
+ -- Joey Hess   Mon, 09 Jul 2007 15:04:31 -0400
+
+fbreader (0.8.5-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Sat, 7 Jul 2007 02:12:00 +0400
+
+fbreader (0.8.4zz-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Thu, 5 Jul 2007 03:17:00 +0400
+
+fbreader (0.8.4z-2) stable; urgency=low
+
+  * postinst/postrm scripts were added
+
+ -- Nikolay Pultsin   Fri, 29 Jun 2007 21:23:00 +0400
+
+fbreader (0.8.4z-1) stable; urgency=low
+
+  * Initial release.
+
+ -- Nikolay Pultsin   Fri, 29 Jun 2007 17:53:00 +0400
diff --git a/distributions/debian/desktop/compat b/distributions/debian/desktop/compat
new file mode 100644
index 0000000..7ed6ff8
--- /dev/null
+++ b/distributions/debian/desktop/compat
@@ -0,0 +1 @@
+5
diff --git a/distributions/debian/desktop/control b/distributions/debian/desktop/control
new file mode 100644
index 0000000..73f95c1
--- /dev/null
+++ b/distributions/debian/desktop/control
@@ -0,0 +1,30 @@
+Source: fbreader
+Section: text
+Priority: optional
+Maintainer: Nikolay Pultsin 
+Standards-Version: 3.8.0
+Build-Depends: debhelper (>= 5), libqt4-dev, libexpat1-dev, libbz2-dev, libz-dev, libunibreak-dev (>= 1.0-1), libfribidi-dev, quilt (>= 0.40), libsqlite3-dev
+
+Package: fbreader
+Priority: optional
+Architecture: any
+Replaces: fbreader-gtk, fbreader-qt, fbreader-qt4, libzlcore, libzlcore0.10, libzlcore-data, libzltext, libzltext0.9, libzltext0.10, libzltext-data, libzlui, libzlui-gtk, libzlui-qt4, libzlui-qt
+Depends: ${shlibs:Depends}
+Description: e-book reader
+ FBReader is an e-book reader.
+ .
+ Main features:
+  * supports several open e-book formats: fb2, html, chm, plucker,
+    palmdoc, ztxt, tcr (psion text), rtf, oeb, openreader, non-DRM'ed
+    mobipocket, plain text, also MsWord doc files
+  * reads directly from tar, zip, gzip, bzip2 archives (you can have
+    several books in one archive)
+  * supports a structured view of your e-book collection
+  * automatically determines encodings
+  * automatically generates a table of contents
+  * keeps the last open book and the last read positions for all open books
+    between runs
+  * automatic hyphenation (patterns for several languages are included)
+  * search and download books from network libraries
+ .
+  Homepage: http://www.fbreader.org/
diff --git a/distributions/debian/desktop/copyright b/distributions/debian/desktop/copyright
new file mode 100644
index 0000000..54335d4
--- /dev/null
+++ b/distributions/debian/desktop/copyright
@@ -0,0 +1,51 @@
+This is the Debian prepackaged version of FBReader.
+
+It was originally Debianised by Nikolay Pultsin .
+Sources are downloaded from its website at:
+
+	http://www.fbreader.org/
+
+It is copyright as follows:
+
+/*
+ * Copyright (C) 2004-2012 Geometer Plus 
+ *
+ * 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; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * 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, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ * 02110-1301, USA.
+ */
+
+On Debian systems, the full text of the GPL can be found in 
+/usr/share/common-licenses/GPL
+
+It also includes html entity files with these licenses:
+
+
+
+
diff --git a/distributions/debian/desktop/menu b/distributions/debian/desktop/menu
new file mode 100644
index 0000000..3fd4112
--- /dev/null
+++ b/distributions/debian/desktop/menu
@@ -0,0 +1,2 @@
+?package(fbreader):needs="x11" section="Applications/Viewers" \
+	title="E-book reader" command="FBReader"
diff --git a/distributions/debian/desktop/rules b/distributions/debian/desktop/rules
new file mode 100755
index 0000000..525db8d
--- /dev/null
+++ b/distributions/debian/desktop/rules
@@ -0,0 +1,50 @@
+#!/usr/bin/make -f
+
+clean: unpatch
+		dh_testdir
+		dh_testroot
+		[ ! -f Makefile ] || $(MAKE) distclean
+		dh_clean build-stamp install-stamp
+
+build: patch build-stamp
+build-stamp:
+		dh_testdir
+		$(MAKE) -C zlibrary/core TARGET_ARCH=desktop UI_TYPE=dummy
+		$(MAKE) -C zlibrary/text TARGET_ARCH=desktop UI_TYPE=dummy
+		$(MAKE) -C zlibrary/ui TARGET_ARCH=desktop UI_TYPE=qt4
+		$(MAKE) -C fbreader TARGET_ARCH=desktop UI_TYPE=dummy
+		touch build-stamp 
+
+install: DEB_DIR = $(CURDIR)/debian
+install: build
+		dh_testdir
+		dh_testroot
+		dh_clean -k
+		dh_installdirs
+		$(MAKE) -C zlibrary/core TARGET_ARCH=desktop UI_TYPE=dummy DESTDIR=$(DEB_DIR)/fbreader do_install
+		$(MAKE) -C zlibrary/text TARGET_ARCH=desktop UI_TYPE=dummy DESTDIR=$(DEB_DIR)/fbreader do_install
+		$(MAKE) -C zlibrary/ui TARGET_ARCH=desktop UI_TYPE=qt4 DESTDIR=$(DEB_DIR)/fbreader do_install
+		$(MAKE) -C fbreader TARGET_ARCH=desktop UI_TYPE=dummy DESTDIR=$(DEB_DIR)/fbreader do_install
+		touch install-stamp
+
+binary-arch: VERSION=$(shell expr "`dpkg-parsechangelog |grep Version:`" : '.*Version: \(.*\)')
+binary-arch: build install
+		dh_testdir
+		dh_testroot
+		dh_desktop
+		dh_installmenu
+		dh_installdocs
+		dh_installman fbreader/desktop/FBReader.1
+		dh_installchangelogs
+		dh_strip
+		dh_compress
+		dh_fixperms
+		dh_installdeb
+		dh_shlibdeps -l debian/libzlcore/usr/lib:debian/libzltext/usr/lib
+		dh_gencontrol
+		dh_md5sums
+		dh_builddeb
+
+binary:	binary-arch
+
+include /usr/share/quilt/quilt.make
diff --git a/distributions/debian/desktop/watch b/distributions/debian/desktop/watch
new file mode 100644
index 0000000..c60d47a
--- /dev/null
+++ b/distributions/debian/desktop/watch
@@ -0,0 +1,2 @@
+version=2
+http://www.fbreader.org/downloads.php fbreader-sources-(.*).tgz
diff --git a/distributions/debian/maemo2/changelog b/distributions/debian/maemo2/changelog
new file mode 100644
index 0000000..5d7aa78
--- /dev/null
+++ b/distributions/debian/maemo2/changelog
@@ -0,0 +1,225 @@
+fbreader (0.10.7-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Mon, 30 Mar 2009 13:29:00 +0400
+
+fbreader (0.10.6-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Thu, 26 Mar 2009 22:15:00 +0200
+
+fbreader (0.10.5-3) stable; urgency=low
+
+  * versions for maemo2 and maemo3 were separated: maemo2 doesn't contain
+    conic library
+
+ -- Nikolay Pultsin   Sun, 22 Mar 2009 17:37:00 +0200
+
+fbreader (0.10.5-2) stable; urgency=low
+
+  * version with more debug information
+
+ -- Nikolay Pultsin   Sun, 22 Mar 2009 11:42:00 +0200
+
+fbreader (0.10.5-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Fri, 20 Mar 2009 18:12:00 +0200
+
+fbreader (0.10.4-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Sun, 8 Feb 2009 03:24:00 +0300
+
+fbreader (0.10.0-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Sun, 3 Aug 2008 19:01:00 +0400
+
+fbreader (0.8.17-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Sun, 23 Mar 2008 03:30:00 +0300
+
+fbreader (0.8.16-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Fri, 20 Mar 2008 03:10:00 +0300
+
+fbreader (0.8.15-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Tue, 26 Feb 2008 02:41:00 +0300
+
+fbreader (0.8.14-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Sat, 9 Feb 2008 22:48:00 +0300
+
+fbreader (0.8.13-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Thr, 24 Jan 2008 15:24:00 +0300
+
+fbreader (0.8.12-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Sat, 19 Jan 2008 03:47:00 +0300
+
+fbreader (0.8.11-1) stable; urgency=low
+
+  * new upstream version
+  * dependency rules have been changed
+
+ -- Nikolay Pultsin   Sat, 12 Jan 2008 22:27:00 +0300
+
+fbreader (0.8.10-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Fri, 4 Jan 2008 20:53:00 +0300
+
+fbreader (0.8.9-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Thr, 27 Dec 2007 07:13:00 +0300
+
+fbreader (0.8.8d-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Mon, 24 Dec 2007 10:27:00 +0300
+
+fbreader (0.8.8c-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Sun, 23 Dec 2007 08:14:00 +0300
+
+fbreader (0.8.8b-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Thr, 20 Dec 2007 22:30:00 +0300
+
+fbreader (0.8.8a-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Mon, 17 Dec 2007 03:03:00 +0300
+
+fbreader (0.8.8-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Fri, 23 Nov 2007 22:55:00 +0300
+
+fbreader (0.8.7b-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Tue, 6 Nov 2007 22:55:00 +0300
+
+fbreader (0.8.7a-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Sat, 3 Nov 2007 00:00:00 +0400
+
+fbreader (0.8.7-3) stable; urgency=low
+
+  * dependencies list has been fixed
+
+ -- Nikolay Pultsin   Sat, 20 Oct 2007 00:00:00 +0400
+
+fbreader (0.8.7-2) stable; urgency=low
+
+  * dependencies list has been fixed
+
+ -- Nikolay Pultsin   Fri, 19 Oct 2007 00:00:00 +0400
+
+fbreader (0.8.7-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Fri, 5 Sep 2007 00:00:00 +0400
+
+fbreader (0.8.6d-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Thr, 7 Sep 2007 12:00:00 +0400
+
+fbreader (0.8.6c-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Thr, 30 Aug 2007 02:30:00 +0400
+
+fbreader (0.8.6a-1) stable; urgency=low
+
+  * fixed stylus/finger pressing detection problem on Nokia 770 device
+
+ -- Nikolay Pultsin   Thr, 8 Aug 2007 18:47:00 +0400
+
+fbreader (0.8.6-3) stable; urgency=low
+
+  * fixed fbreader-maemo2 package icon
+
+ -- Nikolay Pultsin   Thr, 8 Aug 2007 01:55:00 +0400
+
+fbreader (0.8.6-2) stable; urgency=low
+
+  * fixed fbreader-maemo2 package icon
+
+ -- Nikolay Pultsin   Thr, 8 Aug 2007 01:09:00 +0400
+
+fbreader (0.8.6-1) stable; urgency=low
+
+  * new upstream version
+  * added libzlibrary-dev package
+
+ -- Nikolay Pultsin   Thr, 5 Aug 2007 23:49:00 +0400
+
+fbreader (0.8.5c-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Thr, 19 Jul 2007 15:20:00 +0400
+
+fbreader (0.8.5a-1) stable; urgency=low
+
+  * new upstream version
+  * maemo package icon has been restored
+
+ -- Nikolay Pultsin   Sat, 7 Jul 2007 02:12:00 +0400
+
+fbreader (0.8.5-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Sat, 7 Jul 2007 02:12:00 +0400
+
+fbreader (0.8.4zz-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Thr, 5 Jul 2007 03:17:00 +0400
+
+fbreader (0.8.4z-1) stable; urgency=low
+
+  * Initial release.
+
+ -- Nikolay Pultsin   Sat, 30 Jun 2007 01:48:00 +0400
diff --git a/distributions/debian/maemo2/compat b/distributions/debian/maemo2/compat
new file mode 100644
index 0000000..b8626c4
--- /dev/null
+++ b/distributions/debian/maemo2/compat
@@ -0,0 +1 @@
+4
diff --git a/distributions/debian/maemo2/control b/distributions/debian/maemo2/control
new file mode 100644
index 0000000..9a80b05
--- /dev/null
+++ b/distributions/debian/maemo2/control
@@ -0,0 +1,81 @@
+Source: fbreader
+Priority: optional
+Maintainer: Nikolay Pultsin 
+Standards-Version: 3.6.1
+Build-Depends: debhelper, libexpat1-dev, libbz2-dev, libz-dev, hildon-libs-dev, libosso-dev, liblinebreak-dev, libfribidi-dev, libcurl3-dev
+
+Package: libzlibrary-maemo2-noconic
+Section: user/libs
+Priority: optional
+Architecture: armel
+Replaces: libzlibrary-maemo2
+Conflicts: fbreader-maemo2 (<< 0.8.0)
+Depends: hildon-libs0, libatk1.0-0 (>= 1.9.0), libbz2-1.0, libc6 (>= 2.3.5-1), libexpat1 (>= 1.95.8), libgcc1 (>= 1:3.4.4), libglib2.0-0 (>= 2.8.6-1osso1), libgtk2.0-0 (>= 2:2.6.10-1.osso8), libosso1, libpango1.0-0 (>= 1.8.1), libstdc++6 (>= 3.4.4), zlib1g (>= 1:1.2.1), libfribidi0, libcurl3, liblinebreak-maemo2
+Description: Platform-dependent part of fbreader
+ Home page: http://www.fbreader.org/
+
+Package: libzlibrary-maemo2-dev
+Section: libdevel
+Priority: optional
+Architecture: armel
+Replaces: libzlibrary-dev
+Depends: libzlibrary-maemo2 (= ${Source-Version}) | libzlibrary-maemo2-noconic (= ${Source-Version})
+Description: zlibrary - development files
+ Home page: http://www.fbreader.org/
+
+Package: fbreader-maemo2
+Section: user/tools
+Priority: optional
+Architecture: armel
+Depends: ${shlibs:Depends}
+Description: e-book reader
+ FBReader is an e-book reader for UNIX/Windows computers.
+ .
+ Main features:
+  * supports several open e-book formats: fb2, html, chm, plucker,
+    palmdoc, ztxt, tcr (psion text), rtf, oeb, openreader, non-DRM'ed
+    mobipocket, plain text
+  * reads directly from tar, zip, gzip, bzip2 archives (you can have
+    several books in one archive)
+  * supports structured view for your e-book collection
+  * automatically determines encoding
+  * automatically generates table of contents
+  * keeps the last open book and the last read positions for all open books
+    between runs
+  * automatic hyphenation (patterns for several languages are included)
+ .
+ Home page: http://www.fbreader.org/
+XB-Maemo-Icon-26:
+ iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAYAAACpSkzOAAAABmJLR0QA/wD/
+ AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH2QEKFjEFBaQC
+ bAAABStJREFUSMftlsmPXFcVh79zhzfX0Gm3y+20GwcnDomMEJEVAXIk2CAG
+ YaYVEUhs2WWTRRbsQCzZgGADKyT2RkLKAgkiYaJsIkAx3R7iEbvT6a4eqrte
+ Vb07ZFHV7W6TPwAkrnSk867OO997v3N07oX/r//2JQfOlT+9ZT+xdLqXhiBl
+ WTYhENc2Hsn2j9/49MI4LKjLX7u9cPmr7zz9yRf90QTr+7uiXaoGdS1b21uy
+ v9VnY+1RlNCEb3732+E/QN//2a9/+qVLn3/9QmLlxFNt70PD8MN1Vl/7UbJ0
+ 77Ysd8rQPPvstb9++RtXRifPP1VuPlgmNr25qlVOTp1Ni7LU7XbLdMqCTqvw
+ mzvbk9/+4c+j8eLp3/zyB1//uTkAPZr4Z665wr75q5+wt71pyiKn1+pQzs1z
+ dXWV17ulym/fupC9+ccL409tcHH0kPTUaf6tc/bEkmlDqhRaKZI0ocpzbHTs
+ mnwJ4BA09JFoDSsr17hz8zpoQYBQO85OFN/r72CMYrhyHbf4PH2nKUc5e16z
+ s7FJkIi1lixJIQoQiTEiRADUASjPC3yIKGUQLWgRtGhERVCRXQn4xjHyEU9k
+ f+xogiIqM9U/ggiIHKYkxgjyBKjKMyYxYo3BKIM1ljzLKfOCEzi8g2Hj6HuH
+ pMn0a5VCRRCtpr5SKA1KTUtflOUB57F0mTWMG48gJDYlzTKyrCBVwvm9XULj
+ 2PeeD7SmlVXEuEkwBiOC0hpRgiCIKESmvjEJ+CdAIpHBYAgiZFlBVbVotzpk
+ ecqp+zfZH48JUdhpzSPtDlEZnPMYQBmDPG5gEEFESIxlEvxx6SyKwf4eRZ5T
+ lS263S7tToeyrKiMxUdQEhh3u4Q0Q0JAxTBNavSs+LNiAdpoqqrE+SdqZIKj
+ HjWkSUpRlFRVSVHk5EWBa1WUEqmAKNM+SgUSPFpAqWmaOIMIoJWmVRSznSPS
+ RTyT8Zhet8u4HpHlOXmeYWzCZl7RU5okETKtic2YNDqsimA1WmsAQpy2dIwR
+ rYQ0fSzpIagZjXEywugEY+ysIQqKvGA9BpL5ORYTz9lmj2TjIa1OSt7O+SAx
+ s+JD8B7nAsEHtNbkWQZhcFy6wdbONEAprDUYM21xrYXGGv5y5jnM/AlefWaR
+ xa0HlN0MFye4rJjKpYQQPK6Z4BqHKEWZ58gMcfhHdV1Dy9GZn6PfXwcUzjtC
+ tGSfe4V3rr7FP3pPUyc9Xj73AlY79PwSae8EfjxNbLQBEaJERCBJ7KxBjoC0
+ NnSU49IXXqH32UvUJmVdlfTrPfxwh/iZL1KlmnqiWY2OUW+R83MZ81UbY0aI
+ gLEWmySIKEKIpEaBhOOgIkvwSuGLioEkDCYNy8rR155+XlDfvcmWUYgWfFIx
+ HA3pDyFpJqjop1NBCTFmTLwD0YhAnB0UhzVSCKUEnBh6MmK5GdAUBec6GUux
+ Yb9oMxlssPfuVXqjXc5XCWfaOd1OSVEUlGWJtVOpvPf4EDBaMxrVT4ygxPhW
+ YlGDD+kkHVwzonP3PaIQ9drDcXbtn2s3Htx59+b1f71968bKuYsvXXzphedf
+ XDpzZrnd6XSTVquljDGilCARYgj+/dWVv6/+/hdXjh58cvnVH37n5a9863f1
+ yoqcXJjfvv/w3q17d99/e2Xlvb/dv3/vxs7Odj+E4GfvqJnpJEkypXSxsHCy
+ yLM8ESXWWuvrerh2587tW977GggHICUiutXunLLG6MFgUDfNpIkxTgDHdDSG
+ j7kCyMfsxVlsPGLHAg+eD+xY4P/M+ght8RxOZDxGnAAAAABJRU5ErkJggg==
+ ====
diff --git a/distributions/debian/maemo2/fbreader-maemo2.postinst b/distributions/debian/maemo2/fbreader-maemo2.postinst
new file mode 100644
index 0000000..fffe4ce
--- /dev/null
+++ b/distributions/debian/maemo2/fbreader-maemo2.postinst
@@ -0,0 +1,21 @@
+#! /bin/sh
+
+if [ -x /usr/bin/gtk-update-icon-cache ]
+then
+  /usr/bin/gtk-update-icon-cache -f /usr/share/icons/hicolor
+fi
+
+if [ -x /usr/bin/update-desktop-database ]
+then
+  /usr/bin/update-desktop-database
+fi
+
+if [ -x /usr/bin/update-mime-database ]
+then
+  /usr/bin/update-mime-database /usr/share/mime
+fi
+
+if [ "$1" = "configure" -a -z "$2" -a -x /usr/bin/maemo-select-menu-location ]
+then
+	/usr/bin/maemo-select-menu-location FBReader.desktop
+fi
diff --git a/distributions/debian/maemo2/fbreader-maemo2.postrm b/distributions/debian/maemo2/fbreader-maemo2.postrm
new file mode 100644
index 0000000..7fea7d2
--- /dev/null
+++ b/distributions/debian/maemo2/fbreader-maemo2.postrm
@@ -0,0 +1,16 @@
+#! /bin/sh
+
+if [ -x /usr/bin/gtk-update-icon-cache ]
+then
+  /usr/bin/gtk-update-icon-cache -f /usr/share/icons/hicolor
+fi
+
+if [ -x /usr/bin/update-desktop-database ]
+then
+  /usr/bin/update-desktop-database
+fi
+
+if [ -x /usr/bin/update-mime-database ]
+then
+  /usr/bin/update-mime-database /usr/share/mime
+fi
diff --git a/distributions/debian/maemo2/libzlibrary-maemo2-noconic.postinst b/distributions/debian/maemo2/libzlibrary-maemo2-noconic.postinst
new file mode 100644
index 0000000..9977c68
--- /dev/null
+++ b/distributions/debian/maemo2/libzlibrary-maemo2-noconic.postinst
@@ -0,0 +1,7 @@
+#! /bin/sh
+
+set -e
+
+if [ "$1" = "configure" ]; then
+	ldconfig
+fi
diff --git a/distributions/debian/maemo2/libzlibrary-maemo2-noconic.postrm b/distributions/debian/maemo2/libzlibrary-maemo2-noconic.postrm
new file mode 100644
index 0000000..9977c68
--- /dev/null
+++ b/distributions/debian/maemo2/libzlibrary-maemo2-noconic.postrm
@@ -0,0 +1,7 @@
+#! /bin/sh
+
+set -e
+
+if [ "$1" = "configure" ]; then
+	ldconfig
+fi
diff --git a/distributions/debian/maemo2/libzlibrary-maemo2-noconic.shlibs b/distributions/debian/maemo2/libzlibrary-maemo2-noconic.shlibs
new file mode 100644
index 0000000..c842164
--- /dev/null
+++ b/distributions/debian/maemo2/libzlibrary-maemo2-noconic.shlibs
@@ -0,0 +1,2 @@
+libzlcore @SOVERSIONCORE@ libzlibrary-maemo2 (>= @VERSION@-1) | libzlibrary-maemo2-noconic (>= @VERSION@-1), libzlibrary-maemo2 (<< 0.11.0) | libzlibrary-maemo2-noconic (<< 0.11.0)
+libzltext @SOVERSIONCORE@ libzlibrary-maemo2 (>= @VERSION@-1) | libzlibrary-maemo2-noconic (>= @VERSION@-1), libzlibrary-maemo2 (<< 0.11.0) | libzlibrary-maemo2-noconic (<< 0.11.0)
diff --git a/distributions/debian/maemo2/rules b/distributions/debian/maemo2/rules
new file mode 100755
index 0000000..7ecda9f
--- /dev/null
+++ b/distributions/debian/maemo2/rules
@@ -0,0 +1,66 @@
+#!/usr/bin/make -f
+## ----------------------------------------------------------------------
+## debian/rules : package script for fbreader
+## ----------------------------------------------------------------------
+
+## ----------------------------------------------------------------------
+## uncomment this to turn on verbose mode
+#export DH_VERBOSE=1
+
+## ----------------------------------------------------------------------
+DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
+DEB_HOST_GNU_TYPE  ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
+
+## ----------------------------------------------------------------------
+DEB_DIR		= $(CURDIR)/debian
+
+## ----------------------------------------------------------------------
+## targets
+
+clean:
+		dh_testdir
+		dh_testroot
+		[ ! -f Makefile ] || $(MAKE) distclean
+		dh_clean build-stamp install-stamp
+
+build:		build-stamp
+build-stamp:
+		dh_testdir
+		$(MAKE) -C zlibrary/core TARGET_ARCH=maemo UI_TYPE=maemo2
+		$(MAKE) -C zlibrary/text TARGET_ARCH=maemo UI_TYPE=maemo2
+		$(MAKE) -C zlibrary/ui TARGET_ARCH=maemo UI_TYPE=maemo2
+		$(MAKE) -C fbreader TARGET_ARCH=maemo UI_TYPE=maemo2
+		touch build-stamp 
+
+install:	install-stamp
+install-stamp:	build
+		dh_testdir
+		dh_testroot
+		dh_clean -k
+		dh_installdirs
+		$(MAKE) -C zlibrary/core TARGET_ARCH=maemo UI_TYPE=maemo2 DESTDIR=$(DEB_DIR)/libzlibrary-maemo2-noconic do_install
+		$(MAKE) -C zlibrary/text TARGET_ARCH=maemo UI_TYPE=maemo2 DESTDIR=$(DEB_DIR)/libzlibrary-maemo2-noconic do_install
+		$(MAKE) -C zlibrary/ui TARGET_ARCH=maemo UI_TYPE=maemo2 DESTDIR=$(DEB_DIR)/libzlibrary-maemo2-noconic do_install
+		$(MAKE) -C fbreader TARGET_ARCH=maemo UI_TYPE=maemo2 DESTDIR=$(DEB_DIR)/fbreader-maemo2 do_install
+		$(MAKE) -C zlibrary/core TARGET_ARCH=maemo UI_TYPE=maemo2 DESTDIR=$(DEB_DIR)/libzlibrary-maemo2-dev do_install_dev
+		$(MAKE) -C zlibrary/text TARGET_ARCH=maemo UI_TYPE=maemo2 DESTDIR=$(DEB_DIR)/libzlibrary-maemo2-dev do_install_dev
+		touch install-stamp
+
+binary-indep:
+
+binary-arch:	build install
+		dh_testdir
+		dh_testroot
+		dh_compress -a
+		dh_fixperms -a
+		dh_installdeb -a
+		dh_shlibdeps -a -l $(PWD)/debian/libzlibrary-maemo2/usr/lib
+		dh_gencontrol -a
+		dh_md5sums -a
+		dh_builddeb -a
+
+binary:		binary-indep binary-arch
+
+.PHONY:		clean build install binary-indep binary-arch binary
+
+## ----------------------------------------------------------------------
diff --git a/distributions/debian/maemo3/changelog b/distributions/debian/maemo3/changelog
new file mode 100644
index 0000000..5d7aa78
--- /dev/null
+++ b/distributions/debian/maemo3/changelog
@@ -0,0 +1,225 @@
+fbreader (0.10.7-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Mon, 30 Mar 2009 13:29:00 +0400
+
+fbreader (0.10.6-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Thu, 26 Mar 2009 22:15:00 +0200
+
+fbreader (0.10.5-3) stable; urgency=low
+
+  * versions for maemo2 and maemo3 were separated: maemo2 doesn't contain
+    conic library
+
+ -- Nikolay Pultsin   Sun, 22 Mar 2009 17:37:00 +0200
+
+fbreader (0.10.5-2) stable; urgency=low
+
+  * version with more debug information
+
+ -- Nikolay Pultsin   Sun, 22 Mar 2009 11:42:00 +0200
+
+fbreader (0.10.5-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Fri, 20 Mar 2009 18:12:00 +0200
+
+fbreader (0.10.4-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Sun, 8 Feb 2009 03:24:00 +0300
+
+fbreader (0.10.0-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Sun, 3 Aug 2008 19:01:00 +0400
+
+fbreader (0.8.17-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Sun, 23 Mar 2008 03:30:00 +0300
+
+fbreader (0.8.16-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Fri, 20 Mar 2008 03:10:00 +0300
+
+fbreader (0.8.15-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Tue, 26 Feb 2008 02:41:00 +0300
+
+fbreader (0.8.14-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Sat, 9 Feb 2008 22:48:00 +0300
+
+fbreader (0.8.13-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Thr, 24 Jan 2008 15:24:00 +0300
+
+fbreader (0.8.12-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Sat, 19 Jan 2008 03:47:00 +0300
+
+fbreader (0.8.11-1) stable; urgency=low
+
+  * new upstream version
+  * dependency rules have been changed
+
+ -- Nikolay Pultsin   Sat, 12 Jan 2008 22:27:00 +0300
+
+fbreader (0.8.10-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Fri, 4 Jan 2008 20:53:00 +0300
+
+fbreader (0.8.9-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Thr, 27 Dec 2007 07:13:00 +0300
+
+fbreader (0.8.8d-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Mon, 24 Dec 2007 10:27:00 +0300
+
+fbreader (0.8.8c-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Sun, 23 Dec 2007 08:14:00 +0300
+
+fbreader (0.8.8b-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Thr, 20 Dec 2007 22:30:00 +0300
+
+fbreader (0.8.8a-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Mon, 17 Dec 2007 03:03:00 +0300
+
+fbreader (0.8.8-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Fri, 23 Nov 2007 22:55:00 +0300
+
+fbreader (0.8.7b-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Tue, 6 Nov 2007 22:55:00 +0300
+
+fbreader (0.8.7a-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Sat, 3 Nov 2007 00:00:00 +0400
+
+fbreader (0.8.7-3) stable; urgency=low
+
+  * dependencies list has been fixed
+
+ -- Nikolay Pultsin   Sat, 20 Oct 2007 00:00:00 +0400
+
+fbreader (0.8.7-2) stable; urgency=low
+
+  * dependencies list has been fixed
+
+ -- Nikolay Pultsin   Fri, 19 Oct 2007 00:00:00 +0400
+
+fbreader (0.8.7-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Fri, 5 Sep 2007 00:00:00 +0400
+
+fbreader (0.8.6d-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Thr, 7 Sep 2007 12:00:00 +0400
+
+fbreader (0.8.6c-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Thr, 30 Aug 2007 02:30:00 +0400
+
+fbreader (0.8.6a-1) stable; urgency=low
+
+  * fixed stylus/finger pressing detection problem on Nokia 770 device
+
+ -- Nikolay Pultsin   Thr, 8 Aug 2007 18:47:00 +0400
+
+fbreader (0.8.6-3) stable; urgency=low
+
+  * fixed fbreader-maemo2 package icon
+
+ -- Nikolay Pultsin   Thr, 8 Aug 2007 01:55:00 +0400
+
+fbreader (0.8.6-2) stable; urgency=low
+
+  * fixed fbreader-maemo2 package icon
+
+ -- Nikolay Pultsin   Thr, 8 Aug 2007 01:09:00 +0400
+
+fbreader (0.8.6-1) stable; urgency=low
+
+  * new upstream version
+  * added libzlibrary-dev package
+
+ -- Nikolay Pultsin   Thr, 5 Aug 2007 23:49:00 +0400
+
+fbreader (0.8.5c-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Thr, 19 Jul 2007 15:20:00 +0400
+
+fbreader (0.8.5a-1) stable; urgency=low
+
+  * new upstream version
+  * maemo package icon has been restored
+
+ -- Nikolay Pultsin   Sat, 7 Jul 2007 02:12:00 +0400
+
+fbreader (0.8.5-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Sat, 7 Jul 2007 02:12:00 +0400
+
+fbreader (0.8.4zz-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Thr, 5 Jul 2007 03:17:00 +0400
+
+fbreader (0.8.4z-1) stable; urgency=low
+
+  * Initial release.
+
+ -- Nikolay Pultsin   Sat, 30 Jun 2007 01:48:00 +0400
diff --git a/distributions/debian/maemo3/compat b/distributions/debian/maemo3/compat
new file mode 100644
index 0000000..b8626c4
--- /dev/null
+++ b/distributions/debian/maemo3/compat
@@ -0,0 +1 @@
+4
diff --git a/distributions/debian/maemo3/control b/distributions/debian/maemo3/control
new file mode 100644
index 0000000..8de9cab
--- /dev/null
+++ b/distributions/debian/maemo3/control
@@ -0,0 +1,81 @@
+Source: fbreader
+Priority: optional
+Maintainer: Nikolay Pultsin 
+Standards-Version: 3.6.1
+Build-Depends: debhelper, libexpat1-dev, libbz2-dev, libz-dev, hildon-libs-dev, libosso-dev, liblinebreak-dev, libfribidi-dev, libcurl3-dev, libconic0-dev
+
+Package: libzlibrary-maemo2
+Section: user/libs
+Priority: optional
+Architecture: armel
+Replaces: libzlibrary-maemo2-noconic
+Conflicts: fbreader-maemo2 (<< 0.8.0)
+Depends: hildon-libs0, libatk1.0-0 (>= 1.9.0), libbz2-1.0, libc6 (>= 2.3.5-1), libexpat1 (>= 1.95.8), libgcc1 (>= 1:3.4.4), libglib2.0-0 (>= 2.8.6-1osso1), libgtk2.0-0 (>= 2:2.6.10-1.osso8), libosso1, libpango1.0-0 (>= 1.8.1), libstdc++6 (>= 3.4.4), zlib1g (>= 1:1.2.1), libfribidi0, libcurl3, libconic0, liblinebreak-maemo2
+Description: Platform-dependent part of fbreader
+ Home page: http://www.fbreader.org/
+
+Package: libzlibrary-maemo2-dev
+Section: libdevel
+Priority: optional
+Architecture: armel
+Replaces: libzlibrary-dev
+Depends: libzlibrary-maemo2 (= ${Source-Version}) | libzlibrary-maemo2-noconic (= ${Source-Version})
+Description: zlibrary - development files
+ Home page: http://www.fbreader.org/
+
+Package: fbreader-maemo2
+Section: user/tools
+Priority: optional
+Architecture: armel
+Depends: ${shlibs:Depends}
+Description: e-book reader
+ FBReader is an e-book reader for UNIX/Windows computers.
+ .
+ Main features:
+  * supports several open e-book formats: fb2, html, chm, plucker,
+    palmdoc, ztxt, tcr (psion text), rtf, oeb, openreader, non-DRM'ed
+    mobipocket, plain text
+  * reads directly from tar, zip, gzip, bzip2 archives (you can have
+    several books in one archive)
+  * supports structured view for your e-book collection
+  * automatically determines encoding
+  * automatically generates table of contents
+  * keeps the last open book and the last read positions for all open books
+    between runs
+  * automatic hyphenation (patterns for several languages are included)
+ .
+ Home page: http://www.fbreader.org/
+XB-Maemo-Icon-26:
+ iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAYAAACpSkzOAAAABmJLR0QA/wD/
+ AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH2QEKFjEFBaQC
+ bAAABStJREFUSMftlsmPXFcVh79zhzfX0Gm3y+20GwcnDomMEJEVAXIk2CAG
+ YaYVEUhs2WWTRRbsQCzZgGADKyT2RkLKAgkiYaJsIkAx3R7iEbvT6a4eqrte
+ Vb07ZFHV7W6TPwAkrnSk867OO997v3N07oX/r//2JQfOlT+9ZT+xdLqXhiBl
+ WTYhENc2Hsn2j9/49MI4LKjLX7u9cPmr7zz9yRf90QTr+7uiXaoGdS1b21uy
+ v9VnY+1RlNCEb3732+E/QN//2a9/+qVLn3/9QmLlxFNt70PD8MN1Vl/7UbJ0
+ 77Ysd8rQPPvstb9++RtXRifPP1VuPlgmNr25qlVOTp1Ni7LU7XbLdMqCTqvw
+ mzvbk9/+4c+j8eLp3/zyB1//uTkAPZr4Z665wr75q5+wt71pyiKn1+pQzs1z
+ dXWV17ulym/fupC9+ccL409tcHH0kPTUaf6tc/bEkmlDqhRaKZI0ocpzbHTs
+ mnwJ4BA09JFoDSsr17hz8zpoQYBQO85OFN/r72CMYrhyHbf4PH2nKUc5e16z
+ s7FJkIi1lixJIQoQiTEiRADUASjPC3yIKGUQLWgRtGhERVCRXQn4xjHyEU9k
+ f+xogiIqM9U/ggiIHKYkxgjyBKjKMyYxYo3BKIM1ljzLKfOCEzi8g2Hj6HuH
+ pMn0a5VCRRCtpr5SKA1KTUtflOUB57F0mTWMG48gJDYlzTKyrCBVwvm9XULj
+ 2PeeD7SmlVXEuEkwBiOC0hpRgiCIKESmvjEJ+CdAIpHBYAgiZFlBVbVotzpk
+ ecqp+zfZH48JUdhpzSPtDlEZnPMYQBmDPG5gEEFESIxlEvxx6SyKwf4eRZ5T
+ lS263S7tToeyrKiMxUdQEhh3u4Q0Q0JAxTBNavSs+LNiAdpoqqrE+SdqZIKj
+ HjWkSUpRlFRVSVHk5EWBa1WUEqmAKNM+SgUSPFpAqWmaOIMIoJWmVRSznSPS
+ RTyT8Zhet8u4HpHlOXmeYWzCZl7RU5okETKtic2YNDqsimA1WmsAQpy2dIwR
+ rYQ0fSzpIagZjXEywugEY+ysIQqKvGA9BpL5ORYTz9lmj2TjIa1OSt7O+SAx
+ s+JD8B7nAsEHtNbkWQZhcFy6wdbONEAprDUYM21xrYXGGv5y5jnM/AlefWaR
+ xa0HlN0MFye4rJjKpYQQPK6Z4BqHKEWZ58gMcfhHdV1Dy9GZn6PfXwcUzjtC
+ tGSfe4V3rr7FP3pPUyc9Xj73AlY79PwSae8EfjxNbLQBEaJERCBJ7KxBjoC0
+ NnSU49IXXqH32UvUJmVdlfTrPfxwh/iZL1KlmnqiWY2OUW+R83MZ81UbY0aI
+ gLEWmySIKEKIpEaBhOOgIkvwSuGLioEkDCYNy8rR155+XlDfvcmWUYgWfFIx
+ HA3pDyFpJqjop1NBCTFmTLwD0YhAnB0UhzVSCKUEnBh6MmK5GdAUBec6GUux
+ Yb9oMxlssPfuVXqjXc5XCWfaOd1OSVEUlGWJtVOpvPf4EDBaMxrVT4ygxPhW
+ YlGDD+kkHVwzonP3PaIQ9drDcXbtn2s3Htx59+b1f71968bKuYsvXXzphedf
+ XDpzZrnd6XSTVquljDGilCARYgj+/dWVv6/+/hdXjh58cvnVH37n5a9863f1
+ yoqcXJjfvv/w3q17d99/e2Xlvb/dv3/vxs7Odj+E4GfvqJnpJEkypXSxsHCy
+ yLM8ESXWWuvrerh2587tW977GggHICUiutXunLLG6MFgUDfNpIkxTgDHdDSG
+ j7kCyMfsxVlsPGLHAg+eD+xY4P/M+ght8RxOZDxGnAAAAABJRU5ErkJggg==
+ ====
diff --git a/distributions/debian/maemo3/fbreader-maemo2.postinst b/distributions/debian/maemo3/fbreader-maemo2.postinst
new file mode 100644
index 0000000..fffe4ce
--- /dev/null
+++ b/distributions/debian/maemo3/fbreader-maemo2.postinst
@@ -0,0 +1,21 @@
+#! /bin/sh
+
+if [ -x /usr/bin/gtk-update-icon-cache ]
+then
+  /usr/bin/gtk-update-icon-cache -f /usr/share/icons/hicolor
+fi
+
+if [ -x /usr/bin/update-desktop-database ]
+then
+  /usr/bin/update-desktop-database
+fi
+
+if [ -x /usr/bin/update-mime-database ]
+then
+  /usr/bin/update-mime-database /usr/share/mime
+fi
+
+if [ "$1" = "configure" -a -z "$2" -a -x /usr/bin/maemo-select-menu-location ]
+then
+	/usr/bin/maemo-select-menu-location FBReader.desktop
+fi
diff --git a/distributions/debian/maemo3/fbreader-maemo2.postrm b/distributions/debian/maemo3/fbreader-maemo2.postrm
new file mode 100644
index 0000000..7fea7d2
--- /dev/null
+++ b/distributions/debian/maemo3/fbreader-maemo2.postrm
@@ -0,0 +1,16 @@
+#! /bin/sh
+
+if [ -x /usr/bin/gtk-update-icon-cache ]
+then
+  /usr/bin/gtk-update-icon-cache -f /usr/share/icons/hicolor
+fi
+
+if [ -x /usr/bin/update-desktop-database ]
+then
+  /usr/bin/update-desktop-database
+fi
+
+if [ -x /usr/bin/update-mime-database ]
+then
+  /usr/bin/update-mime-database /usr/share/mime
+fi
diff --git a/distributions/debian/maemo3/libzlibrary-maemo2.postinst b/distributions/debian/maemo3/libzlibrary-maemo2.postinst
new file mode 100644
index 0000000..9977c68
--- /dev/null
+++ b/distributions/debian/maemo3/libzlibrary-maemo2.postinst
@@ -0,0 +1,7 @@
+#! /bin/sh
+
+set -e
+
+if [ "$1" = "configure" ]; then
+	ldconfig
+fi
diff --git a/distributions/debian/maemo3/libzlibrary-maemo2.postrm b/distributions/debian/maemo3/libzlibrary-maemo2.postrm
new file mode 100644
index 0000000..9977c68
--- /dev/null
+++ b/distributions/debian/maemo3/libzlibrary-maemo2.postrm
@@ -0,0 +1,7 @@
+#! /bin/sh
+
+set -e
+
+if [ "$1" = "configure" ]; then
+	ldconfig
+fi
diff --git a/distributions/debian/maemo3/libzlibrary-maemo2.shlibs b/distributions/debian/maemo3/libzlibrary-maemo2.shlibs
new file mode 100644
index 0000000..c842164
--- /dev/null
+++ b/distributions/debian/maemo3/libzlibrary-maemo2.shlibs
@@ -0,0 +1,2 @@
+libzlcore @SOVERSIONCORE@ libzlibrary-maemo2 (>= @VERSION@-1) | libzlibrary-maemo2-noconic (>= @VERSION@-1), libzlibrary-maemo2 (<< 0.11.0) | libzlibrary-maemo2-noconic (<< 0.11.0)
+libzltext @SOVERSIONCORE@ libzlibrary-maemo2 (>= @VERSION@-1) | libzlibrary-maemo2-noconic (>= @VERSION@-1), libzlibrary-maemo2 (<< 0.11.0) | libzlibrary-maemo2-noconic (<< 0.11.0)
diff --git a/distributions/debian/maemo3/rules b/distributions/debian/maemo3/rules
new file mode 100755
index 0000000..ff06162
--- /dev/null
+++ b/distributions/debian/maemo3/rules
@@ -0,0 +1,66 @@
+#!/usr/bin/make -f
+## ----------------------------------------------------------------------
+## debian/rules : package script for fbreader
+## ----------------------------------------------------------------------
+
+## ----------------------------------------------------------------------
+## uncomment this to turn on verbose mode
+#export DH_VERBOSE=1
+
+## ----------------------------------------------------------------------
+DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
+DEB_HOST_GNU_TYPE  ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
+
+## ----------------------------------------------------------------------
+DEB_DIR		= $(CURDIR)/debian
+
+## ----------------------------------------------------------------------
+## targets
+
+clean:
+		dh_testdir
+		dh_testroot
+		[ ! -f Makefile ] || $(MAKE) distclean
+		dh_clean build-stamp install-stamp
+
+build:		build-stamp
+build-stamp:
+		dh_testdir
+		$(MAKE) -C zlibrary/core TARGET_ARCH=maemo UI_TYPE=maemo3
+		$(MAKE) -C zlibrary/text TARGET_ARCH=maemo UI_TYPE=maemo3
+		$(MAKE) -C zlibrary/ui TARGET_ARCH=maemo UI_TYPE=maemo3
+		$(MAKE) -C fbreader TARGET_ARCH=maemo UI_TYPE=maemo3
+		touch build-stamp 
+
+install:	install-stamp
+install-stamp:	build
+		dh_testdir
+		dh_testroot
+		dh_clean -k
+		dh_installdirs
+		$(MAKE) -C zlibrary/core TARGET_ARCH=maemo UI_TYPE=maemo3 DESTDIR=$(DEB_DIR)/libzlibrary-maemo2 do_install
+		$(MAKE) -C zlibrary/text TARGET_ARCH=maemo UI_TYPE=maemo3 DESTDIR=$(DEB_DIR)/libzlibrary-maemo2 do_install
+		$(MAKE) -C zlibrary/ui TARGET_ARCH=maemo UI_TYPE=maemo3 DESTDIR=$(DEB_DIR)/libzlibrary-maemo2 do_install
+		$(MAKE) -C fbreader TARGET_ARCH=maemo UI_TYPE=maemo3 DESTDIR=$(DEB_DIR)/fbreader-maemo2 do_install
+		$(MAKE) -C zlibrary/core TARGET_ARCH=maemo UI_TYPE=maemo3 DESTDIR=$(DEB_DIR)/libzlibrary-maemo2-dev do_install_dev
+		$(MAKE) -C zlibrary/text TARGET_ARCH=maemo UI_TYPE=maemo3 DESTDIR=$(DEB_DIR)/libzlibrary-maemo2-dev do_install_dev
+		touch install-stamp
+
+binary-indep:
+
+binary-arch:	build install
+		dh_testdir
+		dh_testroot
+		dh_compress -a
+		dh_fixperms -a
+		dh_installdeb -a
+		dh_shlibdeps -a -l $(PWD)/debian/libzlibrary-maemo2/usr/lib
+		dh_gencontrol -a
+		dh_md5sums -a
+		dh_builddeb -a
+
+binary:		binary-indep binary-arch
+
+.PHONY:		clean build install binary-indep binary-arch binary
+
+## ----------------------------------------------------------------------
diff --git a/distributions/debian/maemo4/changelog b/distributions/debian/maemo4/changelog
new file mode 100644
index 0000000..12d3bc7
--- /dev/null
+++ b/distributions/debian/maemo4/changelog
@@ -0,0 +1,200 @@
+fbreader (0.10.7-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Mon, 30 Mar 2009 13:29:00 +0400
+
+fbreader (0.10.6-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Thu, 26 Mar 2009 22:15:00 +0200
+
+fbreader (0.10.5-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Fri, 20 Mar 2009 18:12:00 +0200
+
+fbreader (0.10.4-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Sun, 8 Feb 2009 03:24:00 +0300
+
+fbreader (0.10.0-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Sun, 3 Aug 2008 19:01:00 +0400
+
+fbreader (0.8.17-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Sun, 23 Mar 2008 03:30:00 +0300
+
+fbreader (0.8.16-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Fri, 20 Mar 2008 03:10:00 +0300
+
+fbreader (0.8.15-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Tue, 26 Feb 2008 02:41:00 +0300
+
+fbreader (0.8.14-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Sat, 9 Feb 2008 22:48:00 +0300
+
+fbreader (0.8.13-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Thr, 24 Jan 2008 15:24:00 +0300
+
+fbreader (0.8.12-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Sat, 19 Jan 2008 03:47:00 +0300
+
+fbreader (0.8.11-1) stable; urgency=low
+
+  * new upstream version
+  * dependency rules have been changed
+
+ -- Nikolay Pultsin   Sat, 12 Jan 2008 22:27:00 +0300
+
+fbreader (0.8.10-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Fri, 4 Jan 2008 20:53:00 +0300
+
+fbreader (0.8.9-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Thr, 27 Dec 2007 07:13:00 +0300
+
+fbreader (0.8.8d-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Mon, 24 Dec 2007 10:27:00 +0300
+
+fbreader (0.8.8c-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Sun, 23 Dec 2007 08:14:00 +0300
+
+fbreader (0.8.8b-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Thr, 20 Dec 2007 22:30:00 +0300
+
+fbreader (0.8.8a-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Mon, 17 Dec 2007 03:03:00 +0300
+
+fbreader (0.8.8-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Fri, 23 Nov 2007 22:55:00 +0300
+
+fbreader (0.8.7b-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Tue, 6 Nov 2007 22:55:00 +0300
+
+fbreader (0.8.7a-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Sat, 3 Nov 2007 00:00:00 +0400
+
+fbreader (0.8.7-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Fri, 5 Sep 2007 00:00:00 +0400
+
+fbreader (0.8.6d-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Thr, 7 Sep 2007 12:00:00 +0400
+
+fbreader (0.8.6c-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Thr, 30 Aug 2007 02:30:00 +0400
+
+fbreader (0.8.6a-1) stable; urgency=low
+
+  * fixed stylus/finger pressing detection problem on Nokia 770 device
+
+ -- Nikolay Pultsin   Thr, 8 Aug 2007 18:47:00 +0400
+
+fbreader (0.8.6-3) stable; urgency=low
+
+  * fixed fbreader-maemo2 package icon
+
+ -- Nikolay Pultsin   Thr, 8 Aug 2007 01:55:00 +0400
+
+fbreader (0.8.6-2) stable; urgency=low
+
+  * fixed fbreader-maemo2 package icon
+
+ -- Nikolay Pultsin   Thr, 8 Aug 2007 01:09:00 +0400
+
+fbreader (0.8.6-1) stable; urgency=low
+
+  * new upstream version
+  * added libzlibrary-dev package
+
+ -- Nikolay Pultsin   Thr, 5 Aug 2007 23:49:00 +0400
+
+fbreader (0.8.5c-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Thr, 19 Jul 2007 15:20:00 +0400
+
+fbreader (0.8.5a-1) stable; urgency=low
+
+  * new upstream version
+  * maemo package icon has been restored
+
+ -- Nikolay Pultsin   Sat, 7 Jul 2007 02:12:00 +0400
+
+fbreader (0.8.5-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Sat, 7 Jul 2007 02:12:00 +0400
+
+fbreader (0.8.4zz-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Thr, 5 Jul 2007 03:17:00 +0400
+
+fbreader (0.8.4z-1) stable; urgency=low
+
+  * Initial release.
+
+ -- Nikolay Pultsin   Sat, 30 Jun 2007 01:48:00 +0400
diff --git a/distributions/debian/maemo4/compat b/distributions/debian/maemo4/compat
new file mode 100644
index 0000000..b8626c4
--- /dev/null
+++ b/distributions/debian/maemo4/compat
@@ -0,0 +1 @@
+4
diff --git a/distributions/debian/maemo4/control b/distributions/debian/maemo4/control
new file mode 100644
index 0000000..bc8ceb9
--- /dev/null
+++ b/distributions/debian/maemo4/control
@@ -0,0 +1,79 @@
+Source: fbreader
+Priority: optional
+Maintainer: Nikolay Pultsin 
+Standards-Version: 3.6.1
+Build-Depends: debhelper, libexpat1-dev, libbz2-dev, libz-dev, libhildon1-dev, libosso-dev, liblinebreak-dev, libfribidi-dev, libcurl3-dev
+
+Package: libzlibrary
+Section: user/libs
+Priority: optional
+Architecture: armel
+Conflicts: fbreader (<< 0.8.0)
+Depends: ${shlibs:Depends}
+Description: Platform-dependent part of fbreader
+ Home page: http://www.fbreader.org/
+
+Package: libzlibrary-dev
+Section: libdevel
+Priority: optional
+Architecture: armel
+Depends: libzlibrary (= ${Source-Version})
+Description: zlibrary - development files
+ Home page: http://www.fbreader.org/
+
+Package: fbreader
+Section: user/tools
+Priority: optional
+Architecture: armel
+Depends: ${shlibs:Depends}
+Description: e-book reader
+ FBReader is an e-book reader for UNIX/Windows computers.
+ .
+ Main features:
+  * supports several open e-book formats: fb2, html, chm, plucker,
+    palmdoc, ztxt, tcr (psion text), rtf, oeb, openreader, non-DRM'ed
+    mobipocket, plain text
+  * reads directly from tar, zip, gzip, bzip2 archives (you can have
+    several books in one archive)
+  * supports structured view for your e-book collection
+  * automatically determines encoding
+  * automatically generates table of contents
+  * keeps the last open book and the last read positions for all open books
+    between runs
+  * automatic hyphenation (patterns for several languages are included)
+ .
+ Home page: http://www.fbreader.org/
+XB-Maemo-Icon-26:
+ iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAYAAACpSkzOAAAABmJLR0QA/wD/
+ AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH2QEKFjEFBaQC
+ bAAABStJREFUSMftlsmPXFcVh79zhzfX0Gm3y+20GwcnDomMEJEVAXIk2CAG
+ YaYVEUhs2WWTRRbsQCzZgGADKyT2RkLKAgkiYaJsIkAx3R7iEbvT6a4eqrte
+ Vb07ZFHV7W6TPwAkrnSk867OO997v3N07oX/r//2JQfOlT+9ZT+xdLqXhiBl
+ WTYhENc2Hsn2j9/49MI4LKjLX7u9cPmr7zz9yRf90QTr+7uiXaoGdS1b21uy
+ v9VnY+1RlNCEb3732+E/QN//2a9/+qVLn3/9QmLlxFNt70PD8MN1Vl/7UbJ0
+ 77Ysd8rQPPvstb9++RtXRifPP1VuPlgmNr25qlVOTp1Ni7LU7XbLdMqCTqvw
+ mzvbk9/+4c+j8eLp3/zyB1//uTkAPZr4Z665wr75q5+wt71pyiKn1+pQzs1z
+ dXWV17ulym/fupC9+ccL409tcHH0kPTUaf6tc/bEkmlDqhRaKZI0ocpzbHTs
+ mnwJ4BA09JFoDSsr17hz8zpoQYBQO85OFN/r72CMYrhyHbf4PH2nKUc5e16z
+ s7FJkIi1lixJIQoQiTEiRADUASjPC3yIKGUQLWgRtGhERVCRXQn4xjHyEU9k
+ f+xogiIqM9U/ggiIHKYkxgjyBKjKMyYxYo3BKIM1ljzLKfOCEzi8g2Hj6HuH
+ pMn0a5VCRRCtpr5SKA1KTUtflOUB57F0mTWMG48gJDYlzTKyrCBVwvm9XULj
+ 2PeeD7SmlVXEuEkwBiOC0hpRgiCIKESmvjEJ+CdAIpHBYAgiZFlBVbVotzpk
+ ecqp+zfZH48JUdhpzSPtDlEZnPMYQBmDPG5gEEFESIxlEvxx6SyKwf4eRZ5T
+ lS263S7tToeyrKiMxUdQEhh3u4Q0Q0JAxTBNavSs+LNiAdpoqqrE+SdqZIKj
+ HjWkSUpRlFRVSVHk5EWBa1WUEqmAKNM+SgUSPFpAqWmaOIMIoJWmVRSznSPS
+ RTyT8Zhet8u4HpHlOXmeYWzCZl7RU5okETKtic2YNDqsimA1WmsAQpy2dIwR
+ rYQ0fSzpIagZjXEywugEY+ysIQqKvGA9BpL5ORYTz9lmj2TjIa1OSt7O+SAx
+ s+JD8B7nAsEHtNbkWQZhcFy6wdbONEAprDUYM21xrYXGGv5y5jnM/AlefWaR
+ xa0HlN0MFye4rJjKpYQQPK6Z4BqHKEWZ58gMcfhHdV1Dy9GZn6PfXwcUzjtC
+ tGSfe4V3rr7FP3pPUyc9Xj73AlY79PwSae8EfjxNbLQBEaJERCBJ7KxBjoC0
+ NnSU49IXXqH32UvUJmVdlfTrPfxwh/iZL1KlmnqiWY2OUW+R83MZ81UbY0aI
+ gLEWmySIKEKIpEaBhOOgIkvwSuGLioEkDCYNy8rR155+XlDfvcmWUYgWfFIx
+ HA3pDyFpJqjop1NBCTFmTLwD0YhAnB0UhzVSCKUEnBh6MmK5GdAUBec6GUux
+ Yb9oMxlssPfuVXqjXc5XCWfaOd1OSVEUlGWJtVOpvPf4EDBaMxrVT4ygxPhW
+ YlGDD+kkHVwzonP3PaIQ9drDcXbtn2s3Htx59+b1f71968bKuYsvXXzphedf
+ XDpzZrnd6XSTVquljDGilCARYgj+/dWVv6/+/hdXjh58cvnVH37n5a9863f1
+ yoqcXJjfvv/w3q17d99/e2Xlvb/dv3/vxs7Odj+E4GfvqJnpJEkypXSxsHCy
+ yLM8ESXWWuvrerh2587tW977GggHICUiutXunLLG6MFgUDfNpIkxTgDHdDSG
+ j7kCyMfsxVlsPGLHAg+eD+xY4P/M+ght8RxOZDxGnAAAAABJRU5ErkJggg==
+ ====
diff --git a/distributions/debian/maemo4/fbreader.postinst b/distributions/debian/maemo4/fbreader.postinst
new file mode 100644
index 0000000..fffe4ce
--- /dev/null
+++ b/distributions/debian/maemo4/fbreader.postinst
@@ -0,0 +1,21 @@
+#! /bin/sh
+
+if [ -x /usr/bin/gtk-update-icon-cache ]
+then
+  /usr/bin/gtk-update-icon-cache -f /usr/share/icons/hicolor
+fi
+
+if [ -x /usr/bin/update-desktop-database ]
+then
+  /usr/bin/update-desktop-database
+fi
+
+if [ -x /usr/bin/update-mime-database ]
+then
+  /usr/bin/update-mime-database /usr/share/mime
+fi
+
+if [ "$1" = "configure" -a -z "$2" -a -x /usr/bin/maemo-select-menu-location ]
+then
+	/usr/bin/maemo-select-menu-location FBReader.desktop
+fi
diff --git a/distributions/debian/maemo4/fbreader.postrm b/distributions/debian/maemo4/fbreader.postrm
new file mode 100644
index 0000000..7fea7d2
--- /dev/null
+++ b/distributions/debian/maemo4/fbreader.postrm
@@ -0,0 +1,16 @@
+#! /bin/sh
+
+if [ -x /usr/bin/gtk-update-icon-cache ]
+then
+  /usr/bin/gtk-update-icon-cache -f /usr/share/icons/hicolor
+fi
+
+if [ -x /usr/bin/update-desktop-database ]
+then
+  /usr/bin/update-desktop-database
+fi
+
+if [ -x /usr/bin/update-mime-database ]
+then
+  /usr/bin/update-mime-database /usr/share/mime
+fi
diff --git a/distributions/debian/maemo4/libzlibrary.postinst b/distributions/debian/maemo4/libzlibrary.postinst
new file mode 100644
index 0000000..9977c68
--- /dev/null
+++ b/distributions/debian/maemo4/libzlibrary.postinst
@@ -0,0 +1,7 @@
+#! /bin/sh
+
+set -e
+
+if [ "$1" = "configure" ]; then
+	ldconfig
+fi
diff --git a/distributions/debian/maemo4/libzlibrary.postrm b/distributions/debian/maemo4/libzlibrary.postrm
new file mode 100644
index 0000000..9977c68
--- /dev/null
+++ b/distributions/debian/maemo4/libzlibrary.postrm
@@ -0,0 +1,7 @@
+#! /bin/sh
+
+set -e
+
+if [ "$1" = "configure" ]; then
+	ldconfig
+fi
diff --git a/distributions/debian/maemo4/libzlibrary.shlibs b/distributions/debian/maemo4/libzlibrary.shlibs
new file mode 100644
index 0000000..06fec6c
--- /dev/null
+++ b/distributions/debian/maemo4/libzlibrary.shlibs
@@ -0,0 +1,2 @@
+libzlcore @SOVERSIONCORE@ libzlibrary (>= @VERSION@-1), libzlibrary (<< 0.11.0-1)
+libzltext @SOVERSIONTEXT@ libzlibrary (>= @VERSION@-1), libzlibrary (<< 0.11.0-1)
diff --git a/distributions/debian/maemo4/rules b/distributions/debian/maemo4/rules
new file mode 100755
index 0000000..7e354c9
--- /dev/null
+++ b/distributions/debian/maemo4/rules
@@ -0,0 +1,66 @@
+#!/usr/bin/make -f
+## ----------------------------------------------------------------------
+## debian/rules : package script for fbreader
+## ----------------------------------------------------------------------
+
+## ----------------------------------------------------------------------
+## uncomment this to turn on verbose mode
+#export DH_VERBOSE=1
+
+## ----------------------------------------------------------------------
+DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
+DEB_HOST_GNU_TYPE  ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
+
+## ----------------------------------------------------------------------
+DEB_DIR		= $(CURDIR)/debian
+
+## ----------------------------------------------------------------------
+## targets
+
+clean:
+		dh_testdir
+		dh_testroot
+		[ ! -f Makefile ] || $(MAKE) distclean
+		dh_clean build-stamp install-stamp
+
+build:		build-stamp
+build-stamp:
+		dh_testdir
+		$(MAKE) -C zlibrary/core TARGET_ARCH=maemo UI_TYPE=maemo4
+		$(MAKE) -C zlibrary/text TARGET_ARCH=maemo UI_TYPE=maemo4
+		$(MAKE) -C zlibrary/ui TARGET_ARCH=maemo UI_TYPE=maemo4
+		$(MAKE) -C fbreader TARGET_ARCH=maemo UI_TYPE=maemo4
+		touch build-stamp 
+
+install:	install-stamp
+install-stamp:	build
+		dh_testdir
+		dh_testroot
+		dh_clean -k
+		dh_installdirs
+		$(MAKE) -C zlibrary/core TARGET_ARCH=maemo UI_TYPE=maemo4 DESTDIR=$(DEB_DIR)/libzlibrary do_install
+		$(MAKE) -C zlibrary/text TARGET_ARCH=maemo UI_TYPE=maemo4 DESTDIR=$(DEB_DIR)/libzlibrary do_install
+		$(MAKE) -C zlibrary/ui TARGET_ARCH=maemo UI_TYPE=maemo4 DESTDIR=$(DEB_DIR)/libzlibrary do_install
+		$(MAKE) -C fbreader TARGET_ARCH=maemo UI_TYPE=maemo4 DESTDIR=$(DEB_DIR)/fbreader do_install
+		$(MAKE) -C zlibrary/core TARGET_ARCH=maemo UI_TYPE=maemo4 DESTDIR=$(DEB_DIR)/libzlibrary-dev do_install_dev
+		$(MAKE) -C zlibrary/text TARGET_ARCH=maemo UI_TYPE=maemo4 DESTDIR=$(DEB_DIR)/libzlibrary-dev do_install_dev
+		touch install-stamp
+
+binary-indep:
+
+binary-arch:	build install
+		dh_testdir
+		dh_testroot
+		dh_compress -a
+		dh_fixperms -a
+		dh_installdeb -a
+		dh_shlibdeps -a -l $(DEB_DIR)/libzlibrary/usr/lib
+		dh_gencontrol -a
+		dh_md5sums -a
+		dh_builddeb -a
+
+binary:		binary-indep binary-arch
+
+.PHONY:		clean build install binary-indep binary-arch binary
+
+## ----------------------------------------------------------------------
diff --git a/distributions/debian/maemo5/changelog b/distributions/debian/maemo5/changelog
new file mode 100644
index 0000000..42e041d
--- /dev/null
+++ b/distributions/debian/maemo5/changelog
@@ -0,0 +1,218 @@
+fbreader (0.14.0-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Thu, 24 Mar 2010 14:49:00 +0300
+
+fbreader (0.12.5.1-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Thu, 25 Feb 2010 17:45:00 +0300
+
+fbreader (0.11.3-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Sun, 25 Oct 2009 21:30:07 +0200
+
+fbreader (0.10.7-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Mon, 30 Mar 2009 13:29:00 +0400
+
+fbreader (0.10.6-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Thu, 26 Mar 2009 22:15:00 +0200
+
+fbreader (0.10.5-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Fri, 20 Mar 2009 18:12:00 +0200
+
+fbreader (0.10.4-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Sun, 8 Feb 2009 03:24:00 +0300
+
+fbreader (0.10.0-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Sun, 3 Aug 2008 19:01:00 +0400
+
+fbreader (0.8.17-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Sun, 23 Mar 2008 03:30:00 +0300
+
+fbreader (0.8.16-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Fri, 20 Mar 2008 03:10:00 +0300
+
+fbreader (0.8.15-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Tue, 26 Feb 2008 02:41:00 +0300
+
+fbreader (0.8.14-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Sat, 9 Feb 2008 22:48:00 +0300
+
+fbreader (0.8.13-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Thr, 24 Jan 2008 15:24:00 +0300
+
+fbreader (0.8.12-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Sat, 19 Jan 2008 03:47:00 +0300
+
+fbreader (0.8.11-1) stable; urgency=low
+
+  * new upstream version
+  * dependency rules have been changed
+
+ -- Nikolay Pultsin   Sat, 12 Jan 2008 22:27:00 +0300
+
+fbreader (0.8.10-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Fri, 4 Jan 2008 20:53:00 +0300
+
+fbreader (0.8.9-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Thr, 27 Dec 2007 07:13:00 +0300
+
+fbreader (0.8.8d-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Mon, 24 Dec 2007 10:27:00 +0300
+
+fbreader (0.8.8c-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Sun, 23 Dec 2007 08:14:00 +0300
+
+fbreader (0.8.8b-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Thr, 20 Dec 2007 22:30:00 +0300
+
+fbreader (0.8.8a-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Mon, 17 Dec 2007 03:03:00 +0300
+
+fbreader (0.8.8-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Fri, 23 Nov 2007 22:55:00 +0300
+
+fbreader (0.8.7b-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Tue, 6 Nov 2007 22:55:00 +0300
+
+fbreader (0.8.7a-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Sat, 3 Nov 2007 00:00:00 +0400
+
+fbreader (0.8.7-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Fri, 5 Sep 2007 00:00:00 +0400
+
+fbreader (0.8.6d-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Thr, 7 Sep 2007 12:00:00 +0400
+
+fbreader (0.8.6c-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Thr, 30 Aug 2007 02:30:00 +0400
+
+fbreader (0.8.6a-1) stable; urgency=low
+
+  * fixed stylus/finger pressing detection problem on Nokia 770 device
+
+ -- Nikolay Pultsin   Thr, 8 Aug 2007 18:47:00 +0400
+
+fbreader (0.8.6-3) stable; urgency=low
+
+  * fixed fbreader-maemo2 package icon
+
+ -- Nikolay Pultsin   Thr, 8 Aug 2007 01:55:00 +0400
+
+fbreader (0.8.6-2) stable; urgency=low
+
+  * fixed fbreader-maemo2 package icon
+
+ -- Nikolay Pultsin   Thr, 8 Aug 2007 01:09:00 +0400
+
+fbreader (0.8.6-1) stable; urgency=low
+
+  * new upstream version
+  * added libzlibrary-dev package
+
+ -- Nikolay Pultsin   Thr, 5 Aug 2007 23:49:00 +0400
+
+fbreader (0.8.5c-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Thr, 19 Jul 2007 15:20:00 +0400
+
+fbreader (0.8.5a-1) stable; urgency=low
+
+  * new upstream version
+  * maemo package icon has been restored
+
+ -- Nikolay Pultsin   Sat, 7 Jul 2007 02:12:00 +0400
+
+fbreader (0.8.5-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Sat, 7 Jul 2007 02:12:00 +0400
+
+fbreader (0.8.4zz-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Thr, 5 Jul 2007 03:17:00 +0400
+
+fbreader (0.8.4z-1) stable; urgency=low
+
+  * Initial release.
+
+ -- Nikolay Pultsin   Sat, 30 Jun 2007 01:48:00 +0400
diff --git a/distributions/debian/maemo5/compat b/distributions/debian/maemo5/compat
new file mode 100644
index 0000000..b8626c4
--- /dev/null
+++ b/distributions/debian/maemo5/compat
@@ -0,0 +1 @@
+4
diff --git a/distributions/debian/maemo5/control b/distributions/debian/maemo5/control
new file mode 100644
index 0000000..f1ae447
--- /dev/null
+++ b/distributions/debian/maemo5/control
@@ -0,0 +1,79 @@
+Source: fbreader
+Priority: optional
+Maintainer: Nikolay Pultsin 
+Standards-Version: 3.6.1
+Build-Depends: debhelper, libexpat1-dev, libbz2-dev, libz-dev, libhildon1-dev, libosso-dev, liblinebreak-dev, libfribidi-dev, libcurl3-dev, libconic0-dev, libsqlite3-dev
+
+Package: libzlibrary
+Section: user/libs
+Priority: optional
+Architecture: armel i386
+Conflicts: fbreader (<< 0.8.0)
+Depends: ${shlibs:Depends}
+Description: Platform-dependent part of fbreader
+ Home page: http://www.fbreader.org/
+
+Package: libzlibrary-dev
+Section: libdevel
+Priority: optional
+Architecture: armel i386
+Depends: libzlibrary (= ${Source-Version})
+Description: zlibrary - development files
+ Home page: http://www.fbreader.org/
+
+Package: fbreader
+Section: user/tools
+Priority: optional
+Architecture: armel i386
+Depends: ${shlibs:Depends}
+Description: e-book reader
+ FBReader is an e-book reader for UNIX/Windows computers.
+ .
+ Main features:
+  * supports several open e-book formats: fb2, html, chm, plucker,
+    palmdoc, ztxt, tcr (psion text), rtf, oeb, openreader, non-DRM'ed
+    mobipocket, plain text
+  * reads directly from tar, zip, gzip, bzip2 archives (you can have
+    several books in one archive)
+  * supports structured view for your e-book collection
+  * automatically determines encoding
+  * automatically generates table of contents
+  * keeps the last open book and the last read positions for all open books
+    between runs
+  * automatic hyphenation (patterns for several languages are included)
+ .
+ Home page: http://www.fbreader.org/
+XB-Maemo-Icon-26:
+ iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAYAAACpSkzOAAAABmJLR0QA/wD/
+ AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH2QEKFjEFBaQC
+ bAAABStJREFUSMftlsmPXFcVh79zhzfX0Gm3y+20GwcnDomMEJEVAXIk2CAG
+ YaYVEUhs2WWTRRbsQCzZgGADKyT2RkLKAgkiYaJsIkAx3R7iEbvT6a4eqrte
+ Vb07ZFHV7W6TPwAkrnSk867OO997v3N07oX/r//2JQfOlT+9ZT+xdLqXhiBl
+ WTYhENc2Hsn2j9/49MI4LKjLX7u9cPmr7zz9yRf90QTr+7uiXaoGdS1b21uy
+ v9VnY+1RlNCEb3732+E/QN//2a9/+qVLn3/9QmLlxFNt70PD8MN1Vl/7UbJ0
+ 77Ysd8rQPPvstb9++RtXRifPP1VuPlgmNr25qlVOTp1Ni7LU7XbLdMqCTqvw
+ mzvbk9/+4c+j8eLp3/zyB1//uTkAPZr4Z665wr75q5+wt71pyiKn1+pQzs1z
+ dXWV17ulym/fupC9+ccL409tcHH0kPTUaf6tc/bEkmlDqhRaKZI0ocpzbHTs
+ mnwJ4BA09JFoDSsr17hz8zpoQYBQO85OFN/r72CMYrhyHbf4PH2nKUc5e16z
+ s7FJkIi1lixJIQoQiTEiRADUASjPC3yIKGUQLWgRtGhERVCRXQn4xjHyEU9k
+ f+xogiIqM9U/ggiIHKYkxgjyBKjKMyYxYo3BKIM1ljzLKfOCEzi8g2Hj6HuH
+ pMn0a5VCRRCtpr5SKA1KTUtflOUB57F0mTWMG48gJDYlzTKyrCBVwvm9XULj
+ 2PeeD7SmlVXEuEkwBiOC0hpRgiCIKESmvjEJ+CdAIpHBYAgiZFlBVbVotzpk
+ ecqp+zfZH48JUdhpzSPtDlEZnPMYQBmDPG5gEEFESIxlEvxx6SyKwf4eRZ5T
+ lS263S7tToeyrKiMxUdQEhh3u4Q0Q0JAxTBNavSs+LNiAdpoqqrE+SdqZIKj
+ HjWkSUpRlFRVSVHk5EWBa1WUEqmAKNM+SgUSPFpAqWmaOIMIoJWmVRSznSPS
+ RTyT8Zhet8u4HpHlOXmeYWzCZl7RU5okETKtic2YNDqsimA1WmsAQpy2dIwR
+ rYQ0fSzpIagZjXEywugEY+ysIQqKvGA9BpL5ORYTz9lmj2TjIa1OSt7O+SAx
+ s+JD8B7nAsEHtNbkWQZhcFy6wdbONEAprDUYM21xrYXGGv5y5jnM/AlefWaR
+ xa0HlN0MFye4rJjKpYQQPK6Z4BqHKEWZ58gMcfhHdV1Dy9GZn6PfXwcUzjtC
+ tGSfe4V3rr7FP3pPUyc9Xj73AlY79PwSae8EfjxNbLQBEaJERCBJ7KxBjoC0
+ NnSU49IXXqH32UvUJmVdlfTrPfxwh/iZL1KlmnqiWY2OUW+R83MZ81UbY0aI
+ gLEWmySIKEKIpEaBhOOgIkvwSuGLioEkDCYNy8rR155+XlDfvcmWUYgWfFIx
+ HA3pDyFpJqjop1NBCTFmTLwD0YhAnB0UhzVSCKUEnBh6MmK5GdAUBec6GUux
+ Yb9oMxlssPfuVXqjXc5XCWfaOd1OSVEUlGWJtVOpvPf4EDBaMxrVT4ygxPhW
+ YlGDD+kkHVwzonP3PaIQ9drDcXbtn2s3Htx59+b1f71968bKuYsvXXzphedf
+ XDpzZrnd6XSTVquljDGilCARYgj+/dWVv6/+/hdXjh58cvnVH37n5a9863f1
+ yoqcXJjfvv/w3q17d99/e2Xlvb/dv3/vxs7Odj+E4GfvqJnpJEkypXSxsHCy
+ yLM8ESXWWuvrerh2587tW977GggHICUiutXunLLG6MFgUDfNpIkxTgDHdDSG
+ j7kCyMfsxVlsPGLHAg+eD+xY4P/M+ght8RxOZDxGnAAAAABJRU5ErkJggg==
+ ====
diff --git a/distributions/debian/maemo5/fbreader.postinst b/distributions/debian/maemo5/fbreader.postinst
new file mode 100644
index 0000000..fffe4ce
--- /dev/null
+++ b/distributions/debian/maemo5/fbreader.postinst
@@ -0,0 +1,21 @@
+#! /bin/sh
+
+if [ -x /usr/bin/gtk-update-icon-cache ]
+then
+  /usr/bin/gtk-update-icon-cache -f /usr/share/icons/hicolor
+fi
+
+if [ -x /usr/bin/update-desktop-database ]
+then
+  /usr/bin/update-desktop-database
+fi
+
+if [ -x /usr/bin/update-mime-database ]
+then
+  /usr/bin/update-mime-database /usr/share/mime
+fi
+
+if [ "$1" = "configure" -a -z "$2" -a -x /usr/bin/maemo-select-menu-location ]
+then
+	/usr/bin/maemo-select-menu-location FBReader.desktop
+fi
diff --git a/distributions/debian/maemo5/fbreader.postrm b/distributions/debian/maemo5/fbreader.postrm
new file mode 100644
index 0000000..7fea7d2
--- /dev/null
+++ b/distributions/debian/maemo5/fbreader.postrm
@@ -0,0 +1,16 @@
+#! /bin/sh
+
+if [ -x /usr/bin/gtk-update-icon-cache ]
+then
+  /usr/bin/gtk-update-icon-cache -f /usr/share/icons/hicolor
+fi
+
+if [ -x /usr/bin/update-desktop-database ]
+then
+  /usr/bin/update-desktop-database
+fi
+
+if [ -x /usr/bin/update-mime-database ]
+then
+  /usr/bin/update-mime-database /usr/share/mime
+fi
diff --git a/distributions/debian/maemo5/libzlibrary.postinst b/distributions/debian/maemo5/libzlibrary.postinst
new file mode 100644
index 0000000..9977c68
--- /dev/null
+++ b/distributions/debian/maemo5/libzlibrary.postinst
@@ -0,0 +1,7 @@
+#! /bin/sh
+
+set -e
+
+if [ "$1" = "configure" ]; then
+	ldconfig
+fi
diff --git a/distributions/debian/maemo5/libzlibrary.postrm b/distributions/debian/maemo5/libzlibrary.postrm
new file mode 100644
index 0000000..9977c68
--- /dev/null
+++ b/distributions/debian/maemo5/libzlibrary.postrm
@@ -0,0 +1,7 @@
+#! /bin/sh
+
+set -e
+
+if [ "$1" = "configure" ]; then
+	ldconfig
+fi
diff --git a/distributions/debian/maemo5/libzlibrary.shlibs b/distributions/debian/maemo5/libzlibrary.shlibs
new file mode 100644
index 0000000..bd33f47
--- /dev/null
+++ b/distributions/debian/maemo5/libzlibrary.shlibs
@@ -0,0 +1,2 @@
+libzlcore @SOVERSIONCORE@ libzlibrary (>= @VERSION@-1), libzlibrary (<< 0.15.0-1)
+libzltext @SOVERSIONTEXT@ libzlibrary (>= @VERSION@-1), libzlibrary (<< 0.15.0-1)
diff --git a/distributions/debian/maemo5/rules b/distributions/debian/maemo5/rules
new file mode 100755
index 0000000..3f21800
--- /dev/null
+++ b/distributions/debian/maemo5/rules
@@ -0,0 +1,66 @@
+#!/usr/bin/make -f
+## ----------------------------------------------------------------------
+## debian/rules : package script for fbreader
+## ----------------------------------------------------------------------
+
+## ----------------------------------------------------------------------
+## uncomment this to turn on verbose mode
+#export DH_VERBOSE=1
+
+## ----------------------------------------------------------------------
+DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
+DEB_HOST_GNU_TYPE  ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
+
+## ----------------------------------------------------------------------
+DEB_DIR		= $(CURDIR)/debian
+
+## ----------------------------------------------------------------------
+## targets
+
+clean:
+		dh_testdir
+		dh_testroot
+		[ ! -f Makefile ] || $(MAKE) distclean
+		dh_clean build-stamp install-stamp
+
+build:		build-stamp
+build-stamp:
+		dh_testdir
+		$(MAKE) -C zlibrary/core TARGET_ARCH=maemo UI_TYPE=maemo5
+		$(MAKE) -C zlibrary/text TARGET_ARCH=maemo UI_TYPE=maemo5
+		$(MAKE) -C zlibrary/ui TARGET_ARCH=maemo UI_TYPE=maemo5
+		$(MAKE) -C fbreader TARGET_ARCH=maemo UI_TYPE=maemo5
+		touch build-stamp 
+
+install:	install-stamp
+install-stamp:	build
+		dh_testdir
+		dh_testroot
+		dh_clean -k
+		dh_installdirs
+		$(MAKE) -C zlibrary/core TARGET_ARCH=maemo UI_TYPE=maemo5 DESTDIR=$(DEB_DIR)/libzlibrary do_install
+		$(MAKE) -C zlibrary/text TARGET_ARCH=maemo UI_TYPE=maemo5 DESTDIR=$(DEB_DIR)/libzlibrary do_install
+		$(MAKE) -C zlibrary/ui TARGET_ARCH=maemo UI_TYPE=maemo5 DESTDIR=$(DEB_DIR)/libzlibrary do_install
+		$(MAKE) -C fbreader TARGET_ARCH=maemo UI_TYPE=maemo5 DESTDIR=$(DEB_DIR)/fbreader do_install
+		$(MAKE) -C zlibrary/core TARGET_ARCH=maemo UI_TYPE=maemo5 DESTDIR=$(DEB_DIR)/libzlibrary-dev do_install_dev
+		$(MAKE) -C zlibrary/text TARGET_ARCH=maemo UI_TYPE=maemo5 DESTDIR=$(DEB_DIR)/libzlibrary-dev do_install_dev
+		touch install-stamp
+
+binary-indep:
+
+binary-arch:	build install
+		dh_testdir
+		dh_testroot
+		dh_compress -a
+		dh_fixperms -a
+		dh_installdeb -a
+		dh_shlibdeps -a -l $(DEB_DIR)/libzlibrary/usr/lib
+		dh_gencontrol -a
+		dh_md5sums -a
+		dh_builddeb -a
+
+binary:		binary-indep binary-arch
+
+.PHONY:		clean build install binary-indep binary-arch binary
+
+## ----------------------------------------------------------------------
diff --git a/distributions/debian/smartq/changelog b/distributions/debian/smartq/changelog
new file mode 100644
index 0000000..4a6aa88
--- /dev/null
+++ b/distributions/debian/smartq/changelog
@@ -0,0 +1,344 @@
+fbreader (0.12.10-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Thu, 1 Apr 2010 13:48:00 +0300
+
+fbreader (0.12.9-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Thu, 25 Mar 2010 02:33:00 +0300
+
+fbreader (0.12.8-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Mon, 22 Mar 2010 21:42:00 +0300
+
+fbreader (0.12.7-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Fri, 5 Mar 2010 00:39:00 +0300
+
+fbreader (0.12.6-1) stable; urgency=low
+
+  * new upstream version
+  * Text selection is disabled by default. That means the tap scrolling
+    works faster in 200 ms.
+
+ -- Nikolay Pultsin   Tue, 2 Mar 2010 20:53:00 +0300
+
+fbreader (0.12.5.smartq-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Sun, 21 Feb 2010 16:20:00 +0300
+
+fbreader (0.12.2-5) stable; urgency=low
+
+  * Double-click detection is switched off if a text selection is disabled
+
+ -- Nikolay Pultsin   Tue, 16 Feb 2010 16:35:00 +0300
+
+fbreader (0.12.2-4) stable; urgency=low
+
+  * Better solution for chm crash problem: gcc 4.3 is used instead of 4.4
+  * Fixed position indicator behaviour
+
+ -- Nikolay Pultsin   Sun, 14 Feb 2010 15:46:00 +0300
+
+fbreader (0.12.2-3) stable; urgency=low
+
+  * Arabic and Chinese entries have been added to the desktop file
+  * A SmartQ-specific crach on chm files has been fixed
+
+ -- Nikolay Pultsin   Sat, 13 Feb 2010 14:46:00 +0300
+
+fbreader (0.12.2-2) stable; urgency=low
+
+  * several SmartQ-specific patches have been added
+
+ -- Nikolay Pultsin   Tue, 9 Feb 2010 18:51:00 +0300
+
+fbreader (0.12.2-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Fri, 29 Jan 2010 19:53:00 +0300
+
+fbreader (0.12.1-2) stable; urgency=low
+
+  * cosmetical fixes
+
+ -- Nikolay Pultsin   Sun, 13 Dec 2009 11:41:00 +0300
+
+fbreader (0.12.1-1) stable; urgency=low
+
+  * new upstream version
+  * updated man page
+
+ -- Nikolay Pultsin   Sun, 13 Dec 2009 09:23:00 +0300
+
+fbreader (0.12.0-3) stable; urgency=low
+
+  * fixed rules file
+
+ -- Nikolay Pultsin   Sun, 6 Dec 2009 19:48:00 +0300
+
+fbreader (0.12.0-2) stable; urgency=low
+
+  * fixed dependencies list
+
+ -- Nikolay Pultsin   Sun, 6 Dec 2009 19:05:00 +0300
+
+fbreader (0.12.0-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Sat, 5 Dec 2009 03:40:00 +0300
+
+fbreader (0.11.2-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Tue, 20 Oct 2009 13:22:00 +0400
+
+fbreader (0.11.1-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Tue, 13 Oct 2009 23:38:00 +0400
+
+fbreader (0.11.0-2) stable; urgency=low
+
+  * fixed package dependencies in debian files
+
+ -- Nikolay Pultsin   Sat, 26 Sep 2009 11:23:00 +0400
+
+fbreader (0.11.0-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Vasiliy Bout   Wed, 16 Sep 2009 16:48:00 +0400
+
+fbreader (0.10.7-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Mon, 30 Mar 2009 13:29:00 +0400
+
+fbreader (0.10.6-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Thu, 26 Mar 2009 22:15:00 +0200
+
+fbreader (0.10.5-1) stable; urgency=low
+
+  * new upstream version
+  * conflicts with ubuntu fbreader packages have been resolved
+  * dependencies for libzltext-dev have been fixed
+
+ -- Nikolay Pultsin   Fri, 20 Mar 2009 18:12:00 +0200
+
+fbreader (0.10.4-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Wed, 18 Mar 2009 23:33:00 +0200
+
+fbreader (0.10.3-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Thu, 5 Feb 2009 01:11:00 +0200
+
+fbreader (0.10.2-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Fri, 17 Jan 2009 23:42:00 +0300
+
+fbreader (0.10.1-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Fri, 16 Jan 2009 12:31:00 +0300
+
+fbreader (0.10.0-1) stable; urgency=low
+
+  * new upstream version
+  * add-missing-headers.patch integrated into the upstream
+  * fix-centering-with-margins.patch integrated into the upstream
+  * use-sensible-browser.patch added to the upstream debian fileset
+  * remove-deprecated-fields-in-desktop-file.patch intgerated into the upstream
+
+ -- Nikolay Pultsin   Sun, 3 Aug 2008 19:01:00 +0400
+
+fbreader (0.8.17-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Sun, 23 Mar 2008 03:30:00 +0300
+
+fbreader (0.8.16-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Fri, 20 Mar 2008 03:10:00 +0300
+
+fbreader (0.8.15-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Tue, 26 Feb 2008 02:41:00 +0300
+
+fbreader (0.8.14-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Sat, 9 Feb 2008 22:48:00 +0300
+
+fbreader (0.8.13-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Thr, 24 Jan 2008 15:24:00 +0300
+
+fbreader (0.8.12-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Sat, 19 Jan 2008 03:47:00 +0300
+
+fbreader (0.8.11-1) stable; urgency=low
+
+  * new upstream version
+  * dependency rules have been changed
+
+ -- Nikolay Pultsin   Sat, 12 Jan 2008 22:27:00 +0300
+
+fbreader (0.8.10-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Fri, 4 Jan 2008 20:53:00 +0300
+
+fbreader (0.8.9-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Thr, 27 Dec 2007 07:13:00 +0300
+
+fbreader (0.8.8d-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Mon, 24 Dec 2007 10:27:00 +0300
+
+fbreader (0.8.8c-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Sun, 23 Dec 2007 08:14:00 +0300
+
+fbreader (0.8.8a-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Mon, 17 Dec 2007 03:03:00 +0300
+
+fbreader (0.8.8-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Fri, 23 Nov 2007 22:55:00 +0300
+
+fbreader (0.8.7b-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Tue, 6 Nov 2007 22:55:00 +0300
+
+fbreader (0.8.7a-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Wed, 31 Oct 2007 00:00:00 +0400
+
+fbreader (0.8.7-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Fri, 5 Oct 2007 00:00:00 +0400
+
+fbreader (0.8.6c-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Thr, 30 Aug 2007 02:30:00 +0400
+
+fbreader (0.8.6a-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Thr, 8 Aug 2007 18:47:00 +0400
+
+fbreader (0.8.6-1) stable; urgency=low
+
+  * new upstream version
+  * added libzlibrary-dev package
+
+ -- Nikolay Pultsin   Thr, 5 Aug 2007 23:49:00 +0400
+
+fbreader (0.8.5c-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Thr, 19 Jul 2007 15:20:00 +0400
+
+fbreader (0.8.5b-1) stable; urgency=low
+
+  * new upstream version
+  * almost all changes from the previous change are now included into
+    the upstream version: zlibrary shared objects moving, rpath deletion,
+    and the man page.
+
+ -- Nikolay Pultsin   Tue, 10 Jul 2007 21:50:00 +0400
+
+fbreader (0.8.5a-1) unstable; urgency=low
+
+  * First upload to Debian. Closes: #432274
+  * Misc debianisation changes.
+  * Move zlibrary shared object files to /usr/lib from /usr/share.
+  * Remove use of rpath.
+  * Use sensible-browser.
+  * Added a basic man page.
+
+ -- Joey Hess   Mon, 09 Jul 2007 15:04:31 -0400
+
+fbreader (0.8.5-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Sat, 7 Jul 2007 02:12:00 +0400
+
+fbreader (0.8.4zz-1) stable; urgency=low
+
+  * new upstream version
+
+ -- Nikolay Pultsin   Thu, 5 Jul 2007 03:17:00 +0400
+
+fbreader (0.8.4z-2) stable; urgency=low
+
+  * postinst/postrm scripts were added
+
+ -- Nikolay Pultsin   Fri, 29 Jun 2007 21:23:00 +0400
+
+fbreader (0.8.4z-1) stable; urgency=low
+
+  * Initial release.
+
+ -- Nikolay Pultsin   Fri, 29 Jun 2007 17:53:00 +0400
diff --git a/distributions/debian/smartq/compat b/distributions/debian/smartq/compat
new file mode 100644
index 0000000..7ed6ff8
--- /dev/null
+++ b/distributions/debian/smartq/compat
@@ -0,0 +1 @@
+5
diff --git a/distributions/debian/smartq/control b/distributions/debian/smartq/control
new file mode 100644
index 0000000..f8ed566
--- /dev/null
+++ b/distributions/debian/smartq/control
@@ -0,0 +1,115 @@
+Source: fbreader
+Section: text
+Priority: optional
+Maintainer: Nikolay Pultsin 
+Standards-Version: 3.8.0
+Build-Depends: debhelper (>= 5), libgtk2.0-dev, libqt3-mt-dev, libqt4-dev, libexpat1-dev, libbz2-dev, libz-dev, liblinebreak-dev (>= 1.0-1), libjpeg-dev, libfribidi-dev, libcurl-dev, quilt (>= 0.40), libsqlite3-dev
+
+Package: fbreader
+Priority: optional
+Architecture: any
+Replaces: fbreader-gtk, fbreader-qt, fbreader-qt4
+Depends: ${shlibs:Depends}, libzlui
+Description: e-book reader
+ FBReader is an e-book reader.
+ .
+ Main features:
+  * supports several open e-book formats: fb2, html, chm, plucker,
+    palmdoc, ztxt, tcr (psion text), rtf, oeb, openreader, non-DRM'ed
+    mobipocket, plain text
+  * reads directly from tar, zip, gzip, bzip2 archives (you can have
+    several books in one archive)
+  * supports a structured view of your e-book collection
+  * automatically determines encodings
+  * automatically generates a table of contents
+  * keeps the last open book and the last read positions for all open books
+    between runs
+  * automatic hyphenation (patterns for several languages are included)
+  * search and download books from network libraries
+ .
+  Homepage: http://www.fbreader.org/
+
+Package: libzlcore
+Section: libs
+Priority: optional
+Architecture: any
+Conflicts: fbreader-gtk, fbreader-qt, fbreader-qt4
+Replaces: libzlcore-data
+Depends: ${shlibs:Depends}
+Description: ZLibrary core
+ This is the core of ZLibrary, the library that the fbreader e-book reader
+ is based on.
+ .
+ ZLibrary is a cross-platform library to build applications running on desktop
+ Linux, Windows, different Linux-based PDAs using this library.
+
+Package: libzltext
+Section: libs
+Priority: optional
+Architecture: any
+Replaces: libzltext-data
+Depends: ${shlibs:Depends}, libzlcore (= ${binary:Version})
+Description: ZLibrary text model/viewer
+ This package provides text model/viewer part of ZLibrary.
+ .
+ ZLibrary is a cross-platform library to build applications running on desktop
+ Linux, Windows, different Linux-based PDAs using this library.
+
+Package: libzlui-gtk
+Section: libs
+Priority: optional
+Architecture: any
+Depends: ${shlibs:Depends}, libzlcore (= ${binary:Version})
+Provides: libzlui
+Description: GTK+ interface module for ZLibrary
+ This package provides a GTK+-based UI for ZLibrary.
+ .
+ ZLibrary is a cross-platform library to build applications running on desktop
+ Linux, Windows, different Linux-based PDAs using this library.
+
+Package: libzlui-qt
+Section: libs
+Priority: optional
+Architecture: any
+Depends: ${shlibs:Depends}, libzlcore (= ${binary:Version})
+Provides: libzlui
+Description: Qt3 interface module for ZLibrary
+ This package provides a Qt3-based UI for ZLibrary.
+ .
+ ZLibrary is a cross-platform library to build applications running on desktop
+ Linux, Windows, different Linux-based PDAs using this library.
+
+Package: libzlui-qt4
+Section: libs
+Priority: optional
+Architecture: any
+Depends: ${shlibs:Depends}
+Provides: libzlui
+Description: Qt4 interface module for ZLibrary
+ This package provides a Qt4-based UI for ZLibrary.
+ .
+ ZLibrary is a cross-platform library to build applications running on desktop
+ Linux, Windows, different Linux-based PDAs using this library.
+
+Package: libzlcore-dev
+Section: libdevel
+Priority: optional
+Architecture: any
+Depends: libzlcore, ${shlibs:Depends}, libzlcore (= ${binary:Version})
+Description: ZLibrary core - development files
+ This package contains development files for the ZLibrary core.
+ .
+ ZLibrary is a cross-platform library to build applications running on desktop
+ Linux, Windows, different Linux-based PDAs using this library.
+
+Package: libzltext-dev
+Section: libdevel
+Priority: optional
+Architecture: any
+Depends: libzltext, ${shlibs:Depends}, libzltext (= ${binary:Version})
+Description: ZLibrary text model/viewer - development files
+ This package contains development files for the ZLibrary text model/viewer
+ library.
+ .
+ ZLibrary is a cross-platform library to build applications running on desktop
+ Linux, Windows, different Linux-based PDAs using this library.
diff --git a/distributions/debian/smartq/copyright b/distributions/debian/smartq/copyright
new file mode 100644
index 0000000..b56c23c
--- /dev/null
+++ b/distributions/debian/smartq/copyright
@@ -0,0 +1,51 @@
+This is the Debian prepackaged version of FBReader.
+
+It was originally Debianised by Nikolay Pultsin .
+Sources are downloaded from its website at:
+
+	http://www.fbreader.org/
+
+It is copyright as follows:
+
+/*
+ * Copyright (C) 2004-2009 Geometer Plus 
+ *
+ * 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; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * 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, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ * 02110-1301, USA.
+ */
+
+On Debian systems, the full text of the GPL can be found in 
+/usr/share/common-licenses/GPL
+
+It also includes html entity files with these licenses:
+
+
+
+
diff --git a/distributions/debian/smartq/menu b/distributions/debian/smartq/menu
new file mode 100644
index 0000000..3fd4112
--- /dev/null
+++ b/distributions/debian/smartq/menu
@@ -0,0 +1,2 @@
+?package(fbreader):needs="x11" section="Applications/Viewers" \
+	title="E-book reader" command="FBReader"
diff --git a/distributions/debian/smartq/patches/110-use-sensible-browser.patch b/distributions/debian/smartq/patches/110-use-sensible-browser.patch
new file mode 100644
index 0000000..42098a1
--- /dev/null
+++ b/distributions/debian/smartq/patches/110-use-sensible-browser.patch
@@ -0,0 +1,11 @@
+--- fbreader-0.10.0.orig/fbreader/data/default/external.desktop.xml
++++ fbreader-0.10.0/fbreader/data/default/external.desktop.xml
+@@ -3,7 +3,7 @@
+ 	
+ + +- +
+ diff --git a/distributions/debian/smartq/patches/120-key-names-and-actions.patch b/distributions/debian/smartq/patches/120-key-names-and-actions.patch new file mode 100644 index 0000000..e6cae59 --- /dev/null +++ b/distributions/debian/smartq/patches/120-key-names-and-actions.patch @@ -0,0 +1,58 @@ +--- fbreader-0.12.2.orig/fbreader/data/default/keymap.desktop.xml ++++ fbreader-0.12.2/fbreader/data/default/keymap.desktop.xml +@@ -1,36 +1,8 @@ + + +- +- +- +- +- +- +- +- +- +- +- + + +- +- +- +- +- +- +- ++ ++ + +- +- +- +- +- +- +- +- +- +- +- +- + +--- fbreader-0.12.2.orig/zlibrary/ui/data/keynames.desktop-gtk.xml ++++ fbreader-0.12.2/zlibrary/ui/data/keynames.desktop-gtk.xml +@@ -1,5 +1,6 @@ + + ++ + + + +@@ -41,7 +42,6 @@ + + + +- + + + diff --git a/distributions/debian/smartq/patches/130-default-indicator.patch b/distributions/debian/smartq/patches/130-default-indicator.patch new file mode 100644 index 0000000..e242f43 --- /dev/null +++ b/distributions/debian/smartq/patches/130-default-indicator.patch @@ -0,0 +1,13 @@ +--- fbreader-0.12.2.orig/fbreader/data/default/config.desktop.xml ++++ fbreader-0.12.2/fbreader/data/default/config.desktop.xml +@@ -4,6 +4,10 @@ +