diff options
author | Abdiel Janulgue <abdiel.janulgue@nokia.com> | 2010-03-10 21:10:06 +0200 |
---|---|---|
committer | Abdiel Janulgue <abdiel.janulgue@nokia.com> | 2010-03-10 21:10:06 +0200 |
commit | ef655e545ec3afb61053fd8d05dc2c5360a3bc3e (patch) | |
tree | 7218606e517c3bfb08c05f4882abb66881ac32f6 /decorators | |
parent | 1c98be53ebb50345ace1a7ce4c254904bfece36a (diff) |
Changes: Added informative window title to the decorator instead of just saying "Menu"
RevBy: TrustMe
Diffstat (limited to 'decorators')
-rw-r--r-- | decorators/duidecorator/duidecoratorwindow.cpp | 61 | ||||
-rw-r--r-- | decorators/duidecorator/duidecoratorwindow.h | 3 | ||||
-rw-r--r-- | decorators/duidecorator/main.cpp | 4 | ||||
-rw-r--r-- | decorators/libdecorator/duiabstractdecorator.cpp | 1 | ||||
-rw-r--r-- | decorators/libdecorator/duiabstractdecorator.h | 5 |
5 files changed, 40 insertions, 34 deletions
diff --git a/decorators/duidecorator/duidecoratorwindow.cpp b/decorators/duidecorator/duidecoratorwindow.cpp index 9a80175..764acfe 100644 --- a/decorators/duidecorator/duidecoratorwindow.cpp +++ b/decorators/duidecorator/duidecoratorwindow.cpp @@ -30,7 +30,9 @@ #include "duidecoratorwindow.h" #include <X11/Xlib.h> +#include <X11/Xutil.h> #include <X11/Xatom.h> +#include <X11/Xmd.h> #include <X11/extensions/Xfixes.h> #include <X11/extensions/shapeconst.h> @@ -41,24 +43,44 @@ class DuiDecorator: public DuiAbstractDecorator { Q_OBJECT public: - DuiDecorator(QObject *p) - : DuiAbstractDecorator(p) { + DuiDecorator(DuiDecoratorWindow *p) + : DuiAbstractDecorator(p) + { + connect(this, SIGNAL(windowTitleChanged(const QString&)), + p, SIGNAL(windowTitleChanged(const QString&))); } - + ~DuiDecorator() { } protected: virtual void activateEvent() { } - + + virtual void manageEvent(Qt::HANDLE window) + { + XTextProperty p; + QString title; + + if(XGetWMName(QX11Info::display(), window, &p)) { + if (p.value) { + title = (char*) p.value; + XFree(p.value); + } + } + + emit windowTitleChanged(title); + } + +signals: + + void windowTitleChanged(const QString&); }; DuiDecoratorWindow::DuiDecoratorWindow(QWidget *parent) : DuiWindow(parent) { - setAttribute(Qt::WA_TranslucentBackground); - + setTranslucentBackground(true); // We do not rotate (change orientation) at all. setOrientationAngle(Dui::Angle0, Dui::ImmediateOrientationChange); setOrientationAngleLocked(true); @@ -73,33 +95,8 @@ DuiDecoratorWindow::~DuiDecoratorWindow() } void DuiDecoratorWindow::init(DuiSceneManager &sceneManager) -{ - bool softwareRendering = false; - - if (QCoreApplication::arguments().contains("-software")) { - softwareRendering = true; - } - - setWindowTitle("DuiDecorator"); - - setWindowFlags(Qt::FramelessWindowHint); - - if (softwareRendering == false) { - QGLFormat fmt; - fmt.setAlpha(true); - QGLWidget *glw = new QGLWidget(fmt); - QPalette palette; - palette.setColor(QPalette::Base, Qt::transparent); - glw->setAutoFillBackground(true); - glw->setPalette(palette); - setViewport(glw); - } else { - viewport()->setAutoFillBackground(false); - setAttribute(Qt::WA_TranslucentBackground); - } - +{ setFocusPolicy(Qt::NoFocus); - setSceneSize(sceneManager); setDuiDecoratorWindowProperty(); } diff --git a/decorators/duidecorator/duidecoratorwindow.h b/decorators/duidecorator/duidecoratorwindow.h index 4152a21..e67dc02 100644 --- a/decorators/duidecorator/duidecoratorwindow.h +++ b/decorators/duidecorator/duidecoratorwindow.h @@ -50,7 +50,8 @@ signals: void homeClicked(); void escapeClicked(); - + void windowTitleChanged(const QString& title); + private: void fillXRectangle(XRectangle *xRect, const QRect &rect) const; void setSceneSize(DuiSceneManager &sceneManager); diff --git a/decorators/duidecorator/main.cpp b/decorators/duidecorator/main.cpp index 86ec482..3347655 100644 --- a/decorators/duidecorator/main.cpp +++ b/decorators/duidecorator/main.cpp @@ -50,7 +50,9 @@ int main(int argc, char **argv) SIGNAL(escapeClicked())); DuiNavigationBar navigationBar; - + QObject::connect(&window, SIGNAL(windowTitleChanged(const QString&)), &navigationBar, + SLOT(setViewMenuDescription(const QString&))); + window.init(sceneManager); sceneManager.showWindowNow(&navigationBar); diff --git a/decorators/libdecorator/duiabstractdecorator.cpp b/decorators/libdecorator/duiabstractdecorator.cpp index 1363fe4..fcfee33 100644 --- a/decorators/libdecorator/duiabstractdecorator.cpp +++ b/decorators/libdecorator/duiabstractdecorator.cpp @@ -89,6 +89,7 @@ void DuiAbstractDecorator::close() void DuiAbstractDecorator::RemoteSetManagedWinId(qulonglong window) { client = window; + manageEvent(window); } void DuiAbstractDecorator::RemoteActivateWindow() diff --git a/decorators/libdecorator/duiabstractdecorator.h b/decorators/libdecorator/duiabstractdecorator.h index e0fde11..2dcb77b 100644 --- a/decorators/libdecorator/duiabstractdecorator.h +++ b/decorators/libdecorator/duiabstractdecorator.h @@ -66,6 +66,11 @@ protected: * Re-implement to obtain activate events from the managed window */ virtual void activateEvent() = 0; + + /*! + * Pure virtual function that gets called this decorator manages a window + */ + virtual void manageEvent(Qt::HANDLE window) = 0; private: Qt::HANDLE client; |