Added some fun event filtering to grab pause and welcome message clicks pausebutton
authorArto Hyvättinen <arto.hyvattinen@gmail.com>
Fri, 17 Sep 2010 19:59:42 +0000 (22:59 +0300)
committerArto Hyvättinen <arto.hyvattinen@gmail.com>
Fri, 17 Sep 2010 19:59:42 +0000 (22:59 +0300)
chessclockwindow.cpp
classes/clockswidget.cpp
classes/clockswidget.h

index 43b64cd..ea0d746 100644 (file)
@@ -40,7 +40,7 @@
 #include <QMessageBox>
 #include <QStackedWidget>
 #include <QProcess>
-#include <QAction>
+
 
 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()));
index 82efa89..f094f8d 100644 (file)
@@ -34,6 +34,7 @@
 #include <QMouseEvent>
 #include <QToolButton>
 #include <QSize>
+#include <QWidget>
 
 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("<font color=yellow>Paused. Touch to continue.</font>"));
+    pauseLabel_ = new QLabel( tr("<font color=yellow>Paused. Touch to continue.</font>"),this);
     pauseLabel_->setFont( QFont("Helvetica",25));
     pauseLabel_->setAlignment( Qt::AlignCenter);
     pauseLabel_->setVisible( false );
 
     // Welcome label for first touch
     welcomeLabel_ = new QLabel( tr("<font color=green>Welcome! Please touch to start game.<br>"
-                                   "Then touch to end turn.</font>"));
+                                   "Then touch to end turn.</font>"),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<QMouseEvent *>(event);
+        mouseReleaseEvent( mEvent );
+        return true;
+    } else {
+        // standard event processing
+        return QObject::eventFilter(obj, event);
+    }
+}
+
+
 int const ClocksWidget::CLICKDELAY;
index e629ab3..2c0fe1a 100644 (file)
@@ -54,6 +54,7 @@ public:
 
 protected:
     void mouseReleaseEvent(QMouseEvent *event);
+    bool eventFilter(QObject *obj, QEvent *event);
 
 
 signals: