21 #include "groupconfig.h"
23 #include "groupconfigcommon.h"
24 #include "memberconfig.h"
25 #include "memberinfo.h"
26 #include "pluginpicker.h"
27 #include "syncprocess.h"
28 #include "syncprocessmanager.h"
30 #include <libqopensync/group.h>
31 #include <libqopensync/plugin.h>
34 #include <kiconloader.h>
35 #include <kjanuswidget.h>
36 #include <tdelocale.h>
37 #include <tdemessagebox.h>
42 #include <tqpushbutton.h>
44 GroupConfig::GroupConfig( TQWidget *parent )
47 TQBoxLayout *topLayout =
new TQVBoxLayout(
this );
48 topLayout->setSpacing( KDialog::spacingHint() );
50 TQFrame *titleFrame =
new TQFrame(
this );
51 topLayout->addWidget( titleFrame );
53 titleFrame->setPaletteForegroundColor( colorGroup().light() );
54 titleFrame->setPaletteBackgroundColor( colorGroup().mid() );
56 TQBoxLayout *nameLayout =
new TQHBoxLayout( titleFrame );
57 nameLayout->setMargin( 4 );
59 TQPixmap icon = TDEGlobal::iconLoader()->loadIcon(
"kontact_summary",
62 TQLabel *iconLabel =
new TQLabel( titleFrame );
63 iconLabel->setPixmap( icon );
64 nameLayout->addWidget( iconLabel );
66 nameLayout->addSpacing( 8 );
68 TQLabel *label =
new TQLabel( i18n(
"Group:"), titleFrame );
69 TQFont font = label->font();
71 font.setPointSize( font.pointSize() + 2 );
72 label->setFont( font );
73 nameLayout->addWidget( label );
75 mNameLabel =
new TQLabel( titleFrame );
76 font = mNameLabel->font();
78 font.setPointSize( font.pointSize() + 2 );
79 mNameLabel->setFont( font );
80 nameLayout->addWidget( mNameLabel );
82 nameLayout->addStretch( 1 );
84 mMemberView =
new KJanusWidget(
this, 0, KJanusWidget::IconList );
85 topLayout->addWidget( mMemberView );
87 TQBoxLayout *buttonLayout =
new TQHBoxLayout( topLayout );
89 TQPushButton *addButton =
new TQPushButton( i18n(
"Add Member..."),
this );
90 connect( addButton, TQT_SIGNAL( clicked() ), TQT_SLOT( addMember() ) );
91 buttonLayout->addWidget( addButton );
93 buttonLayout->addStretch( 1 );
95 icon = TDEGlobal::iconLoader()->loadIcon(
"bookmark", TDEIcon::Desktop );
96 TQFrame *page = mMemberView->addPage( i18n(
"Group"),
97 i18n(
"General Group Settings"), icon );
98 TQBoxLayout *pageLayout =
new TQVBoxLayout( page );
100 mCommonConfig =
new GroupConfigCommon( page );
101 pageLayout->addWidget( mCommonConfig );
104 void GroupConfig::setSyncProcess( SyncProcess *process )
108 mNameLabel->setText( mProcess->group().name() );
109 mCommonConfig->setSyncProcess( mProcess );
114 void GroupConfig::updateMembers()
116 TQValueList<MemberConfig *>::ConstIterator memberIt;
117 for ( memberIt = mMemberConfigs.begin(); memberIt != mMemberConfigs.end(); ++memberIt )
118 (*memberIt)->saveData();
120 TQValueList<TQFrame *>::ConstIterator it2;
121 for ( it2 = mConfigPages.begin(); it2 != mConfigPages.end(); ++it2 ) {
122 mMemberView->removePage( *it2 );
125 mConfigPages.clear();
126 mMemberConfigs.clear();
128 QSync::Group group = mProcess->group();
129 QSync::Group::Iterator it( group.begin() );
130 for ( ; it != group.end(); ++it ) {
131 QSync::Member member = *it;
132 MemberInfo mi( member );
133 TQFrame *page = mMemberView->addPage( mi.name(),
134 TQString(
"%1 (%2)" ).arg( mi.name() ).arg(member.pluginName()), mi.desktopIcon() );
136 TQBoxLayout *pageLayout =
new TQVBoxLayout( page );
137 mConfigPages.append( page );
139 MemberConfig *memberConfig =
new MemberConfig( page, member );
140 mMemberConfigs.append( memberConfig );
141 pageLayout->addWidget( memberConfig );
143 memberConfig->loadData();
147 void GroupConfig::saveConfig()
149 mProcess->group().save();
151 TQValueList<MemberConfig *>::ConstIterator it;
152 for ( it = mMemberConfigs.begin(); it != mMemberConfigs.end(); ++it )
155 mCommonConfig->save();
157 mProcess->reinitEngine();
160 void GroupConfig::addMember()
162 QSync::Plugin plugin = PluginPickerDialog::getPlugin(
this );
164 if ( plugin.isValid() ) {
165 QSync::Result result = SyncProcessManager::self()->addMember( mProcess, plugin );
166 if ( result.isError() ) {
167 KMessageBox::error(
this, i18n(
"Error adding member %1\n%2\nType: %3")
168 .arg( plugin.name() ).arg( result.message() ).arg( result.type() ) );
173 int index = mMemberView->pageIndex( mConfigPages.last() );
174 mMemberView->showPage( index );
179 #include "groupconfig.moc"