diff --git a/declarativeimports/core/CMakeLists.txt b/declarativeimports/core/CMakeLists.txt index 183e38ba4..3626816a4 100644 --- a/declarativeimports/core/CMakeLists.txt +++ b/declarativeimports/core/CMakeLists.txt @@ -4,7 +4,6 @@ set(corebindings_SRCS declarativeitemcontainer.cpp corebindingsplugin.cpp dataengineconsumer.cpp - fullscreendialog.cpp theme.cpp datamodel.cpp datasource.cpp diff --git a/declarativeimports/core/fullscreendialog.cpp b/declarativeimports/core/fullscreendialog.cpp deleted file mode 100644 index 9568e99f3..000000000 --- a/declarativeimports/core/fullscreendialog.cpp +++ /dev/null @@ -1,177 +0,0 @@ -/*************************************************************************** - * Copyright 2012 Marco Martin * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA . * - ***************************************************************************/ - -#include "fullscreendialog.h" -#include "declarativeitemcontainer_p.h" - -#include -#include -#include -#include -#include -#include -#include - -#include - -#include - - -uint FullScreenDialog::s_numItems = 0; - -FullScreenDialog::FullScreenDialog(QObject *parent) - : QObject(parent) -{ - m_view = new QGraphicsView(); - m_view->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); - m_view->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); - m_view->installEventFilter(this); - m_view->setAutoFillBackground(false); - m_view->viewport()->setAutoFillBackground(false); - m_view->setAttribute(Qt::WA_TranslucentBackground); - m_view->setAttribute(Qt::WA_OpaquePaintEvent); - m_view->setAttribute(Qt::WA_NoSystemBackground); - m_view->viewport()->setAttribute(Qt::WA_OpaquePaintEvent); - m_view->viewport()->setAttribute(Qt::WA_NoSystemBackground); - m_view->setWindowFlags(m_view->windowFlags() | Qt::FramelessWindowHint | Qt::CustomizeWindowHint); - m_view->setFrameShape(QFrame::NoFrame); - KWindowSystem::setOnAllDesktops(m_view->winId(), true); - unsigned long state = NET::Sticky | NET::StaysOnTop | NET::KeepAbove | NET::SkipTaskbar | NET::SkipPager | NET::MaxVert | NET::MaxHoriz; - KWindowSystem::setState(m_view->effectiveWinId(), state); - KWindowSystem::setType(m_view->effectiveWinId(), NET::Dock); -} - -FullScreenDialog::~FullScreenDialog() -{ - delete m_view; -} - -QGraphicsObject *FullScreenDialog::mainItem() const -{ - return m_mainItem.data(); -} - -void FullScreenDialog::setMainItem(QGraphicsObject *mainItem) -{ - if (m_mainItem.data() != mainItem) { - if (m_mainItem) { - m_mainItem.data()->setParent(mainItem->parent()); - m_mainItem.data()->removeEventFilter(this); - m_mainItem.data()->setY(0); - m_scene = 0; - } - m_mainItem = mainItem; - if (mainItem) { - mainItem->setParentItem(0); - mainItem->setParent(this); - m_scene = mainItem->scene(); - } - - mainItem->installEventFilter(this); - - //if this is called in Compenent.onCompleted we have to wait a loop the item is added to a scene - QTimer::singleShot(0, this, SLOT(syncMainItem())); - emit mainItemChanged(); - } -} - -void FullScreenDialog::syncMainItem() -{ - if (!m_mainItem) { - return; - } - - //not have a scene? go up in the hyerarchy until we find something with a scene - QGraphicsScene *scene = m_mainItem.data()->scene(); - if (!scene) { - QObject *parent = m_mainItem.data(); - while ((parent = parent->parent())) { - QGraphicsObject *qo = qobject_cast(parent); - if (qo) { - scene = qo->scene(); - - if (scene) { - scene->addItem(m_mainItem.data()); - ++s_numItems; - Plasma::Corona *corona = qobject_cast(scene); - QDeclarativeItem *di = qobject_cast(m_mainItem.data()); - - if (corona && di) { - if (!m_declarativeItemContainer) { - m_declarativeItemContainer = new DeclarativeItemContainer(); - scene->addItem(m_declarativeItemContainer); - corona->addOffscreenWidget(m_declarativeItemContainer); - } - m_declarativeItemContainer->setDeclarativeItem(di); - } else { - m_mainItem.data()->setY(-10000*s_numItems); - m_mainItem.data()->setY(10000*s_numItems); - } - break; - } - } - } - } - - if (!scene) { - return; - } - - m_view->setScene(scene); - - m_view->setMinimumSize(QSize(m_mainItem.data()->boundingRect().width(), m_mainItem.data()->boundingRect().height())); - m_view->setMaximumSize(m_view->minimumSize()); - - QRectF itemGeometry(QPointF(m_mainItem.data()->x(), m_mainItem.data()->y()), - QSizeF(m_mainItem.data()->boundingRect().size())); - - m_view->setSceneRect(itemGeometry); -} - -bool FullScreenDialog::isVisible() const -{ - return m_view->isVisible(); -} - -void FullScreenDialog::setVisible(const bool visible) -{ - if (m_view->isVisible() != visible) { - m_view->setVisible(visible); - if (visible) { - m_view->setVisible(visible); - m_view->raise(); - } - emit visibleChanged(); - } -} - - -bool FullScreenDialog::eventFilter(QObject *watched, QEvent *event) -{ - if (watched == m_view && - (event->type() == QEvent::Resize || event->type() == QEvent::Move)) { - syncMainItem(); - } - return false; -} - - - -#include "fullscreendialog.moc" - diff --git a/declarativeimports/core/fullscreendialog.h b/declarativeimports/core/fullscreendialog.h deleted file mode 100644 index c0268d214..000000000 --- a/declarativeimports/core/fullscreendialog.h +++ /dev/null @@ -1,69 +0,0 @@ -/*************************************************************************** - * Copyright 2012 Marco Martin * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA . * - ***************************************************************************/ -#ifndef FULLSCREENDIALOG_P -#define FULLSCREENDIALOG_P - -#include -#include -#include -#include -#include - -class QGraphicsObject; -class QGraphicsView; -class QGraphicsScene; -class DeclarativeItemContainer; - -class FullScreenDialog : public QObject -{ - Q_OBJECT - - Q_PROPERTY(QGraphicsObject *mainItem READ mainItem WRITE setMainItem NOTIFY mainItemChanged) - Q_PROPERTY(bool visible READ isVisible WRITE setVisible NOTIFY visibleChanged) - -public: - FullScreenDialog(QObject *parent = 0); - ~FullScreenDialog(); - - QGraphicsObject *mainItem() const; - void setMainItem(QGraphicsObject *mainItem); - - bool isVisible() const; - void setVisible(const bool visible); - -Q_SIGNALS: - void visibleChanged(); - void mainItemChanged(); - - -protected Q_SLOTS: - void syncMainItem(); - -protected: - bool eventFilter(QObject *watched, QEvent *event); - -private: - QGraphicsView *m_view; - QWeakPointer m_mainItem; - DeclarativeItemContainer *m_declarativeItemContainer; - QGraphicsScene *m_scene; - static uint s_numItems; -}; - -#endif diff --git a/declarativeimports/plasmacomponents/CMakeLists.txt b/declarativeimports/plasmacomponents/CMakeLists.txt index 6e4b46d43..a9f951288 100644 --- a/declarativeimports/plasmacomponents/CMakeLists.txt +++ b/declarativeimports/plasmacomponents/CMakeLists.txt @@ -1,12 +1,14 @@ project(plasmacomponents) set(plasmacomponents_SRCS + fullscreendialog.cpp plasmacomponentsplugin.cpp qrangemodel.cpp enums.cpp qmenu.cpp qmenuitem.cpp kdialogproxy.cpp + ../core/declarativeitemcontainer.cpp ) INCLUDE_DIRECTORIES( @@ -19,7 +21,7 @@ qt4_automoc(${plasmacomponents_SRCS}) add_library(plasmacomponentsplugin SHARED ${plasmacomponents_SRCS}) -target_link_libraries(plasmacomponentsplugin ${QT_QTCORE_LIBRARY} ${QT_QTDECLARATIVE_LIBRARY} ${QT_QTGUI_LIBRARY} ${KDE4_KDEUI_LIBRARY}) +target_link_libraries(plasmacomponentsplugin ${QT_QTCORE_LIBRARY} ${QT_QTDECLARATIVE_LIBRARY} ${QT_QTGUI_LIBRARY} ${KDE4_KDEUI_LIBRARY} ${KDE4_PLASMA_LIBS}) install(TARGETS plasmacomponentsplugin DESTINATION ${IMPORTS_INSTALL_DIR}/org/kde/plasma/components)