diff options
Diffstat (limited to 'tderesources/lib/folderconfig.cpp')
-rw-r--r-- | tderesources/lib/folderconfig.cpp | 173 |
1 files changed, 173 insertions, 0 deletions
diff --git a/tderesources/lib/folderconfig.cpp b/tderesources/lib/folderconfig.cpp new file mode 100644 index 000000000..20fa6fa1b --- /dev/null +++ b/tderesources/lib/folderconfig.cpp @@ -0,0 +1,173 @@ +/* + This file is part of libkcal. + + Copyright (c) 2004 Cornelius Schumacher <schumacher@kde.org> + Copyright (c) 2004 Till Adam <adam@kde.org> + Copyright (c) 2005 Reinhold Kainhofer <reinhold@kainhofer.com> + + 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 "folderconfig.h" + +#include "folderlister.h" +#include "groupwaredataadaptor.h" +#include "folderlistview.h" + +#include <klistview.h> +#include <klocale.h> +#include <kdebug.h> +#include <kdialog.h> + +#include <tqlayout.h> +#include <tqgroupbox.h> +#include <tqpushbutton.h> +#include <tqcombobox.h> +#include <tqhbox.h> +#include <tqlabel.h> + +using namespace KPIM; + +FolderConfig::FolderConfig( TQWidget *parent ) + : TQWidget( parent ), mFolderLister( 0 ) +{ + TQBoxLayout *topLayout = new TQVBoxLayout( this ); + topLayout->addSpacing( KDialog::spacingHint() ); + + TQGroupBox *topBox = new TQGroupBox( 1, Qt::Horizontal, i18n("Folder Selection"), + this ); + topLayout->addWidget( topBox ); + + TQPushButton *button = new TQPushButton( i18n("Update Folder List"), topBox ); + connect( button, TQT_SIGNAL( clicked() ), TQT_SIGNAL( updateFoldersClicked() ) ); + + mFolderList = new FolderListView( topBox ); + +/* TQHBox *writeBox = new TQHBox( topBox ); + + new TQLabel( i18n("Write to:"), writeBox ); + + mWriteCombo = new TQComboBox( writeBox );*/ +} + +FolderConfig::~FolderConfig() +{ +} + +void FolderConfig::setFolderLister( FolderLister *f ) +{ + mFolderLister = f; + + TQValueList<FolderListView::Property> types; + TQValueList<FolderLister::ContentType> suptypes( mFolderLister->supportedTypes() ); + if ( suptypes.contains( FolderLister::Event ) ) types << FolderListView::Event; + if ( suptypes.contains( FolderLister::Todo ) ) types << FolderListView::Todo; + if ( suptypes.contains( FolderLister::Journal ) ) types << FolderListView::Journal; + if ( suptypes.contains( FolderLister::Contact ) ) types << FolderListView::Contact; + if ( suptypes.contains( FolderLister::All ) ) types << FolderListView::All; + if ( suptypes.contains( FolderLister::Unknown ) ) types << FolderListView::Unknown; + + mFolderList->setEnabledTypes( types ); + connect( mFolderLister, TQT_SIGNAL( foldersRead() ), TQT_SLOT( updateFolderList() ) ); +} + +void FolderConfig::retrieveFolderList( const KURL &url ) +{ + kdDebug(7000) << "FolderConfig::retrieveFolderList()" << endl; + if ( !mOldFolderListerURL.isEmpty() ) return; + + if ( mFolderLister->adaptor() ) { + mOldFolderListerURL = mFolderLister->adaptor()->baseURL(); + mFolderLister->adaptor()->setBaseURL( url ); + } + mFolderLister->retrieveFolders( url ); +} + +void FolderConfig::updateFolderList() +{ + mFolderList->clear(); + + TQStringList write; + + if ( !mOldFolderListerURL.isEmpty() && mFolderLister->adaptor() ) { + mFolderLister->adaptor()->setBaseURL( mOldFolderListerURL ); + mOldFolderListerURL = KURL(); + } + + FolderLister::Entry::List folders = mFolderLister->folders(); + FolderLister::Entry::List::ConstIterator it; + for( it = folders.begin(); it != folders.end(); ++it ) { + FolderListItem *item = new FolderListItem( mFolderList, (*it) ); + if ( mFolderLister->writeDestinationId( FolderLister::Event ) == (*it).id ) { + item->setDefault( FolderListView::Event ); + } + if ( mFolderLister->writeDestinationId( FolderLister::Todo ) == (*it).id ) { + item->setDefault( FolderListView::Todo ); + } + if ( mFolderLister->writeDestinationId( FolderLister::Journal ) == (*it).id ) { + item->setDefault( FolderListView::Journal ); + } + if ( mFolderLister->writeDestinationId( FolderLister::Contact ) == (*it).id ) { + item->setDefault( FolderListView::Contact ); + } + if ( mFolderLister->writeDestinationId( FolderLister::All ) == (*it).id ) { + item->setDefault( FolderListView::All ); + } + if ( mFolderLister->writeDestinationId( FolderLister::Unknown ) == (*it).id ) { + item->setDefault( FolderListView::Unknown ); + } + } +} + +void FolderConfig::saveSettings() +{ + TQPtrList<TQListViewItem> lst; + + FolderLister::Entry::List folders; + + TQListViewItemIterator it( mFolderList ); + while ( it.current() ) { + FolderListItem *item = dynamic_cast<FolderListItem *>( it.current() ); + if ( item ) { + FolderLister::Entry folder = item->folder(); + folder.active = item->isOn(); + folders.append( folder ); + if ( item->isDefault( FolderListView::Event ) ) { + mFolderLister->setWriteDestinationId( FolderLister::Event, folder.id ); + } + if ( item->isDefault( FolderListView::Todo ) ) { + mFolderLister->setWriteDestinationId( FolderLister::Todo, folder.id ); + } + if ( item->isDefault( FolderListView::Journal ) ) { + mFolderLister->setWriteDestinationId( FolderLister::Journal, folder.id ); + } + if ( item->isDefault( FolderListView::Contact ) ) { + mFolderLister->setWriteDestinationId( FolderLister::Contact, folder.id ); + } + if ( item->isDefault( FolderListView::All ) ) { + mFolderLister->setWriteDestinationId( FolderLister::All, folder.id ); + } + if ( item->isDefault( FolderListView::Unknown ) ) { + mFolderLister->setWriteDestinationId( FolderLister::Unknown, folder.id ); + } + } + ++it; + } + + mFolderLister->setFolders( folders ); +} + +#include "folderconfig.moc" |