aboutsummaryrefslogtreecommitdiffstats
path: root/src/tools/qml
diff options
context:
space:
mode:
authorKai Koehne <[email protected]>2010-09-02 12:23:26 +0200
committerKai Koehne <[email protected]>2010-09-03 12:29:41 +0200
commit580fbb1ae5d26df696cd34d8a7e919587b9a59dc (patch)
tree36fb72b81822aa67e4c66bcf3acc9645bad3ab75 /src/tools/qml
parent5f1d93c3039215c4db53b2745f0c3466f3e77921 (diff)
QmlObserver: Remove toolbar and make crumblepath an overlay
Try to make the observer mode less intrusive by removing the toolbar, and making the crumblepath only when mode is active / an overlay.
Diffstat (limited to 'src/tools/qml')
-rw-r--r--src/tools/qml/qmlobserver/qmlruntime.cpp46
-rw-r--r--src/tools/qml/qmlobserver/qmlruntime.qrc1
-rw-r--r--src/tools/qml/qmlobserver/toolbarstyle.css28
3 files changed, 34 insertions, 41 deletions
diff --git a/src/tools/qml/qmlobserver/qmlruntime.cpp b/src/tools/qml/qmlobserver/qmlruntime.cpp
index 4a7e9b880dc..4ebc3ae7637 100644
--- a/src/tools/qml/qmlobserver/qmlruntime.cpp
+++ b/src/tools/qml/qmlobserver/qmlruntime.cpp
@@ -528,6 +528,32 @@ QNetworkAccessManager *NetworkAccessManagerFactory::create(QObject *parent)
return manager;
}
+//
+// Event filter that ensures the crumble path width is always the canvas width
+//
+class CrumblePathResizer : public QObject
+{
+ Q_OBJECT
+public:
+ CrumblePathResizer(Utils::CrumblePath *crumblePathWidget, QObject *parent = 0) :
+ QObject(parent),
+ m_crumblePathWidget(crumblePathWidget)
+ {
+ }
+
+ bool eventFilter(QObject *obj, QEvent *event)
+ {
+ if (event->type() == QEvent::Resize) {
+ QResizeEvent *resizeEvent = static_cast<QResizeEvent *>(event);
+ m_crumblePathWidget->resize(resizeEvent->size().width(), m_crumblePathWidget->height());
+ }
+ return QObject::eventFilter(obj, event);
+ }
+
+private:
+ QWidget *m_crumblePathWidget;
+};
+
QString QDeclarativeViewer::getVideoFileName()
{
QString title = convertAvailable || ffmpegAvailable ? tr("Save Video File") : tr("Save PNG Frames");
@@ -587,27 +613,22 @@ QDeclarativeViewer::QDeclarativeViewer(QWidget *parent, Qt::WindowFlags flags)
canvas = new QmlViewer::QDeclarativeDesignView(this);
if (!(flags & Qt::FramelessWindowHint)) {
- addToolBar(Qt::TopToolBarArea, canvas->toolbar());
- canvas->toolbar()->setFloatable(false);
- canvas->toolbar()->setMovable(false);
-
- m_crumblePathWidget = new Utils::CrumblePath(this);
+ m_crumblePathWidget = new Utils::CrumblePath(canvas);
#ifndef Q_WS_MAC
- QFile file(":/toolbarstyle.css");
- file.open(QFile::ReadOnly);
- QString toolbarStylesheet = QLatin1String(file.readAll());
- canvas->toolbar()->setStyleSheet(toolbarStylesheet);
m_crumblePathWidget->setStyleSheet("QWidget { border-bottom: 1px solid black; }");
#endif
- }
+ m_crumblePathWidget->setVisible(canvas->designModeBehavior());
+ // CrumblePath is not in a layout, so that it overlays the central widget
+ // The event filter ensures that its width stays in sync nevertheless
+ CrumblePathResizer *resizer = new CrumblePathResizer(m_crumblePathWidget, m_crumblePathWidget);
+ canvas->installEventFilter(resizer);
+ }
m_centralWidget = new QWidget(this);
QVBoxLayout *layout = new QVBoxLayout(m_centralWidget);
layout->setMargin(0);
layout->setSpacing(0);
- if (m_crumblePathWidget)
- layout->addWidget(m_crumblePathWidget);
layout->addWidget(canvas);
@@ -626,6 +647,7 @@ QDeclarativeViewer::QDeclarativeViewer(QWidget *parent, Qt::WindowFlags flags)
QObject::connect(canvas, SIGNAL(inspectorContextPushed(QString)), m_crumblePathWidget, SLOT(pushElement(QString)));
QObject::connect(canvas, SIGNAL(inspectorContextPopped()), m_crumblePathWidget, SLOT(popElement()));
QObject::connect(m_crumblePathWidget, SIGNAL(elementClicked(int)), canvas, SLOT(setInspectorContext(int)));
+ QObject::connect(canvas, SIGNAL(designModeBehaviorChanged(bool)), m_crumblePathWidget, SLOT(setVisible(bool)));
}
QObject::connect(canvas->engine(), SIGNAL(quit()), QCoreApplication::instance (), SLOT(quit()));
diff --git a/src/tools/qml/qmlobserver/qmlruntime.qrc b/src/tools/qml/qmlobserver/qmlruntime.qrc
index e8d08c6356e..4136eafa526 100644
--- a/src/tools/qml/qmlobserver/qmlruntime.qrc
+++ b/src/tools/qml/qmlobserver/qmlruntime.qrc
@@ -5,6 +5,5 @@
<file>content/images/folder.png</file>
<file>content/images/titlebar.sci</file>
<file>content/images/titlebar.png</file>
- <file>toolbarstyle.css</file>
</qresource>
</RCC>
diff --git a/src/tools/qml/qmlobserver/toolbarstyle.css b/src/tools/qml/qmlobserver/toolbarstyle.css
deleted file mode 100644
index 8fbbdf9f875..00000000000
--- a/src/tools/qml/qmlobserver/toolbarstyle.css
+++ /dev/null
@@ -1,28 +0,0 @@
-QToolBar {
- background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 rgba(85, 85, 85, 255), stop:0.3 rgba(79, 79, 79, 255), stop:0.301 rgba(70, 70, 70, 255), stop:1 rgba(57, 57, 57, 255));
- color: #EEEEEE;
-}
-QToolBar::separator {
- width: 1px;
- border-right: 1px solid #6d6d6d;
- background: #414141;
-}
-QToolButton {
- border: none;
- padding-left:4px;
- padding-right:4px;
- padding-top:5px;
- padding-bottom:5px;
-}
-QToolButton:checked {
- border: none;
- padding-left:4px;
- padding-right:4px;
- padding-top:5px;
- padding-bottom:5px;
- background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 rgba(65, 65, 65, 255), stop:0.3 rgba(59, 59, 59, 255), stop:0.301 rgba(50, 50, 50, 255), stop:1 rgba(37, 37, 37, 255));
-}
-QToolButton:hover {
- border: none;
- background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 rgba(105, 105, 105, 255), stop:0.3 rgba(99, 99, 99, 255), stop:0.301 rgba(90, 90, 90, 255), stop:1 rgba(77, 77, 77, 255));
-}