446 Commits

Author SHA1 Message Date
Oleg Shparber 3bb1af0f72 Merge branch 'hotfix/0.3.1' into stable 2016-10-10 02:05:43 -04:00
Oleg Shparber 783fb12ae8 Bump version to 0.3.1 2016-10-10 01:40:05 -04:00
Oleg Shparber 6b8ac9de88 ui: Add changes to DocsetsDialog missing from #625
Missing from ac0d19e5fe.
2016-10-10 01:39:20 -04:00
Oleg Shparber ac0d19e5fe ui: Fix 'Select All' selection in the docset manager (#625)
This fixes duplicated items in selection models because of multiple
columns.
2016-10-09 18:52:02 -04:00
Oleg Shparber 2d2a561c41 ui: Fix a race condition when removing docsets (#624) 2016-10-09 15:38:19 -04:00
Jerzy Kozera ba8c3ad00e ui: Fix docset removal on Windows (fixes #621) (#623)
Docsets need to be removed from the registry first,
to avoid rename() failing when files are in use.
2016-10-09 13:38:08 -04:00
Oleg Shparber dd5ebd2d0a doc: Fix menu path to the docset manager 2016-10-09 11:24:25 -04:00
Oleg Shparber caff862805 core: Reject no-scheme URLs on a local file system (fixes #532) (#620)
This change adds back a custom network access manager, that was removed
as a fix for #474. Although this time URL validation is much more simple.
2016-10-09 01:01:04 -04:00
Jerzy Kozera 2f9dd40086 qmake: Fix missing defines causing memory corruption (fixes #595) (#616)
Missing USE_APPINDICATOR in libs/core/ was causing the MainWindow class
declaration to be truncated, thus causing memory corruption when later used
with the full definition in libs/ui/.
2016-10-07 23:42:27 -04:00
Oleg Shparber e18ff9c274 Merge branch 'release/0.3.0' into stable 2016-09-22 23:56:02 -04:00
Oleg Shparber 1b11c54bfa Bump version to 0.3.0 2016-09-22 23:52:54 -04:00
Oleg Shparber eb95d58cfd qmake: Reduce qmake log output 2016-09-22 21:40:29 -04:00
Oleg Shparber 14c72d38aa qmake: Add Qt Network dependency for Core 2016-09-22 21:39:36 -04:00
Oleg Shparber 380031d34a qmake: Use Qt WebKit by default 2016-09-22 20:51:15 -04:00
Oleg Shparber e642cb509d ui: Use QWebView::load() instead of setUrl() 2016-09-22 02:20:26 -04:00
Oleg Shparber f69004ebbb ui: Fix redundant download state resets in DocsetsDialog 2016-09-22 02:14:04 -04:00
Oleg Shparber f7ecf2920d ui: Use model indexes instead of list items where possible 2016-09-22 02:12:48 -04:00
Oleg Shparber 797cd7953b ui: Add ability to start a docset update by a double click 2016-09-22 00:30:33 -04:00
Oleg Shparber 236eb007e4 registry: Do not use CFBundleName and docset name as a keyword
#383 for more details.
2016-09-21 21:20:55 -04:00
Oleg Shparber eb3fccee23 registry: Strip out <dash_entry_.*> from page URLs (fixes #596) 2016-09-19 21:54:21 -04:00
Oleg Shparber 94a37f73c3 registry: Build index page URL only once 2016-09-19 21:37:32 -04:00
Oleg Shparber fed639b5fb registry: Prefer index file path provided by docset 2016-09-19 21:24:39 -04:00
Oleg Shparber 64f4f32a60 registry: Add some missing symbol type aliases 2016-09-19 03:32:09 -04:00
Oleg Shparber ba859d0e46 registry: Use LEFT JOIN instead of INNER JOIN in all queries
Fixes #563 as a side effect!
2016-09-19 03:31:32 -04:00
Oleg Shparber a59ae13b47 registry: Return QUrl for docset index page (fixes #598) 2016-09-19 02:26:03 -04:00
Oleg Shparber bdaba34a8c registry: Treat only //apple_ref URL fragments as decoded (fixes #513) 2016-09-18 22:44:12 -04:00
Oleg Shparber cf22be91d0 registry,ui: Create page addresses during docset loading
This hides the internal docset structure inside the Docset class.
2016-09-18 22:42:37 -04:00
Oleg Shparber 846892446b registry: Move SQL sanitization to Docset
SearchQuery should not know about the underlying search mechanism.
2016-09-18 19:10:46 -04:00
Oleg Shparber 7282698a9d registry: Do not sort search results by docset 2016-09-18 18:54:32 -04:00
Oleg Shparber 302d6028e6 registry: Cleanup Docset a bit 2016-09-18 18:33:03 -04:00
Oleg Shparber 947b67a54d registry: Optimize docset selection with keywords present 2016-09-18 18:26:18 -04:00
Oleg Shparber feb35e8ecd doc: Add Telegram and Twitter badges 2016-09-18 17:22:28 -04:00
Oleg Shparber 801d3e44e2 registry: Ignore "unsorteddashtoc" as a keyword 2016-09-17 20:53:48 -04:00
Oleg Shparber 10a11e2778 ui: Show tooltips for tabs 2016-09-17 20:40:07 -04:00
Oleg Shparber a4fac24a5d registry: Limit results to 1k per docset for queries < 3 symbols (#265) 2016-09-15 03:11:58 -04:00
Oleg Shparber 6e9bd48b28 registry: Greatly simplify search logic (#265) 2016-09-15 03:10:45 -04:00
Oleg Shparber 9c11087c2e registry: Remove unused field from SearchResult 2016-09-15 03:07:37 -04:00
Oleg Shparber 6c299469de registry: Do not use search query for sorting results 2016-09-15 02:29:21 -04:00
Oleg Shparber c9d44a4660 registry: Remove 100 results limit (fixes #593) 2016-09-15 00:56:18 -04:00
Oleg Shparber 24077dbd1e ui: Cleanup MainWindow's .ui a bit 2016-09-14 22:16:22 -04:00
Oleg Shparber bbcd3c610c qmake: Do not install static libs (fixes zealdocs/zeal-packaging#17) 2016-09-14 22:03:02 -04:00
Oleg Shparber 6b9b498874 ui: Do not allow to close DocsetsDialog if removal is in progress 2016-09-14 02:30:42 -04:00
Oleg Shparber fa008f39c3 ui: Use better wording for the "operations pending" message box 2016-09-14 02:29:23 -04:00
Oleg Shparber 33a82da9d2 ui: Fix SettingsDialog window title 2016-09-14 02:25:07 -04:00
Oleg Shparber 2ef529b235 ui: Remove duplicated line in DocsetsDialog 2016-09-14 02:22:36 -04:00
Oleg Shparber 7c29eb313a ui: Clean up docset removal code a bit 2016-09-14 02:20:18 -04:00
Oleg Shparber 08abd7385c ui: Make multiple docset removal confimation plural aware 2016-09-14 02:18:46 -04:00
Oleg Shparber 25eb733db0 ui: Unify docset removal logic 2016-09-14 02:04:16 -04:00
Oleg Shparber 8d053b00d7 ui: Use multiple selection for choosing docsets to download
No more checkboxes!
2016-09-14 00:48:56 -04:00
Oleg Shparber 6f79cffb34 ui: Show installed and available docsets on different tabs 2016-09-13 21:57:35 -04:00
Oleg Shparber 1bde003f4a ui: Unify sizes of Preferences and Docsets dialogs 2016-09-13 21:55:50 -04:00
Oleg Shparber bc3ddd7776 ui: Allow to double click a docset to download 2016-09-12 23:36:27 -04:00
Oleg Shparber c835790453 ui: Fix DocsetsDialog window title 2016-09-12 23:13:14 -04:00
Oleg Shparber 6b1349cdce ui: Optimize lookups in the available docset list 2016-09-12 22:44:29 -04:00
Oleg Shparber b68790a7d3 ui: Fix handling of extraction errors in DocsetsDialog 2016-09-12 22:29:24 -04:00
Oleg Shparber c9ec84fcb3 app: Do not use ::exit() inside main() 2016-09-11 23:55:25 -04:00
Oleg Shparber c376070191 qmake: Set QMAKE_LIB only for Qt versions below 5.6.0 2016-09-11 22:18:55 -04:00
Oleg Shparber 3ebbf497d2 qmake: Fix PRE_TARGETDEPS 2016-09-11 22:05:21 -04:00
Oleg Shparber 81357c3bbf registry: Remove QDebug include 2016-09-11 21:47:13 -04:00
Oleg Shparber bcbea61fcc ui: Move docset management UI into a dedicated dialog (fixes #354) 2016-09-11 21:47:02 -04:00
Oleg Shparber 4aa20b048f qmake: Enforce relink 2016-09-11 19:24:04 -04:00
Oleg Shparber 144ecddc74 registry: Move everything into Zeal::Registry namespace
All other subprojects updated accordingly.
2016-09-11 14:41:13 -04:00
Oleg Shparber 61179da2d1 qmake: Another attempt to silence ar on Windows 2016-09-11 04:15:01 -04:00
Oleg Shparber 012c2c508d qmake: Reenable silent build 2016-09-11 04:06:36 -04:00
Oleg Shparber 29ecbbbf05 Revert "qmake: Disable ar warnings on Windows"
This reverts commit 1f26d795cc.

QMAKE_AR needs the full command, not ar arguments.
2016-09-11 04:05:13 -04:00
Oleg Shparber 1f26d795cc qmake: Disable ar warnings on Windows
This is a workaround for AppVeyor failing builds because of stderr output.
2016-09-11 02:58:56 -04:00
Oleg Shparber cb27392673 app: Reorder link dependencies 2016-09-11 02:30:03 -04:00
Oleg Shparber 1c068d42f7 qmake: Reorganize the whole project
This is an attempt to provide a better structure to the project.
All modules are now individual subprojects called libraries.
QxtGlobalShortcut was moved to the Ui library, and resources are part
of the application (app) subproject.
2016-09-11 02:14:48 -04:00
Oleg Shparber 140785099c registry: Remove forgotten shell script 2016-09-10 23:44:59 -04:00
Oleg Shparber ff2b2db8e3 qmake: Move FreeDesktop assets to a separate subproject 2016-09-10 23:43:00 -04:00
Oleg Shparber 7ce8cd92a6 ui: Fix a few Clang warnings in SettingsDialog 2016-09-10 23:40:12 -04:00
Oleg Shparber 09e051cfe3 registry: Small optimization in Docset 2016-09-10 23:19:09 -04:00
Oleg Shparber 49ef260805 resources: Optimize logo icons 2016-08-18 19:12:08 -04:00
Oleg Shparber e8a3bf9120 app, ui: Set application-wide window icon 2016-08-16 20:52:33 -04:00
Oleg Shparber feee0ec6ed qmake: Move shared options to common.pri 2016-08-16 20:17:03 -04:00
Oleg Shparber e31fa22449 ui: Cleanup web view includes in MainWindow 2016-08-14 23:14:18 -04:00
Oleg Shparber d244ca33da ui: Store manual proxy settings even when disabled 2016-08-14 22:34:02 -04:00
Oleg Shparber a657d0e70a core: Fix precision warning 2016-08-14 22:30:36 -04:00
Oleg Shparber a18790ffd4 ui: Move tabs settings into a separate tab 2016-08-14 22:22:24 -04:00
Oleg Shparber 6ff29e3da3 ui: Improve coding style a bit 2016-08-09 23:37:28 -04:00
Oleg Shparber 5c3b84725b ui: Fix crash on application quit (WebEngine only) (fixes #577) 2016-08-09 23:35:17 -04:00
Oleg Shparber ebd3ab8b57 core: Reset 'state/splitter_geometry' option for <0.3 versions
This settings options has to be reset due to removal of custom styles
for the main splitter.
2016-08-07 21:34:29 -04:00
Oleg Shparber 76e0cd48d4 core: Do not load settings version
It should be used only for migration.
2016-08-07 21:29:17 -04:00
Oleg Shparber bfdeae7733 core: Do not keep QSettings object between loading/saving settings
This allows to keep the settings clean, without any complex checking if
options are valid and supported.
2016-08-07 21:26:47 -04:00
Oleg Shparber 26cdb7b399 qmake: Add period after AppIndicator detection message 2016-08-07 17:34:17 -04:00
Oleg Shparber 4c7b3621c8 registry: Mark docset as invalid when Documents directory is missing
Fixes #573.
2016-08-03 00:16:39 -04:00
Oleg Shparber ef83da0c61 registry, ui: Use QLatin1String in conditions 2016-08-02 23:55:51 -04:00
Oleg Shparber 1a06b22f04 ui: Set QStyleOptionViewItem::HasDisplay in SearchItemDelegate
This fixes the bug with item's text not rendered, when certain styles
were in use, e.g. KDE's Breeze.

Fixes #540.
2016-08-02 23:24:26 -04:00
Oleg Shparber cb28be436c registry: Fix contact link in CancellationToken headers 2016-07-23 11:49:42 -04:00
Oleg Shparber 4b3e1df51d registry: Check for canceled search prior to sorting results
This gives a slightly noticeable performance improvement.
2016-07-20 02:10:27 -04:00
Artur Spychaj 40b8d4ac0a registry: Search docsets in parallel
Related to #264, #523.
2016-07-20 02:07:11 -04:00
Oleg Shparber cb99a89fe0 Add support for search cancellation within Docset::search()
Based on #460.
2016-07-20 01:58:33 -04:00
Artur Spychaj c8464b6928 registry: Allow to cancel current searches
When user types into the search box the previous search is canceled.
This improves the speed with which the results can be obtained.

Based on #460 plus cosmetic changes.
Related to #265, #523.
2016-07-20 01:29:03 -04:00
Oleg Shparber fd11923a3c ui: Delay loading a page until user stops typing a query
Based on work by Artur Spychaj submitted in #460.
Related #265, #523.
Closes #564.
2016-07-18 23:58:52 -04:00
Oleg Shparber 6f9339833b ui: Remove unnecessary condition when saving TOC splitter state 2016-06-19 03:52:07 -04:00
Oleg Shparber af11f38f2c ui: Do not use obsolete QMessageBox methods 2016-06-13 20:30:35 -04:00
Oleg Shparber 2c6fa61617 ui: Fix redundant QString copying 2016-06-13 20:24:19 -04:00
Oleg Shparber 58bed936e2 ui: Fix backward navigation menu 2016-06-13 05:30:19 -04:00
Oleg Shparber 9ce18bfee0 ci[shippable]: Use Ubuntu 14.04 image 2016-06-05 23:41:40 -04:00
Oleg Shparber 2d697e5202 ci: Pull Shippable image from the Docker registry 2016-06-05 23:35:19 -04:00
Oleg Shparber 129aed9b4a ci: Make Shippable use Ubuntu 12.04 based C image 2016-06-05 23:32:27 -04:00
Oleg Shparber 2f546ee93a ci: Fix indentation in .shippable.yml 2016-06-05 23:31:02 -04:00
Oleg Shparber aa42fcc3e1 ui: Update available docset list if storage changes (fixes #475) 2016-06-05 21:49:31 -04:00
Oleg Shparber 26fd6c802d ui: Use the current docset storage path in the directory chooser 2016-06-05 21:30:51 -04:00
Oleg Shparber 134e62214d ui: Fix building with Qt 5.2 one more time 2016-06-05 21:19:43 -04:00
Oleg Shparber 7ddee54aad ui: Fix building with Qt 5.2 2016-06-05 20:52:47 -04:00
Oleg Shparber 5534c662b6 ui: Remove the View menu 2016-06-05 19:46:35 -04:00
Oleg Shparber d21402cd76 ui: Remove MainWindow::displayViewActions() 2016-06-05 19:44:55 -04:00
Oleg Shparber eb77035dea ui: Rename view synchronization methods in MainWindow 2016-06-05 19:44:08 -04:00
Oleg Shparber 0f0cec1f8e ui: Remove history items from the View menu
This changes makes the back and forward menus to be rebuilt on the fly,
only when requested. Also fixes the order of items in the backward menu.
2016-06-05 19:34:42 -04:00
Oleg Shparber d8b90efc2e ui: Disable back and forward actions by default 2016-06-05 17:32:07 -04:00
Oleg Shparber 7778f5187b ui: Set icons for back and forward actions 2016-06-05 17:26:00 -04:00
Oleg Shparber a26e12c456 ui: Slightly refactor the tab duplication code 2016-06-05 17:21:29 -04:00
Oleg Shparber cea52c6a21 ui: Fix missing search results in duplicated tabs 2016-06-05 16:50:33 -04:00
Oleg Shparber baac06f75c registry: Add a copy constructor to SearchModel 2016-06-05 16:49:41 -04:00
Oleg Shparber 8c7c1001c0 ui: Do not show menu indicators for back/forward buttons 2016-06-05 13:44:34 -04:00
Oleg Shparber f25d7e6077 3rdparty,ui: Remove semicolons after Q_UNUSED 2016-06-05 13:42:55 -04:00
Oleg Shparber 218c3db16c core: Do not define global shortcut by default (fixes #418) 2016-06-05 12:22:05 -04:00
Oleg Shparber 8f7de119e9 app: Improve no SQLite error message box 2016-06-05 11:55:22 -04:00
Vlad 831720529d ui: Implement tab duplication (fixes #524) (#538) 2016-06-05 11:52:10 -04:00
Oleg Shparber 1678282e63 app: Handle LocalServer errors (fixes #535) 2016-06-04 23:35:19 -04:00
Oleg Shparber 222b364678 core: Implement LocalServer::errorMessage() 2016-06-04 23:35:19 -04:00
Oleg Shparber a32f7d9209 app,core: Move the local server code into a dedicated class
Core::LocalServer is now responsible for communications between running
instances.
2016-06-04 23:35:19 -04:00
Oleg Shparber b7dce47fad app,core: Use IPC for startup query too
This simplifies the code related to the starting the app with a query.
2016-06-04 23:35:09 -04:00
Oleg Shparber cb35be1dcd core: Improve documentation comments in Application 2016-05-14 14:01:52 -04:00
Oleg Shparber b6aa27bc92 core: Application::docsetRegistry() doesn't need to be static 2016-05-14 13:43:37 -04:00
Oleg Shparber d63f5109ca registry: Remove duplicate keywords during docset loading 2016-05-11 23:58:27 -04:00
Oleg Shparber 0f5400db41 core: Fix leaking QLocalSocket 2016-05-11 23:41:46 -04:00
Oleg Shparber 82beb88b1b core: Start local server as soon as possible (#535) 2016-05-11 23:41:46 -04:00
Oleg Shparber e1bcb21c35 Merge pull request #539 from innermous/new-tab-enhancement
Implemented opening new tab after current one
2016-05-07 23:34:30 -04:00
Vladislav Tronko 2610f0ff3b core, ui: Add option for new tabs to be open next to current one 2016-05-05 22:36:58 +03:00
Oleg Shparber 4cec3c5c75 doc: Use HTTPS for gnu.org link 2016-05-01 22:13:18 -04:00
Oleg Shparber b6220c894f ui: Add API for creating tabs at any position 2016-05-01 21:43:41 -04:00
Oleg Shparber e003a1444d ui: Include page title in the window title (#343) 2016-05-01 21:40:04 -04:00
Oleg Shparber 9aa056770e res: Remove 'Zeal' from the stat page's title 2016-05-01 21:38:27 -04:00
Oleg Shparber de9cb0915f ui: Fix missing tab titles 2016-05-01 21:34:12 -04:00
Oleg Shparber ab0a007d60 ui: Retrieve current tab state dynamically
This is a step having real tabs in a tab widgets, instead of
the current surrogate approach.
2016-05-01 13:24:19 -04:00
Oleg Shparber f5b998de28 ui: Do not save current search term twice 2016-05-01 13:02:13 -04:00
Oleg Shparber 57814cd034 ui: Remove single-use MainWindow::selectTab() 2016-05-01 12:45:40 -04:00
Oleg Shparber 9b1287181b ui: Encapsulate WebKit/WebEngine API differences in TabState 2016-05-01 12:31:56 -04:00
Oleg Shparber 2ffd829142 ui: Fix leaked QWeb(Engine)Page for each closed tab 2016-05-01 12:23:44 -04:00
Oleg Shparber ecb5e3d40d ui: Avoid redundant rebuild of the View menu 2016-04-21 02:03:43 -04:00
Oleg Shparber 9a247bc9ef ui: Set initial values in tab states 2016-04-21 01:46:34 -04:00
Oleg Shparber 5f644d86b2 ui: Create search models within TabState 2016-04-21 01:45:41 -04:00
Oleg Shparber c11a5452e4 ui: Move TabState inside MainWindow implementation 2016-04-20 23:39:30 -04:00
Oleg Shparber 3a178eaba1 ui: Do not set Qt::ApplicationShortcut for Ctrl+K 2016-04-19 22:48:48 -04:00
Oleg Shparber a2f83366c5 doc: Use go.zealdocs.org for the contact link 2016-04-17 03:07:48 -04:00
Oleg Shparber e0381f47c1 ui: Switch to HTTPS for go.zealdocs.org 2016-04-17 02:41:17 -04:00
Oleg Shparber 334e897195 ui: Use Ctrl+Q only if QKeySequence::Quit is empty 2016-04-16 23:26:06 -04:00
Oleg Shparber 8b745598e9 ui: Fix coding style in SettingsDialog 2016-04-16 23:14:03 -04:00
Oleg Shparber 04e4ee3748 app, ui: Unify and improve message boxes 2016-04-16 23:13:08 -04:00
Oleg Shparber 2d96d6e842 core: Add Core::Application::instance() method 2016-04-16 22:32:14 -04:00
Oleg Shparber a0b457adaf ui: Cleanup headers 2016-04-15 01:13:07 -04:00
Oleg Shparber fefa9f8af2 resources: Add Pattern type icon 2016-04-15 00:59:55 -04:00
Oleg Shparber ac2225b48b Merge pull request #528 from drognanar/fixrename
ui: Fix rename tocView to tocListView
2016-04-14 01:01:25 -04:00
Artur Spychaj e7062cd2d9 ui: Fix rename tocView to tocListView 2016-04-13 21:32:25 -07:00
Oleg Shparber fcefbf222b ui: Set FreeDesktop icons for menu actions 2016-04-13 00:14:32 -04:00
Oleg Shparber 5bca1fcf7c ui: Fix double separator in the File menu 2016-04-12 23:18:15 -04:00
Oleg Shparber 5c17e4b560 ui: Add Edit->Find menu item 2016-04-12 23:12:04 -04:00
Oleg Shparber 3ddb171bf3 ui: Expose SearchableWebView's search bar toggling methods 2016-04-12 23:08:25 -04:00
Oleg Shparber 9f2c4b7650 ui: Move File->Options to Edit->Preferences 2016-04-12 22:53:24 -04:00
Oleg Shparber c71db8aa1a Do not use Doxygen style for TODO comments 2016-04-12 22:49:29 -04:00
Oleg Shparber 54fe8a4e93 core: Fix minimum font size setting not set on app start (fixes #526) 2016-04-12 02:22:05 -04:00
Oleg Shparber fb55e40672 core, ui: Replace QWebEngine related defines with typedefs 2016-04-08 23:16:51 -04:00
Oleg Shparber a2b8671b4f ui: Remove unnecessary forward declaration 2016-04-08 23:13:49 -04:00
Oleg Shparber 6876c2cda4 registry: Optimize SearchModel::isEmpty() 2016-04-08 22:57:28 -04:00
Oleg Shparber 11b44d34e9 ui: Create SettingsDialog on demand 2016-04-08 22:53:14 -04:00
Oleg Shparber 9c6d1d4145 app: Minor cleanup 2016-04-08 22:48:41 -04:00
Oleg Shparber e1e8f1d05c app, core: Move interinstance communication to Application 2016-04-08 22:48:15 -04:00
Oleg Shparber 8579fed578 core, ui: Fix saving and restoring of the TOC splitter state 2016-04-07 22:43:11 -04:00
Oleg Shparber 37427c078a registry: Implement SearchModel::isEmpty() method 2016-04-07 22:40:55 -04:00
Oleg Shparber 8752e8076a ui: Fix TOC splitter handle not hiding 2016-04-07 22:14:39 -04:00
Oleg Shparber eb24d25519 ui: More s/sections/toc in MainWindow 2016-04-07 00:48:09 -04:00
Oleg Shparber 101691cfcd ui: Remove debug output in MainWindow 2016-04-07 00:43:07 -04:00
Oleg Shparber 79c27e0c7a ui: Remove timeout before restoring scrollbars' positions 2016-04-07 00:36:18 -04:00
Oleg Shparber 116b547293 ui: Fix splitter and window geometry not saved on app quit 2016-04-07 00:19:32 -04:00
Oleg Shparber fdc2696422 ui: Remove redundant save/reloadTabState calls in MainWindow 2016-04-06 00:44:05 -04:00
Oleg Shparber 1f76b949dc ui: Reorder MainWindow methods 2016-04-06 00:20:49 -04:00
Oleg Shparber c233171c6d ui: Refactor MainWindow::TabState 2016-04-06 00:13:23 -04:00
Oleg Shparber dcfb747ffc ui: Fix tab titles 2016-04-06 00:12:50 -04:00
Oleg Shparber ec1a294a9c ui: s/SearchState/TabState in MainWindow 2016-04-06 00:00:40 -04:00
Oleg Shparber 8eb4407d80 ui: Remove the Tabs menu, fix tab selection shortcuts
Alt/Ctrl+9 now selects the last tab in the tab bar. This is consistent
with major web browsers.
2016-04-05 23:41:54 -04:00
Oleg Shparber 9288181c73 ui: Remove Next and Previous Tab items from the Tabs menu 2016-04-05 23:07:34 -04:00
Oleg Shparber 203bc30a94 ui: s/goToTab/selectTab in MainWindow 2016-04-05 22:59:10 -04:00
Oleg Shparber f3180f1f9d ui: Move New Tab and Close Tab actions to the File menu 2016-04-05 22:58:49 -04:00
Oleg Shparber 6a26db31dc ui: Fix copyright year in mainwindow.cpp 2016-04-05 22:18:05 -04:00
Oleg Shparber 055757f5bf registry: Improve forward declarations 2016-04-05 00:55:45 -04:00
Oleg Shparber 6676d916cb registry: Do not store search results in DocsetRegistry 2016-04-05 00:54:51 -04:00
Oleg Shparber 5452bc4b14 registry: Cleanup DocsetMetadata header 2016-04-05 00:25:24 -04:00
Oleg Shparber 9787b420fe qmake: Use CONFIG+=zeal_portable for portable builds 2016-04-05 00:12:20 -04:00
Oleg Shparber 9b9979fcab qmake: Improve browser engine selection
New CONFIG options: zeal_qtwebengine and zeal_qtwebkit.
2016-04-05 00:10:47 -04:00
Oleg Shparber b1d419d5a9 ui: Cleanup web view focusing logic 2016-04-04 00:27:12 -04:00
Oleg Shparber a4c17e159d ui: Add theme icons and tooltips for back and forward buttons 2016-03-31 19:13:41 -04:00
Oleg Shparber f3b2f164b2 ui: Small cleanup in MainWindow 2016-03-31 19:12:49 -04:00
Oleg Shparber 90bd8f9a66 ui: Add a comment for the QWebPageEngine focus fix 2016-03-31 09:05:09 -04:00
Oleg Shparber 6601d7e191 Merge pull request #507 from sonald/fix/search-focus
ui: Prevent QWebEnginePage from stealing focus from the search input
2016-03-31 08:48:35 -04:00
Sian Cao b26d655a7a ui: Prevent QWebEnginePage from stealing focus from the search input 2016-03-31 13:35:56 +08:00
Oleg Shparber 732ff9dc85 Better indication if AppIndicator support is enabled 2016-03-28 00:12:51 -04:00
Oleg Shparber 1b4b360af1 ui: Remove 'See also' label 2016-03-28 00:12:14 -04:00
Oleg Shparber 1200f0da4a ui: Add support for Page Up/Down when search text edit is focused 2016-03-27 18:32:04 -04:00
Oleg Shparber d3bd271ba1 ui: Fix up/down navigation when search text edit is focused 2016-03-27 18:29:47 -04:00
Oleg Shparber b110955c48 ui: Update About dialog (#495) 2016-03-27 18:21:56 -04:00
Oleg Shparber 5fe6480bd7 core: Fix character corruption in docset extraction (fixes #508)
The problem is caused by lack of UTF-8 support in libarchive, and
affects non-Latin Windows (e.g. Chinese).

This change is rather a workaround, than a fix.
2016-03-27 10:37:48 -04:00
Oleg Shparber 7cd72764eb 3rdparty: Fix segfault in QxtGlobalShortcut (#500) 2016-03-26 20:50:17 -04:00
Oleg Shparber a2df7f33b4 ui: Ignore wheel events in the tab bar
This fixes annoying behaviour with touchpads.
Reference: QTBUG-8428.
2016-03-26 20:36:50 -04:00
Oleg Shparber 3b3dc2db18 registry: Remove pointless QLatin1String 2016-03-26 20:21:07 -04:00
Oleg Shparber ed7ce6088c ui: Cleanup DocsetListItemDelegate 2016-03-26 20:13:58 -04:00
Oleg Shparber 800648e38e ui: Clarify SearchItemDelegate::helpEvent() logic 2016-03-26 20:09:18 -04:00
Oleg Shparber 932644bebc ui: Fix tool tips in the contents tree view 2016-03-26 20:08:27 -04:00
Oleg Shparber 4f87b7236c qmake: Print info whether building is portable mode 2016-03-24 06:39:50 -04:00
Oleg Shparber fcbf2ff078 ui: Fix coding style in SettingsDialog 2016-03-24 05:36:37 -04:00
Oleg Shparber 3ff3cf5923 3rdparty: Minor refactoring in QxtGlobalShortcut 2016-03-24 05:36:15 -04:00
Oleg Shparber 23aac1aeb4 ui: Allow accessing online resources in web view (fixes #474)
This removes a custom network manager that was blocking all requests to
non-local resources.
2016-03-24 05:34:45 -04:00
Oleg Shparber 8d0b4e5b06 doc: Update copyright year 2016-03-24 05:29:35 -04:00
Oleg Shparber 5abf792055 ui: Remove unsused forward declaration 2016-03-23 22:39:29 -04:00
Oleg Shparber 23cbd37535 ui: Fix nonworking QKeySequence::PreviousChild (fixes #518)
Workarounding QTBUG-15746 with an explicit shortcut.
2016-03-23 00:10:41 -04:00
Oleg Shparber 99af6ea79f Use Qt WebEngine by default with Qt 5.6+
Qt 5.6 does not ship Qt WebKit module any longer.
2016-03-21 00:46:21 -04:00
Oleg Shparber 4599f2ed61 resources: Strip entity type icons 2016-03-18 22:28:43 -04:00
Oleg Shparber c317bb22a2 resources: Update Parameter entity type icon 2016-03-18 22:21:56 -04:00
Oleg Shparber 4c19ec02a2 resources: Add new entity type icons 2016-03-18 22:20:59 -04:00
Oleg Shparber 727440f950 ci: Update .shippable.yml to the new format
http://blog.shippable.com/migrating-to-the-new-build-platform
2016-03-17 09:18:53 -04:00
Oleg Shparber 12fa4b486d registry: Fix data role collision in ListModel
Fixes a regression introduced in 6cd537d2 where ListModel::DocsetNameRole
value was changed to the same as ProgressItemDelegate::ValueRole.

Fixes #512.
2016-03-16 00:16:05 -04:00
Oleg Shparber 6cd537d21c Merge branch 'feature/searchitemdelegate-multiple-icons' 2016-03-14 01:08:58 -04:00
Oleg Shparber d7a44b5580 ui: Set disable collapsing for the main splitter 2016-03-14 01:02:55 -04:00
Oleg Shparber 13f0afadf1 ui: Fix SearchItemDelegate's tooltip trigger logic 2016-03-14 01:02:55 -04:00
Oleg Shparber 559ee92469 ui: Fix SearchItemDelegate when it has no decoration roles 2016-03-14 01:02:55 -04:00
Oleg Shparber 7e02eafc1e ui: Enable uniformRowHeights/uniformItemSizes for sidebar lists 2016-03-14 01:02:55 -04:00
Oleg Shparber 2f1d09cf23 ui: Optimize SearchItemDelegate::paint() a bit 2016-03-14 01:02:55 -04:00
Oleg Shparber ddadee8597 ui: Minor refactoring in SearchItemDelegate 2016-03-14 01:02:47 -04:00
Oleg Shparber 1236d3b5fa ui: Support multiple icons in SearchItemDelegate
This enables display of docset and symbol type icons
at the same time. Related to #343.
2016-03-14 00:53:44 -04:00
Oleg Shparber fad8f943f7 registry: Return 'unknown' icon for unknown symbol types 2016-03-11 21:01:25 -05:00
Oleg Shparber 4629a47d52 ui: Do not override indentation for the tree view 2016-03-10 23:18:48 -05:00
Oleg Shparber a6caf1cf78 registry, ui, util: A minor cleanup 2016-03-04 22:45:10 -05:00
Oleg Shparber 21c891e435 ui: Do not share ListModel between MainWindow and SettingsDialog 2016-03-01 21:56:20 -05:00
Oleg Shparber d9cbc512b1 ui: Show tooltips for elided items in the section list 2016-02-28 11:30:17 -05:00
Oleg Shparber 3fc57a309f ui: Minor refactoring in SearchItemDelegate
Based on suggestions made by Artur Spychaj.
2016-02-28 10:59:18 -05:00
Oleg Shparber ad92367761 Merge branch 'feature/searchitemdelegate' 2016-02-26 01:14:50 -05:00
Oleg Shparber 6c2401da61 ui: Redo SearchItemDelegate highlighting 2016-02-26 01:03:25 -05:00
Oleg Shparber 89656ded2d ui: Display a tooltip for SearchItemDelegate with elided text 2016-02-26 01:03:25 -05:00
Oleg Shparber 97eec7afbf ui: Remove SearchItemStyle 2016-02-26 01:03:25 -05:00
Oleg Shparber 4c4fa35f45 Merge branch 'feature/no-qss' 2016-02-26 01:02:58 -05:00
Oleg Shparber 8bc7c9b84e ui: Cleanup mainwindow.ui 2016-02-26 00:52:48 -05:00
Oleg Shparber 9a91910268 ui: Replace styled QFrame with a simple toolbar widget 2016-02-26 00:50:57 -05:00
Oleg Shparber 1b93b79061 ui: Do not apply styling to splitters 2016-02-24 23:49:16 -05:00
Oleg Shparber d2acc9cddb registry: Small cleanup 2016-02-24 23:35:17 -05:00
Oleg Shparber ef37e8948f registry: Partially revert 3bf30183bc
Fix the regression. Docset type detection cannot be delayed, because the
loading process is slightly different for two supported docset formats.

Fixes #502.
2016-02-23 23:28:19 -05:00
Oleg Shparber f24039251c Merge branch 'bugfix/incomplete-docset'
Fixes #489 and #497.
Closes #501.
2016-02-23 01:23:14 -05:00
Artur Spychaj 3bf30183bc registry: Initialize Docset type at end of constructor
This ensures that docset is valid if basic folder/file structure is
present.
2016-02-23 01:19:34 -05:00
Artur Spychaj 1f6faf8646 ui: Fix segfault for incomplete docsets 2016-02-22 23:10:18 -05:00
Oleg Shparber 3d0cf8b819 app: Remove unnessecary include 2016-02-21 14:53:00 -05:00
Oleg Shparber bca48bb137 ui: Disable context help button in the settings dialog
Fixes #499.
2016-02-21 14:48:43 -05:00
Oleg Shparber 78636fe034 app: Do not allow Qt version downgrade in run time
Always require at least the one the app was build against.
2016-02-20 13:06:21 -05:00
Oleg Shparber 4a1f6036b2 ui: Do not check for the pre-0.1 docset location 2016-02-20 02:21:44 -05:00
Oleg Shparber ce551a0b95 core: Fix forward declaration order in application.h 2016-02-20 02:02:33 -05:00
Oleg Shparber fcfb9799a3 core: Fix startMinimized && minimizeToSystray situation
Don't show the main window if both options are set.
2016-02-20 00:51:44 -05:00
Oleg Shparber 384dbe7212 core: Always show the main window on app start if query is present 2016-02-20 00:50:00 -05:00
Oleg Shparber a96c79bd9b ui: Use AppIndicator with Cinnamon 2.8 (fixes #487) 2016-02-19 03:09:49 -05:00
Oleg Shparber fe008a2859 ui: Use qgetenv() to read XDG_CURRENT_DESKTOP (fixes #496) 2016-02-19 02:50:05 -05:00
Oleg Shparber e0695bafd6 ui: s/Report Problem/Submit Feedback (fixes #494) 2016-02-15 10:21:21 -05:00
Oleg Shparber 8c979c5325 ui: Enable clear button in the available docset filter 2016-02-15 10:17:51 -05:00
Oleg Shparber 3227974829 ui: Do not disable available docset list during download (fixes #480) 2016-02-15 10:15:02 -05:00
Oleg Shparber 98282d5808 ui: Disable context help button in the about dialog (fixes #493) 2016-02-15 01:00:10 -05:00
Oleg Shparber d267e07da2 ui: Fix wording for the update checker (fixes #492) 2016-02-15 00:52:05 -05:00
Oleg Shparber d73df43f93 Merge branch 'feature/strict-qstring' 2016-02-15 00:46:27 -05:00
Oleg Shparber 0136f9c9e4 core, ui: Disable implicit conversion from QString to QUrl
Define QT_NO_URL_CAST_FROM_STRING.
2016-02-14 10:48:45 -05:00
Oleg Shparber 3b22972a78 core: Enable QStringBuilder
Define QT_USE_QSTRINGBUILDER.
2016-02-14 10:47:40 -05:00
Oleg Shparber 75392823b2 core: Restrict QString conversion from ASCII, and disable to ASCII
Define QT_RESTRICTED_CAST_FROM_ASCII & QT_NO_CAST_TO_ASCII.
2016-02-14 10:21:30 -05:00
Oleg Shparber b6356a33fa ui: Keep cache location next to binary in the portable build (#486) 2016-02-04 01:05:02 -05:00
Oleg Shparber 601da85cd8 ui: Select rows instead if items in the index tree view
This fixes non-native looking tree view selection on Windows.
2016-01-27 23:28:00 -05:00
Oleg Shparber d37dbae1d4 ui: Remove old workaround for QWindowsVistaStyle 2016-01-27 00:52:29 -05:00
Oleg Shparber 020355bd99 Merge pull request #443 from Serge45/fix-issue-436
Fix issue #436
2016-01-24 22:58:06 -05:00
Serge45 d25283dd42 registry, ui: Fix crash on docset removal (fixes #436). 2016-01-24 20:06:32 +08:00
Oleg Shparber b842774d5b Merge pull request #479 from drognanar/issue478
ui: Update completions on docset add (fixes #478)
2016-01-20 06:49:15 -05:00
Artur Spychaj da5186ac80 ui: Update completions on docset add (fixes #478)
Update completions in search box whenever a docset is installed or
removed.
2016-01-19 22:38:24 -08:00
Oleg Shparber 2e8ce09703 Merge pull request #456 from brunoro/docset-filter
Adds an input bar for filtering available docsets
2016-01-19 19:29:27 -05:00
Gustavo Brunoro 92f9538be3 ui: Implement filtering of available docsets in Settings 2016-01-19 13:59:13 +01:00
Oleg Shparber 1a58d5eeb1 Merge pull request #473 from drognanar/mainwindow 2016-01-18 18:47:43 -05:00
Artur Spychaj 522e5148c9 ui: Make section list resizable 2016-01-18 10:40:26 -08:00
Artur Spychaj 851fccb65c ui: Refactor MainWindow
This commit moves logic responsible for UI updates into functions. This
removes code duplication and fixes bug when search completes after ESC.
2016-01-18 10:40:26 -08:00
Oleg Shparber 32af98c00e ui: Optimize SettingsDialog::findDocsetListItem()
Since only the first item is needed, there's no need to search through
all items.
2016-01-18 11:27:41 -05:00
Oleg Shparber 4debbe5a58 Merge branch 'feature/prevent_activation' 2016-01-18 03:12:55 -05:00
Oleg Shparber 17398dbc21 core, ui: Respect prevent_activation dash-plugin parameter (fixes #448) 2016-01-18 02:25:02 -05:00
Oleg Shparber 8f157435ab core: Respect startMinimized setting 2016-01-18 02:09:50 -05:00
Oleg Shparber 740d06fe36 Merge pull request #444 from joaomsa/fix-index-creation
Index creation query failed for ZDash docsets
2016-01-15 19:56:23 -05:00
Oleg Shparber f143417a88 ui: Do not create excessive quit QAction 2016-01-15 19:50:16 -05:00
Joao Sa 7a8f15ca04 registry: Fix index creation for ZDash docsets 2016-01-15 13:34:30 -02:00
Oleg Shparber 5465816685 Merge pull request #458 from jkozera/new-screenshot
doc: New screenshot for README.md
2016-01-11 20:17:55 -05:00
Jerzy Kozera 18d75b3003 doc: New screenshot for README.md 2016-01-05 00:50:02 +01:00
Oleg Shparber e90fdd1cf2 ui: Remove C-style cast 2015-12-03 21:38:52 -05:00
Oleg Shparber e08969cd7a registry: Cleanup SearchModel 2015-11-28 22:50:28 -05:00
Oleg Shparber 57185b4d7d registry: Docset doesn't need to inherit QObject 2015-11-28 22:10:15 -05:00
Oleg Shparber a17a0bb4ac ui: Remove build date and time information in the About dialog
Also, fixes inability to create reproducible builds.
2015-11-26 03:48:37 -05:00
Oleg Shparber 77ab13ea07 util: Cleanup unused code in Version 2015-11-22 23:09:22 -05:00
Oleg Shparber 4e8717f8eb core: Drop support for --query CLI parameter 2015-11-22 22:05:15 -05:00
Oleg Shparber 6c533e924a doc: Fix links for Shippable badges 2015-11-19 01:24:04 -05:00
Oleg Shparber 47f5755828 core: Avoid QString to QByteArray conversion on every download request 2015-11-19 01:06:58 -05:00
Oleg Shparber 328e45916e core: Use Q_ENUM() macro for Qt 5.5+ 2015-11-19 01:05:46 -05:00
Oleg Shparber c6d4bab8bc Merge tag 'v0.2.1'
Zeal 0.2.1
2015-11-19 00:48:35 -05:00
Oleg Shparber 45bb34fe23 Merge branch 'hotfix/0.2.1' into stable 2015-11-19 00:47:59 -05:00
Oleg Shparber 5fb2e902e9 Bump version to 0.2.1 2015-11-19 00:47:15 -05:00
Oleg Shparber 6076841df4 registry: Do not add empty docset keyword to the list
Caused by using QHash::operator[] without checking for key presence.
2015-11-19 00:43:33 -05:00
Oleg Shparber 68d74e9922 ui: Fix docset prefix autocompletion 2015-11-19 00:37:16 -05:00
Oleg Shparber ba2270a74b core: Always send user agent header (fixes #426)
Apparently some proxies and mobile carriers require the user agent
header to be present.
2015-11-18 23:03:23 -05:00
Oleg Shparber e7a9736277 core: Do not save back old configuration file version information 2015-11-18 22:23:26 -05:00
Oleg Shparber e1e4ddc90f core: Fix proxy type setting not loaded (fixes #427) 2015-11-18 22:21:33 -05:00
Oleg Shparber 4f5a34936e doc: Add release version badge to README 2015-11-11 23:33:43 -05:00
Oleg Shparber 5431550a82 Merge tag 'v0.2.0'
Zeal 0.2.0
2015-11-08 13:44:45 -05:00
Oleg Shparber fcf0cefbc8 Merge branch 'release/0.2.0' into stable 2015-11-08 13:40:02 -05:00
Oleg Shparber 1963221874 Bump version to 0.2.0 2015-11-08 13:32:35 -05:00
Oleg Shparber ed2df01319 Update TODO comment 2015-11-08 13:32:05 -05:00
Oleg Shparber e182e596ad registry: Fix crash on docset removal (fixes #420)
According to the bug report sometimes ListModel::removeDocset() is called
for docsets not in the model. This change adds a simple check, but
does not address the real unknown issue.
2015-11-07 01:11:43 -05:00
Oleg Shparber 58e2080ad9 Merge branch 'feature/old-master-changes' 2015-11-03 01:14:13 -05:00
Oleg Shparber 90695fc055 Revert accidentally commited change 2015-11-03 01:08:46 -05:00
Oleg Shparber f5c7f1844f Remove useless addAction() call 2015-11-03 01:08:17 -05:00
Oleg Shparber 5c6ff51bf2 Do not save window geometry twice 2015-11-03 01:07:45 -05:00
Oleg Shparber c30a766fa3 Initialise DocsetRegistry in Core::Application 2015-11-03 01:07:29 -05:00
Oleg Shparber 40fd601d79 Fix potential crash in SearchEdit 2015-11-03 01:06:53 -05:00
Oleg Shparber da365345a1 Make Docset::database() private 2015-11-03 00:57:00 -05:00
Oleg Shparber 01d4b7d530 Remove unused Docset class method 2015-11-03 00:56:30 -05:00
Oleg Shparber cdd1711a43 Add licensing information in README.md 2015-11-03 00:55:31 -05:00
Oleg Shparber f6bafbcdcc Update README with a list of different contact methods 2015-11-03 00:54:25 -05:00
Oleg Shparber 699c83560e doc: Update CI build status with the new branching model 2015-10-29 16:13:50 -04:00
Oleg Shparber 5094b12560 Another Qt 5.2 build fix 2015-10-18 23:10:25 -04:00
Oleg Shparber 1267d92b5d Fix building with Qt 5.2
QJsonObject didn't have std::initializer_list constructor.
2015-10-18 23:08:41 -04:00
Oleg Shparber d0edc02b0b Use X-Zeal-User-Agent header for client information in JSON format 2015-10-18 22:40:23 -04:00
Oleg Shparber fa80ec9524 Fix missing keywords when parsing dash-plugin URI (fixes #411) 2015-10-11 13:02:00 -04:00
Oleg Shparber b07f0cab75 Docset: Create index, order search results by name (case insensitive)
Fixes: #407
Related: #265
2015-09-26 03:05:18 -04:00
Oleg Shparber 02f2bb7600 SearchEdit: Add missing QStringLiterals 2015-09-26 00:15:50 -04:00
Oleg Shparber 98f764201d Support Ctrl/Shift+click or middle click for opening links in new tabs
Fixes #403. No 'open in background' support for now.
2015-09-19 00:07:00 -04:00
Oleg Shparber 65600e7cd9 SearchEdit: Do not hard-code clearButtonEnabled value 2015-09-11 01:12:11 -04:00
Oleg Shparber d3a2d9a030 Clean up and optimise SearchEdit and SearchQuery 2015-09-11 01:11:44 -04:00
Oleg Shparber 1118586455 Keep default behaviour when search bar focused with a mouse click 2015-09-10 23:24:40 -04:00
Oleg Shparber 9aec2b33c4 Select previous selected tab when current tab closes 2015-09-10 21:44:28 -04:00
Oleg Shparber 86d797552a Fix tab closing with keyboard shortcut (fixes #402) 2015-09-10 21:43:29 -04:00
Oleg Shparber b0d48ea140 SettingsDialog: Fix download progress not hiding on cancel
Regression introduced in f3cedc31af.
2015-09-10 00:20:17 -04:00
Oleg Shparber 801daa0c57 Use HTTPS across the project where possible 2015-09-09 01:37:56 -04:00
Oleg Shparber a27905b504 SettingsDialog: Do not keep downloads fully in RAM
Zeal kept all download progress in RAM, and could easily run into OOM
with large docsets. This is embarrassing.
2015-09-08 22:49:32 -04:00
Oleg Shparber f3cedc31af SettingsDialog: Properly abort downloads not form the docset list
cancelDownloads() must cancel all downloads, not only docset archives.
2015-09-08 22:45:03 -04:00
Oleg Shparber e30a151003 SettingsDialog: Do not cast integer to enum type 2015-09-08 22:39:06 -04:00
Oleg Shparber cb144a1e88 Core::Settings: Q_DECLARE_METATYPE(ProxyType)
Allows to use QVariant::value<ProxyType>().
2015-09-08 22:29:12 -04:00
Oleg Shparber 6f03ff6ee2 SettingsDialog: Do not try to read from cancelled QNetwordReply
Fixes warning from QIODevice.
2015-09-08 22:27:42 -04:00
Oleg Shparber 6a5af20064 Core::Extractor: Do not use C99 struct initialisation
It's not a valid C++ syntax.
2015-09-08 21:40:42 -04:00
Oleg Shparber 7846fb502e Add startup check for Qt SQLite driver (related to #388, #397)
This allows to avoid silent crashes when Zeal tries to open database
files, and SQLite driver is missing.
2015-09-08 02:27:14 -04:00
Oleg Shparber dedb10a92a Settings: Use constants for group names 2015-08-31 02:46:45 -04:00
Oleg Shparber a640826fb8 Introduce versioning for configuration file format 2015-08-31 02:19:18 -04:00
Oleg Shparber 587a717464 Add copyright headers to QxtGlobalShortcut files
Also includes a minor cleanup.
2015-08-31 02:11:38 -04:00
Oleg Shparber 36754a3137 Implement UUID-based install tracking 2015-08-31 00:34:59 -04:00
Oleg Shparber 52125e1235 Send custom User-Agent header only to *.zealdocs.org servers 2015-08-31 00:07:43 -04:00
Oleg Shparber 7aaf682d39 Activate 'silent' qmake option 2015-08-30 23:48:03 -04:00
Oleg Shparber 8064a9f7b0 Add copyright headers in all source files 2015-08-30 23:46:15 -04:00
Oleg Shparber b0666927b7 Add copyright headers for files created in 2015 2015-08-30 23:41:27 -04:00
Oleg Shparber 104754a6e9 Use shields.io for Shippable badges 2015-08-10 01:41:26 -04:00
Oleg Shparber 3c1c2bf8d3 Fix crash in SearchEdit caused by keyboard navigation 2015-08-09 03:00:34 -04:00
Oleg Shparber f923a0d02c Minor refactoring in SearchEdit 2015-08-09 02:35:21 -04:00
Oleg Shparber 09fe283399 Mention all required Qt modules in README (fixes #61 and #382) 2015-08-03 00:48:31 -04:00
Oleg Shparber 3e2beaa368 Add forgotten Util::Plist source files 2015-08-03 00:16:17 -04:00
Oleg Shparber 80f0806d3c Implement Dash-like search prefix (keyword) handling (fixes #383) 2015-08-03 00:11:41 -04:00
Oleg Shparber 9ca1b82ada Add TODO comment regarding 'Info.plist' name 2015-08-03 00:10:23 -04:00
Oleg Shparber 8ee73855ec Replace Registry::DocsetInfo with a new Plist reader 2015-08-03 00:00:25 -04:00
Oleg Shparber f7f4c935cc Shippable: Remove build_image and cache directives
Now these options are set through the web interface.
2015-07-30 00:03:12 -04:00
Oleg Shparber 79fe23b8ba Add QDataStream include (fixes #376)
Fixes Qt 5.5 build.
2015-07-19 23:37:12 -04:00
Oleg Shparber 8a8544f7e0 Return docset icon for DecorationRole in SearchModel
This is a temporary workaround to show docset icon when search prefix
is set, but no search term (SearchItemDelegate is not used).
2015-06-19 09:42:51 -07:00
Oleg Shparber bb67a7b335 Disable tree view root decoration in search state 2015-06-16 23:23:42 -07:00
Oleg Shparber 6a6a35842c Fix some major problems with tab management
Now view or search states are properly preserved between tab switches.
2015-06-16 23:19:09 -07:00
Oleg Shparber 4ddfbb169d Remove useless QTreeView::setColumnHidden() calls 2015-06-16 20:43:27 -07:00
Oleg Shparber b120802368 Set parameter default value for SearchModel::rowCount() 2015-06-16 20:41:36 -07:00
Oleg Shparber d0f4dc4f96 Avoid empty anchors for search results in ZDash docsets 2015-06-15 18:01:47 -07:00
Oleg Shparber b76f0ddd0f Fetch symbol types for search results 2015-06-15 17:41:03 -07:00
Oleg Shparber e96bb2e895 Do not show TOC for one item 2015-06-14 18:05:08 -07:00
Oleg Shparber 1f5134416c Do not show page itself in TOC for ZDash docsets 2015-06-14 18:00:21 -07:00
Oleg Shparber 3f7f537999 Strip PNGs 2015-06-13 23:59:06 -07:00
Oleg Shparber 26439aafd8 Add Special Form and Syntax type icons 2015-06-13 23:49:48 -07:00
Oleg Shparber 9059ff527a Implement tab closing on middle click (fixes #267) 2015-06-13 23:25:31 -07:00
Oleg Shparber b09f72aac0 Fix closing of non-active tabs
Before the active tab was closed regardless of which tab user tried
to close.
2015-06-13 23:16:38 -07:00
Oleg Shparber df794204d5 Minor refactoring in MainWindow 2015-06-13 23:02:53 -07:00
Oleg Shparber 6c1a3c29e2 Fix enabling of update and remove buttons in SettingsDialog 2015-06-12 03:57:22 -07:00
Oleg Shparber 36de4febed Fix enabling of Update All button in SettingsDialog
Now it checks whether updates are really available.
2015-06-12 03:49:27 -07:00
Oleg Shparber b0219c2f7a Set parent for docset storage file dialog 2015-06-12 02:35:59 -07:00
Oleg Shparber 42a00482c0 Reorganise SettingsDialog methods 2015-06-12 02:34:34 -07:00
Oleg Shparber eec95541b6 A few coding style fixes in SettingsDialog 2015-06-12 02:18:15 -07:00
Oleg Shparber cdd291bef5 Do not disable Download/Stop downloads button 2015-06-12 02:01:01 -07:00
Oleg Shparber fe0c052149 Disable controls during docset download 2015-06-12 01:31:19 -07:00
Oleg Shparber ac0881c797 Add support for selecting multiple docsets for removal
Also fixes regression with non-working Remove button introduced a few
commits ago.
2015-06-12 01:08:09 -07:00
Oleg Shparber db0632d345 Implement selective docset update 2015-06-11 23:58:11 -07:00
Oleg Shparber ee6973edb7 Improve docset management UI 2015-06-11 17:39:07 -07:00
Oleg Shparber a95f7b556b Minor fix of coding style in SettingsDialog 2015-06-10 15:51:20 -07:00
Oleg Shparber 732ac2ab11 Add Retry button in the download error message box
Also fixes a bug when docset download progress bar wasn't hidden if
download failed.
2015-06-10 15:50:37 -07:00
Oleg Shparber ab317d0485 Merge pull request #341 (cherry-picked into 0.1) 2015-06-01 23:23:00 -07:00
SammaySarkar d78f69ce4c Resize icons to standard dimensions 2015-06-01 23:22:16 -07:00
Oleg Shparber 248717b36a Another refactoring of SearchItemDelegate 2015-05-31 22:00:13 -07:00
Oleg Shparber 4e4a844336 Another refactoring and optimisation in SearchItemDelegate (#212) 2015-05-30 02:09:30 -07:00
Oleg Shparber 3e9f661baa Minor optimisations in SearchItemDelegate 2015-05-29 23:46:16 -07:00
Oleg Shparber ad84928b07 Minor refactoring in SearchItemDelegate 2015-05-28 10:42:50 -07:00
Oleg Shparber 097bf24bd1 Do not use custom delegate when no search term is set (#211)
This avoids additional rendering in SearchItemDelegate when there is
nothing to highlight.
2015-05-28 10:40:59 -07:00
Oleg Shparber 6d21a7807d Fix direct connection between different threads
DocsetRegistry currently lives in its own thread, so a queued
connection should be used.
2015-05-27 23:30:34 -07:00
Oleg Shparber 91f1fbe8f3 Force 16x16 docset icon size in settings dialog 2015-05-19 21:57:23 -07:00
Oleg Shparber e53ec13794 Fix preprocessor macro indentation in application.cpp 2015-05-19 21:31:30 -07:00
Oleg Shparber 28e2bc0450 Implement check for update on application start
Also provides a settings option to disable the update check.
2015-05-19 21:29:40 -07:00
Oleg Shparber 93c7de5ee5 Remove unimplemented "restore last state" settings option 2015-05-19 20:55:03 -07:00
Oleg Shparber 8495688593 Minor improvements in README 2015-05-17 23:57:46 -07:00
Oleg Shparber ec9dc25841 Note xcb-util-keysyms dependency in README (related to #61) 2015-05-17 23:57:37 -07:00
Oleg Shparber f9c7b23391 Rework inline search experience
With Firefox as a source of inspiration, the inline search is now way
more intuitive and easy to use.

Doesn't work well with Qt WebEngine backend due to missing
features.
2015-05-17 23:28:03 -07:00
Oleg Shparber 407eccd862 Minor refactoring in SearchableWebView 2015-05-17 22:26:33 -07:00
Oleg Shparber bbdfb4d3b0 Hide inline search on Escape (fixes #129 again) 2015-05-17 21:49:22 -07:00
Oleg Shparber baccee30fd Fix tooltips for external links 2015-05-17 14:41:50 -07:00
Oleg Shparber 5e6da4ca65 Fix Twitter link 2015-05-16 11:00:48 -07:00
Oleg Shparber 1495ec0619 Use native path separators in old docset storage found warning 2015-05-16 08:48:28 -07:00
Oleg Shparber afacf892e9 Implement support for minimize to tray option (fixes #325) 2015-05-15 19:06:17 -07:00
Oleg Shparber 222bd51223 Fix preprocessor command indentation 2015-05-15 19:05:31 -07:00
Oleg Shparber d1f1c6c2c7 Match query keyword against string start of docset keywords (fixes #333)
It's a temporary workaround until we have a proper keyword support (#167).
2015-05-15 18:27:55 -07:00
Oleg Shparber 8abaf1af01 Shippable: Install libxcb-keysyms1-dev 2015-05-15 16:05:13 -07:00
Oleg Shparber ec800eda22 Use XCB to obtain key code from key symbol 2015-05-14 22:48:58 -07:00
Oleg Shparber d8b42203a0 Use XCB keyboard modifier constants instead of Xlib 2015-05-14 22:47:59 -07:00
Oleg Shparber 3f9e81a231 Minor improvement in XCB related code 2015-05-12 11:21:51 -07:00
Oleg Shparber fad2324e4a Implement back/forward mouse navigation in the browser (fixes #334) 2015-05-11 13:02:57 -07:00
Oleg Shparber 609ca1b9c2 Update download instructions in README 2015-05-05 23:59:08 -07:00
Oleg Shparber 008dc5005c Fix URL combining for ZDash docsets (fixes #328) 2015-05-05 17:07:46 -07:00
Oleg Shparber 9373121d03 Fix ignored mouse clicks in search edit (fixes #330) 2015-05-05 17:00:56 -07:00
Oleg Shparber f80323eeb3 Consume XCB events for registered shortcuts 2015-05-05 16:09:37 -07:00
Oleg Shparber db934460d3 Fix active tab closing using shortcut (fixes #329) 2015-05-05 00:48:01 -07:00
Oleg Shparber 368486949b Add Show/Hide item into AppIndicator menu and some refactoring 2015-05-05 00:15:01 -07:00
Oleg Shparber 5ec634c303 Rewrite QxtGlobalShortcut (X11) using XCB 2015-05-04 14:44:59 -07:00
Oleg Shparber 9a77d12cfa Cleanup QxtGlobalShortcut a bit 2015-05-04 13:33:50 -07:00
Oleg Shparber 2a7834aa70 Shippable: Install libqt5x11extras5-dev
Also do not install qtbase5-private-dev.

[reset_minion]
2015-05-04 12:22:06 -07:00
Oleg Shparber 261e8886ba Use QX11Extras for obtaining display handle in QxtGlobalShortcut
This also removes dependency on Qt Gui private headers (gui-private).
2015-05-04 12:15:35 -07:00
Oleg Shparber 033421231a Fix global shortcut getting unset
There was a problem in ShortcutEdit that caused it to return an
empty instead of initial value if it has not been changed by user.
2015-05-04 10:26:00 -07:00
Oleg Shparber 16d17e5519 Respect Settings::changed signal in main window (fixes #326) 2015-05-04 10:05:28 -07:00
Oleg Shparber e6067a1ffa Add TODO item for Qt 5.5 (#321)
With Qt 5.5 there will be no need in libappindicator.
2015-05-04 01:48:14 -07:00
Oleg Shparber b85827bc1c Rename AppIndicator define 2015-05-04 01:07:19 -07:00
Oleg Shparber a5878181ec Make AppIndicator respect 'Show system tray icon' option
Now app indicator gets removed when option is unset in run time.
2015-05-04 01:03:37 -07:00
Oleg Shparber 17f2f0bc1c Remove useless AppIndicator related code 2015-05-04 00:51:45 -07:00
Oleg Shparber 6c1ccdff89 Fix AppIndicator support (fixes #321) 2015-05-04 00:50:12 -07:00
Oleg Shparber 8cd2a55988 Do not set custom QMAKE_DEL_DIR
qmake tries to remove all directories where it put anything during
installation. For system directories that fails with 'Directory
not empty' error. So, it's pretty harmless, and there are no reasons
to override the default qmake behaviour.
2015-05-03 22:03:24 -07:00
Oleg Shparber 47ae2f316e Add Twitter link to the start page 2015-04-28 13:19:21 -07:00
Oleg Shparber fd4f3e2ef7 Update README to include build statuses for different branches 2015-04-26 15:17:12 -07:00
Oleg Shparber a04c91f6f3 Shippable: Silence apt-get
[reset_minion]
2015-04-26 14:29:48 -07:00
Oleg Shparber 84c2775152 Shippable: Install qt5-default 2015-04-26 14:09:14 -07:00
Oleg Shparber 58e1302486 Shippable: Perform native Linux build 2015-04-26 14:02:36 -07:00
Oleg Shparber 1ad8c8756f Shippable: Remove deployment to BitBucket 2015-04-26 00:39:10 -07:00
Oleg Shparber 2382cafb19 Shippable: Fix typo 2015-04-25 00:17:02 -07:00
Oleg Shparber 1f4f19f294 Shippable: Do not pack pull request builds 2015-04-25 00:02:34 -07:00
Oleg Shparber 4ac45ad335 Shippable: Do not set ZEAL_VERSION env variable 2015-04-24 23:47:10 -07:00
Oleg Shparber 6947abdb17 Set application version in project file 2015-04-24 23:18:39 -07:00
Oleg Shparber a03af64a74 Show a warning about old docset storage (fixes #317) 2015-04-19 16:08:52 -07:00
Oleg Shparber 9604c84131 Use Info.plist for docset name when meta.json is corrupt (fixes #310) 2015-04-18 23:56:07 -07:00
Oleg Shparber e8fc6370d9 Re-enable JavaScript (fixes #309) 2015-04-17 11:46:25 -07:00
541 changed files with 7328 additions and 4645 deletions
+3
View File
@@ -1,2 +1,5 @@
SRC_ROOT=$$PWD
BUILD_ROOT=$$shadowed($$PWD)
ZEAL_COMMON_PRI = $$SRC_ROOT/qmake/common.pri
ZEAL_LIBRARY_PRI = $$SRC_ROOT/qmake/library.pri
+9 -64
View File
@@ -1,64 +1,9 @@
build_image: shippableimages/ubuntu1404_base
cache: true
before_install:
- dpkg --add-architecture i386
- shippable_retry sudo apt-get -y -q update
- export QT_DIR=$HOME/qt/5.4/mingw491_32
install:
- shippable_retry sudo apt-get -y -q install --no-install-recommends wine p7zip-full ca-certificates curl
# Install Qt
- bash -c '[ -d $HOME/qt/Tools ] || mkdir -p $HOME/qt/OUT'
- bash -c '[ -d $HOME/qt/Tools ] || curl -Lso $HOME/qt/qt.exe http://download.qt.io/official_releases/qt/5.4/5.4.0/qt-opensource-windows-x86-mingw491_opengl-5.4.0.exe'
- bash -c '[ -d $HOME/qt/Tools ] || wine $HOME/qt/qt.exe --dump-binary-data -o $HOME/qt/OUT'
- bash -c '[ -d $HOME/qt/Tools ] || 7z x $HOME/qt/OUT/qt.54.win32_mingw491/5.4.0-1i686-4.9.1-release-posix-dwarf-rt_v3-rev2-runtime.7z -o$HOME/qt'
- bash -c '[ -d $HOME/qt/Tools ] || 7z x $HOME/qt/OUT/qt.54.win32_mingw491/5.4.0-1icu_53_1_mingw_builds_4_9_1_posix_dwarf_32.7z -o$HOME/qt'
- bash -c '[ -d $HOME/qt/Tools ] || 7z x $HOME/qt/OUT/qt.54.win32_mingw491/5.4.0-1qt5_addons.7z -o$HOME/qt'
- bash -c '[ -d $HOME/qt/Tools ] || 7z x $HOME/qt/OUT/qt.54.win32_mingw491/5.4.0-1qt5_essentials.7z -o$HOME/qt'
- bash -c '[ -d $HOME/qt/Tools ] || 7z x $HOME/qt/OUT/qt.tools.win32_mingw491/4.9.1-2i686-4.9.1-release-posix-dwarf-rt_v3-rev2.7z -o$HOME/qt'
- rm -rf $HOME/qt/OUT
- rm -f $HOME/qt/qt.exe
# Install libarchive headers and library
- bash -c '[ -f $HOME/qt/Tools/mingw491_32/i686-w64-mingw32/include/archive.h ] || curl -LOs https://bitbucket.org/zealdocs/zeal-win32-binary-downloads/downloads/libarchive-3.1.2-win32-mingw491.7z'
- bash -c '[ -f $HOME/qt/Tools/mingw491_32/i686-w64-mingw32/include/archive.h ] || 7z x libarchive-3.1.2-win32-mingw491.7z -o$HOME/qt/Tools/mingw491_32/i686-w64-mingw32'
- rm -f libarchive-3.1.2-win32-mingw491.7z
# Setup environment
- echo '[Paths]' > $QT_DIR/bin/qt.conf
- echo 'Prefix=..' >> $QT_DIR/bin/qt.conf
- echo '[HKEY_CURRENT_USER\Environment]' > $HOME/qt/temp.reg
- echo '"QMAKESPEC"="BASEDIR\\5.4\\mingw491_32\\mkspecs\\win32-g++"' >> $HOME/qt/temp.reg
- echo '"QTDIR"="BASEDIR\\5.4\\mingw491_32"' >> $HOME/qt/temp.reg
- echo '"PATH"="BASEDIR\\Tools\\mingw491_32\\libexec\\gcc\\i686-w64-mingw32;BASEDIR\\Tools\\mingw491_32\\bin;BASEDIR\\5.4\\mingw491_32\\bin"' >> $HOME/qt/temp.reg
- sed -i "s.BASEDIR.Z:$HOME/qt.g" $HOME/qt/temp.reg
- sed -i 's./.\\\\.g' $HOME/qt/temp.reg
- wine regedit $HOME/qt/temp.reg
before_script:
- export ZEAL_VERSION=`date +%Y%m%d`
- export ZEAL_DIR=zeal-$ZEAL_VERSION
script:
- wine qmake
- wine mingw32-make
after_success:
# Prepare ZIP package
- mkdir $ZEAL_DIR
- cp bin/zeal.exe $ZEAL_DIR
- for dir in imageformats platforms sqldrivers; do mkdir $ZEAL_DIR/$dir; done
- cp $HOME/qt/Tools/mingw491_32/opt/bin/ssleay32.dll $ZEAL_DIR
- cp $HOME/qt/Tools/mingw491_32/opt/bin/libeay32.dll $ZEAL_DIR
- for l in gif ico jpeg tiff; do cp $QT_DIR/plugins/imageformats/q$l.dll $ZEAL_DIR/imageformats; done
- cp $QT_DIR/plugins/platforms/qwindows.dll $ZEAL_DIR/platforms
- cp $QT_DIR/plugins/sqldrivers/qsqlite.dll $ZEAL_DIR/sqldrivers
- cp $QT_DIR/bin/libstdc++-6.dll $ZEAL_DIR
- cp $QT_DIR/bin/libgcc_s_dw2-1.dll $ZEAL_DIR
- cp $QT_DIR/bin/libwinpthread-1.dll $ZEAL_DIR
- cp $QT_DIR/bin/icu*.dll $ZEAL_DIR
- for l in Core Gui Multimedia MultimediaWidgets Network OpenGL Qml Quick Sql WebKit WebKitWidgets WebChannel Widgets Positioning PrintSupport Sensors; do cp $QT_DIR/bin/Qt5$l.dll $ZEAL_DIR; done
# Pack everything into ZIP
- 7z a -mx=9 $ZEAL_DIR.zip $ZEAL_DIR
# Upload to BitBucket
- bash -c 'curl -H "Content-Type:application/octet-stream" -H "Auth-Token:$AUTH_TOKEN" --data-binary @$ZEAL_DIR.zip ci2bb.herokuapp.com || true'
# Cleanup
- rm -rf $ZEAL_DIR*
env:
global:
- secure: LRSLJQbkpc6kkWDVbmvCARm20edC+1RCCgSdEzK0GfG66V+dyGYi6ubFBv1M+kV9YEVY1FkkZctiKlneJLpi/YS3pSJF7bEhYggtxNxRD+9bAVk4GZwVxT7TUw1ZPtLUkWc7L7PqgIO+OOiI8THwsONBNcn5q4fLsByhlt2XOyGPOrQYmfmqjWpgErgI0K4aYoJfoJGTgV2v5sZ+owSkMniyJY5WU9iZkRLO63ddmk72d9eq8ECwgQqxDyhR9/WtHkMPCrwVh06RFd9jG4DfCNDDZRdQLdGxCPXTNwP7QHqG9mKFRQeM91gs/tKlhFFlfPHMckWiBK4hAo+WLC+Ekg==
language: c
compiler:
- gcc
build:
ci:
- shippable_retry sudo apt-get -y -qq update
- shippable_retry sudo apt-get -y -qq install --no-install-recommends qt5-default libqt5webkit5-dev libqt5x11extras5-dev libarchive-dev libxcb-keysyms1-dev
- qmake
- make
+39 -17
View File
@@ -1,9 +1,10 @@
# Zeal
[![Build Status](https://api.shippable.com/projects/54ac2ce4d46935d5fbc19b84/badge?branchName=master)](https://app.shippable.com/projects/54ac2ce4d46935d5fbc19b84/builds/latest)
[![AppVeyor](https://img.shields.io/appveyor/ci/trollixx/zeal.svg?style=flat-square)](https://ci.appveyor.com/project/trollixx/zeal)
[![Coverity Scan](https://img.shields.io/coverity/scan/4271.svg?style=flat-square)](https://scan.coverity.com/projects/4271)
[![IRC](https://img.shields.io/badge/irc-%23zealdocs-blue.svg?style=flat-square)](https://kiwiirc.com/client/irc.freenode.net/#zealdocs)
[![Changelog](https://img.shields.io/github/release/zealdocs/zeal.svg?style=flat-square)](https://github.com/zealdocs/zeal/releases)
[![IRC](https://img.shields.io/badge/chat-on%20irc-blue.svg?style=flat-square)](https://kiwiirc.com/client/irc.freenode.net/#zealdocs)
[![Telegram Chat](https://img.shields.io/badge/chat-on%20telegram-179cde.svg?style=flat-square)](https://telegram.me/zealdocschat)
[![Telegram Channel](https://img.shields.io/badge/follow-on%20telegram-179cde.svg?style=flat-square)](https://telegram.me/zealdocs)
[![Twitter](https://img.shields.io/badge/follow-on%20twitter-1da1f2.svg?style=flat-square)](https://twitter.com/zealdocs)
> **zeal** *noun*
>
@@ -13,34 +14,42 @@
>
> (from WordNet 3.0)
Zeal is a simple offline documentation browser inspired by [Dash](http://kapeli.com/dash/).
Zeal is a simple offline documentation browser inspired by [Dash](https://kapeli.com/dash).
![Screenshot](http://i.imgur.com/SiLvpz8.png)
![Screenshot](https://i.imgur.com/v63u1ZJ.png)
[More screenshots](http://imgur.com/a/eVi97)
[More screenshots](https://imgur.com/a/eVi97)
## Build Status
[![Coverity Scan](https://img.shields.io/coverity/scan/4271.svg?style=flat-square)](https://scan.coverity.com/projects/4271)
OS \ Branch | master | stable
------------|--------|-------
Linux | [![Shippable](https://img.shields.io/shippable/54ac2ce4d46935d5fbc19b84/master.svg?style=flat-square)](https://app.shippable.com/projects/54ac2ce4d46935d5fbc19b84) | [![Shippable](https://img.shields.io/shippable/54ac2ce4d46935d5fbc19b84/stable.svg?style=flat-square)](https://app.shippable.com/projects/54ac2ce4d46935d5fbc19b84)
Windows | [![AppVeyor](https://img.shields.io/appveyor/ci/trollixx/zeal/master.svg?style=flat-square)](https://ci.appveyor.com/project/trollixx/zeal) | [![AppVeyor](https://img.shields.io/appveyor/ci/trollixx/zeal/stable.svg?style=flat-square)](https://ci.appveyor.com/project/trollixx/zeal)
## Download
For details about binary packages (currently available for Windows and Ubuntu) see [downloads page](http://zealdocs.org/download.html). Also, the latest unstable builds are available [here]( https://bitbucket.org/zealdocs/zeal-win32-binary-downloads/downloads).
Get binary builds for Windows and Linux from the [download page](https://zealdocs.org/download.html).
## How to use
After installing Zeal, you need to download docsets. Go to *File->Options->Docsets*, select the ones you want, and click the *Download* button.
After installing Zeal, you need to download docsets. Go to *Tools->Docsets*, select the ones you want, and click the *Download* button.
## How to compile
If you prefer to compile Zeal manually.
### Requirements
* [Qt](https://www.qt.io/) (version 5.2.0 or above is required)
* [libarchive](http://libarchive.org/)
* Optionally [libappindicator](https://launchpad.net/libappindicator) for Unity users
* [Qt](https://www.qt.io/) version 5.2.0 or above. Required modules: Qt WebKit Widgets, Qt SQL plugin for SQLite, Qt X11 Extras (X11 only).
* [libarchive](http://libarchive.org/).
* X11 only: `xcb-util-keysyms`.
* Ubuntu Unity only: [libappindicator](https://launchpad.net/libappindicator).
To compile it, run `qmake` and `make`.
To compile Zeal run `qmake` and then `make`. Linux users can install Zeal with `make install` command.
## Query & Filter docsets
You can limit the search scope by using ':' to indicate the desired docsets.
You can limit the search scope by using ':' to indicate the desired docsets:
`java:BaseDAO`
@@ -56,4 +65,17 @@ If you prefer, you can start Zeal with a query from command line:
## Creating your own docsets
You can use [Dash's instructions for generating docsets](http://kapeli.com/docsets).
You can use [Dash's instructions for generating docsets](https://kapeli.com/docsets).
## Contact and Support
We want your feedback! Here's a list of different ways to contact developers and request help:
* Report bugs and submit feature requests to [GitHub issues](https://github.com/zealdocs/zeal/issues).
* Ask any questions in our [Google Group](https://groups.google.com/d/forum/zealdocs). You can simply send an email to zealdocs@googlegroups.com.
* For a quick chat with developers and other Zeal users use our IRC channel: #zealdocs on [Freenode](https://freenode.net/). Also available through Kiwi IRC [web interface](https://kiwiirc.com/client/irc.freenode.net/#zealdocs). Please, take into consideration possible time zone differences.
* Finally, for a private communications send us [email](mailto:zeal@zealdocs.org).
* And do not forget to follow [@zealdocs](https://twitter.com/zealdocs) on Twitter!
## License
This software is licensed under the terms of the GNU General Public License version 3 (GPLv3). Full text of the license is available in the [COPYING](https://github.com/zealdocs/zeal/blob/master/COPYING) file and [online](http://opensource.org/licenses/gpl-3.0.html).
+23
View File
@@ -0,0 +1,23 @@
include($$ZEAL_COMMON_PRI)
TEMPLATE = aux
unix:!macx {
TARGET = zeal
appicons16.files=freedesktop/appicons/16/*
appicons24.files=freedesktop/appicons/24/*
appicons32.files=freedesktop/appicons/32/*
appicons64.files=freedesktop/appicons/64/*
appicons128.files=freedesktop/appicons/128/*
appicons16.path=$$PREFIX/share/icons/hicolor/16x16/apps
appicons24.path=$$PREFIX/share/icons/hicolor/24x24/apps
appicons32.path=$$PREFIX/share/icons/hicolor/32x32/apps
appicons64.path=$$PREFIX/share/icons/hicolor/64x64/apps
appicons128.path=$$PREFIX/share/icons/hicolor/128x128/apps
desktop.files=freedesktop/zeal.desktop
desktop.path=$$PREFIX/share/applications
INSTALLS += appicons16 appicons24 appicons32 appicons64 appicons128 desktop
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

+72
View File
@@ -0,0 +1,72 @@
# Shared build options
#
# This file must be included at the top of every non-subdirs .pro file.
# Use:
# include($$ZEAL_COMMON_PRI)
# Compilation settings
CONFIG += c++11 silent
# Shared include path
INCLUDEPATH += $$SRC_ROOT/src/libs
LIBS = -L$$BUILD_ROOT/.lib
# QString options
DEFINES *= QT_USE_QSTRINGBUILDER
DEFINES *= QT_RESTRICTED_CAST_FROM_ASCII
DEFINES *= QT_NO_CAST_TO_ASCII
DEFINES *= QT_NO_URL_CAST_FROM_STRING
# Workaround for AppVeyor: Do not warn if the library had to be created.
# Based on https://codereview.qt-project.org/150326
win32-g++:lessThan(QT_VERSION, "5.6.0") {
QMAKE_LIB = ar -rc
}
# Keep build directory clean
MOC_DIR = $$BUILD_ROOT/.moc
OBJECTS_DIR = $$BUILD_ROOT/.obj
RCC_DIR = $$BUILD_ROOT/.rcc
UI_DIR = $$BUILD_ROOT/.ui
# Application version
VERSION = 0.3.1
DEFINES += ZEAL_VERSION=\\\"$${VERSION}\\\"
# Browser engine
CONFIG(zeal_qtwebengine) {
qtHaveModule(webenginewidgets): BROWSER_ENGINE = qtwebengine
else: error("Qt WebEngine is not available.")
} else {
qtHaveModule(webkitwidgets): BROWSER_ENGINE = qtwebkit
else: qtHaveModule(webenginewidgets): BROWSER_ENGINE = qtwebengine
else: error("Zeal requires Qt WebEngine or Qt WebKit.")
}
equals(BROWSER_ENGINE, qtwebengine) {
message("Browser engine: Qt WebEngine.")
QT += webenginewidgets
DEFINES += USE_WEBENGINE
} else {
message("Browser engine: Qt WebKit.")
QT += webkitwidgets
DEFINES += USE_WEBKIT
}
# Portable build
CONFIG(zeal_portable) {
message("Portable build: Yes.")
DEFINES += PORTABLE_BUILD
}
# Unix installation prefix
unix:!macx {
isEmpty(PREFIX): PREFIX = /usr
}
unix:!macx:packagesExist(appindicator-0.1) {
CONFIG += link_pkgconfig
PKGCONFIG += appindicator-0.1 gtk+-2.0
DEFINES += USE_APPINDICATOR
message("AppIndicator support: Yes.")
}
+8
View File
@@ -0,0 +1,8 @@
include($$ZEAL_COMMON_PRI)
include($$replace(_PRO_FILE_PWD_, ([^/]+$), \\1/\\1.pri))
TEMPLATE = lib
CONFIG += staticlib
DESTDIR = $$BUILD_ROOT/.lib
TARGET = $$ZEAL_LIB_NAME
-48
View File
@@ -1,48 +0,0 @@
/****************************************************************************
** Copyright (c) 2006 - 2011, the LibQxt project.
** See the Qxt AUTHORS file for a list of authors and copyright holders.
** All rights reserved.
**
** Redistribution and use in source and binary forms, with or without
** modification, are permitted provided that the following conditions are met:
** * Redistributions of source code must retain the above copyright
** notice, this list of conditions and the following disclaimer.
** * Redistributions in binary form must reproduce the above copyright
** notice, this list of conditions and the following disclaimer in the
** documentation and/or other materials provided with the distribution.
** * Neither the name of the LibQxt project nor the
** names of its contributors may be used to endorse or promote products
** derived from this software without specific prior written permission.
**
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
** ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
** WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
** DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
** DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
** (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
** LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
** ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
** SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
**
** <http://libqxt.org> <foundation@libqxt.org>
*****************************************************************************/
#ifndef QXTGLOBAL_H
#define QXTGLOBAL_H
#include <QtGlobal>
//--------------------------export macros------------------------------
#if !defined(QXT_STATIC)
# if defined(BUILD_QXT_GUI)
# define QXT_GUI_EXPORT Q_DECL_EXPORT
# else
# define QXT_GUI_EXPORT Q_DECL_IMPORT
# endif
#else
# define QXT_GUI_EXPORT
#endif // BUILD_QXT_GUI
#endif // QXT_GLOBAL
-222
View File
@@ -1,222 +0,0 @@
#include "qxtglobalshortcut_p.h"
/****************************************************************************
** Copyright (c) 2006 - 2011, the LibQxt project.
** See the Qxt AUTHORS file for a list of authors and copyright holders.
** All rights reserved.
**
** Redistribution and use in source and binary forms, with or without
** modification, are permitted provided that the following conditions are met:
** * Redistributions of source code must retain the above copyright
** notice, this list of conditions and the following disclaimer.
** * Redistributions in binary form must reproduce the above copyright
** notice, this list of conditions and the following disclaimer in the
** documentation and/or other materials provided with the distribution.
** * Neither the name of the LibQxt project nor the
** names of its contributors may be used to endorse or promote products
** derived from this software without specific prior written permission.
**
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
** ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
** WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
** DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
** DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
** (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
** LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
** ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
** SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
**
** <http://libqxt.org> <foundation@libqxt.org>
*****************************************************************************/
#include <QApplication>
#include <QKeySequence>
#include <QVector>
#include <qpa/qplatformnativeinterface.h>
#include <xcb/xcb.h>
#include <X11/Xlib.h>
namespace {
const QVector<quint32> maskModifiers = QVector<quint32>()
<< 0 << Mod2Mask << LockMask << (Mod2Mask | LockMask);
typedef int (*X11ErrorHandler)(Display *display, XErrorEvent *event);
class QxtX11ErrorHandler {
public:
static bool error;
static int qxtX11ErrorHandler(Display *display, XErrorEvent *event)
{
Q_UNUSED(display);
switch (event->error_code)
{
case BadAccess:
case BadValue:
case BadWindow:
if (event->request_code == 33 /* X_GrabKey */ ||
event->request_code == 34 /* X_UngrabKey */) {
error = true;
//TODO:
//char errstr[256];
//XGetErrorText(dpy, err->error_code, errstr, 256);
}
}
return 0;
}
QxtX11ErrorHandler()
{
error = false;
m_previousErrorHandler = XSetErrorHandler(qxtX11ErrorHandler);
}
~QxtX11ErrorHandler()
{
XSetErrorHandler(m_previousErrorHandler);
}
private:
X11ErrorHandler m_previousErrorHandler;
};
bool QxtX11ErrorHandler::error = false;
class QxtX11Data {
public:
QxtX11Data()
{
QPlatformNativeInterface *native = qApp->platformNativeInterface();
void *display = native->nativeResourceForScreen(QByteArray("display"),
QGuiApplication::primaryScreen());
m_display = reinterpret_cast<Display *>(display);
}
bool isValid()
{
return m_display != 0;
}
Display *display()
{
Q_ASSERT(isValid());
return m_display;
}
Window rootWindow()
{
return DefaultRootWindow(display());
}
bool grabKey(quint32 keycode, quint32 modifiers, Window window)
{
QxtX11ErrorHandler errorHandler;
for (int i = 0; !errorHandler.error && i < maskModifiers.size(); ++i) {
XGrabKey(display(), keycode, modifiers | maskModifiers[i], window, True,
GrabModeAsync, GrabModeAsync);
}
if (errorHandler.error) {
ungrabKey(keycode, modifiers, window);
return false;
}
return true;
}
bool ungrabKey(quint32 keycode, quint32 modifiers, Window window)
{
QxtX11ErrorHandler errorHandler;
for (quint32 maskMods : maskModifiers)
XUngrabKey(display(), keycode, modifiers | maskMods, window);
return !errorHandler.error;
}
private:
Display *m_display;
};
} // namespace
bool QxtGlobalShortcutPrivate::nativeEventFilter(const QByteArray &eventType,
void *message, long *result)
{
Q_UNUSED(result);
xcb_key_press_event_t *kev = 0;
if (eventType == "xcb_generic_event_t") {
xcb_generic_event_t *ev = static_cast<xcb_generic_event_t *>(message);
if ((ev->response_type & 127) == XCB_KEY_PRESS)
kev = static_cast<xcb_key_press_event_t *>(message);
}
if (kev != 0) {
unsigned int keycode = kev->detail;
unsigned int keystate = 0;
if(kev->state & XCB_MOD_MASK_1)
keystate |= Mod1Mask;
if(kev->state & XCB_MOD_MASK_CONTROL)
keystate |= ControlMask;
if(kev->state & XCB_MOD_MASK_4)
keystate |= Mod4Mask;
if(kev->state & XCB_MOD_MASK_SHIFT)
keystate |= ShiftMask;
activateShortcut(keycode,
// Mod1Mask == Alt, Mod4Mask == Meta
keystate & (ShiftMask | ControlMask | Mod1Mask | Mod4Mask));
}
return false;
}
quint32 QxtGlobalShortcutPrivate::nativeModifiers(Qt::KeyboardModifiers modifiers)
{
// ShiftMask, LockMask, ControlMask, Mod1Mask, Mod2Mask, Mod3Mask, Mod4Mask, and Mod5Mask
quint32 native = 0;
if (modifiers & Qt::ShiftModifier)
native |= ShiftMask;
if (modifiers & Qt::ControlModifier)
native |= ControlMask;
if (modifiers & Qt::AltModifier)
native |= Mod1Mask;
if (modifiers & Qt::MetaModifier)
native |= Mod4Mask;
/// TODO: resolve these?
//if (modifiers & Qt::MetaModifier)
//if (modifiers & Qt::KeypadModifier)
//if (modifiers & Qt::GroupSwitchModifier)
return native;
}
quint32 QxtGlobalShortcutPrivate::nativeKeycode(Qt::Key key)
{
QxtX11Data x11;
if (!x11.isValid())
return 0;
KeySym keysym = XStringToKeysym(QKeySequence(key).toString().toLatin1().data());
if (keysym == NoSymbol)
keysym = static_cast<ushort>(key);
return XKeysymToKeycode(x11.display(), keysym);
}
bool QxtGlobalShortcutPrivate::registerShortcut(quint32 nativeKey, quint32 nativeMods)
{
QxtX11Data x11;
return x11.isValid() && x11.grabKey(nativeKey, nativeMods, x11.rootWindow());
}
bool QxtGlobalShortcutPrivate::unregisterShortcut(quint32 nativeKey, quint32 nativeMods)
{
QxtX11Data x11;
return x11.isValid() && x11.ungrabKey(nativeKey, nativeMods, x11.rootWindow());
}
+42
View File
@@ -0,0 +1,42 @@
include($$ZEAL_COMMON_PRI)
TEMPLATE = app
QT += gui widgets sql concurrent
SOURCES += \
main.cpp
RESOURCES += \
resources/zeal.qrc
DESTDIR = $$BUILD_ROOT/bin
unix:!macx {
TARGET = zeal
target.path = $$PREFIX/bin
INSTALLS += target
}
win32 {
TARGET = zeal
RC_ICONS = resources/zeal.ico
}
macx {
TARGET = Zeal
ICON = resources/zeal.icns
}
# FIXME: Hardcoded link line & cyclic dependencies.
LIBS += -lCore -lUi -lRegistry -lUtil
# Depend on all dependencies of libraries
for(lib_dir, $$list($$files($$SRC_ROOT/src/libs/*))) {
!equals(lib_dir, $$SRC_ROOT/src/libs/libs.pro) {
include($$lib_dir/$$basename(lib_dir).pri)
PRE_TARGETDEPS += $$BUILD_ROOT/.lib/lib$${ZEAL_LIB_NAME}.a
# LIBS += -l$$ZEAL_LIB_NAME
}
}
+272
View File
@@ -0,0 +1,272 @@
/****************************************************************************
**
** Copyright (C) 2015-2016 Oleg Shparber
** Copyright (C) 2013-2014 Jerzy Kozera
** Contact: https://go.zealdocs.org/l/contact
**
** This file is part of Zeal.
**
** Zeal 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 3 of the License, or
** (at your option) any later version.
**
** Zeal 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 Zeal. If not, see <https://www.gnu.org/licenses/>.
**
****************************************************************************/
#include <core/application.h>
#include <core/localserver.h>
#include <registry/searchquery.h>
#include <QApplication>
#include <QCommandLineParser>
#include <QDesktopServices>
#include <QDir>
#include <QIcon>
#include <QMessageBox>
#include <QSqlDatabase>
#include <QTextStream>
#include <QUrlQuery>
#ifdef Q_OS_WIN32
#include <QSettings>
#endif
#include <cstdlib>
using namespace Zeal;
namespace {
const char contactUrl[] = "https://go.zealdocs.org/l/contact";
}
struct CommandLineParameters
{
bool force;
bool preventActivation;
Registry::SearchQuery query;
#ifdef Q_OS_WIN32
bool registerProtocolHandlers;
bool unregisterProtocolHandlers;
#endif
};
QString stripParameterUrl(const QString &url, const QString &scheme)
{
QStringRef ref = url.midRef(scheme.length() + 1);
if (ref.startsWith(QLatin1String("//")))
ref = ref.mid(2);
if (ref.endsWith(QLatin1Char('/')))
ref = ref.left(ref.length() - 1);
return ref.toString();
}
CommandLineParameters parseCommandLine(const QStringList &arguments)
{
QCommandLineParser parser;
parser.setApplicationDescription(QObject::tr("Zeal - Offline documentation browser."));
parser.addHelpOption();
parser.addVersionOption();
// TODO: [Qt 5.4] parser.addOption({{"f", "force"}, "Force the application run."});
parser.addOption(QCommandLineOption({QStringLiteral("f"), QStringLiteral("force")},
QObject::tr("Force the application run.")));
#ifdef Q_OS_WIN32
parser.addOption(QCommandLineOption({QStringLiteral("register")},
QObject::tr("Register protocol handlers")));
parser.addOption(QCommandLineOption({QStringLiteral("unregister")},
QObject::tr("Unregister protocol handlers")));
#endif
parser.addPositionalArgument(QStringLiteral("url"), QObject::tr("dash[-plugin]:// URL"));
parser.process(arguments);
CommandLineParameters clParams;
clParams.force = parser.isSet(QStringLiteral("force"));
clParams.preventActivation = false;
#ifdef Q_OS_WIN32
clParams.registerProtocolHandlers = parser.isSet(QStringLiteral("register"));
clParams.unregisterProtocolHandlers = parser.isSet(QStringLiteral("unregister"));
if (clParams.registerProtocolHandlers && clParams.unregisterProtocolHandlers) {
QTextStream(stderr) << QObject::tr("Parameter conflict: --register and --unregister.\n");
::exit(EXIT_FAILURE);
}
#endif
// TODO: Support dash-feed:// protocol
const QString arg
= QUrl::fromPercentEncoding(parser.positionalArguments().value(0).toUtf8());
if (arg.startsWith(QLatin1String("dash:"))) {
clParams.query.setQuery(stripParameterUrl(arg, QStringLiteral("dash")));
} else if (arg.startsWith(QLatin1String("dash-plugin:"))) {
const QUrlQuery urlQuery(stripParameterUrl(arg, QStringLiteral("dash-plugin")));
const QString keys = urlQuery.queryItemValue(QStringLiteral("keys"));
if (!keys.isEmpty())
clParams.query.setKeywords(keys.split(QLatin1Char(',')));
clParams.query.setQuery(urlQuery.queryItemValue(QStringLiteral("query")));
const QString preventActivation
= urlQuery.queryItemValue(QStringLiteral("prevent_activation"));
clParams.preventActivation = preventActivation == QLatin1String("true");
} else {
clParams.query.setQuery(arg);
}
return clParams;
}
#ifdef Q_OS_WIN32
void registerProtocolHandler(const QString &scheme, const QString &description)
{
const QString appPath = QDir::toNativeSeparators(QCoreApplication::applicationFilePath());
const QString regPath = QStringLiteral("HKEY_CURRENT_USER\\Software\\Classes\\") + scheme;
QScopedPointer<QSettings> reg(new QSettings(regPath, QSettings::NativeFormat));
reg->setValue(QStringLiteral("Default"), description);
reg->setValue(QStringLiteral("URL Protocol"), QString());
reg->beginGroup(QStringLiteral("DefaultIcon"));
reg->setValue(QStringLiteral("Default"), QString("%1,1").arg(appPath));
reg->endGroup();
reg->beginGroup(QStringLiteral("shell"));
reg->beginGroup(QStringLiteral("open"));
reg->beginGroup(QStringLiteral("command"));
reg->setValue(QStringLiteral("Default"), QVariant(appPath + QLatin1String(" %1")));
}
void registerProtocolHandlers(const QHash<QString, QString> &protocols, bool force = false)
{
const QString regPath = QStringLiteral("HKEY_CURRENT_USER\\Software\\Classes");
QScopedPointer<QSettings> reg(new QSettings(regPath, QSettings::NativeFormat));
const QStringList groups = reg->childGroups();
for (auto it = protocols.cbegin(); it != protocols.cend(); ++it) {
if (force || !groups.contains(it.key()))
registerProtocolHandler(it.key(), it.value());
}
}
void unregisterProtocolHandlers(const QHash<QString, QString> &protocols)
{
const QString regPath = QStringLiteral("HKEY_CURRENT_USER\\Software\\Classes");
QScopedPointer<QSettings> reg(new QSettings(regPath, QSettings::NativeFormat));
for (auto it = protocols.cbegin(); it != protocols.cend(); ++it)
reg->remove(it.key());
}
#endif
int main(int argc, char *argv[])
{
// Do not allow Qt version lower than the app was compiled with.
QT_REQUIRE_VERSION(argc, argv, QT_VERSION_STR);
QCoreApplication::setApplicationName(QStringLiteral("Zeal"));
QCoreApplication::setApplicationVersion(ZEAL_VERSION);
QCoreApplication::setOrganizationDomain(QStringLiteral("zealdocs.org"));
QCoreApplication::setOrganizationName(QStringLiteral("Zeal"));
QScopedPointer<QApplication> qapp(new QApplication(argc, argv));
const CommandLineParameters clParams = parseCommandLine(qapp->arguments());
#ifdef Q_OS_WIN32
const static QHash<QString, QString> protocols = {
{QStringLiteral("dash"), QStringLiteral("Dash Protocol")},
{QStringLiteral("dash-plugin"), QStringLiteral("Dash Plugin Protocol")}
};
if (clParams.unregisterProtocolHandlers) {
unregisterProtocolHandlers(protocols);
return EXIT_SUCCESS;
} else {
registerProtocolHandlers(protocols, clParams.registerProtocolHandlers);
if (clParams.registerProtocolHandlers)
return EXIT_SUCCESS;
}
#endif
// Detect already running instance and optionally send the search query to it.
if (!clParams.force && Core::LocalServer::sendQuery(clParams.query, clParams.preventActivation))
return 0;
// Set application-wide window icon. All message boxes and other windows will use it by default.
qapp->setWindowIcon(QIcon::fromTheme(QStringLiteral("zeal"),
QIcon(QStringLiteral(":/zeal.ico"))));
QScopedPointer<Core::LocalServer> localServer(new Core::LocalServer());
if (!localServer->start()) {
QScopedPointer<QMessageBox> msgBox(new QMessageBox());
msgBox->setWindowTitle(QStringLiteral("Zeal"));
msgBox->setIcon(QMessageBox::Warning);
msgBox->setText(QObject::tr("Another application instance can be still running, "
"or has crashed.<br>Make sure to start Zeal only once."));
msgBox->addButton(QMessageBox::Help);
msgBox->addButton(QMessageBox::Retry);
QPushButton *quitButton = msgBox->addButton(QObject::tr("&Quit"),
QMessageBox::DestructiveRole);
msgBox->setDefaultButton(quitButton);
switch (msgBox->exec()) {
case QMessageBox::Rejected:
return EXIT_SUCCESS;
case QMessageBox::Help:
QDesktopServices::openUrl(QUrl(contactUrl));
}
msgBox->removeButton(msgBox->button(QMessageBox::Retry));
if (!localServer->start(true)) {
msgBox->setIcon(QMessageBox::Critical);
msgBox->setText(QObject::tr("Zeal is unable to start. Please report the issue "
"providing the details below."));
msgBox->setDetailedText(localServer->errorString());
if (msgBox->exec() == QMessageBox::Help)
QDesktopServices::openUrl(QUrl(contactUrl));
return EXIT_SUCCESS;
}
}
// Check for SQLite plugin
// TODO: Specific to docset format and should be handled accordingly in the future
if (!QSqlDatabase::isDriverAvailable(QStringLiteral("QSQLITE"))) {
QScopedPointer<QMessageBox> msgBox(new QMessageBox());
msgBox->setWindowTitle(QStringLiteral("Zeal"));
msgBox->setIcon(QMessageBox::Critical);
msgBox->setText(QObject::tr("Qt SQLite driver is not available."));
msgBox->addButton(QMessageBox::Help);
QPushButton *quitButton = msgBox->addButton(QObject::tr("&Quit"),
QMessageBox::DestructiveRole);
msgBox->setDefaultButton(quitButton);
if (msgBox->exec() == QMessageBox::Help)
QDesktopServices::openUrl(QUrl(contactUrl));
return EXIT_SUCCESS;
}
QDir::setSearchPaths(QStringLiteral("typeIcon"), {QStringLiteral(":/icons/type")});
QScopedPointer<Core::Application> app(new Core::Application());
QObject::connect(localServer.data(), &Core::LocalServer::newQuery,
app.data(), &Core::Application::executeQuery);
if (!clParams.query.isEmpty())
Core::LocalServer::sendQuery(clParams.query, clParams.preventActivation);
return qapp->exec();
}
@@ -1,6 +1,6 @@
<html>
<head>
<title>Zeal - Start Page</title>
<title>Start Page</title>
<link href="main.css" rel="stylesheet" type="text/css">
</head>
<body onmousedown="event.preventDefault()" oncontextmenu="event.preventDefault()">
@@ -11,8 +11,8 @@
</div>
<div class="dynamic"></div>
<footer>
<p><a href="http://zealdocs.org">Visit Zeal website</a><p>
<p><a href="http://www.kapeli.com/dash">Get Dash for OS X or iOS</a><p>
<p><a href="https://zealdocs.org">zealdocs.org</a> | <a href="https://twitter.com/zealdocs">@zealdocs</a><p>
<p><small><a href="https://www.kapeli.com/dash">Get Dash for OS X or iOS</a></small><p>
</footer>
</body>
</html>
Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 923 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 354 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 578 B

After

Width:  |  Height:  |  Size: 534 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 354 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 578 B

After

Width:  |  Height:  |  Size: 534 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 354 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 578 B

After

Width:  |  Height:  |  Size: 534 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 354 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 578 B

After

Width:  |  Height:  |  Size: 534 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 354 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 578 B

After

Width:  |  Height:  |  Size: 534 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 375 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 482 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 360 B

After

Width:  |  Height:  |  Size: 316 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 567 B

After

Width:  |  Height:  |  Size: 523 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 375 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 482 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 294 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 551 B

After

Width:  |  Height:  |  Size: 507 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 421 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 577 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 474 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 580 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 421 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 577 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 421 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 577 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 294 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 551 B

After

Width:  |  Height:  |  Size: 507 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 421 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 577 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 471 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 557 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 430 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 580 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 294 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 551 B

After

Width:  |  Height:  |  Size: 507 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 304 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 554 B

After

Width:  |  Height:  |  Size: 510 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 305 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 478 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 264 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 318 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 305 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 478 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 599 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 305 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 478 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 304 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 554 B

After

Width:  |  Height:  |  Size: 510 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 271 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 309 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 271 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 309 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 315 B

After

Width:  |  Height:  |  Size: 271 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 309 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 271 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 309 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 310 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 454 B

After

Width:  |  Height:  |  Size: 410 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 240 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 386 B

After

Width:  |  Height:  |  Size: 342 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 337 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 544 B

After

Width:  |  Height:  |  Size: 500 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 337 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 565 B

After

Width:  |  Height:  |  Size: 521 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 246 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 281 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 246 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 281 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 246 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 281 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 246 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 281 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 246 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 281 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 435 B

Some files were not shown because too many files have changed in this diff Show More