summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorDavid Boddie <dboddie@trolltech.com>2010-02-10 15:51:48 (GMT)
committerDavid Boddie <dboddie@trolltech.com>2010-02-10 15:51:48 (GMT)
commitc072fa8fdd0cebcaff9062e07d4623bbd7aded3c (patch)
treedb35223ec643fbc5aeadcfab4112e5686ff44b8f /tools
parentbf54d63fb1b60ad899d0b14889109278bd04fd9d (diff)
parent9a83bf2676dabdf36f9ca491b480b50d8e7ed93d (diff)
downloadQt-c072fa8fdd0cebcaff9062e07d4623bbd7aded3c.zip
Qt-c072fa8fdd0cebcaff9062e07d4623bbd7aded3c.tar.gz
Qt-c072fa8fdd0cebcaff9062e07d4623bbd7aded3c.tar.bz2
Merge branch 'master' of git@scm.dev.nokia.troll.no:qt/oslo-staging-1
Diffstat (limited to 'tools')
-rw-r--r--tools/assistant/lib/qhelp_global.cpp3
-rw-r--r--tools/assistant/lib/qhelpenginecore.cpp2
-rw-r--r--tools/assistant/lib/qhelpprojectdata.cpp47
-rw-r--r--tools/assistant/lib/qhelpsearchresultwidget.cpp2
-rw-r--r--tools/assistant/tools/assistant/assistant.pro83
-rw-r--r--tools/assistant/tools/assistant/bookmarkdialog.cpp222
-rw-r--r--tools/assistant/tools/assistant/bookmarkdialog.h88
-rw-r--r--tools/assistant/tools/assistant/bookmarkdialog.ui82
-rw-r--r--tools/assistant/tools/assistant/bookmarkfiltermodel.cpp322
-rw-r--r--tools/assistant/tools/assistant/bookmarkfiltermodel.h118
-rw-r--r--tools/assistant/tools/assistant/bookmarkitem.cpp174
-rw-r--r--tools/assistant/tools/assistant/bookmarkitem.h83
-rw-r--r--tools/assistant/tools/assistant/bookmarkmanager.cpp1029
-rw-r--r--tools/assistant/tools/assistant/bookmarkmanager.h201
-rw-r--r--tools/assistant/tools/assistant/bookmarkmodel.cpp425
-rw-r--r--tools/assistant/tools/assistant/bookmarkmodel.h115
-rw-r--r--tools/assistant/tools/assistant/bookmarkwidget.ui82
-rw-r--r--tools/assistant/tools/assistant/centralwidget.cpp2
-rw-r--r--tools/assistant/tools/assistant/centralwidget.h2
-rw-r--r--tools/assistant/tools/assistant/cmdlineparser.cpp7
-rw-r--r--tools/assistant/tools/assistant/helpenginewrapper.cpp39
-rw-r--r--tools/assistant/tools/assistant/helpenginewrapper.h9
-rw-r--r--tools/assistant/tools/assistant/helpviewer.cpp5
-rw-r--r--tools/assistant/tools/assistant/main.cpp43
-rw-r--r--tools/assistant/tools/assistant/mainwindow.cpp177
-rw-r--r--tools/assistant/tools/assistant/mainwindow.h29
-rw-r--r--tools/assistant/tools/assistant/preferencesdialog.cpp4
-rw-r--r--tools/assistant/tools/assistant/topicchooser.cpp10
-rw-r--r--tools/assistant/tools/assistant/xbelsupport.cpp152
-rw-r--r--tools/assistant/tools/assistant/xbelsupport.h22
-rw-r--r--tools/assistant/tools/qcollectiongenerator/main.cpp21
-rw-r--r--tools/assistant/tools/qhelpgenerator/main.cpp11
-rw-r--r--tools/configure/configureapp.cpp4
-rw-r--r--tools/designer/src/components/formeditor/formwindow.cpp1
-rw-r--r--tools/designer/src/components/propertyeditor/propertyeditor.cpp4
-rw-r--r--tools/designer/src/lib/shared/qdesigner_propertyeditor.cpp16
-rw-r--r--tools/designer/src/lib/shared/qdesigner_propertyeditor_p.h8
-rw-r--r--tools/designer/src/lib/shared/qdesigner_propertysheet.cpp10
-rw-r--r--tools/installer/README12
-rwxr-xr-xtools/installer/batch/build.bat157
-rwxr-xr-xtools/installer/batch/copy.bat121
-rwxr-xr-xtools/installer/batch/delete.bat73
-rwxr-xr-xtools/installer/batch/env.bat141
-rwxr-xr-xtools/installer/batch/extract.bat83
-rwxr-xr-xtools/installer/batch/installer.bat247
-rwxr-xr-xtools/installer/batch/log.bat58
-rwxr-xr-xtools/installer/batch/toupper.bat69
-rw-r--r--tools/installer/config/config.default.sample64
-rw-r--r--tools/installer/config/mingw-opensource.conf136
-rwxr-xr-xtools/installer/iwmake.bat124
-rw-r--r--tools/installer/nsis/confirmpage.ini59
-rw-r--r--tools/installer/nsis/gwdownload.ini118
-rw-r--r--tools/installer/nsis/gwmirror.ini67
-rw-r--r--tools/installer/nsis/images/install.icobin22486 -> 0 bytes
-rw-r--r--tools/installer/nsis/images/qt-header.bmpbin25818 -> 0 bytes
-rw-r--r--tools/installer/nsis/images/qt-wizard.bmpbin154542 -> 0 bytes
-rw-r--r--tools/installer/nsis/includes/global.nsh143
-rw-r--r--tools/installer/nsis/includes/instdir.nsh254
-rw-r--r--tools/installer/nsis/includes/list.nsh136
-rw-r--r--tools/installer/nsis/includes/qtcommon.nsh549
-rw-r--r--tools/installer/nsis/includes/qtenv.nsh303
-rw-r--r--tools/installer/nsis/includes/system.nsh269
-rw-r--r--tools/installer/nsis/installer.nsi524
-rw-r--r--tools/installer/nsis/modules/environment.nsh216
-rw-r--r--tools/installer/nsis/modules/mingw.nsh670
-rw-r--r--tools/installer/nsis/modules/opensource.nsh94
-rw-r--r--tools/installer/nsis/modules/registeruiext.nsh207
-rw-r--r--tools/installer/nsis/opensource.ini78
-rw-r--r--tools/linguist/linguist/mainwindow.cpp29
-rw-r--r--tools/linguist/linguist/messageeditor.cpp8
-rw-r--r--tools/linguist/linguist/messageeditorwidgets.cpp6
-rw-r--r--tools/qdoc3/htmlgenerator.cpp118
-rw-r--r--tools/qdoc3/htmlgenerator.h12
-rw-r--r--tools/qdoc3/javadocgenerator.cpp2
-rw-r--r--tools/qdoc3/javadocgenerator.h2
-rw-r--r--tools/qdoc3/linguistgenerator.cpp2
-rw-r--r--tools/qdoc3/linguistgenerator.h2
-rw-r--r--tools/qdoc3/main.cpp3
-rw-r--r--tools/qdoc3/mangenerator.cpp2
-rw-r--r--tools/qdoc3/mangenerator.h2
-rw-r--r--tools/qdoc3/node.cpp50
-rw-r--r--tools/qdoc3/node.h16
-rw-r--r--tools/qdoc3/pagegenerator.cpp4
-rw-r--r--tools/qdoc3/pagegenerator.h6
-rw-r--r--tools/qdoc3/webxmlgenerator.cpp2
-rw-r--r--tools/qdoc3/webxmlgenerator.h2
86 files changed, 2592 insertions, 6302 deletions
diff --git a/tools/assistant/lib/qhelp_global.cpp b/tools/assistant/lib/qhelp_global.cpp
index 8e96b55..d8a94d3 100644
--- a/tools/assistant/lib/qhelp_global.cpp
+++ b/tools/assistant/lib/qhelp_global.cpp
@@ -39,6 +39,7 @@
**
****************************************************************************/
+#include <QtCore/QCoreApplication>
#include <QtCore/QRegExp>
#include <QtCore/QMutexLocker>
#include <QtGui/QTextDocument>
@@ -60,7 +61,7 @@ QString QHelpGlobal::uniquifyConnectionName(const QString &name, void *pointer)
QString QHelpGlobal::documentTitle(const QString &content)
{
- QString title = QObject::tr("Untitled");
+ QString title = QCoreApplication::translate("QHelp", "Untitled");
if (!content.isEmpty()) {
int start = content.indexOf(QLatin1String("<title>"), 0, Qt::CaseInsensitive) + 7;
int end = content.indexOf(QLatin1String("</title>"), 0, Qt::CaseInsensitive);
diff --git a/tools/assistant/lib/qhelpenginecore.cpp b/tools/assistant/lib/qhelpenginecore.cpp
index a76fe69..71306af 100644
--- a/tools/assistant/lib/qhelpenginecore.cpp
+++ b/tools/assistant/lib/qhelpenginecore.cpp
@@ -119,7 +119,7 @@ bool QHelpEngineCorePrivate::setup()
QHelpDBReader *reader = new QHelpDBReader(absFileName,
QHelpGlobal::uniquifyConnectionName(info.fileName, this), this);
if (!reader->init()) {
- emit q->warning(tr("Cannot open documentation file %1: %2!")
+ emit q->warning(QHelpEngineCore::tr("Cannot open documentation file %1: %2!")
.arg(absFileName, reader->errorMessage()));
continue;
}
diff --git a/tools/assistant/lib/qhelpprojectdata.cpp b/tools/assistant/lib/qhelpprojectdata.cpp
index 869a446..83491a0 100644
--- a/tools/assistant/lib/qhelpprojectdata.cpp
+++ b/tools/assistant/lib/qhelpprojectdata.cpp
@@ -41,6 +41,7 @@
#include "qhelpprojectdata_p.h"
+#include <QtCore/QCoreApplication>
#include <QtCore/QDir>
#include <QtCore/QFileInfo>
#include <QtCore/QStack>
@@ -82,7 +83,7 @@ private:
void QHelpProjectDataPrivate::raiseUnknownTokenError()
{
- raiseError(QObject::tr("Unknown token."));
+ raiseError(QCoreApplication::translate("QHelpProject", "Unknown token."));
}
void QHelpProjectDataPrivate::readData(const QByteArray &contents)
@@ -95,12 +96,14 @@ void QHelpProjectDataPrivate::readData(const QByteArray &contents)
&& attributes().value(QLatin1String("version")) == QLatin1String("1.0"))
readProject();
else
- raiseError(QObject::tr("Unknown token. Expected \"QtHelpProject\"!"));
+ raiseError(QCoreApplication::translate("QHelpProject",
+ "Unknown token. Expected \"QtHelpProject\"!"));
}
}
if (hasError()) {
- raiseError(QObject::tr("Error in line %1: %2").arg(lineNumber())
+ raiseError(QCoreApplication::translate("QHelpProject",
+ "Error in line %1: %2").arg(lineNumber())
.arg(errorString()));
}
}
@@ -113,11 +116,15 @@ void QHelpProjectDataPrivate::readProject()
if (name() == QLatin1String("virtualFolder")) {
virtualFolder = readElementText();
if (virtualFolder.contains(QLatin1String("/")))
- raiseError(QObject::tr("A virtual folder must not contain a \'/\' character!"));
+ raiseError(QCoreApplication::translate("QHelpProject",
+ "A virtual folder must not contain "
+ "a \'/\' character!"));
} else if (name() == QLatin1String("namespace")) {
namespaceName = readElementText();
if (namespaceName.contains(QLatin1String("/")))
- raiseError(QObject::tr("A namespace must not contain a \'/\' character!"));
+ raiseError(QCoreApplication::translate("QHelpProject",
+ "A namespace must not contain a "
+ "\'/\' character!"));
} else if (name() == QLatin1String("customFilter")) {
readCustomFilter();
} else if (name() == QLatin1String("filterSection")) {
@@ -125,17 +132,21 @@ void QHelpProjectDataPrivate::readProject()
} else if (name() == QLatin1String("metaData")) {
QString n = attributes().value(QLatin1String("name")).toString();
if (!metaData.contains(n))
- metaData[n] = attributes().value(QLatin1String("value")).toString();
+ metaData[n]
+ = attributes().value(QLatin1String("value")).toString();
else
- metaData.insert(n, attributes().value(QLatin1String("value")).toString());
+ metaData.insert(n, attributes().
+ value(QLatin1String("value")).toString());
} else {
raiseUnknownTokenError();
}
} else if (isEndElement() && name() == QLatin1String("QtHelpProject")) {
if (namespaceName.isEmpty())
- raiseError(QObject::tr("Missing namespace in QtHelpProject."));
+ raiseError(QCoreApplication::translate("QHelpProject",
+ "Missing namespace in QtHelpProject."));
else if (virtualFolder.isEmpty())
- raiseError(QObject::tr("Missing virtual folder in QtHelpProject"));
+ raiseError(QCoreApplication::translate("QHelpProject",
+ "Missing virtual folder in QtHelpProject"));
break;
}
}
@@ -223,12 +234,14 @@ void QHelpProjectDataPrivate::readKeywords()
if (attributes().value(QLatin1String("ref")).toString().isEmpty()
|| (attributes().value(QLatin1String("name")).toString().isEmpty()
&& attributes().value(QLatin1String("id")).toString().isEmpty()))
- raiseError(QObject::tr("Missing attribute in keyword at line %1.")
- .arg(lineNumber()));
- filterSectionList.last().addIndex(
- QHelpDataIndexItem(attributes().value(QLatin1String("name")).toString(),
- attributes().value(QLatin1String("id")).toString(),
- attributes().value(QLatin1String("ref")).toString()));
+ raiseError(QCoreApplication::translate("QHelpProject",
+ "Missing attribute in keyword at line %1.")
+ .arg(lineNumber()));
+ filterSectionList.last()
+ .addIndex(QHelpDataIndexItem(attributes().
+ value(QLatin1String("name")).toString(),
+ attributes().value(QLatin1String("id")).toString(),
+ attributes().value(QLatin1String("ref")).toString()));
} else {
raiseUnknownTokenError();
}
@@ -346,8 +359,8 @@ bool QHelpProjectData::readData(const QString &fileName)
d->rootPath = QFileInfo(fileName).absolutePath();
QFile file(fileName);
if (!file.open(QIODevice::ReadOnly)) {
- d->errorMsg = QObject::tr("The input file %1 could not be opened!")
- .arg(fileName);
+ d->errorMsg = QCoreApplication::translate("QHelpProject",
+ "The input file %1 could not be opened!").arg(fileName);
return false;
}
diff --git a/tools/assistant/lib/qhelpsearchresultwidget.cpp b/tools/assistant/lib/qhelpsearchresultwidget.cpp
index ad540c6..8e476d5 100644
--- a/tools/assistant/lib/qhelpsearchresultwidget.cpp
+++ b/tools/assistant/lib/qhelpsearchresultwidget.cpp
@@ -304,7 +304,7 @@ private:
last = resultLastToShow > count ? count : resultLastToShow;
}
}
- hitsLabel->setText(tr("%1 - %2 of %3 Hits").arg(first).arg(last).arg(count));
+ hitsLabel->setText(QHelpSearchResultWidget::tr("%1 - %2 of %3 Hits").arg(first).arg(last).arg(count));
}
private:
diff --git a/tools/assistant/tools/assistant/assistant.pro b/tools/assistant/tools/assistant/assistant.pro
index 980f078..e62d30c 100644
--- a/tools/assistant/tools/assistant/assistant.pro
+++ b/tools/assistant/tools/assistant/assistant.pro
@@ -16,64 +16,79 @@ DEPENDPATH += ../shared
# ## Work around a qmake issue when statically linking to
# ## not-yet-installed plugins
LIBS += -L$$QT_BUILD_TREE/plugins/sqldrivers
-HEADERS += helpviewer.h \
- mainwindow.h \
- indexwindow.h \
- topicchooser.h \
+HEADERS += aboutdialog.h \
+ bookmarkdialog.h \
+ bookmarkfiltermodel.h \
+ bookmarkitem.h \
+ bookmarkmanager.h \
+ bookmarkmodel.h \
+ centralwidget.h \
+ cmdlineparser.h \
contentwindow.h \
- searchwidget.h \
- preferencesdialog.h \
filternamedialog.h \
- centralwidget.h \
+ helpenginewrapper.h \
+ helpviewer.h \
+ indexwindow.h \
installdialog.h \
- bookmarkmanager.h \
- remotecontrol.h \
- cmdlineparser.h \
- aboutdialog.h \
+ mainwindow.h \
+ preferencesdialog.h \
qtdocinstaller.h \
+ remotecontrol.h \
+ searchwidget.h \
+ topicchooser.h \
+ tracer.h \
xbelsupport.h \
- ../shared/collectionconfiguration.h \
- helpenginewrapper.h \
- tracer.h
+ ../shared/collectionconfiguration.h
win32:HEADERS += remotecontrol_win.h
-SOURCES += helpviewer.cpp \
- main.cpp \
- mainwindow.cpp \
- indexwindow.cpp \
- topicchooser.cpp \
+
+SOURCES += aboutdialog.cpp \
+ bookmarkdialog.cpp \
+ bookmarkfiltermodel.cpp \
+ bookmarkitem.cpp \
+ bookmarkmanager.cpp \
+ bookmarkmodel.cpp \
+ centralwidget.cpp \
+ cmdlineparser.cpp \
contentwindow.cpp \
- searchwidget.cpp \
- preferencesdialog.cpp \
filternamedialog.cpp \
- centralwidget.cpp \
+ helpenginewrapper.cpp \
+ helpviewer.cpp \
+ indexwindow.cpp \
installdialog.cpp \
- bookmarkmanager.cpp \
- remotecontrol.cpp \
- cmdlineparser.cpp \
- aboutdialog.cpp \
+ main.cpp \
+ mainwindow.cpp \
+ preferencesdialog.cpp \
qtdocinstaller.cpp \
+ remotecontrol.cpp \
+ searchwidget.cpp \
+ topicchooser.cpp \
xbelsupport.cpp \
../shared/collectionconfiguration.cpp \
- helpenginewrapper.cpp
-FORMS += topicchooser.ui \
- preferencesdialog.ui \
+
+FORMS += bookmarkdialog.ui \
+ bookmarkwidget.ui \
filternamedialog.ui \
installdialog.ui \
- bookmarkdialog.ui
+ preferencesdialog.ui \
+ topicchooser.ui
+
RESOURCES += assistant.qrc \
assistant_images.qrc
-win32 {
+
+win32 {
!wince*:LIBS += -lshell32
RC_FILE = assistant.rc
}
-mac {
+
+mac {
ICON = assistant.icns
TARGET = Assistant
QMAKE_INFO_PLIST = Info_mac.plist
}
-contains(CONFIG, static): {
+
+contains(CONFIG, static): {
SQLPLUGINS = $$unique(sql-plugins)
- contains(SQLPLUGINS, sqlite): {
+ contains(SQLPLUGINS, sqlite): {
QTPLUGIN += qsqlite
DEFINES += USE_STATIC_SQLITE_PLUGIN
}
diff --git a/tools/assistant/tools/assistant/bookmarkdialog.cpp b/tools/assistant/tools/assistant/bookmarkdialog.cpp
new file mode 100644
index 0000000..f081c15
--- /dev/null
+++ b/tools/assistant/tools/assistant/bookmarkdialog.cpp
@@ -0,0 +1,222 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt Assistant of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include "tracer.h"
+
+#include "bookmarkdialog.h"
+#include "bookmarkfiltermodel.h"
+#include "bookmarkitem.h"
+#include "bookmarkmodel.h"
+
+#include <QtGui/QKeyEvent>
+#include <QtGui/QMenu>
+
+QT_BEGIN_NAMESPACE
+
+BookmarkDialog::BookmarkDialog(BookmarkModel *sourceModel, const QString &title,
+ const QString &url, QWidget *parent)
+ : QDialog(parent)
+ , m_url(url)
+ , m_title(title)
+ , bookmarkModel(sourceModel)
+{
+ TRACE_OBJ
+ ui.setupUi(this);
+
+ ui.bookmarkEdit->setText(m_title);
+ ui.newFolderButton->setVisible(false);
+ ui.buttonBox->button(QDialogButtonBox::Ok)->setDefault(true);
+
+ connect(ui.buttonBox, SIGNAL(accepted()), this, SLOT(accepted()));
+ connect(ui.buttonBox, SIGNAL(rejected()), this, SLOT(rejected()));
+ connect(ui.newFolderButton, SIGNAL(clicked()), this, SLOT(addFolder()));
+ connect(ui.toolButton, SIGNAL(clicked()), this, SLOT(toolButtonClicked()));
+ connect(ui.bookmarkEdit, SIGNAL(textChanged(QString)), this,
+ SLOT(textChanged(QString)));
+
+ bookmarkProxyModel = new BookmarkFilterModel(this);
+ bookmarkProxyModel->setSourceModel(bookmarkModel);
+ ui.bookmarkFolders->setModel(bookmarkProxyModel);
+ connect(ui.bookmarkFolders, SIGNAL(currentIndexChanged(int)), this,
+ SLOT(currentIndexChanged(int)));
+
+ bookmarkTreeModel = new BookmarkTreeModel(this);
+ bookmarkTreeModel->setSourceModel(bookmarkModel);
+ ui.treeView->setModel(bookmarkTreeModel);
+
+ ui.treeView->expandAll();
+ ui.treeView->setVisible(false);
+ ui.treeView->installEventFilter(this);
+ ui.treeView->viewport()->installEventFilter(this);
+ ui.treeView->setContextMenuPolicy(Qt::CustomContextMenu);
+
+ connect(ui.treeView, SIGNAL(customContextMenuRequested(QPoint)), this,
+ SLOT(customContextMenuRequested(QPoint)));
+ connect(ui.treeView->selectionModel(), SIGNAL(currentChanged(QModelIndex,
+ QModelIndex)), this, SLOT(currentIndexChanged(QModelIndex)));
+
+ ui.bookmarkFolders->setCurrentIndex(0);
+ ui.treeView->setCurrentIndex(ui.treeView->indexAt(QPoint(2, 2)));
+}
+
+BookmarkDialog::~BookmarkDialog()
+{
+ TRACE_OBJ
+}
+
+bool BookmarkDialog::eventFilter(QObject *object, QEvent *event)
+{
+ TRACE_OBJ
+ if (object != ui.treeView && object != ui.treeView->viewport())
+ return QWidget::eventFilter(object, event);
+
+ if (event->type() == QEvent::KeyPress) {
+ QKeyEvent *ke = static_cast<QKeyEvent*>(event);
+ switch (ke->key()) {
+ case Qt::Key_F2: {
+ bookmarkModel->setItemsEditable(true);
+ ui.treeView->edit(ui.treeView->currentIndex());
+ bookmarkModel->setItemsEditable(false);
+ } break;
+ default: break;
+ }
+ }
+
+ return QObject::eventFilter(object, event);
+}
+
+void BookmarkDialog::currentIndexChanged(int row)
+{
+ TRACE_OBJ
+ QModelIndex next = bookmarkProxyModel->index(row, 0, QModelIndex());
+ if (next.isValid()) {
+ next = bookmarkProxyModel->mapToSource(next);
+ ui.treeView->setCurrentIndex(bookmarkTreeModel->mapFromSource(next));
+ }
+}
+
+void BookmarkDialog::currentIndexChanged(const QModelIndex &index)
+{
+ TRACE_OBJ
+ const QModelIndex current = bookmarkTreeModel->mapToSource(index);
+ if (current.isValid()) {
+ const int row = bookmarkProxyModel->mapFromSource(current).row();
+ ui.bookmarkFolders->setCurrentIndex(row);
+ }
+}
+
+void BookmarkDialog::accepted()
+{
+ TRACE_OBJ
+ QModelIndex index = ui.treeView->currentIndex();
+ if (index.isValid()) {
+ index = bookmarkModel->addItem(bookmarkTreeModel->mapToSource(index));
+ if (BookmarkItem *item = bookmarkModel->itemFromIndex(index))
+ item->setData(DataVector() << m_title << m_url << false);
+ } else
+ rejected();
+
+ accept();
+}
+
+void BookmarkDialog::rejected()
+{
+ TRACE_OBJ
+ foreach (const QPersistentModelIndex &index, cache)
+ bookmarkModel->removeItem(index);
+ reject();
+}
+
+void BookmarkDialog::addFolder()
+{
+ TRACE_OBJ
+ QModelIndex index = ui.treeView->currentIndex();
+ if (index.isValid()) {
+ index = bookmarkModel->addItem(bookmarkTreeModel->mapToSource(index),
+ true);
+ cache.append(index);
+
+ index = bookmarkTreeModel->mapFromSource(index);
+ if (index.isValid()) {
+ bookmarkModel->setItemsEditable(true);
+ ui.treeView->edit(index);
+ ui.treeView->expand(index);
+ ui.treeView->setCurrentIndex(index);
+ bookmarkModel->setItemsEditable(false);
+ }
+ }
+}
+
+void BookmarkDialog::toolButtonClicked()
+{
+ TRACE_OBJ
+ const bool visible = !ui.treeView->isVisible();
+ ui.treeView->setVisible(visible);
+ ui.newFolderButton->setVisible(visible);
+
+ if (visible) {
+ resize(QSize(width(), 400));
+ ui.toolButton->setText(QLatin1String("-"));
+ } else {
+ resize(width(), minimumHeight());
+ ui.toolButton->setText(QLatin1String("+"));
+ }
+}
+
+void BookmarkDialog::textChanged(const QString& text)
+{
+ m_title = text;
+}
+
+void BookmarkDialog::customContextMenuRequested(const QPoint &point)
+{
+ TRACE_OBJ
+ QMenu menu(QLatin1String(""), this);
+ QAction *renameItem = menu.addAction(tr("Rename Folder"));
+
+ QAction *picked = menu.exec(ui.treeView->mapToGlobal(point));
+ if (picked == renameItem) {
+ bookmarkModel->setItemsEditable(true);
+ ui.treeView->edit(ui.treeView->currentIndex());
+ bookmarkModel->setItemsEditable(false);
+ }
+}
+
+QT_END_NAMESPACE
diff --git a/tools/assistant/tools/assistant/bookmarkdialog.h b/tools/assistant/tools/assistant/bookmarkdialog.h
new file mode 100644
index 0000000..ba38c7a
--- /dev/null
+++ b/tools/assistant/tools/assistant/bookmarkdialog.h
@@ -0,0 +1,88 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt Assistant of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#ifndef BOOKMARKDIALOG_H
+#define BOOKMARKDIALOG_H
+
+#include "ui_bookmarkdialog.h"
+
+QT_BEGIN_NAMESPACE
+
+class BookmarkModel;
+class BookmarkFilterModel;
+class BookmarkTreeModel;
+
+class BookmarkDialog : public QDialog
+{
+ Q_OBJECT
+public:
+ BookmarkDialog(BookmarkModel *bookmarkModel, const QString &title,
+ const QString &url, QWidget *parent = 0);
+ ~BookmarkDialog();
+
+private:
+ bool eventFilter(QObject *object, QEvent *event);
+
+private slots:
+ void currentIndexChanged(int index);
+ void currentIndexChanged(const QModelIndex &index);
+
+ void accepted();
+ void rejected();
+
+ void addFolder();
+ void toolButtonClicked();
+ void textChanged(const QString& text);
+ void customContextMenuRequested(const QPoint &point);
+
+private:
+ QString m_url;
+ QString m_title;
+ Ui::BookmarkDialog ui;
+ QList<QPersistentModelIndex> cache;
+
+ BookmarkModel *bookmarkModel;
+ BookmarkTreeModel *bookmarkTreeModel;
+ BookmarkFilterModel *bookmarkProxyModel;
+};
+
+QT_END_NAMESPACE
+
+#endif // BOOKMARKDIALOG_H
diff --git a/tools/assistant/tools/assistant/bookmarkdialog.ui b/tools/assistant/tools/assistant/bookmarkdialog.ui
index 7a878f9..5131531 100644
--- a/tools/assistant/tools/assistant/bookmarkdialog.ui
+++ b/tools/assistant/tools/assistant/bookmarkdialog.ui
@@ -1,38 +1,39 @@
-<ui version="4.0" >
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
<class>BookmarkDialog</class>
- <widget class="QDialog" name="BookmarkDialog" >
- <property name="geometry" >
+ <widget class="QDialog" name="BookmarkDialog">
+ <property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>450</width>
- <height>135</height>
+ <height>133</height>
</rect>
</property>
- <property name="sizePolicy" >
- <sizepolicy vsizetype="Preferred" hsizetype="Preferred" >
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
- <property name="windowTitle" >
+ <property name="windowTitle">
<string>Add Bookmark</string>
</property>
- <layout class="QVBoxLayout" name="verticalLayout_3" >
+ <layout class="QVBoxLayout" name="verticalLayout_3">
<item>
- <layout class="QHBoxLayout" name="horizontalLayout" >
+ <layout class="QHBoxLayout" name="horizontalLayout">
<item>
- <layout class="QVBoxLayout" name="verticalLayout_2" >
+ <layout class="QVBoxLayout" name="verticalLayout_2">
<item>
- <widget class="QLabel" name="label" >
- <property name="text" >
+ <widget class="QLabel" name="label">
+ <property name="text">
<string>Bookmark:</string>
</property>
</widget>
</item>
<item>
- <widget class="QLabel" name="label_2" >
- <property name="text" >
+ <widget class="QLabel" name="label_2">
+ <property name="text">
<string>Add in Folder:</string>
</property>
</widget>
@@ -40,35 +41,35 @@
</layout>
</item>
<item>
- <layout class="QVBoxLayout" name="verticalLayout" >
+ <layout class="QVBoxLayout" name="verticalLayout">
<item>
- <widget class="QLineEdit" name="bookmarkEdit" />
+ <widget class="QLineEdit" name="bookmarkEdit"/>
</item>
<item>
- <widget class="QComboBox" name="bookmarkFolders" />
+ <widget class="QComboBox" name="bookmarkFolders"/>
</item>
</layout>
</item>
</layout>
</item>
<item>
- <layout class="QHBoxLayout" name="horizontalLayout_3" >
+ <layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
- <widget class="QToolButton" name="toolButton" >
- <property name="minimumSize" >
+ <widget class="QToolButton" name="toolButton">
+ <property name="minimumSize">
<size>
<width>25</width>
<height>20</height>
</size>
</property>
- <property name="text" >
+ <property name="text">
<string>+</string>
</property>
</widget>
</item>
<item>
- <widget class="Line" name="line" >
- <property name="orientation" >
+ <widget class="Line" name="line">
+ <property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
@@ -76,30 +77,39 @@
</layout>
</item>
<item>
- <widget class="QTreeView" name="treeView" >
- <property name="sizePolicy" >
- <sizepolicy vsizetype="Ignored" hsizetype="Expanding" >
+ <widget class="QTreeView" name="treeView">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Ignored">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
+ <property name="uniformRowHeights">
+ <bool>true</bool>
+ </property>
+ <property name="allColumnsShowFocus">
+ <bool>true</bool>
+ </property>
+ <property name="headerHidden">
+ <bool>true</bool>
+ </property>
</widget>
</item>
<item>
- <layout class="QHBoxLayout" name="horizontalLayout_4" >
+ <layout class="QHBoxLayout" name="horizontalLayout_4">
<item>
- <widget class="QPushButton" name="newFolderButton" >
- <property name="text" >
+ <widget class="QPushButton" name="newFolderButton">
+ <property name="text">
<string>New Folder</string>
</property>
</widget>
</item>
<item>
- <widget class="QDialogButtonBox" name="buttonBox" >
- <property name="orientation" >
+ <widget class="QDialogButtonBox" name="buttonBox">
+ <property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
- <property name="standardButtons" >
+ <property name="standardButtons">
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property>
</widget>
@@ -116,11 +126,11 @@
<receiver>BookmarkDialog</receiver>
<slot>accept()</slot>
<hints>
- <hint type="sourcelabel" >
+ <hint type="sourcelabel">
<x>248</x>
<y>254</y>
</hint>
- <hint type="destinationlabel" >
+ <hint type="destinationlabel">
<x>157</x>
<y>274</y>
</hint>
@@ -132,11 +142,11 @@
<receiver>BookmarkDialog</receiver>
<slot>reject()</slot>
<hints>
- <hint type="sourcelabel" >
+ <hint type="sourcelabel">
<x>316</x>
<y>260</y>
</hint>
- <hint type="destinationlabel" >
+ <hint type="destinationlabel">
<x>286</x>
<y>274</y>
</hint>
diff --git a/tools/assistant/tools/assistant/bookmarkfiltermodel.cpp b/tools/assistant/tools/assistant/bookmarkfiltermodel.cpp
new file mode 100644
index 0000000..5874493
--- /dev/null
+++ b/tools/assistant/tools/assistant/bookmarkfiltermodel.cpp
@@ -0,0 +1,322 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt Assistant of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include "bookmarkfiltermodel.h"
+
+#include "bookmarkitem.h"
+#include "bookmarkmodel.h"
+
+BookmarkFilterModel::BookmarkFilterModel(QObject *parent)
+ : QAbstractProxyModel(parent)
+ , hideBookmarks(true)
+ , sourceModel(0)
+{
+}
+
+void
+BookmarkFilterModel::setSourceModel(QAbstractItemModel *_sourceModel)
+{
+ beginResetModel();
+
+ QAbstractProxyModel::setSourceModel(sourceModel);
+ sourceModel = qobject_cast<BookmarkModel*> (_sourceModel);
+
+ connect(sourceModel, SIGNAL(dataChanged(QModelIndex, QModelIndex)), this,
+ SLOT(changed(QModelIndex, QModelIndex)));
+
+ connect(sourceModel, SIGNAL(rowsInserted(QModelIndex, int, int)),
+ this, SLOT(rowsInserted(QModelIndex, int, int)));
+
+ connect(sourceModel, SIGNAL(rowsAboutToBeRemoved(QModelIndex, int, int)),
+ this, SLOT(rowsAboutToBeRemoved(QModelIndex, int, int)));
+ connect(sourceModel, SIGNAL(rowsRemoved(QModelIndex, int, int)), this,
+ SLOT(rowsRemoved(QModelIndex, int, int)));
+
+ connect(sourceModel, SIGNAL(layoutAboutToBeChanged()), this,
+ SLOT(layoutAboutToBeChanged()));
+ connect(sourceModel, SIGNAL(layoutChanged()), this,
+ SLOT(layoutChanged()));
+
+ connect(sourceModel, SIGNAL(modelAboutToBeReset()), this,
+ SLOT(modelAboutToBeReset()));
+ connect(sourceModel, SIGNAL(modelReset()), this, SLOT(modelReset()));
+
+ if (sourceModel)
+ setupCache(sourceModel->index(0, 0, QModelIndex()));
+
+ endResetModel();
+}
+
+int
+BookmarkFilterModel::rowCount(const QModelIndex &index) const
+{
+ Q_UNUSED(index)
+ return cache.count();
+}
+
+int
+BookmarkFilterModel::columnCount(const QModelIndex &index) const
+{
+ Q_UNUSED(index)
+ if (sourceModel)
+ return sourceModel->columnCount();
+ return 0;
+}
+
+QModelIndex
+BookmarkFilterModel::mapToSource(const QModelIndex &proxyIndex) const
+{
+ const int row = proxyIndex.row();
+ if (proxyIndex.isValid() && row >= 0 && row < cache.count())
+ return cache[row];
+ return QModelIndex();
+}
+
+QModelIndex
+BookmarkFilterModel::mapFromSource(const QModelIndex &sourceIndex) const
+{
+ return index(cache.indexOf(sourceIndex), 0, QModelIndex());
+}
+
+QModelIndex
+BookmarkFilterModel::parent(const QModelIndex &child) const
+{
+ Q_UNUSED(child)
+ return QModelIndex();
+}
+
+QModelIndex
+BookmarkFilterModel::index(int row, int column, const QModelIndex &index) const
+{
+ Q_UNUSED(index)
+ if (row < 0 || column < 0 || cache.count() <= row
+ || !sourceModel || sourceModel->columnCount() <= column) {
+ return QModelIndex();
+ }
+ return createIndex(row, 0);
+}
+
+Qt::DropActions
+BookmarkFilterModel::supportedDropActions () const
+{
+ if (sourceModel)
+ return sourceModel->supportedDropActions();
+ return Qt::IgnoreAction;
+}
+
+Qt::ItemFlags
+BookmarkFilterModel::flags(const QModelIndex &index) const
+{
+ if (sourceModel)
+ return sourceModel->flags(index);
+ return Qt::NoItemFlags;
+}
+
+QVariant
+BookmarkFilterModel::data(const QModelIndex &index, int role) const
+{
+ if (sourceModel)
+ return sourceModel->data(mapToSource(index), role);
+ return QVariant();
+}
+
+bool
+BookmarkFilterModel::setData(const QModelIndex &index, const QVariant &value,
+ int role)
+{
+ if (sourceModel)
+ return sourceModel->setData(mapToSource(index), value, role);
+ return false;
+}
+
+void
+BookmarkFilterModel::filterBookmarks()
+{
+ if (sourceModel) {
+ beginResetModel();
+ hideBookmarks = true;
+ setupCache(sourceModel->index(0, 0, QModelIndex()));
+ endResetModel();
+ }
+}
+
+void
+BookmarkFilterModel::filterBookmarkFolders()
+{
+ if (sourceModel) {
+ beginResetModel();
+ hideBookmarks = false;
+ setupCache(sourceModel->index(0, 0, QModelIndex()));
+ endResetModel();
+ }
+}
+
+void
+BookmarkFilterModel::changed(const QModelIndex &topLeft,
+ const QModelIndex &bottomRight)
+{
+ emit dataChanged(mapFromSource(topLeft), mapFromSource(bottomRight));
+}
+
+void
+BookmarkFilterModel::rowsInserted(const QModelIndex &parent, int start, int end)
+{
+ if (!sourceModel)
+ return;
+
+ QModelIndex cachePrevious = parent;
+ if (BookmarkItem *parentItem = sourceModel->itemFromIndex(parent)) {
+ BookmarkItem *newItem = parentItem->child(start);
+
+ // iterate over tree hirarchie to find the previous folder
+ for (int i = 0; i < parentItem->childCount(); ++i) {
+ if (BookmarkItem *child = parentItem->child(i)) {
+ const QModelIndex &tmp = sourceModel->indexFromItem(child);
+ if (tmp.data(UserRoleFolder).toBool() && child != newItem)
+ cachePrevious = tmp;
+ }
+ }
+
+ const QModelIndex &newIndex = sourceModel->indexFromItem(newItem);
+ const bool isFolder = newIndex.data(UserRoleFolder).toBool();
+ if ((isFolder && hideBookmarks) || (!isFolder && !hideBookmarks)) {
+ beginInsertRows(mapFromSource(parent), start, end);
+ cache.insert(cache.indexOf(cachePrevious) + 1, newIndex);
+ endInsertRows();
+ }
+ }
+}
+
+void
+BookmarkFilterModel::rowsAboutToBeRemoved(const QModelIndex &parent, int start,
+ int end)
+{
+ if (!sourceModel)
+ return;
+
+ if (BookmarkItem *parentItem = sourceModel->itemFromIndex(parent)) {
+ if (BookmarkItem *child = parentItem->child(start)) {
+ indexToRemove = sourceModel->indexFromItem(child);
+ if (cache.contains(indexToRemove))
+ beginRemoveRows(mapFromSource(parent), start, end);
+ }
+ }
+}
+
+void
+BookmarkFilterModel::rowsRemoved(const QModelIndex &/*parent*/, int, int)
+{
+ if (cache.contains(indexToRemove)) {
+ cache.removeAll(indexToRemove);
+ endRemoveRows();
+ }
+}
+
+void
+BookmarkFilterModel::layoutAboutToBeChanged()
+{
+ // TODO: ???
+}
+
+void
+BookmarkFilterModel::layoutChanged()
+{
+ // TODO: ???
+}
+
+void
+BookmarkFilterModel::modelAboutToBeReset()
+{
+ beginResetModel();
+}
+
+void
+BookmarkFilterModel::modelReset()
+{
+ if (sourceModel)
+ setupCache(sourceModel->index(0, 0, QModelIndex()));
+ endResetModel();
+}
+
+void
+BookmarkFilterModel::setupCache(const QModelIndex &parent)
+{
+ cache.clear();
+ collectItems(parent);
+}
+
+void
+BookmarkFilterModel::collectItems(const QModelIndex &parent)
+{
+ if (parent.isValid()) {
+ bool isFolder = sourceModel->data(parent, UserRoleFolder).toBool();
+ if ((isFolder && hideBookmarks) || (!isFolder && !hideBookmarks))
+ cache.append(parent);
+
+ if (sourceModel->hasChildren(parent)) {
+ for (int i = 0; i < sourceModel->rowCount(parent); ++i)
+ collectItems(sourceModel->index(i, 0, parent));
+ }
+ }
+}
+
+// -- BookmarkTreeModel
+
+BookmarkTreeModel::BookmarkTreeModel(QObject *parent)
+ : QSortFilterProxyModel(parent)
+{
+}
+
+int
+BookmarkTreeModel::columnCount(const QModelIndex &parent) const
+{
+ return qMin(1, QSortFilterProxyModel::columnCount(parent));
+}
+
+bool
+BookmarkTreeModel::filterAcceptsRow(int row, const QModelIndex &parent) const
+{
+ Q_UNUSED(row)
+ BookmarkModel *model = qobject_cast<BookmarkModel*> (sourceModel());
+ if (model->rowCount(parent) > 0
+ && model->data(model->index(row, 0, parent), UserRoleFolder).toBool())
+ return true;
+ return false;
+} \ No newline at end of file
diff --git a/tools/assistant/tools/assistant/bookmarkfiltermodel.h b/tools/assistant/tools/assistant/bookmarkfiltermodel.h
new file mode 100644
index 0000000..4ea7ab9
--- /dev/null
+++ b/tools/assistant/tools/assistant/bookmarkfiltermodel.h
@@ -0,0 +1,118 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt Assistant of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#ifndef BOOKMARKFILTERMODEL_H
+#define BOOKMARKFILTERMODEL_H
+
+#include <QtCore/QPersistentModelIndex>
+
+#include <QtGui/QAbstractProxyModel>
+#include <QtGui/QSortFilterProxyModel>
+
+QT_BEGIN_NAMESPACE
+
+class BookmarkItem;
+class BookmarkModel;
+
+typedef QList<QPersistentModelIndex> PersistentModelIndexCache;
+
+class BookmarkFilterModel : public QAbstractProxyModel
+{
+ Q_OBJECT
+public:
+ explicit BookmarkFilterModel(QObject *parent = 0);
+
+ void setSourceModel(QAbstractItemModel *sourceModel);
+
+ int rowCount(const QModelIndex &index) const;
+ int columnCount(const QModelIndex &index) const;
+
+ QModelIndex mapToSource(const QModelIndex &proxyIndex) const;
+ QModelIndex mapFromSource(const QModelIndex &sourceIndex) const;
+
+ QModelIndex parent(const QModelIndex &child) const;
+ QModelIndex index(int row, int column, const QModelIndex &parent) const;
+
+ Qt::DropActions supportedDropActions () const;
+ Qt::ItemFlags flags(const QModelIndex &index) const;
+
+ QVariant data(const QModelIndex &index, int role) const;
+ bool setData(const QModelIndex &index, const QVariant &value, int role);
+
+ void filterBookmarks();
+ void filterBookmarkFolders();
+
+private slots:
+ void changed(const QModelIndex &topLeft, const QModelIndex &bottomRight);
+ void rowsInserted(const QModelIndex &parent, int start, int end);
+ void rowsAboutToBeRemoved(const QModelIndex &parent, int start, int end);
+ void rowsRemoved(const QModelIndex &parent, int start, int end);
+ void layoutAboutToBeChanged();
+ void layoutChanged();
+ void modelAboutToBeReset();
+ void modelReset();
+
+private:
+ void setupCache(const QModelIndex &parent);
+ void collectItems(const QModelIndex &parent);
+
+private:
+ bool hideBookmarks;
+ BookmarkModel *sourceModel;
+ PersistentModelIndexCache cache;
+ QPersistentModelIndex indexToRemove;
+};
+
+// -- BookmarkTreeModel
+
+class BookmarkTreeModel : public QSortFilterProxyModel
+{
+ Q_OBJECT
+public:
+ BookmarkTreeModel(QObject *parent = 0);
+ int columnCount(const QModelIndex &parent = QModelIndex()) const;
+
+protected:
+ bool filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const;
+};
+
+QT_END_NAMESPACE
+
+#endif // BOOKMARKFILTERMODEL_H
diff --git a/tools/assistant/tools/assistant/bookmarkitem.cpp b/tools/assistant/tools/assistant/bookmarkitem.cpp
new file mode 100644
index 0000000..8036959
--- /dev/null
+++ b/tools/assistant/tools/assistant/bookmarkitem.cpp
@@ -0,0 +1,174 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt Assistant of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "bookmarkitem.h"
+
+#include <QtCore/QDebug>
+
+QT_BEGIN_NAMESPACE
+
+BookmarkItem::BookmarkItem(const DataVector &data, BookmarkItem *parent)
+ : m_data(data)
+ , m_parent(parent)
+{
+}
+
+BookmarkItem::~BookmarkItem()
+{
+ qDeleteAll(m_children);
+}
+
+BookmarkItem*
+BookmarkItem::parent() const
+{
+ return m_parent;
+}
+
+void
+BookmarkItem::setParent(BookmarkItem *parent)
+{
+ m_parent = parent;
+}
+
+void
+BookmarkItem::addChild(BookmarkItem *child)
+{
+ child->setParent(this);
+ m_children.append(child);
+}
+
+BookmarkItem*
+BookmarkItem::child(int number) const
+{
+ if (number >= 0 && number < m_children.count())
+ return m_children[number];
+ return 0;
+}
+
+int BookmarkItem::childCount() const
+{
+ return m_children.count();
+}
+
+int BookmarkItem::childNumber() const
+{
+ if (m_parent)
+ return m_parent->m_children.indexOf(const_cast<BookmarkItem*>(this));
+ return 0;
+}
+
+QVariant
+BookmarkItem::data(int column) const
+{
+ if (column == 0)
+ return m_data[0];
+
+ if (column == 1 || column == UserRoleUrl)
+ return m_data[1];
+
+ if (column == UserRoleFolder)
+ return m_data[1].toString() == QLatin1String("Folder");
+
+ if (column == UserRoleExpanded)
+ return m_data[2];
+
+ return QVariant();
+}
+
+void
+BookmarkItem::setData(const DataVector &data)
+{
+ m_data = data;
+}
+
+bool
+BookmarkItem::setData(int column, const QVariant &newValue)
+{
+ int index = -1;
+ if (column == 0 || column == 1)
+ index = column;
+
+ if (column == UserRoleUrl || column == UserRoleFolder)
+ index = 1;
+
+ if (column == UserRoleExpanded)
+ index = 2;
+
+ if (index < 0)
+ return false;
+
+ m_data[index] = newValue;
+ return true;
+}
+
+bool
+BookmarkItem::insertChildren(bool isFolder, int position, int count)
+{
+ if (position < 0 || position > m_children.size())
+ return false;
+
+ for (int row = 0; row < count; ++row) {
+ m_children.insert(position, new BookmarkItem(DataVector()
+ << QObject::tr(isFolder ? "New Folder" : "Untitled")
+ << (isFolder ? "Folder" : "about:blank") << false, this));
+ }
+
+ return true;
+}
+
+bool
+BookmarkItem::removeChildren(int position, int count)
+{
+ if (position < 0 || position > m_children.size())
+ return false;
+
+ for (int row = 0; row < count; ++row)
+ delete m_children.takeAt(position);
+
+ return true;
+}
+
+void
+BookmarkItem::dumpTree(int indent) const
+{
+ const QString tree(indent, ' ');
+ qDebug() << tree + (data(UserRoleFolder).toBool() ? "Folder" : "Bookmark")
+ << "Label:" << data(0).toString() << "parent:" << m_parent << "this:"
+ << this;
+
+ foreach (BookmarkItem *item, m_children)
+ item->dumpTree(indent + 4);
+}
+
+QT_END_NAMESPACE
diff --git a/tools/assistant/tools/assistant/bookmarkitem.h b/tools/assistant/tools/assistant/bookmarkitem.h
new file mode 100644
index 0000000..7acaf86
--- /dev/null
+++ b/tools/assistant/tools/assistant/bookmarkitem.h
@@ -0,0 +1,83 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt Assistant of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#ifndef BOOKMARKITEM_H
+#define BOOKMARKITEM_H
+
+#include <QtCore/QVariant>
+#include <QtCore/QVector>
+
+QT_BEGIN_NAMESPACE
+
+enum {
+ UserRoleUrl = Qt::UserRole + 50,
+ UserRoleFolder = Qt::UserRole + 100,
+ UserRoleExpanded = Qt::UserRole + 150
+};
+
+typedef QVector<QVariant> DataVector;
+
+class BookmarkItem
+{
+public:
+ BookmarkItem(const DataVector &data, BookmarkItem *parent = 0);
+ ~BookmarkItem();
+
+ BookmarkItem *parent() const;
+ void setParent(BookmarkItem *parent);
+
+ void addChild(BookmarkItem *child);
+ BookmarkItem *child(int number) const;
+
+ int childCount() const;
+ int childNumber() const;
+
+ QVariant data(int column) const;
+ void setData(const DataVector &data);
+ bool setData(int column, const QVariant &value);
+
+ bool insertChildren(bool isFolder, int position, int count);
+ bool removeChildren(int position, int count);
+
+ void dumpTree(int indent) const;
+
+private:
+ DataVector m_data;
+
+ BookmarkItem *m_parent;
+ QList<BookmarkItem*> m_children;
+};
+
+QT_END_NAMESPACE
+
+#endif // BOOKMARKITEM_H
diff --git a/tools/assistant/tools/assistant/bookmarkmanager.cpp b/tools/assistant/tools/assistant/bookmarkmanager.cpp
index b7bd449..8fba811 100644
--- a/tools/assistant/tools/assistant/bookmarkmanager.cpp
+++ b/tools/assistant/tools/assistant/bookmarkmanager.cpp
@@ -41,575 +41,207 @@
#include "tracer.h"
#include "bookmarkmanager.h"
+#include "bookmarkdialog.h"
+#include "bookmarkfiltermodel.h"
+#include "bookmarkitem.h"
+#include "bookmarkmodel.h"
#include "centralwidget.h"
#include "helpenginewrapper.h"
+#include <QtGui/QFileDialog>
#include <QtGui/QMenu>
-#include <QtGui/QIcon>
-#include <QtGui/QStyle>
-#include <QtGui/QLabel>
-#include <QtGui/QLayout>
-#include <QtCore/QEvent>
-#include <QtGui/QComboBox>
#include <QtGui/QKeyEvent>
-#include <QtGui/QLineEdit>
#include <QtGui/QMessageBox>
-#include <QtGui/QHeaderView>
-#include <QtGui/QToolButton>
-#include <QtGui/QPushButton>
-#include <QtGui/QApplication>
-#include <QtGui/QDialogButtonBox>
#include <QtGui/QSortFilterProxyModel>
-QT_BEGIN_NAMESPACE
-
-BookmarkDialog::BookmarkDialog(BookmarkManager *manager, const QString &title,
- const QString &url, QWidget *parent)
- : QDialog(parent)
- , m_url(url)
- , m_title(title)
- , bookmarkManager(manager)
-{
- TRACE_OBJ
- ui.setupUi(this);
-
- installEventFilter(this);
- ui.treeView->installEventFilter(this);
- ui.treeView->viewport()->installEventFilter(this);
-
- ui.bookmarkEdit->setText(title);
- ui.newFolderButton->setVisible(false);
- ui.buttonBox->button(QDialogButtonBox::Ok)->setDefault(true);
- ui.bookmarkFolders->addItems(bookmarkManager->bookmarkFolders());
-
- proxyModel = new QSortFilterProxyModel(this);
- proxyModel->setFilterKeyColumn(0);
- proxyModel->setDynamicSortFilter(true);
- proxyModel->setFilterRole(Qt::UserRole + 10);
- proxyModel->setSourceModel(bookmarkManager->treeBookmarkModel());
- proxyModel->setFilterRegExp(QRegExp(QLatin1String("Folder"),
- Qt::CaseSensitive, QRegExp::FixedString));
- ui.treeView->setModel(proxyModel);
-
- ui.treeView->expandAll();
- ui.treeView->setVisible(false);
- ui.treeView->header()->setVisible(false);
- ui.treeView->setContextMenuPolicy(Qt::CustomContextMenu);
-
- connect(ui.buttonBox, SIGNAL(rejected()), this, SLOT(reject()));
- connect(ui.buttonBox, SIGNAL(accepted()), this, SLOT(addAccepted()));
- connect(ui.newFolderButton, SIGNAL(clicked()), this, SLOT(addNewFolder()));
- connect(ui.toolButton, SIGNAL(clicked()), this, SLOT(toolButtonClicked()));
- connect(ui.bookmarkEdit, SIGNAL(textChanged(QString)), this,
- SLOT(textChanged(QString)));
-
- connect(bookmarkManager->treeBookmarkModel(),
- SIGNAL(itemChanged(QStandardItem*)),
- this, SLOT(itemChanged(QStandardItem*)));
-
- connect(ui.bookmarkFolders, SIGNAL(currentIndexChanged(QString)), this,
- SLOT(selectBookmarkFolder(QString)));
+#include <QFile>
+#include "xbelsupport.h"
- connect(ui.treeView, SIGNAL(customContextMenuRequested(QPoint)), this,
- SLOT(customContextMenuRequested(QPoint)));
+QT_BEGIN_NAMESPACE
- connect(ui.treeView->selectionModel(), SIGNAL(currentChanged(QModelIndex,
- QModelIndex)), this, SLOT(currentChanged(QModelIndex)));
-}
+// -- BookmarkManager::BookmarkWidget
-BookmarkDialog::~BookmarkDialog()
+void BookmarkManager::BookmarkWidget::focusInEvent(QFocusEvent *event)
{
TRACE_OBJ
-}
+ if (event->reason() != Qt::MouseFocusReason) {
+ ui.lineEdit->selectAll();
+ ui.lineEdit->setFocus();
-void BookmarkDialog::addAccepted()
-{
- TRACE_OBJ
- QItemSelectionModel *model = ui.treeView->selectionModel();
- const QModelIndexList &list = model->selection().indexes();
-
- QModelIndex index;
- if (!list.isEmpty())
- index = proxyModel->mapToSource(list.at(0));
-
- bookmarkManager->addNewBookmark(index, ui.bookmarkEdit->text(), m_url);
- accept();
-}
-
-void BookmarkDialog::addNewFolder()
-{
- TRACE_OBJ
- QItemSelectionModel *model = ui.treeView->selectionModel();
- const QModelIndexList &list = model->selection().indexes();
-
- QModelIndex index;
- if (!list.isEmpty())
- index = list.at(0);
-
- QModelIndex newFolder =
- bookmarkManager->addNewFolder(proxyModel->mapToSource(index));
- if (newFolder.isValid()) {
- ui.treeView->expand(index);
- const QModelIndex &index = proxyModel->mapFromSource(newFolder);
- model->setCurrentIndex(index, QItemSelectionModel::ClearAndSelect);
-
- ui.bookmarkFolders->clear();
- ui.bookmarkFolders->addItems(bookmarkManager->bookmarkFolders());
-
- const QString &name = index.data().toString();
- ui.bookmarkFolders->setCurrentIndex(ui.bookmarkFolders->findText(name));
- renameFolder(index, newFolder);
+ // force the focus in event on bookmark manager
+ emit focusInEvent();
}
}
-void BookmarkDialog::toolButtonClicked()
-{
- TRACE_OBJ
- bool visible = !ui.treeView->isVisible();
- ui.treeView->setVisible(visible);
- ui.newFolderButton->setVisible(visible);
-
- if (visible) {
- resize(QSize(width(), 400));
- ui.toolButton->setText(QLatin1String("-"));
- } else {
- resize(width(), minimumHeight());
- ui.toolButton->setText(QLatin1String("+"));
- }
-}
+// -- BookmarkManager::BookmarkTreeView
-void BookmarkDialog::itemChanged(QStandardItem *item)
+BookmarkManager::BookmarkTreeView::BookmarkTreeView(QWidget *parent)
+ : QTreeView(parent)
{
TRACE_OBJ
- if (renameItem != item) {
- renameItem = item;
- oldText = item->text();
- return;
- }
+ setAcceptDrops(true);
+ setDragEnabled(true);
+ setAutoExpandDelay(1000);
+ setUniformRowHeights(true);
+ setDropIndicatorShown(true);
+ setExpandsOnDoubleClick(true);
- if (item->text() != oldText) {
- ui.bookmarkFolders->clear();
- ui.bookmarkFolders->addItems(bookmarkManager->bookmarkFolders());
+ connect(this, SIGNAL(expanded(QModelIndex)), this,
+ SLOT(setExpandedData(QModelIndex)));
+ connect(this, SIGNAL(collapsed(QModelIndex)), this,
+ SLOT(setExpandedData(QModelIndex)));
- QString name = tr("Bookmarks");
- const QModelIndex &index = ui.treeView->currentIndex();
- if (index.isValid())
- name = index.data().toString();
- ui.bookmarkFolders->setCurrentIndex(ui.bookmarkFolders->findText(name));
- }
}
-void BookmarkDialog::textChanged(const QString &string)
+void BookmarkManager::BookmarkTreeView::subclassKeyPressEvent(QKeyEvent *event)
{
TRACE_OBJ
- ui.buttonBox->button(QDialogButtonBox::Ok)->setEnabled(!string.isEmpty());
+ QTreeView::keyPressEvent(event);
}
-void BookmarkDialog::selectBookmarkFolder(const QString &folderName)
+void BookmarkManager::BookmarkTreeView::setExpandedData(const QModelIndex &index)
{
TRACE_OBJ
- if (folderName.isEmpty())
- return;
-
- if (folderName == tr("Bookmarks")) {
- ui.treeView->clearSelection();
- return;
- }
-
- QStandardItemModel *model = bookmarkManager->treeBookmarkModel();
- QList<QStandardItem*> list = model->findItems(folderName,
- Qt::MatchCaseSensitive | Qt::MatchRecursive, 0);
- if (!list.isEmpty()) {
- const QModelIndex &index = model->indexFromItem(list.at(0));
- QItemSelectionModel *model = ui.treeView->selectionModel();
- if (model) {
- model->setCurrentIndex(proxyModel->mapFromSource(index),
- QItemSelectionModel::ClearAndSelect);
- }
- }
+ if (BookmarkModel *treeModel = qobject_cast<BookmarkModel*> (model()))
+ treeModel->setData(index, isExpanded(index), UserRoleExpanded);
}
-void BookmarkDialog::customContextMenuRequested(const QPoint &point)
-{
- TRACE_OBJ
- QModelIndex index = ui.treeView->indexAt(point);
- if (!index.isValid())
- return;
-
- QMenu menu(QLatin1String(""), this);
+// -- BookmarkManager
- QAction *removeItem = menu.addAction(tr("Delete Folder"));
- QAction *renameItem = menu.addAction(tr("Rename Folder"));
+QMutex BookmarkManager::mutex;
+BookmarkManager* BookmarkManager::bookmarkManager = 0;
- QAction *picked = menu.exec(ui.treeView->mapToGlobal(point));
- if (!picked)
- return;
-
- const QModelIndex &proxyIndex = proxyModel->mapToSource(index);
- if (picked == removeItem) {
- bookmarkManager->removeBookmarkItem(ui.treeView, proxyIndex);
- ui.bookmarkFolders->clear();
- ui.bookmarkFolders->addItems(bookmarkManager->bookmarkFolders());
-
- QString name = tr("Bookmarks");
- index = ui.treeView->currentIndex();
- if (index.isValid())
- name = index.data().toString();
- ui.bookmarkFolders->setCurrentIndex(ui.bookmarkFolders->findText(name));
- } else if (picked == renameItem) {
- renameFolder(index, proxyIndex);
- }
-}
+// -- public
-void BookmarkDialog::renameFolder(const QModelIndex &index,
- const QModelIndex &proxyIndex)
+BookmarkManager* BookmarkManager::instance()
{
TRACE_OBJ
- const BookmarkModel * const model = bookmarkManager->treeBookmarkModel();
- if (QStandardItem *item = model->itemFromIndex(proxyIndex)) {
- item->setEditable(true);
- ui.treeView->edit(index);
- item->setEditable(false);
+ if (!bookmarkManager) {
+ QMutexLocker _(&mutex);
+ if (!bookmarkManager)
+ bookmarkManager = new BookmarkManager();
}
+ return bookmarkManager;
}
-void BookmarkDialog::currentChanged(const QModelIndex &current)
+void BookmarkManager::destroy()
{
TRACE_OBJ
- QString text = tr("Bookmarks");
- if (current.isValid())
- text = current.data().toString();
- ui.bookmarkFolders->setCurrentIndex(ui.bookmarkFolders->findText(text));
+ delete bookmarkManager;
+ bookmarkManager = 0;
}
-bool BookmarkDialog::eventFilter(QObject *object, QEvent *e)
+QWidget* BookmarkManager::bookmarkDockWidget() const
{
TRACE_OBJ
- if (object != ui.treeView && object != ui.treeView->viewport())
- return QWidget::eventFilter(object, e);
-
- if (e->type() == QEvent::KeyPress) {
- QKeyEvent *ke = static_cast<QKeyEvent*>(e);
- switch (ke->key()) {
- case Qt::Key_F2: {
- const QModelIndex &index = ui.treeView->currentIndex();
- const QModelIndex &source = proxyModel->mapToSource(index);
- QStandardItem *item =
- bookmarkManager->treeBookmarkModel()->itemFromIndex(source);
- if (item) {
- item->setEditable(true);
- ui.treeView->edit(index);
- item->setEditable(false);
- }
- } break;
-
- case Qt::Key_Delete: {
- const QModelIndex &index = ui.treeView->currentIndex();
- bookmarkManager->removeBookmarkItem(ui.treeView,
- proxyModel->mapToSource(index));
- ui.bookmarkFolders->clear();
- ui.bookmarkFolders->addItems(bookmarkManager->bookmarkFolders());
-
- QString name = tr("Bookmarks");
- if (index.isValid())
- name = index.data().toString();
- ui.bookmarkFolders->setCurrentIndex(ui.bookmarkFolders->findText(name));
- } break;
-
- default:
- break;
- }
- }
-
- return QObject::eventFilter(object, e);
+ if (bookmarkWidget)
+ return bookmarkWidget;
+ return 0;
}
-
-// BookmarkWidget
-
-
-BookmarkWidget::BookmarkWidget(BookmarkManager *manager, QWidget *parent,
- bool showButtons)
- : QWidget(parent)
- , addButton(0)
- , removeButton(0)
- , bookmarkManager(manager)
+void BookmarkManager::takeBookmarksMenu(QMenu* menu)
{
TRACE_OBJ
- setup(showButtons);
-
- installEventFilter(this);
- treeView->installEventFilter(this);
- treeView->viewport()->installEventFilter(this);
+ bookmarkMenu = menu;
+ refeshBookmarkMenu();
}
-BookmarkWidget::~BookmarkWidget()
-{
- TRACE_OBJ
-}
+// -- public slots
-void BookmarkWidget::removeClicked()
+void BookmarkManager::addBookmark(const QString &title, const QString &url)
{
TRACE_OBJ
- const QModelIndex &index = treeView->currentIndex();
- if (searchField->text().isEmpty()) {
- bookmarkManager->removeBookmarkItem(treeView,
- filterBookmarkModel->mapToSource(index));
- }
+ showBookmarkDialog(title.isEmpty() ? tr("Untiled") : title,
+ url.isEmpty() ? QLatin1String("about:blank") : url);
}
-void BookmarkWidget::filterChanged()
-{
- TRACE_OBJ
- bool searchBookmarks = searchField->text().isEmpty();
- if (!searchBookmarks) {
- regExp.setPattern(searchField->text());
- filterBookmarkModel->setSourceModel(bookmarkManager->listBookmarkModel());
- } else {
- regExp.setPattern(QLatin1String(""));
- filterBookmarkModel->setSourceModel(bookmarkManager->treeBookmarkModel());
- }
-
- if (addButton)
- addButton->setEnabled(searchBookmarks);
-
- if (removeButton)
- removeButton->setEnabled(searchBookmarks);
-
- filterBookmarkModel->setFilterRegExp(regExp);
+// -- private
- const QModelIndex &index = treeView->indexAt(QPoint(1, 1));
- if (index.isValid())
- treeView->setCurrentIndex(index);
-
- if (searchBookmarks)
- expandItems();
-}
+BookmarkManager::BookmarkManager()
+ : typeAndSearch(false)
+ , bookmarkMenu(0)
+ , bookmarkModel(new BookmarkModel)
+ , bookmarkWidget(new BookmarkWidget)
+ , bookmarkTreeView(new BookmarkTreeView)
+{
+ TRACE_OBJ
+ bookmarkWidget->installEventFilter(this);
+ connect(bookmarkWidget->ui.add, SIGNAL(clicked()), this,
+ SLOT(addBookmark()));
+ connect(bookmarkWidget->ui.remove, SIGNAL(clicked()), this,
+ SLOT(removeBookmark()));
+ connect(bookmarkWidget->ui.lineEdit, SIGNAL(textChanged(QString)), this,
+ SLOT(textChanged(QString)));
+ connect(bookmarkWidget, SIGNAL(focusInEvent()), this, SLOT(focusInEvent()));
-void BookmarkWidget::expand(const QModelIndex &index)
-{
- TRACE_OBJ
- const QModelIndex &source = filterBookmarkModel->mapToSource(index);
- QStandardItem *item =
- bookmarkManager->treeBookmarkModel()->itemFromIndex(source);
- if (item)
- item->setData(treeView->isExpanded(index), Qt::UserRole + 11);
-}
+ bookmarkTreeView->setModel(bookmarkModel);
+ bookmarkTreeView->installEventFilter(this);
+ bookmarkTreeView->viewport()->installEventFilter(this);
+ bookmarkTreeView->setContextMenuPolicy(Qt::CustomContextMenu);
+ bookmarkWidget->ui.stackedWidget->addWidget(bookmarkTreeView);
-void BookmarkWidget::activated(const QModelIndex &index)
-{
- TRACE_OBJ
- if (!index.isValid())
- return;
+ connect(bookmarkTreeView, SIGNAL(activated(QModelIndex)), this,
+ SLOT(setSourceFromIndex(QModelIndex)));
+ connect(bookmarkTreeView, SIGNAL(customContextMenuRequested(QPoint)), this,
+ SLOT(customContextMenuRequested(QPoint)));
- QString data = index.data(Qt::UserRole + 10).toString();
- if (data != QLatin1String("Folder"))
- emit requestShowLink(data);
+ connect(&HelpEngineWrapper::instance(), SIGNAL(setupFinished()), this,
+ SLOT(setupFinished()));
+ connect(bookmarkModel, SIGNAL(dataChanged(QModelIndex, QModelIndex)), this,
+ SLOT(refeshBookmarkMenu()));
}
-void BookmarkWidget::customContextMenuRequested(const QPoint &point)
+BookmarkManager::~BookmarkManager()
{
TRACE_OBJ
- QModelIndex index = treeView->indexAt(point);
- if (!index.isValid())
- return;
-
- QAction *showItem = 0;
- QAction *removeItem = 0;
- QAction *renameItem = 0;
- QAction *showItemNewTab = 0;
-
- QMenu menu(QLatin1String(""), this);
- QString data = index.data(Qt::UserRole + 10).toString();
- if (data == QLatin1String("Folder")) {
- removeItem = menu.addAction(tr("Delete Folder"));
- renameItem = menu.addAction(tr("Rename Folder"));
- } else {
- showItem = menu.addAction(tr("Show Bookmark"));
- showItemNewTab = menu.addAction(tr("Show Bookmark in New Tab"));
- if (searchField->text().isEmpty()) {
- menu.addSeparator();
- removeItem = menu.addAction(tr("Delete Bookmark"));
- renameItem = menu.addAction(tr("Rename Bookmark"));
- }
- }
-
- QAction *pickedAction = menu.exec(treeView->mapToGlobal(point));
- if (!pickedAction)
- return;
-
- if (pickedAction == showItem) {
- emit requestShowLink(data);
- }
- else if (pickedAction == showItemNewTab) {
- CentralWidget::instance()->setSourceInNewTab(data);
- }
- else if (pickedAction == removeItem) {
- bookmarkManager->removeBookmarkItem(treeView,
- filterBookmarkModel->mapToSource(index));
- }
- else if (pickedAction == renameItem) {
- const QModelIndex &source = filterBookmarkModel->mapToSource(index);
- QStandardItem *item =
- bookmarkManager->treeBookmarkModel()->itemFromIndex(source);
- if (item) {
- item->setEditable(true);
- treeView->edit(index);
- item->setEditable(false);
- }
- }
+ HelpEngineWrapper::instance().setBookmarks(bookmarkModel->bookmarks());
}
-void BookmarkWidget::setup(bool showButtons)
+void BookmarkManager::removeItem(const QModelIndex &index)
{
TRACE_OBJ
- regExp.setPatternSyntax(QRegExp::FixedString);
- regExp.setCaseSensitivity(Qt::CaseInsensitive);
-
- QLayout *vlayout = new QVBoxLayout(this);
- vlayout->setMargin(4);
-
- QLabel *label = new QLabel(tr("Filter:"), this);
- vlayout->addWidget(label);
-
- searchField = new QLineEdit(this);
- vlayout->addWidget(searchField);
- connect(searchField, SIGNAL(textChanged(QString)), this,
- SLOT(filterChanged()));
-
- treeView = new TreeView(this);
- vlayout->addWidget(treeView);
-
-#ifdef Q_OS_MAC
-# define SYSTEM "mac"
-#else
-# define SYSTEM "win"
-#endif
-
- if (showButtons) {
- QLayout *hlayout = new QHBoxLayout();
- vlayout->addItem(hlayout);
-
- hlayout->addItem(new QSpacerItem(40, 20, QSizePolicy::Expanding));
-
- addButton = new QToolButton(this);
- addButton->setText(tr("Add"));
- addButton->setIcon(QIcon(QLatin1String(":/trolltech/assistant/images/"
- SYSTEM "/addtab.png")));
- addButton->setAutoRaise(true);
- addButton->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
- hlayout->addWidget(addButton);
- connect(addButton, SIGNAL(clicked()), this, SIGNAL(addBookmark()));
-
- removeButton = new QToolButton(this);
- removeButton->setText(tr("Remove"));
- removeButton->setIcon(QIcon(QLatin1String(":/trolltech/assistant/images/"
- SYSTEM "/closetab.png")));
- removeButton->setAutoRaise(true);
- removeButton->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
- hlayout->addWidget(removeButton);
- connect(removeButton, SIGNAL(clicked()), this, SLOT(removeClicked()));
+ QModelIndex current = index;
+ if (typeAndSearch) { // need to map because of proxy
+ current = typeAndSearchModel->mapToSource(current);
+ current = bookmarkFilterModel->mapToSource(current);
+ } else if (!bookmarkModel->parent(index).isValid()) {
+ return; // check if we should delete the "Bookmarks Menu", bail
}
- filterBookmarkModel = new QSortFilterProxyModel(this);
- treeView->setModel(filterBookmarkModel);
-
- treeView->setDragEnabled(true);
- treeView->setAcceptDrops(true);
- treeView->setAutoExpandDelay(1000);
- treeView->setDropIndicatorShown(true);
- treeView->header()->setVisible(false);
- treeView->setContextMenuPolicy(Qt::CustomContextMenu);
-
- connect(treeView, SIGNAL(expanded(QModelIndex)), this,
- SLOT(expand(QModelIndex)));
- connect(treeView, SIGNAL(collapsed(QModelIndex)), this,
- SLOT(expand(QModelIndex)));
- connect(treeView, SIGNAL(activated(QModelIndex)), this,
- SLOT(activated(QModelIndex)));
- connect(treeView, SIGNAL(customContextMenuRequested(QPoint)),
- this, SLOT(customContextMenuRequested(QPoint)));
-
- filterBookmarkModel->setFilterKeyColumn(0);
- filterBookmarkModel->setDynamicSortFilter(true);
- filterBookmarkModel->setSourceModel(bookmarkManager->treeBookmarkModel());
-
- expandItems();
-}
-
-void BookmarkWidget::expandItems()
-{
- TRACE_OBJ
- QStandardItemModel *model = bookmarkManager->treeBookmarkModel();
- QList<QStandardItem*>list = model->findItems(QLatin1String("*"),
- Qt::MatchWildcard | Qt::MatchRecursive, 0);
- foreach (const QStandardItem *item, list) {
- const QModelIndex &index = model->indexFromItem(item);
- treeView->setExpanded(filterBookmarkModel->mapFromSource(index),
- item->data(Qt::UserRole + 11).toBool());
+ if (bookmarkModel->hasChildren(current)) {
+ int value = QMessageBox::question(bookmarkTreeView, tr("Remove"),
+ tr("You are going to delete a Folder, this will also<br>"
+ "remove it's content. Are you sure to continue?"),
+ QMessageBox::Yes | QMessageBox::Cancel, QMessageBox::Cancel);
+ if (value == QMessageBox::Cancel)
+ return;
}
+ bookmarkModel->removeItem(current);
}
-void BookmarkWidget::focusInEvent(QFocusEvent *e)
+bool BookmarkManager::eventFilter(QObject *object, QEvent *event)
{
- TRACE_OBJ
- if (e->reason() != Qt::MouseFocusReason) {
- searchField->selectAll();
- searchField->setFocus();
-
- QModelIndex index = treeView->indexAt(QPoint(1, 1));
- if (index.isValid())
- treeView->setCurrentIndex(index);
-
- }
-}
+ if (object != bookmarkTreeView && object != bookmarkTreeView->viewport()
+ && object != bookmarkWidget)
+ return QObject::eventFilter(object, event);
-bool BookmarkWidget::eventFilter(QObject *object, QEvent *e)
-{
TRACE_OBJ
- if (object != this && object != treeView
- && object != treeView->viewport()) {
- return QWidget::eventFilter(object, e);
- }
-
- if (e->type() == QEvent::KeyPress) {
- QKeyEvent *ke = static_cast<QKeyEvent*>(e);
- const bool tree = object == treeView || object == treeView->viewport();
+ const bool isWidget = object == bookmarkWidget;
+ if (event->type() == QEvent::KeyPress) {
+ QKeyEvent *ke = static_cast<QKeyEvent*>(event);
switch (ke->key()) {
case Qt::Key_F2: {
- const QModelIndex &index = treeView->currentIndex();
- const QModelIndex &src = filterBookmarkModel->mapToSource(index);
- if (tree && searchField->text().isEmpty()) {
- if (QStandardItem *item = bookmarkManager->treeBookmarkModel()
- ->itemFromIndex(src)) {
- item->setEditable(true);
- treeView->edit(index);
- item->setEditable(false);
- }
- }
- } break;
-
- case Qt::Key_Enter: {
- case Qt::Key_Return:
- if (tree) {
- const QString &data = treeView->selectionModel()->currentIndex()
- .data(Qt::UserRole + 10).toString();
- if (!data.isEmpty() && data != QLatin1String("Folder"))
- emit requestShowLink(data);
- }
+ renameBookmark(bookmarkTreeView->currentIndex());
} break;
case Qt::Key_Delete: {
- const QModelIndex &index = treeView->currentIndex();
- const QModelIndex &src = filterBookmarkModel->mapToSource(index);
- if (tree && searchField->text().isEmpty())
- bookmarkManager->removeBookmarkItem(treeView, src);
+ removeItem(bookmarkTreeView->currentIndex());
} break;
- case Qt::Key_Up: {
+ case Qt::Key_Up: { // needs event filter on widget
case Qt::Key_Down:
- if (!tree)
- treeView->subclassKeyPressEvent(ke);
+ if (isWidget)
+ bookmarkTreeView->subclassKeyPressEvent(ke);
} break;
case Qt::Key_Escape: {
@@ -620,348 +252,255 @@ bool BookmarkWidget::eventFilter(QObject *object, QEvent *e)
}
}
- if (e->type() == QEvent::MouseButtonRelease) {
- QMouseEvent *me = static_cast<QMouseEvent*>(e);
- bool controlPressed = me->modifiers() & Qt::ControlModifier;
- if(((me->button() == Qt::LeftButton) && controlPressed)
- || (me->button() == Qt::MidButton)) {
- const QModelIndex &index = treeView->currentIndex();
- const QString &data = index.data(Qt::UserRole + 10).toString();
- if (!data.isEmpty() && data != QLatin1String("Folder"))
- CentralWidget::instance()->setSourceInNewTab(data);
+ if (event->type() == QEvent::MouseButtonRelease && !isWidget) {
+ QMouseEvent *me = static_cast<QMouseEvent*>(event);
+ switch (me->button()) {
+ case Qt::LeftButton: {
+ if (me->modifiers() & Qt::ControlModifier)
+ setSourceFromIndex(bookmarkTreeView->currentIndex(), true);
+ } break;
+
+ case Qt::MidButton: {
+ setSourceFromIndex(bookmarkTreeView->currentIndex(), true);
+ } break;
+
+ default: break;
}
}
- return QWidget::eventFilter(object, e);
+ return QObject::eventFilter(object, event);
}
-
-// BookmarkModel
-
-
-BookmarkModel::BookmarkModel(int rows, int columns, QObject *parent)
- : QStandardItemModel(rows, columns, parent)
+void BookmarkManager::buildBookmarksMenu(const QModelIndex &index, QMenu* menu)
{
TRACE_OBJ
-}
+ if (!index.isValid())
+ return;
-BookmarkModel::~BookmarkModel()
-{
- TRACE_OBJ
+ const QString &text = index.data().toString();
+ const QIcon &icon = qVariantValue<QIcon>(index.data(Qt::DecorationRole));
+ if (index.data(UserRoleFolder).toBool()) {
+ if (QMenu* subMenu = menu->addMenu(icon, text)) {
+ for (int i = 0; i < bookmarkModel->rowCount(index); ++i)
+ buildBookmarksMenu(bookmarkModel->index(i, 0, index), subMenu);
+ }
+ } else {
+ QAction *action = menu->addAction(icon, text);
+ action->setData(index.data(UserRoleUrl).toString());
+ }
}
-Qt::DropActions BookmarkModel::supportedDropActions() const
+void BookmarkManager::showBookmarkDialog(const QString &name, const QString &url)
{
TRACE_OBJ
- return Qt::MoveAction;
+ BookmarkDialog dialog(bookmarkModel, name, url, bookmarkTreeView);
+ dialog.exec();
}
-Qt::ItemFlags BookmarkModel::flags(const QModelIndex &index) const
+// -- private slots
+
+void BookmarkManager::setupFinished()
{
TRACE_OBJ
- Qt::ItemFlags defaultFlags = QStandardItemModel::flags(index);
- if ((!index.isValid()) // can only happen for the invisible root item
- || index.data(Qt::UserRole + 10).toString() == QLatin1String("Folder"))
- return (Qt::ItemIsDropEnabled | defaultFlags) &~ Qt::ItemIsDragEnabled;
-
- return (Qt::ItemIsDragEnabled | defaultFlags) &~ Qt::ItemIsDropEnabled;
-}
+ bookmarkModel->setBookmarks(HelpEngineWrapper::instance().bookmarks());
+ bookmarkModel->expandFoldersIfNeeeded(bookmarkTreeView);
+ refeshBookmarkMenu();
-// BookmarkManager
+ bookmarkTreeView->hideColumn(1);
+ bookmarkTreeView->header()->setVisible(false);
+ bookmarkTreeView->header()->setStretchLastSection(true);
+ bookmarkFilterModel = new BookmarkFilterModel(this);
+ bookmarkFilterModel->setSourceModel(bookmarkModel);
+ bookmarkFilterModel->filterBookmarkFolders();
-BookmarkManager::BookmarkManager()
- : treeModel(new BookmarkModel(0, 1, this))
- , listModel(new BookmarkModel(0, 1, this))
- , renameItem(0)
-{
- TRACE_OBJ
- folderIcon = QApplication::style()->standardIcon(QStyle::SP_DirClosedIcon);
- bookmarkIcon = QIcon(QLatin1String(":/trolltech/assistant/images/bookmark.png"));
-
- connect(treeModel, SIGNAL(itemChanged(QStandardItem*)), this,
- SLOT(itemChanged(QStandardItem*)));
- connect(treeModel, SIGNAL(itemChanged(QStandardItem*)), this,
- SIGNAL(bookmarksChanged()));
- connect(treeModel, SIGNAL(rowsRemoved(QModelIndex,int,int)),
- this, SIGNAL(bookmarksChanged()));
+ typeAndSearchModel = new QSortFilterProxyModel(this);
+ typeAndSearchModel->setDynamicSortFilter(true);
+ typeAndSearchModel->setSourceModel(bookmarkFilterModel);
}
-BookmarkManager::~BookmarkManager()
+void BookmarkManager::addBookmark()
{
TRACE_OBJ
- treeModel->clear();
- listModel->clear();
+ if (CentralWidget *widget = CentralWidget::instance()) {
+ showBookmarkDialog(widget->currentTitle(),
+ widget->currentSource().toString());
+ }
}
-BookmarkModel* BookmarkManager::treeBookmarkModel()
+void BookmarkManager::removeBookmark()
{
TRACE_OBJ
- return treeModel;
+ removeItem(bookmarkTreeView->currentIndex());
}
-BookmarkModel* BookmarkManager::listBookmarkModel()
-{
- TRACE_OBJ
- return listModel;
-}
+//void BookmarkManager::manageBookmarks()
+//{
+// TRACE_OBJ
+//}
-void BookmarkManager::saveBookmarks()
+void BookmarkManager::refeshBookmarkMenu()
{
TRACE_OBJ
- QByteArray bookmarks;
- QDataStream stream(&bookmarks, QIODevice::WriteOnly);
+ if (!bookmarkMenu)
+ return;
- readBookmarksRecursive(treeModel->invisibleRootItem(), stream, 0);
- HelpEngineWrapper::instance().setBookmarks(bookmarks);
-}
+ bookmarkMenu->clear();
-QStringList BookmarkManager::bookmarkFolders() const
-{
- TRACE_OBJ
- QStringList folders(tr("Bookmarks"));
+ //bookmarkMenu->addAction(tr("Manage Bookmarks..."), this,
+ // SLOT(manageBookmarks()));
+ bookmarkMenu->addAction(tr("Import..."), this, SLOT(importBookmarks()));
+ bookmarkMenu->addAction(tr("Export..."), this, SLOT(exportBookmarks()));
+ bookmarkMenu->addAction(tr("Add Bookmark..."), this, SLOT(addBookmark()),
+ QKeySequence(tr("Ctrl+D")));
+ bookmarkMenu->addSeparator();
- QList<QStandardItem*>list = treeModel->findItems(QLatin1String("*"),
- Qt::MatchWildcard | Qt::MatchRecursive, 0);
+ const QModelIndex &root = bookmarkModel->index(0, 0, QModelIndex());
+ for (int i = 0; i < bookmarkModel->rowCount(root); ++i)
+ buildBookmarksMenu(bookmarkModel->index(i, 0, root), bookmarkMenu);
- QString data;
- foreach (const QStandardItem *item, list) {
- data = item->data(Qt::UserRole + 10).toString();
- if (data == QLatin1String("Folder"))
- folders << item->data(Qt::DisplayRole).toString();
- }
- return folders;
+ connect(bookmarkMenu, SIGNAL(triggered(QAction*)), this,
+ SLOT(setSourceFromAction(QAction*)));
}
-QModelIndex BookmarkManager::addNewFolder(const QModelIndex &index)
+void BookmarkManager::renameBookmark(const QModelIndex &index)
{
- TRACE_OBJ
- QStandardItem *item = new QStandardItem(uniqueFolderName());
- item->setEditable(false);
- item->setData(false, Qt::UserRole + 11);
- item->setData(QLatin1String("Folder"), Qt::UserRole + 10);
- item->setIcon(QApplication::style()->standardIcon(QStyle::SP_DirClosedIcon));
-
- if (index.isValid()) {
- treeModel->itemFromIndex(index)->appendRow(item);
- } else {
- treeModel->appendRow(item);
- }
- return treeModel->indexFromItem(item);
+ // check if we should rename the "Bookmarks Menu", bail
+ if (!typeAndSearch && !bookmarkModel->parent(index).isValid())
+ return;
+
+ bookmarkModel->setItemsEditable(true);
+ bookmarkTreeView->edit(index);
+ bookmarkModel->setItemsEditable(false);
}
-void BookmarkManager::removeBookmarkItem(QTreeView *treeView,
- const QModelIndex &index)
+void BookmarkManager::importBookmarks()
{
TRACE_OBJ
- QStandardItem *item = treeModel->itemFromIndex(index);
- if (item) {
- QString data = index.data(Qt::UserRole + 10).toString();
- if (data == QLatin1String("Folder") && item->rowCount() > 0) {
- int value = QMessageBox::question(treeView, tr("Remove"),
- tr("You are going to delete a Folder, this will also<br>"
- "remove it's content. Are you sure to continue?"),
- QMessageBox::Yes | QMessageBox::Cancel, QMessageBox::Cancel);
-
- if (value == QMessageBox::Cancel)
- return;
- }
+ const QString &fileName = QFileDialog::getOpenFileName(0, tr("Open File"),
+ QDir::currentPath(), tr("Files (*.xbel)"));
- if (data != QLatin1String("Folder")) {
- QList<QStandardItem*>itemList = listModel->findItems(item->text());
- foreach (const QStandardItem *i, itemList) {
- if (i->data(Qt::UserRole + 10) == data) {
- listModel->removeRow(i->row());
- break;
- }
- }
- } else {
- removeBookmarkFolderItems(item);
- }
- treeModel->removeRow(item->row(), index.parent());
+ if (fileName.isEmpty())
+ return;
+
+ QFile file(fileName);
+ if (file.open(QIODevice::ReadOnly)) {
+ XbelReader reader(bookmarkModel);
+ reader.readFromFile(&file);
}
}
-void BookmarkManager::showBookmarkDialog(QWidget *parent, const QString &name,
- const QString &url)
+void BookmarkManager::exportBookmarks()
{
TRACE_OBJ
- BookmarkDialog dialog(this, name, url, parent);
- dialog.exec();
-}
+ QString fileName = QFileDialog::getSaveFileName(0, tr("Save File"),
+ QLatin1String("untitled.xbel"), tr("Files (*.xbel)"));
-void BookmarkManager::addNewBookmark(const QModelIndex &index,
- const QString &name, const QString &url)
-{
- TRACE_OBJ
- QStandardItem *item = new QStandardItem(name);
- item->setEditable(false);
- item->setIcon(bookmarkIcon);
- item->setData(false, Qt::UserRole + 11);
- item->setData(url, Qt::UserRole + 10);
+ const QLatin1String suffix(".xbel");
+ if (!fileName.endsWith(suffix))
+ fileName.append(suffix);
- if (index.isValid())
- treeModel->itemFromIndex(index)->appendRow(item);
- else
- treeModel->appendRow(item);
- listModel->appendRow(item->clone());
- emit bookmarksChanged();
+ QFile file(fileName);
+ if (file.open(QIODevice::WriteOnly)) {
+ XbelWriter writer(bookmarkModel);
+ writer.writeToFile(&file);
+ } else {
+ QMessageBox::information(bookmarkTreeView, tr("Qt Assistant"),
+ tr("Unable to save bookmarks."), tr("OK"));
+ }
}
-void BookmarkManager::fillBookmarkMenu(QMenu *menu)
+void BookmarkManager::setSourceFromAction(QAction *action)
{
TRACE_OBJ
- if (!menu || !treeModel)
- return;
+ const QVariant &data = action->data();
- map.clear();
- fillBookmarkMenu(menu, treeModel->invisibleRootItem());
+ if (data.canConvert<QUrl>())
+ emit setSource(data.toUrl());
}
-void BookmarkManager::fillBookmarkMenu(QMenu *menu, QStandardItem *root)
+void BookmarkManager::setSourceFromIndex(const QModelIndex &index, bool newTab)
{
TRACE_OBJ
- for (int i = 0; i < root->rowCount(); ++i) {
- QStandardItem *item = root->child(i);
- if (item && item->data(Qt::UserRole + 10)
- .toString() == QLatin1String("Folder")) {
- QMenu* newMenu = menu->addMenu(folderIcon, item->text());
- if (item->rowCount() > 0)
- fillBookmarkMenu(newMenu, item);
- } else {
- map.insert(menu->addAction(item->text()), item->index());
- }
- }
-}
+ QAbstractItemModel *base = bookmarkModel;
+ if (typeAndSearch)
+ base = typeAndSearchModel;
-QUrl BookmarkManager::urlForAction(QAction* action) const
-{
- TRACE_OBJ
- if (map.contains(action)) {
- const QModelIndex &index = map.value(action);
- if (QStandardItem* item = treeModel->itemFromIndex(index))
- return QUrl(item->data(Qt::UserRole + 10).toString());
+ if (base->data(index, UserRoleFolder).toBool())
+ return;
+
+ const QVariant &data = base->data(index, UserRoleUrl);
+ if (data.canConvert<QUrl>()) {
+ if (newTab)
+ emit setSourceInNewTab(data.toUrl());
+ else
+ emit setSource(data.toUrl());
}
- return QUrl();
}
-void BookmarkManager::itemChanged(QStandardItem *item)
+void BookmarkManager::customContextMenuRequested(const QPoint &point)
{
TRACE_OBJ
- if (renameItem != item) {
- renameItem = item;
- oldText = item->text();
+ QModelIndex index = bookmarkTreeView->indexAt(point);
+ if (!index.isValid())
return;
- }
- if (item->text() != oldText) {
- if (item->data(Qt::UserRole + 10).toString() != QLatin1String("Folder")) {
- QList<QStandardItem*>itemList = listModel->findItems(oldText);
- if (itemList.count() > 0)
- itemList.at(0)->setText(item->text());
- }
- }
-}
+ // check if we should open the menu on "Bookmarks Menu", bail
+ if (!typeAndSearch && !bookmarkModel->parent(index).isValid())
+ return;
-void BookmarkManager::setupBookmarkModels()
-{
- TRACE_OBJ
- treeModel->clear();
- listModel->clear();
-
- qint32 depth;
- bool expanded;
- QString name, type;
- QList<int> lastDepths;
- QList<QStandardItem*> parents;
-
- QByteArray ba = HelpEngineWrapper::instance().bookmarks();
- QDataStream stream(ba);
- while (!stream.atEnd()) {
- stream >> depth >> name >> type >> expanded;
-
- QStandardItem *item = new QStandardItem(name);
- item->setEditable(false);
- item->setData(type, Qt::UserRole + 10);
- item->setData(expanded, Qt::UserRole + 11);
- if (depth == 0) {
- parents.clear(); lastDepths.clear();
- treeModel->appendRow(item);
- parents << item; lastDepths << depth;
- } else {
- if (depth <= lastDepths.last()) {
- while (depth <= lastDepths.last() && parents.count() > 0) {
- parents.pop_back(); lastDepths.pop_back();
- }
- }
- parents.last()->appendRow(item);
- if (type == QLatin1String("Folder")) {
- parents << item; lastDepths << depth;
- }
- }
+ QAction *remove = 0;
+ QAction *rename = 0;
+ QAction *showItem = 0;
+ QAction *showItemInNewTab = 0;
- if (type != QLatin1String("Folder")) {
- item->setIcon(bookmarkIcon);
- listModel->appendRow(item->clone());
- } else {
- item->setIcon(folderIcon);
- }
+ QMenu menu(QLatin1String(""));
+ if (!typeAndSearch && bookmarkModel->data(index, UserRoleFolder).toBool()) {
+ remove = menu.addAction(tr("Delete Folder"));
+ rename = menu.addAction(tr("Rename Folder"));
+ } else {
+ showItem = menu.addAction(tr("Show Bookmark"));
+ showItemInNewTab = menu.addAction(tr("Show Bookmark in New Tab"));
+ menu.addSeparator();
+ remove = menu.addAction(tr("Delete Bookmark"));
+ rename = menu.addAction(tr("Rename Bookmark"));
}
-}
-QString BookmarkManager::uniqueFolderName() const
-{
- TRACE_OBJ
- QString folderName = tr("New Folder");
- QList<QStandardItem*> list = treeModel->findItems(folderName,
- Qt::MatchContains | Qt::MatchRecursive, 0);
- if (!list.isEmpty()) {
- QStringList names;
- foreach (const QStandardItem *item, list)
- names << item->text();
-
- for (int i = 1; i <= names.count(); ++i) {
- folderName = (tr("New Folder") + QLatin1String(" %1")).arg(i);
- if (!names.contains(folderName))
- break;
- }
- }
- return folderName;
+ QAction *pickedAction = menu.exec(bookmarkTreeView->mapToGlobal(point));
+ if (pickedAction == rename)
+ renameBookmark(index);
+ else if (pickedAction == remove)
+ removeItem(index);
+ else if (pickedAction == showItem || pickedAction == showItemInNewTab)
+ setSourceFromIndex(index, pickedAction == showItemInNewTab);
}
-void BookmarkManager::removeBookmarkFolderItems(QStandardItem *item)
+void BookmarkManager::focusInEvent()
{
TRACE_OBJ
- for (int j = 0; j < item->rowCount(); ++j) {
- QStandardItem *child = item->child(j);
- if (child->rowCount() > 0)
- removeBookmarkFolderItems(child);
-
- QString data = child->data(Qt::UserRole + 10).toString();
- QList<QStandardItem*>itemList = listModel->findItems(child->text());
- foreach (const QStandardItem *i, itemList) {
- if (i->data(Qt::UserRole + 10) == data) {
- listModel->removeRow(i->row());
- break;
- }
- }
- }
+ const QModelIndex &index = bookmarkTreeView->indexAt(QPoint(2, 2));
+ if (index.isValid())
+ bookmarkTreeView->setCurrentIndex(index);
}
-void BookmarkManager::readBookmarksRecursive(const QStandardItem *item,
- QDataStream &stream, const qint32 depth) const
+void BookmarkManager::textChanged(const QString &text)
{
TRACE_OBJ
- for (int j = 0; j < item->rowCount(); ++j) {
- const QStandardItem *child = item->child(j);
- stream << depth;
- stream << child->data(Qt::DisplayRole).toString();
- stream << child->data(Qt::UserRole + 10).toString();
- stream << child->data(Qt::UserRole + 11).toBool();
-
- if (child->rowCount() > 0)
- readBookmarksRecursive(child, stream, (depth +1));
+ if (!bookmarkWidget->ui.lineEdit->text().isEmpty()) {
+ if (!typeAndSearch) {
+ typeAndSearch = true;
+ bookmarkTreeView->setItemsExpandable(false);
+ bookmarkTreeView->setRootIsDecorated(false);
+ bookmarkTreeView->setModel(typeAndSearchModel);
+ }
+ typeAndSearchModel->setFilterRegExp(QRegExp(text));
+ } else {
+ typeAndSearch = false;
+ bookmarkTreeView->setModel(bookmarkModel);
+ bookmarkTreeView->setItemsExpandable(true);
+ bookmarkTreeView->setRootIsDecorated(true);
+ bookmarkModel->expandFoldersIfNeeeded(bookmarkTreeView);
}
}
diff --git a/tools/assistant/tools/assistant/bookmarkmanager.h b/tools/assistant/tools/assistant/bookmarkmanager.h
index fbacc2c..88342d5 100644
--- a/tools/assistant/tools/assistant/bookmarkmanager.h
+++ b/tools/assistant/tools/assistant/bookmarkmanager.h
@@ -38,179 +38,118 @@
** $QT_END_LICENSE$
**
****************************************************************************/
-
#ifndef BOOKMARKMANAGER_H
#define BOOKMARKMANAGER_H
-#include "ui_bookmarkdialog.h"
-
-#include <QtCore/QUrl>
-#include <QtCore/QObject>
-#include <QtCore/QString>
-#include <QtCore/QByteArray>
-#include <QtCore/QDataStream>
-
-#include <QtGui/QIcon>
-#include <QtGui/QDialog>
-#include <QtGui/QWidget>
+#include <QtCore/QMutex>
#include <QtGui/QTreeView>
-#include <QtGui/QStandardItemModel>
+
+#include "ui_bookmarkwidget.h"
QT_BEGIN_NAMESPACE
-class QEvent;
-class QLineEdit;
-class QTreeView;
-class QToolButton;
-class QStandardItem;
-class QHelpEngineCore;
-class QAbstractItemModel;
+class BookmarkModel;
+class BookmarkFilterModel;
+class QKeyEvent;
class QSortFilterProxyModel;
-class BookmarkManager;
-
-class BookmarkDialog : public QDialog
+class BookmarkManager : public QObject
{
Q_OBJECT
+ class BookmarkWidget;
+ class BookmarkTreeView;
+ class BookmarkListView;
+ Q_DISABLE_COPY(BookmarkManager);
public:
- BookmarkDialog(BookmarkManager *manager, const QString &title,
- const QString &url, QWidget *parent = 0);
- ~BookmarkDialog();
+ static BookmarkManager* instance();
+ static void destroy();
-private slots:
- void addAccepted();
- void addNewFolder();
- void toolButtonClicked();
- void itemChanged(QStandardItem *item);
- void textChanged(const QString& string);
- void selectBookmarkFolder(const QString &folderName);
- void customContextMenuRequested(const QPoint &point);
- void currentChanged(const QModelIndex& current);
+ QWidget* bookmarkDockWidget() const;
+ void takeBookmarksMenu(QMenu* menu);
-private:
- bool eventFilter(QObject *object, QEvent *e);
- void renameFolder(const QModelIndex &index, const QModelIndex &proxyIndex);
+public slots:
+ void addBookmark(const QString &title, const QString &url);
+
+signals:
+ void escapePressed();
+ void setSource(const QUrl &url);
+ void setSourceInNewTab(const QUrl &url);
private:
- QString m_url;
- QString m_title;
+ BookmarkManager();
+ ~BookmarkManager();
- QString oldText;
- QStandardItem *renameItem;
+ void removeItem(const QModelIndex &index);
+ bool eventFilter(QObject *object, QEvent *event);
+ void buildBookmarksMenu(const QModelIndex &index, QMenu *menu);
+ void showBookmarkDialog(const QString &name, const QString &url);
- Ui::BookmarkDialog ui;
- BookmarkManager *bookmarkManager;
- QSortFilterProxyModel *proxyModel;
-};
+private slots:
+ void setupFinished();
-class TreeView : public QTreeView {
- Q_OBJECT
-public:
- TreeView(QWidget* parent = 0) : QTreeView(parent) {}
- void subclassKeyPressEvent(QKeyEvent* event)
- {
- QTreeView::keyPressEvent(event);
- }
-};
+ void addBookmark();
+ void removeBookmark();
+// void manageBookmarks();
+ void refeshBookmarkMenu();
+ void renameBookmark(const QModelIndex &index);
-class BookmarkWidget : public QWidget
-{
- Q_OBJECT
+ void importBookmarks();
+ void exportBookmarks();
-public:
- BookmarkWidget(BookmarkManager *manager, QWidget *parent = 0,
- bool showButtons = true);
- ~BookmarkWidget();
+ void setSourceFromAction(QAction *action);
+ void setSourceFromIndex(const QModelIndex &index, bool newTab = false);
-signals:
- void addBookmark();
- void requestShowLink(const QUrl &url);
- void escapePressed();
-
-private slots:
- void removeClicked();
- void filterChanged();
- void expand(const QModelIndex& index);
- void activated(const QModelIndex &index);
+ void focusInEvent();
+ void textChanged(const QString &text);
void customContextMenuRequested(const QPoint &point);
private:
- void setup(bool showButtons);
- void expandItems();
- void focusInEvent(QFocusEvent *e);
- bool eventFilter(QObject *object, QEvent *event);
+ bool typeAndSearch;
-private:
- QRegExp regExp;
- TreeView *treeView;
- QLineEdit *searchField;
- QToolButton *addButton;
- QToolButton *removeButton;
- BookmarkManager *bookmarkManager;
- QSortFilterProxyModel* filterBookmarkModel;
-};
+ static QMutex mutex;
+ static BookmarkManager *bookmarkManager;
-class BookmarkModel : public QStandardItemModel
-{
- Q_OBJECT
+ QMenu *bookmarkMenu;
-public:
- BookmarkModel(int rows, int columns, QObject *parent = 0);
- ~BookmarkModel();
+ BookmarkModel *bookmarkModel;
+ BookmarkFilterModel *bookmarkFilterModel;
+ QSortFilterProxyModel *typeAndSearchModel;
- Qt::DropActions supportedDropActions() const;
- Qt::ItemFlags flags(const QModelIndex &index) const;
+ BookmarkWidget *bookmarkWidget;
+ BookmarkTreeView *bookmarkTreeView;
};
-class BookmarkManager : public QObject
+class BookmarkManager::BookmarkWidget : public QWidget
{
Q_OBJECT
-
public:
- BookmarkManager();
- ~BookmarkManager();
+ BookmarkWidget(QWidget *parent = 0)
+ : QWidget(parent) { ui.setupUi(this); }
+ virtual ~BookmarkWidget() {}
- BookmarkModel* treeBookmarkModel();
- BookmarkModel* listBookmarkModel();
-
- void saveBookmarks();
- QStringList bookmarkFolders() const;
- QModelIndex addNewFolder(const QModelIndex& index);
- void removeBookmarkItem(QTreeView *treeView, const QModelIndex& index);
- void showBookmarkDialog(QWidget* parent, const QString &name,
- const QString &url);
- void addNewBookmark(const QModelIndex& index, const QString &name,
- const QString &url);
- void setupBookmarkModels();
-
- void fillBookmarkMenu(QMenu *menu);
- QUrl urlForAction(QAction* action) const;
+ Ui::BookmarkWidget ui;
signals:
- void bookmarksChanged();
-
-private slots:
- void itemChanged(QStandardItem *item);
+ void focusInEvent();
private:
- QString uniqueFolderName() const;
- void removeBookmarkFolderItems(QStandardItem *item);
- void readBookmarksRecursive(const QStandardItem *item, QDataStream &stream,
- const qint32 depth) const;
- void fillBookmarkMenu(QMenu *menu, QStandardItem *root);
+ void focusInEvent(QFocusEvent *event);
+};
-private:
- QString oldText;
- QIcon folderIcon;
- QIcon bookmarkIcon;
-
- BookmarkModel *treeModel;
- BookmarkModel *listModel;
- QStandardItem *renameItem;
- QMap<QAction*, QModelIndex> map;
+class BookmarkManager::BookmarkTreeView : public QTreeView
+{
+ Q_OBJECT
+public:
+ BookmarkTreeView(QWidget *parent = 0);
+ ~BookmarkTreeView() {}
+
+ void subclassKeyPressEvent(QKeyEvent *event);
+
+private slots:
+ void setExpandedData(const QModelIndex &index);
};
QT_END_NAMESPACE
-#endif
+#endif // BOOKMARKMANAGER_H
diff --git a/tools/assistant/tools/assistant/bookmarkmodel.cpp b/tools/assistant/tools/assistant/bookmarkmodel.cpp
new file mode 100644
index 0000000..c785f16
--- /dev/null
+++ b/tools/assistant/tools/assistant/bookmarkmodel.cpp
@@ -0,0 +1,425 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt Assistant of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include "bookmarkmodel.h"
+#include "bookmarkitem.h"
+
+#include <QtCore/QMimeData>
+#include <QtCore/QStack>
+
+#include <QtGui/QApplication>
+#include <QtGui/QStyle>
+#include <QtGui/QTreeView>
+
+const QLatin1String MIMETYPE("application/bookmarks.assistant");
+
+BookmarkModel::BookmarkModel()
+ : QAbstractItemModel()
+ , m_folder(false)
+ , m_editable(false)
+ , rootItem(0)
+{
+}
+
+BookmarkModel::~BookmarkModel()
+{
+ delete rootItem;
+}
+
+QByteArray
+BookmarkModel::bookmarks() const
+{
+ QByteArray ba;
+ QDataStream stream(&ba, QIODevice::WriteOnly);
+
+ const QModelIndex &root = index(0,0, QModelIndex());
+ for (int i = 0; i < rowCount(root); ++i)
+ collectItems(index(i, 0, root), 0, &stream);
+
+ return ba;
+}
+
+void
+BookmarkModel::setBookmarks(const QByteArray &bookmarks)
+{
+ folderIcon = QApplication::style()->standardIcon(QStyle::SP_DirClosedIcon);
+ bookmarkIcon = QIcon(QLatin1String(":/trolltech/assistant/images/bookmark.png"));
+
+ rootItem = new BookmarkItem(DataVector() << tr("Name") << tr("Address")
+ << true);
+ BookmarkItem* item = new BookmarkItem(DataVector() << tr("Bookmarks Menu")
+ << QLatin1String("Folder") << true);
+ rootItem->addChild(item);
+
+ QStack<BookmarkItem*> parents;
+ parents.push(item);
+
+ qint32 depth;
+ bool expanded;
+ QString name, url;
+ QDataStream stream(bookmarks);
+ while (!stream.atEnd()) {
+ stream >> depth >> name >> url >> expanded;
+
+ while ((parents.count() - 1) != depth)
+ parents.pop();
+
+ item = new BookmarkItem(DataVector() << name << url << expanded);
+ if (url == QLatin1String("Folder")) {
+ parents.top()->addChild(item);
+ parents.push(item);
+ } else {
+ parents.top()->addChild(item);
+ }
+ }
+
+ cache.clear();
+ const QModelIndex &root = index(0,0, QModelIndex());
+
+ setupCache(root);
+ cache.insert(static_cast<BookmarkItem*> (root.internalPointer()), root);
+}
+
+void
+BookmarkModel::setItemsEditable(bool editable)
+{
+ m_editable = editable;
+}
+
+void
+BookmarkModel::expandFoldersIfNeeeded(QTreeView *treeView)
+{
+ foreach (const QModelIndex &index, cache)
+ treeView->setExpanded(index, index.data(UserRoleExpanded).toBool());
+}
+
+QModelIndex
+BookmarkModel::addItem(const QModelIndex &parent, bool isFolder)
+{
+ m_folder = isFolder;
+ QModelIndex next;
+ if (insertRow(rowCount(parent), parent))
+ next = index(rowCount(parent) - 1, 0, parent);
+ m_folder = false;
+
+ return next;
+}
+
+bool
+BookmarkModel::removeItem(const QModelIndex &index)
+{
+ if (!index.isValid())
+ return false;
+
+ QModelIndexList indexes;
+ if (rowCount(index) > 0)
+ indexes = collectItems(index);
+ indexes.append(index);
+
+ foreach (const QModelIndex &itemToRemove, indexes) {
+ if (!removeRow(itemToRemove.row(), itemToRemove.parent()))
+ return false;
+ cache.remove(itemFromIndex(itemToRemove));
+ }
+ return true;
+}
+
+int
+BookmarkModel::rowCount(const QModelIndex &index) const
+{
+ if (BookmarkItem *item = itemFromIndex(index))
+ return item->childCount();
+ return 0;
+}
+
+int
+BookmarkModel::columnCount(const QModelIndex &/*index*/) const
+{
+ return 2;
+}
+
+QModelIndex
+BookmarkModel::parent(const QModelIndex &index) const
+{
+ if (!index.isValid())
+ return QModelIndex();
+
+ if (BookmarkItem *childItem = itemFromIndex(index)) {
+ if (BookmarkItem *parent = childItem->parent()) {
+ if (parent != rootItem)
+ return createIndex(parent->childNumber(), 0, parent);
+ }
+ }
+ return QModelIndex();
+}
+
+QModelIndex
+BookmarkModel::index(int row, int column, const QModelIndex &index) const
+{
+ if (index.isValid() && (index.column() != 0 && index.column() != 1))
+ return QModelIndex();
+
+ if (BookmarkItem *parent = itemFromIndex(index)) {
+ if (BookmarkItem *childItem = parent->child(row))
+ return createIndex(row, column, childItem);
+ }
+ return QModelIndex();
+}
+
+Qt::DropActions
+BookmarkModel::supportedDropActions () const
+{
+ return /* Qt::CopyAction | */Qt::MoveAction;
+}
+
+Qt::ItemFlags
+BookmarkModel::flags(const QModelIndex &index) const
+{
+ if (!index.isValid())
+ return Qt::NoItemFlags;
+
+ Qt::ItemFlags defaultFlags = Qt::ItemIsEnabled | Qt::ItemIsSelectable;
+
+ if (m_editable)
+ defaultFlags |= Qt::ItemIsEditable;
+
+ if (itemFromIndex(index) && index.data(UserRoleFolder).toBool()
+ && index.column() > 0) {
+ defaultFlags &= ~Qt::ItemIsEditable;
+ return defaultFlags | Qt::ItemIsDropEnabled;
+ }
+
+ return defaultFlags | Qt::ItemIsDragEnabled;
+}
+
+QVariant
+BookmarkModel::data(const QModelIndex &index, int role) const
+{
+ if (index.isValid()) {
+ if (BookmarkItem *item = itemFromIndex(index)) {
+ switch (role) {
+ case Qt::EditRole: {
+ case Qt::DisplayRole:
+ if (index.data(UserRoleFolder).toBool() && index.column() == 1)
+ return QLatin1String("");
+ return item->data(index.column());
+ } break;
+ case Qt::DecorationRole: {
+ if (index.column() == 0)
+ return index.data(UserRoleFolder).toBool()
+ ? folderIcon : bookmarkIcon;
+ } break;
+ default:;
+ return item->data(role);
+ }
+ }
+ }
+ return QVariant();
+}
+
+bool
+BookmarkModel::setData(const QModelIndex &index, const QVariant &value, int role)
+{
+ bool result = false;
+ if (role != Qt::EditRole && role != UserRoleExpanded)
+ return result;
+
+ if (BookmarkItem *item = itemFromIndex(index)) {
+ if (role == Qt::EditRole) {
+ const bool isFolder = index.data(UserRoleFolder).toBool();
+ if (!isFolder || (isFolder && index.column() == 0))
+ result = item->setData(index.column(), value);
+ } else if (role == UserRoleExpanded) {
+ result = item->setData(UserRoleExpanded, value);
+ }
+ }
+
+ if (result)
+ emit dataChanged(index, index);
+ return result;
+}
+
+QVariant
+BookmarkModel::headerData(int section, Qt::Orientation orientation,
+ int role) const
+{
+ if (rootItem && orientation == Qt::Horizontal && role == Qt::DisplayRole)
+ return rootItem->data(section);
+ return QVariant();
+}
+
+QModelIndex
+BookmarkModel::indexFromItem(BookmarkItem *item) const
+{
+ return cache.value(item, QModelIndex());
+}
+
+BookmarkItem*
+BookmarkModel::itemFromIndex(const QModelIndex &index) const
+{
+ if (index.isValid())
+ return static_cast<BookmarkItem*>(index.internalPointer());
+ return rootItem;
+}
+
+bool
+BookmarkModel::insertRows(int position, int rows, const QModelIndex &parent)
+{
+ if (!parent.data(UserRoleFolder).toBool())
+ return false;
+
+ bool success = false;
+ if (BookmarkItem *parentItem = itemFromIndex(parent)) {
+ beginInsertRows(parent, position, position + rows - 1);
+ success = parentItem->insertChildren(m_folder, position, rows);
+ if (success) {
+ const QModelIndex &current = index(position, 0, parent);
+ cache.insert(itemFromIndex(current), current);
+ }
+ endInsertRows();
+ }
+ return success;
+}
+
+bool
+BookmarkModel::removeRows(int position, int rows, const QModelIndex &index)
+{
+ bool success = false;
+ if (BookmarkItem *parent = itemFromIndex(index)) {
+ beginRemoveRows(index, position, position + rows - 1);
+ success = parent->removeChildren(position, rows);
+ endRemoveRows();
+ }
+ return success;
+}
+
+QStringList
+BookmarkModel::mimeTypes() const
+{
+ return QStringList() << MIMETYPE;
+}
+
+QMimeData*
+BookmarkModel::mimeData(const QModelIndexList &indexes) const
+{
+ if (indexes.isEmpty())
+ return 0;
+
+ QByteArray data;
+ QDataStream stream(&data, QIODevice::WriteOnly);
+
+ foreach (const QModelIndex &index, indexes) {
+ if (index.column() == 0)
+ collectItems(index, 0, &stream);
+ }
+
+ QMimeData *mimeData = new QMimeData();
+ mimeData->setData(MIMETYPE, data);
+ return mimeData;
+}
+
+bool
+BookmarkModel::dropMimeData(const QMimeData *data, Qt::DropAction action,
+ int row, int column, const QModelIndex &parent)
+{
+ if (action == Qt::IgnoreAction)
+ return true;
+
+ if (!data->hasFormat(MIMETYPE) || column > 0)
+ return false;
+
+ QByteArray ba = data->data(MIMETYPE);
+ QDataStream stream(&ba, QIODevice::ReadOnly);
+ while (stream.atEnd())
+ return false;
+
+ qint32 depth;
+ bool expanded;
+ QString name, url;
+ while (!stream.atEnd()) {
+ stream >> depth >> name >> url >> expanded;
+ if (insertRow(qMax(0, row), parent)) {
+ const QModelIndex &current = index(qMax(0, row), 0, parent);
+ if (current.isValid()) {
+ BookmarkItem* item = itemFromIndex(current);
+ item->setData(DataVector() << name << url << expanded);
+ }
+ }
+ }
+ return true;
+}
+
+void
+BookmarkModel::setupCache(const QModelIndex &parent)
+{
+ const QModelIndexList &list = collectItems(parent);
+ foreach (const QModelIndex &index, list)
+ cache.insert(itemFromIndex(index), index);
+}
+
+QModelIndexList
+BookmarkModel::collectItems(const QModelIndex &parent) const
+{
+ QModelIndexList list;
+ for (int i = rowCount(parent) - 1; i >= 0 ; --i) {
+ const QModelIndex &next = index(i, 0, parent);
+ if (data(next, UserRoleFolder).toBool())
+ list += collectItems(next);
+ list.append(next);
+ }
+ return list;
+}
+
+void
+BookmarkModel::collectItems(const QModelIndex &parent, qint32 depth,
+ QDataStream *stream) const
+{
+ if (parent.isValid()) {
+ *stream << depth;
+ *stream << parent.data().toString();
+ *stream << parent.data(UserRoleUrl).toString();
+ *stream << parent.data(UserRoleExpanded).toBool();
+
+ for (int i = 0; i < rowCount(parent); ++i) {
+ if (parent.data(UserRoleFolder).toBool())
+ collectItems(index(i, 0 , parent), depth + 1, stream);
+ }
+ }
+}
diff --git a/tools/assistant/tools/assistant/bookmarkmodel.h b/tools/assistant/tools/assistant/bookmarkmodel.h
new file mode 100644
index 0000000..6b2a0b8
--- /dev/null
+++ b/tools/assistant/tools/assistant/bookmarkmodel.h
@@ -0,0 +1,115 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt Assistant of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#ifndef BOOKMARKMODEL_H
+#define BOOKMARKMODEL_H
+
+#include <QtCore/QAbstractItemModel>
+
+#include <QtGui/QIcon>
+
+QT_BEGIN_NAMESPACE
+
+class BookmarkItem;
+class QMimeData;
+class QTreeView;
+
+typedef QMap<BookmarkItem*, QPersistentModelIndex> ItemModelIndexCache;
+
+class BookmarkModel : public QAbstractItemModel
+{
+ Q_OBJECT
+public:
+ BookmarkModel();
+ ~BookmarkModel();
+
+ QByteArray bookmarks() const;
+ void setBookmarks(const QByteArray &bookmarks);
+
+ void setItemsEditable(bool editable);
+ void expandFoldersIfNeeeded(QTreeView *treeView);
+
+ QModelIndex addItem(const QModelIndex &parent, bool isFolder = false);
+ bool removeItem(const QModelIndex &index);
+
+ int rowCount(const QModelIndex &index = QModelIndex()) const;
+ int columnCount(const QModelIndex &index = QModelIndex()) const;
+
+ QModelIndex parent(const QModelIndex &index) const;
+ QModelIndex index(int row, int column, const QModelIndex &index) const;
+
+ Qt::DropActions supportedDropActions () const;
+ Qt::ItemFlags flags(const QModelIndex &index) const;
+
+ QVariant data(const QModelIndex &index, int role) const;
+ bool setData(const QModelIndex &index, const QVariant &value, int role);
+ QVariant headerData(int section, Qt::Orientation orientation, int role) const;
+
+ QModelIndex indexFromItem(BookmarkItem *item) const;
+ BookmarkItem *itemFromIndex(const QModelIndex &index) const;
+
+ bool insertRows(int position, int rows, const QModelIndex &parent);
+ bool removeRows(int position, int rows, const QModelIndex &parent);
+
+ QStringList mimeTypes() const;
+ QMimeData* mimeData(const QModelIndexList &indexes) const;
+ bool dropMimeData(const QMimeData *data, Qt::DropAction action, int row,
+ int column, const QModelIndex &parent);
+
+private:
+ void setupCache(const QModelIndex &parent);
+ QModelIndexList collectItems(const QModelIndex &parent) const;
+ void collectItems(const QModelIndex &parent, qint32 depth,
+ QDataStream *stream) const;
+
+private:
+ int columns;
+ bool m_folder;
+ bool m_editable;
+ QIcon folderIcon;
+ QIcon bookmarkIcon;
+ QTreeView *treeView;
+ BookmarkItem *rootItem;
+ ItemModelIndexCache cache;
+};
+
+QT_END_NAMESPACE
+
+#endif // BOOKMARKMODEL_H
diff --git a/tools/assistant/tools/assistant/bookmarkwidget.ui b/tools/assistant/tools/assistant/bookmarkwidget.ui
new file mode 100644
index 0000000..3015740
--- /dev/null
+++ b/tools/assistant/tools/assistant/bookmarkwidget.ui
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>BookmarkWidget</class>
+ <widget class="QWidget" name="BookmarkWidget">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>235</width>
+ <height>606</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>Bookmarks</string>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <item>
+ <widget class="QLabel" name="label">
+ <property name="text">
+ <string>Filter:</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer name="horizontalSpacer">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <widget class="QLineEdit" name="lineEdit"/>
+ </item>
+ <item>
+ <widget class="QStackedWidget" name="stackedWidget"/>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout_2">
+ <item>
+ <spacer name="horizontalSpacer_2">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <widget class="QPushButton" name="add">
+ <property name="text">
+ <string>Add</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="remove">
+ <property name="text">
+ <string>Remove</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/tools/assistant/tools/assistant/centralwidget.cpp b/tools/assistant/tools/assistant/centralwidget.cpp
index 715f1fa..8bb2ffe 100644
--- a/tools/assistant/tools/assistant/centralwidget.cpp
+++ b/tools/assistant/tools/assistant/centralwidget.cpp
@@ -842,7 +842,7 @@ void CentralWidget::showTabBarContextMenu(const QPoint &point)
}
if (pickedAction == newBookmark)
- emit addNewBookmark(viewer->documentTitle(), viewer->source().toString());
+ emit addBookmark(viewer->documentTitle(), viewer->source().toString());
}
bool CentralWidget::eventFilter(QObject *object, QEvent *e)
diff --git a/tools/assistant/tools/assistant/centralwidget.h b/tools/assistant/tools/assistant/centralwidget.h
index c0bee81..a7c0d6f 100644
--- a/tools/assistant/tools/assistant/centralwidget.h
+++ b/tools/assistant/tools/assistant/centralwidget.h
@@ -170,7 +170,7 @@ signals:
void highlighted(const QString &link);
void forwardAvailable(bool available);
void backwardAvailable(bool available);
- void addNewBookmark(const QString &title, const QString &url);
+ void addBookmark(const QString &title, const QString &url);
protected:
void keyPressEvent(QKeyEvent *);
diff --git a/tools/assistant/tools/assistant/cmdlineparser.cpp b/tools/assistant/tools/assistant/cmdlineparser.cpp
index b3ba93c..bbc0c37 100644
--- a/tools/assistant/tools/assistant/cmdlineparser.cpp
+++ b/tools/assistant/tools/assistant/cmdlineparser.cpp
@@ -41,6 +41,7 @@
#include "tracer.h"
#include <QtCore/QFileInfo>
+#include <QtCore/QStringBuilder>
#include <QtGui/QMessageBox>
#include "cmdlineparser.h"
@@ -277,11 +278,11 @@ void CmdLineParser::showMessage(const QString &msg, bool error)
if (m_quiet)
return;
#ifdef Q_OS_WIN
- QString s = QLatin1String("<pre>") + msg + QLatin1String("</pre>");
+ QString message = QLatin1String("<pre>") % msg % QLatin1String("</pre>");
if (error)
- QMessageBox::critical(0, QObject::tr("Qt Assistant"), s);
+ QMessageBox::critical(0, tr("Error"), message);
else
- QMessageBox::information(0, QObject::tr("Qt Assistant"), s);
+ QMessageBox::information(0, tr("Notice"), message);
#else
fprintf(error ? stderr : stdout, "%s\n", qPrintable(msg));
#endif
diff --git a/tools/assistant/tools/assistant/helpenginewrapper.cpp b/tools/assistant/tools/assistant/helpenginewrapper.cpp
index 9785710..ddc056a 100644
--- a/tools/assistant/tools/assistant/helpenginewrapper.cpp
+++ b/tools/assistant/tools/assistant/helpenginewrapper.cpp
@@ -57,6 +57,7 @@
QT_BEGIN_NAMESPACE
namespace {
+ const QString Unfiltered;
const QString AppFontKey(QLatin1String("appFont"));
const QString AppWritingSystemKey(QLatin1String("appWritingSystem"));
const QString BookmarksKey(QLatin1String("Bookmarks"));
@@ -67,7 +68,6 @@ namespace {
const QString MainWindowGeometryKey(QLatin1String("MainWindowGeometry"));
const QString SearchWasAttachedKey(QLatin1String("SearchWasAttached"));
const QString StartOptionKey(QLatin1String("StartOption"));
- const QString UnfilteredInsertedKey(QLatin1String("UnfilteredFilterInserted"));
const QString UseAppFontKey(QLatin1String("useAppFont"));
const QString UseBrowserFontKey(QLatin1String("useBrowserFont"));
const QString VersionKey(QString(QLatin1String("qtVersion%1$$$%2")).
@@ -114,6 +114,8 @@ private:
QMap<QString, RecentSignal> m_recentQchUpdates;
};
+const QString HelpEngineWrapper::TrUnfiltered = tr("Unfiltered");
+
HelpEngineWrapper *HelpEngineWrapper::helpEngineWrapper = 0;
HelpEngineWrapper &HelpEngineWrapper::instance(const QString &collectionFile)
@@ -144,7 +146,7 @@ HelpEngineWrapper::HelpEngineWrapper(const QString &collectionFile)
connect(d, SIGNAL(documentationUpdated(QString)),
this, SIGNAL(documentationUpdated(QString)));
connect(d->m_helpEngine, SIGNAL(currentFilterChanged(QString)),
- this, SIGNAL(currentFilterChanged(QString)));
+ this, SLOT(handleCurrentFilterChanged(QString)));
connect(d->m_helpEngine, SIGNAL(setupFinished()),
this, SIGNAL(setupFinished()));
}
@@ -242,19 +244,25 @@ bool HelpEngineWrapper::removeCustomFilter(const QString &filterName)
void HelpEngineWrapper::setCurrentFilter(const QString &currentFilter)
{
TRACE_OBJ
- d->m_helpEngine->setCurrentFilter(currentFilter);
+ const QString &filter
+ = currentFilter == TrUnfiltered ? Unfiltered : currentFilter;
+ d->m_helpEngine->setCurrentFilter(filter);
}
const QString HelpEngineWrapper::currentFilter() const
{
TRACE_OBJ
- return d->m_helpEngine->currentFilter();
+ const QString &filter = d->m_helpEngine->currentFilter();
+ return filter == Unfiltered ? TrUnfiltered : filter;
}
const QStringList HelpEngineWrapper::customFilters() const
{
TRACE_OBJ
- return d->m_helpEngine->customFilters();
+ QStringList filters = d->m_helpEngine->customFilters();
+ filters.removeOne(Unfiltered);
+ filters.prepend(TrUnfiltered);
+ return filters;
}
QUrl HelpEngineWrapper::findFile(const QUrl &url) const
@@ -293,18 +301,6 @@ QString HelpEngineWrapper::error() const
return d->m_helpEngine->error();
}
-bool HelpEngineWrapper::unfilteredInserted() const
-{
- TRACE_OBJ
- return d->m_helpEngine->customValue(UnfilteredInsertedKey).toInt() == 1;
-}
-
-void HelpEngineWrapper::setUnfilteredInserted()
-{
- TRACE_OBJ
- d->m_helpEngine->setCustomValue(UnfilteredInsertedKey, 1);
-}
-
const QStringList HelpEngineWrapper::qtDocInfo(const QString &component) const
{
TRACE_OBJ
@@ -679,6 +675,13 @@ void HelpEngineWrapper::setBrowserWritingSystem(QFontDatabase::WritingSystem sys
d->m_helpEngine->setCustomValue(BrowserWritingSystemKey, system);
}
+void HelpEngineWrapper::handleCurrentFilterChanged(const QString &filter)
+{
+ const QString &filterToReport
+ = filter == Unfiltered ? TrUnfiltered : filter;
+ emit currentFilterChanged(filterToReport);
+}
+
TimeoutForwarder::TimeoutForwarder(const QString &fileName)
: m_fileName(fileName)
@@ -698,6 +701,8 @@ HelpEngineWrapperPrivate::HelpEngineWrapperPrivate(const QString &collectionFile
m_qchWatcher(new QFileSystemWatcher(this))
{
TRACE_OBJ
+ if (!m_helpEngine->customFilters().contains(Unfiltered))
+ m_helpEngine->addCustomFilter(Unfiltered, QStringList());
initFileSystemWatchers();
}
diff --git a/tools/assistant/tools/assistant/helpenginewrapper.h b/tools/assistant/tools/assistant/helpenginewrapper.h
index ea7b762..a30fab8 100644
--- a/tools/assistant/tools/assistant/helpenginewrapper.h
+++ b/tools/assistant/tools/assistant/helpenginewrapper.h
@@ -101,10 +101,6 @@ public:
const QStringList filterAttributes(const QString &filterName) const;
QString error() const;
- // Access to a collection's custom values.
- bool unfilteredInserted() const;
- void setUnfilteredInserted();
-
const QStringList qtDocInfo(const QString &component) const;
void setQtDocInfo(const QString &component, const QStringList &doc);
@@ -185,6 +181,8 @@ public:
QFontDatabase::WritingSystem browserWritingSystem() const;
void setBrowserWritingSystem(QFontDatabase::WritingSystem system);
+ static const QString TrUnfiltered;
+
signals:
// For asynchronous doc updates triggered by external actions.
@@ -195,6 +193,9 @@ signals:
void currentFilterChanged(const QString &currentFilter);
void setupFinished();
+private slots:
+ void handleCurrentFilterChanged(const QString &filter);
+
private:
HelpEngineWrapper(const QString &collectionFile);
~HelpEngineWrapper();
diff --git a/tools/assistant/tools/assistant/helpviewer.cpp b/tools/assistant/tools/assistant/helpviewer.cpp
index efdee92..8e4d3ed 100644
--- a/tools/assistant/tools/assistant/helpviewer.cpp
+++ b/tools/assistant/tools/assistant/helpviewer.cpp
@@ -67,8 +67,9 @@ QT_BEGIN_NAMESPACE
namespace {
const QString PageNotFoundMessage =
- QObject::tr("<title>Error 404...</title><div align=\"center\"><br><br>"
- "<h1>The page could not be found</h1><br><h3>'%1'</h3></div>");
+ QCoreApplication::translate("HelpViewer",
+ "<title>Error 404...</title><div align=\"center\"><br><br>"
+ "<h1>The page could not be found</h1><br><h3>'%1'</h3></div>");
}
#if !defined(QT_NO_WEBKIT)
diff --git a/tools/assistant/tools/assistant/main.cpp b/tools/assistant/tools/assistant/main.cpp
index 434a211..77e5e7c 100644
--- a/tools/assistant/tools/assistant/main.cpp
+++ b/tools/assistant/tools/assistant/main.cpp
@@ -174,8 +174,9 @@ bool synchronizeDocs(QHelpEngineCore &collection,
if (!cachedDocs.contains(doc)) {
const QString &docFile = collection.documentationFileName(doc);
if (!cachedCollection.registerDocumentation(docFile)) {
- cmd.showMessage(QObject::tr("Error registering documentation file '%1': %2").
- arg(docFile).arg(cachedCollection.error()), true);
+ cmd.showMessage(QCoreApplication::translate("Assistant",
+ "Error registering documentation file '%1': %2").
+ arg(docFile).arg(cachedCollection.error()), true);
return false;
}
}
@@ -212,7 +213,8 @@ bool rebuildSearchIndex(QCoreApplication &app, const QString &collectionFile,
TRACE_OBJ
QHelpEngine engine(collectionFile);
if (!engine.setupData()) {
- cmd.showMessage(QObject::tr("Error: %1").arg(engine.error()), true);
+ cmd.showMessage(QCoreApplication::translate("Assistant", "Error: %1")
+ .arg(engine.error()), true);
return false;
}
@@ -241,6 +243,9 @@ bool useGui(int argc, char *argv[])
}
}
}
+#else
+ Q_UNUSED(argc)
+ Q_UNUSED(argv)
#endif
return gui;
}
@@ -250,13 +255,14 @@ bool registerDocumentation(QHelpEngineCore &collection, CmdLineParser &cmd,
{
TRACE_OBJ
if (!collection.registerDocumentation(cmd.helpFile())) {
- cmd.showMessage(
- QObject::tr("Could not register documentation file\n%1\n\nReason:\n%2")
- .arg(cmd.helpFile()).arg(collection.error()), true);
+ cmd.showMessage(QCoreApplication::translate("Assistant",
+ "Could not register documentation file\n%1\n\nReason:\n%2")
+ .arg(cmd.helpFile()).arg(collection.error()), true);
return false;
}
if (printSuccess)
- cmd.showMessage(QObject::tr("Documentation successfully registered."),
+ cmd.showMessage(QCoreApplication::translate("Assistant",
+ "Documentation successfully registered."),
false);
CollectionConfiguration::updateLastRegisterTime(collection);
return true;
@@ -267,14 +273,16 @@ bool unregisterDocumentation(QHelpEngineCore &collection,
{
TRACE_OBJ
if (!collection.unregisterDocumentation(namespaceName)) {
- cmd.showMessage(QObject::tr("Could not unregister documentation"
- " file\n%1\n\nReason:\n%2").
+ cmd.showMessage(QCoreApplication::translate("Assistant",
+ "Could not unregister documentation"
+ " file\n%1\n\nReason:\n%2").
arg(cmd.helpFile()).arg(collection.error()), true);
return false;
}
updateLastPagesOnUnregister(collection, namespaceName);
if (printSuccess)
- cmd.showMessage(QObject::tr("Documentation successfully unregistered."),
+ cmd.showMessage(QCoreApplication::translate("Assistant",
+ "Documentation successfully unregistered."),
false);
return true;
}
@@ -328,7 +336,8 @@ int main(int argc, char *argv[])
if (collectionFileGiven) {
collection.reset(new QHelpEngineCore(collectionFile));
if (!collection->setupData()) {
- cmd.showMessage(QObject::tr("Error reading collection file '%1': %2.").
+ cmd.showMessage(QCoreApplication::translate("Assistant",
+ "Error reading collection file '%1': %2.").
arg(collectionFile).arg(collection->error()), true);
return EXIT_FAILURE;
}
@@ -338,13 +347,15 @@ int main(int argc, char *argv[])
: MainWindow::defaultHelpCollectionFileName();
if (collectionFileGiven && !QFileInfo(cachedCollectionFile).exists()
&& !collection->copyCollectionFile(cachedCollectionFile)) {
- cmd.showMessage(QObject::tr("Error creating collection file '%1': %2.").
+ cmd.showMessage(QCoreApplication::translate("Assistant",
+ "Error creating collection file '%1': %2.").
arg(cachedCollectionFile).arg(collection->error()), true);
return EXIT_FAILURE;
}
QHelpEngineCore cachedCollection(cachedCollectionFile);
if (!cachedCollection.setupData()) {
- cmd.showMessage(QObject::tr("Error reading collection file '%1': %2").
+ cmd.showMessage(QCoreApplication::translate("Assistant",
+ "Error reading collection file '%1': %2").
arg(cachedCollectionFile).
arg(cachedCollection.error()), true);
return EXIT_FAILURE;
@@ -365,7 +376,8 @@ int main(int argc, char *argv[])
const QString &namespaceName =
QHelpEngineCore::namespaceName(cmd.helpFile());
if (cmd.registerRequest() == CmdLineParser::Register) {
- if (collectionFileGiven && !registerDocumentation(*collection, cmd, true))
+ if (collectionFileGiven
+ && !registerDocumentation(*collection, cmd, true))
return EXIT_FAILURE;
if (!cachedDocs.contains(namespaceName)
&& !registerDocumentation(cachedCollection, cmd, !collectionFileGiven))
@@ -395,7 +407,8 @@ int main(int argc, char *argv[])
}
if (!QSqlDatabase::isDriverAvailable(QLatin1String("QSQLITE"))) {
- cmd.showMessage(QObject::tr("Cannot load sqlite database driver!"),
+ cmd.showMessage(QCoreApplication::translate("Assistant",
+ "Cannot load sqlite database driver!"),
true);
return EXIT_FAILURE;
}
diff --git a/tools/assistant/tools/assistant/mainwindow.cpp b/tools/assistant/tools/assistant/mainwindow.cpp
index ac33fc5..2ff6b5e 100644
--- a/tools/assistant/tools/assistant/mainwindow.cpp
+++ b/tools/assistant/tools/assistant/mainwindow.cpp
@@ -41,20 +41,20 @@
#include "tracer.h"
#include "mainwindow.h"
+
+#include "bookmarkmanager.h"
#include "centralwidget.h"
#include "helpviewer.h"
#include "indexwindow.h"
#include "topicchooser.h"
#include "contentwindow.h"
#include "preferencesdialog.h"
-#include "bookmarkmanager.h"
#include "helpenginewrapper.h"
#include "remotecontrol.h"
#include "cmdlineparser.h"
#include "aboutdialog.h"
#include "searchwidget.h"
#include "qtdocinstaller.h"
-#include "xbelsupport.h"
// #define TRACING_REQUESTED
@@ -95,6 +95,7 @@ QT_BEGIN_NAMESPACE
MainWindow::MainWindow(CmdLineParser *cmdLine, QWidget *parent)
: QMainWindow(parent)
+ , m_bookmarkWidget(0)
, m_filterCombo(0)
, m_toolBarMenu(0)
, m_cmdLine(cmdLine)
@@ -131,10 +132,22 @@ MainWindow::MainWindow(CmdLineParser *cmdLine, QWidget *parent)
contentDock->setWidget(m_contentWindow);
addDockWidget(Qt::LeftDockWidgetArea, contentDock);
- QDockWidget *bookmarkDock = new QDockWidget(tr("Bookmarks"), this);
- bookmarkDock->setObjectName(QLatin1String("BookmarkWindow"));
- bookmarkDock->setWidget(setupBookmarkWidget());
- addDockWidget(Qt::LeftDockWidgetArea, bookmarkDock);
+ QDockWidget *bookmarkDock = 0;
+ if (BookmarkManager *manager = BookmarkManager::instance()) {
+ bookmarkDock = new QDockWidget(tr("Bookmarks"), this);
+ bookmarkDock->setObjectName(QLatin1String("BookmarkWindow"));
+ bookmarkDock->setWidget(m_bookmarkWidget = manager->bookmarkDockWidget());
+ addDockWidget(Qt::LeftDockWidgetArea, bookmarkDock);
+
+ connect(manager, SIGNAL(escapePressed()), this,
+ SLOT(activateCurrentCentralWidgetTab()));
+ connect(manager, SIGNAL(setSource(QUrl)), m_centralWidget,
+ SLOT(setSource(QUrl)));
+ connect(manager, SIGNAL(setSourceInNewTab(QUrl)), m_centralWidget,
+ SLOT(setSourceInNewTab(QUrl)));
+ connect(m_centralWidget, SIGNAL(addBookmark(QString, QString)), manager,
+ SLOT(addBookmark(QString, QString)));
+ }
QHelpSearchEngine *searchEngine = helpEngineWrapper.searchEngine();
connect(searchEngine, SIGNAL(indexingStarted()), this, SLOT(indexingStarted()));
@@ -153,14 +166,6 @@ MainWindow::MainWindow(CmdLineParser *cmdLine, QWidget *parent)
setupFilterToolbar();
setupAddressToolbar();
- m_bookmarkManager->setupBookmarkModels();
- m_bookmarkMenu->addSeparator();
- m_bookmarkManager->fillBookmarkMenu(m_bookmarkMenu);
- connect(m_bookmarkMenu, SIGNAL(triggered(QAction*)), this,
- SLOT(showBookmark(QAction*)));
- connect(m_bookmarkManager, SIGNAL(bookmarksChanged()), this,
- SLOT(updateBookmarkMenu()));
-
const QString windowTitle = helpEngineWrapper.windowTitle();
setWindowTitle(windowTitle.isEmpty() ? defWindowTitle : windowTitle);
QByteArray iconArray = helpEngineWrapper.applicationIcon();
@@ -186,7 +191,8 @@ MainWindow::MainWindow(CmdLineParser *cmdLine, QWidget *parent)
restoreGeometry(ba);
} else {
tabifyDockWidget(contentDock, indexDock);
- tabifyDockWidget(indexDock, bookmarkDock);
+ if (bookmarkDock)
+ tabifyDockWidget(indexDock, bookmarkDock);
contentDock->raise();
resize(QSize(800, 600));
}
@@ -219,9 +225,9 @@ MainWindow::MainWindow(CmdLineParser *cmdLine, QWidget *parent)
hideIndex();
if (m_cmdLine->bookmarks() == CmdLineParser::Show)
- showBookmarks();
+ showBookmarksDockWidget();
else if (m_cmdLine->bookmarks() == CmdLineParser::Hide)
- hideBookmarks();
+ hideBookmarksDockWidget();
if (m_cmdLine->search() == CmdLineParser::Show)
showSearch();
@@ -233,7 +239,7 @@ MainWindow::MainWindow(CmdLineParser *cmdLine, QWidget *parent)
else if (m_cmdLine->index() == CmdLineParser::Activate)
showIndex();
else if (m_cmdLine->bookmarks() == CmdLineParser::Activate)
- showBookmarks();
+ showBookmarksDockWidget();
if (!m_cmdLine->currentFilter().isEmpty()) {
const QString &curFilter = m_cmdLine->currentFilter();
@@ -270,7 +276,7 @@ bool MainWindow::usesDefaultCollection() const
void MainWindow::closeEvent(QCloseEvent *e)
{
TRACE_OBJ
- m_bookmarkManager->saveBookmarks();
+ BookmarkManager::destroy();
HelpEngineWrapper::instance().setMainWindow(saveState());
HelpEngineWrapper::instance().setMainWindowGeometry(saveGeometry());
QMainWindow::closeEvent(e);
@@ -315,13 +321,6 @@ bool MainWindow::initHelpDB()
needsSetup = true;
}
- if (!helpEngineWrapper.unfilteredInserted()) {
- helpEngineWrapper.addCustomFilter(tr("Unfiltered"), QStringList());
- helpEngineWrapper.setUnfilteredInserted();
- helpEngineWrapper.setCurrentFilter(tr("Unfiltered"));
- needsSetup = true;
- }
-
if (needsSetup)
helpEngineWrapper.setupData();
return true;
@@ -387,35 +386,6 @@ void MainWindow::checkInitState()
}
}
-void MainWindow::updateBookmarkMenu()
-{
- TRACE_OBJ
- if (m_bookmarkManager) {
- m_bookmarkMenu->removeAction(m_importBookmarkAction);
- m_bookmarkMenu->removeAction(m_exportBookmarkAction);
- m_bookmarkMenu->removeAction(m_bookmarkMenuAction);
-
- m_bookmarkMenu->clear();
-
- m_bookmarkMenu->addAction(m_importBookmarkAction);
- m_bookmarkMenu->addAction(m_exportBookmarkAction);
- m_bookmarkMenu->addAction(m_bookmarkMenuAction);
- m_bookmarkMenu->addSeparator();
-
- m_bookmarkManager->fillBookmarkMenu(m_bookmarkMenu);
- }
-}
-
-void MainWindow::showBookmark(QAction *action)
-{
- TRACE_OBJ
- if (m_bookmarkManager) {
- const QUrl &url = m_bookmarkManager->urlForAction(action);
- if (url.isValid())
- m_centralWidget->setSource(url);
- }
-}
-
void MainWindow::insertLastPages()
{
TRACE_OBJ
@@ -520,7 +490,7 @@ void MainWindow::setupActions()
QKeySequence(tr("ALT+C")));
m_viewMenu->addAction(tr("Index"), this, SLOT(showIndex()),
QKeySequence(tr("ALT+I")));
- m_viewMenu->addAction(tr("Bookmarks"), this, SLOT(showBookmarks()),
+ m_viewMenu->addAction(tr("Bookmarks"), this, SLOT(showBookmarksDockWidget()),
QKeySequence(tr("ALT+O")));
m_viewMenu->addAction(tr("Search"), this, SLOT(showSearchWidget()),
QKeySequence(tr("ALT+S")));
@@ -556,14 +526,8 @@ void MainWindow::setupActions()
tmp->setShortcuts(QList<QKeySequence>() << QKeySequence(tr("Ctrl+Alt+Left"))
<< QKeySequence(Qt::CTRL + Qt::Key_PageUp));
- m_bookmarkMenu = menuBar()->addMenu(tr("&Bookmarks"));
- m_importBookmarkAction = m_bookmarkMenu->addAction(tr("Import..."),
- this, SLOT(importBookmarks()));
- m_exportBookmarkAction = m_bookmarkMenu->addAction(tr("Export..."),
- this, SLOT(exportBookmarks()));
- m_bookmarkMenuAction = m_bookmarkMenu->addAction(tr("Add Bookmark..."),
- this, SLOT(addBookmark()));
- m_bookmarkMenuAction->setShortcut(tr("CTRL+D"));
+ if (BookmarkManager *manager = BookmarkManager::instance())
+ manager->takeBookmarksMenu(menuBar()->addMenu(tr("&Bookmarks")));
menu = menuBar()->addMenu(tr("&Help"));
m_aboutAction = menu->addAction(tr("About..."), this, SLOT(showAboutDialog()));
@@ -624,14 +588,6 @@ void MainWindow::setupActions()
SLOT(updateNavigationItems()));
connect(m_centralWidget, SIGNAL(highlighted(QString)), statusBar(),
SLOT(showMessage(QString)));
- connect(m_centralWidget, SIGNAL(addNewBookmark(QString,QString)), this,
- SLOT(addNewBookmark(QString,QString)));
-
- // bookmarks
- connect(m_bookmarkWidget, SIGNAL(requestShowLink(QUrl)), m_centralWidget,
- SLOT(setSource(QUrl)));
- connect(m_bookmarkWidget, SIGNAL(escapePressed()), this,
- SLOT(activateCurrentCentralWidgetTab()));
// index window
connect(m_indexWindow, SIGNAL(linkActivated(QUrl)), m_centralWidget,
@@ -764,13 +720,6 @@ void MainWindow::showNewAddress(const QUrl &url)
m_addressLineEdit->setText(url.toString());
}
-void MainWindow::addBookmark()
-{
- TRACE_OBJ
- addNewBookmark(m_centralWidget->currentTitle(),
- m_centralWidget->currentSource().toString());
-}
-
void MainWindow::gotoAddress()
{
TRACE_OBJ
@@ -838,15 +787,6 @@ void MainWindow::copyAvailable(bool yes)
m_copyAction->setEnabled(yes);
}
-void MainWindow::addNewBookmark(const QString &title, const QString &url)
-{
- TRACE_OBJ
- if (url.isEmpty() || url == QLatin1String("about:blank"))
- return;
-
- m_bookmarkManager->showBookmarkDialog(this, title, url);
-}
-
void MainWindow::showAboutDialog()
{
TRACE_OBJ
@@ -947,22 +887,23 @@ void MainWindow::setBookmarksVisible(bool visible)
{
TRACE_OBJ
if (visible)
- showBookmarks();
+ showBookmarksDockWidget();
else
- hideBookmarks();
+ hideBookmarksDockWidget();
}
-
-void MainWindow::showBookmarks()
+void MainWindow::showBookmarksDockWidget()
{
TRACE_OBJ
- activateDockWidget(m_bookmarkWidget);
+ if (m_bookmarkWidget)
+ activateDockWidget(m_bookmarkWidget);
}
-void MainWindow::hideBookmarks()
+void MainWindow::hideBookmarksDockWidget()
{
TRACE_OBJ
- m_bookmarkWidget->parentWidget()->hide();
+ if (m_bookmarkWidget)
+ m_bookmarkWidget->parentWidget()->hide();
}
void MainWindow::setSearchVisible(bool visible)
@@ -1094,15 +1035,6 @@ void MainWindow::indexingFinished()
m_progressWidget = 0;
}
-QWidget* MainWindow::setupBookmarkWidget()
-{
- TRACE_OBJ
- m_bookmarkManager = new BookmarkManager;
- m_bookmarkWidget = new BookmarkWidget(m_bookmarkManager, this);
- connect(m_bookmarkWidget, SIGNAL(addBookmark()), this, SLOT(addBookmark()));
- return m_bookmarkWidget;
-}
-
QString MainWindow::collectionFileDirectory(bool createDir, const QString &cacheDir)
{
TRACE_OBJ
@@ -1138,43 +1070,6 @@ QString MainWindow::defaultHelpCollectionFileName()
arg(QLatin1String(QT_VERSION_STR));
}
-void MainWindow::importBookmarks()
-{
- TRACE_OBJ
- const QString &fileName = QFileDialog::getOpenFileName(0, tr("Open File"),
- QDir::currentPath(), tr("Files (*.xbel)"));
-
- if (fileName.isEmpty())
- return;
-
- QFile file(fileName);
- if (file.open(QIODevice::ReadOnly)) {
- XbelReader reader(m_bookmarkManager->treeBookmarkModel(),
- m_bookmarkManager->listBookmarkModel());
- reader.readFromFile(&file);
- }
-}
-
-void MainWindow::exportBookmarks()
-{
- TRACE_OBJ
- QString fileName = QFileDialog::getSaveFileName(0, tr("Save File"),
- "untitled.xbel", tr("Files (*.xbel)"));
-
- QLatin1String suffix(".xbel");
- if (!fileName.endsWith(suffix))
- fileName.append(suffix);
-
- QFile file(fileName);
- if (file.open(QIODevice::WriteOnly)) {
- XbelWriter writer(m_bookmarkManager->treeBookmarkModel());
- writer.writeToFile(&file);
- } else {
- QMessageBox::information(this, tr("Qt Assistant"),
- tr("Unable to save bookmarks."), tr("OK"));
- }
-}
-
void MainWindow::currentFilterChanged(const QString &filter)
{
TRACE_OBJ
diff --git a/tools/assistant/tools/assistant/mainwindow.h b/tools/assistant/tools/assistant/mainwindow.h
index 3c70666..40ca624 100644
--- a/tools/assistant/tools/assistant/mainwindow.h
+++ b/tools/assistant/tools/assistant/mainwindow.h
@@ -58,8 +58,6 @@ class QHelpEngineCore;
class QHelpEngine;
class CentralWidget;
class ContentWindow;
-class BookmarkManager;
-class BookmarkWidget;
class CmdLineParser;
class QtDocInstaller;
@@ -97,10 +95,8 @@ public slots:
private slots:
void showContents();
void showIndex();
- void showBookmarks();
void showSearch();
void insertLastPages();
- void addBookmark();
void gotoAddress();
void showPreferences();
void showNewAddress();
@@ -109,7 +105,6 @@ private slots:
void updateNavigationItems();
void updateTabCloseAction();
void showNewAddress(const QUrl &url);
- void addNewBookmark(const QString &title, const QString &url);
void showTopicChooser(const QMap<QString, QUrl> &links, const QString &keyword);
void updateApplicationFont();
void filterDocumentation(const QString &customFilter);
@@ -119,18 +114,12 @@ private slots:
void indexingFinished();
void qtDocumentationInstalled(bool newDocsInstalled);
void registerDocumentation(const QString &component,
- const QString &absFileName);
+ const QString &absFileName);
void resetQtDocInfo(const QString &component);
void checkInitState();
void documentationRemoved(const QString &namespaceName);
void documentationUpdated(const QString &namespaceName);
- void updateBookmarkMenu();
- void showBookmark(QAction *action);
-
- void importBookmarks();
- void exportBookmarks();
-
private:
bool initHelpDB();
void setupActions();
@@ -140,17 +129,21 @@ private:
void setupFilterToolbar();
void setupAddressToolbar();
QMenu *toolBarMenu();
- QWidget *setupBookmarkWidget();
void hideContents();
void hideIndex();
- void hideBookmarks();
void hideSearch();
+private slots:
+ void showBookmarksDockWidget();
+ void hideBookmarksDockWidget();
+
+private:
+ QWidget *m_bookmarkWidget;
+
+private:
CentralWidget *m_centralWidget;
IndexWindow *m_indexWindow;
ContentWindow *m_contentWindow;
- BookmarkWidget *m_bookmarkWidget;
- BookmarkManager *m_bookmarkManager;
QLineEdit *m_addressLineEdit;
QComboBox *m_filterCombo;
@@ -172,10 +165,6 @@ private:
QMenu *m_viewMenu;
QMenu *m_toolBarMenu;
- QMenu *m_bookmarkMenu;
- QAction *m_bookmarkMenuAction;
- QAction *m_importBookmarkAction;
- QAction *m_exportBookmarkAction;
CmdLineParser *m_cmdLine;
diff --git a/tools/assistant/tools/assistant/preferencesdialog.cpp b/tools/assistant/tools/assistant/preferencesdialog.cpp
index fb41590..f0ef054 100644
--- a/tools/assistant/tools/assistant/preferencesdialog.cpp
+++ b/tools/assistant/tools/assistant/preferencesdialog.cpp
@@ -160,8 +160,10 @@ void PreferencesDialog::updateFilterPage()
m_ui.attributeWidget->clear();
m_filterMapBackup.clear();
- const QStringList filters = helpEngine.customFilters();
+ const QStringList &filters = helpEngine.customFilters();
foreach (const QString &filter, filters) {
+ if (filter == HelpEngineWrapper::TrUnfiltered)
+ continue;
QStringList atts = helpEngine.filterAttributes(filter);
m_filterMapBackup.insert(filter, atts);
if (!m_filterMap.contains(filter))
diff --git a/tools/assistant/tools/assistant/topicchooser.cpp b/tools/assistant/tools/assistant/topicchooser.cpp
index 5aafd5a..262fea8 100644
--- a/tools/assistant/tools/assistant/topicchooser.cpp
+++ b/tools/assistant/tools/assistant/topicchooser.cpp
@@ -62,12 +62,10 @@ TopicChooser::TopicChooser(QWidget *parent, const QString &keyword,
ui.listWidget->setCurrentRow(0);
ui.listWidget->setFocus();
- connect(ui.buttonDisplay, SIGNAL(clicked()),
- this, SLOT(accept()));
- connect(ui.buttonCancel, SIGNAL(clicked()),
- this, SLOT(reject()));
- connect(ui.listWidget, SIGNAL(itemActivated(QListWidgetItem*)),
- this, SLOT(accept()));
+ connect(ui.buttonDisplay, SIGNAL(clicked()), this, SLOT(accept()));
+ connect(ui.buttonCancel, SIGNAL(clicked()), this, SLOT(reject()));
+ connect(ui.listWidget, SIGNAL(itemActivated(QListWidgetItem*)), this,
+ SLOT(accept()));
}
QUrl TopicChooser::link() const
diff --git a/tools/assistant/tools/assistant/xbelsupport.cpp b/tools/assistant/tools/assistant/xbelsupport.cpp
index f2c0bcb..7d5a08b 100644
--- a/tools/assistant/tools/assistant/xbelsupport.cpp
+++ b/tools/assistant/tools/assistant/xbelsupport.cpp
@@ -41,9 +41,12 @@
#include "tracer.h"
#include "xbelsupport.h"
-#include "bookmarkmanager.h"
-#include <QtCore/QCoreApplication>
+#include "bookmarkitem.h"
+#include "bookmarkmodel.h"
+
+#include <QtCore/QDate>
+#include <QtCore/QModelIndex>
QT_BEGIN_NAMESPACE
@@ -55,7 +58,7 @@ struct Bookmark {
XbelWriter::XbelWriter(BookmarkModel *model)
: QXmlStreamWriter()
- , treeModel(model)
+ , bookmarkModel(model)
{
TRACE_OBJ
setAutoFormatting(true);
@@ -71,53 +74,46 @@ void XbelWriter::writeToFile(QIODevice *device)
writeStartElement(QLatin1String("xbel"));
writeAttribute(QLatin1String("version"), QLatin1String("1.0"));
- QStandardItem *root = treeModel->invisibleRootItem();
- for (int i = 0; i < root->rowCount(); ++i)
- writeData(root->child(i));
-
+ const QModelIndex &root = bookmarkModel->index(0,0, QModelIndex());
+ for (int i = 0; i < bookmarkModel->rowCount(root); ++i)
+ writeData(bookmarkModel->index(i, 0, root));
writeEndDocument();
}
-void XbelWriter::writeData(QStandardItem *child)
+void XbelWriter::writeData(const QModelIndex &index)
{
TRACE_OBJ
- Bookmark entry;
- entry.title = child->data(Qt::DisplayRole).toString();
- entry.url = child->data(Qt::UserRole + 10).toString();
-
- if (entry.url == QLatin1String("Folder")) {
- writeStartElement(QLatin1String("folder"));
-
- entry.folded = !child->data(Qt::UserRole + 11).toBool();
- writeAttribute(QLatin1String("folded"),
- entry.folded ? QLatin1String("yes") : QLatin1String("no"));
-
- writeTextElement(QLatin1String("title"), entry.title);
-
- for (int i = 0; i < child->rowCount(); ++i)
- writeData(child->child(i));
-
- writeEndElement();
- } else {
- writeStartElement(QLatin1String("bookmark"));
- writeAttribute(QLatin1String("href"), entry.url);
- writeTextElement(QLatin1String("title"), entry.title);
- writeEndElement();
+ if (index.isValid()) {
+ Bookmark entry;
+ entry.title = index.data().toString();
+ entry.url = index.data(UserRoleUrl).toString();
+
+ if (index.data(UserRoleFolder).toBool()) {
+ writeStartElement(QLatin1String("folder"));
+ entry.folded = !index.data(UserRoleExpanded).toBool();
+ writeAttribute(QLatin1String("folded"), entry.folded
+ ? QLatin1String("yes") : QLatin1String("no"));
+ writeTextElement(QLatin1String("title"), entry.title);
+
+ for (int i = 0; i < bookmarkModel->rowCount(index); ++i)
+ writeData(bookmarkModel->index(i, 0 , index));
+ writeEndElement();
+ } else {
+ writeStartElement(QLatin1String("bookmark"));
+ writeAttribute(QLatin1String("href"), entry.url);
+ writeTextElement(QLatin1String("title"), entry.title);
+ writeEndElement();
+ }
}
}
+// -- XbelReader
-// XbelReader
-
-
-XbelReader::XbelReader(BookmarkModel *tree, BookmarkModel *list)
+XbelReader::XbelReader(BookmarkModel *model)
: QXmlStreamReader()
- , treeModel(tree)
- , listModel(list)
+ , bookmarkModel(model)
{
TRACE_OBJ
- folderIcon = QApplication::style()->standardIcon(QStyle::SP_DirClosedIcon);
- bookmarkIcon = QIcon(QLatin1String(":/trolltech/assistant/images/bookmark.png"));
}
bool XbelReader::readFromFile(QIODevice *device)
@@ -132,7 +128,11 @@ bool XbelReader::readFromFile(QIODevice *device)
if (name() == QLatin1String("xbel")
&& attributes().value(QLatin1String("version"))
== QLatin1String("1.0")) {
+ const QModelIndex &root = bookmarkModel->index(0,0, QModelIndex());
+ parents.append(bookmarkModel->addItem(root, true));
readXBEL();
+ bookmarkModel->setData(parents.first(),
+ QDate::currentDate().toString(Qt::ISODate), Qt::EditRole);
} else {
raiseError(QLatin1String("The file is not an XBEL version 1.0 file."));
}
@@ -153,39 +153,22 @@ void XbelReader::readXBEL()
if (isStartElement()) {
if (name() == QLatin1String("folder"))
- readFolder(0);
+ readFolder();
else if (name() == QLatin1String("bookmark"))
- readBookmark(0);
+ readBookmark();
else
readUnknownElement();
}
}
}
-void XbelReader::readUnknownElement()
+void XbelReader::readFolder()
{
TRACE_OBJ
- while (!atEnd()) {
- readNext();
-
- if (isEndElement())
- break;
-
- if (isStartElement())
- readUnknownElement();
- }
-}
-
-void XbelReader::readFolder(QStandardItem *item)
-{
- TRACE_OBJ
- QStandardItem *folder = createChildItem(item);
- folder->setIcon(folderIcon);
- folder->setData(QLatin1String("Folder"), Qt::UserRole + 10);
-
- bool expanded =
- (attributes().value(QLatin1String("folded")) != QLatin1String("no"));
- folder->setData(expanded, Qt::UserRole + 11);
+ parents.append(bookmarkModel->addItem(parents.last(), true));
+ bookmarkModel->setData(parents.last(),
+ attributes().value(QLatin1String("folded")) == QLatin1String("no"),
+ UserRoleExpanded);
while (!atEnd()) {
readNext();
@@ -194,26 +177,29 @@ void XbelReader::readFolder(QStandardItem *item)
break;
if (isStartElement()) {
- if (name() == QLatin1String("title"))
- folder->setText(readElementText());
- else if (name() == QLatin1String("folder"))
- readFolder(folder);
+ if (name() == QLatin1String("title")) {
+ bookmarkModel->setData(parents.last(), readElementText(),
+ Qt::EditRole);
+ } else if (name() == QLatin1String("folder"))
+ readFolder();
else if (name() == QLatin1String("bookmark"))
- readBookmark(folder);
+ readBookmark();
else
readUnknownElement();
}
}
+
+ parents.removeLast();
}
-void XbelReader::readBookmark(QStandardItem *item)
+void XbelReader::readBookmark()
{
TRACE_OBJ
- QStandardItem *bookmark = createChildItem(item);
- bookmark->setIcon(bookmarkIcon);
- bookmark->setText(QCoreApplication::tr("Unknown title"));
- bookmark->setData(attributes().value(QLatin1String("href")).toString(),
- Qt::UserRole + 10);
+ const QModelIndex &index = bookmarkModel->addItem(parents.last(), false);
+ if (BookmarkItem* item = bookmarkModel->itemFromIndex(index)) {
+ item->setData(UserRoleUrl, attributes().value(QLatin1String("href"))
+ .toString());
+ }
while (!atEnd()) {
readNext();
@@ -223,27 +209,25 @@ void XbelReader::readBookmark(QStandardItem *item)
if (isStartElement()) {
if (name() == QLatin1String("title"))
- bookmark->setText(readElementText());
+ bookmarkModel->setData(index, readElementText(), Qt::EditRole);
else
readUnknownElement();
}
}
-
- listModel->appendRow(bookmark->clone());
}
-QStandardItem *XbelReader::createChildItem(QStandardItem *item)
+void XbelReader::readUnknownElement()
{
TRACE_OBJ
- QStandardItem *childItem = new QStandardItem();
- childItem->setEditable(false);
+ while (!atEnd()) {
+ readNext();
- if (item)
- item->appendRow(childItem);
- else
- treeModel->appendRow(childItem);
+ if (isEndElement())
+ break;
- return childItem;
+ if (isStartElement())
+ readUnknownElement();
+ }
}
QT_END_NAMESPACE
diff --git a/tools/assistant/tools/assistant/xbelsupport.h b/tools/assistant/tools/assistant/xbelsupport.h
index 16f53f5..037415f 100644
--- a/tools/assistant/tools/assistant/xbelsupport.h
+++ b/tools/assistant/tools/assistant/xbelsupport.h
@@ -42,11 +42,11 @@
#ifndef XBELSUPPORT_H
#define XBELSUPPORT_H
-#include <QtGui/QIcon>
#include <QtXml/QXmlStreamReader>
+#include <QtCore/QPersistentModelIndex>
QT_FORWARD_DECLARE_CLASS(QIODevice)
-QT_FORWARD_DECLARE_CLASS(QStandardItem)
+QT_FORWARD_DECLARE_CLASS(QModelIndex)
QT_BEGIN_NAMESPACE
@@ -59,31 +59,27 @@ public:
void writeToFile(QIODevice *device);
private:
- void writeData(QStandardItem *item);
+ void writeData(const QModelIndex &index);
private:
- BookmarkModel *treeModel;
+ BookmarkModel *bookmarkModel;
};
class XbelReader : public QXmlStreamReader
{
public:
- XbelReader(BookmarkModel *tree, BookmarkModel *list);
+ XbelReader(BookmarkModel *model);
bool readFromFile(QIODevice *device);
private:
void readXBEL();
+ void readFolder();
+ void readBookmark();
void readUnknownElement();
- void readFolder(QStandardItem *item);
- void readBookmark(QStandardItem *item);
- QStandardItem* createChildItem(QStandardItem *item);
private:
- QIcon folderIcon;
- QIcon bookmarkIcon;
-
- BookmarkModel *treeModel;
- BookmarkModel *listModel;
+ BookmarkModel *bookmarkModel;
+ QList<QPersistentModelIndex> parents;
};
QT_END_NAMESPACE
diff --git a/tools/assistant/tools/qcollectiongenerator/main.cpp b/tools/assistant/tools/qcollectiongenerator/main.cpp
index f75d891..7fcb4e1 100644
--- a/tools/assistant/tools/qcollectiongenerator/main.cpp
+++ b/tools/assistant/tools/qcollectiongenerator/main.cpp
@@ -45,6 +45,7 @@
#include <private/qhelpgenerator_p.h>
#include <private/qhelpprojectdata_p.h>
+#include <QtCore/QCoreApplication>
#include <QtCore/QDir>
#include <QtCore/QMap>
#include <QtCore/QFileInfo>
@@ -122,7 +123,8 @@ private:
void CollectionConfigReader::raiseErrorWithLine()
{
- raiseError(QObject::tr("Unknown token at line %1.")
+ raiseError(QCoreApplication::translate("QCollectionGenerator",
+ "Unknown token at line %1.")
.arg(lineNumber()));
}
@@ -142,8 +144,10 @@ void CollectionConfigReader::readData(const QByteArray &contents)
&& attributes().value(QLatin1String("version")) == QLatin1String("1.0"))
readConfig();
else
- raiseError(QObject::tr("Unknown token at line %1. Expected \"QtHelpCollectionProject\"!")
- .arg(lineNumber()));
+ raiseError(QCoreApplication::translate("QCollectionGenerator",
+ "Unknown token at line %1. "
+ "Expected \"QtHelpCollectionProject\"!")
+ .arg(lineNumber()));
}
}
}
@@ -353,7 +357,8 @@ int main(int argc, char *argv[])
QFileInfo fi(QString::fromLocal8Bit(argv[i]));
collectionFile = fi.absoluteFilePath();
} else {
- error = QObject::tr("Missing output file name!");
+ error = QCoreApplication::translate("QCollectionGenerator",
+ "Missing output file name!");
}
} else if (arg == QLatin1String("-h")) {
showHelp = true;
@@ -367,14 +372,16 @@ int main(int argc, char *argv[])
}
if (showVersion) {
- fprintf(stdout, "Qt Collection Generator version 1.0 (Qt %s)\n", QT_VERSION_STR);
+ fprintf(stdout, "Qt Collection Generator version 1.0 (Qt %s)\n",
+ QT_VERSION_STR);
return 0;
}
if (configFile.isEmpty() && !showHelp)
- error = QObject::tr("Missing collection config file!");
+ error = QCoreApplication::translate("QCollectionGenerator",
+ "Missing collection config file!");
- QString help = QObject::tr("\nUsage:\n\n"
+ QString help = QCoreApplication::translate("QCollectionGenerator", "\nUsage:\n\n"
"qcollectiongenerator <collection-config-file> [options]\n\n"
" -o <collection-file> Generates a collection file\n"
" called <collection-file>. If\n"
diff --git a/tools/assistant/tools/qhelpgenerator/main.cpp b/tools/assistant/tools/qhelpgenerator/main.cpp
index 00a0a3d..a309f42 100644
--- a/tools/assistant/tools/qhelpgenerator/main.cpp
+++ b/tools/assistant/tools/qhelpgenerator/main.cpp
@@ -67,7 +67,8 @@ int main(int argc, char *argv[])
QFileInfo fi(QString::fromLocal8Bit(argv[i]));
compressedFile = fi.absoluteFilePath();
} else {
- error = QObject::tr("Missing output file name!");
+ error = QCoreApplication::translate("QHelpGenerator",
+ "Missing output file name!");
}
} else if (arg == QLatin1String("-v")) {
showVersion = true;
@@ -83,14 +84,16 @@ int main(int argc, char *argv[])
}
if (showVersion) {
- fprintf(stdout, "Qt Help Generator version 1.0 (Qt %s)\n", QT_VERSION_STR);
+ fprintf(stdout, "Qt Help Generator version 1.0 (Qt %s)\n",
+ QT_VERSION_STR);
return 0;
}
if (projectFile.isEmpty() && !showHelp)
- error = QObject::tr("Missing Qt help project file!");
+ error = QCoreApplication::translate("QHelpGenerator",
+ "Missing Qt help project file!");
- QString help = QObject::tr("\nUsage:\n\n"
+ QString help = QCoreApplication::translate("QHelpGenerator", "\nUsage:\n\n"
"qhelpgenerator <help-project-file> [options]\n\n"
" -o <compressed-file> Generates a Qt compressed help\n"
" file called <compressed-file>.\n"
diff --git a/tools/configure/configureapp.cpp b/tools/configure/configureapp.cpp
index a906b9a..7154fd4 100644
--- a/tools/configure/configureapp.cpp
+++ b/tools/configure/configureapp.cpp
@@ -482,7 +482,9 @@ void Configure::parseCmdLine()
dictionary[ "BUILDNOKIA" ] = "yes";
dictionary[ "BUILDDEV" ] = "yes";
dictionary["LICENSE_CONFIRMED"] = "yes";
- dictionary[ "SYMBIAN_DEFFILES" ] = "no";
+ if (dictionary.contains("XQMAKESPEC") && dictionary["XQMAKESPEC"].startsWith("symbian")) {
+ dictionary[ "SYMBIAN_DEFFILES" ] = "no";
+ }
}
else if( configCmdLine.at(i) == "-opensource" ) {
dictionary[ "BUILDTYPE" ] = "opensource";
diff --git a/tools/designer/src/components/formeditor/formwindow.cpp b/tools/designer/src/components/formeditor/formwindow.cpp
index 9fd084d..3a7cd83 100644
--- a/tools/designer/src/components/formeditor/formwindow.cpp
+++ b/tools/designer/src/components/formeditor/formwindow.cpp
@@ -484,6 +484,7 @@ void FormWindow::setMainContainer(QWidget *w)
sheet->setVisible(sheet->indexOf(QLatin1String("windowTitle")), true);
sheet->setVisible(sheet->indexOf(QLatin1String("windowIcon")), true);
sheet->setVisible(sheet->indexOf(QLatin1String("windowModality")), true);
+ sheet->setVisible(sheet->indexOf(QLatin1String("windowOpacity")), true);
sheet->setVisible(sheet->indexOf(QLatin1String("windowFilePath")), true);
// ### generalize
}
diff --git a/tools/designer/src/components/propertyeditor/propertyeditor.cpp b/tools/designer/src/components/propertyeditor/propertyeditor.cpp
index b171ddc..512cc82 100644
--- a/tools/designer/src/components/propertyeditor/propertyeditor.cpp
+++ b/tools/designer/src/components/propertyeditor/propertyeditor.cpp
@@ -1175,11 +1175,11 @@ void PropertyEditor::slotValueChanged(QtProperty *property, const QVariant &valu
Q_ASSERT(ok);
QVariant v;
qVariantSetValue(v, e);
- emit propertyValueChanged(property->propertyName(), v, true);
+ emitPropertyValueChanged(property->propertyName(), v, true);
return;
}
- emit propertyValueChanged(property->propertyName(), value, enableSubPropertyHandling);
+ emitPropertyValueChanged(property->propertyName(), value, enableSubPropertyHandling);
}
bool PropertyEditor::isDynamicProperty(const QtBrowserItem* item) const
diff --git a/tools/designer/src/lib/shared/qdesigner_propertyeditor.cpp b/tools/designer/src/lib/shared/qdesigner_propertyeditor.cpp
index e89c47c..9a1739e 100644
--- a/tools/designer/src/lib/shared/qdesigner_propertyeditor.cpp
+++ b/tools/designer/src/lib/shared/qdesigner_propertyeditor.cpp
@@ -92,7 +92,8 @@ static const PropertyNameTypeMap &stringPropertyTypes()
}
QDesignerPropertyEditor::QDesignerPropertyEditor(QWidget *parent, Qt::WindowFlags flags) :
- QDesignerPropertyEditorInterface(parent, flags)
+ QDesignerPropertyEditorInterface(parent, flags),
+ m_propertyChangedForwardingBlocked(false)
{
// Make old signal work for compatibility
connect(this, SIGNAL(propertyChanged(QString,QVariant)), this, SLOT(slotPropertyChanged(QString,QVariant)));
@@ -147,9 +148,20 @@ QDesignerPropertyEditor::StringPropertyParameters QDesignerPropertyEditor::textP
return StringPropertyParameters(ValidationSingleLine, true);
}
+void QDesignerPropertyEditor::emitPropertyValueChanged(const QString &name, const QVariant &value, bool enableSubPropertyHandling)
+{
+ // Avoid duplicate signal emission - see below
+ m_propertyChangedForwardingBlocked = true;
+ emit propertyValueChanged(name, value, enableSubPropertyHandling);
+ emit propertyChanged(name, value);
+ m_propertyChangedForwardingBlocked = false;
+}
+
void QDesignerPropertyEditor::slotPropertyChanged(const QString &name, const QVariant &value)
{
- emit propertyValueChanged(name, value, true);
+ // Forward signal from Integration using the old interfaces.
+ if (!m_propertyChangedForwardingBlocked)
+ emit propertyValueChanged(name, value, true);
}
}
diff --git a/tools/designer/src/lib/shared/qdesigner_propertyeditor_p.h b/tools/designer/src/lib/shared/qdesigner_propertyeditor_p.h
index cdd53f0..27078f2 100644
--- a/tools/designer/src/lib/shared/qdesigner_propertyeditor_p.h
+++ b/tools/designer/src/lib/shared/qdesigner_propertyeditor_p.h
@@ -79,7 +79,6 @@ public:
static StringPropertyParameters textPropertyValidationMode(QDesignerFormEditorInterface *core,
const QObject *object, const QString &propertyName, bool isMainContainer);
-
Q_SIGNALS:
void propertyValueChanged(const QString &name, const QVariant &value, bool enableSubPropertyHandling);
void resetProperty(const QString &name);
@@ -97,6 +96,13 @@ public Q_SLOTS:
private Q_SLOTS:
void slotPropertyChanged(const QString &name, const QVariant &value);
+
+protected:
+ void emitPropertyValueChanged(const QString &name, const QVariant &value, bool enableSubPropertyHandling);
+
+private:
+ bool m_propertyChangedForwardingBlocked;
+
};
} // namespace qdesigner_internal
diff --git a/tools/designer/src/lib/shared/qdesigner_propertysheet.cpp b/tools/designer/src/lib/shared/qdesigner_propertysheet.cpp
index b4b962c..13bb1d7 100644
--- a/tools/designer/src/lib/shared/qdesigner_propertysheet.cpp
+++ b/tools/designer/src/lib/shared/qdesigner_propertysheet.cpp
@@ -610,8 +610,9 @@ QDesignerPropertySheet::QDesignerPropertySheet(QObject *object, QObject *parent)
createFakeProperty(QLatin1String("whatsThis"));
createFakeProperty(QLatin1String("acceptDrops"));
createFakeProperty(QLatin1String("dragEnabled"));
- // windowModality is visible only for the main container, in which case the form windows enables it on loading
+ // windowModality/Opacity is visible only for the main container, in which case the form windows enables it on loading
setVisible(createFakeProperty(QLatin1String("windowModality")), false);
+ setVisible(createFakeProperty(QLatin1String("windowOpacity"), double(1.0)), false);
if (qobject_cast<const QToolBar *>(d->m_object)) { // prevent toolbars from being dragged off
createFakeProperty(QLatin1String("floatable"), QVariant(true));
} else {
@@ -1451,8 +1452,13 @@ bool QDesignerPropertySheet::isVisible(int index) const
}
if (isFakeProperty(index)) {
- if (type == PropertyWindowModality) // Hidden for child widgets
+ switch (type) {
+ case PropertyWindowModality: // Hidden for child widgets
+ case PropertyWindowOpacity:
return d->m_info.value(index).visible;
+ default:
+ break;
+ }
return true;
}
diff --git a/tools/installer/README b/tools/installer/README
deleted file mode 100644
index 63abf6d..0000000
--- a/tools/installer/README
+++ /dev/null
@@ -1,12 +0,0 @@
-iwmake is the tool used to generate the Qt installer binaries.
-
-To be able to use it yourself create a config.default in the
-config/ directory. You can refer to config.default.sample to see
-which values need to be set within this file.
-
-Afterwards call "iwmake.bat mingw-opensource.conf" to create an
-installer package yourself.
-
-Note that the binary creation takes a lot of time and is very
-CPU-intensive as it recompiles the Qt source package among other
-steps.
diff --git a/tools/installer/batch/build.bat b/tools/installer/batch/build.bat
deleted file mode 100755
index c10b7f3..0000000
--- a/tools/installer/batch/build.bat
+++ /dev/null
@@ -1,157 +0,0 @@
-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
-::
-:: Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-:: All rights reserved.
-:: Contact: Nokia Corporation (qt-info@nokia.com)
-::
-:: This file is part of the tools applications of the Qt Toolkit.
-::
-:: $QT_BEGIN_LICENSE:LGPL$
-:: No Commercial Usage
-:: This file contains pre-release code and may not be distributed.
-:: You may use this file in accordance with the terms and conditions
-:: contained in the Technology Preview License Agreement accompanying
-:: this package.
-::
-:: GNU Lesser General Public License Usage
-:: Alternatively, this file may be used under the terms of the GNU Lesser
-:: General Public License version 2.1 as published by the Free Software
-:: Foundation and appearing in the file LICENSE.LGPL included in the
-:: packaging of this file. Please review the following information to
-:: ensure the GNU Lesser General Public License version 2.1 requirements
-:: will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-::
-:: In addition, as a special exception, Nokia gives you certain additional
-:: rights. These rights are described in the Nokia Qt LGPL Exception
-:: version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-::
-:: If you have questions regarding the use of this file, please contact
-:: Nokia at qt-info@nokia.com.
-::
-::
-::
-::
-::
-::
-::
-::
-:: $QT_END_LICENSE$
-::
-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
-call :%1 %2
-goto END
-
-:begin
-for /F "tokens=1*" %%m in ("%~1") do set IWMAKE_COMPILER=%%~m& set IWMAKE_TMP=%%~n
-
-if "%IWMAKE_TMP%"=="" set IWMAKE_TMP=build_%IWMAKE_COMPILER%
-set IWMAKE_BUILD=%IWMAKE_ROOT%\%IWMAKE_TMP%
-if not exist %IWMAKE_BUILD% mkdir %IWMAKE_BUILD%
-
-if not "%PATH%"=="" set IWMAKE_OLD_PATH=%PATH%
-if not "%QMAKESPEC%"=="" set IWMAKE_OLD_QMAKESPEC=%QMAKESPEC%
-if not "%QTDIR%"=="" set IWMAKE_OLD_QTDIR=%QTDIR%
-if not "%INCLUDE%"=="" set IWMAKE_OLD_INCLUDE=%INCLUDE%
-if not "%LIB%"=="" set IWMAKE_OLD_LIB=%LIB%
-
-set PATH=%IWMAKE_BUILD%\bin;%PATH%
-set QTDIR=%IWMAKE_BUILD%
-
-if "%IWMAKE_COMPILER%"=="vs2003" goto VS2003Env
-if "%IWMAKE_COMPILER%"=="vs2002" goto VS2002Env
-if "%IWMAKE_COMPILER%"=="vs2005" goto VS2005Env
-if "%IWMAKE_COMPILER%"=="vc60" goto VC60Env
-if "%IWMAKE_COMPILER%"=="mingw" goto MinGWEnv
-goto :eof
-
-:VS2003Env
-set QMAKESPEC=win32-msvc.net
-if not exist "%VS71COMNTOOLS%vsvars32.bat" echo VS2003 not found >> %IWMAKE_LOGFILE% & exit /b 1
-call "%VS71COMNTOOLS%vsvars32.bat" >> %IWMAKE_LOGFILE%
-set IWMAKE_MAKE=nmake
-goto :eof
-
-:VS2002Env
-set QMAKESPEC=win32-msvc.net
-if not exist "%VSCOMNTOOLS%vsvars32.bat" echo VS2002 not found >> %IWMAKE_LOGFILE% & exit /b 1
-call "%VSCOMNTOOLS%vsvars32.bat" >> %IWMAKE_LOGFILE%
-set IWMAKE_MAKE=nmake
-goto :eof
-
-:VS2005Env
-set QMAKESPEC=win32-msvc2005
-if not exist "%VS80COMNTOOLS%vsvars32.bat" echo VS2005 not found >> %IWMAKE_LOGFILE% & exit /b 1
-call "%VS80COMNTOOLS%vsvars32.bat" >> %IWMAKE_LOGFILE%
-set IWMAKE_MAKE=nmake
-goto :eof
-
-:VC60Env
-set QMAKESPEC=win32-msvc
-if not exist "%ProgramFiles%\Microsoft Visual Studio\VC98\Bin\vcvars32.bat" echo VC60 not found >> %IWMAKE_LOGFILE% & exit /b 1
-call "%ProgramFiles%\Microsoft Visual Studio\VC98\Bin\vcvars32.bat" >> %IWMAKE_LOGFILE%
-set IWMAKE_MAKE=nmake
-goto :eof
-
-:MinGWEnv
-set QMAKESPEC=win32-g++
-if not exist %IWMAKE_MINGWPATH%\bin\gcc.exe echo MinGW not found in %IWMAKE_MINGWPATH% >> %IWMAKE_LOGFILE% & exit /b 1
-set PATH=%IWMAKE_MINGWPATH%\bin;%PATH%
-set IWMAKE_MAKE=mingw32-make
-goto :eof
-
-:finish
- if not "%IWMAKE_OLD_PATH%"=="" set PATH=%IWMAKE_OLD_PATH%& set IWMAKE_OLD_PATH=
- if not "%IWMAKE_OLD_QMAKESPEC%"=="" set QMAKESPEC=%IWMAKE_OLD_QMAKESPEC%& set IWMAKE_OLD_QMAKESPEC=
- if not "%IWMAKE_OLD_QTDIR%"=="" set QTDIR=%IWMAKE_OLD_QTDIR%& set IWMAKE_OLD_QTDIR=
- if not "%IWMAKE_OLD_INCLUDE%"=="" set INCLUDE=%IWMAKE_OLD_INCLUDE%& set IWMAKE_OLD_INCLUDE=
- if not "%IWMAKE_OLD_LIB%"=="" set LIB=%IWMAKE_OLD_LIB%& set IWMAKE_OLD_LIB=
-goto :eof
-
-:configure
- pushd %IWMAKE_BUILD%
- configure %~1 >> %IWMAKE_LOGFILE% 2>&1
- popd
-goto :eof
-
-:bin
- pushd %IWMAKE_BUILD%
- %IWMAKE_MAKE% %~1 >>%IWMAKE_LOGFILE% 2>&1
- popd
-goto :eof
-
-:binInDir
- for /F "tokens=1*" %%m in ("%~1") do set IWMAKE_TMP=%%~m& set IWMAKE_TMP2=%%~n
- pushd %IWMAKE_BUILD%\%IWMAKE_TMP%
- %IWMAKE_MAKE% %IWMAKE_TMP2% >> %IWMAKE_LOGFILE% 2>&1
- popd
-goto :eof
-
-:DBPlugins
- call "%IWMAKE_SCRIPTDIR%\batch\copy.bat" extsync sql
- set IWMAKE_SQL_OLD_LIB=%LIB%
- pushd %IWMAKE_BUILD%\src\plugins\sqldrivers\mysql
- set LIB=%IWMAKE_ROOT%\sql\mysql\lib\debug;%IWMAKE_SQL_OLD_LIB%
- qmake "INCLUDEPATH+=%IWMAKE_ROOT%\sql\mysql\include" "LIBS+=libmysql.lib ws2_32.lib advapi32.lib user32.lib" >> %IWMAKE_LOGFILE% 2>&1
- %IWMAKE_MAKE% debug >> %IWMAKE_LOGFILE% 2>&1
- set LIB=%IWMAKE_ROOT%\sql\mysql\lib\opt;%IWMAKE_SQL_OLD_LIB%
- qmake "INCLUDEPATH+=%IWMAKE_ROOT%\sql\mysql\include" "LIBS+=libmysql.lib ws2_32.lib advapi32.lib" >> %IWMAKE_LOGFILE% 2>&1
- %IWMAKE_MAKE% release >> %IWMAKE_LOGFILE% 2>&1
- popd
-
- set LIB=%IWMAKE_ROOT%\sql\%IWMAKE_COMPILER%;%IWMAKE_SQL_OLD_LIB%
- pushd %IWMAKE_BUILD%\src\plugins\sqldrivers\psql
- qmake "INCLUDEPATH+=%IWMAKE_ROOT%\sql\include\psql" "LIBS+=libpqd.lib ws2_32.lib advapi32.lib shfolder.lib shell32.lib" >> %IWMAKE_LOGFILE% 2>&1
- %IWMAKE_MAKE% debug >> %IWMAKE_LOGFILE% 2>&1
- qmake "INCLUDEPATH+=%IWMAKE_ROOT%\sql\include\psql" "LIBS+=libpq.lib ws2_32.lib advapi32.lib shfolder.lib shell32.lib" >> %IWMAKE_LOGFILE% 2>&1
- %IWMAKE_MAKE% release >> %IWMAKE_LOGFILE% 2>&1
- popd
- set LIB=%IWMAKE_SQL_OLD_LIB%
- set IWMAKE_SQL_OLD_LIB=
-goto :eof
-
-:root
- set IWMAKE_BUILD=%~1
- if not exist %IWMAKE_BUILD% mkdir %IWMAKE_BUILD%
-goto :eof
-
-:END
diff --git a/tools/installer/batch/copy.bat b/tools/installer/batch/copy.bat
deleted file mode 100755
index 8fabebf..0000000
--- a/tools/installer/batch/copy.bat
+++ /dev/null
@@ -1,121 +0,0 @@
-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
-::
-:: Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-:: All rights reserved.
-:: Contact: Nokia Corporation (qt-info@nokia.com)
-::
-:: This file is part of the tools applications of the Qt Toolkit.
-::
-:: $QT_BEGIN_LICENSE:LGPL$
-:: No Commercial Usage
-:: This file contains pre-release code and may not be distributed.
-:: You may use this file in accordance with the terms and conditions
-:: contained in the Technology Preview License Agreement accompanying
-:: this package.
-::
-:: GNU Lesser General Public License Usage
-:: Alternatively, this file may be used under the terms of the GNU Lesser
-:: General Public License version 2.1 as published by the Free Software
-:: Foundation and appearing in the file LICENSE.LGPL included in the
-:: packaging of this file. Please review the following information to
-:: ensure the GNU Lesser General Public License version 2.1 requirements
-:: will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-::
-:: In addition, as a special exception, Nokia gives you certain additional
-:: rights. These rights are described in the Nokia Qt LGPL Exception
-:: version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-::
-:: If you have questions regarding the use of this file, please contact
-:: Nokia at qt-info@nokia.com.
-::
-::
-::
-::
-::
-::
-::
-::
-:: $QT_END_LICENSE$
-::
-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
-call :%1 %2
-goto END
-
-:dest
- set IWMAKE_OUTDIR=%IWMAKE_ROOT%\%~1
- if not exist %IWMAKE_OUTDIR% mkdir %IWMAKE_OUTDIR%
-goto :eof
-
-:src
- set IWMAKE_SRCDIR=%IWMAKE_ROOT%\%~1
- if not exist %IWMAKE_SRCDIR% mkdir %IWMAKE_SRCDIR%
-goto :eof
-
-:destAbs
- set IWMAKE_OUTDIR=%1
- if not exist %IWMAKE_OUTDIR% mkdir %IWMAKE_OUTDIR%
-goto :eof
-
-:srcAbs
- set IWMAKE_SRCDIR=%1
- if not exist %IWMAKE_SRCDIR% mkdir %IWMAKE_SRCDIR%
-goto :eof
-
-:extsync
- if exist %IWMAKE_ROOT%\%~1 rd /S /Q %IWMAKE_ROOT%\%~1 >> %IWMAKE_LOGFILE%
- xcopy /H /Y /Q /I /R /E %IWMAKE_EXTERNAL%\%~1 %IWMAKE_ROOT%\%~1 >> %IWMAKE_LOGFILE%
-goto :eof
-
-:all
- xcopy /H /Y /Q /I /R /S %IWMAKE_SRCDIR%\%~1 %IWMAKE_OUTDIR%\ >> %IWMAKE_LOGFILE%
-goto :eof
-
-:filesEx
- for /F "tokens=1,2*" %%m in ("%~1") do set IWMAKE_TMP=%%~m& set IWMAKE_TMP2=%%~n& set IWMAKE_TMP3=%%~o
- echo %IWMAKE_TMP3% > %IWMAKE_ROOT%\iwmake_exclude
- xcopy /H /Y /Q /I /R /S /EXCLUDE:%IWMAKE_ROOT%\iwmake_exclude %IWMAKE_SRCDIR%\%IWMAKE_TMP% %IWMAKE_OUTDIR%\%IWMAKE_TMP2% >> %IWMAKE_LOGFILE%
-goto :eof
-
-:file
- set IWMAKE_TMP=%~1
- set IWMAKE_TMP2=%~nx1
- echo set IWMAKE_TMP3=%%IWMAKE_TMP:%IWMAKE_TMP2%=%%>"%IWMAKE_ROOT%\iwmake_tmp.bat"
- call %IWMAKE_ROOT%\iwmake_tmp.bat
- if not exist "%IWMAKE_OUTDIR%\%IWMAKE_TMP3%" mkdir "%IWMAKE_OUTDIR%\%IWMAKE_TMP3%"
- xcopy /H /Y /Q /I /R %IWMAKE_SRCDIR%\%IWMAKE_TMP% %IWMAKE_OUTDIR%\%IWMAKE_TMP3% >> %IWMAKE_LOGFILE%
-goto :eof
-
-:fileAndRename
- for /F "tokens=1*" %%m in ("%~1") do set IWMAKE_TMP=%%~m& set IWMAKE_TMP2=%%~n& set IWMAKE_TMP4=%%~nxn
- echo set IWMAKE_TMP3=%%IWMAKE_TMP2:%IWMAKE_TMP4%=%%>"%IWMAKE_ROOT%\iwmake_tmp.bat"
- call %IWMAKE_ROOT%\iwmake_tmp.bat
- if not exist "%IWMAKE_OUTDIR%\%IWMAKE_TMP3%" mkdir "%IWMAKE_OUTDIR%\%IWMAKE_TMP3%"
- echo > %IWMAKE_OUTDIR%\%IWMAKE_TMP2%
- xcopy /H /Y /Q /R %IWMAKE_SRCDIR%\%IWMAKE_TMP% %IWMAKE_OUTDIR%\%IWMAKE_TMP2% >> %IWMAKE_LOGFILE%
- set IWMAKE_TMP4=
-goto :eof
-
-:files
- for /F "tokens=1*" %%m in ("%~1") do set IWMAKE_TMP=%%~m& set IWMAKE_TMP2=%%~n
- if not exist "%IWMAKE_OUTDIR%\%IWMAKE_TMP2%" mkdir "%IWMAKE_OUTDIR%\%IWMAKE_TMP2%"
- xcopy /H /Y /Q /I /R /S %IWMAKE_SRCDIR%\%IWMAKE_TMP% %IWMAKE_OUTDIR%\%IWMAKE_TMP2% >> %IWMAKE_LOGFILE%
-goto :eof
-
-:runtime
- for /F "tokens=1*" %%m in ("%~1") do set IWMAKE_TMP=%%~m& set IWMAKE_TMP2=%%~n
- if "%IWMAKE_TMP2%" == "" set IWMAKE_TMP2=bin
- xcopy /H /Y /Q /I /R %SystemRoot%\system32\msvcr%IWMAKE_TMP%.dll %IWMAKE_OUTDIR%\%IWMAKE_TMP2%\ >> %IWMAKE_LOGFILE%
- xcopy /H /Y /Q /I /R %SystemRoot%\system32\msvcp%IWMAKE_TMP%.dll %IWMAKE_OUTDIR%\%IWMAKE_TMP2%\ >> %IWMAKE_LOGFILE%
-goto :eof
-
-:syncqt
- pushd %IWMAKE_OUTDIR%
- if exist "include" rd /S /Q include
- if not "%QTDIR%"=="" set IWMAKE_OLD_QTDIR=%QTDIR%
- set QTDIR=%IWMAKE_OUTDIR%
- "%IWMAKE_PERLPATH%\perl" %QTDIR%\bin\syncqt -copy >> %IWMAKE_LOGFILE% 2>&1
- if not "%IWMAKE_OLD_QTDIR%"=="" set QTDIR=%IWMAKE_OLD_QTDIR%
- popd
-goto :eof
-
-:END
diff --git a/tools/installer/batch/delete.bat b/tools/installer/batch/delete.bat
deleted file mode 100755
index a923c13..0000000
--- a/tools/installer/batch/delete.bat
+++ /dev/null
@@ -1,73 +0,0 @@
-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
-::
-:: Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-:: All rights reserved.
-:: Contact: Nokia Corporation (qt-info@nokia.com)
-::
-:: This file is part of the tools applications of the Qt Toolkit.
-::
-:: $QT_BEGIN_LICENSE:LGPL$
-:: No Commercial Usage
-:: This file contains pre-release code and may not be distributed.
-:: You may use this file in accordance with the terms and conditions
-:: contained in the Technology Preview License Agreement accompanying
-:: this package.
-::
-:: GNU Lesser General Public License Usage
-:: Alternatively, this file may be used under the terms of the GNU Lesser
-:: General Public License version 2.1 as published by the Free Software
-:: Foundation and appearing in the file LICENSE.LGPL included in the
-:: packaging of this file. Please review the following information to
-:: ensure the GNU Lesser General Public License version 2.1 requirements
-:: will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-::
-:: In addition, as a special exception, Nokia gives you certain additional
-:: rights. These rights are described in the Nokia Qt LGPL Exception
-:: version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-::
-:: If you have questions regarding the use of this file, please contact
-:: Nokia at qt-info@nokia.com.
-::
-::
-::
-::
-::
-::
-::
-::
-:: $QT_END_LICENSE$
-::
-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
-call :%1 %2
-goto END
-
-:destDir
- if exist "%IWMAKE_OUTDIR%\%~1" rd /S /Q %IWMAKE_OUTDIR%\%~1
-goto :eof
-
-:dir
- if exist "%IWMAKE_ROOT%\%~1" rd /S /Q %IWMAKE_ROOT%\%~1
-goto :eof
-
-:dirAbs
- if exist "%~1" rd /S /Q %~1
-goto :eof
-
-:file
- del /Q /F %IWMAKE_OUTDIR%\%~1 >> %IWMAKE_LOGFILE% 2>&1
- exit /b 0
-goto :eof
-
-:files
- del /S /Q /F %IWMAKE_OUTDIR%\%~1 >> %IWMAKE_LOGFILE% 2>&1
- exit /b 0
-goto :eof
-
-:line
- for /F "tokens=1*" %%m in ("%~1") do set IWMAKE_TMP=%%~m& set IWMAKE_TMP2=%%~n
- if exist "%IWMAKE_ROOT%\tmp_line.txt" del /Q /F "%IWMAKE_ROOT%\tmp_line.txt" >> %IWMAKE_LOGFILE%
- type "%IWMAKE_ROOT%\%IWMAKE_TMP%" | find /V "%IWMAKE_TMP2%" >> "%IWMAKE_ROOT%\tmp_line.txt"
- xcopy /Y /Q /R %IWMAKE_ROOT%\tmp_line.txt %IWMAKE_ROOT%\%IWMAKE_TMP% >> %IWMAKE_LOGFILE%
-goto :eof
-
-:END
diff --git a/tools/installer/batch/env.bat b/tools/installer/batch/env.bat
deleted file mode 100755
index c1faceb..0000000
--- a/tools/installer/batch/env.bat
+++ /dev/null
@@ -1,141 +0,0 @@
-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
-::
-:: Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-:: All rights reserved.
-:: Contact: Nokia Corporation (qt-info@nokia.com)
-::
-:: This file is part of the tools applications of the Qt Toolkit.
-::
-:: $QT_BEGIN_LICENSE:LGPL$
-:: No Commercial Usage
-:: This file contains pre-release code and may not be distributed.
-:: You may use this file in accordance with the terms and conditions
-:: contained in the Technology Preview License Agreement accompanying
-:: this package.
-::
-:: GNU Lesser General Public License Usage
-:: Alternatively, this file may be used under the terms of the GNU Lesser
-:: General Public License version 2.1 as published by the Free Software
-:: Foundation and appearing in the file LICENSE.LGPL included in the
-:: packaging of this file. Please review the following information to
-:: ensure the GNU Lesser General Public License version 2.1 requirements
-:: will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-::
-:: In addition, as a special exception, Nokia gives you certain additional
-:: rights. These rights are described in the Nokia Qt LGPL Exception
-:: version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-::
-:: If you have questions regarding the use of this file, please contact
-:: Nokia at qt-info@nokia.com.
-::
-::
-::
-::
-::
-::
-::
-::
-:: $QT_END_LICENSE$
-::
-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
-call :%1 %2
-goto END
-
-:setglobals
-set IWMAKE_PARSESECTION=1
-set IWMAKE_MINGWPATH=c:\MinGW\bin
-set IWMAKE_STARTDIR=%CD%
-set IWMAKE_NSISCONF=%IWMAKE_SCRIPTDIR%\nsis\config.nsh
-set IWMAKE_ROOT=c:\package
-set IWMAKE_OUTDIR=%IWMAKE_ROOT%
-set IWMAKE_SRCDIR=%IWMAKE_ROOT%
-set IWMAKE_EXTRACTDEST=%IWMAKE_ROOT%
-set IWMAKE_NSISPATH=%PROGRAMFILES%\NSIS
-call %IWMAKE_SCRIPTDIR%\batch\log.bat fileAbs "%IWMAKE_STARTDIR%\log.txt"
-goto :eof
-
-:signPath
- set IWMAKE_SIGNPATH=%~1
-goto :eof
-
-:wgetPath
- set IWMAKE_WGET=%~1
-goto :eof
-
-:wgetDir
- set IWMAKE_WGET=%IWMAKE_ROOT%\%~1
-goto :eof
-
-:NSISPath
- set IWMAKE_NSISPATH=%~1
-goto :eof
-
-:PerlPath
- set IWMAKE_PERLPATH=%~1
-goto :eof
-
-:MinGWPath
- set IWMAKE_MINGWPATH=%~1
-goto :eof
-
-:unzipApp
- set IWMAKE_UNZIPAPP=%~1
-goto :eof
-
-:releaseLocation
- set IWMAKE_WGETUSER=
- set IWMAKE_WGETPASS=
- for /F "tokens=1,2*" %%m in ("%~1") do set IWMAKE_TMP=%%~m& if not "%%~n"=="" set IWMAKE_TMP2=%%~n& if not "%%~o"=="" set IWMAKE_TMP3=%%~o
- if not "%IWMAKE_TMP2%"=="" set IWMAKE_WGETUSER=--http-user=%IWMAKE_TMP2%
- if not "%IWMAKE_TMP3%"=="" set IWMAKE_WGETPASS=--http-passwd=%IWMAKE_TMP3%
- set IWMAKE_RELEASELOCATION=%IWMAKE_TMP%
-goto :eof
-
-:removeglobals
-if not "%IWMAKE_OLD_PATH%"=="" call %IWMAKE_SCRIPTDIR%\batch\build.bat finish
-set IWMAKE_RELEASELOCATION=
-set IWMAKE_NSISPATH=
-set IWMAKE_SECTION=
-set IWMAKE_WGET=
-set IWMAKE_WGETUSER=
-set IWMAKE_WGETPASS=
-set IWMAKE_UNZIPAPP=
-set IWMAKE_MINGWPATH=
-set IWMAKE_MAKE=
-set IWMAKE_PERLPATH=
-set IWMAKE_STARTDIR=
-set IWMAKE_SCRIPTDIR=
-set IWMAKE_NSISCONF=
-set IWMAKE_RESULT=
-set IWMAKE_TMP=
-set IWMAKE_TMP2=
-set IWMAKE_TMP3=
-set IWMAKE_STATUS=
-set IWMAKE_LOGFILE=
-set IWMAKE_BUILD=
-set IWMAKE_ROOT=
-set IWMAKE_OUTDIR=
-set IWMAKE_EXTERNAL=
-set IWMAKE_OLD_PATH=
-set IWMAKE_OLD_QMAKESPEC=
-set IWMAKE_OLD_QTDIR=
-set IWMAKE_OLD_INCLUDE=
-set IWMAKE_OLD_LIB=
-set IWMAKE_COMPILER=
-set IWMAKE_SRCDIR=
-set IWMAKE_EXTRACTSRC=
-set IWMAKE_EXTRACTDEST=
-set IWMAKE_PARSESECTION=
-set IWMAKE_OUTPUT_FILE=
-set IWMAKE_SIGNPATH=
-goto :eof
-
-:root
-set IWMAKE_ROOT=%~1
-goto :eof
-
-:extroot
-set IWMAKE_EXTERNAL=%~1
-goto :eof
-
-:END
diff --git a/tools/installer/batch/extract.bat b/tools/installer/batch/extract.bat
deleted file mode 100755
index 7f14a9b..0000000
--- a/tools/installer/batch/extract.bat
+++ /dev/null
@@ -1,83 +0,0 @@
-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
-::
-:: Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-:: All rights reserved.
-:: Contact: Nokia Corporation (qt-info@nokia.com)
-::
-:: This file is part of the tools applications of the Qt Toolkit.
-::
-:: $QT_BEGIN_LICENSE:LGPL$
-:: No Commercial Usage
-:: This file contains pre-release code and may not be distributed.
-:: You may use this file in accordance with the terms and conditions
-:: contained in the Technology Preview License Agreement accompanying
-:: this package.
-::
-:: GNU Lesser General Public License Usage
-:: Alternatively, this file may be used under the terms of the GNU Lesser
-:: General Public License version 2.1 as published by the Free Software
-:: Foundation and appearing in the file LICENSE.LGPL included in the
-:: packaging of this file. Please review the following information to
-:: ensure the GNU Lesser General Public License version 2.1 requirements
-:: will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-::
-:: In addition, as a special exception, Nokia gives you certain additional
-:: rights. These rights are described in the Nokia Qt LGPL Exception
-:: version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-::
-:: If you have questions regarding the use of this file, please contact
-:: Nokia at qt-info@nokia.com.
-::
-::
-::
-::
-::
-::
-::
-::
-:: $QT_END_LICENSE$
-::
-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
-call :%1 %2
-goto END
-
-:dest
- set IWMAKE_EXTRACTDEST=%IWMAKE_ROOT%\%~1
-goto :eof
-
-:extUnpack
- set IWMAKE_EXTRACTSRC=%~n1
- pushd %IWMAKE_ROOT%
- if exist "%IWMAKE_EXTRACTSRC%.zip" del /Q /F "%IWMAKE_EXTRACTSRC%.zip"
- %IWMAKE_WGET%\wget %IWMAKE_WGETUSER% %IWMAKE_WGETPASS% %IWMAKE_RELEASELOCATION%/%IWMAKE_EXTRACTSRC%.zip >> %IWMAKE_LOGFILE% 2>&1
- popd
- call :unpack "%~1"
-goto :eof
-
-:unpack
- set IWMAKE_EXTRACTSRC=%~n1
- pushd %IWMAKE_ROOT%
- if exist "%IWMAKE_EXTRACTDEST%" rd /S /Q %IWMAKE_EXTRACTDEST% >> %IWMAKE_LOGFILE% 2>&1
- if exist "%IWMAKE_EXTRACTSRC%" rd /S /Q %IWMAKE_EXTRACTSRC% >> %IWMAKE_LOGFILE% 2>&1
- %IWMAKE_UNZIPAPP% %IWMAKE_EXTRACTSRC%.zip >> %IWMAKE_LOGFILE%
- popd
- move %IWMAKE_ROOT%\%IWMAKE_EXTRACTSRC% %IWMAKE_EXTRACTDEST% >> %IWMAKE_LOGFILE%
-goto :eof
-
-:extPatch
- pushd %IWMAKE_ROOT%
- if exist "%~1" del /Q /F "%~1"
- %IWMAKE_WGET%\wget %IWMAKE_WGETUSER% %IWMAKE_WGETPASS% %IWMAKE_RELEASELOCATION%/%~1 >> %IWMAKE_LOGFILE% 2>&1
- popd
- call :patch "%~1"
-goto :eof
-
-:patch
- pushd %IWMAKE_ROOT%
- %IWMAKE_UNZIPAPP% %~1 >> %IWMAKE_LOGFILE%
- popd
- xcopy /R /I /S /Q /Y %IWMAKE_ROOT%\%IWMAKE_EXTRACTSRC%\*.* %IWMAKE_EXTRACTDEST%\ >> %IWMAKE_LOGFILE%
- rd /S /Q %IWMAKE_ROOT%\%IWMAKE_EXTRACTSRC% >> %IWMAKE_LOGFILE%
-goto :eof
-
-:END
diff --git a/tools/installer/batch/installer.bat b/tools/installer/batch/installer.bat
deleted file mode 100755
index 75e8680..0000000
--- a/tools/installer/batch/installer.bat
+++ /dev/null
@@ -1,247 +0,0 @@
-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
-::
-:: Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-:: All rights reserved.
-:: Contact: Nokia Corporation (qt-info@nokia.com)
-::
-:: This file is part of the tools applications of the Qt Toolkit.
-::
-:: $QT_BEGIN_LICENSE:LGPL$
-:: No Commercial Usage
-:: This file contains pre-release code and may not be distributed.
-:: You may use this file in accordance with the terms and conditions
-:: contained in the Technology Preview License Agreement accompanying
-:: this package.
-::
-:: GNU Lesser General Public License Usage
-:: Alternatively, this file may be used under the terms of the GNU Lesser
-:: General Public License version 2.1 as published by the Free Software
-:: Foundation and appearing in the file LICENSE.LGPL included in the
-:: packaging of this file. Please review the following information to
-:: ensure the GNU Lesser General Public License version 2.1 requirements
-:: will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-::
-:: In addition, as a special exception, Nokia gives you certain additional
-:: rights. These rights are described in the Nokia Qt LGPL Exception
-:: version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-::
-:: If you have questions regarding the use of this file, please contact
-:: Nokia at qt-info@nokia.com.
-::
-::
-::
-::
-::
-::
-::
-::
-:: $QT_END_LICENSE$
-::
-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
-call :%1 %2
-goto END
-
-:begin
- call :reset
- echo !define PRODUCT_NAME "%~1" >> %IWMAKE_NSISCONF%
- echo !define INSTALL_ROOT "%IWMAKE_ROOT%" >> %IWMAKE_NSISCONF%
-goto :eof
-
-:output
- set IWMAKE_OUTPUT_FILE=%~1
- echo !define OUTPUT_FILE "%~1" >> %IWMAKE_NSISCONF%
-goto :eof
-
-:module
- call "%IWMAKE_SCRIPTDIR%\batch\toupper.bat" %~1
- echo !define MODULE_%IWMAKE_RESULT% >> %IWMAKE_NSISCONF%
-goto :eof
-
-:enable
- call "%IWMAKE_SCRIPTDIR%\batch\toupper.bat" %~1
- echo !define USE_%IWMAKE_RESULT:"=% >> %IWMAKE_NSISCONF%
-goto :eof
-
-:disable
- call "%IWMAKE_SCRIPTDIR%\batch\toupper.bat" %~1
- echo !undef USE_%IWMAKE_RESULT:"=% >> %IWMAKE_NSISCONF%
-goto :eof
-
-:startmenu
- echo !define DEFAULT_STARTMENU_STRING "%~1" >> %IWMAKE_NSISCONF%
-goto :eof
-
-:reset
- if exist "%IWMAKE_NSISCONF%" del /Q /F "%IWMAKE_NSISCONF%"
-goto :eof
-
-:instdir
- for /F "tokens=1,2*" %%m in ("%~1") do set IWMAKE_TMP=%%~m& set IWMAKE_TMP2=%%~n& set IWMAKE_TMP3="%%~o"
- call "%IWMAKE_SCRIPTDIR%\batch\toupper.bat" %IWMAKE_TMP%
- echo !define INSTDIR_%IWMAKE_TMP2% %IWMAKE_RESULT:"=% >> "%IWMAKE_NSISCONF%"
- echo !define INSTDIR_%IWMAKE_TMP2%_TEXT %IWMAKE_TMP3% >> "%IWMAKE_NSISCONF%"
-goto :eof
-
-:version
- echo !define PRODUCT_VERSION "%~1" >> "%IWMAKE_NSISCONF%"
-goto :eof
-
-:readme
- echo !define README_FILE "%~1" >> "%IWMAKE_NSISCONF%"
-goto :eof
-
-:licenseFile
- echo !define LICENSE_FILE "%~1" >> "%IWMAKE_NSISCONF%"
-goto :eof
-
-:runfunction
- echo !define RUN_FUNCTION "%~1" >> "%IWMAKE_NSISCONF%"
-goto :eof
-
-:readmefunction
- echo !define README_FUNCTION "%~1" >> "%IWMAKE_NSISCONF%"
-goto :eof
-
-:welcomenote
- echo !define WELCOME_NOTE "%~1" >> "%IWMAKE_NSISCONF%"
-goto :eof
-
-:updateplugins
- call "%IWMAKE_SCRIPTDIR%\batch\copy.bat" extsync INetLoad
- xcopy /Q /Y /R "%IWMAKE_ROOT%\INetLoad\INetLoad.dll" "%IWMAKE_NSISPATH%\Plugins\" >> %IWMAKE_LOGFILE%
-:: xcopy /Q /Y /R "%IWMAKE_SCRIPTDIR%\nsis\qtnsisext\qtnsisext.dll" "%IWMAKE_NSISPATH%\Plugins\" >> %IWMAKE_LOGFILE%
-goto :eof
-
-:defineDir
- for /F "tokens=1,2*" %%m in ("%~1") do set IWMAKE_TMP=%%~m& set IWMAKE_TMP2=%%~n& set IWMAKE_TMP3=%%~o
- call "%IWMAKE_SCRIPTDIR%\batch\toupper.bat" %IWMAKE_TMP%
- set IWMAKE_TMP=%IWMAKE_RESULT%
- call "%IWMAKE_SCRIPTDIR%\batch\toupper.bat" %IWMAKE_TMP2%
- set IWMAKE_TMP2=%IWMAKE_RESULT%
- echo !define MODULE_%IWMAKE_TMP%_%IWMAKE_TMP2% "%IWMAKE_ROOT%\%IWMAKE_TMP3%" >> "%IWMAKE_NSISCONF%"
-goto :eof
-
-:define
- for /F "tokens=1,2*" %%m in ("%~1") do set IWMAKE_TMP=%%~m& set IWMAKE_TMP2=%%~n& set IWMAKE_TMP3="%%~o"
- call "%IWMAKE_SCRIPTDIR%\batch\toupper.bat" %IWMAKE_TMP%
- set IWMAKE_TMP=%IWMAKE_RESULT%
- call "%IWMAKE_SCRIPTDIR%\batch\toupper.bat" %IWMAKE_TMP2%
- set IWMAKE_TMP2=%IWMAKE_RESULT%
- if %IWMAKE_TMP3%=="" set IWMAKE_TMP3=
- echo !define MODULE_%IWMAKE_TMP%_%IWMAKE_TMP2% %IWMAKE_TMP3% >> "%IWMAKE_NSISCONF%"
-goto :eof
-
-:src
- for /F "tokens=1*" %%m in ("%~1") do set IWMAKE_TMP=%%~m& set IWMAKE_TMP2=%%~n
- call "%IWMAKE_SCRIPTDIR%\batch\toupper.bat" %IWMAKE_TMP%
- set IWMAKE_TMP=%IWMAKE_RESULT%
- set IWMAKE_TMP3="%IWMAKE_ROOT%\%IWMAKE_TMP2%"
- echo !define MODULE_%IWMAKE_TMP%_ROOT %IWMAKE_TMP3% >> "%IWMAKE_NSISCONF%"
-goto :eof
-
-:buildDir
- for /F "tokens=1*" %%m in ("%~1") do set IWMAKE_TMP=%%~m& set IWMAKE_TMP2=%%~n
- call "%IWMAKE_SCRIPTDIR%\batch\toupper.bat" %IWMAKE_TMP%
- set IWMAKE_TMP=%IWMAKE_RESULT%
- set IWMAKE_TMP3="%IWMAKE_ROOT%\%IWMAKE_TMP2%"
- echo !define MODULE_%IWMAKE_TMP%_BUILDDIR %IWMAKE_TMP3% >> "%IWMAKE_NSISCONF%"
- for /F "eol=- tokens=1,2,3" %%m in ('%SystemRoot%\system32\find "QT_PACKAGEDATE_STR" %IWMAKE_ROOT%\%IWMAKE_TMP2%\src\corelib\global\qglobal.h') do echo !define MODULE_LICENSECHECK_PACKAGEDATE %%o >> "%IWMAKE_NSISCONF%"
-goto :eof
-
-:compile
- call :required
- pushd %IWMAKE_SCRIPTDIR%\nsis
- "%IWMAKE_NSISPATH%\makensis.exe" installer.nsi >> %IWMAKE_LOGFILE%
- popd
-goto :eof
-
-:required
- call :setrequired PRODUCT_NAME
- call :setrequired INSTALL_ROOT
- call :setrequired PRODUCT_VERSION
- call :setrequired OUTPUT_FILE
- call :setrequired INSTDIR_0
- call :setrequired DEFAULT_STARTMENU_STRING
-goto :eof
-
-:setrequired
- echo !ifndef %1 >> "%IWMAKE_NSISCONF%"
- echo !error "%1 must be in the .conf file..." >> "%IWMAKE_NSISCONF%"
- echo !endif >> "%IWMAKE_NSISCONF%"
-goto :eof
-
-:makeFileList
- for /F "tokens=1*" %%m in ("%~1") do set IWMAKE_TMP=%%~m& set IWMAKE_TMP2=%%~n
- call "%IWMAKE_SCRIPTDIR%\batch\toupper.bat" %IWMAKE_TMP%
- set IWMAKE_TMP=%IWMAKE_RESULT%
- set IWMAKE_TMP3="%IWMAKE_ROOT%\%IWMAKE_TMP2%"
-
-
- echo !macro MODULE_%IWMAKE_TMP%_INSTALLFILES >> "%IWMAKE_NSISCONF%"
-
- pushd %IWMAKE_TMP3%
-
- echo set IWMAKE_TMP2=%%IWMAKE_TMP2:%CD%\=%% > "%IWMAKE_ROOT%\iwmake_tmp.bat"
-
- dir /AD /B /S | %SystemRoot%\system32\sort /R > "%IWMAKE_ROOT%\iwmake_tmp.txt"
- for /F "tokens=1" %%m in (%IWMAKE_ROOT%\iwmake_tmp.txt) do call :addInstallDirectory "%%m"
-
-
- dir /A-D /B /S > "%IWMAKE_ROOT%\iwmake_tmp.txt"
- for /F "tokens=1" %%m in (%IWMAKE_ROOT%\iwmake_tmp.txt) do call :addInstallFile "%%m"
-
- popd
- echo !macroend >> "%IWMAKE_NSISCONF%"
-
-
- echo !macro MODULE_%IWMAKE_TMP%_REMOVE removepath >> "%IWMAKE_NSISCONF%"
- echo strcmp ${removepath} "" MODULE_%IWMAKE_TMP%_REMOVE_SAFETYLABEL >> "%IWMAKE_NSISCONF%"
- pushd %IWMAKE_TMP3%
-
- echo set IWMAKE_TMP2=%%IWMAKE_TMP2:%CD%\=%% > "%IWMAKE_ROOT%\iwmake_tmp.bat"
-
- dir /A-D /B /S > "%IWMAKE_ROOT%\iwmake_tmp.txt"
- for /F "tokens=1" %%m in (%IWMAKE_ROOT%\iwmake_tmp.txt) do call :addRemoveFiles "%%m"
-
- dir /AD /B /S | %SystemRoot%\system32\sort /R > "%IWMAKE_ROOT%\iwmake_tmp.txt"
- for /F "tokens=1" %%m in (%IWMAKE_ROOT%\iwmake_tmp.txt) do call :addRemoveDirectory "%%m"
-
- popd
- echo MODULE_%IWMAKE_TMP%_REMOVE_SAFETYLABEL: >> "%IWMAKE_NSISCONF%"
- echo !macroend >> "%IWMAKE_NSISCONF%"
-goto :eof
-
-:addInstallFile
- set IWMAKE_TMP2=%~1
- call "%IWMAKE_ROOT%\iwmake_tmp.bat"
- echo File "/oname=%IWMAKE_TMP2%" "%~1" >> "%IWMAKE_NSISCONF%"
-goto :eof
-
-:addInstallDirectory
- set IWMAKE_TMP2=%~1
- call "%IWMAKE_ROOT%\iwmake_tmp.bat"
- echo CreateDirectory "$OUTDIR\%IWMAKE_TMP2%" >> "%IWMAKE_NSISCONF%"
-goto :eof
-
-:addRemoveDirectory
- set IWMAKE_TMP2=%~1
- call "%IWMAKE_ROOT%\iwmake_tmp.bat"
- echo RMDir ${removepath}\%IWMAKE_TMP2% >> "%IWMAKE_NSISCONF%"
-goto :eof
-
-:addRemoveFiles
- set IWMAKE_TMP2=%~1
- call "%IWMAKE_ROOT%\iwmake_tmp.bat"
- echo Delete ${removepath}\%IWMAKE_TMP2% >> "%IWMAKE_NSISCONF%"
-goto :eof
-
-:sign
- echo Signing Installer ...
- %IWMAKE_SIGNPATH%\signtool.exe sign /v /t http://timestamp.verisign.com/scripts/timestamp.dll /f "%IWMAKE_SIGNPATH%\keys.pfx" "%IWMAKE_OUTPUT_FILE%" >> %IWMAKE_LOGFILE%
-goto :eof
-
-:openpackage
- echo !define OPENSOURCE_BUILD >> "%IWMAKE_NSISCONF%"
-goto :eof
-
-:END
diff --git a/tools/installer/batch/log.bat b/tools/installer/batch/log.bat
deleted file mode 100755
index 782dcd7..0000000
--- a/tools/installer/batch/log.bat
+++ /dev/null
@@ -1,58 +0,0 @@
-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
-::
-:: Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-:: All rights reserved.
-:: Contact: Nokia Corporation (qt-info@nokia.com)
-::
-:: This file is part of the tools applications of the Qt Toolkit.
-::
-:: $QT_BEGIN_LICENSE:LGPL$
-:: No Commercial Usage
-:: This file contains pre-release code and may not be distributed.
-:: You may use this file in accordance with the terms and conditions
-:: contained in the Technology Preview License Agreement accompanying
-:: this package.
-::
-:: GNU Lesser General Public License Usage
-:: Alternatively, this file may be used under the terms of the GNU Lesser
-:: General Public License version 2.1 as published by the Free Software
-:: Foundation and appearing in the file LICENSE.LGPL included in the
-:: packaging of this file. Please review the following information to
-:: ensure the GNU Lesser General Public License version 2.1 requirements
-:: will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-::
-:: In addition, as a special exception, Nokia gives you certain additional
-:: rights. These rights are described in the Nokia Qt LGPL Exception
-:: version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-::
-:: If you have questions regarding the use of this file, please contact
-:: Nokia at qt-info@nokia.com.
-::
-::
-::
-::
-::
-::
-::
-::
-:: $QT_END_LICENSE$
-::
-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
-call :%1 %2
-goto END
-
-:file
-set IWMAKE_LOGFILE=%IWMAKE_ROOT%\%~1
-call :reset
-goto :eof
-
-:fileAbs
-set IWMAKE_LOGFILE=%1
-call :reset
-goto :eof
-
-:reset
-date /T > %IWMAKE_LOGFILE%
-goto :eof
-
-:END
diff --git a/tools/installer/batch/toupper.bat b/tools/installer/batch/toupper.bat
deleted file mode 100755
index 2543207..0000000
--- a/tools/installer/batch/toupper.bat
+++ /dev/null
@@ -1,69 +0,0 @@
-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
-::
-:: Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-:: All rights reserved.
-:: Contact: Nokia Corporation (qt-info@nokia.com)
-::
-:: This file is part of the tools applications of the Qt Toolkit.
-::
-:: $QT_BEGIN_LICENSE:LGPL$
-:: No Commercial Usage
-:: This file contains pre-release code and may not be distributed.
-:: You may use this file in accordance with the terms and conditions
-:: contained in the Technology Preview License Agreement accompanying
-:: this package.
-::
-:: GNU Lesser General Public License Usage
-:: Alternatively, this file may be used under the terms of the GNU Lesser
-:: General Public License version 2.1 as published by the Free Software
-:: Foundation and appearing in the file LICENSE.LGPL included in the
-:: packaging of this file. Please review the following information to
-:: ensure the GNU Lesser General Public License version 2.1 requirements
-:: will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-::
-:: In addition, as a special exception, Nokia gives you certain additional
-:: rights. These rights are described in the Nokia Qt LGPL Exception
-:: version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-::
-:: If you have questions regarding the use of this file, please contact
-:: Nokia at qt-info@nokia.com.
-::
-::
-::
-::
-::
-::
-::
-::
-:: $QT_END_LICENSE$
-::
-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
-set IWMAKE_RESULT=%1
-if [%IWMAKE_RESULT%]==[] goto :eof
-set IWMAKE_RESULT=%IWMAKE_RESULT:a=A%
-set IWMAKE_RESULT=%IWMAKE_RESULT:b=B%
-set IWMAKE_RESULT=%IWMAKE_RESULT:c=C%
-set IWMAKE_RESULT=%IWMAKE_RESULT:d=D%
-set IWMAKE_RESULT=%IWMAKE_RESULT:e=E%
-set IWMAKE_RESULT=%IWMAKE_RESULT:f=F%
-set IWMAKE_RESULT=%IWMAKE_RESULT:g=G%
-set IWMAKE_RESULT=%IWMAKE_RESULT:h=H%
-set IWMAKE_RESULT=%IWMAKE_RESULT:i=I%
-set IWMAKE_RESULT=%IWMAKE_RESULT:j=J%
-set IWMAKE_RESULT=%IWMAKE_RESULT:k=K%
-set IWMAKE_RESULT=%IWMAKE_RESULT:l=L%
-set IWMAKE_RESULT=%IWMAKE_RESULT:m=M%
-set IWMAKE_RESULT=%IWMAKE_RESULT:n=N%
-set IWMAKE_RESULT=%IWMAKE_RESULT:o=O%
-set IWMAKE_RESULT=%IWMAKE_RESULT:p=P%
-set IWMAKE_RESULT=%IWMAKE_RESULT:q=Q%
-set IWMAKE_RESULT=%IWMAKE_RESULT:r=R%
-set IWMAKE_RESULT=%IWMAKE_RESULT:s=S%
-set IWMAKE_RESULT=%IWMAKE_RESULT:t=T%
-set IWMAKE_RESULT=%IWMAKE_RESULT:u=U%
-set IWMAKE_RESULT=%IWMAKE_RESULT:v=V%
-set IWMAKE_RESULT=%IWMAKE_RESULT:w=W%
-set IWMAKE_RESULT=%IWMAKE_RESULT:x=X%
-set IWMAKE_RESULT=%IWMAKE_RESULT:y=Y%
-set IWMAKE_RESULT=%IWMAKE_RESULT:z=Z%
-
diff --git a/tools/installer/config/config.default.sample b/tools/installer/config/config.default.sample
deleted file mode 100644
index a05b8d7..0000000
--- a/tools/installer/config/config.default.sample
+++ /dev/null
@@ -1,64 +0,0 @@
-#############################################################################
-##
-## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-## All rights reserved.
-## Contact: Nokia Corporation (qt-info@nokia.com)
-##
-## This file is part of the tools applications of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:LGPL$
-## No Commercial Usage
-## This file contains pre-release code and may not be distributed.
-## You may use this file in accordance with the terms and conditions
-## contained in the Technology Preview License Agreement accompanying
-## this package.
-##
-## GNU Lesser General Public License Usage
-## Alternatively, this file may be used under the terms of the GNU Lesser
-## General Public License version 2.1 as published by the Free Software
-## Foundation and appearing in the file LICENSE.LGPL included in the
-## packaging of this file. Please review the following information to
-## ensure the GNU Lesser General Public License version 2.1 requirements
-## will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-##
-## In addition, as a special exception, Nokia gives you certain additional
-## rights. These rights are described in the Nokia Qt LGPL Exception
-## version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-##
-## If you have questions regarding the use of this file, please contact
-## Nokia at qt-info@nokia.com.
-##
-##
-##
-##
-##
-##
-##
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
-
-# root directory
-# Describes the directory where temporary folder, build directory and
-# package will be located at.
-env root "c:\qt_packages"
-
-# where to find all external files
-# To resolve the external dependencies specify a server, where to get
-# required tools like wget, sign, etc.
-env extroot "\\someshare\tools\"
-
-# Location of the installed MinGW to build binaries
-env mingwPath "c:\mingw"
-
-# Location to NSIS package creator
-env NSISPath "%ProgramFiles%\NSIS"
-
-# Location to the install path of PERL
-env perlPath "c:\Perl\bin"
-
-# source package directory
-# Describe the directory where compressed source package is located at.
-# The installer script uses this one for building and creating a package.
-env releaseLocation "http://your.source.server/somepath"
diff --git a/tools/installer/config/mingw-opensource.conf b/tools/installer/config/mingw-opensource.conf
deleted file mode 100644
index 6cba06e..0000000
--- a/tools/installer/config/mingw-opensource.conf
+++ /dev/null
@@ -1,136 +0,0 @@
-#############################################################################
-##
-## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-## All rights reserved.
-## Contact: Nokia Corporation (qt-info@nokia.com)
-##
-## This file is part of the tools applications of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:LGPL$
-## No Commercial Usage
-## This file contains pre-release code and may not be distributed.
-## You may use this file in accordance with the terms and conditions
-## contained in the Technology Preview License Agreement accompanying
-## this package.
-##
-## GNU Lesser General Public License Usage
-## Alternatively, this file may be used under the terms of the GNU Lesser
-## General Public License version 2.1 as published by the Free Software
-## Foundation and appearing in the file LICENSE.LGPL included in the
-## packaging of this file. Please review the following information to
-## ensure the GNU Lesser General Public License version 2.1 requirements
-## will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-##
-## In addition, as a special exception, Nokia gives you certain additional
-## rights. These rights are described in the Nokia Qt LGPL Exception
-## version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-##
-## If you have questions regarding the use of this file, please contact
-## Nokia at qt-info@nokia.com.
-##
-##
-##
-##
-##
-##
-##
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
-#extracts the package to buildDir
-
-#extract dest "build_mingw_opensource"
-#Section EXTRACT
-#extract extUnpack "qt-win-opensource-src-%VERSION%.zip"
-#SectionEnd
-
-#build the binaries
-#build begin mingw "build_mingw_opensource"
-
-#Section CONFIGURE
-#build configure "-confirm-license -release -plugin-sql-sqlite -qt-libpng -qt-libjpeg"
-#SectionEnd
-
-#Section BUILD
-#build bin
-#SectionEnd
-
-#build finish
-
-# organize release files
-#Section ORGANIZE
-#delete dir "release_mingw_opensource"
-
-#copy dest "release_mingw_opensource"
-#copy src "build_mingw_opensource"
-
-# extract everything once more
-#extract dest "release_mingw_opensource"
-#extract unpack "qt-win-opensource-src-4.4.3.zip"
-
-# qconfig.h
-#copy file "src\corelib\global\qconfig.h"
-#copy file "include\QtCore\qconfig.h"
-#copy file "include\Qt\qconfig.h"
-
-# qconfig.pri
-#copy file "mkspecs\qconfig.pri"
-
-# .qmake.cache
-#copy file ".qmake.cache"
-
-# default mkspec
-#copy files "mkspecs\default\*" "mkspecs\default\"
-
-# copy all binary files
-#copy all "*.a"
-#copy all "*.exe"
-#copy all "*.dll"
-
-# .prl files
-#copy files "lib\*.prl" "lib\"
-
-# remove unused stuff
-#delete files "lib\*.dll"
-
-# copy InetLoad license info
-#copy files "..\INetLoad\Readme.txt" "src\3rdparty\InetLoad\"
-
-#SectionEnd
-
-Section NSIS
-# general installer options
-installer begin "Qt OpenSource"
-installer version "4.4.3"
-installer output "c:\iwmake\qt-win-opensource-4.4.3-mingw.exe"
-installer startmenu "Qt by Nokia v4.4.3 (OpenSource)"
-installer enable component_page
-installer enable directory_page
-installer enable startmenu_page
-installer instdir mingw 0 "Qt Installation Directory"
-installer licenseFile "%IWMAKE_ROOT%\release_mingw_opensource\LICENSE.GPL"
-#installer licenseFile "%IWMAKE_ROOT%\release_mingw_opensource\LICENSE.PREVIEW.OPENSOURCE"
-
-installer runfunction "Run Examples and Demos"
-installer readmefunction "Show Documentation"
-
-installer module registeruiext
-installer module opensource
-
-# mingw options
-installer module mingw
-installer src mingw "release_mingw_opensource"
-installer makeFileList mingw "release_mingw_opensource"
-installer buildDir mingw "build_mingw_opensource"
-installer enable nodirlengthcheck
-
-# public generatable package
-installer openpackage
-
-SectionEnd
-
-# compile the package
-Section NSIS_COMPILE
-installer compile
-SectionEnd
diff --git a/tools/installer/iwmake.bat b/tools/installer/iwmake.bat
deleted file mode 100755
index 0fc1b08..0000000
--- a/tools/installer/iwmake.bat
+++ /dev/null
@@ -1,124 +0,0 @@
-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
-::
-:: Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-:: All rights reserved.
-:: Contact: Nokia Corporation (qt-info@nokia.com)
-::
-:: This file is part of the tools applications of the Qt Toolkit.
-::
-:: $QT_BEGIN_LICENSE:LGPL$
-:: No Commercial Usage
-:: This file contains pre-release code and may not be distributed.
-:: You may use this file in accordance with the terms and conditions
-:: contained in the Technology Preview License Agreement accompanying
-:: this package.
-::
-:: GNU Lesser General Public License Usage
-:: Alternatively, this file may be used under the terms of the GNU Lesser
-:: General Public License version 2.1 as published by the Free Software
-:: Foundation and appearing in the file LICENSE.LGPL included in the
-:: packaging of this file. Please review the following information to
-:: ensure the GNU Lesser General Public License version 2.1 requirements
-:: will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-::
-:: In addition, as a special exception, Nokia gives you certain additional
-:: rights. These rights are described in the Nokia Qt LGPL Exception
-:: version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-::
-:: If you have questions regarding the use of this file, please contact
-:: Nokia at qt-info@nokia.com.
-::
-::
-::
-::
-::
-::
-::
-::
-:: $QT_END_LICENSE$
-::
-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
-rem @echo off
-call :init
-if "%IWMAKE_STATUS%"=="failed" goto FAILED
-if not exist "%IWMAKE_SCRIPTDIR%\config\%1.conf" goto FAILED
-if not "%~2"=="" set IWMAKE_SECTION=%~2
-for /F "eol=# tokens=1,2*" %%i in (%IWMAKE_SCRIPTDIR%\config\config.default) do set IWMAKE_TMP=%%k& call :func_delegate %%i %%j
-if "%IWMAKE_STATUS%"=="failed" goto FAILED
-if exist "%IWMAKE_SCRIPTDIR%\config\config.%COMPUTERNAME%" for /F "eol=# tokens=1,2*" %%i in (%IWMAKE_SCRIPTDIR%\config\config.%COMPUTERNAME%) do set IWMAKE_TMP=%%k& call :func_delegate %%i %%j
-if "%IWMAKE_STATUS%"=="failed" goto FAILED
-call :checkrequirements
-if "%IWMAKE_STATUS%"=="failed" goto FAILED
-for /F "eol=# tokens=1,2*" %%i in (%IWMAKE_SCRIPTDIR%\config\%1.conf) do set IWMAKE_TMP=%%k& call :func_delegate %%i %%j
-if "%IWMAKE_STATUS%"=="failed" goto FAILED
-goto DONE
-
-:func_delegate
-if "%IWMAKE_STATUS%"=="failed" goto :eof
-set IWMAKE_TMP="%IWMAKE_TMP:"=%"
-
-if /i "%1"=="sectionend" echo Leaving Section& set IWMAKE_PARSESECTION=1& goto :eof
-if /i not "%1"=="section" goto callScript
-echo Entering Section %~2
-for %%m in (%IWMAKE_SECTION%) do call :checkSection %%m %~2
-goto :eof
-
-:callScript
-if "%IWMAKE_PARSESECTION%"=="0" goto :eof
-
-call "%IWMAKE_SCRIPTDIR%\batch\%1.bat" %2 %IWMAKE_TMP%
-if not "%errorlevel%"=="0" echo %1 %2 failed! >> %IWMAKE_LOGFILE%& set IWMAKE_STATUS=failed
-goto :eof
-
-:checkSection
- if /i "%1"=="%2" echo Skipping Section& set IWMAKE_PARSESECTION=0
-goto :eof
-
-:checkrequirements
- if not exist %IWMAKE_ROOT% mkdir %IWMAKE_ROOT%
- if not "%IWMAKE_SIGNPATH%"=="" goto CheckSIGNOK
- call "%IWMAKE_SCRIPTDIR%\batch\copy.bat" extsync sign
- call "%IWMAKE_SCRIPTDIR%\batch\env.bat" signPath "%IWMAKE_ROOT%\sign"
-:CheckSIGNOK
- if not "%IWMAKE_WGET%"=="" goto CheckWGETOK
- call "%IWMAKE_SCRIPTDIR%\batch\copy.bat" extsync wget
- call "%IWMAKE_SCRIPTDIR%\batch\env.bat" wgetDir wget
-:CheckWGETOK
- if exist "%IWMAKE_PERLPATH%\perl.exe" goto CheckPerlOK
- set IWMAKE_STATUS=failed
- echo Perl not found in %IWMAKE_PERLPATH%! (check your config file)
-:CheckPerlOK
- if not "%IWMAKE_UNZIPAPP%"=="" goto CheckUNZIPOK
- call "%IWMAKE_SCRIPTDIR%\batch\copy.bat" extsync unzip
- call "%IWMAKE_SCRIPTDIR%\batch\env.bat" unzipApp "%IWMAKE_ROOT%\unzip\unzip.exe"
-:CheckUNZIPOK
- if exist "%IWMAKE_NSISPATH%\makensis.exe" goto CheckNSISOK
- set IWMAKE_STATUS=failed
- echo NSIS not found! (check your config file)
-:CheckNSISOK
- call "%IWMAKE_SCRIPTDIR%\batch\installer.bat" updateplugins
-goto :eof
-
-:init
- set IWMAKE_SCRIPTDIR=%~dp0
- set IWMAKE_SCRIPTDIR=%IWMAKE_SCRIPTDIR:~0,-1%
- call "%IWMAKE_SCRIPTDIR%\batch\env.bat" setglobals
-goto :eof
-
-:cleanup
- pushd "%IWMAKE_STARTDIR%"
- call "%IWMAKE_SCRIPTDIR%\batch\env.bat" removeglobals
- popd
-goto :eof
-
-:FAILED
- call :cleanup
- echo Failed!
-goto END
-
-:DONE
- call :cleanup
- echo Done!
-goto END
-
-:END
diff --git a/tools/installer/nsis/confirmpage.ini b/tools/installer/nsis/confirmpage.ini
deleted file mode 100644
index b42132c..0000000
--- a/tools/installer/nsis/confirmpage.ini
+++ /dev/null
@@ -1,59 +0,0 @@
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;
-;; Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-;; All rights reserved.
-;; Contact: Nokia Corporation (qt-info@nokia.com)
-;;
-;; This file is part of the tools applications of the Qt Toolkit.
-;;
-;; $QT_BEGIN_LICENSE:LGPL$
-;; No Commercial Usage
-;; This file contains pre-release code and may not be distributed.
-;; You may use this file in accordance with the terms and conditions
-;; contained in the Technology Preview License Agreement accompanying
-;; this package.
-;;
-;; GNU Lesser General Public License Usage
-;; Alternatively, this file may be used under the terms of the GNU Lesser
-;; General Public License version 2.1 as published by the Free Software
-;; Foundation and appearing in the file LICENSE.LGPL included in the
-;; packaging of this file. Please review the following information to
-;; ensure the GNU Lesser General Public License version 2.1 requirements
-;; will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-;;
-;; In addition, as a special exception, Nokia gives you certain additional
-;; rights. These rights are described in the Nokia Qt LGPL Exception
-;; version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-;;
-;; If you have questions regarding the use of this file, please contact
-;; Nokia at qt-info@nokia.com.
-;;
-;;
-;;
-;;
-;;
-;;
-;;
-;;
-;; $QT_END_LICENSE$
-;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-; Ini file generated by the HM NIS Edit IO designer.
-[Settings]
-NumFields=2
-
-[Field 1]
-Type=Label
-Text=The following components will be uninstalled:
-Left=1
-Right=298
-Top=1
-Bottom=12
-
-[Field 2]
-Type=Label
-Left=16
-Right=298
-Top=16
-Bottom=136
-
diff --git a/tools/installer/nsis/gwdownload.ini b/tools/installer/nsis/gwdownload.ini
deleted file mode 100644
index c139aaf..0000000
--- a/tools/installer/nsis/gwdownload.ini
+++ /dev/null
@@ -1,118 +0,0 @@
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;
-;; Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-;; All rights reserved.
-;; Contact: Nokia Corporation (qt-info@nokia.com)
-;;
-;; This file is part of the tools applications of the Qt Toolkit.
-;;
-;; $QT_BEGIN_LICENSE:LGPL$
-;; No Commercial Usage
-;; This file contains pre-release code and may not be distributed.
-;; You may use this file in accordance with the terms and conditions
-;; contained in the Technology Preview License Agreement accompanying
-;; this package.
-;;
-;; GNU Lesser General Public License Usage
-;; Alternatively, this file may be used under the terms of the GNU Lesser
-;; General Public License version 2.1 as published by the Free Software
-;; Foundation and appearing in the file LICENSE.LGPL included in the
-;; packaging of this file. Please review the following information to
-;; ensure the GNU Lesser General Public License version 2.1 requirements
-;; will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-;;
-;; In addition, as a special exception, Nokia gives you certain additional
-;; rights. These rights are described in the Nokia Qt LGPL Exception
-;; version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-;;
-;; If you have questions regarding the use of this file, please contact
-;; Nokia at qt-info@nokia.com.
-;;
-;;
-;;
-;;
-;;
-;;
-;;
-;;
-;; $QT_END_LICENSE$
-;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-; Ini file generated by the HM NIS Edit IO designer.
-[Settings]
-NumFields=9
-
-[Field 1]
-Type=Groupbox
-Text=Find MinGW
-Left=0
-Right=299
-Top=49
-Bottom=91
-
-[Field 2]
-Type=Label
-Text=Please specify a directory where to find MinGW (for instance: C:\\MinGW). If you do not have MinGW installed, you can let the installer download and install it for you.
-Left=2
-Right=298
-Top=1
-Bottom=27
-
-[Field 3]
-Type=DirRequest
-Left=8
-Right=290
-Top=68
-Bottom=81
-
-[Field 4]
-Type=Groupbox
-Text=Download and install MinGW
-Left=0
-Right=299
-Top=94
-Bottom=137
-
-[Field 5]
-Type=Label
-Text=Previously installed MinGW:
-Left=8
-Right=286
-Top=60
-Bottom=68
-
-[Field 6]
-Type=DirRequest
-Left=8
-Right=290
-Top=116
-Bottom=129
-Flags=DISABLED
-
-[Field 7]
-Type=Label
-Text=Installation directory:
-Left=8
-Right=124
-Top=107
-Bottom=115
-Flags=DISABLED
-
-[Field 8]
-Type=Checkbox
-Text=Download and install minimal MinGW installation.
-Left=8
-Right=172
-Top=28
-Bottom=40
-Flags=NOTIFY
-
-[Field 9]
-Type=Link
-Text=(http://www.mingw.org)
-Left=174
-Right=260
-Top=30
-Bottom=38
-State=http://www.mingw.org
-
diff --git a/tools/installer/nsis/gwmirror.ini b/tools/installer/nsis/gwmirror.ini
deleted file mode 100644
index e246080..0000000
--- a/tools/installer/nsis/gwmirror.ini
+++ /dev/null
@@ -1,67 +0,0 @@
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;
-;; Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-;; All rights reserved.
-;; Contact: Nokia Corporation (qt-info@nokia.com)
-;;
-;; This file is part of the tools applications of the Qt Toolkit.
-;;
-;; $QT_BEGIN_LICENSE:LGPL$
-;; No Commercial Usage
-;; This file contains pre-release code and may not be distributed.
-;; You may use this file in accordance with the terms and conditions
-;; contained in the Technology Preview License Agreement accompanying
-;; this package.
-;;
-;; GNU Lesser General Public License Usage
-;; Alternatively, this file may be used under the terms of the GNU Lesser
-;; General Public License version 2.1 as published by the Free Software
-;; Foundation and appearing in the file LICENSE.LGPL included in the
-;; packaging of this file. Please review the following information to
-;; ensure the GNU Lesser General Public License version 2.1 requirements
-;; will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-;;
-;; In addition, as a special exception, Nokia gives you certain additional
-;; rights. These rights are described in the Nokia Qt LGPL Exception
-;; version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-;;
-;; If you have questions regarding the use of this file, please contact
-;; Nokia at qt-info@nokia.com.
-;;
-;;
-;;
-;;
-;;
-;;
-;;
-;;
-;; $QT_END_LICENSE$
-;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-; Ini file generated by the HM NIS Edit IO designer.
-[Settings]
-NumFields=3
-
-[Field 1]
-Type=Label
-Text=Select a mirror where to download MinGW:
-Left=0
-Right=211
-Top=0
-Bottom=8
-
-[Field 2]
-Type=Checkbox
-Text=Download MinGW source code. (You don't need this to compile Qt)
-Left=4
-Right=296
-Top=124
-Bottom=134
-
-[Field 3]
-Type=Listbox
-Left=0
-Right=299
-Top=9
-Bottom=118
-
diff --git a/tools/installer/nsis/images/install.ico b/tools/installer/nsis/images/install.ico
deleted file mode 100644
index 080d82d..0000000
--- a/tools/installer/nsis/images/install.ico
+++ /dev/null
Binary files differ
diff --git a/tools/installer/nsis/images/qt-header.bmp b/tools/installer/nsis/images/qt-header.bmp
deleted file mode 100644
index 1333cb4..0000000
--- a/tools/installer/nsis/images/qt-header.bmp
+++ /dev/null
Binary files differ
diff --git a/tools/installer/nsis/images/qt-wizard.bmp b/tools/installer/nsis/images/qt-wizard.bmp
deleted file mode 100644
index 4aefd2d..0000000
--- a/tools/installer/nsis/images/qt-wizard.bmp
+++ /dev/null
Binary files differ
diff --git a/tools/installer/nsis/includes/global.nsh b/tools/installer/nsis/includes/global.nsh
deleted file mode 100644
index d91a039..0000000
--- a/tools/installer/nsis/includes/global.nsh
+++ /dev/null
@@ -1,143 +0,0 @@
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;
-;; Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-;; All rights reserved.
-;; Contact: Nokia Corporation (qt-info@nokia.com)
-;;
-;; This file is part of the tools applications of the Qt Toolkit.
-;;
-;; $QT_BEGIN_LICENSE:LGPL$
-;; No Commercial Usage
-;; This file contains pre-release code and may not be distributed.
-;; You may use this file in accordance with the terms and conditions
-;; contained in the Technology Preview License Agreement accompanying
-;; this package.
-;;
-;; GNU Lesser General Public License Usage
-;; Alternatively, this file may be used under the terms of the GNU Lesser
-;; General Public License version 2.1 as published by the Free Software
-;; Foundation and appearing in the file LICENSE.LGPL included in the
-;; packaging of this file. Please review the following information to
-;; ensure the GNU Lesser General Public License version 2.1 requirements
-;; will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-;;
-;; In addition, as a special exception, Nokia gives you certain additional
-;; rights. These rights are described in the Nokia Qt LGPL Exception
-;; version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-;;
-;; If you have questions regarding the use of this file, please contact
-;; Nokia at qt-info@nokia.com.
-;;
-;;
-;;
-;;
-;;
-;;
-;;
-;;
-;; $QT_END_LICENSE$
-;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-!include "StrFunc.nsh"
-!include "includes\list.nsh"
-
-${StrCase}
-${StrTrimNewLines}
-${StrStr}
-${StrRep}
-${UnStrRep}
-
-var STARTMENU_STRING
-var PRODUCT_UNIQUE_KEY
-var RUNNING_AS_ADMIN
-
-!ifndef MODULE_MINGW
- !ifdef MODULE_MSVC_VC60
- !define INSTALL_COMPILER "vc60"
- !else
- !ifdef MODULE_MSVC_VS2002
- !define INSTALL_COMPILER "vs2002"
- !else
- !ifdef MODULE_MSVC_VS2005
- !define INSTALL_COMPILER "vs2005"
- !else
- !define INSTALL_COMPILER "vs2003"
- !endif
- !endif
- !endif
-!else
- !define INSTALL_COMPILER "mingw"
-!endif
-
-; ADDIN\INTEGRATION
-var VS_VERSION
-var VS_VERSION_SHORT
-var ADDIN_INSTDIR
-var VSIP_INSTDIR
-var HELP_INSTDIR
-var ECLIPSE_INSTDIR
-var QTJAMBIECLIPSE_INSTDIR
-
-; LICENSECHECK
-var LICENSE_KEY
-var LICENSEE
-var LICENSE_PRODUCT
-var LICENSE_FILE
-
-; MSVC
-!ifdef MODULE_MSVC
- !define MSVC_ValidateDirectory
- var MSVC_INSTDIR
-!endif
-
-; MINGW
-!ifdef MODULE_MINGW
- !define MINGW_ValidateDirectory
- var MINGW_INSTDIR
-!endif
-
-; QSA
-var QSA_INSTDIR
-
-; QTDIR PAGE
-var QTDIR_SELECTED
-var COMPILER_SELECTED
-
-; used by addin7x and vsip
-!ifndef MODULE_VSIP_ROOT
- !define MODULE_VSIP_ROOT "${INSTALL_ROOT}\vsip"
-!endif
-
-; add to confirm path
-var UninstallerConfirmProduct
-
-Function un.ConfirmOnDelete
- exch $0
- push $1
-
- push "$0"
- push "$UninstallerConfirmProduct"
- call un.ItemInList
- pop $1
- IntCmp $1 1 ConfirmOnDeleteDone
-
- strcmp "$UninstallerConfirmProduct" "" 0 +3
- strcpy $UninstallerConfirmProduct "$0"
- goto +2
- strcpy $UninstallerConfirmProduct "$UninstallerConfirmProduct$\r$\n$0"
-
- ConfirmOnDeleteDone:
- pop $1
- pop $0
-FunctionEnd
-
-!macro ConfirmOnRemove REG_KEY PRODUCT_NAME
- push $0
- ClearErrors
- ReadRegDWORD $0 SHCTX "$PRODUCT_UNIQUE_KEY" "${REG_KEY}"
- intcmp $0 1 0 +3
- push "${PRODUCT_NAME}"
- call un.ConfirmOnDelete
- ClearErrors
- pop $0
-!macroend
diff --git a/tools/installer/nsis/includes/instdir.nsh b/tools/installer/nsis/includes/instdir.nsh
deleted file mode 100644
index a0957dd..0000000
--- a/tools/installer/nsis/includes/instdir.nsh
+++ /dev/null
@@ -1,254 +0,0 @@
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;
-;; Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-;; All rights reserved.
-;; Contact: Nokia Corporation (qt-info@nokia.com)
-;;
-;; This file is part of the tools applications of the Qt Toolkit.
-;;
-;; $QT_BEGIN_LICENSE:LGPL$
-;; No Commercial Usage
-;; This file contains pre-release code and may not be distributed.
-;; You may use this file in accordance with the terms and conditions
-;; contained in the Technology Preview License Agreement accompanying
-;; this package.
-;;
-;; GNU Lesser General Public License Usage
-;; Alternatively, this file may be used under the terms of the GNU Lesser
-;; General Public License version 2.1 as published by the Free Software
-;; Foundation and appearing in the file LICENSE.LGPL included in the
-;; packaging of this file. Please review the following information to
-;; ensure the GNU Lesser General Public License version 2.1 requirements
-;; will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-;;
-;; In addition, as a special exception, Nokia gives you certain additional
-;; rights. These rights are described in the Nokia Qt LGPL Exception
-;; version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-;;
-;; If you have questions regarding the use of this file, please contact
-;; Nokia at qt-info@nokia.com.
-;;
-;;
-;;
-;;
-;;
-;;
-;;
-;;
-;; $QT_END_LICENSE$
-;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-!ifndef INSTDIR_1
- !macro INSTDIR_INITIALIZE
- !define MUI_DIRECTORYPAGE_VARIABLE $${INSTDIR_0}_INSTDIR
- !ifdef ${INSTDIR_0}_ValidateDirectory
- !define MUI_PAGE_CUSTOMFUNCTION_LEAVE "${INSTDIR_0}_ValidateDirectoryFunc"
- !endif
- !insertmacro MUI_PAGE_DIRECTORY
- !macroend
- !macro INSTDIR_FUNCTIONS
- !macroend
- !macro INSTDIR_STARTUP
- !macroend
-!else
-!macro INSTDIR_INITIALIZE
- !define INSTDIR_INI_FILE "instdir.ini"
- !define INSTDIR_0_DIRFIELD "Field 10"
- !define INSTDIR_0_TEXTFIELD "Field 13"
- !define INSTDIR_1_DIRFIELD "Field 7"
- !define INSTDIR_1_TEXTFIELD "Field 11"
- !define INSTDIR_2_DIRFIELD "Field 5"
- !define INSTDIR_2_TEXTFIELD "Field 8"
- !define INSTDIR_3_DIRFIELD "Field 3"
- !define INSTDIR_3_TEXTFIELD "Field 6"
- !define INSTDIR_4_DIRFIELD "Field 2"
- !define INSTDIR_4_TEXTFIELD "Field 4"
- !define INSTDIR_5_DIRFIELD "Field 9"
- !define INSTDIR_5_TEXTFIELD "Field 12"
- !define INSTDIR_DIRHEIGHT 18
-
- Page custom InitInstDirs UpdateInstDirs
-
- LangString InstDirLicenseTitle ${LANG_ENGLISH} "Installation Directories"
- LangString InstDirLicenseTitleDescription ${LANG_ENGLISH} "Select the directories where you want the software installed."
-!macroend
-
-!macro INSTDIR_FUNCTIONS
- Function InitInstDirs
- push $0
- push $1
- push $2
- push $3
-
- !insertmacro MUI_HEADER_TEXT "$(InstDirLicenseTitle)" "$(InstDirLicenseTitleDescription)"
- strcpy $0 "129"
-
-!ifdef INSTDIR_0
- SectionGetFlags ${${INSTDIR_0}_SEC01} $1
-!ifdef ${INSTDIR_0}_SEC02
- SectionGetFlags ${${INSTDIR_0}_SEC02} $3
- IntOp $1 $1 | $3
-!endif
- IntOp $2 $1 & 1 ;just care about the first flag
- StrCpy $1 "READONLY"
- StrCmp "$2" "1" +2
- StrCpy $1 "DISABLED"
- !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_0_TEXTFIELD}" "Flags" "$1"
- !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_0_DIRFIELD}" "Flags" "$1"
- !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_0_TEXTFIELD}" "Text" "${INSTDIR_0_TEXT}"
- !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_0_DIRFIELD}" "State" $${INSTDIR_0}_INSTDIR
-!else
- !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_0_DIRFIELD}" "Type" "Unknown"
- !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_0_TEXTFIELD}" "Type" "Unknown"
- intop $0 $0 - ${INSTDIR_DIRHEIGHT}
-!endif
-!ifdef INSTDIR_1
- SectionGetFlags ${${INSTDIR_1}_SEC01} $1
-!ifdef ${INSTDIR_1}_SEC02
- SectionGetFlags ${${INSTDIR_1}_SEC02} $3
- IntOp $1 $1 | $3
-!endif
- IntOp $2 $1 & 1 ;just care about the first flag
- StrCpy $1 "READONLY"
- StrCmp "$2" "1" +2
- StrCpy $1 "DISABLED"
- !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_1_TEXTFIELD}" "Flags" "$1"
- !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_1_DIRFIELD}" "Flags" "$1"
- !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_1_TEXTFIELD}" "Text" "${INSTDIR_1_TEXT}"
- !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_1_DIRFIELD}" "State" $${INSTDIR_1}_INSTDIR
-!else
- !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_1_DIRFIELD}" "Type" "Unknown"
- !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_1_TEXTFIELD}" "Type" "Unknown"
- intop $0 $0 - ${INSTDIR_DIRHEIGHT}
-!endif
-!ifdef INSTDIR_2
- SectionGetFlags ${${INSTDIR_2}_SEC01} $1
-!ifdef ${INSTDIR_2}_SEC02
- SectionGetFlags ${${INSTDIR_2}_SEC02} $3
- IntOp $1 $1 | $3
-!endif
- IntOp $2 $1 & 1 ;just care about the first flag
- StrCpy $1 "READONLY"
- StrCmp "$2" "1" +2
- StrCpy $1 "DISABLED"
- !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_2_TEXTFIELD}" "Flags" "$1"
- !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_2_DIRFIELD}" "Flags" "$1"
- !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_2_TEXTFIELD}" "Text" "${INSTDIR_2_TEXT}"
- !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_2_DIRFIELD}" "State" $${INSTDIR_2}_INSTDIR
-!else
- !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_2_DIRFIELD}" "Type" "Unknown"
- !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_2_TEXTFIELD}" "Type" "Unknown"
- intop $0 $0 - ${INSTDIR_DIRHEIGHT}
-!endif
-!ifdef INSTDIR_3
- SectionGetFlags ${${INSTDIR_3}_SEC01} $1
-!ifdef ${INSTDIR_3}_SEC02
- SectionGetFlags ${${INSTDIR_3}_SEC02} $3
- IntOp $1 $1 | $3
-!endif
- IntOp $2 $1 & 1 ;just care about the first flag
- StrCpy $1 "READONLY"
- StrCmp "$2" "1" +2
- StrCpy $1 "DISABLED"
- !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_3_TEXTFIELD}" "Flags" "$1"
- !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_3_DIRFIELD}" "Flags" "$1"
- !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_3_TEXTFIELD}" "Text" "${INSTDIR_3_TEXT}"
- !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_3_DIRFIELD}" "State" $${INSTDIR_3}_INSTDIR
-!else
- !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_3_DIRFIELD}" "Type" "Unknown"
- !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_3_TEXTFIELD}" "Type" "Unknown"
- intop $0 $0 - ${INSTDIR_DIRHEIGHT}
-!endif
-!ifdef INSTDIR_4
- SectionGetFlags ${${INSTDIR_4}_SEC01} $1
-!ifdef ${INSTDIR_4}_SEC02
- SectionGetFlags ${${INSTDIR_4}_SEC02} $3
- IntOp $1 $1 | $3
-!endif
- IntOp $2 $1 & 1 ;just care about the first flag
- StrCpy $1 "READONLY"
- StrCmp "$2" "1" +2
- StrCpy $1 "DISABLED"
- !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_4_TEXTFIELD}" "Flags" "$1"
- !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_4_DIRFIELD}" "Flags" "$1"
- !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_4_TEXTFIELD}" "Text" "${INSTDIR_4_TEXT}"
- !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_4_DIRFIELD}" "State" $${INSTDIR_4}_INSTDIR
-!else
- !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_4_DIRFIELD}" "Type" "Unknown"
- !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_4_TEXTFIELD}" "Type" "Unknown"
- intop $0 $0 - ${INSTDIR_DIRHEIGHT}
-!endif
-!ifdef INSTDIR_5
- SectionGetFlags ${${INSTDIR_5}_SEC01} $1
-!ifdef ${INSTDIR_5}_SEC02
- SectionGetFlags ${${INSTDIR_5}_SEC02} $3
- IntOp $1 $1 | $3
-!endif
- IntOp $2 $1 & 1 ;just care about the first flag
- StrCpy $1 "READONLY"
- StrCmp "$2" "1" +2
- StrCpy $1 "DISABLED"
- !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_5_TEXTFIELD}" "Flags" "$1"
- !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_5_DIRFIELD}" "Flags" "$1"
- !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_5_TEXTFIELD}" "Text" "${INSTDIR_5_TEXT}"
- !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_5_DIRFIELD}" "State" $${INSTDIR_5}_INSTDIR
-!else
- !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_5_DIRFIELD}" "Type" "Unknown"
- !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_5_TEXTFIELD}" "Type" "Unknown"
- intop $0 $0 - ${INSTDIR_DIRHEIGHT}
-!endif
-
- !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "Field 1" "Bottom" "$0"
- !insertmacro MUI_INSTALLOPTIONS_DISPLAY "${INSTDIR_INI_FILE}"
-
- pop $3
- pop $2
- pop $1
- pop $0
- FunctionEnd
-
- Function UpdateInstDirs
-!ifdef INSTDIR_0
- !insertmacro MUI_INSTALLOPTIONS_READ $${INSTDIR_0}_INSTDIR "${INSTDIR_INI_FILE}" "${INSTDIR_0_DIRFIELD}" "State"
- !ifdef ${INSTDIR_0}_ValidateDirectory
- call ${INSTDIR_0}_ValidateDirectoryFunc
- !endif
-!endif
-!ifdef INSTDIR_1
- !insertmacro MUI_INSTALLOPTIONS_READ $${INSTDIR_1}_INSTDIR "${INSTDIR_INI_FILE}" "${INSTDIR_1_DIRFIELD}" "State"
- !ifdef ${INSTDIR_1}_ValidateDirectory
- call ${INSTDIR_1}_ValidateDirectoryFunc
- !endif
-!endif
-!ifdef INSTDIR_2
- !insertmacro MUI_INSTALLOPTIONS_READ $${INSTDIR_2}_INSTDIR "${INSTDIR_INI_FILE}" "${INSTDIR_2_DIRFIELD}" "State"
- !ifdef ${INSTDIR_2}_ValidateDirectory
- call ${INSTDIR_2}_ValidateDirectoryFunc
- !endif
-!endif
-!ifdef INSTDIR_3
- !insertmacro MUI_INSTALLOPTIONS_READ $${INSTDIR_3}_INSTDIR "${INSTDIR_INI_FILE}" "${INSTDIR_3_DIRFIELD}" "State"
- !ifdef ${INSTDIR_3}_ValidateDirectory
- call ${INSTDIR_3}_ValidateDirectoryFunc
- !endif
-!endif
-!ifdef INSTDIR_4
- !insertmacro MUI_INSTALLOPTIONS_READ $${INSTDIR_4}_INSTDIR "${INSTDIR_INI_FILE}" "${INSTDIR_4_DIRFIELD}" "State"
- !ifdef ${INSTDIR_4}_ValidateDirectory
- call ${INSTDIR_4}_ValidateDirectoryFunc
- !endif
-!endif
-!ifdef INSTDIR_5
- !insertmacro MUI_INSTALLOPTIONS_READ $${INSTDIR_5}_INSTDIR "${INSTDIR_INI_FILE}" "${INSTDIR_5_DIRFIELD}" "State"
- !ifdef ${INSTDIR_5}_ValidateDirectory
- call ${INSTDIR_5}_ValidateDirectoryFunc
- !endif
-!endif
- FunctionEnd
-!macroend
-
-!macro INSTDIR_STARTUP
- !insertmacro MUI_INSTALLOPTIONS_EXTRACT "${INSTDIR_INI_FILE}"
-!macroend
-
-!endif ;ifndef INSTDIR_1
diff --git a/tools/installer/nsis/includes/list.nsh b/tools/installer/nsis/includes/list.nsh
deleted file mode 100644
index 7a2fd0a..0000000
--- a/tools/installer/nsis/includes/list.nsh
+++ /dev/null
@@ -1,136 +0,0 @@
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;
-;; Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-;; All rights reserved.
-;; Contact: Nokia Corporation (qt-info@nokia.com)
-;;
-;; This file is part of the tools applications of the Qt Toolkit.
-;;
-;; $QT_BEGIN_LICENSE:LGPL$
-;; No Commercial Usage
-;; This file contains pre-release code and may not be distributed.
-;; You may use this file in accordance with the terms and conditions
-;; contained in the Technology Preview License Agreement accompanying
-;; this package.
-;;
-;; GNU Lesser General Public License Usage
-;; Alternatively, this file may be used under the terms of the GNU Lesser
-;; General Public License version 2.1 as published by the Free Software
-;; Foundation and appearing in the file LICENSE.LGPL included in the
-;; packaging of this file. Please review the following information to
-;; ensure the GNU Lesser General Public License version 2.1 requirements
-;; will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-;;
-;; In addition, as a special exception, Nokia gives you certain additional
-;; rights. These rights are described in the Nokia Qt LGPL Exception
-;; version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-;;
-;; If you have questions regarding the use of this file, please contact
-;; Nokia at qt-info@nokia.com.
-;;
-;;
-;;
-;;
-;;
-;;
-;;
-;;
-;; $QT_END_LICENSE$
-;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-!ifndef LIST_INCLUDE
-!define LIST_INCLUDE
-
-; usage:
-; push item
-; push list
-; call ItemInList
-; returns 1 or 0
-!macro ItemInList UN
-Function ${UN}ItemInList
- exch $0 ;list
- exch
- exch $1 ;item
- push $2 ;counter
- push $3 ;substr
- push $4 ;char
-
- strcpy $3 ""
- strcpy $2 "0"
-
- loop:
- strcpy $4 $0 1 $2
- strcmp "$4" "" atend
- intop $2 $2 + 1
-
- strcmp "$4" "|" 0 +4
- strcmp "$3" "$1" found
- strcpy $3 "" ;reset substr
- goto +2
- strcpy $3 "$3$4" ;append char to substr
- goto loop
-
- found:
- strcpy $0 "1"
- goto done
-
- atend:
- strcmp "$3" "$1" found
- strcpy $0 "0"
-
- done:
- pop $4
- pop $3
- pop $2
- pop $1
- exch $0
-FunctionEnd
-!macroend
-
-!insertmacro ItemInList ""
-!insertmacro ItemInList "un."
-
-Function GetItemInList
- exch $0 ;list
- exch
- exch $1 ;index
- push $2 ;counter
- push $3 ;substr
- push $4 ;char
- push $5 ;current index
-
- strcpy $3 ""
- strcpy $2 "0"
- strcpy $5 "1"
-
- loop:
- strcpy $4 $0 1 $2
- strcmp "$4" "" atend
- intop $2 $2 + 1
-
- strcmp "$4" "|" 0 +5
- strcmp "$5" "$1" found
- strcpy $3 "" ;reset substr
- intop $5 $5 + 1
- goto +2
- strcpy $3 "$3$4" ;append char to substr
- goto loop
-
- found:
- strcpy $0 "$3"
- goto done
-
- atend:
- strcmp "$5" "$1" found
- strcpy $0 ""
-
- done:
- pop $5
- pop $4
- pop $3
- pop $2
- pop $1
- exch $0
-FunctionEnd
-
-!endif ;LIST_INCLUDE
diff --git a/tools/installer/nsis/includes/qtcommon.nsh b/tools/installer/nsis/includes/qtcommon.nsh
deleted file mode 100644
index a4ec01b..0000000
--- a/tools/installer/nsis/includes/qtcommon.nsh
+++ /dev/null
@@ -1,549 +0,0 @@
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;
-;; Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-;; All rights reserved.
-;; Contact: Nokia Corporation (qt-info@nokia.com)
-;;
-;; This file is part of the tools applications of the Qt Toolkit.
-;;
-;; $QT_BEGIN_LICENSE:LGPL$
-;; No Commercial Usage
-;; This file contains pre-release code and may not be distributed.
-;; You may use this file in accordance with the terms and conditions
-;; contained in the Technology Preview License Agreement accompanying
-;; this package.
-;;
-;; GNU Lesser General Public License Usage
-;; Alternatively, this file may be used under the terms of the GNU Lesser
-;; General Public License version 2.1 as published by the Free Software
-;; Foundation and appearing in the file LICENSE.LGPL included in the
-;; packaging of this file. Please review the following information to
-;; ensure the GNU Lesser General Public License version 2.1 requirements
-;; will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-;;
-;; In addition, as a special exception, Nokia gives you certain additional
-;; rights. These rights are described in the Nokia Qt LGPL Exception
-;; version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-;;
-;; If you have questions regarding the use of this file, please contact
-;; Nokia at qt-info@nokia.com.
-;;
-;;
-;;
-;;
-;;
-;;
-;;
-;;
-;; $QT_END_LICENSE$
-;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-!ifndef QTCOMMON_INCLUDE
-!define QTCOMMON_INCLUDE
-
-!macro MakeQtDirectory UN
-Function ${UN}MakeQtDirectory
- exch $0
-
- push $0
- push " " #replace
- push "-" #with
- call ${UN}ReplaceString
- pop $0
-
- push $0
- push "(" #replace
- push "" #with
- call ${UN}ReplaceString
- pop $0
-
- push $0
- push ")" #replace
- push "" #with
- call ${UN}ReplaceString
- pop $0
-
- exch $0
-FunctionEnd
-!macroend
-!insertmacro MakeQtDirectory ""
-!insertmacro MakeQtDirectory "un."
-
-Function AddStartmenuApplication
- exch $0
- IfFileExists "$0\assistant.exe" 0 +2
- CreateShortCut "$SMPROGRAMS\$STARTMENU_STRING\Assistant.lnk" "$0\assistant.exe"
- IfFileExists "$0\designer.exe" 0 +2
- CreateShortCut "$SMPROGRAMS\$STARTMENU_STRING\Designer.lnk" "$0\designer.exe"
- IfFileExists "$0\linguist.exe" 0 +2
- CreateShortCut "$SMPROGRAMS\$STARTMENU_STRING\Linguist.lnk" "$0\linguist.exe"
- IfFileExists "$0\qtdemo.exe" 0 +2
- CreateShortCut "$SMPROGRAMS\$STARTMENU_STRING\Examples and Demos.lnk" "$0\qtdemo.exe"
- IfFileExists "$0\..\README" 0 ReadMeShortCutFinished
- IfFileExists "$WINDIR\notepad.exe" +3
- CreateShortCut "$SMPROGRAMS\$STARTMENU_STRING\Qt Readme.lnk" "$SYSDIR\notepad.exe" "$0\..\README"
- goto ReadMeShortCutFinished
- CreateShortCut "$SMPROGRAMS\$STARTMENU_STRING\Qt Readme.lnk" "$WINDIR\notepad.exe" "$0\..\README"
- ReadMeShortCutFinished:
- pop $0
-FunctionEnd
-
-Function un.RemoveStartmenuApplication
- Delete "$SMPROGRAMS\$STARTMENU_STRING\Assistant.lnk"
- Delete "$SMPROGRAMS\$STARTMENU_STRING\Designer.lnk"
- Delete "$SMPROGRAMS\$STARTMENU_STRING\Linguist.lnk"
- Delete "$SMPROGRAMS\$STARTMENU_STRING\Examples and Demos.lnk"
- Delete "$SMPROGRAMS\$STARTMENU_STRING\Qt Readme.lnk"
-FunctionEnd
-
-#patch the licence information
-Function PatchLicenseInformation
- exch $0
- push $1
- push $2
-
- DetailPrint "Patching license information..."
-
- IfFileExists "$0\src\corelib\global\qconfig.h" 0 +3
- strcpy $2 "$0\src\corelib\global\qconfig.h"
- goto PatchLicensee
-
- IfFileExists "$0\include\Qt\qconfig.h" 0 PatchConfigPriFile
- strcpy $2 "$0\include\Qt\qconfig.h"
-
- PatchLicensee:
- push $2
- push '#define QT_PRODUCT_LICENSEE "'
- push '#define QT_PRODUCT_LICENSEE "$LICENSEE"$\r$\n'
- call PatchLine
-
- push $2
- push '#define QT_PRODUCT_LICENSE "'
- push '#define QT_PRODUCT_LICENSE "$LICENSE_PRODUCT"$\r$\n'
- call PatchLine
-
- push $2
- ${StrCase} $1 "$LICENSE_PRODUCT" "U"
- push '# define QT_EDITION QT_EDITION_'
- push '# define QT_EDITION QT_EDITION_$1$\r$\n'
- call PatchLine
-
- PatchConfigPriFile:
- IfFileExists "$0\mkspecs\qconfig.pri" 0 PatchLicenseProductDone
- push "$0\mkspecs\qconfig.pri"
- push "QT_EDITION = "
- push "QT_EDITION = $LICENSE_PRODUCT$\r$\n"
- call PatchLine
-
- PatchLicenseProductDone:
- pop $2
- pop $1
- pop $0
-FunctionEnd
-
-Function PatchCommonBinaryFiles
- exch $2
- push $0
- push $1
-
- IfFileExists "$2\bin\qmake.exe" 0 +5
- DetailPrint "Patching paths in qmake..."
- push $2
- push "$2\bin\qmake.exe"
- call PatchBinaryPaths
-
- DetailPrint "Patching paths in core..."
- FindFirst $0 $1 "$2\bin\QtCore*.dll"
- StrCmp $1 "" ErrorPatching
- push $2
- push "$2\bin\$1"
- call PatchBinaryPaths
-
- FindNext $0 $1
- StrCmp $1 "" ErrorPatching
- push $2
- push "$2\bin\$1"
- call PatchBinaryPaths
-
- ErrorPatching:
-
- pop $1
- pop $0
- pop $2
-FunctionEnd
-
-Function PatchBinaryPaths
- exch $0
- exch
- exch $2
- push $1
-
-!ifndef OPENSOURCE_BUILD
- qtnsisext::PatchBinary /NOUNLOAD $0 "qt_prfxpath=" "qt_prfxpath=$2"
- qtnsisext::PatchBinary /NOUNLOAD $0 "qt_docspath=" "qt_docspath=$2\doc"
- qtnsisext::PatchBinary /NOUNLOAD $0 "qt_hdrspath=" "qt_hdrspath=$2\include"
- qtnsisext::PatchBinary /NOUNLOAD $0 "qt_libspath=" "qt_libspath=$2\lib"
- qtnsisext::PatchBinary /NOUNLOAD $0 "qt_binspath=" "qt_binspath=$2\bin"
- qtnsisext::PatchBinary /NOUNLOAD $0 "qt_plugpath=" "qt_plugpath=$2\plugins"
- qtnsisext::PatchBinary /NOUNLOAD $0 "qt_datapath=" "qt_datapath=$2"
- qtnsisext::PatchBinary /NOUNLOAD $0 "qt_trnspath=" "qt_trnspath=$2\translations"
- qtnsisext::PatchBinary /NOUNLOAD $0 "qt_xmplpath=" "qt_xmplpath=$2\examples"
-!ifdef MODULE_LICENSECHECK
- qtnsisext::PatchBinary /NOUNLOAD $0 "qt_lcnsuser=" "qt_lcnsuser=$LICENSEE"
- qtnsisext::PatchBinary /NOUNLOAD $0 "qt_lcnsprod=" "qt_lcnsprod=$LICENSE_PRODUCT"
-!endif
- qtnsisext::PatchBinary $0 "qt_demopath=" "qt_demopath=$2\demos"
-!endif
-
- pop $1
- pop $2
- pop $0
-FunctionEnd
-
-#patching the prl files
-Function PatchPrlFiles
- exch $2
- exch
- exch $3 ;buildDir
- push $0
- push $1
-
- FindFirst $0 $1 "$2\lib\*.prl"
- loop:
- StrCmp $1 "" done
- DetailPrint "Patching $1..."
-
- push "$2\lib\$1"
- push $3
- push $2
- call PatchPath
-
- FindNext $0 $1
- Goto loop
- done:
- pop $1
- pop $0
- pop $3
- pop $2
-FunctionEnd
-
-#
-# patch line in text files
-# push "qtcore4.prl" #Filename
-# push "#define ..." #START WITH
-# push "c:\qt" #REPLACE WITH
-# call PatchLine
-#
-Function PatchLine
- exch $2 ;replacement line
- exch 2
- exch $1 ;Filename
- exch
- exch $0 ;start with
- push $3 ; tmp filename
- push $4 ; handle (tmp)
- push $5 ; handle (org)
- push $6 ; string
-
- ClearErrors
- GetTempFileName $3
- IfErrors done
- FileOpen $4 $3 w
- IfErrors done
- FileOpen $5 $1 r
- IfErrors done
-
-nextline:
- FileRead $5 $6
- IfErrors renameFile
- push $6
- push $0
- push $2
- call ReplaceLine
- pop $6
- FileWrite $4 $6
- goto nextline
-
-renameFile:
- FileClose $4
- FileClose $5
- SetDetailsPrint none
- Delete $1
- Rename $3 $1
- SetDetailsPrint both
-
- done:
- pop $6
- pop $5
- pop $4
- pop $3
- pop $0
- pop $1
- pop $2
-FunctionEnd
-
-#
-# replaces a string that starts with something, with another string
-# push string
-# push "#define ..." #START WITH
-# push "c:\qt" #REPLACE WITH
-# call ReplaceLine
-# pop $0 #new string
-#
-Function ReplaceLine
- exch $2 ;new line
- exch 2
- exch $1 ;string
- exch
- exch $0 ;start with
-
- push $3 ; tmp string
- push $4 ; counter
- push $5 ; strlen
-
- StrCpy $4 "-1"
- StrLen $5 $1
-
- loop:
- IntOp $4 $4 + 1 ;increase counter
- StrCpy $3 $1 $4 ;get substring
- IntCmp $4 $5 copystring ; check for end
- StrCmp $3 $0 done ;start with found
- goto loop
-
- copystring:
- StrCpy $2 $1
- goto done
-
- done:
- pop $5
- pop $4
- pop $3
- pop $0
- pop $1
- exch $2
-FunctionEnd
-
-#
-# patch paths in text files
-# push "qtcore4.prl" #Filename
-# push "c:\compile" #OLD_QTDIR
-# push "c:\qt" #QTDIR
-# call PatchPath
-#
-Function PatchPath
- exch $2 ;NEW
- exch 2
- exch $1 ;Filename
- exch
- exch $0 ;OLD
- push $3 ;readline
- push $4 ;file 1
- push $5 ;file 2
- push $6 ;tmpfilename
-
- push $7 ;forward slash NEW
- push $8 ;forward slash OLD
-
- push $2
- push "\"
- push "/"
- call ReplaceString
- pop $7
-
- push $0
- push "\"
- push "/"
- call ReplaceString
- pop $8
-
- ClearErrors
- GetTempFileName $6
- IfErrors done
- FileOpen $5 $6 w
- IfErrors done
- FileOpen $4 $1 r
- IfErrors done
-
-nextline:
- FileRead $4 $3
- IfErrors renameFile
- push $3
- push $0
- push $2
- call ReplaceString ;replace backward slash path
- push $8
- push $7
- call ReplaceString ;replace forward slash path
- pop $3
- FileWrite $5 $3
- goto nextline
-
-renameFile:
- FileClose $5
- FileClose $4
- SetDetailsPrint none
- Delete $1
- Rename $6 $1
- SetDetailsPrint both
-
-done:
- pop $8
- pop $7
- pop $6
- pop $5
- pop $4
- pop $3
- pop $0
- pop $1
- pop $2
-FunctionEnd
-
-#
-# replaces a string with another string
-# push string
-# push "c:\qt" #replace
-# push "c:\compile" #with
-# call ReplaceString
-# pop $0 #new string
-#
-!macro ReplaceString UN
-Function ${UN}ReplaceString
- exch $2 ;NEW
- exch 2
- exch $1 ;string
- exch
- exch $0 ;OLD
-
- push $3 ; tmp string
- push $4 ; counter
- push $5 ; result
-
- push $6 ; old strlen
-
- StrCpy $4 "-1"
- StrCpy $5 ""
-
- StrLen $6 $0
-
- loop:
- IntOp $4 $4 + 1 ;increase counter
- StrCpy $3 $1 $6 $4 ;get substring
- StrCmp $3 "" done ; check for end
- StrCmp $3 $0 replace ;replace if old
- StrCpy $3 $1 "1" $4
- StrCpy $5 $5$3 ;append character to result
- goto loop
-
- replace:
- StrCpy $5 $5$2 ;insert new qtdir
- IntOp $4 $4 + $6 ;increase offset
- IntOp $4 $4 - 1 ;decrease offset one more
- goto loop
-
- done:
- StrCpy $2 $5
- pop $6
- pop $5
- pop $4
- pop $3
- pop $0
- pop $1
- exch $2
-FunctionEnd
-!macroend
-!insertmacro ReplaceString ""
-!insertmacro ReplaceString "un."
-
-Function CommonCheckDirectory
- exch $4
- exch
- exch $5
- push $0
- push $1
- push $2
- push $3
-
- ; check if qt is already installed
- IfFileExists "$4\bin\qmake.exe" 0 +2
- IfFileExists "$4\uninst.exe" qtExistsError
-
- ; check if directory is empty
- FindFirst $0 $1 "$4\*"
- CommonCheckDirectory_FileSearchLoop:
- StrCmp $1 "" CommonCheckDirectory_DirDoesNotExist
- StrCmp $1 "." CommonCheckDirectory_ContinueSearchLoop
- StrCmp $1 ".." CommonCheckDirectory_ContinueSearchLoop
- goto CommonCheckDirectory_FoundFile
- CommonCheckDirectory_ContinueSearchLoop:
- FindNext $0 $1
- goto CommonCheckDirectory_FileSearchLoop
-
-CommonCheckDirectory_FoundFile:
- FindClose $0
- MessageBox MB_YESNO|MB_ICONEXCLAMATION "This directory already has contents. Are you sure you want to use this directory?" IDYES CommonCheckDirectory_DirDoesNotExist
- Goto errorInDirectory
-CommonCheckDirectory_DirDoesNotExist:
- FindClose $0
-
- GetInstDirError $0
- IntCmp 0 $0 0 instDirError
-
- StrLen $0 $4
-
-!ifdef USE_NODIRLENGTHCHECK
- StrCpy $1 "400"
-!else
- StrLen $1 $5
-!endif
-
- IntCmp $1 $0 0 directoryToLong
-
- ;check for spaces
- StrCpy $2 "-1"
- StrCpy $3 ""
-
- loop:
- IntOp $2 $2 + 1 ;increase counter
- StrCpy $3 $4 "1" $2 ;get char
- StrCmp $3 "" directoryOk ; check for end
- StrCmp $3 " " spaceInDirectory ;check for space
- goto loop
-
-qtExistsError:
- MessageBox MB_OK|MB_ICONEXCLAMATION "Qt is already installed in this directory. Please uninstall the previous version and try again."
- Goto errorInDirectory
-
-instDirError:
- MessageBox MB_OK|MB_ICONEXCLAMATION "This is not a valid installation directory."
- Goto errorInDirectory
-
-spaceInDirectory:
- MessageBox MB_OK|MB_ICONEXCLAMATION "The installation path can't contain spaces."
- Goto errorInDirectory
-
-directoryToLong:
- MessageBox MB_OK|MB_ICONEXCLAMATION "The installation directory is to long."
- Goto errorInDirectory
-
-errorInDirectory:
- pop $3
- pop $2
- pop $1
- pop $0
- pop $5
- pop $4
- Abort
- goto done
-
-directoryOk:
- pop $3
- pop $2
- pop $1
- pop $0
- pop $5
- pop $4
-done:
-FunctionEnd
-
-!endif ;QTCOMMON_INCLUDE
diff --git a/tools/installer/nsis/includes/qtenv.nsh b/tools/installer/nsis/includes/qtenv.nsh
deleted file mode 100644
index 8a06888..0000000
--- a/tools/installer/nsis/includes/qtenv.nsh
+++ /dev/null
@@ -1,303 +0,0 @@
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;
-;; Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-;; All rights reserved.
-;; Contact: Nokia Corporation (qt-info@nokia.com)
-;;
-;; This file is part of the tools applications of the Qt Toolkit.
-;;
-;; $QT_BEGIN_LICENSE:LGPL$
-;; No Commercial Usage
-;; This file contains pre-release code and may not be distributed.
-;; You may use this file in accordance with the terms and conditions
-;; contained in the Technology Preview License Agreement accompanying
-;; this package.
-;;
-;; GNU Lesser General Public License Usage
-;; Alternatively, this file may be used under the terms of the GNU Lesser
-;; General Public License version 2.1 as published by the Free Software
-;; Foundation and appearing in the file LICENSE.LGPL included in the
-;; packaging of this file. Please review the following information to
-;; ensure the GNU Lesser General Public License version 2.1 requirements
-;; will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-;;
-;; In addition, as a special exception, Nokia gives you certain additional
-;; rights. These rights are described in the Nokia Qt LGPL Exception
-;; version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-;;
-;; If you have questions regarding the use of this file, please contact
-;; Nokia at qt-info@nokia.com.
-;;
-;;
-;;
-;;
-;;
-;;
-;;
-;;
-;; $QT_END_LICENSE$
-;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-!ifndef QTENV_INCLUDE
-!define QTENV_INCLUDE
-#
-# creates a qtvars.bat file in $QTDIR\bin
-# push "vs2003" #compiler
-# push "c:\qt" #QTDIR
-# call MakeQtVarsFile
-#
-Function MakeQtVarsFile
- exch $1 ; QTDIR
- exch
- exch $3 ; vs version
- push $0 ; file handle
- push $2
- push $4
-
- push $3
- call GetMkSpec
- pop $2
-
- ClearErrors
- FileOpen $0 "$1\bin\qtvars.bat" w
- IfErrors done
- FileWrite $0 "@echo off$\r$\n"
- FileWrite $0 "rem$\r$\n"
- FileWrite $0 "rem This file is generated$\r$\n"
- FileWrite $0 "rem$\r$\n"
- FileWrite $0 "$\r$\n"
- FileWrite $0 "echo Setting up a Qt environment...$\r$\n"
- FileWrite $0 "echo -- QTDIR set to $1$\r$\n"
- FileWrite $0 "echo -- Added $1\bin to PATH$\r$\n"
- FileWrite $0 "echo -- QMAKESPEC set to $2$\r$\n"
- FileWrite $0 "$\r$\n"
- FileWrite $0 "set QTDIR=$1$\r$\n"
- FileWrite $0 "set PATH=$1\bin;%PATH%$\r$\n"
- FileWrite $0 "set QMAKESPEC=$2$\r$\n"
-
- call IsExpressVersion
- pop $4
- strcmp $4 "" noExpressVersion
- FileWrite $0 "$\r$\n"
- FileWrite $0 'regedit /e S$$D$$K$$ "HKEY_LOCAL_MACHINE\Software\Microsoft\MicrosoftSDK"$\r$\n'
- Filewrite $0 'if not exist S$$D$$K$$ goto ENDSDK\r$\n'
- FileWrite $0 'find "Install Dir" < S$$D$$K$$ > D$$I$$R$$$\r$\n'
- FileWrite $0 'del S$$D$$K$$$\r$\n'
- FileWrite $0 'for /f "tokens=2 delims==" %%i in (D$$I$$R$$) do call %%i\setenv$\r$\n'
- FileWrite $0 'del D$$I$$R$$$\r$\n'
- Filewrite $0 ':ENDSDK\r$\n'
- noExpressVersion:
-
- push $3
- call GetVSVarsFile
- pop $2
- strcmp $2 "" novsvars
- FileWrite $0 "$\r$\n"
- FileWrite $0 'if not "%1"=="vsvars" goto END$\r$\n'
- FileWrite $0 'call "$2"$\r$\n'
- FileWrite $0 ":END$\r$\n"
-
- FileWrite $0 "$\r$\n"
- FileWrite $0 'if not "%1"=="vsstart" goto ENDSTARTVS$\r$\n'
- FileWrite $0 'call "$2"$\r$\n'
-
- strcmp $3 "vc60" vc60startup
- FileWrite $0 "devenv /useenv$\r$\n"
- Goto donevsstartup
- vc60startup:
- FileWrite $0 "msdev /useenv$\r$\n"
- donevsstartup:
-
- FileWrite $0 ":ENDSTARTVS$\r$\n"
-
- novsvars:
- FileWrite $0 "$\r$\n"
- FileClose $0
- done:
- pop $4
- pop $2
- pop $0
- pop $3
- pop $1
-FunctionEnd
-
-Function GetMkSpec
- exch $0
- StrCmp $0 "mingw" MINGW
- StrCmp $0 "vs2005" VS2005
- StrCmp $0 "vs2003" VS2003
- StrCmp $0 "vs2002" VS2002
- StrCmp $0 "vc60" VS60
- StrCmp $0 "icc" ICC
-
- MINGW:
- pop $0
- push "win32-g++"
- goto done
-
- VS2005:
- pop $0
- push "win32-msvc2005"
- goto done
-
- VS2003:
- pop $0
- push "win32-msvc.net"
- goto done
-
- VS2002:
- pop $0
- push "win32-msvc.net"
- goto done
-
- VS60:
- pop $0
- push "win32-msvc"
- goto done
-
- ICC:
- pop $0
- push "win32-icc"
- goto done
-
- done:
-FunctionEnd
-
-!define AD_COMPILER_NAME_VS2005 "Visual Studio .NET 2005"
-!define AD_COMPILER_NAME_VS2005_EXPRESS "Visual C++ 2005 Express Edition"
-!define AD_COMPILER_NAME_VS2003 "Visual Studio .NET 2003"
-!define AD_COMPILER_NAME_VS2002 "Visual Studio .NET 2002"
-!define AD_COMPILER_NAME_VC60 "Visual Studio 6.0"
-!define AD_COMPILER_NAME_ICC "Intel C++ Compiler"
-!define AD_COMPILER_NAME_MINGW "MinGW (Must be in PATH!)"
-
-Function GetShortCompilerName
- exch $0
-
- strcmp "$0" "${AD_COMPILER_NAME_VS2005}" 0 +3
- strcpy $0 "vs2005"
- goto done
-
- strcmp "$0" "${AD_COMPILER_NAME_VS2005_EXPRESS}" 0 +3
- strcpy $0 "vs2005"
- goto done
-
- strcmp "$0" "${AD_COMPILER_NAME_VS2003}" 0 +3
- strcpy $0 "vs2003"
- goto done
-
- strcmp "$0" "${AD_COMPILER_NAME_VS2002}" 0 +3
- strcpy $0 "vs2002"
- goto done
-
- strcmp "$0" "${AD_COMPILER_NAME_VC60}" 0 +3
- strcpy $0 "vc60"
- goto done
-
- strcmp "$0" "${AD_COMPILER_NAME_ICC}" 0 +3
- strcpy $0 "icc"
- goto done
-
- strcmp "$0" "${AD_COMPILER_NAME_MINGW}" 0 +3
- strcpy $0 "mingw"
- goto done
-
- strcpy $0 "" ;this is bad!
-
- done:
- exch $0
-FunctionEnd
-
-Function IsExpressVersion
- push $0
- ReadRegStr $0 HKLM "Software\Microsoft\VCExpress\8.0" "InstallDir"
- ClearErrors
- exch $0
-FunctionEnd
-
-Function AutoDetectCompilers
- push $0
- push $1
-
- strcpy $1 ""
-
- ReadRegStr $0 HKLM "Software\Microsoft\VisualStudio\8.0" "InstallDir"
- strcmp $0 "" +2
- strcpy $1 "$1${AD_COMPILER_NAME_VS2005}|"
-
- ReadRegStr $0 HKLM "Software\Microsoft\VCExpress\8.0" "InstallDir"
- strcmp $0 "" +2
- strcpy $1 "$1${AD_COMPILER_NAME_VS2005_EXPRESS}|"
-
- ReadRegStr $0 HKLM "Software\Microsoft\VisualStudio\7.1" "InstallDir"
- strcmp $0 "" +2
- strcpy $1 "$1${AD_COMPILER_NAME_VS2003}|"
-
- ReadRegStr $0 HKLM "Software\Microsoft\VisualStudio\7.0" "InstallDir"
- strcmp $0 "" +2
- strcpy $1 "$1${AD_COMPILER_NAME_VS2002}|"
-
- ReadRegStr $0 HKLM "Software\Microsoft\VisualStudio\6.0\Setup" "VsCommonDir"
- strcmp $0 "" +2
- strcpy $1 "$1${AD_COMPILER_NAME_VC60}|"
-
- ReadRegStr $0 HKLM "Software\Intel\Compilers\C++\80" "Major Version"
- strcmp $0 "" +2
- strcpy $1 "$1${AD_COMPILER_NAME_ICC}|"
-
- strcpy $1 "$1${AD_COMPILER_NAME_MINGW}"
-
- exch
- pop $0
- exch $1
-FunctionEnd
-
-Function GetVSVarsFile
- exch $1
- push $0
-
- StrCmp $1 "vs2005" VS2005
- StrCmp $1 "vs2003" VS2003
- StrCmp $1 "vs2002" VS2002
- StrCmp $1 "vc60" VS60
-
- push "" ;empty string if not found
- goto done
-
- VS2005:
- ReadRegStr $0 HKLM "Software\Microsoft\VisualStudio\8.0\Setup\VS" "ProductDir"
- StrCmp $0 "" +1 foundVSDir ; found msvc.net 2005
-
- ReadRegStr $0 HKLM "Software\Microsoft\VCExpress\8.0\Setup\VS" "ProductDir"
- StrCmp $0 "" +1 foundVSDir ; found msvc.net 2005 epress
-
- VS2003:
- ReadRegStr $0 HKLM "Software\Microsoft\VisualStudio\7.1\Setup\VS" "ProductDir"
- StrCmp $0 "" +1 foundVSDir ; found msvc.net 2003
-
- VS2002:
- ReadRegStr $0 HKLM "Software\Microsoft\VisualStudio\7.0\Setup\VS" "ProductDir"
- StrCmp $0 "" +1 foundVSDir ; found msvc.net 2002
-
- VS60:
- ReadRegStr $0 HKLM "Software\Microsoft\VisualStudio\6.0\Setup\Microsoft Visual C++" "ProductDir"
- StrCmp $0 "" +1 foundVCDir ; found msvc 6.0
-
- push "" ;empty string if not found
- goto done
-
- foundVSDir:
- push "$0\Common7\Tools\vsvars32.bat"
- goto done
-
- foundVCDir:
- push "$0\bin\vcvars32.bat"
-
- done:
- exch
- pop $0
- exch
- pop $1
-FunctionEnd
-
-!endif ;QTENV_INCLUDE
diff --git a/tools/installer/nsis/includes/system.nsh b/tools/installer/nsis/includes/system.nsh
deleted file mode 100644
index 3bc5be2..0000000
--- a/tools/installer/nsis/includes/system.nsh
+++ /dev/null
@@ -1,269 +0,0 @@
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;
-;; Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-;; All rights reserved.
-;; Contact: Nokia Corporation (qt-info@nokia.com)
-;;
-;; This file is part of the tools applications of the Qt Toolkit.
-;;
-;; $QT_BEGIN_LICENSE:LGPL$
-;; No Commercial Usage
-;; This file contains pre-release code and may not be distributed.
-;; You may use this file in accordance with the terms and conditions
-;; contained in the Technology Preview License Agreement accompanying
-;; this package.
-;;
-;; GNU Lesser General Public License Usage
-;; Alternatively, this file may be used under the terms of the GNU Lesser
-;; General Public License version 2.1 as published by the Free Software
-;; Foundation and appearing in the file LICENSE.LGPL included in the
-;; packaging of this file. Please review the following information to
-;; ensure the GNU Lesser General Public License version 2.1 requirements
-;; will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-;;
-;; In addition, as a special exception, Nokia gives you certain additional
-;; rights. These rights are described in the Nokia Qt LGPL Exception
-;; version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-;;
-;; If you have questions regarding the use of this file, please contact
-;; Nokia at qt-info@nokia.com.
-;;
-;;
-;;
-;;
-;;
-;;
-;;
-;;
-;; $QT_END_LICENSE$
-;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-!ifndef SYSTEM_INCLUDE
-!define SYSTEM_INCLUDE
-
-!define QTVSIP2003_GUID "{789202F4-94F5-4f0a-AA00-73295FEBFD68}"
-!define QTVSIP2005_GUID "{789202F4-94F5-4f0a-AA00-73295FEBFD69}"
-
-!define QMSNET2002_GUID "{C174ACCD-D856-4B60-9887-0FF9E841E0EC}"
-!define QMSNET2003_GUID "{C174ACCE-D857-4B61-9888-0FF9E841E0ED}"
-!define QMSNET2005_GUID "{14E98DB4-A232-49a4-8EC1-8CE4F6985C73}"
-
-!macro GetVSInstallationDir UN
-; Usage:
-;
-; push "7.0"
-; call GetVSInstallationDir
-; pop $0
-;
-; If the requested VS version can be found, its
-; installation directory is returned.
-Function ${UN}GetVSInstallationDir
- Exch $0
- Push $1
- ReadRegStr $1 HKLM "Software\Microsoft\VisualStudio\$0" "InstallDir"
- StrCpy $0 $1
- StrCmp $0 "" 0 +2
- SetErrors
- Pop $1
- Exch $0
-FunctionEnd
-!macroend
-
-!insertmacro GetVSInstallationDir ""
-!insertmacro GetVSInstallationDir "un."
-
-
-!macro IsDotNETInstalled UN
-; Usage:
-;
-; push "8.0"
-; call IsDotNETInstalled
-; pop $0
-;
-; $0 contains the path where the .NET framework is installed.
-; If not installation can be found $0 is empty.
-Function ${UN}IsDotNETInstalled
- Exch $0
- Push $1
- Push $2
- Push $3
- Push $4
- Push $5
-
- StrCpy $5 $0
-
- ReadRegStr $4 HKEY_LOCAL_MACHINE "Software\Microsoft\.NETFramework" "InstallRoot"
- Push $4
- Exch $EXEDIR
- Exch $EXEDIR
- Pop $4
-
- IfFileExists $4 0 noDotNET
- StrCpy $0 0
-
- EnumStart:
- EnumRegKey $2 HKEY_LOCAL_MACHINE "Software\Microsoft\.NETFramework\Policy" $0
- IntOp $0 $0 + 1
- StrCmp $2 "" noDotNET
- StrCpy $1 0
-
- EnumPolicy:
- EnumRegValue $3 HKEY_LOCAL_MACHINE "Software\Microsoft\.NETFramework\Policy\$2" $1
- IntOp $1 $1 + 1
- StrCmp $3 "" EnumStart
-
- StrCmp $5 "8.0" 0 +2
- StrCmp $2 "v2.0" 0 EnumPolicy
-
- IfFileExists "$4\$2.$3" foundDotNET EnumPolicy
-
- noDotNET:
- StrCpy $0 0
- Goto done
-
- foundDotNET:
- StrCpy $0 "$4\$2.$3"
-
- done:
- Pop $5
- Pop $4
- Pop $3
- Pop $2
- Pop $1
- Exch $0
-FunctionEnd
-!macroend
-
-!insertmacro IsDotNETInstalled ""
-!insertmacro IsDotNETInstalled "un."
-
-!macro IsQMsNetInstalled UN
-; Usage:
-;
-; push "8.0"
-; call IsQMsNetInstalled
-; pop $0
-Function ${UN}IsQMsNetInstalled
- Exch $0
- Push $1
- Push $2
- Push $3
-
- StrCmp $0 "7.0" 0 +2
- StrCpy $2 "${QMSNET2002_GUID}"
- StrCmp $0 "7.1" 0 +2
- StrCpy $2 "${QMSNET2003_GUID}"
- StrCmp $0 "8.0" 0 +2
- StrCpy $2 "${QMSNET2005_GUID}"
-
- StrCpy $3 0
-
- ReadRegStr $1 HKLM "SOFTWARE\Microsoft\VisualStudio\$0\NewProjectTemplates\TemplateDirs\$2\/2" "TemplatesDir"
- StrCmp $1 "" +3
- StrCpy $3 1
- goto done
-
- ReadRegStr $1 HKCU "SOFTWARE\Microsoft\VisualStudio\$0\NewProjectTemplates\TemplateDirs\$2\/2" "TemplatesDir"
- StrCmp $1 "" +2
- StrCpy $3 1
-
-done:
- StrCpy $0 $3
-
- Pop $3
- Pop $2
- Pop $1
- Exch $0
-FunctionEnd
-!macroend
-
-!insertmacro IsQMsNetInstalled ""
-!insertmacro IsQMsNetInstalled "un."
-
-!macro IsQMsDevInstalled UN
-; Usage:
-;
-; call IsQMsDevInstalled
-; pop $0
-Function ${UN}IsQMsDevInstalled
- Push $0
- Push $1
- Push $2
-
- StrCpy $0 0
-
- ReadRegStr $1 HKLM "SOFTWARE\Microsoft\DevStudio\6.0\AddIns\q4msdev.Q4MsDev.1" "Filename"
- StrCmp $1 "" +3
- StrCpy $0 1
- goto done
-
- ReadRegStr $1 HKCU "SOFTWARE\Microsoft\DevStudio\6.0\AddIns\q4msdev.Q4MsDev.1" "Filename"
- StrCmp $1 "" +2
- StrCpy $0 1
-
-done:
- Pop $2
- Pop $1
- Exch $0
-FunctionEnd
-!macroend
-
-!insertmacro IsQMsDevInstalled ""
-!insertmacro IsQMsDevInstalled "un."
-
-!macro IsIntegrationInstalled UN
-; Usage:
-;
-; push "8.0"
-; call IsIntegrationInstalled
-; pop $0
-Function ${UN}IsIntegrationInstalled
- Exch $0
- Push $1
- Push $2
-
- StrCmp $0 "7.1" 0 +2
- StrCpy $2 "${QTVSIP2003_GUID}"
- StrCmp $0 "8.0" 0 +2
- StrCpy $2 "${QTVSIP2005_GUID}"
-
- ReadRegStr $1 HKLM "SOFTWARE\Microsoft\VisualStudio\$0\Packages\$2" "ProductName"
-
- StrCpy $0 0
- StrCmp $1 "" done
- StrCpy $0 1
-
-done:
- Pop $2
- Pop $1
- Exch $0
-FunctionEnd
-!macroend
-
-!insertmacro IsIntegrationInstalled ""
-!insertmacro IsIntegrationInstalled "un."
-
-!macro AdministratorRights UN
-Function ${UN}HasAdminRights
- push $0
- ClearErrors
- UserInfo::GetAccountType
- IfErrors Yes ;It's probably Win95
- pop $0
- StrCmp $0 "Admin" Yes
- StrCmp $0 "Power" Yes
-
- StrCpy $0 "false"
- goto Done
-
- Yes:
- StrCpy $0 "true"
-
- Done:
- exch $0
-FunctionEnd
-!macroend
-!insertmacro AdministratorRights ""
-!insertmacro AdministratorRights "un."
-
-!endif ;SYSTEM_INCLUDE
diff --git a/tools/installer/nsis/installer.nsi b/tools/installer/nsis/installer.nsi
deleted file mode 100644
index af7e9a8..0000000
--- a/tools/installer/nsis/installer.nsi
+++ /dev/null
@@ -1,524 +0,0 @@
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;
-;; Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-;; All rights reserved.
-;; Contact: Nokia Corporation (qt-info@nokia.com)
-;;
-;; This file is part of the tools applications of the Qt Toolkit.
-;;
-;; $QT_BEGIN_LICENSE:LGPL$
-;; No Commercial Usage
-;; This file contains pre-release code and may not be distributed.
-;; You may use this file in accordance with the terms and conditions
-;; contained in the Technology Preview License Agreement accompanying
-;; this package.
-;;
-;; GNU Lesser General Public License Usage
-;; Alternatively, this file may be used under the terms of the GNU Lesser
-;; General Public License version 2.1 as published by the Free Software
-;; Foundation and appearing in the file LICENSE.LGPL included in the
-;; packaging of this file. Please review the following information to
-;; ensure the GNU Lesser General Public License version 2.1 requirements
-;; will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-;;
-;; In addition, as a special exception, Nokia gives you certain additional
-;; rights. These rights are described in the Nokia Qt LGPL Exception
-;; version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-;;
-;; If you have questions regarding the use of this file, please contact
-;; Nokia at qt-info@nokia.com.
-;;
-;;
-;;
-;;
-;;
-;;
-;;
-;;
-;; $QT_END_LICENSE$
-;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-; Script generated by the HM NIS Edit Script Wizard.
-
-!include "config.nsh"
-!include "includes\global.nsh"
-
-!define PRODUCT_PUBLISHER "Nokia Corporation and/or its subsidiary(-ies)"
-!define PRODUCT_WEB_SITE "http://qt.nokia.com"
-
-!define INSTALL_ICON "images\install.ico"
-!define WELCOME_PAGE_ICON "images\qt-wizard.bmp"
-!define PAGE_HEADER_ICON "images\qt-header.bmp"
-
-!include "MUI.nsh"
-
-; modules
-!include "modules\mingw.nsh"
-!include "modules\opensource.nsh"
-!include "includes\instdir.nsh"
-!include "modules\environment.nsh"
-!include "modules\registeruiext.nsh"
-!ifndef OPENSOURCE_BUILD
-!include "modules\msvc.nsh"
-!include "modules\addin7x.nsh"
-!include "modules\qsa.nsh"
-!include "modules\addin60.nsh"
-!include "modules\debugext.nsh"
-!include "modules\license.nsh"
-!include "modules\vsip.nsh"
-!include "modules\help.nsh"
-!include "modules\evaluation.nsh"
-!include "modules\eclipse.nsh"
-!include "modules\qtjambieclipse.nsh"
-!endif
-
-; MUI Settings
-!define MUI_ABORTWARNING
-!define MUI_ICON "${INSTALL_ICON}"
-!define MUI_UNICON "${INSTALL_ICON}"
-
-!define MUI_HEADERIMAGE
-!define MUI_HEADERIMAGE_BITMAP "${PAGE_HEADER_ICON}"
-!define MUI_HEADERIMAGE_UNBITMAP "${PAGE_HEADER_ICON}"
-
-!define MUI_WELCOMEFINISHPAGE_BITMAP "${WELCOME_PAGE_ICON}"
-!define MUI_UNWELCOMEFINISHPAGE_BITMAP "${WELCOME_PAGE_ICON}"
-
-!ifdef WELCOME_NOTE
- !define MUI_WELCOMEPAGE_TEXT "${WELCOME_NOTE}"
-!endif
-!insertmacro MUI_PAGE_WELCOME
-!insertmacro OPENSOURCE_INITIALIZE
-!ifndef OPENSOURCE_BUILD
-!insertmacro EVALUATION_INITIALIZE
-!insertmacro LICENSECHECK_INITIALIZE
-!insertmacro MSVC_INITIALIZE
-!insertmacro ADDIN7X_INITIALIZE
-!insertmacro ADDIN60_INITIALIZE
-!insertmacro DEBUGEXT_INITIALIZE
-!insertmacro HELP_INITIALIZE
-!insertmacro VSIP_INITIALIZE
-!endif
-
-!ifdef USE_COMPONENT_PAGE
- !insertmacro MUI_PAGE_COMPONENTS
-!endif
-
-!ifdef USE_DIRECTORY_PAGE
- !insertmacro INSTDIR_INITIALIZE
-!endif
-
-!ifdef USE_STARTMENU_PAGE
- !define MUI_STARTMENUPAGE_NODISABLE
- !define MUI_STARTMENUPAGE_DEFAULTFOLDER "${DEFAULT_STARTMENU_STRING}"
- !insertmacro MUI_PAGE_STARTMENU 1 $STARTMENU_STRING
-!endif
-
-!insertmacro MINGW_INITIALIZE
-!insertmacro ENVIRONMENT_INITIALIZE
-!insertmacro REGISTERUIEXT_INITIALIZE
-!ifndef OPENSOURCE_BUILD
-!insertmacro QSA_INITIALIZE
-!insertmacro ECLIPSE_INITIALIZE
-!insertmacro QTJAMBIECLIPSE_INITIALIZE
-!endif
-
-!define MUI_FINISHPAGE_NOAUTOCLOSE
-
-!insertmacro MUI_PAGE_INSTFILES
-!ifdef README_FILE
- !define MUI_FINISHPAGE_SHOWREADME ${README_FILE}
-!else
- !ifdef README_FUNCTION
- !define MUI_FINISHPAGE_SHOWREADME
- !define MUI_FINISHPAGE_SHOWREADME_TEXT "${README_FUNCTION}"
- !define MUI_FINISHPAGE_SHOWREADME_FUNCTION "CommonReadmeFunction"
- !endif
-!endif
-!ifdef RUN_FUNCTION
- !define MUI_FINISHPAGE_RUN
- !define MUI_FINISHPAGE_RUN_TEXT "${RUN_FUNCTION}"
- !define MUI_FINISHPAGE_RUN_FUNCTION "CommonRunFunction"
-!endif
-!insertmacro MUI_PAGE_FINISH
-
-!insertmacro MUI_UNPAGE_WELCOME
-!define UNINSTALLER_CONFIRM_PAGE "confirmpage.ini"
-UninstPage custom un.UninstallerConfirmPage
-!insertmacro MUI_UNPAGE_INSTFILES
-
-!insertmacro MUI_UNPAGE_FINISH
-
-!insertmacro MUI_LANGUAGE "English"
-
-Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"
-OutFile ${OUTPUT_FILE}
-
-Section -PreCommonSection
-!ifdef INSTDIR_0 ;the default one, must exist
- strcpy $INSTDIR $${INSTDIR_0}_INSTDIR
- ${StrRep} $PRODUCT_UNIQUE_KEY "${PRODUCT_NAME} ${PRODUCT_VERSION} - $INSTDIR" "\" "_"
- strcpy $PRODUCT_UNIQUE_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\$PRODUCT_UNIQUE_KEY"
- WriteRegStr SHCTX "$PRODUCT_UNIQUE_KEY" "${INSTDIR_0}_INSTDIR" "$${INSTDIR_0}_INSTDIR"
-!endif
-!ifdef INSTDIR_1
- WriteRegStr SHCTX "$PRODUCT_UNIQUE_KEY" "${INSTDIR_1}_INSTDIR" "$${INSTDIR_1}_INSTDIR"
-!endif
-!ifdef INSTDIR_2
- WriteRegStr SHCTX "$PRODUCT_UNIQUE_KEY" "${INSTDIR_2}_INSTDIR" "$${INSTDIR_2}_INSTDIR"
-!endif
-!ifdef INSTDIR_3
- WriteRegStr SHCTX "$PRODUCT_UNIQUE_KEY" "${INSTDIR_3}_INSTDIR" "$${INSTDIR_3}_INSTDIR"
-!endif
-!ifdef INSTDIR_4
- WriteRegStr SHCTX "$PRODUCT_UNIQUE_KEY" "${INSTDIR_4}_INSTDIR" "$${INSTDIR_4}_INSTDIR"
-!endif
-!ifdef INSTDIR_5
- WriteRegStr SHCTX "$PRODUCT_UNIQUE_KEY" "${INSTDIR_5}_INSTDIR" "$${INSTDIR_5}_INSTDIR"
-!endif
-
- WriteRegStr SHCTX "$PRODUCT_UNIQUE_KEY" "StartMenu" "$STARTMENU_STRING"
- CreateDirectory "$SMPROGRAMS\$STARTMENU_STRING"
-SectionEnd
-
-!insertmacro OPENSOURCE_SECTIONS
-!insertmacro MINGW_SECTIONS
-!insertmacro ENVIRONMENT_SECTIONS
-!insertmacro REGISTERUIEXT_SECTIONS
-!ifndef OPENSOURCE_BUILD
-!insertmacro MSVC_SECTIONS
-!insertmacro ADDIN7X_SECTIONS
-!insertmacro ADDIN60_SECTIONS
-!insertmacro VSIP_SECTIONS
-!insertmacro HELP_SECTIONS
-!insertmacro DEBUGEXT_SECTIONS
-!insertmacro LICENSECHECK_SECTIONS
-!insertmacro QSA_SECTIONS
-!insertmacro EVALUATION_SECTIONS
-!insertmacro ECLIPSE_SECTIONS
-!insertmacro QTJAMBIECLIPSE_SECTIONS
-!endif
-
-!insertmacro INSTDIR_FUNCTIONS
-
-Section -CommonSection
- WriteUninstaller "$INSTDIR\uninst.exe"
-
- WriteRegStr SHCTX "$PRODUCT_UNIQUE_KEY" "DisplayName" "$(^Name)"
- WriteRegStr SHCTX "$PRODUCT_UNIQUE_KEY" "UninstallString" "$INSTDIR\uninst.exe"
- WriteRegStr SHCTX "$PRODUCT_UNIQUE_KEY" "DisplayVersion" "${PRODUCT_VERSION}"
- WriteRegStr SHCTX "$PRODUCT_UNIQUE_KEY" "URLInfoAbout" "${PRODUCT_WEB_SITE}"
- WriteRegStr SHCTX "$PRODUCT_UNIQUE_KEY" "Publisher" "${PRODUCT_PUBLISHER}"
-
- WriteIniStr "$INSTDIR\${PRODUCT_NAME}.url" "InternetShortcut" "URL" "${PRODUCT_WEB_SITE}"
- CreateShortCut "$SMPROGRAMS\$STARTMENU_STRING\qt.nokia.com.lnk" "$INSTDIR\${PRODUCT_NAME}.url"
- CreateShortCut "$SMPROGRAMS\$STARTMENU_STRING\Uninstall ${PRODUCT_NAME} ${PRODUCT_VERSION}.lnk" "$INSTDIR\uninst.exe"
- SetOutPath "$INSTDIR"
-SectionEnd
-
-Function CheckLocalLicenseProduct
-!ifdef MODULE_LICENSECHECK
- !insertmacro QSA_CHECKLICENSEPRODUCT
-!endif
-FunctionEnd
-
-Function .onInit
- StrCpy $STARTMENU_STRING "${DEFAULT_STARTMENU_STRING}"
-
-!ifdef USE_UNINSTALL_PREVIOUS
- push "${PRODUCT_NAME}"
- call GetExistsPreviousInstallationOfProduct
- exch $0
- StrCmp $0 true 0 +3
- MessageBox MB_OK|MB_ICONSTOP "A previous installation of ${PRODUCT_NAME} was detected.$\nPlease uninstall it before running this installer."
- Abort
- pop $0
-!endif
-
- call SetAdminVar
- StrCmp "$RUNNING_AS_ADMIN" "false" 0 common_running_as_admin
-!ifdef USE_ADMIN_CHECK
- MessageBox MB_OK|MB_ICONSTOP "You need to have administrator rights to install this software!"
- Abort
-!endif
- SetShellVarContext current
- goto common_admin_check_done
- common_running_as_admin:
- SetShellVarContext all
- common_admin_check_done:
-
- !insertmacro INSTDIR_STARTUP
-
- !insertmacro OPENSOURCE_STARTUP
- !insertmacro ENVIRONMENT_STARTUP
- !insertmacro REGISTERUIEXT_STARTUP
- !insertmacro MINGW_STARTUP
-!ifndef OPENSOURCE_BUILD
- !insertmacro LICENSECHECK_STARTUP
- !insertmacro MSVC_STARTUP
- !insertmacro EVALUATION_STARTUP
- !insertmacro ADDIN7X_STARTUP
- !insertmacro ADDIN60_STARTUP
- !insertmacro DEBUGEXT_STARTUP
- !insertmacro VSIP_STARTUP
- !insertmacro HELP_STARTUP
- !insertmacro QSA_STARTUP
- !insertmacro ECLIPSE_STARTUP
- !insertmacro QTJAMBIECLIPSE_STARTUP
-!endif
-FunctionEnd
-
-Function .onInstSuccess
- !insertmacro ENVIRONMENT_FINISH
- !insertmacro REGISTERUIEXT_FINISH
- !insertmacro OPENSOURCE_FINISH
- !insertmacro MINGW_FINISH
-!ifndef OPENSOURCE_BUILD
- !insertmacro LICENSECHECK_FINISH
- !insertmacro MSVC_FINISH
- !insertmacro EVALUATION_FINISH
- !insertmacro ADDIN7X_FINISH
- !insertmacro ADDIN60_FINISH
- !insertmacro DEBUGEXT_FINISH
- !insertmacro VSIP_FINISH
- !insertmacro HELP_FINISH
- !insertmacro QSA_FINISH
- !insertmacro ECLIPSE_FINISH
- !insertmacro QTJAMBIECLIPSE_FINISH
-!endif
-FunctionEnd
-
-Function un.onUninstSuccess
- !insertmacro ENVIRONMENT_UNFINISH
- !insertmacro REGISTERUIEXT_UNFINISH
- !insertmacro OPENSOURCE_UNFINISH
- !insertmacro MINGW_UNFINISH
-!ifndef OPENSOURCE_BUILD
- !insertmacro LICENSECHECK_UNFINISH
- !insertmacro MSVC_UNFINISH
- !insertmacro EVALUATION_UNFINISH
- !insertmacro ADDIN7X_UNFINISH
- !insertmacro ADDIN60_UNFINISH
- !insertmacro DEBUGEXT_UNFINISH
- !insertmacro VSIP_UNFINISH
- !insertmacro HELP_UNFINISH
- !insertmacro QSA_UNFINISH
- !insertmacro ECLIPSE_UNFINISH
- !insertmacro QTJAMBIECLIPSE_UNFINISH
-!endif
-FunctionEnd
-
-Function un.onInit
- call un.SetAdminVar
- StrCmp "$RUNNING_AS_ADMIN" "false" 0 common_running_as_admin
-!ifdef USE_ADMIN_CHECK
- MessageBox MB_OK|MB_ICONSTOP "You do not have the required access rights to uninstall this package."
- Abort
-!endif
- SetShellVarContext current
- goto common_admin_check_done
- common_running_as_admin:
- SetShellVarContext all
- common_admin_check_done:
-
- ${UnStrRep} $PRODUCT_UNIQUE_KEY "${PRODUCT_NAME} ${PRODUCT_VERSION} - $INSTDIR" "\" "_"
- strcpy $PRODUCT_UNIQUE_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\$PRODUCT_UNIQUE_KEY"
-
- push $0
- ClearErrors
- ReadRegStr $0 SHCTX "$PRODUCT_UNIQUE_KEY" "DisplayName"
- IfErrors 0 +3
- MessageBox MB_OK|MB_ICONSTOP "The uninstaller was unable to find the product to uninstall."
- Abort
- pop $0
-
- ReadRegStr $STARTMENU_STRING SHCTX "$PRODUCT_UNIQUE_KEY" "StartMenu"
- StrCmp "$STARTMENU_STRING" "" 0 +2
- StrCpy $STARTMENU_STRING "${DEFAULT_STARTMENU_STRING}"
-
-!ifdef INSTDIR_0 ;the default one, must exist
- ReadRegStr $${INSTDIR_0}_INSTDIR SHCTX "$PRODUCT_UNIQUE_KEY" "${INSTDIR_0}_INSTDIR"
-!endif
-!ifdef INSTDIR_1
- ReadRegStr $${INSTDIR_1}_INSTDIR SHCTX "$PRODUCT_UNIQUE_KEY" "${INSTDIR_1}_INSTDIR"
-!endif
-!ifdef INSTDIR_2
- ReadRegStr $${INSTDIR_2}_INSTDIR SHCTX "$PRODUCT_UNIQUE_KEY" "${INSTDIR_2}_INSTDIR"
-!endif
-!ifdef INSTDIR_3
- ReadRegStr $${INSTDIR_3}_INSTDIR SHCTX "$PRODUCT_UNIQUE_KEY" "${INSTDIR_3}_INSTDIR"
-!endif
-!ifdef INSTDIR_4
- ReadRegStr $${INSTDIR_4}_INSTDIR SHCTX "$PRODUCT_UNIQUE_KEY" "${INSTDIR_4}_INSTDIR"
-!endif
-!ifdef INSTDIR_5
- ReadRegStr $${INSTDIR_5}_INSTDIR SHCTX "$PRODUCT_UNIQUE_KEY" "${INSTDIR_5}_INSTDIR"
-!endif
-
- !insertmacro ENVIRONMENT_UNSTARTUP
- !insertmacro REGISTERUIEXT_UNSTARTUP
- !insertmacro OPENSOURCE_UNSTARTUP
- !insertmacro MINGW_UNSTARTUP
-!ifndef OPENSOURCE_BUILD
- !insertmacro LICENSECHECK_UNSTARTUP
- !insertmacro MSVC_UNSTARTUP
- !insertmacro EVALUATION_UNSTARTUP
- !insertmacro ADDIN7X_UNSTARTUP
- !insertmacro ADDIN60_UNSTARTUP
- !insertmacro DEBUGEXT_UNSTARTUP
- !insertmacro VSIP_UNSTARTUP
- !insertmacro HELP_UNSTARTUP
- !insertmacro QSA_UNSTARTUP
- !insertmacro ECLIPSE_UNSTARTUP
- !insertmacro QTJAMBIECLIPSE_UNSTARTUP
-!endif
-
- !insertmacro MUI_INSTALLOPTIONS_EXTRACT "${UNINSTALLER_CONFIRM_PAGE}"
-FunctionEnd
-
-!insertmacro OPENSOURCE_UNINSTALL
-!insertmacro ENVIRONMENT_UNINSTALL
-!insertmacro REGISTERUIEXT_UNINSTALL
-!insertmacro MINGW_UNINSTALL
-!ifndef OPENSOURCE_BUILD
-!insertmacro HELP_UNINSTALL
-!insertmacro DEBUGEXT_UNINSTALL
-!insertmacro MSVC_UNINSTALL
-!insertmacro EVALUATION_UNINSTALL
-!insertmacro QSA_UNINSTALL
-!insertmacro ECLIPSE_UNINSTALL
-!insertmacro QTJAMBIECLIPSE_UNINSTALL
-!endif
-
-Section Uninstall
- !ifndef OPENSOURCE_BUILD
- !insertmacro LICENSECHECK_UNINSTALL
- !insertmacro ADDIN7X_UNINSTALL
- !insertmacro ADDIN60_UNINSTALL
- !insertmacro VSIP_UNINSTALL
- !endif
-
- ; COMMON
- Delete "$INSTDIR\${PRODUCT_NAME}.url"
- Delete "$INSTDIR\uninst.exe"
- Delete "$SMPROGRAMS\$STARTMENU_STRING\Uninstall ${PRODUCT_NAME} ${PRODUCT_VERSION}.lnk"
- Delete "$SMPROGRAMS\$STARTMENU_STRING\qt.nokia.com.lnk"
-
- RMDir "$SMPROGRAMS\$STARTMENU_STRING"
- RMDir "$INSTDIR"
-
- DeleteRegKey SHCTX "$PRODUCT_UNIQUE_KEY"
-SectionEnd
-
-Function CommonRunFunction
- !ifndef OPENSOURCE_BUILD
- !insertmacro MSVC_RUN_FUNCTION
- !insertmacro QSA_RUN_FUNCTION
- !endif
- !insertmacro MINGW_RUN_FUNCTION
- DoneRunFunction:
-FunctionEnd
-
-Function CommonReadmeFunction
- !ifndef OPENSOURCE_BUILD
- !insertmacro MSVC_README_FUNCTION
- !endif
- !insertmacro MINGW_README_FUNCTION
- DoneReadmeFunction:
-FunctionEnd
-
-Function un.UninstallerConfirmPage
- !insertmacro MUI_HEADER_TEXT "Confirm" "Confirm Uninstallation Directories"
- !insertmacro MUI_INSTALLOPTIONS_WRITE "${UNINSTALLER_CONFIRM_PAGE}" "Field 2" "Text" "$UninstallerConfirmProduct"
- !insertmacro MUI_INSTALLOPTIONS_DISPLAY "${UNINSTALLER_CONFIRM_PAGE}"
-FunctionEnd
-
-;pops product name from stack and as result pushes TRUE or FALSE on stack
-Function GetExistsPreviousInstallationOfProduct
- exch $0
- push $1
- push $2
- push $3
-
- StrCpy $1 0
- loop:
- EnumRegKey $2 HKLM Software\Microsoft\Windows\CurrentVersion\Uninstall $1
- StrCmp $2 "" no_reg_key_found
- ${StrStr} $3 $2 $0
- StrCmp $3 $2 reg_key_found
- IntOp $1 $1 + 1
- goto loop
-
- reg_key_found:
- push true
- goto done
-
- no_reg_key_found:
- push false
-
- done:
- exch
- pop $3
- exch
- pop $2
- exch
- pop $1
- exch
- pop $0
-FunctionEnd
-
-;pops product name from stack
-Function WarnIfInstalledProductDetected
- exch $0
- push $0
- call GetExistsPreviousInstallationOfProduct
- exch $1
- StrCmp $1 true +1 +3
- MessageBox MB_YESNO|MB_ICONQUESTION "An existing installation of $0 was detected.$\nIt is recommended to deinstall $0 before continuing.$\nDo you want to continue this installation nevertheless?" IDYES +2 IDNO +1
- Abort
- pop $1
- pop $0
-FunctionEnd
-
-;sets $RUNNING_AS_ADMIN to "true" if Admin or Power user
-!macro SetAdminVar UN
-Function ${UN}SetAdminVar
- push $0
- ClearErrors
- UserInfo::GetAccountType
- IfErrors Admin ;It's probably Win95
- pop $0
- StrCmp $0 "Admin" Admin
- StrCmp $0 "Power" Admin
-
- StrCpy $RUNNING_AS_ADMIN "false"
- goto Done
-
- Admin:
- StrCpy $RUNNING_AS_ADMIN "true"
-
- Done:
- pop $0
-FunctionEnd
-!macroend
-!insertmacro SetAdminVar ""
-!insertmacro SetAdminVar "un."
-
-!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
- !insertmacro OPENSOURCE_DESCRIPTION
- !insertmacro ENVIRONMENT_DESCRIPTION
- !insertmacro REGISTERUIEXT_DESCRIPTION
- !insertmacro MINGW_DESCRIPTION
- !ifndef OPENSOURCE_BUILD
- !insertmacro MSVC_DESCRIPTION
- !insertmacro EVALUATION_DESCRIPTION
- !insertmacro ADDIN7X_DESCRIPTION
- !insertmacro ADDIN60_DESCRIPTION
- !insertmacro DEBUGEXT_DESCRIPTION
- !insertmacro HELP_DESCRIPTION
- !insertmacro VSIP_DESCRIPTION
- !insertmacro QSA_DESCRIPTION
- !insertmacro ECLIPSE_DESCRIPTION
- !insertmacro QTJAMBIECLIPSE_DESCRIPTION
- !endif
-!insertmacro MUI_FUNCTION_DESCRIPTION_END
diff --git a/tools/installer/nsis/modules/environment.nsh b/tools/installer/nsis/modules/environment.nsh
deleted file mode 100644
index fa610a7..0000000
--- a/tools/installer/nsis/modules/environment.nsh
+++ /dev/null
@@ -1,216 +0,0 @@
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;
-;; Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-;; All rights reserved.
-;; Contact: Nokia Corporation (qt-info@nokia.com)
-;;
-;; This file is part of the tools applications of the Qt Toolkit.
-;;
-;; $QT_BEGIN_LICENSE:LGPL$
-;; No Commercial Usage
-;; This file contains pre-release code and may not be distributed.
-;; You may use this file in accordance with the terms and conditions
-;; contained in the Technology Preview License Agreement accompanying
-;; this package.
-;;
-;; GNU Lesser General Public License Usage
-;; Alternatively, this file may be used under the terms of the GNU Lesser
-;; General Public License version 2.1 as published by the Free Software
-;; Foundation and appearing in the file LICENSE.LGPL included in the
-;; packaging of this file. Please review the following information to
-;; ensure the GNU Lesser General Public License version 2.1 requirements
-;; will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-;;
-;; In addition, as a special exception, Nokia gives you certain additional
-;; rights. These rights are described in the Nokia Qt LGPL Exception
-;; version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-;;
-;; If you have questions regarding the use of this file, please contact
-;; Nokia at qt-info@nokia.com.
-;;
-;;
-;;
-;;
-;;
-;;
-;;
-;;
-;; $QT_END_LICENSE$
-;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-!ifdef MODULE_ENVIRONMENT
-!macro ENVIRONMENT_INITIALIZE
- !include "includes\writeEnvStr.nsh"
- !include "includes\writePathStr.nsh"
-
- !ifndef MODULE_ENVIRONMENT_QTDIR
- !ifdef MODULE_MINGW
- !define MODULE_ENVIRONMENT_QTDIR $MINGW_INSTDIR
- !endif
-
- !ifdef MODULE_MSVC
- !define MODULE_ENVIRONMENT_QTDIR $MSVC_INSTDIR
- !endif
- !endif
-
- !define MODULE_ENVIRONMENT_PAGE "envpage.ini"
- var MODULE_ENVIRONMENT_SET
- var MODULE_ENVIRONMENT_OLD
- LangString ModuleEnvironmentTitle ${LANG_ENGLISH} "Configure Environment"
- LangString ModuleEnvironmentDescription ${LANG_ENGLISH} "Configure Qt environment variables"
-
- Page custom ModuleEnvironmentPageEnter ModuleEnvironmentPageExit
-!macroend
-!macro ENVIRONMENT_SECTIONS
- Section -ModuleEnvironmentRegister
- push "${MODULE_ENVIRONMENT_QTDIR}"
- call RegisterQtEnvVariables
- SectionEnd
-
- Function ModuleEnvironmentPageEnter
- push $0
- Call IsNT
- pop $0
- strcmp "$0" "1" +2
- abort
- pop $0
-
- !insertmacro MUI_HEADER_TEXT "$(ModuleEnvironmentTitle)" "$(ModuleEnvironmentDescription)"
-
- strcmp $MODULE_ENVIRONMENT_SET "1" 0 envCheckNo
- !insertmacro MUI_INSTALLOPTIONS_WRITE "${MODULE_ENVIRONMENT_PAGE}" "Field 2" "State" "1"
- goto showEnvPage
- envCheckNo:
- !insertmacro MUI_INSTALLOPTIONS_WRITE "${MODULE_ENVIRONMENT_PAGE}" "Field 2" "State" "0"
-
- showEnvPage:
- !insertmacro MUI_INSTALLOPTIONS_DISPLAY "${MODULE_ENVIRONMENT_PAGE}"
- FunctionEnd
-
- Function ModuleEnvironmentPageExit
- !insertmacro MUI_INSTALLOPTIONS_READ $MODULE_ENVIRONMENT_SET "${MODULE_ENVIRONMENT_PAGE}" "Field 2" "State"
- FunctionEnd
-
- Function RegisterQtEnvVariables
- exch $2 ; the installation path = QTDIR
- push $0 ; I think WriteEnvStr mixes up $0 and $1
- push $1
-
- WriteRegDWORD SHCTX "$PRODUCT_UNIQUE_KEY" "QtEnvSet" $MODULE_ENVIRONMENT_SET
-
- strcmp $MODULE_ENVIRONMENT_SET "1" 0 noenv
-
- StrCmp $MODULE_ENVIRONMENT_OLD "0" +4
- DetailPrint "Removing $MODULE_ENVIRONMENT_OLD\bin from PATH"
- push "$MODULE_ENVIRONMENT_OLD\bin"
- Call RemoveFromPath ; remove old qtdir
-
- DetailPrint "Setting QTDIR to $2"
- push "QTDIR"
- push $2
- Call WriteEnvStr ; set the QTDIR
-
- DetailPrint "Adding $2\bin to PATH"
- push "$2\bin"
- Call AddToPath ; set the PATH
-
-
- push "QMAKESPEC"
- push ${INSTALL_COMPILER}
- Call GetMkSpec
- pop $0
- DetailPrint "Setting QMAKESPEC to $0"
- push $0
- Call WriteEnvStr ; set the QMAKESPEC
-
- noenv:
- pop $1
- pop $0
- pop $2
- FunctionEnd
-
- Function un.RegisterQtEnvVariables
- exch $0 ; QTDIR
- push $1
-
- ClearErrors
- ReadRegDWORD $MODULE_ENVIRONMENT_SET SHCTX "$PRODUCT_UNIQUE_KEY" "QtEnvSet"
- intcmp $MODULE_ENVIRONMENT_SET 0 noenv
-
- DetailPrint "Removing $0\bin from the PATH"
- push "$0\bin"
- Call un.RemoveFromPath ; removes qt from the path
-
- ;Check if QTDIR is equal to installdir
- ExpandEnvStrings $1 "%QTDIR%"
-
- StrCmp "$0" "$1" removeenv
- StrCmp "$0\" "$1" removeenv
- StrCmp "$0" "$1\" removeenv
- Goto noenv
-
- removeenv:
- DetailPrint "Removing QTDIR"
- push "QTDIR"
- Call un.DeleteEnvStr ; removes QTDIR
-
- DetailPrint "Removing QMAKESPEC"
- push "QMAKESPEC"
- Call un.DeleteEnvStr ; removes QMAKESPEC
-
- noenv:
- pop $1
- pop $0
- FunctionEnd
-!macroend
-!macro ENVIRONMENT_DESCRIPTION
-!macroend
-!macro ENVIRONMENT_STARTUP
- !insertmacro MUI_INSTALLOPTIONS_EXTRACT "${MODULE_ENVIRONMENT_PAGE}"
- push $0
- ExpandEnvStrings $0 "%QTDIR%"
-
- StrCmp $0 "%QTDIR%" +4
- strcpy $MODULE_ENVIRONMENT_SET "0" ;QTDIR exists
- strcpy $MODULE_ENVIRONMENT_OLD $0
- Goto +3
- strcpy $MODULE_ENVIRONMENT_SET "1" ;no QTDIR
- strcpy $MODULE_ENVIRONMENT_OLD "0"
-
- Call IsNT
- pop $0
- strcmp "$0" "1" +2
- strcpy $MODULE_ENVIRONMENT_SET "0"
- pop $0
-!macroend
-!macro ENVIRONMENT_FINISH
-!macroend
-!macro ENVIRONMENT_UNSTARTUP
-!macroend
-!macro ENVIRONMENT_UNINSTALL
- Section -un.ModuleEnvironmentRegister
- push "${MODULE_ENVIRONMENT_QTDIR}"
- call un.RegisterQtEnvVariables
- SectionEnd
-!macroend
-!macro ENVIRONMENT_UNFINISH
-!macroend
-!else ;MODULE_ENVIRONMENT
-!macro ENVIRONMENT_INITIALIZE
-!macroend
-!macro ENVIRONMENT_SECTIONS
-!macroend
-!macro ENVIRONMENT_DESCRIPTION
-!macroend
-!macro ENVIRONMENT_STARTUP
-!macroend
-!macro ENVIRONMENT_FINISH
-!macroend
-!macro ENVIRONMENT_UNSTARTUP
-!macroend
-!macro ENVIRONMENT_UNINSTALL
-!macroend
-!macro ENVIRONMENT_UNFINISH
-!macroend
-!endif ;MODULE_ENVIRONMENT
-
diff --git a/tools/installer/nsis/modules/mingw.nsh b/tools/installer/nsis/modules/mingw.nsh
deleted file mode 100644
index 8694790..0000000
--- a/tools/installer/nsis/modules/mingw.nsh
+++ /dev/null
@@ -1,670 +0,0 @@
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;
-;; Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-;; All rights reserved.
-;; Contact: Nokia Corporation (qt-info@nokia.com)
-;;
-;; This file is part of the tools applications of the Qt Toolkit.
-;;
-;; $QT_BEGIN_LICENSE:LGPL$
-;; No Commercial Usage
-;; This file contains pre-release code and may not be distributed.
-;; You may use this file in accordance with the terms and conditions
-;; contained in the Technology Preview License Agreement accompanying
-;; this package.
-;;
-;; GNU Lesser General Public License Usage
-;; Alternatively, this file may be used under the terms of the GNU Lesser
-;; General Public License version 2.1 as published by the Free Software
-;; Foundation and appearing in the file LICENSE.LGPL included in the
-;; packaging of this file. Please review the following information to
-;; ensure the GNU Lesser General Public License version 2.1 requirements
-;; will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-;;
-;; In addition, as a special exception, Nokia gives you certain additional
-;; rights. These rights are described in the Nokia Qt LGPL Exception
-;; version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-;;
-;; If you have questions regarding the use of this file, please contact
-;; Nokia at qt-info@nokia.com.
-;;
-;;
-;;
-;;
-;;
-;;
-;;
-;;
-;; $QT_END_LICENSE$
-;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-!ifdef MODULE_MINGW
-!macro MINGW_INITIALIZE
-!include "includes\qtcommon.nsh"
-!ifndef MODULE_MINGW_NAME
- !define MODULE_MINGW_NAME "Qt"
-!endif
-!ifndef MODULE_MINGW_VERSION
- !define MODULE_MINGW_VERSION "${PRODUCT_VERSION}"
-!endif
-!ifndef MODULE_MINGW_BUILDDIR
- !error "MODULE_MINGW_BUILDDIR not defined!"
-!endif
-!ifndef MODULE_MINGW_ROOT
- !error "MODULE_MINGW_ROOT not defined!"
-!endif
-!ifndef MODULE_MINGW_URL
- !define MODULE_MINGW_URL "ftp://ftp.qt.nokia.com/misc"
-!endif
-!ifndef MODULE_MINGW_COMPILERVERSION
- !define MODULE_MINGW_COMPILERVERSION "3.4.2"
-!endif
-!ifndef MODULE_MINGW_LICENSE
- !define MODULE_MINGW_LICENSE "C:\MinGW\COPYING"
-!endif
-
-!define MODULE_MINGW_DOWNLOADPAGE "gwdownload.ini"
-!define MODULE_MINGW_MIRRORPAGE "gwmirror.ini"
-!define MODULE_MINGW_RUNTIME_LIB "mingw*.dll"
-!define MODULE_MINGW_DOWNLOADFILE "MinGW-${MODULE_MINGW_COMPILERVERSION}"
-
-var MODULE_MINGW_DOWNLOAD
-var MODULE_MINGW_SOURCEDOWNLOAD
-var MODULE_MINGW_MIRRORS
-var MODULE_MINGW_INSTOK
-var MODULE_MINGW_COMPILERINSTDIR
-
-LangString ModuleMinGWTitle ${LANG_ENGLISH} "MinGW Installation"
-LangString ModuleMinGWDescription ${LANG_ENGLISH} "You need MinGW to be able to compile Qt applications."
-LangString ModuleMinGWMirrorTitle ${LANG_ENGLISH} "MinGW Download Mirror"
-LangString ModuleMinGWMirrorDescription ${LANG_ENGLISH} "Select a download mirror."
-
-Page custom ModuleMinGWDownloadPageEnter ModuleMinGWDownloadPageExit
-!define MUI_PAGE_CUSTOMFUNCTION_PRE ModuleMinGWLicensePageEnter
-!define MUI_PAGE_HEADER_TEXT "MinGW License Agreement"
-!define MUI_PAGE_HEADER_SUBTEXT "Please review the license terms before installing MinGW."
-!define MUI_LICENSEPAGE_TEXT_TOP "MinGW License Information"
-!insertmacro MUI_PAGE_LICENSE "${MODULE_MINGW_LICENSE}"
-Page custom ModuleMinGWMirrorPageEnter ModuleMinGWMirrorPageExit
-
-!include "includes\qtenv.nsh"
-!macroend
-
-!macro MINGW_SECTIONS
-Section "${MODULE_MINGW_NAME} ${MODULE_MINGW_VERSION}" MINGW_SEC01
- strcmp "$MINGW_INSTDIR" "" 0 +5
- StrCpy $MINGW_INSTDIR "$INSTDIR\${MODULE_MINGW_NAME} ${MODULE_MINGW_VERSION}"
- push $MINGW_INSTDIR
- call MakeQtDirectory
- pop $MINGW_INSTDIR
-
- WriteRegDWORD SHCTX "$PRODUCT_UNIQUE_KEY" "MINGWInstalled" 1
-
- SetOutPath "$MINGW_INSTDIR"
- SetOverwrite ifnewer
- !insertmacro MODULE_MINGW_INSTALLFILES
-
- push "$MINGW_INSTDIR\bin"
- call AddStartmenuApplication
-
- push ${MODULE_MINGW_BUILDDIR}
- push "$MINGW_INSTDIR"
- call PatchPrlFiles
-
- IfFileExists "$MINGW_INSTDIR\.qmake.cache" 0 +5
- push "$MINGW_INSTDIR\.qmake.cache"
- push ${MODULE_MINGW_BUILDDIR}
- push $MINGW_INSTDIR
- call PatchPath
-
- IfFileExists "$MINGW_INSTDIR\mkspecs\default\qmake.conf" 0 +5
- push "$MINGW_INSTDIR\mkspecs\default\qmake.conf"
- push ${MODULE_MINGW_BUILDDIR}
- push $MINGW_INSTDIR
- call PatchPath
-
- push $MINGW_INSTDIR
- call PatchCommonBinaryFiles
-
- push $MINGW_INSTDIR
- call PatchLicenseInformation
-
- WriteRegStr SHCTX "SOFTWARE\Trolltech\Common\${MODULE_MINGW_VERSION}\$LICENSE_PRODUCT" "Key" "$LICENSE_KEY"
-
- push $MINGW_INSTDIR
- call ModuleMinGWMakeEnvFile
- CreateShortCut "$SMPROGRAMS\$STARTMENU_STRING\${MODULE_MINGW_NAME} ${MODULE_MINGW_VERSION} Command Prompt.lnk" "%COMSPEC%" '/k "$MINGW_INSTDIR\bin\qtvars.bat"'
- CreateShortCut "$SMPROGRAMS\$STARTMENU_STRING\${MODULE_MINGW_NAME} ${MODULE_MINGW_VERSION} (Build Debug Libraries).lnk" "%COMSPEC%" '/k "$MINGW_INSTDIR\bin\qtvars.bat compile_debug"'
-
- push $0
- strcmp $MODULE_MINGW_DOWNLOAD "no" DoneMinGWInstall
- DetailPrint "Installing MinGW into $MODULE_MINGW_COMPILERINSTDIR"
- WriteRegStr SHCTX "$PRODUCT_UNIQUE_KEY" "MinGWInstDir" "$MODULE_MINGW_COMPILERINSTDIR"
- nsExec::ExecToLog '"$MINGW_INSTDIR\downloads\${MODULE_MINGW_DOWNLOADFILE}.exe" /S /D=$MODULE_MINGW_COMPILERINSTDIR'
- pop $0
- strcmp $MODULE_MINGW_SOURCEDOWNLOAD "no" DoneMinGWInstall
- DetailPrint "Installing MinGW sources into $MODULE_MINGW_COMPILERINSTDIR\src"
- WriteRegDWORD SHCTX "$PRODUCT_UNIQUE_KEY" "MinGWSources" 1
- nsExec::ExecToLog '"$MINGW_INSTDIR\downloads\${MODULE_MINGW_DOWNLOADFILE}-src.exe" /S /D=$MODULE_MINGW_COMPILERINSTDIR\src'
- pop $0
- DoneMinGWInstall:
- pop $0
-
- DetailPrint "Copying MinGW runtime..."
- SetDetailsPrint none
- CopyFiles /SILENT "$MODULE_MINGW_COMPILERINSTDIR\bin\${MODULE_MINGW_RUNTIME_LIB}" "$MINGW_INSTDIR\bin"
- SetDetailsPrint both
-SectionEnd
-
-Function EnableButtons
- Push $0
- GetDlgItem $0 $HWNDPARENT 3
- EnableWindow $0 1
- GetDlgItem $0 $HWNDPARENT 1
- EnableWindow $0 1
- GetDlgItem $0 $HWNDPARENT 2
- EnableWindow $0 1
- Pop $0
-FunctionEnd
-
-Function DisableButtons
- Push $0
- GetDlgItem $0 $HWNDPARENT 3
- EnableWindow $0 0
- GetDlgItem $0 $HWNDPARENT 1
- EnableWindow $0 0
- GetDlgItem $0 $HWNDPARENT 2
- EnableWindow $0 0
- Pop $0
-FunctionEnd
-
-Function ModuleMinGWDownloadPageEnter
- strcmp $MODULE_MINGW_INSTOK "yes" 0 +2
- Abort
-
- !insertmacro MUI_HEADER_TEXT "$(ModuleMinGWTitle)" "$(ModuleMinGWTitleDescription)"
- Call UpdateCtrlStates
- !insertmacro MUI_INSTALLOPTIONS_DISPLAY "${MODULE_MINGW_DOWNLOADPAGE}"
- !insertmacro MUI_INSTALLOPTIONS_WRITE "${MODULE_MINGW_DOWNLOADPAGE}" "Field 8" "State" "0"
-FunctionEnd
-
-Function ModuleMinGWMirrorPageEnter
- strcmp $MODULE_MINGW_DOWNLOAD "yes" +2
- Abort
-
- !insertmacro MUI_HEADER_TEXT "$(ModuleMinGWMirrorTitle)" "$(ModuleMinGWMirrorDescription)"
- !insertmacro MUI_INSTALLOPTIONS_DISPLAY "${MODULE_MINGW_MIRRORPAGE}"
-FunctionEnd
-
-Function ModuleMinGWLicensePageEnter
- strcmp $MODULE_MINGW_DOWNLOAD "yes" +2
- Abort
-FunctionEnd
-
-Function UpdateCtrlStates
- push $0
- push $1
- push $2
-
- !insertmacro MUI_INSTALLOPTIONS_READ $0 "${MODULE_MINGW_DOWNLOADPAGE}" "Field 8" "State"
- intop $0 $0 !
- FindWindow $2 "#32770" "" $HWNDPARENT
- GetDlgItem $1 $2 1205
- EnableWindow $1 $0
- GetDlgItem $1 $2 1202
- EnableWindow $1 $0
- GetDlgItem $1 $2 1203
- EnableWindow $1 $0
-
- intop $0 $0 !
- GetDlgItem $1 $2 1206
- EnableWindow $1 $0
- GetDlgItem $1 $2 1207
- EnableWindow $1 $0
- GetDlgItem $1 $2 1208
- EnableWindow $1 $0
-
- GetDlgItem $1 $HWNDPARENT 1
- IntCmp $0 0 +3
- SendMessage $1 ${WM_SETTEXT} 0 "STR:Next >"
- Goto +2
- SendMessage $1 ${WM_SETTEXT} 0 "STR:Install"
-
- pop $2
- pop $1
- pop $0
-FunctionEnd
-
-Function ModuleMinGWDownloadPageExit
- push $0
- push $1
-
- !insertmacro MUI_INSTALLOPTIONS_READ $0 "${MODULE_MINGW_DOWNLOADPAGE}" "Settings" "State"
- strcmp "$0" "8" 0 NoNotify
- Call UpdateCtrlStates
- abort
- NoNotify:
-
- !insertmacro MUI_INSTALLOPTIONS_READ $0 "${MODULE_MINGW_DOWNLOADPAGE}" "Field 8" "State"
- strcmp "$0" "0" noDownload doDownload
-
-doDownload:
- !insertmacro MUI_INSTALLOPTIONS_READ $0 "${MODULE_MINGW_DOWNLOADPAGE}" "Field 6" "State"
- strcmp $0 "" 0 +3
- MessageBox MB_ICONEXCLAMATION|MB_OK "You need to specify an installation directory!"
- goto tryAgain
-
- strcpy $MODULE_MINGW_COMPILERINSTDIR $0
- strcpy $MODULE_MINGW_DOWNLOAD "yes"
- CreateDirectory "$MINGW_INSTDIR\downloads"
-
- Call DisableButtons
- InetLoad::load /BANNER "Mirror Download" "Downloading mirrors from server..." "${MODULE_MINGW_URL}/${MODULE_MINGW_DOWNLOADFILE}.mirrors" "$MINGW_INSTDIR\downloads\${MODULE_MINGW_DOWNLOADFILE}.mirrors" /END
- Pop $1 ;Get the return value
- Call EnableButtons
-
- StrCmp $1 "OK" +3
- MessageBox MB_ICONEXCLAMATION|MB_RETRYCANCEL "Was not able to download mirror list ($1)." IDRETRY tryAgain 0
- Quit
-
- call ModuleMinGWReadMirrors
- !insertmacro MUI_INSTALLOPTIONS_WRITE ${MODULE_MINGW_MIRRORPAGE} "Field 3" "ListItems" "$MODULE_MINGW_MIRRORS"
- goto done
-
-noDownload:
- strcpy $MODULE_MINGW_DOWNLOAD "no"
- strcpy $MODULE_MINGW_SOURCEDOWNLOAD "no"
- call ModuleMinGWChecking
- strcmp $MODULE_MINGW_INSTOK "yes" done
- MessageBox MB_ICONEXCLAMATION|MB_YESNO "There is a problem with your MinGW installation:$\r$\n$MODULE_MINGW_INSTOK$\r$\nDo you still want to continue? (Your installation may not work)" IDNO tryAgain
- goto done
-
-tryAgain:
- pop $1
- pop $0
- Abort
-
-done:
- pop $1
- pop $0
-FunctionEnd
-
-Function ModuleMinGWMirrorPageExit
- push $0
- push $2
- push $1
-
- !insertmacro MUI_INSTALLOPTIONS_READ $0 "${MODULE_MINGW_MIRRORPAGE}" "Field 3" "State"
- strcmp "$0" "" 0 +3
- MessageBox MB_ICONEXCLAMATION|MB_OK "You must select a mirror to download from!"
- goto tryAgain
-
- push $0
- call ModuleMinGWGetMirror
- pop $0
-
- Call DisableButtons
- InetLoad::load /BANNER "MinGW Download" "Downloading MinGW from server..." "$0/${MODULE_MINGW_DOWNLOADFILE}.exe" "$MINGW_INSTDIR\downloads\${MODULE_MINGW_DOWNLOADFILE}.exe" /END
- Pop $2 ;get the return value
- Call EnableButtons
-
- StrCmp $2 "OK" +3
- MessageBox MB_ICONEXCLAMATION|MB_OK "Was not able to download MinGW ($2). Please try another mirror."
- Goto tryAgain
-
- !insertmacro MUI_INSTALLOPTIONS_READ $1 "${MODULE_MINGW_MIRRORPAGE}" "Field 2" "State"
- strcmp "$1" "0" done
-
- Call DisableButtons
- InetLoad::load /BANNER "MinGW Sources Download" "Downloading MinGW Sources from server..." "$0/${MODULE_MINGW_DOWNLOADFILE}-src.exe" "$MINGW_INSTDIR\downloads\${MODULE_MINGW_DOWNLOADFILE}-src.exe" /END
- Pop $2
- Call EnableButtons
-
- strcpy $MODULE_MINGW_SOURCEDOWNLOAD "yes"
-
- StrCmp $2 "OK" +3
- MessageBox MB_ICONEXCLAMATION|MB_RETRYCANCEL "Was not able to download MinGW sources ($2). Please try another mirror?" IDRETRY tryAgain 0
- Quit
-
- goto done
-
-tryAgain:
- pop $1
- pop $2
- pop $0
- Abort
-
-done:
- pop $1
- pop $2
- pop $0
-FunctionEnd
-
-Function ModuleMinGWReadMirrors
- push $0 ;file handle
- push $1 ;line
-
- ClearErrors
- FileOpen $0 "$MINGW_INSTDIR\downloads\${MODULE_MINGW_DOWNLOADFILE}.mirrors" r
- IfErrors done
-
- strcpy $MODULE_MINGW_MIRRORS ""
-
-nextline:
- FileRead $0 $1
- IfErrors done
- push $1
- call ModuleMinGWRemoveNewLine
- pop $1
- strcpy $MODULE_MINGW_MIRRORS "$MODULE_MINGW_MIRRORS|$1"
- FileRead $0 $1 ;Jump over next line
- IfErrors done
- goto nextline
-
-done:
- FileClose $0
- strlen $1 $MODULE_MINGW_MIRRORS
- intcmp $1 0 failed failed cleanup
-
-failed:
- MessageBox MB_ICONSTOP|MB_OK "Unable to parse mirror list, exiting!"
- Quit
-
-cleanup:
- pop $1
- pop $0
-FunctionEnd
-
-#this just removes the last two chars
-Function ModuleMinGWRemoveNewLine
-exch $0
-push $1
-push $2
-
-strlen $1 $0
-intop $1 $1 - 1
-strcpy $2 $0 1 $1 ;get last char
-
-strcmp "$2" "$\n" 0 +2
-intop $1 $1 - 1
-
-strcpy $2 $0 1 $1 ;get last char
-strcmp "$2" "$\r" 0 +2
-intop $1 $1 - 1
-
-intop $1 $1 + 1
-strcpy $0 $0 $1
-
-pop $2
-pop $1
-exch $0
-FunctionEnd
-
-#push serverid
-#call GetMirror
-#pop server
-Function ModuleMinGWGetMirror
- exch $1 ;id
- push $0 ;file handle
- push $2 ;line
- push $3 ;tmp
-
- strcpy $3 ""
-
- ClearErrors
- FileOpen $0 "$MINGW_INSTDIR\downloads\${MODULE_MINGW_DOWNLOADFILE}.mirrors" r
- IfErrors done
-
-nextline:
- FileRead $0 $2
- IfErrors done
- push $2
- call ModuleMinGWRemoveNewLine
- pop $2
- strcmp $1 $2 0 nextline
- FileRead $0 $3
- IfErrors done
- push $3
- call ModuleMinGWRemoveNewLine
- pop $3
-
-done:
- strcpy $1 $3
- FileClose $0
- strlen $2 $1
- intcmp $2 0 failed failed cleanup
-
-failed:
- MessageBox MB_ICONSTOP|MB_OK "Unable to parse mirror list, exiting!"
- Quit
-
-cleanup:
- pop $3
- pop $2
- pop $0
- exch $1
-FunctionEnd
-
-Function ModuleMinGWChecking
- push $0
-
- ### update with plugin
- strcpy $MODULE_MINGW_INSTOK "yes"
- strcpy $MODULE_MINGW_COMPILERINSTDIR "C:\MinGW" ;fallback dir
-
- !insertmacro MUI_INSTALLOPTIONS_READ $0 "${MODULE_MINGW_DOWNLOADPAGE}" "Field 3" "State"
- strcmp "$0" "" +2
- strcpy $MODULE_MINGW_COMPILERINSTDIR $0
-
- IfFileExists "$MODULE_MINGW_COMPILERINSTDIR\bin\g++.exe" +3 0
- strcpy $MODULE_MINGW_INSTOK "g++ not found in $MODULE_MINGW_COMPILERINSTDIR\bin\"
- goto DoneChecking
-
-!ifndef OPENSOURCE_BUILD
- ; check w32api.h
- push $MODULE_MINGW_COMPILERINSTDIR
- qtnsisext::HasValidWin32Library
- pop $0
- strcmp "$0" "1" +3 0
- strcpy $MODULE_MINGW_INSTOK "The installer could not find a valid $MODULE_MINGW_COMPILERINSTDIR\include\w32api.h$\r$\n(The supported version is 3.2)"
- goto DoneChecking
-
- ; check version
- push $MODULE_MINGW_COMPILERINSTDIR
- qtnsisext::GetMinGWVersion
- pop $0
- strcmp "$0" "${MODULE_MINGW_COMPILERVERSION}" +3 0
- strcpy $MODULE_MINGW_INSTOK "g++ version found does not match ${MODULE_MINGW_COMPILERVERSION} (Found version $0)."
- goto DoneChecking
-!endif
-
-DoneChecking:
- pop $0
-FunctionEnd
-
-#
-# creates a qtvars.bat file in $QTDIR\bin
-# push "c:\qt" #QTDIR
-# call MakeQtVarsFile
-#
-Function ModuleMinGWMakeEnvFile
- push $0 ; file handle
-
- ClearErrors
- FileOpen $0 "$MINGW_INSTDIR\bin\qtvars.bat" w
- IfErrors WriteMakeFile
- FileWrite $0 "@echo off$\r$\n"
- FileWrite $0 "rem$\r$\n"
- FileWrite $0 "rem This file is generated$\r$\n"
- FileWrite $0 "rem$\r$\n"
- FileWrite $0 "$\r$\n"
- FileWrite $0 "echo Setting up a MinGW/Qt only environment...$\r$\n"
- FileWrite $0 "echo -- QTDIR set to $MINGW_INSTDIR$\r$\n"
- FileWrite $0 "echo -- PATH set to $MINGW_INSTDIR\bin$\r$\n"
- FileWrite $0 "echo -- Adding $MODULE_MINGW_COMPILERINSTDIR\bin to PATH$\r$\n"
- FileWrite $0 "echo -- Adding %SystemRoot%\System32 to PATH$\r$\n"
- FileWrite $0 "echo -- QMAKESPEC set to win32-g++$\r$\n"
- FileWrite $0 "$\r$\n"
- FileWrite $0 "set QTDIR=$MINGW_INSTDIR$\r$\n"
- FileWrite $0 "set PATH=$MINGW_INSTDIR\bin$\r$\n"
- FileWrite $0 "set PATH=%PATH%;$MODULE_MINGW_COMPILERINSTDIR\bin$\r$\n"
- FileWrite $0 "set PATH=%PATH%;%SystemRoot%\System32$\r$\n"
- FileWrite $0 "set QMAKESPEC=win32-g++$\r$\n"
- FileWrite $0 "$\r$\n"
-
- FileWrite $0 'if not "%1"=="compile_debug" goto END$\r$\n'
- FileWrite $0 "cd %QTDIR%$\r$\n"
- FileWrite $0 "echo This will configure and compile qt in debug.$\r$\n"
- FileWrite $0 "echo The release libraries will not be recompiled.$\r$\n"
- FileWrite $0 "pause$\r$\n"
- FileWrite $0 "configure -plugin-sql-sqlite -plugin-sql-odbc -qt-libpng -qt-libjpeg$\r$\n"
- FileWrite $0 "cd %QTDIR%\src$\r$\n"
- FileWrite $0 "qmake$\r$\n"
- FileWrite $0 "mingw32-make debug$\r$\n"
- FileWrite $0 ":END$\r$\n"
- FileClose $0
-
-WriteMakeFile:
- ClearErrors
- FileOpen $0 "$MINGW_INSTDIR\bin\make.bat" w
- IfErrors done
- FileWrite $0 "@echo off$\r$\n"
- FileWrite $0 "mingw32-make %*$\r$\n"
- FileClose $0
-
-done:
-; pop $1
- pop $0
-FunctionEnd
-
-Function MINGW_ValidateDirectoryFunc
- push "${MODULE_MINGW_BUILDDIR}"
- push $MINGW_INSTDIR
- call CommonCheckDirectory
-FunctionEnd
-!macroend
-
-!macro MINGW_DESCRIPTION
- !insertmacro MUI_DESCRIPTION_TEXT ${MINGW_SEC01} "This installs ${MODULE_MINGW_NAME} version ${MODULE_MINGW_VERSION} on your system."
-!macroend
-
-!macro MINGW_STARTUP
- !ifndef MODULE_MINGW_NODEFAULT
- SectionSetFlags ${MINGW_SEC01} 17
- !endif
- strcpy $MINGW_INSTDIR "C:\Qt\${MODULE_MINGW_VERSION}"
- push $MINGW_INSTDIR
- call MakeQtDirectory
- pop $MINGW_INSTDIR
-
- !insertmacro MUI_INSTALLOPTIONS_EXTRACT "${MODULE_MINGW_DOWNLOADPAGE}"
- !insertmacro MUI_INSTALLOPTIONS_EXTRACT "${MODULE_MINGW_MIRRORPAGE}"
-
- !insertmacro MUI_INSTALLOPTIONS_WRITE "${MODULE_MINGW_DOWNLOADPAGE}" "Field 3" "State" "C:\MinGW"
- !insertmacro MUI_INSTALLOPTIONS_WRITE "${MODULE_MINGW_DOWNLOADPAGE}" "Field 6" "State" "C:\MinGW"
-
- strcpy $MODULE_MINGW_DOWNLOAD "no"
- strcpy $MODULE_MINGW_SOURCEDOWNLOAD "no"
-!macroend
-
-!macro MINGW_FINISH
-!macroend
-
-!macro MINGW_RUN_FUNCTION
- ReadRegDWORD $0 SHCTX "$PRODUCT_UNIQUE_KEY" "MINGWInstalled"
- intcmp $0 1 0 DoneRunFunctionMINGW
-
- IfFileExists "$MINGW_INSTDIR\bin\qtdemo.exe" 0 +2
- Exec '$MINGW_INSTDIR\bin\qtdemo.exe'
- goto DoneRunFunction ;don't run more applications
-
- DoneRunFunctionMINGW:
-!macroend
-
-!macro MINGW_README_FUNCTION
- ReadRegDWORD $0 SHCTX "$PRODUCT_UNIQUE_KEY" "MINGWInstalled"
- intcmp $0 1 0 DoneReadmeFunctionMINGW
-
- IfFileExists "$MINGW_INSTDIR\bin\assistant.exe" 0 +2
- Exec '$MINGW_INSTDIR\bin\assistant.exe'
- goto DoneReadmeFunction ;don't run more applications
-
- DoneReadmeFunctionMINGW:
-!macroend
-
-!macro MINGW_UNSTARTUP
- strcmp "$MINGW_INSTDIR" "" 0 +5
- StrCpy $MINGW_INSTDIR "$INSTDIR\${MODULE_MINGW_NAME} ${MODULE_MINGW_VERSION}"
- push $MINGW_INSTDIR
- call un.MakeQtDirectory
- pop $MINGW_INSTDIR
-
- !insertmacro ConfirmOnRemove "MINGWInstalled" "- ${MODULE_MINGW_NAME} ${MODULE_MINGW_VERSION} in $MINGW_INSTDIR"
-!macroend
-
-!macro MINGW_UNINSTALL
-Section un.ModuleMinGW
- push $0
- push $1
-
- ReadRegDWORD $0 SHCTX "$PRODUCT_UNIQUE_KEY" "MINGWInstalled"
- intcmp $0 1 0 DoneUnInstallMINGW
-
- Delete "$MINGW_INSTDIR\downloads\${MODULE_MINGW_DOWNLOADFILE}.mirrors"
-
- ReadRegDWORD $0 SHCTX "$PRODUCT_UNIQUE_KEY" "MinGWSources"
- strcmp $0 "" MinGWSourcesUninstallDone ;not installed
- Delete "$MINGW_INSTDIR\downloads\${MODULE_MINGW_DOWNLOADFILE}-src.exe"
- nsExec::ExecToLog '"$0\src\uninst.exe"'
- pop $1
- MinGWSourcesUninstallDone:
-
- ReadRegStr $0 SHCTX "$PRODUCT_UNIQUE_KEY" "MinGWInstDir"
- strcmp $0 "" MinGWUninstallDone ;not installed
- Delete "$MINGW_INSTDIR\downloads\${MODULE_MINGW_DOWNLOADFILE}.exe"
- nsExec::ExecToLog '"$0\uninst.exe"'
- pop $1
- MinGWUninstallDone:
-
- DetailPrint "Removing start menu shortcuts"
- call un.RemoveStartmenuApplication
- Delete "$SMPROGRAMS\$STARTMENU_STRING\${MODULE_MINGW_NAME} ${MODULE_MINGW_VERSION} Command Prompt.lnk"
- Delete "$SMPROGRAMS\$STARTMENU_STRING\${MODULE_MINGW_NAME} ${MODULE_MINGW_VERSION} (Build Debug Libraries).lnk"
-
- Delete "$MINGW_INSTDIR\bin\${MODULE_MINGW_RUNTIME_LIB}"
- Delete "$MINGW_INSTDIR\bin\make.bat"
- Delete "$MINGW_INSTDIR\bin\qtvars.bat"
-
- !insertmacro MODULE_MINGW_REMOVE "$MINGW_INSTDIR"
- RMDir $MINGW_INSTDIR ;removes it if empty
-
- DoneUnInstallMINGW:
- pop $1
- pop $0
-SectionEnd
-!macroend
-!macro MINGW_UNFINISH
-!macroend
-!else ;MODULE_MINGW
-!macro MINGW_INITIALIZE
-!macroend
-!macro MINGW_SECTIONS
-!macroend
-!macro MINGW_DESCRIPTION
-!macroend
-!macro MINGW_STARTUP
-!macroend
-!macro MINGW_FINISH
-!macroend
-!macro MINGW_RUN_FUNCTION
-!macroend
-!macro MINGW_README_FUNCTION
-!macroend
-!macro MINGW_UNSTARTUP
-!macroend
-!macro MINGW_UNINSTALL
-!macroend
-!macro MINGW_UNFINISH
-!macroend
-!endif ;MODULE_MINGW
-
diff --git a/tools/installer/nsis/modules/opensource.nsh b/tools/installer/nsis/modules/opensource.nsh
deleted file mode 100644
index fbd6ef7..0000000
--- a/tools/installer/nsis/modules/opensource.nsh
+++ /dev/null
@@ -1,94 +0,0 @@
-;;
-;; Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-;; All rights reserved.
-;; Contact: Nokia Corporation (qt-info@nokia.com)
-;;
-;; This file is part of the tools applications of the Qt Toolkit.
-;;
-;; $QT_BEGIN_LICENSE:LGPL$
-;; No Commercial Usage
-;; This file contains pre-release code and may not be distributed.
-;; You may use this file in accordance with the terms and conditions
-;; contained in the Technology Preview License Agreement accompanying
-;; this package.
-;;
-;; GNU Lesser General Public License Usage
-;; Alternatively, this file may be used under the terms of the GNU Lesser
-;; General Public License version 2.1 as published by the Free Software
-;; Foundation and appearing in the file LICENSE.LGPL included in the
-;; packaging of this file. Please review the following information to
-;; ensure the GNU Lesser General Public License version 2.1 requirements
-;; will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-;;
-;; In addition, as a special exception, Nokia gives you certain additional
-;; rights. These rights are described in the Nokia Qt LGPL Exception
-;; version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-;;
-;; If you have questions regarding the use of this file, please contact
-;; Nokia at qt-info@nokia.com.
-;;
-;;
-;;
-;;
-;;
-;;
-;;
-;;
-;; $QT_END_LICENSE$
-;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-!ifdef MODULE_OPENSOURCE
-!macro OPENSOURCE_INITIALIZE
- !define MODULE_OPENSOURCE_PAGE "opensource.ini"
- page custom ModuleOpenSourceShowPage
-!macroend
-!macro OPENSOURCE_SECTIONS
- Section -ModuleOpenSourceSection
- !ifdef MODULE_OPENSOURCE_ROOT
- SetOutPath "$INSTDIR"
- File "${MODULE_OPENSOURCE_ROOT}\OPENSOURCE-NOTICE.TXT"
- !endif
- SectionEnd
-
- Function ModuleOpenSourceShowPage
- !insertmacro MUI_HEADER_TEXT "Open Source Edition" " "
- !insertmacro MUI_INSTALLOPTIONS_DISPLAY "${MODULE_OPENSOURCE_PAGE}"
- strcpy "$LICENSEE" "Open Source"
- strcpy "$LICENSE_PRODUCT" "OpenSource"
- FunctionEnd
-!macroend
-!macro OPENSOURCE_DESCRIPTION
-!macroend
-!macro OPENSOURCE_STARTUP
- !insertmacro MUI_INSTALLOPTIONS_EXTRACT "${MODULE_OPENSOURCE_PAGE}"
-!macroend
-!macro OPENSOURCE_FINISH
-!macroend
-!macro OPENSOURCE_UNSTARTUP
-!macroend
-!macro OPENSOURCE_UNINSTALL
- Section -un.ModuleOpenSourceSection
- Delete "$SMPROGRAMS\$STARTMENU_STRING\OpenSource Notice.lnk"
- SectionEnd
-!macroend
-!macro OPENSOURCE_UNFINISH
-!macroend
-!else ;MODULE_OPENSOURCE
-!macro OPENSOURCE_INITIALIZE
-!macroend
-!macro OPENSOURCE_SECTIONS
-!macroend
-!macro OPENSOURCE_DESCRIPTION
-!macroend
-!macro OPENSOURCE_STARTUP
-!macroend
-!macro OPENSOURCE_FINISH
-!macroend
-!macro OPENSOURCE_UNSTARTUP
-!macroend
-!macro OPENSOURCE_UNINSTALL
-!macroend
-!macro OPENSOURCE_UNFINISH
-!macroend
-!endif ;MODULE_OPENSOURCE
-
diff --git a/tools/installer/nsis/modules/registeruiext.nsh b/tools/installer/nsis/modules/registeruiext.nsh
deleted file mode 100644
index f895bde..0000000
--- a/tools/installer/nsis/modules/registeruiext.nsh
+++ /dev/null
@@ -1,207 +0,0 @@
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;
-;; Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-;; All rights reserved.
-;; Contact: Nokia Corporation (qt-info@nokia.com)
-;;
-;; This file is part of the tools applications of the Qt Toolkit.
-;;
-;; $QT_BEGIN_LICENSE:LGPL$
-;; No Commercial Usage
-;; This file contains pre-release code and may not be distributed.
-;; You may use this file in accordance with the terms and conditions
-;; contained in the Technology Preview License Agreement accompanying
-;; this package.
-;;
-;; GNU Lesser General Public License Usage
-;; Alternatively, this file may be used under the terms of the GNU Lesser
-;; General Public License version 2.1 as published by the Free Software
-;; Foundation and appearing in the file LICENSE.LGPL included in the
-;; packaging of this file. Please review the following information to
-;; ensure the GNU Lesser General Public License version 2.1 requirements
-;; will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-;;
-;; In addition, as a special exception, Nokia gives you certain additional
-;; rights. These rights are described in the Nokia Qt LGPL Exception
-;; version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-;;
-;; If you have questions regarding the use of this file, please contact
-;; Nokia at qt-info@nokia.com.
-;;
-;;
-;;
-;;
-;;
-;;
-;;
-;;
-;; $QT_END_LICENSE$
-;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-; UI Extension Module
-
-!ifdef MODULE_REGISTERUIEXT
-
-;------------------------------------------------------------------------------------------------
-!macro REGISTERUIEXT_INITIALIZE
- !include "includes\system.nsh"
-
- !ifndef MODULE_REGISTERUIEXT_QTDIR
- !ifdef MODULE_MINGW
- !define MODULE_REGISTERUIEXT_QTDIR $MINGW_INSTDIR
- !endif
-
- !ifdef MODULE_MSVC
- !define MODULE_REGISTERUIEXT_QTDIR $MSVC_INSTDIR
- !endif
- !endif
-
- !define MODULE_REGISTERUIEXT_INTERNAL_DESC "Trolltech.DesignerForm"
- !define MODULE_REGISTERUIEXT_DESC_DESIGNER "Open with Qt Designer"
- !define MODULE_REGISTERUIEXT_DESC_DEVENV "Open with Visual Studio .NET"
- !define MODULE_REGISTERUIEXT_FILE_DESC "Qt Designer File"
-!macroend
-
-;------------------------------------------------------------------------------------------------
-
-!macro REGISTERUIEXT_SECTIONS
-
-Function GetSelectedVSIP
- Push $0
- Push $1
-
- StrCpy $0 ""
-!ifdef MODULE_VSIP
-!ifdef VSIP_SEC01
- SectionGetFlags ${VSIP_SEC01} $1
- IntOp $1 $1 & 1
- IntCmp $1 0 +2
- StrCpy $0 "7.1"
-!endif
-!ifdef VSIP_SEC02
- SectionGetFlags ${VSIP_SEC02} $1
- IntOp $1 $1 & 1
- IntCmp $1 0 +2
- StrCpy $0 "8.0"
-!endif
-!endif
-
- Pop $1
- Exch $0
-FunctionEnd
-
-SectionGroup "File Associations"
-Section "UI Files (*.ui)" REGISTERUIEXT_SEC01
- call ModuleRegisterUI
-SectionEnd
-SectionGroupEnd
-
-Function ModuleRegisterUI
- push $0
- push $1
-
- WriteRegDWORD SHCTX "$PRODUCT_UNIQUE_KEY" "UIExtRegistered" 1
- WriteRegStr HKCR "${MODULE_REGISTERUIEXT_INTERNAL_DESC}" "" "${MODULE_REGISTERUIEXT_FILE_DESC}"
- WriteRegStr HKCR "${MODULE_REGISTERUIEXT_INTERNAL_DESC}\shell" "" "open"
-
- Call GetSelectedVSIP
- Pop $1
-
- StrCmp "$1" "" 0 RegisterVSIP
- WriteRegStr HKCR "${MODULE_REGISTERUIEXT_INTERNAL_DESC}\shell\open" "" "${MODULE_REGISTERUIEXT_DESC_DESIGNER}"
- WriteRegStr HKCR "${MODULE_REGISTERUIEXT_INTERNAL_DESC}\shell\open\command" "" "${MODULE_REGISTERUIEXT_QTDIR}\bin\designer.exe $\"%1$\""
- WriteRegStr HKCR "${MODULE_REGISTERUIEXT_INTERNAL_DESC}\DefaultIcon" "" "${MODULE_REGISTERUIEXT_QTDIR}\bin\designer.exe,0"
- goto RegisterFinished
-
- RegisterVSIP:
- Push $1
- Call GetVSInstallationDir
- Pop $0
-
- WriteRegStr HKCR "${MODULE_REGISTERUIEXT_INTERNAL_DESC}\shell\open" "" "${MODULE_REGISTERUIEXT_DESC_DEVENV}"
- WriteRegStr HKCR "${MODULE_REGISTERUIEXT_INTERNAL_DESC}\shell\${MODULE_REGISTERUIEXT_DESC_DEVENV}\command" "" "$0\devenv.exe $\"%1$\""
- WriteRegStr HKCR "${MODULE_REGISTERUIEXT_INTERNAL_DESC}\DefaultIcon" "" "$VSIP_INSTDIR\ui.ico"
- RegisterFinished:
- WriteRegStr HKCR ".ui" "" "${MODULE_REGISTERUIEXT_INTERNAL_DESC}"
-
- pop $1
- pop $0
-FunctionEnd
-
-!macroend
-
-;------------------------------------------------------------------------------------------------
-
-!macro REGISTERUIEXT_DESCRIPTION
- !insertmacro MUI_DESCRIPTION_TEXT ${REGISTERUIEXT_SEC01} "This will associate the file extention .ui with the Qt GUI editor."
-!macroend
-
-;------------------------------------------------------------------------------------------------
-
-!macro REGISTERUIEXT_STARTUP
- StrCmp $RUNNING_AS_ADMIN "true" +2
- SectionSetFlags ${REGISTERUIEXT_SEC01} 16
-!macroend
-
-;------------------------------------------------------------------------------------------------
-
-!macro REGISTERUIEXT_FINISH
-!macroend
-
-;------------------------------------------------------------------------------------------------
-
-!macro REGISTERUIEXT_UNSTARTUP
-!macroend
-
-;------------------------------------------------------------------------------------------------
-
-!macro REGISTERUIEXT_UNINSTALL
-Function un.ModuleRegisterUI
- push $1
- ReadRegStr $1 HKCR ".ui" ""
- strcmp $1 "${MODULE_REGISTERUIEXT_INTERNAL_DESC}" 0 continue
- ; do not delete this key since a subkey openwithlist
- ; or open withprogid may exist
- WriteRegStr HKCR ".ui" "" ""
- continue:
- ; just delete it since nobody else is supposed to use it
- DeleteRegKey HKCR "${MODULE_REGISTERUIEXT_INTERNAL_DESC}"
-
- pop $1
-FunctionEnd
-
-Section -un.ModuleRegisterUIExtSection
- push $0
- ReadRegDWORD $0 SHCTX "$PRODUCT_UNIQUE_KEY" "UIExtRegistered"
- intcmp $0 1 0 DoneUnRegister
- call un.ModuleRegisterUI
- DoneUnRegister:
- pop $0
-SectionEnd
-!macroend
-
-;------------------------------------------------------------------------------------------------
-
-!macro REGISTERUIEXT_UNFINISH
-!macroend
-
-;------------------------------------------------------------------------------------------------
-
-!else
-!macro REGISTERUIEXT_INITIALIZE
-!macroend
-!macro REGISTERUIEXT_SECTIONS
-!macroend
-!macro REGISTERUIEXT_DESCRIPTION
-!macroend
-!macro REGISTERUIEXT_STARTUP
-!macroend
-!macro REGISTERUIEXT_FINISH
-!macroend
-!macro REGISTERUIEXT_UNSTARTUP
-!macroend
-!macro REGISTERUIEXT_UNINSTALL
-!macroend
-!macro REGISTERUIEXT_UNFINISH
-!macroend
-!endif
diff --git a/tools/installer/nsis/opensource.ini b/tools/installer/nsis/opensource.ini
deleted file mode 100644
index 4ce40bf..0000000
--- a/tools/installer/nsis/opensource.ini
+++ /dev/null
@@ -1,78 +0,0 @@
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;
-;; Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-;; All rights reserved.
-;; Contact: Nokia Corporation (qt-info@nokia.com)
-;;
-;; This file is part of the tools applications of the Qt Toolkit.
-;;
-;; $QT_BEGIN_LICENSE:LGPL$
-;; No Commercial Usage
-;; This file contains pre-release code and may not be distributed.
-;; You may use this file in accordance with the terms and conditions
-;; contained in the Technology Preview License Agreement accompanying
-;; this package.
-;;
-;; GNU Lesser General Public License Usage
-;; Alternatively, this file may be used under the terms of the GNU Lesser
-;; General Public License version 2.1 as published by the Free Software
-;; Foundation and appearing in the file LICENSE.LGPL included in the
-;; packaging of this file. Please review the following information to
-;; ensure the GNU Lesser General Public License version 2.1 requirements
-;; will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-;;
-;; In addition, as a special exception, Nokia gives you certain additional
-;; rights. These rights are described in the Nokia Qt LGPL Exception
-;; version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-;;
-;; If you have questions regarding the use of this file, please contact
-;; Nokia at qt-info@nokia.com.
-;;
-;;
-;;
-;;
-;;
-;;
-;;
-;;
-;; $QT_END_LICENSE$
-;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-; Ini file generated by the HM NIS Edit IO designer.
-[Settings]
-NumFields=4
-
-[Field 1]
-Type=Label
-Text=You are now installing the Open Source Edition of Qt. It is licensed under GNU LGPL version 2.1 and the GPL version 3.
-Left=0
-Right=300
-Top=0
-Bottom=78
-
-[Field 2]
-Type=Link
-Text=http://qt.nokia.com/downloads
-State=http://qt.nokia.com/downloads
-Left=0
-Right=278
-Top=80
-Bottom=88
-
-[Field 3]
-Type=Link
-Text=http://qt.nokia.com/about
-State=http://qt.nokia.com/about
-Left=0
-Right=267
-Top=112
-Bottom=120
-
-[Field 4]
-Type=Label
-Text=To read more about Nokia's licensing, please go to:
-Left=0
-Right=278
-Top=97
-Bottom=105
-
diff --git a/tools/linguist/linguist/mainwindow.cpp b/tools/linguist/linguist/mainwindow.cpp
index 008ebb1..6e5c656 100644
--- a/tools/linguist/linguist/mainwindow.cpp
+++ b/tools/linguist/linguist/mainwindow.cpp
@@ -94,6 +94,8 @@
#include <QUrl>
#include <QWhatsThis>
+#include <ctype.h>
+
QT_BEGIN_NAMESPACE
static const int MessageMS = 2500;
@@ -2356,13 +2358,28 @@ void MainWindow::updatePhraseDicts()
static bool haveMnemonic(const QString &str)
{
- QString mnemonic = QKeySequence::mnemonic(str);
- if (mnemonic == QLatin1String("Alt+Space")) {
- // "Nobody" ever really uses these, and they are highly annoying
- // because we get a lot of false positives.
- return false;
+ for (const ushort *p = (ushort *)str.constData();; ) { // Assume null-termination
+ ushort c = *p++;
+ if (!c)
+ break;
+ if (c == '&') {
+ c = *p++;
+ if (!c)
+ return false;
+ // "Nobody" ever really uses these alt-space, and they are highly annoying
+ // because we get a lot of false positives.
+ if (c != '&' && c != ' ' && QChar(c).isPrint()) {
+ const ushort *pp = p;
+ for (; ::isalpha(*p); p++) ;
+ if (pp == p || *p != ';')
+ return true;
+ // This looks like a HTML &entity;, so ignore it. As a HTML string
+ // won't contain accels anyway, we can stop scanning here.
+ break;
+ }
+ }
}
- return !mnemonic.isEmpty();
+ return false;
}
void MainWindow::updateDanger(const MultiDataIndex &index, bool verbose)
diff --git a/tools/linguist/linguist/messageeditor.cpp b/tools/linguist/linguist/messageeditor.cpp
index 91c88da..b6c1688 100644
--- a/tools/linguist/linguist/messageeditor.cpp
+++ b/tools/linguist/linguist/messageeditor.cpp
@@ -135,14 +135,6 @@ MessageEditor::MessageEditor(MultiDataModel *dataModel, QMainWindow *parent)
void MessageEditor::setupEditorPage()
{
QFrame *editorPage = new QFrame;
- editorPage->setObjectName(QLatin1String("editorPage"));
-
- editorPage->setStyleSheet(QLatin1String(
- "QFrame#editorPage { border-image: url(:/images/transbox.png) 12 16 16 12 repeat;"
- " border-width: 12px 16px 16px 12px; }"
- "QFrame#editorPage { background-color: white; }"
- "QLabel { font-weight: bold; }"
- ));
editorPage->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed));
m_source = new FormWidget(tr("Source text"), false);
diff --git a/tools/linguist/linguist/messageeditorwidgets.cpp b/tools/linguist/linguist/messageeditorwidgets.cpp
index 8b4fa62..4d31db2 100644
--- a/tools/linguist/linguist/messageeditorwidgets.cpp
+++ b/tools/linguist/linguist/messageeditorwidgets.cpp
@@ -171,6 +171,9 @@ FormWidget::FormWidget(const QString &label, bool isEditable, QWidget *parent)
layout->setMargin(0);
m_label = new QLabel(this);
+ QFont fnt;
+ fnt.setBold(true);
+ m_label->setFont(fnt);
m_label->setText(label);
layout->addWidget(m_label);
@@ -249,6 +252,9 @@ FormMultiWidget::FormMultiWidget(const QString &label, QWidget *parent)
m_minusIcon(QIcon(QLatin1String(":/images/minus.png")))
{
m_label = new QLabel(this);
+ QFont fnt;
+ fnt.setBold(true);
+ m_label->setFont(fnt);
m_label->setText(label);
m_plusButtons.append(
diff --git a/tools/qdoc3/htmlgenerator.cpp b/tools/qdoc3/htmlgenerator.cpp
index 15afd7d..22cf8eb 100644
--- a/tools/qdoc3/htmlgenerator.cpp
+++ b/tools/qdoc3/htmlgenerator.cpp
@@ -59,6 +59,7 @@
QT_BEGIN_NAMESPACE
#define COMMAND_VERSION Doc::alias("version")
+int HtmlGenerator::id = 0;
QString HtmlGenerator::sinceTitles[] =
{
@@ -399,9 +400,9 @@ void HtmlGenerator::generateTree(const Tree *tree, CodeMarker *marker)
"qmake Manual",
dcfQmakeRoot);
- generateIndex(project.toLower().simplified().replace(" ", "-"),
- projectUrl,
- projectDescription);
+ QString fileBase = project.toLower().simplified().replace(" ", "-");
+ generateIndex(fileBase, projectUrl, projectDescription);
+ generatePageIndex(outputDir() + "/" + fileBase + ".pageindex", marker);
helpProjectWriter->generate(myTree);
}
@@ -1629,7 +1630,7 @@ void HtmlGenerator::generateFakeNode(const FakeNode *fake, CodeMarker *marker)
}
}
-QString HtmlGenerator::fileExtension(const Node * /* node */)
+QString HtmlGenerator::fileExtension(const Node * /* node */) const
{
return "html";
}
@@ -4369,4 +4370,113 @@ void HtmlGenerator::generateInstantiatedBy(const ClassNode* cn,
}
}
+/*!
+ Generate the <page> element for the given \a node using the \a writer.
+ Return true if a <page> element was written; otherwise return false.
+ */
+bool HtmlGenerator::generatePageElement(QXmlStreamWriter& writer,
+ const Node* node,
+ CodeMarker* marker) const
+{
+ if (node->pageType() == Node::NoPageType)
+ return false;
+ if (node->name().isEmpty())
+ return true;
+ if (node->access() == Node::Private)
+ return false;
+
+ QString title;
+ QString rawTitle;
+ QString fullTitle;
+
+ writer.writeStartElement("page");
+ QXmlStreamAttributes attributes;
+ QString t;
+ t.setNum(id++);
+ switch (node->type()) {
+ case Node::Fake:
+ const FakeNode* fake = static_cast<const FakeNode*>(node);
+ title = fake->fullTitle();
+ break;
+ case Node::Class:
+ title = node->name() + " Class Reference";
+ break;
+ case Node::Namespace:
+ const InnerNode* inner = static_cast<const InnerNode*>(node);
+ rawTitle = marker->plainName(inner);
+ fullTitle = marker->plainFullName(inner);
+ title = rawTitle + " Namespace Reference";
+ break;
+ default:
+ title = node->name();
+ break;
+ }
+ writer.writeAttribute("id",t);
+ writer.writeStartElement("pageWords");
+ writer.writeCharacters(title);
+ writer.writeEndElement();
+ writer.writeStartElement("pageTitle");
+ writer.writeCharacters(title);
+ writer.writeEndElement();
+ writer.writeStartElement("pageUrl");
+ writer.writeCharacters(PageGenerator::fileName(node));
+ writer.writeEndElement();
+ writer.writeStartElement("pageType");
+ switch (node->pageType()) {
+ case Node::ApiPage:
+ writer.writeCharacters("APIPage");
+ break;
+ case Node::ArticlePage:
+ writer.writeCharacters("Article");
+ break;
+ case Node::ExamplePage:
+ writer.writeCharacters("Example");
+ break;
+ default:
+ break;
+ }
+ writer.writeEndElement();
+ writer.writeEndElement();
+ return true;
+}
+
+/*!
+ Traverse the tree recursively and generate the <keyword>
+ elements.
+ */
+void HtmlGenerator::generatePageElements(QXmlStreamWriter& writer, const Node* node, CodeMarker* marker) const
+{
+ if (generatePageElement(writer, node, marker)) {
+
+ if (node->isInnerNode()) {
+ const InnerNode *inner = static_cast<const InnerNode *>(node);
+
+ // Recurse to write an element for this child node and all its children.
+ foreach (const Node *child, inner->childNodes())
+ generatePageElements(writer, child, marker);
+ }
+ }
+}
+
+/*!
+ Outputs the file containing the index used for searching the html docs.
+ */
+void HtmlGenerator::generatePageIndex(const QString& fileName, CodeMarker* marker) const
+{
+ QFile file(fileName);
+ if (!file.open(QFile::WriteOnly | QFile::Text))
+ return ;
+
+ QXmlStreamWriter writer(&file);
+ writer.setAutoFormatting(true);
+ writer.writeStartDocument();
+ writer.writeStartElement("qtPageIndex");
+
+ generatePageElements(writer, myTree->root(), marker);
+
+ writer.writeEndElement(); // qtPageIndex
+ writer.writeEndDocument();
+ file.close();
+}
+
#endif
diff --git a/tools/qdoc3/htmlgenerator.h b/tools/qdoc3/htmlgenerator.h
index 5ed26e0..369d6c3 100644
--- a/tools/qdoc3/htmlgenerator.h
+++ b/tools/qdoc3/htmlgenerator.h
@@ -50,6 +50,7 @@
#include <qmap.h>
#include <qregexp.h>
+#include <QXmlStreamWriter>
#include "codemarker.h"
#include "config.h"
@@ -116,7 +117,7 @@ class HtmlGenerator : public PageGenerator
CodeMarker *marker);
virtual void generateClassLikeNode(const InnerNode *inner, CodeMarker *marker);
virtual void generateFakeNode(const FakeNode *fake, CodeMarker *marker);
- virtual QString fileExtension(const Node *node);
+ virtual QString fileExtension(const Node *node) const;
virtual QString refForNode(const Node *node);
virtual QString linkForNode(const Node *node, const Node *relative);
virtual QString refForAtom(Atom *atom, const Node *node);
@@ -262,6 +263,14 @@ class HtmlGenerator : public PageGenerator
const Node *relative,
CodeMarker *marker);
void endLink();
+ bool generatePageElement(QXmlStreamWriter& writer,
+ const Node* node,
+ CodeMarker* marker) const;
+ void generatePageElements(QXmlStreamWriter& writer,
+ const Node* node,
+ CodeMarker* marker) const;
+ void generatePageIndex(const QString& fileName,
+ CodeMarker* marker) const;
#if 0
NavigationBar currentNavigationBar;
@@ -316,6 +325,7 @@ class HtmlGenerator : public PageGenerator
NewSinceMaps newSinceMaps;
static QString sinceTitles[];
NewClassMaps newClassMaps;
+ static int id;
};
#define HTMLGENERATOR_ADDRESS "address"
diff --git a/tools/qdoc3/javadocgenerator.cpp b/tools/qdoc3/javadocgenerator.cpp
index 001bd27..eb9c1c9 100644
--- a/tools/qdoc3/javadocgenerator.cpp
+++ b/tools/qdoc3/javadocgenerator.cpp
@@ -145,7 +145,7 @@ void JavadocGenerator::generateTree(const Tree *tree, CodeMarker *marker)
HtmlGenerator::generateTree(tree, marker);
}
-QString JavadocGenerator::fileExtension(const Node *node)
+QString JavadocGenerator::fileExtension(const Node *node) const
{
if (node->type() == Node::Fake) {
return "html";
diff --git a/tools/qdoc3/javadocgenerator.h b/tools/qdoc3/javadocgenerator.h
index 73452cf..b485502 100644
--- a/tools/qdoc3/javadocgenerator.h
+++ b/tools/qdoc3/javadocgenerator.h
@@ -61,7 +61,7 @@ public:
QString imageFileName(const Node *relative, const QString &fileBase);
protected:
- QString fileExtension(const Node *node);
+ QString fileExtension(const Node *node) const;
void startText( const Node *relative, CodeMarker *marker );
void endText( const Node *relative, CodeMarker *marker );
int generateAtom( const Atom *atom, const Node *relative, CodeMarker *marker );
diff --git a/tools/qdoc3/linguistgenerator.cpp b/tools/qdoc3/linguistgenerator.cpp
index 21678e0..702f0fb 100644
--- a/tools/qdoc3/linguistgenerator.cpp
+++ b/tools/qdoc3/linguistgenerator.cpp
@@ -82,7 +82,7 @@ QString LinguistGenerator::format()
return "Linguist";
}
-QString LinguistGenerator::fileExtension(const Node * /* node */)
+QString LinguistGenerator::fileExtension(const Node * /* node */) const
{
return "ts";
}
diff --git a/tools/qdoc3/linguistgenerator.h b/tools/qdoc3/linguistgenerator.h
index f7f0606..979db02 100644
--- a/tools/qdoc3/linguistgenerator.h
+++ b/tools/qdoc3/linguistgenerator.h
@@ -70,7 +70,7 @@ protected:
virtual void generateClassLikeNode(const InnerNode *inner,
CodeMarker *marker);
virtual void generateFakeNode( const FakeNode *fake, CodeMarker *marker );
- virtual QString fileExtension(const Node *node);
+ virtual QString fileExtension(const Node *node) const;
QList<QDomElement> generateIndexSections(QDomDocument &document,
const Node *node, CodeMarker *marker);
diff --git a/tools/qdoc3/main.cpp b/tools/qdoc3/main.cpp
index 3d0106d..57823fb 100644
--- a/tools/qdoc3/main.cpp
+++ b/tools/qdoc3/main.cpp
@@ -337,8 +337,9 @@ static void processQdocconfFile(const QString &fileName)
Generate the XML tag file, if it was requested.
*/
QString tagFile = config.getString(CONFIG_TAGFILE);
- if (!tagFile.isEmpty())
+ if (!tagFile.isEmpty()) {
tree->generateTagFile(tagFile);
+ }
tree->setVersion("");
Generator::terminate();
diff --git a/tools/qdoc3/mangenerator.cpp b/tools/qdoc3/mangenerator.cpp
index c3b7780..1e85b73 100644
--- a/tools/qdoc3/mangenerator.cpp
+++ b/tools/qdoc3/mangenerator.cpp
@@ -187,7 +187,7 @@ void ManGenerator::generateFakeNode( const FakeNode *fake, CodeMarker *marker )
generateFooter();
}
-QString ManGenerator::fileExtension(const Node * /* node */)
+QString ManGenerator::fileExtension(const Node * /* node */) const
{
return "3qt";
}
diff --git a/tools/qdoc3/mangenerator.h b/tools/qdoc3/mangenerator.h
index 284517e..0fca342 100644
--- a/tools/qdoc3/mangenerator.h
+++ b/tools/qdoc3/mangenerator.h
@@ -63,7 +63,7 @@ protected:
CodeMarker *marker );
virtual void generateClassLikeNode(const InnerNode *node, CodeMarker *marker);
virtual void generateFakeNode( const FakeNode *fake, CodeMarker *marker );
- virtual QString fileExtension(const Node *node);
+ virtual QString fileExtension(const Node *node) const;
private:
void generateHeader( const QString& name );
diff --git a/tools/qdoc3/node.cpp b/tools/qdoc3/node.cpp
index 9357671..f3958c6 100644
--- a/tools/qdoc3/node.cpp
+++ b/tools/qdoc3/node.cpp
@@ -92,8 +92,9 @@ void Node::setDoc(const Doc& doc, bool replace)
Node::Node(Type type, InnerNode *parent, const QString& name)
: typ(type),
acc(Public),
- sta(Commendable),
saf(UnspecifiedSafeness),
+ pageTyp(NoPageType),
+ sta(Commendable),
par(parent),
rel(0),
nam(name)
@@ -103,6 +104,7 @@ Node::Node(Type type, InnerNode *parent, const QString& name)
}
/*!
+ Returns the node's URL.
*/
QString Node::url() const
{
@@ -110,13 +112,25 @@ QString Node::url() const
}
/*!
+ Sets the node's URL to \a url
*/
void Node::setUrl(const QString &url)
{
u = url;
}
+void Node::setPageType(const QString& t)
+{
+ if ((t == "API") || (t == "api"))
+ pageTyp = ApiPage;
+ else if (t == "article")
+ pageTyp = ArticlePage;
+ else if (t == "example")
+ pageTyp = ExamplePage;
+}
+
/*!
+ Sets the pointer to the node that this node relates to.
*/
void Node::setRelates(InnerNode *pseudoParent)
{
@@ -455,6 +469,9 @@ const EnumNode *InnerNode::findEnumNodeForValue(const QString &enumValue) const
}
/*!
+ Returnds the sequence number of the function node \a func
+ in the list of overloaded functions for a class, such that
+ all the functions have the same name as the \a func.
*/
int InnerNode::overloadNumber(const FunctionNode *func) const
{
@@ -468,6 +485,8 @@ int InnerNode::overloadNumber(const FunctionNode *func) const
}
/*!
+ Returns the number of member functions of a class such that
+ the functions are all named \a funcName.
*/
int InnerNode::numOverloads(const QString& funcName) const
{
@@ -480,6 +499,8 @@ int InnerNode::numOverloads(const QString& funcName) const
}
/*!
+ Returns a node list containing all the member functions of
+ some class such that the functions overload the name \a funcName.
*/
NodeList InnerNode::overloads(const QString &funcName) const
{
@@ -499,6 +520,8 @@ NodeList InnerNode::overloads(const QString &funcName) const
InnerNode::InnerNode(Type type, InnerNode *parent, const QString& name)
: Node(type, parent, name)
{
+ if (type == Class)
+ setPageType(ApiPage);
}
/*!
@@ -682,6 +705,8 @@ bool LeafNode::isInnerNode() const
}
/*!
+ Constructs a leaf node named \a name of the specified
+ \a type. The new leaf node becomes a child of \a parent.
*/
LeafNode::LeafNode(Type type, InnerNode *parent, const QString& name)
: Node(type, parent, name)
@@ -693,10 +718,12 @@ LeafNode::LeafNode(Type type, InnerNode *parent, const QString& name)
*/
/*!
+ Constructs a namespace node.
*/
NamespaceNode::NamespaceNode(InnerNode *parent, const QString& name)
: InnerNode(Namespace, parent, name)
{
+ setPageType(ApiPage);
}
/*!
@@ -704,11 +731,13 @@ NamespaceNode::NamespaceNode(InnerNode *parent, const QString& name)
*/
/*!
+ Constructs a class node. A class node will generate an API page.
*/
ClassNode::ClassNode(InnerNode *parent, const QString& name)
: InnerNode(Class, parent, name)
{
hidden = false;
+ setPageType(ApiPage);
}
/*!
@@ -765,11 +794,28 @@ void ClassNode::fixBaseClasses()
/*!
The type of a FakeNode is Fake, and it has a \a subtype,
- which specifies the type of FakeNode.
+ which specifies the type of FakeNode. The page type for
+ the page index is set here.
*/
FakeNode::FakeNode(InnerNode *parent, const QString& name, SubType subtype)
: InnerNode(Fake, parent, name), sub(subtype)
{
+ switch (subtype) {
+ case Module:
+ case Page:
+ case Group:
+ setPageType(ArticlePage);
+ break;
+ case QmlClass:
+ case QmlBasicType:
+ setPageType(ApiPage);
+ break;
+ case Example:
+ setPageType(ExamplePage);
+ break;
+ default:
+ break;
+ }
}
/*!
diff --git a/tools/qdoc3/node.h b/tools/qdoc3/node.h
index 077aeb8..679a9d4 100644
--- a/tools/qdoc3/node.h
+++ b/tools/qdoc3/node.h
@@ -137,6 +137,13 @@ class Node
AppendixLink */
};
+ enum PageType {
+ NoPageType,
+ ApiPage,
+ ArticlePage,
+ ExamplePage
+ };
+
virtual ~Node();
void setAccess(Access access) { acc = access; }
@@ -150,6 +157,8 @@ class Node
void setLink(LinkType linkType, const QString &link, const QString &desc);
void setUrl(const QString &url);
void setTemplateStuff(const QString &templateStuff) { tpl = templateStuff; }
+ void setPageType(PageType t) { pageTyp = t; }
+ void setPageType(const QString& t);
virtual bool isInnerNode() const = 0;
virtual bool isReimp() const { return false; }
@@ -173,6 +182,7 @@ class Node
ThreadSafeness inheritedThreadSafeness() const;
QString since() const { return sinc; }
QString templateStuff() const { return tpl; }
+ PageType pageType() const { return pageTyp; }
void clearRelated() { rel = 0; }
@@ -186,13 +196,15 @@ class Node
#ifdef Q_WS_WIN
Type typ;
Access acc;
- Status sta;
ThreadSafeness saf;
+ PageType pageTyp;
+ Status sta;
#else
Type typ : 4;
Access acc : 2;
- Status sta : 3;
ThreadSafeness saf : 2;
+ PageType pageTyp : 4;
+ Status sta : 3;
#endif
InnerNode *par;
InnerNode *rel;
diff --git a/tools/qdoc3/pagegenerator.cpp b/tools/qdoc3/pagegenerator.cpp
index bc73eb0..2cad9ed 100644
--- a/tools/qdoc3/pagegenerator.cpp
+++ b/tools/qdoc3/pagegenerator.cpp
@@ -77,7 +77,7 @@ void PageGenerator::generateTree(const Tree *tree, CodeMarker *marker)
generateInnerNode(tree->root(), marker);
}
-QString PageGenerator::fileBase(const Node *node)
+QString PageGenerator::fileBase(const Node *node) const
{
if (node->relates())
node = node->relates();
@@ -153,7 +153,7 @@ QString PageGenerator::fileBase(const Node *node)
return res;
}
-QString PageGenerator::fileName(const Node *node)
+QString PageGenerator::fileName(const Node *node) const
{
if (!node->url().isEmpty())
return node->url();
diff --git a/tools/qdoc3/pagegenerator.h b/tools/qdoc3/pagegenerator.h
index 20a6c3c..7ab7e5e 100644
--- a/tools/qdoc3/pagegenerator.h
+++ b/tools/qdoc3/pagegenerator.h
@@ -69,9 +69,9 @@ class PageGenerator : public Generator
virtual void generateTree(const Tree *tree, CodeMarker *marker);
protected:
- virtual QString fileBase(const Node *node);
- virtual QString fileExtension(const Node *node) = 0;
- QString fileName(const Node *node);
+ virtual QString fileBase(const Node *node) const;
+ virtual QString fileExtension(const Node *node) const = 0;
+ QString fileName(const Node *node) const;
QString outFileName();
void beginSubPage(const Location& location, const QString& fileName);
void endSubPage();
diff --git a/tools/qdoc3/webxmlgenerator.cpp b/tools/qdoc3/webxmlgenerator.cpp
index a3c92ce..205bc8c 100644
--- a/tools/qdoc3/webxmlgenerator.cpp
+++ b/tools/qdoc3/webxmlgenerator.cpp
@@ -90,7 +90,7 @@ QString WebXMLGenerator::format()
return "WebXML";
}
-QString WebXMLGenerator::fileExtension(const Node * /* node */)
+QString WebXMLGenerator::fileExtension(const Node * /* node */) const
{
return "xml";
}
diff --git a/tools/qdoc3/webxmlgenerator.h b/tools/qdoc3/webxmlgenerator.h
index 3145d50..cadf176 100644
--- a/tools/qdoc3/webxmlgenerator.h
+++ b/tools/qdoc3/webxmlgenerator.h
@@ -69,7 +69,7 @@ protected:
const Node *relative, CodeMarker *marker );
virtual void generateClassLikeNode(const InnerNode *inner, CodeMarker *marker);
virtual void generateFakeNode(const FakeNode *fake, CodeMarker *marker);
- virtual QString fileExtension(const Node *node);
+ virtual QString fileExtension(const Node *node) const;
virtual const Atom *addAtomElements(QXmlStreamWriter &writer, const Atom *atom,
const Node *relative, CodeMarker *marker);