Screen will turn black after 30 min
[chessclock] / classes / chessclock.cpp
index d3b169a..aedf531 100644 (file)
@@ -24,6 +24,7 @@
 #include "turninformation.h"
 
 const int ChessClock::UPDATEINTERVAL;
+const int ChessClock::DONTEATBATTERYTIME;
 
 ChessClock::ChessClock(bool white, QWidget *parent) :
     QWidget(parent)
@@ -31,9 +32,11 @@ ChessClock::ChessClock(bool white, QWidget *parent) :
     isWhite_ = white;
     loser_ = false;
     turn_ = 0;
+    dontEatBatteryEmitted_ = false;
     timePlayedBeforeTurn_ = 0;
     status_ = NotRunning;
     another_ = 0;
+    currentTurn_ = 0;
 
     // Set clock timer calculating played time
     clockTime_.start();
@@ -46,6 +49,7 @@ ChessClock::ChessClock(bool white, QWidget *parent) :
 void ChessClock::startTurn()
 {
     turn_++;
+    dontEatBatteryEmitted_ = false;
 
     // Turn information for this new turn
     currentTurn_ = new TurnInformation(turn_, isWhite_);
@@ -79,21 +83,24 @@ void ChessClock::continueTurn()
 
 TurnInformation* ChessClock::endTurn()
 {
-    status_ = NotRunning;
     updateTimer_.stop();
-    // Update turn time
-    currentTurn_->addTime( clockTime_.restart());
+    status_ = NotRunning;
+
+    updateClock();
     // Count time played
     timePlayedBeforeTurn_ = getTimePlayed();
+
     // Count time available
+    // This update current turn
     timeAvailableBeforeTurn_ = getTimeAvailable();
-    updateClock();
+
 
     // Close and return turn information
     currentTurn_->turnReady(timeAvailableBeforeTurn_ );
     TurnInformation* information = currentTurn_;
     currentTurn_ = 0;
-    emit endTurn();
+
+    emit turnEnded();
     return information;
 }
 
@@ -109,21 +116,16 @@ int ChessClock::getTimeAvailable()
     if( currentTurn_)
     {
         // Update turn time
-        currentTurn_->addTime( clockTime_.restart());
-        return timeAvailableBeforeTurn_-currentTurn_->getDuration();
+        return timeAvailableBeforeTurn_-currentTurnPlayed();
     }
     else
         return timeAvailableBeforeTurn_;
 }
 
 
-int ChessClock::getTimePlayed() const
+int ChessClock::getTimePlayed()
 {
-    // Count time played time
-    if( currentTurn_ )
-        return timePlayedBeforeTurn_ + currentTurn_->getDuration();
-    else
-        return timePlayedBeforeTurn_;
+     return timePlayedBeforeTurn_ + currentTurnPlayed();
 }
 
 
@@ -132,6 +134,38 @@ void ChessClock::setTimeAvailable(int msecs)
     timeAvailableBeforeTurn_ = msecs;
 }
 
+
+void ChessClock::addTime(int msecs)
+{
+   timeAvailableBeforeTurn_ += msecs;
+}
+
+int ChessClock::currentTurnPlayed()
+{
+    if( currentTurn_ )
+    {
+        // Update current time
+        if( status_ == Running )
+        {
+            currentTurn_->addTime( clockTime_.restart());
+
+            // since 1.1.2
+            // emit dontEatBattery signal when screen should not to be keeped on
+            if ( currentTurn_->getDuration() > DONTEATBATTERYTIME  && dontEatBatteryEmitted_ == false )
+            {
+                dontEatBatteryEmitted_ = true;
+                emit dontEatBattery();
+            }
+        }
+
+        // Return current time
+        return currentTurn_->getDuration();
+     }
+    else
+        // No current turn!
+        return 0;
+}
+
 void ChessClock::updateClock()
 {
     // Check loser