[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdepim/akregator/src
From: Artur Duque de Souza <asouza () kde ! org>
Date: 2010-09-12 18:59:37
Message-ID: 20100912185937.940DDAC887 () svn ! kde ! org
[Download RAW message or body]
SVN commit 1174532 by asouza:
Export articles (signals), plugins with parents and KCModules as plugins
This patch export the selected articles with a signal, enabling plugins to
know which articles are selected and perform actions.
It also set's akregator_part as the parent of the plugins, enabling them to
connect to it's signals and have a way of communicating with it (like getting
the signal of selected articles).
Also load the config modules looking for them on service trade, instead of
hardcoding: this way it's easier to provide config modules for plugins: it just
needs a proper .desktop file.
Reviewed-by: Frank
M +8 -14 akregator_part.cpp
M +2 -1 akregator_part.h
M +3 -0 mainwidget.cpp
M +3 -0 mainwidget.h
M +2 -2 pluginmanager.cpp
M +1 -1 pluginmanager.h
--- trunk/KDE/kdepim/akregator/src/akregator_part.cpp #1174531:1174532
@@ -245,6 +245,8 @@
kapp, SLOT(quit())) ;
connect( m_mainWidget, SIGNAL(signalUnreadCountChanged(int)), trayIcon, \
SLOT(slotSetUnread(int)) ); + connect( m_mainWidget, \
SIGNAL(signalArticlesSelected(QList<Akregator::Article>)), + this, \
SIGNAL(signalArticlesSelected(QList<Akregator::Article>)) );
connect(kapp, SIGNAL(aboutToQuit()), this, SLOT(slotOnShutdown()));
@@ -270,7 +272,7 @@
const KService::List offers = PluginManager::query( \
QString::fromLatin1("[X-KDE-akregator-plugintype] == '%1'").arg( type ) );
Q_FOREACH ( const KService::Ptr& i, offers ) {
- Akregator::Plugin* plugin = PluginManager::createFromService( i );
+ Akregator::Plugin* plugin = PluginManager::createFromService( i, this );
if ( !plugin )
continue;
plugin->initialize();
@@ -581,19 +583,11 @@
connect( m_dialog, SIGNAL(configCommitted()),
TrayIcon::getInstance(), SLOT(settingsChanged()) );
- QStringList modules;
-
- modules.append( "akregator_config_general.desktop" );
- modules.append( "akregator_config_onlinesync.desktop" );
- modules.append( "akregator_config_archive.desktop" );
- modules.append( "akregator_config_appearance.desktop" );
- modules.append( "akregator_config_browser.desktop" );
- modules.append( "akregator_config_advanced.desktop" );
-
- // add them all
- QStringList::iterator mit;
- for ( mit = modules.begin(); mit != modules.end(); ++mit ) {
- m_dialog->addModule( *mit );
+ // query for akregator's kcm modules
+ const QString constraint = "[X-KDE-ParentApp] == 'akregator'";
+ const KService::List offers = KServiceTypeTrader::self()->query( "KCModule", \
constraint ); + foreach( const KService::Ptr &service, offers ) {
+ m_dialog->addModule( service->storageId() );
}
}
--- trunk/KDE/kdepim/akregator/src/akregator_part.h #1174531:1174532
@@ -48,6 +48,7 @@
class Storage;
}
+class Article;
class ActionManagerImpl;
class Feed;
class FeedList;
@@ -145,8 +146,8 @@
signals:
void signalSettingsChanged();
+ void signalArticlesSelected( const QList<Akregator::Article>& );
-
private:
/** @return Whether the tray icon is enabled or not */
--- trunk/KDE/kdepim/akregator/src/mainwidget.cpp #1174531:1174532
@@ -803,6 +803,9 @@
assert( article.isNull() || article.feed() );
+ QList<Article> articles = m_selectionController->selectedArticles();
+ emit signalArticlesSelected( articles );
+
KToggleAction* const maai = qobject_cast<KToggleAction*>( \
m_actionManager->action( "article_set_status_important" ) ); assert( maai );
maai->setChecked( article.keep() );
--- trunk/KDE/kdepim/akregator/src/mainwidget.h #1174531:1174532
@@ -119,6 +119,9 @@
/** emitted when the unread count of "All Feeds" was changed */
void signalUnreadCountChanged(int);
+ /** emitted when the articles selected changed */
+ void signalArticlesSelected(const QList<Akregator::Article>&);
+
public slots:
/** opens the current article (currentItem) in external browser
--- trunk/KDE/kdepim/akregator/src/pluginmanager.cpp #1174531:1174532
@@ -79,7 +79,7 @@
Plugin*
-PluginManager::createFromService( const KService::Ptr service )
+PluginManager::createFromService( const KService::Ptr service, QObject *parent )
{
kDebug() <<"Trying to load:" << service->library();
@@ -90,7 +90,7 @@
" Error message: %2" ).arg( service->library(), \
loader.errorString() ); return 0;
}
- Plugin* const plugin = factory->create<Plugin>();
+ Plugin* const plugin = factory->create<Plugin>( parent );
//put plugin into store
StoreItem item;
--- trunk/KDE/kdepim/akregator/src/pluginmanager.h #1174531:1174532
@@ -70,7 +70,7 @@
* @param service Pointer to KService
* @return Pointer to Plugin, or NULL if error
*/
- static Akregator::Plugin* createFromService( const KService::Ptr service );
+ static Akregator::Plugin* createFromService( const KService::Ptr service, \
QObject *parent = 0 );
/**
* Remove library and delete plugin
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic