From: Arto Hyvättinen Date: Fri, 17 Sep 2010 19:59:42 +0000 (+0300) Subject: Added some fun event filtering to grab pause and welcome message clicks X-Git-Tag: v1.9.0~81 X-Git-Url: https://vcs.maemo.org/git/?p=chessclock;a=commitdiff_plain;h=8e60d556e00dbb7e86f2425605cf1b0a688a69e9 Added some fun event filtering to grab pause and welcome message clicks --- diff --git a/chessclockwindow.cpp b/chessclockwindow.cpp index 43b64cd..ea0d746 100644 --- a/chessclockwindow.cpp +++ b/chessclockwindow.cpp @@ -40,7 +40,7 @@ #include #include #include -#include + ChessClockWindow::ChessClockWindow(QWidget *parent) : QMainWindow(parent) @@ -66,7 +66,7 @@ ChessClockWindow::ChessClockWindow(QWidget *parent) // Set up menu // menuBar()->addAction( tr("Pause"), this, SLOT(pause())); // UNUSED - Pause button menuBar()->addAction( tr("New game"), this, SLOT(newGame())); - menuBar()->addAction( keepAction ); + menuBar()->addAction( tr("Visit web page"), this, SLOT(visitWeb())); menuBar()->addAction( tr("About"),this, SLOT(about())); menuBar()->addAction(tr("About Qt"), this, SLOT(aboutQt())); diff --git a/classes/clockswidget.cpp b/classes/clockswidget.cpp index 82efa89..f094f8d 100644 --- a/classes/clockswidget.cpp +++ b/classes/clockswidget.cpp @@ -34,6 +34,7 @@ #include #include #include +#include ClocksWidget::ClocksWidget(ChessClock *white, ChessClock *black, QWidget *parent): QWidget(parent) @@ -49,14 +50,14 @@ ClocksWidget::ClocksWidget(ChessClock *white, ChessClock *black, QWidget *parent clockLayout->addWidget( black_ ); // Pause information label - pauseLabel_ = new QLabel( tr("Paused. Touch to continue.")); + pauseLabel_ = new QLabel( tr("Paused. Touch to continue."),this); pauseLabel_->setFont( QFont("Helvetica",25)); pauseLabel_->setAlignment( Qt::AlignCenter); pauseLabel_->setVisible( false ); // Welcome label for first touch welcomeLabel_ = new QLabel( tr("Welcome! Please touch to start game.
" - "Then touch to end turn.
")); + "Then touch to end turn."),this); welcomeLabel_->setFont( QFont("Helvetica",25)); welcomeLabel_->setAlignment( Qt::AlignCenter); welcomeLabel_->setVisible( true ); // Show welcome message @@ -71,15 +72,26 @@ ClocksWidget::ClocksWidget(ChessClock *white, ChessClock *black, QWidget *parent // Put all in layout QVBoxLayout* mainLayout = new QVBoxLayout; mainLayout->addLayout(clockLayout); - mainLayout->addWidget(pauseLabel_); - mainLayout->addWidget(welcomeLabel_); + + // Extra layout and widget for information + QVBoxLayout* extraLayout = new QVBoxLayout; + extraLayout->addWidget(pauseLabel_); + extraLayout->addWidget(welcomeLabel_); QHBoxLayout* pbLayout = new QHBoxLayout; pbLayout->addStretch(); pbLayout->addWidget(pauseButton_); pbLayout->addStretch(); - mainLayout->addLayout(pbLayout); + extraLayout->addLayout(pbLayout); + + QWidget* extraWidget = new QWidget(this); + extraWidget->setLayout(extraLayout); + // Some fun event filtering to grap clicking welcome and pause labels... + extraWidget->installEventFilter(this); + pauseLabel_->installEventFilter(this); + welcomeLabel_->installEventFilter(this); + mainLayout->addWidget(extraWidget); setLayout( mainLayout); status_ = Welcome; @@ -180,7 +192,7 @@ void ClocksWidget::mouseReleaseEvent(QMouseEvent *event) break; case BlackPause: // Continue play - keeper_->keepScreenLit(); + keeper_->keepScreenLit(false); pauseLabel_->setVisible(false); pauseButton_->setVisible(true); black_->continueTurn(); @@ -196,4 +208,18 @@ void ClocksWidget::mouseReleaseEvent(QMouseEvent *event) recentY = event->y(); } +// to grap clicking pause or welcome label +bool ClocksWidget::eventFilter(QObject *obj, QEvent *event) +{ + if (event->type() == QEvent::MouseButtonRelease) { + QMouseEvent *mEvent = static_cast(event); + mouseReleaseEvent( mEvent ); + return true; + } else { + // standard event processing + return QObject::eventFilter(obj, event); + } +} + + int const ClocksWidget::CLICKDELAY; diff --git a/classes/clockswidget.h b/classes/clockswidget.h index e629ab3..2c0fe1a 100644 --- a/classes/clockswidget.h +++ b/classes/clockswidget.h @@ -54,6 +54,7 @@ public: protected: void mouseReleaseEvent(QMouseEvent *event); + bool eventFilter(QObject *obj, QEvent *event); signals: