diff --git a/src/plugins/qmldesigner/components/integration/documentcloser.cpp b/src/plugins/qmldesigner/components/integration/documentcloser.cpp deleted file mode 100644 index dbbe6f7edcb..00000000000 --- a/src/plugins/qmldesigner/components/integration/documentcloser.cpp +++ /dev/null @@ -1,139 +0,0 @@ -/************************************************************************** -** -** This file is part of Qt Creator -** -** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). -** -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** Commercial Usage -** -** Licensees holding valid Qt Commercial licenses may use this file in -** accordance with the Qt Commercial License Agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and Nokia. -** -** 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. -** -** If you are unsure which license is appropriate for your use, please -** contact the sales department at http://qt.nokia.com/contact. -** -**************************************************************************/ - -#include "documentcloser.h" - -#include -#include -#include - -#include - -#include "designdocumentcontroller.h" - -namespace QmlDesigner { - -DocumentCloser::DocumentCloser(): - m_quitWhenDone(false) -{ -} - -void DocumentCloser::close(DesignDocumentController* designDocument) -{ - DocumentCloser* closer = new DocumentCloser; - closer->m_designDocuments.append(designDocument); - closer->runClose(designDocument); -} - -void DocumentCloser::runClose(DesignDocumentController* designDocument) -{ - bool isDirty = designDocument->isDirty(); - -//#ifndef QT_NO_DEBUG -// isDirty=false; -//#endif - - if (isDirty) { - QMessageBox* msgBox = new QMessageBox(designDocument->documentWidget()); - QString txt = tr("Do you want to save the changes you made in the document \"%1\"?"); - QString shortFileName = QFileInfo(designDocument->fileName()).baseName(); - msgBox->setText(txt.arg(shortFileName)); - msgBox->setInformativeText(tr("Your changes will be lost if you don't save them.")); - msgBox->setIcon(QMessageBox::Question); - msgBox->setStandardButtons(QMessageBox::Save | QMessageBox::Discard | QMessageBox::Cancel); - msgBox->setDefaultButton(QMessageBox::Save); - msgBox->setEscapeButton(QMessageBox::Cancel); - msgBox->resize(451, 131); - msgBox->open(this, SLOT(choiceMade())); - } else { - designDocument->close(); - closeDone(); - } -} - -void DocumentCloser::choiceMade() -{ - QMessageBox* msgBox = dynamic_cast(sender()); - if (!msgBox) - return; - - switch (msgBox->result()) { - case QMessageBox::Save: - m_designDocuments.first()->save(); - - case QMessageBox::Discard: - m_designDocuments.first()->close(); - closeDone(); - break; - - case QMessageBox::Cancel: - default: - closeCancelled(); - } -} - -void DocumentCloser::closeCancelled() -{ - delete this; -} - -void DocumentCloser::closeDone() -{ - if (!m_designDocuments.isEmpty()) // should always be the case, but let's be safe. - m_designDocuments.removeFirst(); - - bool quit = m_quitWhenDone; - - if (m_designDocuments.isEmpty()) { - delete this; - - if (quit) { - qApp->quit(); - } - } else { - runClose(m_designDocuments.first().data()); - } -} - -void DocumentCloser::close(QList > designDocuments, bool quitWhenAllEditorsClosed) -{ - if (designDocuments.isEmpty()) { - if (quitWhenAllEditorsClosed) { - qApp->quit(); - } - } else { - DocumentCloser* closer = new DocumentCloser; - closer->m_designDocuments = designDocuments; - closer->m_quitWhenDone = quitWhenAllEditorsClosed; - closer->runClose(closer->m_designDocuments.first().data()); - } -} - -} // namespace QmlDesigner - diff --git a/src/plugins/qmldesigner/components/integration/documentcloser.h b/src/plugins/qmldesigner/components/integration/documentcloser.h deleted file mode 100644 index b69c234de1c..00000000000 --- a/src/plugins/qmldesigner/components/integration/documentcloser.h +++ /dev/null @@ -1,67 +0,0 @@ -/************************************************************************** -** -** This file is part of Qt Creator -** -** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). -** -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** Commercial Usage -** -** Licensees holding valid Qt Commercial licenses may use this file in -** accordance with the Qt Commercial License Agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and Nokia. -** -** 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. -** -** If you are unsure which license is appropriate for your use, please -** contact the sales department at http://qt.nokia.com/contact. -** -**************************************************************************/ - -#ifndef DOCUMENTCLOSER_H -#define DOCUMENTCLOSER_H - -#include -#include -#include - - -#include "designdocumentcontroller.h" - -namespace QmlDesigner { - -class DocumentCloser : public QObject -{ - Q_OBJECT - -public: - static void close(DesignDocumentController* designDocument); - static void close(QList > designDocuments, bool quitWhenAllEditorsClosed); - -private: - DocumentCloser(); - - void runClose(DesignDocumentController* designDocument); - void closeDone(); - void closeCancelled(); - -private slots: - void choiceMade(); - -private: - QList > m_designDocuments; - bool m_quitWhenDone; -}; - -} // namespace QmlDesigner - -#endif // DOCUMENTCLOSER_H diff --git a/src/plugins/qmldesigner/components/integration/integration.pri b/src/plugins/qmldesigner/components/integration/integration.pri index dab6c81c97e..d615e05e8a5 100644 --- a/src/plugins/qmldesigner/components/integration/integration.pri +++ b/src/plugins/qmldesigner/components/integration/integration.pri @@ -2,26 +2,22 @@ VPATH += $$PWD INCLUDEPATH += $$PWD SOURCES += \ integrationcore.cpp \ - multipledocumentscontroller.cpp \ designdocumentcontroller.cpp \ designdocumentcontrollerview.cpp \ utilitypanelcontroller.cpp \ stackedutilitypanelcontroller.cpp \ stateseditorcontroller.cpp \ - documentcloser.cpp \ componentaction.cpp \ componentview.cpp \ xuifiledialog.cpp HEADERS += \ integrationcore.h \ - multipledocumentscontroller.h \ designdocumentcontrollerview.h \ designdocumentcontroller.h \ utilitypanelcontroller.h \ stackedutilitypanelcontroller.h \ stateseditorcontroller.h \ - documentcloser.h \ componentaction.h \ componentview.h \ xuifiledialog.h diff --git a/src/plugins/qmldesigner/components/integration/multipledocumentscontroller.cpp b/src/plugins/qmldesigner/components/integration/multipledocumentscontroller.cpp deleted file mode 100644 index 24793e0746b..00000000000 --- a/src/plugins/qmldesigner/components/integration/multipledocumentscontroller.cpp +++ /dev/null @@ -1,353 +0,0 @@ -/************************************************************************** -** -** This file is part of Qt Creator -** -** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). -** -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** Commercial Usage -** -** Licensees holding valid Qt Commercial licenses may use this file in -** accordance with the Qt Commercial License Agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and Nokia. -** -** 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. -** -** If you are unsure which license is appropriate for your use, please -** contact the sales department at http://qt.nokia.com/contact. -** -**************************************************************************/ - -#include "multipledocumentscontroller.h" - -#include -#include -#include - -#include - -#include -#include "designdocumentcontroller.h" -#include "documentcloser.h" - - -namespace QmlDesigner { - -static QString createTitle(const QString& fileName) -{ - return QFileInfo(fileName).baseName(); -} - -MultipleDocumentsController::MultipleDocumentsController(QWidget* parent): - QObject(parent), - m_tabWidget(new QTabWidget), - m_undoAction(new QAction(tr("&Undo"), this)), - m_redoAction(new QAction(tr("&Redo"), this)) -{ - m_tabWidget->setDocumentMode(true); - m_tabWidget->setTabsClosable(true); - m_tabWidget->setMovable(true); - - connect(tabWidget(), SIGNAL(currentChanged(int)), this, SLOT(currentTabChanged(int))); - connect(tabWidget(), SIGNAL(tabCloseRequested(int)), this, SLOT(tabCloseRequested(int))); -} - -MultipleDocumentsController::~MultipleDocumentsController() -{ -} - -QTabWidget *MultipleDocumentsController::tabWidget() const -{ - return m_tabWidget.data(); -} - -DesignDocumentController* MultipleDocumentsController::findActiveDocument(QWidget* documentWidget) -{ - foreach (const QWeakPointer &controller, m_documentControllers) - if (controller->documentWidget() == documentWidget) - return controller.data(); - - return 0; -} - -void MultipleDocumentsController::rewireDocumentActions(DesignDocumentController* oldActiveDocument, DesignDocumentController* newActiveDocument) -{ - if (oldActiveDocument) { - disconnect(undoAction(), SIGNAL(triggered()), oldActiveDocument, SLOT(undo())); - disconnect(redoAction(), SIGNAL(triggered()), oldActiveDocument, SLOT(redo())); -#ifdef ENABLE_TEXT_VIEW - disconnect(m_showTextAction.data(), SIGNAL(triggered()), oldActiveDocument, SLOT(showText())); - disconnect(m_showFormAction.data(), SIGNAL(triggered()), oldActiveDocument, SLOT(showForm())); -#endif // ENABLE_TEXT_VIEW - } - - if (newActiveDocument) { - connect(undoAction(), SIGNAL(triggered()), newActiveDocument, SLOT(undo())); - connect(redoAction(), SIGNAL(triggered()), newActiveDocument, SLOT(redo())); -#ifdef ENABLE_TEXT_VIEW - connect(m_showTextAction.data(), SIGNAL(triggered()), newActiveDocument, SLOT(showText())); - connect(m_showFormAction.data(), SIGNAL(triggered()), newActiveDocument, SLOT(showForm())); - if (m_showTextAction->isChecked()) - newActiveDocument->showText(); - else - newActiveDocument->showForm(); -#endif // ENABLE_TEXT_VIEW - } -} - -void MultipleDocumentsController::currentTabChanged(int newCurrentTab) -{ - DesignDocumentController* oldActiveDocument = 0; - if (!m_documentControllers.isEmpty()) { - oldActiveDocument = m_documentControllers.first().data(); - } - - if (newCurrentTab == -1) { - emit activeDocumentChanged(0); - if (oldActiveDocument && oldActiveDocument->previewVisible()) - emit previewVisibilityChanged(false); - if (oldActiveDocument && oldActiveDocument->previewWithDebugVisible()) - emit previewWithDebugVisibilityChanged(false); - - if (oldActiveDocument) - rewireDocumentActions(oldActiveDocument, 0); - } else { - DesignDocumentController* newActiveDocument = findActiveDocument(m_tabWidget->currentWidget()); - m_undoAction->setEnabled(newActiveDocument->isUndoAvailable()); - m_redoAction->setEnabled(newActiveDocument->isRedoAvailable()); - - rewireDocumentActions(oldActiveDocument, newActiveDocument); - - m_documentControllers.removeOne(newActiveDocument); - m_documentControllers.prepend(newActiveDocument); - emit activeDocumentChanged(newActiveDocument); - if (oldActiveDocument && oldActiveDocument->previewVisible()) - emit previewVisibilityChanged(newActiveDocument->previewVisible()); - if (oldActiveDocument && oldActiveDocument->previewWithDebugVisible()) - emit previewWithDebugVisibilityChanged(newActiveDocument->previewWithDebugVisible()); - } -} - -void MultipleDocumentsController::tabCloseRequested(int tabIndex) -{ - DesignDocumentController* controller = findActiveDocument(m_tabWidget->widget(tabIndex)); - - if (controller) - DocumentCloser::close(controller); -} - -void MultipleDocumentsController::documentDisplayNameChanged(const QString &/*fileName*/) -{ - DesignDocumentController *documentController = qobject_cast(sender()); - Q_ASSERT(documentController); - documentDirtyStateChanged(documentController->isDirty()); -} - -void MultipleDocumentsController::documentDirtyStateChanged(bool newState) -{ - DesignDocumentController *documentController = qobject_cast(sender()); - Q_ASSERT(documentController); - - int tabIdx = m_tabWidget->indexOf(documentController->documentWidget()); - - if (newState) - m_tabWidget->setTabText(tabIdx, tr("* %1").arg(createTitle(documentController->displayName()))); - else - m_tabWidget->setTabText(tabIdx, createTitle(documentController->displayName())); -} - -void MultipleDocumentsController::documentUndoAvailable(bool isAvailable) -{ - DesignDocumentController *documentController = qobject_cast(sender()); - Q_ASSERT(documentController); - - if (m_documentControllers.first().data() == documentController) - m_undoAction->setEnabled(isAvailable); -} - -void MultipleDocumentsController::documentRedoAvailable(bool isAvailable) -{ - DesignDocumentController *documentController = qobject_cast(sender()); - Q_ASSERT(documentController); - - if (m_documentControllers.first().data() == documentController) - m_redoAction->setEnabled(isAvailable); -} - -void MultipleDocumentsController::documentPreviewVisibilityChanged(bool visible) -{ - DesignDocumentController *documentController = qobject_cast(sender()); - Q_ASSERT(documentController); - - if (m_documentControllers.first().data() == documentController) - emit previewVisibilityChanged(visible); -} - -void MultipleDocumentsController::documentPreviewWithDebugVisibilityChanged(bool visible) -{ - DesignDocumentController *documentController = qobject_cast(sender()); - Q_ASSERT(documentController); - - if (m_documentControllers.first().data() == documentController) - emit previewWithDebugVisibilityChanged(visible); -} - -void MultipleDocumentsController::open(DesignDocumentController* documentController) -{ - m_documentControllers.append(documentController); - - int newTabIndex = m_tabWidget->addTab(documentController->documentWidget(), createTitle(documentController->displayName())); - m_tabWidget->setCurrentIndex(newTabIndex); - - connect(documentController, SIGNAL(displayNameChanged(QString)), - this, SLOT(documentDisplayNameChanged(QString))); - connect(documentController, SIGNAL(dirtyStateChanged(bool)), - this, SLOT(documentDirtyStateChanged(bool))); - connect(documentController, SIGNAL(undoAvailable(bool)), - this, SLOT(documentUndoAvailable(bool))); - connect(documentController, SIGNAL(redoAvailable(bool)), - this, SLOT(documentRedoAvailable(bool))); - connect(documentController, SIGNAL(previewVisibilityChanged(bool)), - this, SLOT(documentPreviewVisibilityChanged(bool))); - connect(documentController, SIGNAL(previewWithDebugVisibilityChanged(bool)), - this, SLOT(documentPreviewWithDebugVisibilityChanged(bool))); - connect(documentController, SIGNAL(designDocumentClosed()), - this, SLOT(designDocumentClosed())); - connect(documentController, SIGNAL(qmlErrorsChanged(QList)), - this, SLOT(designDocumentError(QList))); - - emit documentCountChanged(m_documentControllers.size()); -} - -void MultipleDocumentsController::designDocumentClosed() -{ - DesignDocumentController *documentController = qobject_cast(sender()); - Q_ASSERT(documentController); - - rewireDocumentActions(documentController, 0); - - m_tabWidget->removeTab(m_tabWidget->indexOf(documentController->documentWidget())); - m_documentControllers.removeOne(documentController); - emit documentClosed(documentController); - emit documentCountChanged(m_documentControllers.size()); -} - -void MultipleDocumentsController::designDocumentError(const QList &error) -{ - DesignDocumentController *documentController = qobject_cast(sender()); - Q_ASSERT(documentController); - - if (error.isEmpty()) - return; - - QMessageBox msgBox(documentController->documentWidget()); - msgBox.setWindowFlags(Qt::Sheet | Qt::MSWindowsFixedSizeDialogHint); - msgBox.setWindowTitle("Invalid qml"); - msgBox.setText(error.first().toString()); - msgBox.setIcon(QMessageBox::Warning); - msgBox.exec(); -} - -void MultipleDocumentsController::doSave() -{ - if (!m_documentControllers.isEmpty()) - m_documentControllers.first()->save(dynamic_cast(parent())); -} - -void MultipleDocumentsController::doSaveAs() -{ - QWidget* parentWindow = dynamic_cast(parent()); - - if (!m_documentControllers.isEmpty()) - m_documentControllers.first()->saveAs(parentWindow); -} - -void MultipleDocumentsController::doPreview(bool visible) -{ - if (m_documentControllers.isEmpty()) - return; - - m_documentControllers.first()->togglePreview(visible); -} - -void MultipleDocumentsController::doPreviewWithDebug(bool visible) -{ - if (m_documentControllers.isEmpty()) - return; - - m_documentControllers.first()->toggleWithDebugPreview(visible); -} - -void MultipleDocumentsController::doDelete() -{ - m_documentControllers.first()->deleteSelected(); -} - -void MultipleDocumentsController::doCopy() -{ - m_documentControllers.first()->copySelected(); -} - -void MultipleDocumentsController::doCut() -{ - m_documentControllers.first()->cutSelected(); -} - -void MultipleDocumentsController::doPaste() -{ - m_documentControllers.first()->paste(); -} - -void MultipleDocumentsController::closeAll(bool quitWhenAllEditorsClosed) -{ - DocumentCloser::close(m_documentControllers, quitWhenAllEditorsClosed); -} - -QAction* MultipleDocumentsController::undoAction() -{ - return m_undoAction.data(); -} - -QAction* MultipleDocumentsController::redoAction() -{ - return m_redoAction.data(); -} - -#ifdef ENABLE_TEXT_VIEW -QAction* MultipleDocumentsController::showFormAction(QMenu* parent) -{ - if (!m_showFormAction) { - m_showFormAction = new QAction(tr("&Form"), parent); - m_showFormAction->setShortcut(QKeySequence("Ctrl+Shift+F")); - m_showFormAction->setCheckable(true); - } - - return m_showFormAction.data(); -} -#endif // ENABLE_TEXT_VIEW - -#ifdef ENABLE_TEXT_VIEW -QAction* MultipleDocumentsController::showTextAction(QMenu* parent) -{ - if (!m_showTextAction) { - m_showTextAction = new QAction(tr("&Text"), parent); - m_showTextAction->setShortcut(QKeySequence("Ctrl+Shift+T")); - m_showTextAction->setCheckable(true); - } - - return m_showTextAction.data(); -} - -#endif // ENABLE_TEXT_VIEW - -} // namespace QmlDesigner - diff --git a/src/plugins/qmldesigner/components/integration/multipledocumentscontroller.h b/src/plugins/qmldesigner/components/integration/multipledocumentscontroller.h deleted file mode 100644 index 84cf48bf656..00000000000 --- a/src/plugins/qmldesigner/components/integration/multipledocumentscontroller.h +++ /dev/null @@ -1,120 +0,0 @@ -/************************************************************************** -** -** This file is part of Qt Creator -** -** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). -** -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** Commercial Usage -** -** Licensees holding valid Qt Commercial licenses may use this file in -** accordance with the Qt Commercial License Agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and Nokia. -** -** 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. -** -** If you are unsure which license is appropriate for your use, please -** contact the sales department at http://qt.nokia.com/contact. -** -**************************************************************************/ - -#ifndef MultipleDocumentsController_h -#define MultipleDocumentsController_h - -#include - -#include -#include -#include -#include - -#include -#include -#include -#include - -class QDeclarativeError; - -namespace QmlDesigner { - -class DesignDocumentController; - -class MultipleDocumentsController : public QObject -{ - Q_OBJECT - -public: - MultipleDocumentsController(QWidget* parent = 0); // a bit of a hack - ~MultipleDocumentsController(); - - QTabWidget* tabWidget() const; - - QAction* undoAction(); - QAction* redoAction(); -#ifdef ENABLE_TEXT_VIEW - QAction* showFormAction(QMenu* parent); - QAction* showTextAction(QMenu* parent); -#endif // ENABLE_TEXT_VIEW - void open(DesignDocumentController* documentController); - void closeAll(bool quitWhenAllEditorsClosed); - unsigned activeDocumentCount() const { return m_documentControllers.size(); } - -signals: - void activeDocumentChanged(DesignDocumentController* documentController); - void documentClosed(DesignDocumentController* documentController); - void documentCountChanged(unsigned newDocumentCount); - - void previewVisibilityChanged(bool); - void previewWithDebugVisibilityChanged(bool); - -public slots: - void doSave(); - void doSaveAs(); - void doPreview(bool visible); - void doPreviewWithDebug(bool visible); - void doDelete(); - void doCopy(); - void doCut(); - void doPaste(); - - void documentDisplayNameChanged(const QString &fileName); - void documentDirtyStateChanged(bool newState); - void documentUndoAvailable(bool isAvailable); - void documentRedoAvailable(bool isAvailable); - void documentPreviewVisibilityChanged(bool visible); - void documentPreviewWithDebugVisibilityChanged(bool visible); - -protected slots: - void currentTabChanged(int newCurrentTab); - void tabCloseRequested(int tabIndex); - void designDocumentClosed(); - void designDocumentError(const QList &errors); - -private: - DesignDocumentController* findActiveDocument(QWidget* documentWidget); - void rewireDocumentActions(DesignDocumentController* oldActiveDocument, DesignDocumentController* newActiveDocument); - -private: - QWeakPointer m_tabWidget; - QWeakPointer m_undoAction; - QWeakPointer m_redoAction; -#ifdef ENABLE_TEXT_VIEW - QWeakPointer m_showTextAction; - QWeakPointer m_showFormAction; -#endif // ENABLE_TEXT_VIEW - - QList > m_documentControllers; -}; - -} // namespace QmlDesigner - -#endif // MultipleDocumentsController_h