[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdepim/akregator/src
From: Frank Osterfeld <frank.osterfeld () kdemail ! net>
Date: 2009-12-05 19:45:56
Message-ID: 1260042356.489500.6046.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 1059084 by osterfeld:
merge from 4.3 branch
------------------------------------------------------------------------
r988358 | osterfeld | 2009-06-27 23:36:41 +0200 (Sat, 27 Jun 2009) | 3 lines
don't crash when passing feeds to add via cmd line option
BUG:193963
------------------------------------------------------------------------
M +23 -7 akregator_part.cpp
M +13 -0 akregator_part.h
--- trunk/KDE/kdepim/akregator/src/akregator_part.cpp #1059083:1059084
@@ -359,6 +359,8 @@
}
bool Part::openFile() {
+ if ( m_loadFeedListCommand || m_standardListLoaded )
+ return true;
std::auto_ptr<LoadFeedListCommand> cmd( new LoadFeedListCommand( m_mainWidget ) );
cmd->setParentWidget( m_mainWidget );
cmd->setStorage( Kernel::self()->storage() );
@@ -366,7 +368,8 @@
cmd->setDefaultFeedList( createDefaultFeedList() );
connect( cmd.get(), SIGNAL(result(boost::shared_ptr<Akregator::FeedList>)),
this, SLOT(feedListLoaded(boost::shared_ptr<Akregator::FeedList>)) );
- cmd.release()->start();
+ m_loadFeedListCommand = cmd.release();
+ m_loadFeedListCommand->start();
return true;
}
@@ -381,16 +384,29 @@
}
void Part::feedListLoaded( const shared_ptr<FeedList>& list ) {
+ assert( !m_standardListLoaded );
m_mainWidget->setFeedList( list );
m_standardListLoaded = list != 0;
if( Settings::markAllFeedsReadOnStartup() )
m_mainWidget->slotMarkAllFeedsRead();
+ if ( m_standardListLoaded )
+ QTimer::singleShot( 0, this, SLOT(flushAddFeedRequests()) );
+
if (Settings::fetchOnStartup())
m_mainWidget->slotFetchAllFeeds();
}
+void Part::flushAddFeedRequests() {
+ Q_FOREACH( const AddFeedRequest& i, m_requests ) {
+ Q_FOREACH ( const QString& j, i.urls )
+ m_mainWidget->addFeedToGroup( j, i.group );
+ NotificationManager::self()->slotNotifyFeeds( i.urls );
+ }
+ m_requests.clear();
+}
+
void Part::slotSaveFeedList()
{
// don't save to the standard feed list, when it wasn't completely loaded before
@@ -523,12 +539,12 @@
void Part::addFeedsToGroup(const QStringList& urls, const QString& group)
{
- for (QStringList::ConstIterator it = urls.begin(); it != urls.end(); ++it)
- {
- kDebug() <<"Akregator::Part::addFeedToGroup adding feed with URL" << *it <<" to group" << group;
- m_mainWidget->addFeedToGroup(*it, group);
- }
- NotificationManager::self()->slotNotifyFeeds(urls);
+ AddFeedRequest req;
+ req.group = group;
+ req.urls = urls;
+ m_requests.append( req );
+ if ( m_standardListLoaded )
+ flushAddFeedRequests();
}
void Part::addFeed()
--- trunk/KDE/kdepim/akregator/src/akregator_part.h #1059083:1059084
@@ -26,6 +26,9 @@
#ifndef AKREGATOR_PART_H
#define AKREGATOR_PART_H
+#include <QPointer>
+#include <QVector>
+
#include <kurl.h>
#include <kparts/browserextension.h>
#include <kparts/part.h>
@@ -48,6 +51,7 @@
class ActionManagerImpl;
class Feed;
class FeedList;
+class LoadFeedListCommand;
class MainWidget;
class Part;
class TrayIcon;
@@ -164,6 +168,8 @@
void feedListLoaded( const boost::shared_ptr<Akregator::FeedList>& list );
+ void flushAddFeedRequests();
+
private: // methods
/** fills the font settings with system fonts, if fonts are not set */
@@ -171,6 +177,7 @@
bool writeToTextFile( const QString& data, const QString& fname ) const;
+
private: // attributes
class ApplyFiltersInterceptor;
@@ -188,6 +195,12 @@
Backend::Storage* m_storage;
ActionManagerImpl* m_actionManager;
KCMultiDialog* m_dialog;
+ struct AddFeedRequest {
+ QStringList urls;
+ QString group;
+ };
+ QPointer<LoadFeedListCommand> m_loadFeedListCommand;
+ QVector<AddFeedRequest> m_requests;
};
} // namespace Akregator
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic