examplewidget.h Example File
maemo5/windowstates/examplewidget.h
#ifndef EXAMPLEWIDGET_H
#define EXAMPLEWIDGET_H
#include "fullscreenexitbutton.h"
#include <QtGui>
#include <QX11Info>
#include <QtDBus>
![4]
#include <X11/Xlib.h>
#include <X11/Xatom.h>
![4]
class ExampleWidget : public QWidget
{
Q_OBJECT
public:
ExampleWidget()
{
QPushButton *fsButton = new QPushButton("Toggle Fullscreen");
connect(fsButton, SIGNAL(clicked()), SLOT(toggleFullScreen()));
QCheckBox *busyCheckBox = new QCheckBox("Busy Indicator");
connect(busyCheckBox, SIGNAL(stateChanged(int)), SLOT(toggleBusy(int)));
QCheckBox *disturbCheckBox = new QCheckBox("Do Not Disturb");
connect(disturbCheckBox, SIGNAL(stateChanged(int)), SLOT(toggleDisturb(int)));
QPushButton *showExpose = new QPushButton("Show Expose");
connect(showExpose, SIGNAL(clicked()), SLOT(showExpose()));
QTextBrowser *browser = new QTextBrowser;
browser->setText("Just some dummy example text.");
![3]
new FullScreenExitButton(this);
![3]
QVBoxLayout *layout = new QVBoxLayout(this);
layout->addWidget(fsButton);
layout->addWidget(busyCheckBox);
layout->addWidget(disturbCheckBox);
layout->addWidget(showExpose);
layout->addWidget(browser);
defaultMargins = layout->contentsMargins();
}
public Q_SLOTS:
![0]
void toggleFullScreen()
{
bool isFullScreen = windowState() & Qt::WindowFullScreen;
if (isFullScreen)
showNormal();
else
showFullScreen();
}
![0]
![1]
void toggleBusy(int checkState)
{
setAttribute(Qt::WA_Maemo5ShowProgressIndicator, checkState == Qt::Checked);
}
![1]
![5]
void toggleDisturb(int checkState)
{
Atom atom = XInternAtom(QX11Info::display(), "_HILDON_DO_NOT_DISTURB", False);
if (!atom) {
qWarning("Unable to obtain _HILDON_DO_NOT_DISTURB. This example will only work "
"on a Maemo 5 device!");
return;
}
if (checkState == Qt::Checked) {
long state = 1;
XChangeProperty(
QX11Info::display(),
winId(),
atom,
XA_INTEGER,
32,
PropModeReplace,
(unsigned char *) &state,
1);
} else {
XDeleteProperty(QX11Info::display(), winId(), atom);
}
}
![5]
![2]
void showExpose()
{
QDBusConnection c = QDBusConnection::sessionBus();
QDBusMessage m = QDBusMessage::createSignal("/", "com.nokia.hildon_desktop", "exit_app_view");
c.send(m);
}
![2]
protected:
void changeEvent(QEvent *event)
{
if (event->type() == QEvent::WindowStateChange) {
const bool isFullScreen = windowState() & Qt::WindowFullScreen;
if (isFullScreen)
layout()->setContentsMargins(0, 0, 0, 0);
else
layout()->setContentsMargins(defaultMargins);
}
QWidget::changeEvent(event);
}
private:
QMargins defaultMargins;
};
#endif
Copyright © 2010 Nokia Corporation and/or its subsidiary(-ies) |
Trademarks |
Qt 4.6.2 |