summaryrefslogtreecommitdiff
path: root/src/shared/designerintegrationv2/widgethost.cpp
diff options
context:
space:
mode:
authorhjk <qtc-committer@nokia.com>2009-01-26 16:19:24 +0100
committerhjk <qtc-committer@nokia.com>2009-01-26 16:19:24 +0100
commitfe0533de2a634ca377c2d8a0073e0eb2cbf89abf (patch)
tree29d3d30e6cc5a1068a94097a5660bc4d133a205f /src/shared/designerintegrationv2/widgethost.cpp
parentc85ba53365d606192069a841ed806979f17d80bc (diff)
downloadqt-creator-fe0533de2a634ca377c2d8a0073e0eb2cbf89abf.tar.gz
Fixes: move all files in shared/* to src/shared/*
Diffstat (limited to 'src/shared/designerintegrationv2/widgethost.cpp')
-rw-r--r--src/shared/designerintegrationv2/widgethost.cpp109
1 files changed, 109 insertions, 0 deletions
diff --git a/src/shared/designerintegrationv2/widgethost.cpp b/src/shared/designerintegrationv2/widgethost.cpp
new file mode 100644
index 0000000000..bc5d6336e0
--- /dev/null
+++ b/src/shared/designerintegrationv2/widgethost.cpp
@@ -0,0 +1,109 @@
+/***************************************************************************
+**
+** This file is part of Qt Creator
+**
+** Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
+**
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+**
+** Non-Open Source Usage
+**
+** Licensees may use this file in accordance with the Qt Beta Version
+** License Agreement, Agreement version 2.2 provided with the Software or,
+** alternatively, in accordance with the terms contained in a written
+** agreement between you and Nokia.
+**
+** GNU General Public License Usage
+**
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License versions 2.0 or 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the packaging
+** of this file. Please review the following information to ensure GNU
+** General Public Licensing requirements will be met:
+**
+** http://www.fsf.org/licensing/licenses/info/GPLv2.html and
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt GPL Exception
+** version 1.3, included in the file GPL_EXCEPTION.txt in this package.
+**
+***************************************************************************/
+
+#include "widgethost.h"
+#include "formresizer.h"
+#include "widgethostconstants.h"
+
+#include <QtDesigner/QDesignerFormWindowInterface>
+#include <QtDesigner/QDesignerFormWindowCursorInterface>
+
+#include <QtGui/QPalette>
+#include <QtGui/QLayout>
+#include <QtGui/QFrame>
+#include <QtGui/QResizeEvent>
+#include <QtCore/QDebug>
+
+using namespace SharedTools;
+
+// ---------- WidgetHost
+WidgetHost::WidgetHost(QWidget *parent, QDesignerFormWindowInterface *formWindow) :
+ QScrollArea(parent),
+ m_formWindow(0),
+ m_formResizer(new Internal::FormResizer)
+{
+ setWidget(m_formResizer);
+ // Re-set flag (gets cleared by QScrollArea): Make the resize grip of a mainwindow form find the resizer as resizable window.
+ m_formResizer->setWindowFlags(m_formResizer->windowFlags() | Qt::SubWindow);
+ setFormWindow(formWindow);
+}
+
+WidgetHost::~WidgetHost()
+{
+ if (m_formWindow)
+ delete m_formWindow;
+}
+
+void WidgetHost::setFormWindow(QDesignerFormWindowInterface *fw)
+{
+ m_formWindow = fw;
+ if (!fw)
+ return;
+
+ m_formResizer->setFormWindow(fw);
+
+ setBackgroundRole(QPalette::Base);
+ m_formWindow->setAutoFillBackground(true);
+ m_formWindow->setBackgroundRole(QPalette::Background);
+
+ connect(m_formResizer, SIGNAL(formWindowSizeChanged(QRect, QRect)),
+ this, SLOT(fwSizeWasChanged(QRect, QRect)));
+}
+
+QSize WidgetHost::formWindowSize() const
+{
+ if (!m_formWindow || !m_formWindow->mainContainer())
+ return QSize();
+ return m_formWindow->mainContainer()->size();
+}
+
+void WidgetHost::fwSizeWasChanged(const QRect &, const QRect &)
+{
+ // newGeo is the mouse coordinates, thus moving the Right will actually emit wrong height
+ emit formWindowSizeChanged(formWindowSize().width(), formWindowSize().height());
+}
+
+void WidgetHost::updateFormWindowSelectionHandles(bool active)
+{
+ Internal::SelectionHandleState state = Internal::SelectionHandleOff;
+ const QDesignerFormWindowCursorInterface *cursor = m_formWindow->cursor();
+ if (cursor->isWidgetSelected(m_formWindow->mainContainer()))
+ state = active ? Internal::SelectionHandleActive : Internal::SelectionHandleInactive;
+
+ m_formResizer->setState(state);
+}
+
+QWidget *WidgetHost::integrationContainer() const
+{
+ return m_formResizer;
+}