summaryrefslogtreecommitdiff
path: root/decorators
diff options
context:
space:
mode:
authorAbdiel Janulgue <abdiel.janulgue@nokia.com>2010-03-10 21:10:06 +0200
committerAbdiel Janulgue <abdiel.janulgue@nokia.com>2010-03-10 21:10:06 +0200
commitef655e545ec3afb61053fd8d05dc2c5360a3bc3e (patch)
tree7218606e517c3bfb08c05f4882abb66881ac32f6 /decorators
parent1c98be53ebb50345ace1a7ce4c254904bfece36a (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.cpp61
-rw-r--r--decorators/duidecorator/duidecoratorwindow.h3
-rw-r--r--decorators/duidecorator/main.cpp4
-rw-r--r--decorators/libdecorator/duiabstractdecorator.cpp1
-rw-r--r--decorators/libdecorator/duiabstractdecorator.h5
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;