summaryrefslogtreecommitdiffstats
path: root/tderesources/slox/sloxfolderdialog.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tderesources/slox/sloxfolderdialog.cpp')
-rw-r--r--tderesources/slox/sloxfolderdialog.cpp125
1 files changed, 125 insertions, 0 deletions
diff --git a/tderesources/slox/sloxfolderdialog.cpp b/tderesources/slox/sloxfolderdialog.cpp
new file mode 100644
index 000000000..4d21c2307
--- /dev/null
+++ b/tderesources/slox/sloxfolderdialog.cpp
@@ -0,0 +1,125 @@
+/*
+ Copyright (c) 2005 by Volker Krause <[email protected]>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program 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 General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+*/
+
+
+#include <kiconloader.h>
+#include <kguiitem.h>
+#include <klistview.h>
+#include <klocale.h>
+
+#include "sloxfolderdialog.h"
+#include "sloxfoldermanager.h"
+
+SloxFolderDialog::SloxFolderDialog( SloxFolderManager *manager, FolderType type, TQWidget *parent, const char *name ) :
+ KDialogBase( parent, name, true, i18n("Select Folder"), Ok|Cancel|User1, Ok, false, KGuiItem( i18n("Reload"), "reload" ) ),
+ mManager( manager ),
+ mFolderType( type )
+{
+ mListView = new KListView( this );
+ mListView->setRootIsDecorated( true );
+ mListView->setShowSortIndicator( true );
+ mListView->addColumn( i18n("Folder") );
+ mListView->addColumn( i18n("Folder ID"), 0 );
+ setMainWidget( mListView );
+ updateFolderView();
+ connect( manager, TQT_SIGNAL( foldersUpdated() ), TQT_SLOT( updateFolderView() ) );
+}
+
+SloxFolderDialog::~SloxFolderDialog()
+{
+ TQMap<TQString, SloxFolder*> folders = mManager->folders();
+ TQMap<TQString, SloxFolder*>::Iterator it;
+ for ( it = folders.begin(); it != folders.end(); ++it )
+ (*it)->item = 0;
+}
+
+void SloxFolderDialog::updateFolderView()
+{
+ TQString selected = selectedFolder();
+ mListView->clear();
+ TQMap<TQString, SloxFolder*> folders = mManager->folders();
+ TQMap<TQString, SloxFolder*>::Iterator it;
+ for ( it = folders.begin(); it != folders.end(); ++it )
+ createFolderViewItem( *it );
+ setSelectedFolder( selected );
+}
+
+void SloxFolderDialog::slotUser1( )
+{
+ mManager->requestFolders();
+}
+
+void SloxFolderDialog::createFolderViewItem( SloxFolder *folder )
+{
+ if ( folder->item )
+ return;
+ if ( folder->type() != mFolderType && folder->type() != Unbound )
+ return;
+ if( mManager->folders().contains( folder->parentId() ) ) {
+ SloxFolder *parent = mManager->folders()[folder->parentId()];
+ createFolderViewItem( parent );
+ if ( parent->item )
+ folder->item = new KListViewItem( parent->item );
+ else
+ folder->item = new KListViewItem( mListView );
+ } else {
+ folder->item = new KListViewItem( mListView );
+ }
+ folder->item->setText( 0, folder->name() );
+ folder->item->setText( 1, folder->id() );
+ TDEGlobal::instance()->iconLoader()->addAppDir( "kmail" );
+ switch ( folder->type() ) {
+ case Calendar:
+ folder->item->setPixmap( 0, SmallIcon( "kmgroupware_folder_calendar" ) );
+ break;
+ case Tasks:
+ folder->item->setPixmap( 0, SmallIcon( "kmgroupware_folder_tasks" ) );
+ break;
+ case Contacts:
+ folder->item->setPixmap( 0, SmallIcon( "kmgroupware_folder_contacts" ) );
+ break;
+ default:
+ folder->item->setPixmap( 0, SmallIcon( "folder" ) );
+ break;
+ }
+}
+
+TQString SloxFolderDialog::selectedFolder() const
+{
+ TQListViewItem *item = mListView->selectedItem();
+ if ( item )
+ return item->text( 1 );
+ return "-1"; // OX default folder
+}
+
+void SloxFolderDialog::setSelectedFolder( const TQString &id )
+{
+ TQMap<TQString, SloxFolder*> folders = mManager->folders();
+ TQMap<TQString, SloxFolder*>::Iterator it;
+ for ( it = folders.begin(); it != folders.end(); ++it ) {
+ if ( !(*it)->item )
+ continue;
+ if ( (*it)->id() == id || ( ( id.isEmpty() || id == "-1" ) && (*it)->isDefault() ) ) {
+ mListView->setSelected( (*it)->item, true );
+ mListView->ensureItemVisible( (*it)->item );
+ break;
+ }
+ }
+}
+
+#include "sloxfolderdialog.moc"