[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