Skip to content

Commit

Permalink
Merge branch 'hotfix/0.3.1' into stable
Browse files Browse the repository at this point in the history
  • Loading branch information
trollixx committed Oct 10, 2016
2 parents e18ff9c + 783fb12 commit 3bb1af0
Show file tree
Hide file tree
Showing 8 changed files with 127 additions and 25 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ Get binary builds for Windows and Linux from the [download page](https://zealdoc

## 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

Expand Down
9 changes: 8 additions & 1 deletion qmake/common.pri
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ RCC_DIR = $$BUILD_ROOT/.rcc
UI_DIR = $$BUILD_ROOT/.ui

# Application version
VERSION = 0.3.0
VERSION = 0.3.1
DEFINES += ZEAL_VERSION=\\\"$${VERSION}\\\"

# Browser engine
Expand Down Expand Up @@ -63,3 +63,10 @@ CONFIG(zeal_portable) {
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.")
}
4 changes: 2 additions & 2 deletions src/libs/core/application.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
#include "application.h"

#include "extractor.h"
#include "networkaccessmanager.h"
#include "settings.h"

#include <registry/docsetregistry.h>
Expand All @@ -35,7 +36,6 @@
#include <QJsonDocument>
#include <QJsonObject>
#include <QMetaObject>
#include <QNetworkAccessManager>
#include <QNetworkProxy>
#include <QNetworkReply>
#include <QScopedPointer>
Expand All @@ -59,7 +59,7 @@ Application::Application(QObject *parent) :
m_instance = this;

m_settings = new Settings(this);
m_networkManager = new QNetworkAccessManager(this);
m_networkManager = new NetworkAccessManager(this);

// Extractor setup
m_extractorThread = new QThread(this);
Expand Down
44 changes: 44 additions & 0 deletions src/libs/core/networkaccessmanager.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
/****************************************************************************
**
** Copyright (C) 2016 Oleg Shparber
** 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 "networkaccessmanager.h"

#include <QNetworkRequest>

using namespace Zeal::Core;

NetworkAccessManager::NetworkAccessManager(QObject *parent)
: QNetworkAccessManager(parent)
{
}

QNetworkReply *NetworkAccessManager::createRequest(QNetworkAccessManager::Operation op,
const QNetworkRequest &request,
QIODevice *outgoingData)
{
// Detect URLs without schema, and prevent them from being requested on a local filesytem.
const QUrl url = request.url();
if (url.scheme() == QLatin1String("file") && !url.host().isEmpty())
return QNetworkAccessManager::createRequest(GetOperation, QNetworkRequest(), outgoingData);

return QNetworkAccessManager::createRequest(op, request, outgoingData);
}
45 changes: 45 additions & 0 deletions src/libs/core/networkaccessmanager.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
/****************************************************************************
**
** Copyright (C) 2016 Oleg Shparber
** 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/>.
**
****************************************************************************/

#ifndef ZEAL_CORE_NETWORKACCESSMANAGER_H
#define ZEAL_CORE_NETWORKACCESSMANAGER_H

#include <QNetworkAccessManager>

namespace Zeal {
namespace Core {

class NetworkAccessManager : public QNetworkAccessManager
{
Q_OBJECT
public:
NetworkAccessManager(QObject *parent = nullptr);

protected:
QNetworkReply *createRequest(Operation op, const QNetworkRequest &request,
QIODevice *outgoingData = nullptr) override;
};

} // namespace Core
} // namespace Zeal

#endif // ZEAL_CORE_NETWORKACCESSMANAGER_H
35 changes: 21 additions & 14 deletions src/libs/ui/docsetsdialog.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ DocsetsDialog::DocsetsDialog(Core::Application *app, QWidget *parent) :
[this, selectionModel]() {
ui->removeDocsetsButton->setEnabled(selectionModel->hasSelection());

for (const QModelIndex &index : selectionModel->selectedIndexes()) {
for (const QModelIndex &index : selectionModel->selectedRows()) {
if (index.data(ListModel::UpdateAvailableRole).toBool()) {
ui->updateSelectedDocsetsButton->setEnabled(true);
return;
Expand Down Expand Up @@ -135,7 +135,7 @@ DocsetsDialog::DocsetsDialog(Core::Application *app, QWidget *parent) :

selectionModel = ui->availableDocsetList->selectionModel();
connect(selectionModel, &QItemSelectionModel::selectionChanged, [this, selectionModel]() {
for (const QModelIndex &index : selectionModel->selectedIndexes()) {
for (const QModelIndex &index : selectionModel->selectedRows()) {
if (!index.data(ProgressItemDelegate::ShowProgressRole).toBool()) {
ui->downloadDocsetsButton->setEnabled(true);
return;
Expand Down Expand Up @@ -217,7 +217,7 @@ void DocsetsDialog::addDashFeed()

void DocsetsDialog::updateSelectedDocsets()
{
for (const QModelIndex &index : ui->installedDocsetList->selectionModel()->selectedIndexes()) {
for (const QModelIndex &index : ui->installedDocsetList->selectionModel()->selectedRows()) {
if (!index.data(Registry::ListModel::UpdateAvailableRole).toBool())
continue;

Expand Down Expand Up @@ -245,7 +245,7 @@ void DocsetsDialog::removeSelectedDocsets()

int ret;

const QModelIndexList selectedIndexes = selectonModel->selectedIndexes();
const QModelIndexList selectedIndexes = selectonModel->selectedRows();
if (selectedIndexes.size() == 1) {
const QString docsetTitle = selectedIndexes.first().data().toString();
ret = QMessageBox::question(this, QStringLiteral("Zeal"),
Expand Down Expand Up @@ -286,7 +286,7 @@ void DocsetsDialog::updateDocsetFilter(const QString &filterString)
void DocsetsDialog::downloadSelectedDocsets()
{
QItemSelectionModel *selectionModel = ui->availableDocsetList->selectionModel();
for (const QModelIndex &index : selectionModel->selectedIndexes()) {
for (const QModelIndex &index : selectionModel->selectedRows()) {
selectionModel->select(index, QItemSelectionModel::Deselect);

// Do nothing if a download is already in progress.
Expand Down Expand Up @@ -693,18 +693,21 @@ void DocsetsDialog::removeDocset(const QString &name)
const QString tmpPath = docsetPath + QLatin1String(".deleteme.")
+ QString::number(QDateTime::currentMSecsSinceEpoch());

// Rename first to allow simultaneous installation.
// TODO: Check for error
QDir().rename(docsetPath, tmpPath);

// Remove from registry first to avoid renaming files in use on Windows.
m_docsetRegistry->remove(name);

QFuture<bool> future = QtConcurrent::run([tmpPath] {
return QDir(tmpPath).removeRecursively();
});
// Rename first to allow simultaneous installation.
if (!QDir().rename(docsetPath, tmpPath)) {
const QString error = tr("Cannot delete docset <b>%1</b>! Please try closing other "
"applications first, as they may be accessing the docset "
"files.").arg(title);
QMessageBox::warning(this, QStringLiteral("Zeal"), error);
m_docsetsBeingDeleted.removeOne(name);
m_docsetRegistry->addDocset(docsetPath);
return;
}

QFutureWatcher<bool> *watcher = new QFutureWatcher<bool>();
watcher->setFuture(future);
connect(watcher, &QFutureWatcher<void>::finished, [=] {
if (!watcher->result()) {
QMessageBox::warning(this, QStringLiteral("Zeal"),
Expand All @@ -719,6 +722,10 @@ void DocsetsDialog::removeDocset(const QString &name)

m_docsetsBeingDeleted.removeOne(name);
});

watcher->setFuture(QtConcurrent::run([tmpPath] {
return QDir(tmpPath).removeRecursively();
}));
}

void DocsetsDialog::updateCombinedProgress()
Expand Down Expand Up @@ -749,7 +756,7 @@ void DocsetsDialog::resetProgress()
ui->addFeedButton->setEnabled(true);
QItemSelectionModel *selectionModel = ui->installedDocsetList->selectionModel();
bool hasSelectedUpdates = false;
for (const QModelIndex &index : selectionModel->selectedIndexes()) {
for (const QModelIndex &index : selectionModel->selectedRows()) {
if (index.data(Registry::ListModel::UpdateAvailableRole).toBool()) {
hasSelectedUpdates = true;
break;
Expand Down
6 changes: 6 additions & 0 deletions src/libs/ui/forms/docsetsdialog.ui
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,9 @@
<property name="selectionMode">
<enum>QAbstractItemView::ExtendedSelection</enum>
</property>
<property name="selectionBehavior">
<enum>QAbstractItemView::SelectRows</enum>
</property>
<property name="iconSize">
<size>
<width>16</width>
Expand Down Expand Up @@ -116,6 +119,9 @@
<property name="selectionMode">
<enum>QAbstractItemView::ExtendedSelection</enum>
</property>
<property name="selectionBehavior">
<enum>QAbstractItemView::SelectRows</enum>
</property>
<property name="iconSize">
<size>
<width>16</width>
Expand Down
7 changes: 0 additions & 7 deletions src/libs/ui/ui.pri
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,6 @@ ZEAL_LIB_NAME = Ui

QT += widgets

unix:!macx:packagesExist(appindicator-0.1) {
CONFIG += link_pkgconfig
PKGCONFIG += appindicator-0.1 gtk+-2.0
DEFINES += USE_APPINDICATOR
message("AppIndicator support: Yes.")
}

# QxtGlobalShortcut dependencies
unix:!macx {
QT += x11extras
Expand Down

0 comments on commit 3bb1af0

Please sign in to comment.