From be7f32353d736ff1dc1f74ae80e301ce72044dee Mon Sep 17 00:00:00 2001 From: Arno Date: Sat, 25 Mar 2017 09:01:41 +0100 Subject: Show Popup-Window on various occasions When we play a new song, get paused, continue and change volume. The hardest part was to display the QWidget on the current desktop. Turns out KWindowSystem and Qt::ToolWindow don't work together well... I should post that on my blog, I guess... --- toolwindow.cpp | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 toolwindow.cpp (limited to 'toolwindow.cpp') diff --git a/toolwindow.cpp b/toolwindow.cpp new file mode 100644 index 0000000..f32c15e --- /dev/null +++ b/toolwindow.cpp @@ -0,0 +1,45 @@ +#include +#include +#include +#include +#include +#include + +#include "toolwindow.h" + +ToolWindow::ToolWindow(QWidget *parent, Qt::WindowFlags f) : QWidget(parent, f){ + setWindowOpacity(0.9); + mLabel = new QLabel; + mLabel->setFrameStyle(QFrame::Panel | QFrame::Plain); + mLabel->setFont(QFont("courier", 16, QFont::Bold)); + mLabel->setAlignment(Qt::AlignCenter); + QHBoxLayout *mainLayout = new QHBoxLayout; + mainLayout->addWidget(mLabel); + mHideTimer = new QTimer(this); + connect(mHideTimer, &QTimer::timeout, this, &QWidget::hide); + setLayout(mainLayout); + KWindowSystem::setOnAllDesktops(winId(), true); +} + +void ToolWindow::setText(const QString &text){ + mLabel->setText(text); +} + +void ToolWindow::toHTML(const QString &text){ + QString html; + html.append(QString("

%1

").arg(text)); + mLabel->setText(html); +} + +void ToolWindow::showMe(){ + QDesktopWidget *dw = QApplication::desktop(); + QRect screenRect = dw->screenGeometry(QCursor::pos()); + QPoint screenCenter = screenRect.center(); + QPoint where(screenCenter.x() - width() / 2, 150); + move(where); + KWindowSystem::setOnDesktop(winId(), KWindowSystem::currentDesktop()); + mHideTimer->stop(); + mHideTimer->start(5000); + show(); + raise(); +} -- cgit v1.2.3-70-g09d2