|
|
|
/*
|
|
|
|
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 *tqparent )
|
|
|
|
: TQWidget( tqparent ), mFolderLister( 0 )
|
|
|
|
{
|
|
|
|
TQBoxLayout *topLayout = new TQVBoxLayout( this );
|
|
|
|
topLayout->addSpacing( KDialog::spacingHint() );
|
|
|
|
|
|
|
|
TQGroupBox *topBox = new TQGroupBox( 1, 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.tqcontains( FolderLister::Event ) ) types << FolderListView::Event;
|
|
|
|
if ( suptypes.tqcontains( FolderLister::Todo ) ) types << FolderListView::Todo;
|
|
|
|
if ( suptypes.tqcontains( FolderLister::Journal ) ) types << FolderListView::Journal;
|
|
|
|
if ( suptypes.tqcontains( FolderLister::Contact ) ) types << FolderListView::Contact;
|
|
|
|
if ( suptypes.tqcontains( FolderLister::All ) ) types << FolderListView::All;
|
|
|
|
if ( suptypes.tqcontains( 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"
|