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

List:       kde-commits
Subject:    [publictransport] engine: Fix timetable data source updates
From:       Friedrich_Karl_Tilman_Pülz <fpuelz () gmx ! de>
Date:       2012-11-30 20:36:58
Message-ID: 20121130203658.13F72A60E8 () git ! kde ! org
[Download RAW message or body]

Git commit 76e65260b6fdccfe8a502eb6bc200068912e3468 by Friedrich Karl Tilman Pülz.
Committed on 29/11/2012 at 18:16.
Pushed by fkpulz into branch 'master'.

Fix timetable data source updates

Used dataSourceFromAdditionalDataTimer() with an
"update timer", rename function to dataSourceFromTimer()
and test for all timers of the data sources.

M  +15   -13   engine/publictransportdataengine.cpp
M  +1    -1    engine/publictransportdataengine.h

http://commits.kde.org/publictransport/76e65260b6fdccfe8a502eb6bc200068912e3468

diff --git a/engine/publictransportdataengine.cpp b/engine/publictransportdataengine.cpp
index b38a8ea..0a2d20c 100644
--- a/engine/publictransportdataengine.cpp
+++ b/engine/publictransportdataengine.cpp
@@ -1680,19 +1680,19 @@ void PublicTransportEngine::updateTimeout()
 {
     // Find the timetable data source to which the timer belongs which timeout() signal was emitted
     QTimer *timer = qobject_cast< QTimer* >( sender() );
-    TimetableDataSource *dataSource = dataSourceFromAdditionDataTimer( timer );
-    if ( dataSource ) {
-        // Found the timetable data source of the timer,
-        // requests updates for all connected sources (possibly multiple combined stops)
-        foreach ( const QString &sourceName, dataSource->usingDataSources() ) {
-            updateTimetableDataSource( SourceRequestData(sourceName) );
-        }
+    TimetableDataSource *dataSource = dataSourceFromTimer( timer );
+    if ( !dataSource ) {
+        // No data source found that started the timer,
+        // should not happen the data source should have deleted the timer on destruction
+        kWarning() << "Timeout received from an unknown update timer";
         return;
     }
 
-    // No data source found that started the timer,
-    // should not happen the data source should have deleted the timer on destruction
-    kWarning() << "Timeout received from an unknown update timer";
+    // Found the timetable data source of the timer,
+    // requests updates for all connected sources (possibly multiple combined stops)
+    foreach ( const QString &sourceName, dataSource->usingDataSources() ) {
+        updateTimetableDataSource( SourceRequestData(sourceName) );
+    }
 }
 
 void PublicTransportEngine::additionalDataReceived( ServiceProvider *provider,
@@ -1765,13 +1765,15 @@ void PublicTransportEngine::additionalDataReceived( ServiceProvider *provider,
     emit additionalDataRequestFinished( item, true );
 }
 
-TimetableDataSource *PublicTransportEngine::dataSourceFromAdditionDataTimer( QTimer *timer ) const
+TimetableDataSource *PublicTransportEngine::dataSourceFromTimer( QTimer *timer ) const
 {
     for ( QHash< QString, DataSource* >::ConstIterator it = m_dataSources.constBegin();
           it != m_dataSources.constEnd(); ++it )
     {
         TimetableDataSource *dataSource = dynamic_cast< TimetableDataSource* >( *it );
-        if ( dataSource && dataSource->updateAdditionalDataDelayTimer() == timer ) {
+        if ( dataSource && (dataSource->updateAdditionalDataDelayTimer() == timer ||
+                            dataSource->updateTimer() == timer) ) 
+        {
             return dataSource;
         }
     }
@@ -1784,7 +1786,7 @@ void PublicTransportEngine::updateDataSourcesWithNewAdditionData()
 {
     QTimer *updateDelayTimer = qobject_cast< QTimer* >( sender() );
     Q_ASSERT( updateDelayTimer );
-    TimetableDataSource *dataSource = dataSourceFromAdditionDataTimer( updateDelayTimer );
+    TimetableDataSource *dataSource = dataSourceFromTimer( updateDelayTimer );
     if ( !dataSource ) {
         kWarning() << "Data source was already removed";
         return;
diff --git a/engine/publictransportdataengine.h b/engine/publictransportdataengine.h
index 83d2a31..27626c8 100644
--- a/engine/publictransportdataengine.h
+++ b/engine/publictransportdataengine.h
@@ -714,7 +714,7 @@ private:
             QObject *parent = 0, const QSharedPointer<KConfig> &cache = QSharedPointer<KConfig>(0) );
 
     /** @brief Get the timetable data source that uses the given @p timer. */
-    TimetableDataSource *dataSourceFromAdditionDataTimer( QTimer *timer ) const;
+    TimetableDataSource *dataSourceFromTimer( QTimer *timer ) const;
 
     bool enoughDataAvailable( DataSource *dataSource, const SourceRequestData &sourceData ) const;
 

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

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