diff options
author | J-P Nurmi <jpnurmi@digia.com> | 2012-11-27 14:18:41 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2012-11-28 00:56:34 +0100 |
commit | cb961007c534b260b779ed513d33843a9dce01f4 (patch) | |
tree | d780db451451d51ab10aa114a6e01f813e32c852 /examples/tools/settingseditor | |
parent | 3d66b86cb7407201f091d16130b3da73e613cc5f (diff) |
Examples: move widgets specific "tools" examples to the correct place
examples/tools -> examples/widgets/tools
Change-Id: I8b9e23c45e07ce5cd9da8f24a9a9f7ae10b2b107
Reviewed-by: hjk <qthjk@ovi.com>
Diffstat (limited to 'examples/tools/settingseditor')
-rw-r--r-- | examples/tools/settingseditor/inifiles/licensepage.ini | 46 | ||||
-rw-r--r-- | examples/tools/settingseditor/inifiles/qsa.ini | 26 | ||||
-rw-r--r-- | examples/tools/settingseditor/locationdialog.cpp | 216 | ||||
-rw-r--r-- | examples/tools/settingseditor/locationdialog.h | 84 | ||||
-rw-r--r-- | examples/tools/settingseditor/main.cpp | 51 | ||||
-rw-r--r-- | examples/tools/settingseditor/mainwindow.cpp | 222 | ||||
-rw-r--r-- | examples/tools/settingseditor/mainwindow.h | 91 | ||||
-rw-r--r-- | examples/tools/settingseditor/settingseditor.desktop | 11 | ||||
-rw-r--r-- | examples/tools/settingseditor/settingseditor.pro | 19 | ||||
-rw-r--r-- | examples/tools/settingseditor/settingstree.cpp | 262 | ||||
-rw-r--r-- | examples/tools/settingseditor/settingstree.h | 90 | ||||
-rw-r--r-- | examples/tools/settingseditor/variantdelegate.cpp | 316 | ||||
-rw-r--r-- | examples/tools/settingseditor/variantdelegate.h | 81 |
13 files changed, 0 insertions, 1515 deletions
diff --git a/examples/tools/settingseditor/inifiles/licensepage.ini b/examples/tools/settingseditor/inifiles/licensepage.ini deleted file mode 100644 index 608d1b7885..0000000000 --- a/examples/tools/settingseditor/inifiles/licensepage.ini +++ /dev/null @@ -1,46 +0,0 @@ -[Field%201] -Bottom=89 -Flags=MULTILINE|VSCROLL|READONLY -Left=4 -Right=296 -State=No license agreement file found. Please contact support. -Top=14 -Type=Text - -[Field%202] -Bottom=8 -Left=4 -Right=294 -Text=Press Page Down to see the rest of the agreement. -Top=0 -Type=Label - -[Field%203] -Bottom=111 -Left=4 -Right=297 -Text=If you accept the terms of the agreement, select the first option below. You must accept the agreement to install this software. Click Next to continue. -Top=92 -Type=Label - -[Field%204] -Bottom=129 -Flags=GROUP|NOTIFY -Left=4 -Right=299 -Text=I &accept the terms in the License Agreement -Top=120 -Type=RadioButton - -[Field%205] -Bottom=140 -Flags=NOTIFY -Left=4 -Right=300 -State=1 -Text=I &do not accept the terms in the License Agreement -Top=129 -Type=RadioButton - -[Settings] -NumFields=5 diff --git a/examples/tools/settingseditor/inifiles/qsa.ini b/examples/tools/settingseditor/inifiles/qsa.ini deleted file mode 100644 index 56a2964ee5..0000000000 --- a/examples/tools/settingseditor/inifiles/qsa.ini +++ /dev/null @@ -1,26 +0,0 @@ -[Field%201] -Bottom=65 -Left=0 -Right=299 -Text=QSA Build Options -Top=9 -Type=Groupbox - -[Field%202] -Bottom=37 -Left=20 -Right=284 -Text=Don't compile QSA Workbench into QSA. -Top=27 -Type=Checkbox - -[Field%203] -Bottom=56 -Left=20 -Right=247 -Text=Don't compile QSA Workbench nor QSA Editor into QSA. -Top=45 -Type=Checkbox - -[Settings] -NumFields=3 diff --git a/examples/tools/settingseditor/locationdialog.cpp b/examples/tools/settingseditor/locationdialog.cpp deleted file mode 100644 index dd725a02cb..0000000000 --- a/examples/tools/settingseditor/locationdialog.cpp +++ /dev/null @@ -1,216 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/legal -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names -** of its contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include <QtWidgets> - -#include "locationdialog.h" - -LocationDialog::LocationDialog(QWidget *parent) - : QDialog(parent) -{ - formatComboBox = new QComboBox; - formatComboBox->addItem(tr("Native")); - formatComboBox->addItem(tr("INI")); - - scopeComboBox = new QComboBox; - scopeComboBox->addItem(tr("User")); - scopeComboBox->addItem(tr("System")); - - organizationComboBox = new QComboBox; - organizationComboBox->addItem(tr("Qt")); - organizationComboBox->setEditable(true); - - applicationComboBox = new QComboBox; - applicationComboBox->addItem(tr("Any")); - applicationComboBox->addItem(tr("Application Example")); - applicationComboBox->addItem(tr("Assistant")); - applicationComboBox->addItem(tr("Designer")); - applicationComboBox->addItem(tr("Linguist")); - applicationComboBox->setEditable(true); - applicationComboBox->setCurrentIndex(3); - - formatLabel = new QLabel(tr("&Format:")); - formatLabel->setBuddy(formatComboBox); - - scopeLabel = new QLabel(tr("&Scope:")); - scopeLabel->setBuddy(scopeComboBox); - - organizationLabel = new QLabel(tr("&Organization:")); - organizationLabel->setBuddy(organizationComboBox); - - applicationLabel = new QLabel(tr("&Application:")); - applicationLabel->setBuddy(applicationComboBox); - - locationsGroupBox = new QGroupBox(tr("Setting Locations")); - - QStringList labels; - labels << tr("Location") << tr("Access"); - - locationsTable = new QTableWidget; - locationsTable->setSelectionMode(QAbstractItemView::SingleSelection); - locationsTable->setSelectionBehavior(QAbstractItemView::SelectRows); - locationsTable->setEditTriggers(QAbstractItemView::NoEditTriggers); - locationsTable->setColumnCount(2); - locationsTable->setHorizontalHeaderLabels(labels); - locationsTable->horizontalHeader()->setSectionResizeMode(0, QHeaderView::Stretch); - locationsTable->horizontalHeader()->resizeSection(1, 180); - - buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok - | QDialogButtonBox::Cancel); - - connect(formatComboBox, SIGNAL(activated(int)), - this, SLOT(updateLocationsTable())); - connect(scopeComboBox, SIGNAL(activated(int)), - this, SLOT(updateLocationsTable())); - connect(organizationComboBox->lineEdit(), - SIGNAL(editingFinished()), - this, SLOT(updateLocationsTable())); - connect(applicationComboBox->lineEdit(), - SIGNAL(editingFinished()), - this, SLOT(updateLocationsTable())); - connect(buttonBox, SIGNAL(accepted()), this, SLOT(accept())); - connect(buttonBox, SIGNAL(rejected()), this, SLOT(reject())); - - QVBoxLayout *locationsLayout = new QVBoxLayout; - locationsLayout->addWidget(locationsTable); - locationsGroupBox->setLayout(locationsLayout); - - QGridLayout *mainLayout = new QGridLayout; - mainLayout->addWidget(formatLabel, 0, 0); - mainLayout->addWidget(formatComboBox, 0, 1); - mainLayout->addWidget(scopeLabel, 1, 0); - mainLayout->addWidget(scopeComboBox, 1, 1); - mainLayout->addWidget(organizationLabel, 2, 0); - mainLayout->addWidget(organizationComboBox, 2, 1); - mainLayout->addWidget(applicationLabel, 3, 0); - mainLayout->addWidget(applicationComboBox, 3, 1); - mainLayout->addWidget(locationsGroupBox, 4, 0, 1, 2); - mainLayout->addWidget(buttonBox, 5, 0, 1, 2); - setLayout(mainLayout); - - updateLocationsTable(); - - setWindowTitle(tr("Open Application Settings")); - resize(650, 400); -} - -QSettings::Format LocationDialog::format() const -{ - if (formatComboBox->currentIndex() == 0) - return QSettings::NativeFormat; - else - return QSettings::IniFormat; -} - -QSettings::Scope LocationDialog::scope() const -{ - if (scopeComboBox->currentIndex() == 0) - return QSettings::UserScope; - else - return QSettings::SystemScope; -} - -QString LocationDialog::organization() const -{ - return organizationComboBox->currentText(); -} - -QString LocationDialog::application() const -{ - if (applicationComboBox->currentText() == tr("Any")) - return ""; - else - return applicationComboBox->currentText(); -} - -void LocationDialog::updateLocationsTable() -{ - locationsTable->setUpdatesEnabled(false); - locationsTable->setRowCount(0); - - for (int i = 0; i < 2; ++i) { - if (i == 0 && scope() == QSettings::SystemScope) - continue; - - QSettings::Scope actualScope = (i == 0) ? QSettings::UserScope - : QSettings::SystemScope; - for (int j = 0; j < 2; ++j) { - if (j == 0 && application().isEmpty()) - continue; - - QString actualApplication; - if (j == 0) - actualApplication = application(); - QSettings settings(format(), actualScope, organization(), - actualApplication); - - int row = locationsTable->rowCount(); - locationsTable->setRowCount(row + 1); - - QTableWidgetItem *item0 = new QTableWidgetItem; - item0->setText(settings.fileName()); - - QTableWidgetItem *item1 = new QTableWidgetItem; - bool disable = (settings.childKeys().isEmpty() - && settings.childGroups().isEmpty()); - - if (row == 0) { - if (settings.isWritable()) { - item1->setText(tr("Read-write")); - disable = false; - } else { - item1->setText(tr("Read-only")); - } - buttonBox->button(QDialogButtonBox::Ok)->setDisabled(disable); - } else { - item1->setText(tr("Read-only fallback")); - } - - if (disable) { - item0->setFlags(item0->flags() & ~Qt::ItemIsEnabled); - item1->setFlags(item1->flags() & ~Qt::ItemIsEnabled); - } - - locationsTable->setItem(row, 0, item0); - locationsTable->setItem(row, 1, item1); - } - } - locationsTable->setUpdatesEnabled(true); -} diff --git a/examples/tools/settingseditor/locationdialog.h b/examples/tools/settingseditor/locationdialog.h deleted file mode 100644 index e9bf2bfbda..0000000000 --- a/examples/tools/settingseditor/locationdialog.h +++ /dev/null @@ -1,84 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/legal -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names -** of its contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef LOCATIONDIALOG_H -#define LOCATIONDIALOG_H - -#include <QDialog> -#include <QSettings> - -QT_BEGIN_NAMESPACE -class QComboBox; -class QDialogButtonBox; -class QGroupBox; -class QLabel; -class QTableWidget; -QT_END_NAMESPACE - -class LocationDialog : public QDialog -{ - Q_OBJECT - -public: - LocationDialog(QWidget *parent = 0); - - QSettings::Format format() const; - QSettings::Scope scope() const; - QString organization() const; - QString application() const; - -private slots: - void updateLocationsTable(); - -private: - QLabel *formatLabel; - QLabel *scopeLabel; - QLabel *organizationLabel; - QLabel *applicationLabel; - QComboBox *formatComboBox; - QComboBox *scopeComboBox; - QComboBox *organizationComboBox; - QComboBox *applicationComboBox; - QGroupBox *locationsGroupBox; - QTableWidget *locationsTable; - QDialogButtonBox *buttonBox; -}; - -#endif diff --git a/examples/tools/settingseditor/main.cpp b/examples/tools/settingseditor/main.cpp deleted file mode 100644 index f03543e449..0000000000 --- a/examples/tools/settingseditor/main.cpp +++ /dev/null @@ -1,51 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/legal -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names -** of its contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include <QApplication> - -#include "mainwindow.h" - -int main(int argc, char *argv[]) -{ - QApplication app(argc, argv); - MainWindow mainWin; - mainWin.show(); - return app.exec(); -} diff --git a/examples/tools/settingseditor/mainwindow.cpp b/examples/tools/settingseditor/mainwindow.cpp deleted file mode 100644 index e899f6021f..0000000000 --- a/examples/tools/settingseditor/mainwindow.cpp +++ /dev/null @@ -1,222 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/legal -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names -** of its contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include <QtWidgets> - -#include "locationdialog.h" -#include "mainwindow.h" -#include "settingstree.h" - -MainWindow::MainWindow() -{ - settingsTree = new SettingsTree; - setCentralWidget(settingsTree); - - locationDialog = 0; - - createActions(); - createMenus(); - - autoRefreshAct->setChecked(true); - fallbacksAct->setChecked(true); - - setWindowTitle(tr("Settings Editor")); - resize(500, 600); -} - -void MainWindow::openSettings() -{ - if (!locationDialog) - locationDialog = new LocationDialog(this); - - if (locationDialog->exec()) { - QSettings *settings = new QSettings(locationDialog->format(), - locationDialog->scope(), - locationDialog->organization(), - locationDialog->application()); - setSettingsObject(settings); - fallbacksAct->setEnabled(true); - } -} - -void MainWindow::openIniFile() -{ - QString fileName = QFileDialog::getOpenFileName(this, tr("Open INI File"), - "", tr("INI Files (*.ini *.conf)")); - if (!fileName.isEmpty()) { - QSettings *settings = new QSettings(fileName, QSettings::IniFormat); - setSettingsObject(settings); - fallbacksAct->setEnabled(false); - } -} - -void MainWindow::openPropertyList() -{ - QString fileName = QFileDialog::getOpenFileName(this, - tr("Open Property List"), - "", tr("Property List Files (*.plist)")); - if (!fileName.isEmpty()) { - QSettings *settings = new QSettings(fileName, QSettings::NativeFormat); - setSettingsObject(settings); - fallbacksAct->setEnabled(false); - } -} - -void MainWindow::openRegistryPath() -{ - QString path = QInputDialog::getText(this, tr("Open Registry Path"), - tr("Enter the path in the Windows registry:"), - QLineEdit::Normal, "HKEY_CURRENT_USER\\"); - if (!path.isEmpty()) { - QSettings *settings = new QSettings(path, QSettings::NativeFormat); - setSettingsObject(settings); - fallbacksAct->setEnabled(false); - } -} - -void MainWindow::about() -{ - QMessageBox::about(this, tr("About Settings Editor"), - tr("The <b>Settings Editor</b> example shows how to access " - "application settings using Qt.")); -} - -void MainWindow::createActions() -{ - openSettingsAct = new QAction(tr("&Open Application Settings..."), this); - openSettingsAct->setShortcuts(QKeySequence::Open); - connect(openSettingsAct, SIGNAL(triggered()), this, SLOT(openSettings())); - - openIniFileAct = new QAction(tr("Open I&NI File..."), this); - openIniFileAct->setShortcut(tr("Ctrl+N")); - connect(openIniFileAct, SIGNAL(triggered()), this, SLOT(openIniFile())); - - openPropertyListAct = new QAction(tr("Open Mac &Property List..."), this); - openPropertyListAct->setShortcut(tr("Ctrl+P")); - connect(openPropertyListAct, SIGNAL(triggered()), - this, SLOT(openPropertyList())); - - openRegistryPathAct = new QAction(tr("Open Windows &Registry Path..."), - this); - openRegistryPathAct->setShortcut(tr("Ctrl+G")); - connect(openRegistryPathAct, SIGNAL(triggered()), - this, SLOT(openRegistryPath())); - - refreshAct = new QAction(tr("&Refresh"), this); - refreshAct->setShortcut(tr("Ctrl+R")); - refreshAct->setEnabled(false); - connect(refreshAct, SIGNAL(triggered()), settingsTree, SLOT(refresh())); - - exitAct = new QAction(tr("E&xit"), this); - exitAct->setShortcuts(QKeySequence::Quit); - connect(exitAct, SIGNAL(triggered()), this, SLOT(close())); - - autoRefreshAct = new QAction(tr("&Auto-Refresh"), this); - autoRefreshAct->setShortcut(tr("Ctrl+A")); - autoRefreshAct->setCheckable(true); - autoRefreshAct->setEnabled(false); - connect(autoRefreshAct, SIGNAL(triggered(bool)), - settingsTree, SLOT(setAutoRefresh(bool))); - connect(autoRefreshAct, SIGNAL(triggered(bool)), - refreshAct, SLOT(setDisabled(bool))); - - fallbacksAct = new QAction(tr("&Fallbacks"), this); - fallbacksAct->setShortcut(tr("Ctrl+F")); - fallbacksAct->setCheckable(true); - fallbacksAct->setEnabled(false); - connect(fallbacksAct, SIGNAL(triggered(bool)), - settingsTree, SLOT(setFallbacksEnabled(bool))); - - aboutAct = new QAction(tr("&About"), this); - connect(aboutAct, SIGNAL(triggered()), this, SLOT(about())); - - aboutQtAct = new QAction(tr("About &Qt"), this); - connect(aboutQtAct, SIGNAL(triggered()), qApp, SLOT(aboutQt())); - -#ifndef Q_OS_MAC - openPropertyListAct->setEnabled(false); -#endif -#ifndef Q_OS_WIN - openRegistryPathAct->setEnabled(false); -#endif -} - -void MainWindow::createMenus() -{ - fileMenu = menuBar()->addMenu(tr("&File")); - fileMenu->addAction(openSettingsAct); - fileMenu->addAction(openIniFileAct); - fileMenu->addAction(openPropertyListAct); - fileMenu->addAction(openRegistryPathAct); - fileMenu->addSeparator(); - fileMenu->addAction(refreshAct); - fileMenu->addSeparator(); - fileMenu->addAction(exitAct); - - optionsMenu = menuBar()->addMenu(tr("&Options")); - optionsMenu->addAction(autoRefreshAct); - optionsMenu->addAction(fallbacksAct); - - menuBar()->addSeparator(); - - helpMenu = menuBar()->addMenu(tr("&Help")); - helpMenu->addAction(aboutAct); - helpMenu->addAction(aboutQtAct); -} - -void MainWindow::setSettingsObject(QSettings *settings) -{ - settings->setFallbacksEnabled(fallbacksAct->isChecked()); - settingsTree->setSettingsObject(settings); - - refreshAct->setEnabled(true); - autoRefreshAct->setEnabled(true); - - QString niceName = settings->fileName(); - niceName.replace("\\", "/"); - int pos = niceName.lastIndexOf("/"); - if (pos != -1) - niceName.remove(0, pos + 1); - - if (!settings->isWritable()) - niceName = tr("%1 (read only)").arg(niceName); - - setWindowTitle(tr("%1 - %2").arg(niceName).arg(tr("Settings Editor"))); -} diff --git a/examples/tools/settingseditor/mainwindow.h b/examples/tools/settingseditor/mainwindow.h deleted file mode 100644 index febbbe9078..0000000000 --- a/examples/tools/settingseditor/mainwindow.h +++ /dev/null @@ -1,91 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/legal -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names -** of its contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef MAINWINDOW_H -#define MAINWINDOW_H - -#include <QMainWindow> - -QT_BEGIN_NAMESPACE -class QAction; -class QMenu; -class QSettings; -QT_END_NAMESPACE -class LocationDialog; -class SettingsTree; - -class MainWindow : public QMainWindow -{ - Q_OBJECT - -public: - MainWindow(); - -private slots: - void openSettings(); - void openIniFile(); - void openPropertyList(); - void openRegistryPath(); - void about(); - -private: - void createActions(); - void createMenus(); - void setSettingsObject(QSettings *settings); - - SettingsTree *settingsTree; - LocationDialog *locationDialog; - - QMenu *fileMenu; - QMenu *optionsMenu; - QMenu *helpMenu; - QAction *openSettingsAct; - QAction *openIniFileAct; - QAction *openPropertyListAct; - QAction *openRegistryPathAct; - QAction *refreshAct; - QAction *exitAct; - QAction *autoRefreshAct; - QAction *fallbacksAct; - QAction *aboutAct; - QAction *aboutQtAct; -}; - -#endif diff --git a/examples/tools/settingseditor/settingseditor.desktop b/examples/tools/settingseditor/settingseditor.desktop deleted file mode 100644 index b8561a6f3a..0000000000 --- a/examples/tools/settingseditor/settingseditor.desktop +++ /dev/null @@ -1,11 +0,0 @@ -[Desktop Entry] -Encoding=UTF-8 -Version=1.0 -Type=Application -Terminal=false -Name=Settings Editor -Exec=/opt/usr/bin/settingseditor -Icon=settingseditor -X-Window-Icon= -X-HildonDesk-ShowInToolbar=true -X-Osso-Type=application/x-executable diff --git a/examples/tools/settingseditor/settingseditor.pro b/examples/tools/settingseditor/settingseditor.pro deleted file mode 100644 index 2499b22436..0000000000 --- a/examples/tools/settingseditor/settingseditor.pro +++ /dev/null @@ -1,19 +0,0 @@ -HEADERS = locationdialog.h \ - mainwindow.h \ - settingstree.h \ - variantdelegate.h -SOURCES = locationdialog.cpp \ - main.cpp \ - mainwindow.cpp \ - settingstree.cpp \ - variantdelegate.cpp - -# install -target.path = $$[QT_INSTALL_EXAMPLES]/tools/settingseditor -sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS settingseditor.pro inifiles -sources.path = $$[QT_INSTALL_EXAMPLES]/tools/settingseditor -INSTALLS += target sources - -QT += widgets - -simulator: warning(This example might not fully work on Simulator platform) diff --git a/examples/tools/settingseditor/settingstree.cpp b/examples/tools/settingseditor/settingstree.cpp deleted file mode 100644 index 050473e777..0000000000 --- a/examples/tools/settingseditor/settingstree.cpp +++ /dev/null @@ -1,262 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/legal -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names -** of its contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include <QtWidgets> - -#include "settingstree.h" -#include "variantdelegate.h" - -SettingsTree::SettingsTree(QWidget *parent) - : QTreeWidget(parent) -{ - setItemDelegate(new VariantDelegate(this)); - - QStringList labels; - labels << tr("Setting") << tr("Type") << tr("Value"); - setHeaderLabels(labels); - header()->setSectionResizeMode(0, QHeaderView::Stretch); - header()->setSectionResizeMode(2, QHeaderView::Stretch); - - settings = 0; - refreshTimer.setInterval(2000); - autoRefresh = false; - - groupIcon.addPixmap(style()->standardPixmap(QStyle::SP_DirClosedIcon), - QIcon::Normal, QIcon::Off); - groupIcon.addPixmap(style()->standardPixmap(QStyle::SP_DirOpenIcon), - QIcon::Normal, QIcon::On); - keyIcon.addPixmap(style()->standardPixmap(QStyle::SP_FileIcon)); - - connect(&refreshTimer, SIGNAL(timeout()), this, SLOT(maybeRefresh())); -} - -void SettingsTree::setSettingsObject(QSettings *settings) -{ - delete this->settings; - this->settings = settings; - clear(); - - if (settings) { - settings->setParent(this); - refresh(); - if (autoRefresh) - refreshTimer.start(); - } else { - refreshTimer.stop(); - } -} - -QSize SettingsTree::sizeHint() const -{ - return QSize(800, 600); -} - -void SettingsTree::setAutoRefresh(bool autoRefresh) -{ - this->autoRefresh = autoRefresh; - if (settings) { - if (autoRefresh) { - maybeRefresh(); - refreshTimer.start(); - } else { - refreshTimer.stop(); - } - } -} - -void SettingsTree::setFallbacksEnabled(bool enabled) -{ - if (settings) { - settings->setFallbacksEnabled(enabled); - refresh(); - } -} - -void SettingsTree::maybeRefresh() -{ - if (state() != EditingState) - refresh(); -} - -void SettingsTree::refresh() -{ - if (!settings) - return; - - disconnect(this, SIGNAL(itemChanged(QTreeWidgetItem*,int)), - this, SLOT(updateSetting(QTreeWidgetItem*))); - - settings->sync(); - updateChildItems(0); - - connect(this, SIGNAL(itemChanged(QTreeWidgetItem*,int)), - this, SLOT(updateSetting(QTreeWidgetItem*))); -} - -bool SettingsTree::event(QEvent *event) -{ - if (event->type() == QEvent::WindowActivate) { - if (isActiveWindow() && autoRefresh) - maybeRefresh(); - } - return QTreeWidget::event(event); -} - -void SettingsTree::updateSetting(QTreeWidgetItem *item) -{ - QString key = item->text(0); - QTreeWidgetItem *ancestor = item->parent(); - while (ancestor) { - key.prepend(ancestor->text(0) + "/"); - ancestor = ancestor->parent(); - } - - settings->setValue(key, item->data(2, Qt::UserRole)); - if (autoRefresh) - refresh(); -} - -void SettingsTree::updateChildItems(QTreeWidgetItem *parent) -{ - int dividerIndex = 0; - - foreach (QString group, settings->childGroups()) { - QTreeWidgetItem *child; - int childIndex = findChild(parent, group, dividerIndex); - if (childIndex != -1) { - child = childAt(parent, childIndex); - child->setText(1, ""); - child->setText(2, ""); - child->setData(2, Qt::UserRole, QVariant()); - moveItemForward(parent, childIndex, dividerIndex); - } else { - child = createItem(group, parent, dividerIndex); - } - child->setIcon(0, groupIcon); - ++dividerIndex; - - settings->beginGroup(group); - updateChildItems(child); - settings->endGroup(); - } - - foreach (QString key, settings->childKeys()) { - QTreeWidgetItem *child; - int childIndex = findChild(parent, key, 0); - - if (childIndex == -1 || childIndex >= dividerIndex) { - if (childIndex != -1) { - child = childAt(parent, childIndex); - for (int i = 0; i < child->childCount(); ++i) - delete childAt(child, i); - moveItemForward(parent, childIndex, dividerIndex); - } else { - child = createItem(key, parent, dividerIndex); - } - child->setIcon(0, keyIcon); - ++dividerIndex; - } else { - child = childAt(parent, childIndex); - } - - QVariant value = settings->value(key); - if (value.type() == QVariant::Invalid) { - child->setText(1, "Invalid"); - } else { - child->setText(1, value.typeName()); - } - child->setText(2, VariantDelegate::displayText(value)); - child->setData(2, Qt::UserRole, value); - } - - while (dividerIndex < childCount(parent)) - delete childAt(parent, dividerIndex); -} - -QTreeWidgetItem *SettingsTree::createItem(const QString &text, - QTreeWidgetItem *parent, int index) -{ - QTreeWidgetItem *after = 0; - if (index != 0) - after = childAt(parent, index - 1); - - QTreeWidgetItem *item; - if (parent) - item = new QTreeWidgetItem(parent, after); - else - item = new QTreeWidgetItem(this, after); - - item->setText(0, text); - item->setFlags(item->flags() | Qt::ItemIsEditable); - return item; -} - -QTreeWidgetItem *SettingsTree::childAt(QTreeWidgetItem *parent, int index) -{ - if (parent) - return parent->child(index); - else - return topLevelItem(index); -} - -int SettingsTree::childCount(QTreeWidgetItem *parent) -{ - if (parent) - return parent->childCount(); - else - return topLevelItemCount(); -} - -int SettingsTree::findChild(QTreeWidgetItem *parent, const QString &text, - int startIndex) -{ - for (int i = startIndex; i < childCount(parent); ++i) { - if (childAt(parent, i)->text(0) == text) - return i; - } - return -1; -} - -void SettingsTree::moveItemForward(QTreeWidgetItem *parent, int oldIndex, - int newIndex) -{ - for (int i = 0; i < oldIndex - newIndex; ++i) - delete childAt(parent, newIndex); -} diff --git a/examples/tools/settingseditor/settingstree.h b/examples/tools/settingseditor/settingstree.h deleted file mode 100644 index 60086c3c38..0000000000 --- a/examples/tools/settingseditor/settingstree.h +++ /dev/null @@ -1,90 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/legal -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names -** of its contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef SETTINGSTREE_H -#define SETTINGSTREE_H - -#include <QIcon> -#include <QTimer> -#include <QTreeWidget> - -QT_BEGIN_NAMESPACE -class QSettings; -QT_END_NAMESPACE - -class SettingsTree : public QTreeWidget -{ - Q_OBJECT - -public: - SettingsTree(QWidget *parent = 0); - - void setSettingsObject(QSettings *settings); - QSize sizeHint() const; - -public slots: - void setAutoRefresh(bool autoRefresh); - void setFallbacksEnabled(bool enabled); - void maybeRefresh(); - void refresh(); - -protected: - bool event(QEvent *event); - -private slots: - void updateSetting(QTreeWidgetItem *item); - -private: - void updateChildItems(QTreeWidgetItem *parent); - QTreeWidgetItem *createItem(const QString &text, QTreeWidgetItem *parent, - int index); - QTreeWidgetItem *childAt(QTreeWidgetItem *parent, int index); - int childCount(QTreeWidgetItem *parent); - int findChild(QTreeWidgetItem *parent, const QString &text, int startIndex); - void moveItemForward(QTreeWidgetItem *parent, int oldIndex, int newIndex); - - QSettings *settings; - QTimer refreshTimer; - bool autoRefresh; - QIcon groupIcon; - QIcon keyIcon; -}; - -#endif diff --git a/examples/tools/settingseditor/variantdelegate.cpp b/examples/tools/settingseditor/variantdelegate.cpp deleted file mode 100644 index 7b1da5a863..0000000000 --- a/examples/tools/settingseditor/variantdelegate.cpp +++ /dev/null @@ -1,316 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/legal -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names -** of its contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include <QtWidgets> - -#include "variantdelegate.h" - -VariantDelegate::VariantDelegate(QObject *parent) - : QItemDelegate(parent) -{ - boolExp.setPattern("true|false"); - boolExp.setCaseSensitivity(Qt::CaseInsensitive); - - byteArrayExp.setPattern("[\\x00-\\xff]*"); - charExp.setPattern("."); - colorExp.setPattern("\\(([0-9]*),([0-9]*),([0-9]*),([0-9]*)\\)"); - doubleExp.setPattern(""); - pointExp.setPattern("\\((-?[0-9]*),(-?[0-9]*)\\)"); - rectExp.setPattern("\\((-?[0-9]*),(-?[0-9]*),(-?[0-9]*),(-?[0-9]*)\\)"); - signedIntegerExp.setPattern("-?[0-9]*"); - sizeExp = pointExp; - unsignedIntegerExp.setPattern("[0-9]*"); - - dateExp.setPattern("([0-9]{,4})-([0-9]{,2})-([0-9]{,2})"); - timeExp.setPattern("([0-9]{,2}):([0-9]{,2}):([0-9]{,2})"); - dateTimeExp.setPattern(dateExp.pattern() + "T" + timeExp.pattern()); -} - -void VariantDelegate::paint(QPainter *painter, - const QStyleOptionViewItem &option, - const QModelIndex &index) const -{ - if (index.column() == 2) { - QVariant value = index.model()->data(index, Qt::UserRole); - if (!isSupportedType(value.type())) { - QStyleOptionViewItem myOption = option; - myOption.state &= ~QStyle::State_Enabled; - QItemDelegate::paint(painter, myOption, index); - return; - } - } - - QItemDelegate::paint(painter, option, index); -} - -QWidget *VariantDelegate::createEditor(QWidget *parent, - const QStyleOptionViewItem & /* option */, - const QModelIndex &index) const -{ - if (index.column() != 2) - return 0; - - QVariant originalValue = index.model()->data(index, Qt::UserRole); - if (!isSupportedType(originalValue.type())) - return 0; - - QLineEdit *lineEdit = new QLineEdit(parent); - lineEdit->setFrame(false); - - QRegExp regExp; - - switch (originalValue.type()) { - case QVariant::Bool: - regExp = boolExp; - break; - case QVariant::ByteArray: - regExp = byteArrayExp; - break; - case QVariant::Char: - regExp = charExp; - break; - case QVariant::Color: - regExp = colorExp; - break; - case QVariant::Date: - regExp = dateExp; - break; - case QVariant::DateTime: - regExp = dateTimeExp; - break; - case QVariant::Double: - regExp = doubleExp; - break; - case QVariant::Int: - case QVariant::LongLong: - regExp = signedIntegerExp; - break; - case QVariant::Point: - regExp = pointExp; - break; - case QVariant::Rect: - regExp = rectExp; - break; - case QVariant::Size: - regExp = sizeExp; - break; - case QVariant::Time: - regExp = timeExp; - break; - case QVariant::UInt: - case QVariant::ULongLong: - regExp = unsignedIntegerExp; - break; - default: - ; - } - - if (!regExp.isEmpty()) { - QValidator *validator = new QRegExpValidator(regExp, lineEdit); - lineEdit->setValidator(validator); - } - - return lineEdit; -} - -void VariantDelegate::setEditorData(QWidget *editor, - const QModelIndex &index) const -{ - QVariant value = index.model()->data(index, Qt::UserRole); - if (QLineEdit *lineEdit = qobject_cast<QLineEdit *>(editor)) - lineEdit->setText(displayText(value)); -} - -void VariantDelegate::setModelData(QWidget *editor, QAbstractItemModel *model, - const QModelIndex &index) const -{ - QLineEdit *lineEdit = qobject_cast<QLineEdit *>(editor); - if (!lineEdit->isModified()) - return; - - QString text = lineEdit->text(); - const QValidator *validator = lineEdit->validator(); - if (validator) { - int pos; - if (validator->validate(text, pos) != QValidator::Acceptable) - return; - } - - QVariant originalValue = index.model()->data(index, Qt::UserRole); - QVariant value; - - switch (originalValue.type()) { - case QVariant::Char: - value = text.at(0); - break; - case QVariant::Color: - colorExp.exactMatch(text); - value = QColor(qMin(colorExp.cap(1).toInt(), 255), - qMin(colorExp.cap(2).toInt(), 255), - qMin(colorExp.cap(3).toInt(), 255), - qMin(colorExp.cap(4).toInt(), 255)); - break; - case QVariant::Date: - { - QDate date = QDate::fromString(text, Qt::ISODate); - if (!date.isValid()) - return; - value = date; - } - break; - case QVariant::DateTime: - { - QDateTime dateTime = QDateTime::fromString(text, Qt::ISODate); - if (!dateTime.isValid()) - return; - value = dateTime; - } - break; - case QVariant::Point: - pointExp.exactMatch(text); - value = QPoint(pointExp.cap(1).toInt(), pointExp.cap(2).toInt()); - break; - case QVariant::Rect: - rectExp.exactMatch(text); - value = QRect(rectExp.cap(1).toInt(), rectExp.cap(2).toInt(), - rectExp.cap(3).toInt(), rectExp.cap(4).toInt()); - break; - case QVariant::Size: - sizeExp.exactMatch(text); - value = QSize(sizeExp.cap(1).toInt(), sizeExp.cap(2).toInt()); - break; - case QVariant::StringList: - value = text.split(","); - break; - case QVariant::Time: - { - QTime time = QTime::fromString(text, Qt::ISODate); - if (!time.isValid()) - return; - value = time; - } - break; - default: - value = text; - value.convert(originalValue.type()); - } - - model->setData(index, displayText(value), Qt::DisplayRole); - model->setData(index, value, Qt::UserRole); -} - -bool VariantDelegate::isSupportedType(QVariant::Type type) -{ - switch (type) { - case QVariant::Bool: - case QVariant::ByteArray: - case QVariant::Char: - case QVariant::Color: - case QVariant::Date: - case QVariant::DateTime: - case QVariant::Double: - case QVariant::Int: - case QVariant::LongLong: - case QVariant::Point: - case QVariant::Rect: - case QVariant::Size: - case QVariant::String: - case QVariant::StringList: - case QVariant::Time: - case QVariant::UInt: - case QVariant::ULongLong: - return true; - default: - return false; - } -} - -QString VariantDelegate::displayText(const QVariant &value) -{ - switch (value.type()) { - case QVariant::Bool: - case QVariant::ByteArray: - case QVariant::Char: - case QVariant::Double: - case QVariant::Int: - case QVariant::LongLong: - case QVariant::String: - case QVariant::UInt: - case QVariant::ULongLong: - return value.toString(); - case QVariant::Color: - { - QColor color = qvariant_cast<QColor>(value); - return QString("(%1,%2,%3,%4)") - .arg(color.red()).arg(color.green()) - .arg(color.blue()).arg(color.alpha()); - } - case QVariant::Date: - return value.toDate().toString(Qt::ISODate); - case QVariant::DateTime: - return value.toDateTime().toString(Qt::ISODate); - case QVariant::Invalid: - return "<Invalid>"; - case QVariant::Point: - { - QPoint point = value.toPoint(); - return QString("(%1,%2)").arg(point.x()).arg(point.y()); - } - case QVariant::Rect: - { - QRect rect = value.toRect(); - return QString("(%1,%2,%3,%4)") - .arg(rect.x()).arg(rect.y()) - .arg(rect.width()).arg(rect.height()); - } - case QVariant::Size: - { - QSize size = value.toSize(); - return QString("(%1,%2)").arg(size.width()).arg(size.height()); - } - case QVariant::StringList: - return value.toStringList().join(','); - case QVariant::Time: - return value.toTime().toString(Qt::ISODate); - default: - break; - } - return QString("<%1>").arg(value.typeName()); -} diff --git a/examples/tools/settingseditor/variantdelegate.h b/examples/tools/settingseditor/variantdelegate.h deleted file mode 100644 index a886f7938a..0000000000 --- a/examples/tools/settingseditor/variantdelegate.h +++ /dev/null @@ -1,81 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/legal -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names -** of its contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef VARIANTDELEGATE_H -#define VARIANTDELEGATE_H - -#include <QItemDelegate> -#include <QRegExp> - -class VariantDelegate : public QItemDelegate -{ - Q_OBJECT - -public: - VariantDelegate(QObject *parent = 0); - - void paint(QPainter *painter, const QStyleOptionViewItem &option, - const QModelIndex &index) const; - QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option, - const QModelIndex &index) const; - void setEditorData(QWidget *editor, const QModelIndex &index) const; - void setModelData(QWidget *editor, QAbstractItemModel *model, - const QModelIndex &index) const; - - static bool isSupportedType(QVariant::Type type); - static QString displayText(const QVariant &value); - -private: - mutable QRegExp boolExp; - mutable QRegExp byteArrayExp; - mutable QRegExp charExp; - mutable QRegExp colorExp; - mutable QRegExp dateExp; - mutable QRegExp dateTimeExp; - mutable QRegExp doubleExp; - mutable QRegExp pointExp; - mutable QRegExp rectExp; - mutable QRegExp signedIntegerExp; - mutable QRegExp sizeExp; - mutable QRegExp timeExp; - mutable QRegExp unsignedIntegerExp; -}; - -#endif |