[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    KDE/kdeplasma-addons/applets/frame
From:       Anne-Marie Mahfouf <annma () kde ! org>
Date:       2010-04-29 7:12:24
Message-ID: 20100429071224.93C8AAC7E4 () svn ! kde ! org
[Download RAW message or body]

SVN commit 1120544 by annma:

Change the picture of Picture of the Day provider every day 


 M  +24 -5     frame.cpp  
 M  +4 -0      frame.h  


--- trunk/KDE/kdeplasma-addons/applets/frame/frame.cpp #1120543:1120544
@@ -94,6 +94,8 @@
         frameReceivedUrlArgs = true;
     }
 
+    m_currentDay = QDate::currentDate();
+    
     m_slideNumber = 0;
     // Get config values
     KConfigGroup cg = config();
@@ -579,8 +581,7 @@
 void Frame::stopPotd()
 {
     Plasma::DataEngine *engine = dataEngine("potd");
-    QDate mCurrentDate = QDate::currentDate();
-    const QString identifier = m_potdProvider + ':' + mCurrentDate.toString(Qt::ISODate);
+    const QString identifier = m_potdProvider + ':' + m_currentDay.toString(Qt::ISODate);
     engine->disconnectSource(identifier, m_mySlideShow);
 }
 
@@ -594,11 +595,12 @@
         m_mySlideShow->setDirs(m_slideShowPaths, m_recursiveSlideShow);
         m_mySlideShow->setUpdateInterval(m_slideshowTime * 1000);
     } else if (m_potd) {
+        m_dateChangedTimer = new QTimer( this );//change picture at midnight
+        connect( m_dateChangedTimer, SIGNAL( timeout() ), this, SLOT( checkDayChanged() ) );
+        m_dateChangedTimer->start( 60 * 60 * 1000 ); // every hour
         Plasma::DataEngine *engine = dataEngine("potd");
-        QDate mCurrentDate = QDate::currentDate();
-        const QString identifier = m_potdProvider + ':' + mCurrentDate.toString(Qt::ISODate);
+        const QString identifier = m_potdProvider + ':' + m_currentDay.toString(Qt::ISODate);
         engine->connectSource(identifier, m_mySlideShow);
-
     } else { //no slideshow so no random stuff
         m_mySlideShow->setRandom(false);
         m_mySlideShow->setImage(m_currentUrl.url());
@@ -727,9 +729,26 @@
     }
 }
 
+void Frame::checkDayChanged()
+{
+    if ( ( m_currentDay != QDate::currentDate() ) ) {
+        reloadImage();
+    }
+    
+    m_currentDay = QDate::currentDate();
+}
+
 void Frame::reloadImage()
 {
+    if (m_potd) {
+        Plasma::DataEngine *engine = dataEngine("potd");
+        QString identifier = m_potdProvider + ':' + m_currentDay.toString(Qt::ISODate);
+        engine->disconnectSource(identifier, m_mySlideShow);
+        identifier = m_potdProvider + ':' + QDate::currentDate().toString(Qt::ISODate);
+        engine->connectSource(identifier, m_mySlideShow);
+    } else {
     m_mySlideShow->updateImage(m_currentUrl.url());
 }
+}
 
 #include "frame.moc"
--- trunk/KDE/kdeplasma-addons/applets/frame/frame.h #1120543:1120544
@@ -75,6 +75,7 @@
     void scalePictureAndUpdate();
     void imageScaled(const QImage &img);
     void reloadImage();
+    void checkDayChanged();
 
 protected:
     void constraintsEvent(Plasma::Constraints constraints);
@@ -121,6 +122,9 @@
     int m_autoUpdateIntervall;
     bool m_doAutoUpdate;
     QTimer* m_autoUpdateTimer;
+    /// Day Change for PoTD
+    QTimer *m_dateChangedTimer;
+    QDate m_currentDay;
 
     QPixmap m_pixmap;
     QImage m_scaledImage;
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic