From 6c225755fc5f6be7223aea6f45bf08065adea986 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Gr=C3=A4=C3=9Flin?= Date: Sun, 19 Feb 2012 16:56:35 +0100 Subject: [PATCH] Drop C++ based Desktop Change OSD No longer needed as it has been replaced by a declarative script. --- CMakeLists.txt | 8 - desktopchangeosd.cpp | 586 ------------------------------------------- desktopchangeosd.h | 176 ------------- workspace.cpp | 12 - workspace.h | 6 - 5 files changed, 788 deletions(-) delete mode 100644 desktopchangeosd.cpp delete mode 100644 desktopchangeosd.h diff --git a/CMakeLists.txt b/CMakeLists.txt index cba139b1e6..0b89d9843f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -5,7 +5,6 @@ OPTION(KWIN_BUILD_KCMS "Enable building of KWin configuration modules." ON) OPTION(KWIN_MOBILE_EFFECTS "Only build effects relevant for mobile devices" OFF) OPTION(KWIN_BUILD_TABBOX "Enable building of KWin Tabbox functionality" ON) OPTION(KWIN_BUILD_TILING "Enable building of KWin Tiling functionality" ON) -OPTION(KWIN_BUILD_DESKTOPCHANGEOSD "Enable building of KWin DesktopChangeOSD funtionality" ON) OPTION(KWIN_BUILD_SCREENEDGES "Enable building of KWin with screen edge support" ON) OPTION(KWIN_BUILD_SCRIPTING "Enable building of KWin with scripting support" ON) OPTION(KWIN_BUILD_XRENDER_COMPOSITING "Enable building of KWin with XRender Compositing support" ON) @@ -19,7 +18,6 @@ if(KWIN_PLASMA_ACTIVE) set(KWIN_BUILD_DECORATIONS OFF) set(KWIN_BUILD_KCMS OFF) set(KWIN_BUILD_TILING OFF) - set(KWIN_BUILD_DESKTOPCHANGEOSD OFF) set(KWIN_BUILD_SCREENEDGES OFF) set(KWIN_BUILD_SCRIPTING OFF) set(KWIN_BUILD_XRENDER_COMPOSITING OFF) @@ -160,12 +158,6 @@ if(KWIN_BUILD_TILING) ) endif(KWIN_BUILD_TILING) -if(KWIN_BUILD_DESKTOPCHANGEOSD) - set(kwin_KDEINIT_SRCS ${kwin_KDEINIT_SRCS} - desktopchangeosd.cpp - ) -endif(KWIN_BUILD_DESKTOPCHANGEOSD) - if(KWIN_BUILD_SCREENEDGES) set( kwin_KDEINIT_SRCS ${kwin_KDEINIT_SRCS} diff --git a/desktopchangeosd.cpp b/desktopchangeosd.cpp deleted file mode 100644 index 04eac921f4..0000000000 --- a/desktopchangeosd.cpp +++ /dev/null @@ -1,586 +0,0 @@ -/******************************************************************** - KWin - the KDE window manager - This file is part of the KDE project. - -Copyright (C) 2009 Martin Gräßlin - -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, see . -*********************************************************************/ - - -#include "desktopchangeosd.h" -#include -#include "workspace.h" - -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace KWin -{ - -DesktopChangeOSD::DesktopChangeOSD(Workspace* ws) - : QGraphicsView() - , m_wspace(ws) - , m_scene(0) - , m_active(false) - , m_show(false) - , m_delayTime(0) - , m_textOnly(false) -{ - setWindowFlags(Qt::X11BypassWindowManagerHint); - setFrameStyle(QFrame::NoFrame); - viewport()->setAutoFillBackground(false); - setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); - setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); - setAttribute(Qt::WA_TranslucentBackground); - m_frame.setImagePath("dialogs/background"); - m_frame.setCacheAllRenderedFrames(true); - m_frame.setEnabledBorders(Plasma::FrameSvg::AllBorders); - - m_item_frame.setImagePath("widgets/pager"); - m_item_frame.setCacheAllRenderedFrames(true); - m_item_frame.setEnabledBorders(Plasma::FrameSvg::AllBorders); - - m_delayedHideTimer.setSingleShot(true); - connect(&m_delayedHideTimer, SIGNAL(timeout()), this, SLOT(hide())); - connect(ws, SIGNAL(currentDesktopChanged(int)), this, SLOT(desktopChanged(int))); - connect(ws, SIGNAL(numberDesktopsChanged(int)), this, SLOT(numberDesktopsChanged())); - connect(ws, SIGNAL(configChanged()), this, SLOT(reconfigure())); - - m_scene = new QGraphicsScene(0); - setScene(m_scene); - - reconfigure(); - - m_scene->addItem(new DesktopChangeText(m_wspace)); -} - -DesktopChangeOSD::~DesktopChangeOSD() -{ - delete m_scene; -} - -void DesktopChangeOSD::reconfigure() -{ - KSharedConfigPtr c(KGlobal::config()); - const KConfigGroup cg = c->group("PopupInfo"); - m_show = cg.readEntry("ShowPopup", false); - m_delayTime = cg.readEntry("PopupHideDelay", 1000); - m_textOnly = cg.readEntry("TextOnly", false); - numberDesktopsChanged(); -} - -void DesktopChangeOSD::desktopChanged(int old) -{ - // Not for the very first time, only if something changed and there are more than 1 desktops - if (old == 0 || old == m_wspace->currentDesktop() || m_wspace->numberOfDesktops() <= 1) - return; - if (!m_show) - return; - // we have to stop in case the old desktop does not exist anymore - if (old > m_wspace->numberOfDesktops()) - return; - // calculate where icons have to be shown - QPoint diff = m_wspace->desktopGridCoords(m_wspace->currentDesktop()) - m_wspace->desktopGridCoords(old); - QHash< int, DesktopChangeItem::Arrow > hash = QHash< int, DesktopChangeItem::Arrow>(); - int desktop = old; - int target = m_wspace->currentDesktop(); - int x = diff.x(); - int y = diff.y(); - if (y >= 0) { - // first go in x direction, then in y - while (desktop != target) { - if (x != 0) { - if (x < 0) { - x++; - hash.insert(desktop, DesktopChangeItem::LEFT); - desktop = m_wspace->desktopToLeft(desktop); - } else { - x--; - hash.insert(desktop, DesktopChangeItem::RIGHT); - desktop = m_wspace->desktopToRight(desktop); - } - continue; - } - y--; - hash.insert(desktop, DesktopChangeItem::DOWN); - desktop = m_wspace->desktopBelow(desktop); - } - } else { - // first go in y direction, then in x - while (target != desktop) { - if (y != 0) { - // only go upward - y++; - hash.insert(desktop, DesktopChangeItem::UP); - desktop = m_wspace->desktopAbove(desktop); - continue; - } - if (x != 0) { - if (x < 0) { - x++; - hash.insert(desktop, DesktopChangeItem::LEFT); - desktop = m_wspace->desktopToLeft(desktop); - } else { - x--; - hash.insert(desktop, DesktopChangeItem::RIGHT); - desktop = m_wspace->desktopToRight(desktop); - } - } - } - } - // now we know which desktop has to show an arrow -> set the arrow for each desktop - int numberOfArrows = qAbs(diff.x()) + qAbs(diff.y()); - foreach (QGraphicsItem * it, m_scene->items()) { - DesktopChangeItem* item = qgraphicsitem_cast< DesktopChangeItem* >(it); - if (item) { - if (hash.contains(item->desktop())) { - QPoint distance = m_wspace->desktopGridCoords(m_wspace->currentDesktop()) - - m_wspace->desktopGridCoords(item->desktop()); - int desktopDistance = numberOfArrows - (qAbs(distance.x()) + qAbs(distance.y())); - int start = m_delayTime / numberOfArrows * desktopDistance - m_delayTime * 0.15f; - int stop = m_delayTime / numberOfArrows * (desktopDistance + 1) + m_delayTime * 0.15f; - start = qMax(start, 0); - item->setArrow(hash[ item->desktop()], start, stop); - } else { - item->setArrow(DesktopChangeItem::NONE, 0, 0); - } - if (old != m_wspace->currentDesktop()) { - if (item->desktop() == m_wspace->currentDesktop()) - item->startDesktopHighLightAnimation(m_delayTime * 0.33); - if (m_active && item->desktop() == old) - item->stopDesktopHighLightAnimation(); - } - } - } - if (m_active) { - // for text only we need to resize - if (m_textOnly) - resize(); - // already active - just update and reset timer - update(); - } else { - m_active = true; - resize(); - show(); - raise(); - } - // Set a zero inputmask, effectively making clicks go "through" the popup - // For those who impatiently wait to click on a dialog behind the it - XShapeCombineRectangles(display(), winId(), ShapeInput, 0, 0, NULL, 0, ShapeSet, Unsorted); - m_delayedHideTimer.start(m_delayTime); -} - -void DesktopChangeOSD::hideEvent(QHideEvent*) -{ - m_delayedHideTimer.stop(); - m_active = false; -} - -void DesktopChangeOSD::drawBackground(QPainter* painter, const QRectF& rect) -{ - painter->save(); - painter->setCompositionMode(QPainter::CompositionMode_Source); - qreal left, top, right, bottom; - m_frame.getMargins(left, top, right, bottom); - m_frame.paintFrame(painter, rect.adjusted(-left, -top, right, bottom)); - painter->restore(); -} - -void DesktopChangeOSD::numberDesktopsChanged() -{ - foreach (QGraphicsItem * it, m_scene->items()) { - DesktopChangeItem* item = qgraphicsitem_cast(it); - if (item) { - m_scene->removeItem(item); - } - } - - if (!m_textOnly) { - for (int i = 1; i <= m_wspace->numberOfDesktops(); i++) { - DesktopChangeItem* item = new DesktopChangeItem(m_wspace, this, i); - m_scene->addItem(item); - } - } -} - -void DesktopChangeOSD::resize() -{ - QRect screenRect = m_wspace->clientArea(ScreenArea, m_wspace->activeScreen(), m_wspace->currentDesktop()); - QRect fullRect = m_wspace->clientArea(FullArea, m_wspace->activeScreen(), m_wspace->currentDesktop()); - qreal left, top, right, bottom; - m_frame.getMargins(left, top, right, bottom); - - QSize desktopGridSize = m_wspace->desktopGridSize(); - float itemWidth = fullRect.width() * 0.1f; - float itemHeight = fullRect.height() * 0.1f; - // 2 px distance between each desktop + each desktop a width of 5 % of full screen + borders - float width = (desktopGridSize.width() - 1) * 2 + desktopGridSize.width() * itemWidth + left + right; - float height = (desktopGridSize.height() - 1) * 2 + top + bottom; - - // bound width between ten and 33 percent of active screen - float tempWidth = qBound(screenRect.width() * 0.25f, width, screenRect.width() * 0.5f); - if (tempWidth != width) { - // have to adjust the height - width = tempWidth; - itemWidth = (width - (desktopGridSize.width() - 1) * 2 - left - right) / desktopGridSize.width(); - itemHeight = itemWidth * (float)((float)fullRect.height() / (float)fullRect.width()); - } - height += itemHeight * desktopGridSize.height(); - height += fontMetrics().height() + 4; - - // we do not increase height, but it's bound to a third of screen height - float tempHeight = qMin(height, screenRect.height() * 0.5f); - float itemOffset = 0.0f; - if (tempHeight != height) { - // have to adjust item width - height = tempHeight; - itemHeight = (height - (fontMetrics().height() + 4) - top - bottom - (desktopGridSize.height() - 1) * 2) / - desktopGridSize.height(); - itemOffset = itemWidth; - itemWidth = itemHeight * (float)((float)fullRect.width() / (float)fullRect.height()); - itemOffset -= itemWidth; - itemOffset *= (float)desktopGridSize.width() * 0.5f; - } - - // set size to the desktop name if the "pager" is not shown - if (m_textOnly) { - height = fontMetrics().height() + 4 + top + bottom; - width = fontMetrics().boundingRect(m_wspace->desktopName(m_wspace->currentDesktop())).width() + - 4 + left + right; - } - - QRect rect = QRect(screenRect.x() + (screenRect.width() - width) / 2, - screenRect.y() + (screenRect.height() - height) / 2, - width, - height); - setGeometry(rect); - m_scene->setSceneRect(0, 0, width, height); - m_frame.resizeFrame(QSize(width, height)); - - if (Plasma::Theme::defaultTheme()->windowTranslucencyEnabled()) { - // blur background - Plasma::WindowEffects::enableBlurBehind(winId(), true, m_frame.mask()); - Plasma::WindowEffects::overrideShadow(winId(), true); - } else { - // do not trim to mask with compositing enabled, otherwise shadows are cropped - setMask(m_frame.mask()); - } - - // resize item frame - m_item_frame.setElementPrefix("normal"); - m_item_frame.resizeFrame(QSize(itemWidth, itemHeight)); - m_item_frame.setElementPrefix("hover"); - m_item_frame.resizeFrame(QSize(itemWidth, itemHeight)); - - // reset the items - foreach (QGraphicsItem * it, m_scene->items()) { - DesktopChangeItem* item = qgraphicsitem_cast(it); - if (item) { - item->setWidth(itemWidth); - item->setHeight(itemHeight); - QPoint coords = m_wspace->desktopGridCoords(item->desktop()); - item->setPos(left + itemOffset + coords.x()*(itemWidth + 2), - top + fontMetrics().height() + 4 + coords.y()*(itemHeight + 4)); - } - DesktopChangeText* text = qgraphicsitem_cast(it); - if (text) { - text->setPos(left, top); - text->setWidth(width - left - right); - if (m_textOnly) - text->setHeight(fontMetrics().height() + 4); - else - text->setHeight(fontMetrics().height()); - } - } -} - -//******************************* -// DesktopChangeText -//******************************* -DesktopChangeText::DesktopChangeText(Workspace* ws) - : QGraphicsItem() - , m_wspace(ws) - , m_width(0.0f) - , m_height(0.0f) -{ -} - -DesktopChangeText::~DesktopChangeText() -{ -} - -QRectF DesktopChangeText::boundingRect() const -{ - return QRectF(0, 0, m_width, m_height); -} - -void DesktopChangeText::paint(QPainter* painter, const QStyleOptionGraphicsItem* , QWidget*) -{ - painter->setPen(Plasma::Theme::defaultTheme()->color(Plasma::Theme::TextColor)); - painter->drawText(boundingRect(), Qt::AlignCenter | Qt:: AlignVCenter, - m_wspace->desktopName(m_wspace->currentDesktop())); -} - -//******************************* -// DesktopChangeItem -//******************************* -DesktopChangeItem::DesktopChangeItem(Workspace* ws, DesktopChangeOSD* parent, int desktop) - : QGraphicsItem() - , m_wspace(ws) - , m_parent(parent) - , m_desktop(desktop) - , m_width(0.0f) - , m_height(0.0f) - , m_arrow(NONE) - , m_arrowShown(false) - , m_fadeInArrow(false) - , m_fadeInHighLight(false) - , m_arrowValue(0.0) - , m_highLightValue(0.0) -{ - m_delayed_show_arrow_timer.setSingleShot(true); - m_delayed_hide_arrow_timer.setSingleShot(true); - connect(&m_delayed_show_arrow_timer, SIGNAL(timeout()), this, SLOT(showArrow())); - connect(&m_delayed_hide_arrow_timer, SIGNAL(timeout()), this, SLOT(hideArrow())); -} - -DesktopChangeItem::~DesktopChangeItem() -{ -} - -QRectF DesktopChangeItem::boundingRect() const -{ - return QRectF(0, 0, m_width, m_height); -} - -void DesktopChangeItem::setArrow(Arrow arrow, int start_delay, int hide_delay) -{ - // stop timers - m_delayed_show_arrow_timer.stop(); - m_delayed_hide_arrow_timer.stop(); - - QPropertyAnimation *arrowAnimation = m_arrowAnimation.data(); - if (arrowAnimation) { - arrowAnimation->stop(); - m_arrowAnimation.clear(); - } - - m_arrowShown = false; - m_arrow = arrow; - if (m_arrow != NONE) { - m_delayed_show_arrow_timer.start(start_delay); - m_delayed_hide_arrow_timer.start(hide_delay); - } -} - -qreal DesktopChangeItem::arrowValue() const -{ - qCritical() << __func__ << m_arrowValue; - return m_arrowValue; -} - -qreal DesktopChangeItem::highLightValue() const -{ - return m_highLightValue; -} - -void DesktopChangeItem::setArrowValue(qreal value) -{ - m_arrowValue = value; - - update(); -} - -void DesktopChangeItem::setHighLightValue(qreal value) -{ - m_highLightValue = value; - - update(); -} - -void DesktopChangeItem::showArrow() -{ - m_arrowShown = true; - - QPropertyAnimation *arrowAnimation = m_arrowAnimation.data(); - if (!arrowAnimation) { - arrowAnimation = new QPropertyAnimation(this, "arrowValue"); - arrowAnimation->setDuration(m_parent->getDelayTime() * 0.15f); - arrowAnimation->setStartValue(0.0); - arrowAnimation->setEndValue(1.0); - - m_arrowAnimation = arrowAnimation; - } - - m_fadeInArrow = true; - - arrowAnimation->setEasingCurve(QEasingCurve::InQuad); - arrowAnimation->setDirection(QAbstractAnimation::Forward); - arrowAnimation->start(); -} - -void DesktopChangeItem::hideArrow() -{ - m_fadeInArrow = false; - - QPropertyAnimation *arrowAnimation = m_arrowAnimation.data(); - if (arrowAnimation) { - arrowAnimation->setEasingCurve(QEasingCurve::OutQuad); - arrowAnimation->setDirection(QAbstractAnimation::Backward); - arrowAnimation->start(QAbstractAnimation::DeleteWhenStopped); - - connect(arrowAnimation, SIGNAL(finished()), this, SLOT(arrowAnimationFinished())); - } -} - -void DesktopChangeItem::startDesktopHighLightAnimation(int time) -{ - QPropertyAnimation *highLightAnimation = m_highLightAnimation.data(); - if (!highLightAnimation) { - highLightAnimation = new QPropertyAnimation(this, "highLightValue"); - highLightAnimation->setDuration(time); - highLightAnimation->setStartValue(0.0); - highLightAnimation->setEndValue(1.0); - - m_highLightAnimation = highLightAnimation; - } - - m_fadeInHighLight = true; - - highLightAnimation->setEasingCurve(QEasingCurve::InQuad); - highLightAnimation->setDirection(QAbstractAnimation::Forward); - highLightAnimation->start(); -} - -void DesktopChangeItem::stopDesktopHighLightAnimation() -{ - m_fadeInHighLight = false; - - QPropertyAnimation *highLightAnimation = m_highLightAnimation.data(); - if (highLightAnimation) { - highLightAnimation->setEasingCurve(QEasingCurve::OutQuad); - highLightAnimation->setDirection(QAbstractAnimation::Backward); - highLightAnimation->start(QAbstractAnimation::DeleteWhenStopped); - } -} - -void DesktopChangeItem::arrowAnimationFinished() -{ - if (!m_fadeInArrow) - m_arrowShown = false; -} - -void DesktopChangeItem::paint(QPainter* painter, const QStyleOptionGraphicsItem* , QWidget*) -{ - if (m_wspace->currentDesktop() == m_desktop || (!m_highLightAnimation.isNull() && - m_highLightAnimation.data()->state() == QAbstractAnimation::Running)) { - qreal left, top, right, bottom; - m_parent->itemFrame()->getMargins(left, top, right, bottom); - if (!m_highLightAnimation.isNull() && - m_highLightAnimation.data()->state() == QAbstractAnimation::Running) { - // there is an animation - so we use transition from normal to active or vice versa - if (m_fadeInHighLight) { - m_parent->itemFrame()->setElementPrefix("normal"); - QPixmap normal = m_parent->itemFrame()->framePixmap(); - m_parent->itemFrame()->setElementPrefix("hover"); - QPixmap result = Plasma::PaintUtils::transition(normal, - m_parent->itemFrame()->framePixmap(), m_highLightValue); - painter->drawPixmap(boundingRect().toRect(), result); - } else { - m_parent->itemFrame()->setElementPrefix("hover"); - QPixmap normal = m_parent->itemFrame()->framePixmap(); - m_parent->itemFrame()->setElementPrefix("normal"); - QPixmap result = Plasma::PaintUtils::transition(normal, - m_parent->itemFrame()->framePixmap(), 1.0 - m_highLightValue); - painter->drawPixmap(boundingRect().toRect(), result); - } - } else { - // no animation - just render the active frame - m_parent->itemFrame()->setElementPrefix("hover"); - m_parent->itemFrame()->paintFrame(painter, boundingRect()); - } - QColor rectColor = Plasma::Theme::defaultTheme()->color(Plasma::Theme::TextColor); - rectColor.setAlphaF(0.6 * m_highLightValue); - QBrush rectBrush = QBrush(rectColor); - painter->fillRect(boundingRect().adjusted(left, top, -right, -bottom), rectBrush); - } else { - m_parent->itemFrame()->setElementPrefix("normal"); - m_parent->itemFrame()->paintFrame(painter, boundingRect()); - } - - if (!m_arrowShown) - return; - // paint the arrow - QPixmap icon; - int iconWidth = 32; - qreal maxsize = qMin(boundingRect().width(), boundingRect().height()); - if (maxsize > 128.0) - iconWidth = 128; - else if (maxsize > 64.0) - iconWidth = 64.0; - else if (maxsize > 32.0) - iconWidth = 32.0; - else - iconWidth = 16.0; - QRect iconRect = QRect(boundingRect().x() + boundingRect().width() / 2 - iconWidth / 2, - boundingRect().y() + boundingRect().height() / 2 - iconWidth / 2, - iconWidth, iconWidth); - switch(m_arrow) { - case UP: - icon = KIconLoader::global()->loadIcon("go-up", KIconLoader::Desktop, iconWidth); - break; - case DOWN: - icon = KIconLoader::global()->loadIcon("go-down", KIconLoader::Desktop, iconWidth); - break; - case LEFT: - icon = KIconLoader::global()->loadIcon("go-previous", KIconLoader::Desktop, iconWidth); - break; - case RIGHT: - icon = KIconLoader::global()->loadIcon("go-next", KIconLoader::Desktop, iconWidth); - break; - default: - break; - } - if (m_arrow != NONE) { - if (!m_arrowAnimation.isNull() && - m_arrowAnimation.data()->state() == QAbstractAnimation::Running && - !qFuzzyCompare(m_arrowValue, qreal(1.0))) { - QPixmap temp(icon.size()); - temp.fill(Qt::transparent); - - QPainter p(&temp); - p.setCompositionMode(QPainter::CompositionMode_Source); - p.drawPixmap(0, 0, icon); - p.setCompositionMode(QPainter::CompositionMode_DestinationIn); - p.fillRect(temp.rect(), QColor(0, 0, 0, 255 * m_arrowValue)); - p.end(); - - icon = temp; - } - painter->drawPixmap(iconRect, icon); - } -} -} - -#include "desktopchangeosd.moc" diff --git a/desktopchangeosd.h b/desktopchangeosd.h deleted file mode 100644 index 9c75205afd..0000000000 --- a/desktopchangeosd.h +++ /dev/null @@ -1,176 +0,0 @@ -/******************************************************************** - KWin - the KDE window manager - This file is part of the KDE project. - -Copyright (C) 2009 Martin Gräßlin - -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, see . -*********************************************************************/ - -#ifndef DESKTOPCHANGEOSD_H -#define DESKTOPCHANGEOSD_H - -#include -#include -#include -#include -#include -#include -#include - -class QGraphicsScene; -class QPropertyAnimation; - -namespace KWin -{ -class Workspace; - -class DesktopChangeText : public QGraphicsItem -{ -public: - DesktopChangeText(Workspace* ws); - ~DesktopChangeText(); - - enum { Type = UserType + 2 }; - - inline void setWidth(float width) { - m_width = width; - }; - inline void setHeight(float height) { - m_height = height; - }; - - virtual QRectF boundingRect() const; - virtual void paint(QPainter* painter, const QStyleOptionGraphicsItem*, QWidget*); - inline virtual int type() const { - return Type; - }; - -private: - Workspace* m_wspace; - float m_width; - float m_height; -}; - -class DesktopChangeOSD : public QGraphicsView -{ - Q_OBJECT -public: - DesktopChangeOSD(Workspace* ws); - ~DesktopChangeOSD(); - - inline Plasma::FrameSvg* itemFrame() { - return &m_item_frame; - }; - inline int& getDelayTime() { - return m_delayTime; - }; - -protected: - virtual void hideEvent(QHideEvent*); - virtual void drawBackground(QPainter* painter, const QRectF& rect); - -private: - void resize(); - Workspace* m_wspace; - Plasma::FrameSvg m_frame; - Plasma::FrameSvg m_item_frame; - QGraphicsScene* m_scene; - bool m_active; - QTimer m_delayedHideTimer; - bool m_show; - int m_delayTime; - bool m_textOnly; - -private Q_SLOTS: - void desktopChanged(int old); - void numberDesktopsChanged(); - void reconfigure(); -}; - -class DesktopChangeItem : public QObject, public QGraphicsItem -{ - Q_OBJECT - Q_PROPERTY(qreal arrowValue READ arrowValue WRITE setArrowValue) - Q_PROPERTY(qreal highLightValue READ highLightValue WRITE setHighLightValue) - - Q_INTERFACES(QGraphicsItem) -public: - DesktopChangeItem(Workspace* ws, DesktopChangeOSD* parent, int desktop); - ~DesktopChangeItem(); - enum { Type = UserType + 1 }; - void startDesktopHighLightAnimation(int time); - void stopDesktopHighLightAnimation(); - - inline void setWidth(float width) { - m_width = width; - }; - inline void setHeight(float height) { - m_height = height; - }; - inline int desktop() const { - return m_desktop; - }; - - virtual QRectF boundingRect() const; - virtual void paint(QPainter* painter, const QStyleOptionGraphicsItem*, QWidget*); - inline virtual int type() const { - return Type; - }; - - enum Arrow { - NONE, - LEFT, - RIGHT, - UP, - DOWN - }; - void setArrow(Arrow arrow, int start_delay, int hide_delay); - - qreal arrowValue() const; - qreal highLightValue() const; - -protected slots: - void setArrowValue(qreal value); - void setHighLightValue(qreal value); - -private slots: - void showArrow(); - void hideArrow(); - void arrowAnimationFinished(); - -private: - Workspace* m_wspace; - DesktopChangeOSD* m_parent; - int m_desktop; - float m_width; - float m_height; - QTimer m_delayed_show_arrow_timer; - QTimer m_delayed_hide_arrow_timer; - - Arrow m_arrow; - bool m_arrowShown; - bool m_fadeInArrow; - bool m_fadeInHighLight; - - qreal m_arrowValue; - qreal m_highLightValue; - - QWeakPointer m_arrowAnimation; - QWeakPointer m_highLightAnimation; -}; - -} - -#endif // DESKTOPCHANGEOSD_H diff --git a/workspace.cpp b/workspace.cpp index 8d6135b95b..09e4775a57 100644 --- a/workspace.cpp +++ b/workspace.cpp @@ -47,9 +47,6 @@ along with this program. If not, see . #ifdef KWIN_BUILD_TABBOX #include "tabbox.h" #endif -#ifdef KWIN_BUILD_DESKTOPCHANGEOSD -#include "desktopchangeosd.h" -#endif #include "atoms.h" #include "placement.h" #include "notifications.h" @@ -127,9 +124,6 @@ Workspace::Workspace(bool restore) , block_focus(0) #ifdef KWIN_BUILD_TABBOX , tab_box(0) -#endif -#ifdef KWIN_BUILD_DESKTOPCHANGEOSD - , desktop_change_osd(0) #endif , popup(0) , advanced_popup(0) @@ -239,9 +233,6 @@ Workspace::Workspace(bool restore) client_keys = new KActionCollection(this); -#ifdef KWIN_BUILD_DESKTOPCHANGEOSD - desktop_change_osd = new DesktopChangeOSD(this); -#endif m_outline = new Outline(); initShortcuts(); @@ -504,9 +495,6 @@ Workspace::~Workspace() } for (UnmanagedList::iterator it = unmanaged.begin(), end = unmanaged.end(); it != end; ++it) (*it)->release(); -#ifdef KWIN_BUILD_DESKTOPCHANGEOSD - delete desktop_change_osd; -#endif delete m_outline; discardPopup(); XDeleteProperty(display(), rootWindow(), atoms->kwin_running); diff --git a/workspace.h b/workspace.h index cb1c139c42..3c5956936b 100644 --- a/workspace.h +++ b/workspace.h @@ -78,9 +78,6 @@ class Tile; class Tiling; class TilingLayout; #endif -#ifdef KWIN_BUILD_DESKTOPCHANGEOSD -class DesktopChangeOSD; -#endif class Outline; class RootInfo; class PluginMgr; @@ -807,9 +804,6 @@ private: #ifdef KWIN_BUILD_TABBOX TabBox::TabBox* tab_box; #endif -#ifdef KWIN_BUILD_DESKTOPCHANGEOSD - DesktopChangeOSD* desktop_change_osd; -#endif QMenu* popup; QMenu* advanced_popup;