23 #include "configguisunbird.h"
26 #include <tqtabwidget.h>
29 #include <tqbuttongroup.h>
30 #include <tqcheckbox.h>
31 #include <tqsizepolicy.h>
32 #include <tqptrlist.h>
33 #include <tqspinbox.h>
36 #include <kurlrequester.h>
37 #include <klineedit.h>
38 #include <kpushbutton.h>
40 #include <tdelocale.h>
43 ConfigGuiSunbird::ConfigGuiSunbird(
const QSync::Member &member, TQWidget *parent )
44 : ConfigGui( member, parent )
46 TQTabWidget *tabWidget =
new TQTabWidget(
this );
47 topLayout()->addWidget( tabWidget );
49 mLocalWidget =
new TQWidget( tabWidget );
50 mLocalLayout =
new TQVBoxLayout( mLocalWidget, KDialog::spacingHint() );
52 mWebdavWidget =
new TQWidget( tabWidget );
53 mWebdavLayout =
new TQVBoxLayout( mWebdavWidget, KDialog::spacingHint() );
55 tabWidget->addTab( mLocalWidget, i18n(
"Local Calendars" ) );
56 tabWidget->addTab( mWebdavWidget, i18n(
"WebDAV Calendars" ) );
58 KPushButton *mLocalAddButton =
new KPushButton( mLocalWidget );
59 mLocalAddButton->setText( i18n(
"Add new calendar" ) );
60 mLocalAddButton->setSizePolicy( TQSizePolicy( TQSizePolicy::Fixed, TQSizePolicy::Fixed ) );
61 mLocalLayout->addWidget( mLocalAddButton );
62 connect( mLocalAddButton, TQT_SIGNAL( clicked() ),
63 this, TQT_SLOT( addLocalCalendar() ) );
65 KPushButton *mWebdavAddButton =
new KPushButton( mWebdavWidget );
66 mWebdavAddButton->setText( i18n(
"Add new calendar" ) );
67 mWebdavAddButton->setSizePolicy( TQSizePolicy( TQSizePolicy::Fixed, TQSizePolicy::Fixed ) );
68 mWebdavLayout->addWidget( mWebdavAddButton );
69 connect( mWebdavAddButton, TQT_SIGNAL( clicked() ),
70 this, TQT_SLOT( addWebdavCalendar() ) );
72 mLocalSpacer =
new TQSpacerItem( 20, 40, TQSizePolicy::Expanding );
73 mLocalLayout->addItem( mLocalSpacer );
74 mWebdavSpacer =
new TQSpacerItem( 20, 40, TQSizePolicy::Expanding );
75 mWebdavLayout->addItem( mWebdavSpacer );
78 void ConfigGuiSunbird::load(
const TQString &xml )
88 doc.setContent( xml );
89 TQDomElement docElement = doc.documentElement();
91 for( node = docElement.firstChild(); !node.isNull(); node = node.nextSibling() ) {
92 TQDomElement element = node.toElement();
93 if ( element.tagName() ==
"file" ) {
94 TQDomAttr pathAttr = element.attributeNode(
"path" );
95 path = pathAttr.value();
96 TQDomAttr defaultAttr = element.attributeNode(
"default" );
97 defaultcal = defaultAttr.value();
98 TQDomAttr daysAttr = element.attributeNode(
"deletedaysold" );
99 days = daysAttr.value();
101 LocalCalendar *cal =
new LocalCalendar( path, defaultcal, days, mLocalWidget );
102 mLocalLayout->removeItem( mLocalSpacer );
103 cal->setSizePolicy( TQSizePolicy( TQSizePolicy::Expanding, TQSizePolicy::Fixed ) );
104 mLocalLayout->addWidget( cal );
105 mLocalLayout->addItem( mLocalSpacer );
106 mLocalList.append( cal );
108 connect( cal, TQT_SIGNAL( deleteRequest( LocalCalendar* ) ), TQT_SLOT( delLocalCalendar( LocalCalendar* ) ) );
110 }
else if ( element.tagName() ==
"webdav" ) {
111 TQDomAttr urlAttr = element.attributeNode(
"url" );
112 url = urlAttr.value();
113 TQDomAttr unameAttr = element.attributeNode(
"username" );
114 username = unameAttr.value();
115 TQDomAttr pwordAttr = element.attributeNode(
"password" );
116 password = pwordAttr.value();
117 TQDomAttr defaultAttr = element.attributeNode(
"default" );
118 defaultcal = defaultAttr.value();
119 TQDomAttr daysAttr = element.attributeNode(
"deletedaysold" );
120 days = daysAttr.value();
122 WebdavCalendar *cal =
new WebdavCalendar( username, password,
123 url, defaultcal, days, mWebdavWidget );
124 mWebdavLayout->removeItem( mWebdavSpacer );
125 cal->setSizePolicy( TQSizePolicy( TQSizePolicy::Expanding, TQSizePolicy::Fixed ) );
126 mWebdavLayout->addWidget( cal );
127 mWebdavLayout->addItem( mWebdavSpacer );
128 mWebdavList.append( cal );
130 connect( cal, TQT_SIGNAL( deleteRequest( WebdavCalendar* ) ), TQT_SLOT( delWebdavCalendar( WebdavCalendar* ) ) );
136 TQString ConfigGuiSunbird::save()
const
138 TQString config =
"<config>\n";
140 for ( uint i = 0; i < mLocalList.count(); ++i ) {
141 LocalCalendar *lcal = mLocalList[ i ];
142 config += TQString(
"<file " );
143 config += TQString(
"path=\"%1\" " ).arg( lcal->mPathRequester->url() );
145 if ( lcal->mDaysCheckBox->isChecked() ) {
146 config += TQString(
"deletedaysold=\"%1\" " ).arg( lcal->mDaysSpinBox->value() );
148 if ( lcal->mDefaultCheckBox->isChecked() ) {
149 config += TQString(
"default=\"1\" " );
151 config += TQString(
"/>\n" );
154 for ( uint i = 0; i < mWebdavList.count(); ++i ) {
155 WebdavCalendar *wcal = mWebdavList[ i ];
156 config += TQString(
"<webdav " );
157 config += TQString(
"username=\"%1\" " ).arg( wcal->mUsername->text() );
158 config += TQString(
"password=\"%1\" " ).arg( wcal->mPassword->text() );
159 config += TQString(
"url=\"%1\" " ).arg( wcal->mUrl->text() );
161 if ( wcal->mDaysCheckBox->isChecked() ) {
162 config += TQString(
"deletedaysold=\"%1\" " ).arg( wcal->mDaysSpinBox->value() );
164 if ( wcal->mDefaultCheckBox->isChecked() ) {
165 config += TQString(
"default=\"1\" " );
167 config += TQString(
"/>\n" );
169 config +=
"</config>";
174 void ConfigGuiSunbird::addLocalCalendar()
176 LocalCalendar *cal =
new LocalCalendar( mLocalWidget );
177 mLocalLayout->removeItem( mLocalSpacer );
178 cal->setSizePolicy( TQSizePolicy( TQSizePolicy::Expanding, TQSizePolicy::Fixed ) );
179 mLocalLayout->addWidget( cal );
180 mLocalLayout->addItem( mLocalSpacer );
181 mLocalList.append( cal );
183 connect( cal, TQT_SIGNAL( deleteRequest( LocalCalendar* ) ), TQT_SLOT( delLocalCalendar( LocalCalendar* ) ) );
187 void ConfigGuiSunbird::delLocalCalendar( LocalCalendar *calendar )
189 mLocalList.remove( calendar );
190 calendar->deleteLater();
193 void ConfigGuiSunbird::addWebdavCalendar()
195 WebdavCalendar *cal =
new WebdavCalendar( mWebdavWidget );
196 mWebdavLayout->removeItem( mWebdavSpacer );
197 cal->setSizePolicy( TQSizePolicy( TQSizePolicy::Expanding, TQSizePolicy::Fixed ) );
198 mWebdavLayout->addWidget( cal );
199 mWebdavLayout->addItem( mWebdavSpacer );
200 mWebdavList.append( cal );
202 connect( cal, TQT_SIGNAL( deleteRequest( WebdavCalendar* ) ), TQT_SLOT( delWebdavCalendar( WebdavCalendar* ) ) );
206 void ConfigGuiSunbird::delWebdavCalendar( WebdavCalendar *calendar )
208 mWebdavList.remove( calendar );
209 calendar->deleteLater();
212 LocalCalendar::LocalCalendar( TQWidget *parent )
218 LocalCalendar::LocalCalendar(
const TQString &path,
const TQString &defaultcal,
const TQString &days, TQWidget *parent )
223 mPathRequester->setURL( path );
224 mDefaultCheckBox->setChecked( defaultcal.toInt() == 1 );
226 if ( !days.isEmpty() ) {
227 mDaysCheckBox->setChecked(
true );
228 mDaysSpinBox->setEnabled(
true );
229 mDaysSpinBox->setValue( days.toInt() );
233 void LocalCalendar::initGui()
235 TQBoxLayout *bottomLayout =
new TQHBoxLayout();
237 mDaysCheckBox =
new TQCheckBox(
this );
238 mDaysCheckBox->setText( i18n(
"Sync only events newer than" ) );
240 mDaysSpinBox =
new TQSpinBox(
this );
241 mDaysSpinBox->setDisabled(
true );
242 mDaysSpinBox->setSizePolicy( TQSizePolicy( TQSizePolicy::Fixed, TQSizePolicy::Fixed ) );
244 connect( mDaysCheckBox, TQT_SIGNAL( toggled(
bool ) ),
245 this, TQT_SLOT( toggleDays(
bool ) ) );
247 bottomLayout->addWidget( mDaysCheckBox );
248 bottomLayout->addWidget( mDaysSpinBox );
249 bottomLayout->addWidget(
new TQLabel( i18n(
"day(s)" ),
this ) );
251 TQGridLayout *localLayout =
new TQGridLayout(
this );
253 mPathRequester =
new KURLRequester(
this );
255 KPushButton *removeButton =
new KPushButton(
this );
256 removeButton->setSizePolicy( TQSizePolicy( TQSizePolicy::Fixed, TQSizePolicy::Fixed ) );
257 removeButton->setText( i18n(
"Remove" ) );
258 connect( removeButton, TQT_SIGNAL( clicked() ),
259 this, TQT_SLOT( deleteWidget() ) );
261 mDefaultCheckBox =
new TQCheckBox(
this );
262 mDefaultCheckBox->setText( i18n(
"Set as Default" ) );
264 localLayout->addItem(
new TQSpacerItem( 40, 20, TQSizePolicy::Expanding ), 0, 0 );
265 localLayout->addWidget(
new TQLabel( i18n(
"Location:" ),
this ), 1, 0 );
266 localLayout->addWidget( mPathRequester, 1, 1 );
267 localLayout->addItem(
new TQSpacerItem( 40, 20, TQSizePolicy::Fixed ), 1, 2 );
268 localLayout->addWidget( removeButton, 1, 3 );
269 localLayout->addMultiCellLayout( bottomLayout, 2, 2, 0, 2 );
270 localLayout->addWidget( mDefaultCheckBox, 2, 3 );
273 void LocalCalendar::deleteWidget()
275 emit deleteRequest(
this );
278 WebdavCalendar::WebdavCalendar( TQWidget *parent )
284 WebdavCalendar::WebdavCalendar(
const TQString &username,
const TQString &password,
const TQString &url,
285 const TQString &defaultcal,
const TQString &days, TQWidget *parent )
290 mUsername->setText( username );
291 mPassword->setText( password );
292 mUrl->setText( url );
293 mDefaultCheckBox->setChecked( defaultcal.toInt() == 1 );
295 if ( !days.isEmpty() ) {
296 mDaysCheckBox->setChecked(
true );
297 mDaysSpinBox->setEnabled(
true );
298 mDaysSpinBox->setValue( days.toInt() );
302 void WebdavCalendar::initGui()
304 TQBoxLayout *bottomLayout =
new TQHBoxLayout();
306 mDaysCheckBox =
new TQCheckBox(
this );
307 mDaysCheckBox->setText( i18n(
"Sync only events newer than" ) );
309 mDaysSpinBox =
new TQSpinBox(
this );
310 mDaysSpinBox->setDisabled(
true );
311 mDaysSpinBox->setSizePolicy( TQSizePolicy( TQSizePolicy::Fixed, TQSizePolicy::Fixed ) );
313 connect( mDaysCheckBox, TQT_SIGNAL( toggled(
bool ) ),
314 this, TQT_SLOT( toggleDays(
bool ) ) );
316 bottomLayout->addWidget( mDaysCheckBox );
317 bottomLayout->addWidget( mDaysSpinBox );
318 bottomLayout->addWidget(
new TQLabel( i18n(
"day(s)" ),
this ) );
320 TQGridLayout *webdavLayout =
new TQGridLayout();
322 mUrl =
new KLineEdit(
this );
323 mUsername =
new KLineEdit(
this );
324 mPassword =
new KLineEdit(
this );
325 mPassword->setEchoMode( KLineEdit::Password );
327 KPushButton *removeButton =
new KPushButton(
this );
328 removeButton->setText( i18n(
"Remove" ) );
329 connect( removeButton, TQT_SIGNAL( clicked() ),
330 this, TQT_SLOT( deleteWidget() ) );
332 mDefaultCheckBox =
new TQCheckBox(
this );
333 mDefaultCheckBox->setText( i18n(
"Set as Default" ) );
335 webdavLayout->addWidget(
new TQLabel( i18n(
"Location:" ),
this ), 0, 0 );
336 webdavLayout->addWidget( mUrl, 0, 1 );
337 webdavLayout->addItem(
new TQSpacerItem( 40, 20, TQSizePolicy::Fixed ), 0, 2 );
338 webdavLayout->addWidget( removeButton, 0, 3 );
339 webdavLayout->addMultiCellLayout( bottomLayout, 1, 1, 0, 1 );
340 webdavLayout->addWidget( mDefaultCheckBox, 1, 3 );
342 TQGridLayout *mainLayout =
new TQGridLayout(
this );
343 mainLayout->addItem(
new TQSpacerItem( 40, 20, TQSizePolicy::Fixed ), 0, 0 );
344 mainLayout->addMultiCellLayout( webdavLayout, 1, 1, 0, 4 );
345 mainLayout->addWidget(
new TQLabel( i18n(
"Username:" ),
this ), 2, 0 );
346 mainLayout->addWidget( mUsername, 2, 1 );
347 mainLayout->addItem(
new TQSpacerItem( 40, 20, TQSizePolicy::Fixed ), 2, 2 );
348 mainLayout->addWidget(
new TQLabel( i18n(
"Password:" ),
this ), 2, 3 );
349 mainLayout->addWidget( mPassword, 2, 4 );
352 void WebdavCalendar::deleteWidget()
354 emit deleteRequest(
this );
357 void LocalCalendar::toggleDays(
bool state )
359 mDaysSpinBox->setEnabled( state );
362 void WebdavCalendar::toggleDays(
bool state )
364 mDaysSpinBox->setEnabled( state );
367 #include "configguisunbird.moc"