You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tdepim/kontact/plugins/summary/summaryview_plugin.cpp

127 lines
4.1 KiB

/* This file is part of the KDE project
Copyright (C) 2003 Sven L<EFBFBD>ppken <sven@kde.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
#include "summaryview_plugin.h"
#include "core.h"
#include "summaryview_part.h"
#include <dcopref.h>
#include <kgenericfactory.h>
#include <kparts/componentfactory.h>
#include <kaboutdata.h>
#include <kaction.h>
#include <tqpopupmenu.h>
typedef KGenericFactory< SummaryView, Kontact::Core > SummaryViewFactory;
K_EXPORT_COMPONENT_FACTORY( libkontact_summaryplugin,
SummaryViewFactory( "kontact_summaryplugin" ) )
SummaryView::SummaryView( Kontact::Core *core, const char *name, const TQStringList& )
: Kontact::Plugin( core, TQT_TQOBJECT(core), name),
mAboutData( 0 ), mPart( 0 )
{
setInstance( SummaryViewFactory::instance() );
mSyncAction = new KSelectAction( i18n( "Synchronize All" ), "reload", 0, 0,
0, actionCollection(),
"kontact_summary_sync" );
connect( mSyncAction, TQT_SIGNAL( activated( const TQString& ) ), this, TQT_SLOT( syncAccount( const TQString& ) ) );
connect( mSyncAction->popupMenu(), TQT_SIGNAL( aboutToShow() ), this, TQT_SLOT( fillSyncActionSubEntries() ) );
insertSyncAction( mSyncAction );
fillSyncActionSubEntries();
}
void SummaryView::fillSyncActionSubEntries()
{
TQStringList menuItems;
menuItems.append( i18n("All") );
DCOPRef ref( "kmail", "KMailIface" );
DCOPReply reply = ref.call( "accounts" );
if ( reply.isValid() )
{
const TQStringList accounts = reply;
menuItems += accounts;
}
mSyncAction->clear();
mSyncAction->setItems( menuItems );
}
void SummaryView::syncAccount( const TQString& account )
{
if ( account == i18n("All") ) {
doSync();
} else {
DCOPRef ref( "kmail", "KMailIface" );
ref.send( "checkAccount", account );
}
fillSyncActionSubEntries();
}
SummaryView::~SummaryView()
{
}
void SummaryView::doSync()
{
if ( mPart )
mPart->updateSummaries();
const TQValueList<Kontact::Plugin*> pluginList = core()->pluginList();
for ( TQValueList<Kontact::Plugin*>::ConstIterator it = pluginList.begin(), end = pluginList.end();
it != end; ++it ) {
// execute all sync actions but our own
TQPtrList<KAction> *actions = (*it)->syncActions();
for ( TQPtrList<KAction>::Iterator jt = actions->begin(), end = actions->end(); jt != end; ++jt ) {
if ( *jt != mSyncAction )
(*jt)->activate();
}
}
fillSyncActionSubEntries();
}
KParts::ReadOnlyPart *SummaryView::createPart()
{
mPart = new SummaryViewPart( core(), "summarypartframe", aboutData(),
this, "summarypart" );
return mPart;
}
const KAboutData *SummaryView::aboutData()
{
if ( !mAboutData ) {
mAboutData = new KAboutData( "kontactsummary", I18N_NOOP("Kontact Summary"),
"1.1",
I18N_NOOP("Kontact Summary View"),
KAboutData::License_LGPL,
I18N_NOOP("(c) 2003 The Kontact developers" ) );
mAboutData->addAuthor( "Sven Lueppken", "", "sven@kde.org" );
mAboutData->addAuthor( "Cornelius Schumacher", "", "schumacher@kde.org" );
mAboutData->addAuthor( "Tobias Koenig", "", "tokoe@kde.org" );
mAboutData->setProductName( "kontact/summary" );
}
return mAboutData;
}
#include "summaryview_plugin.moc"