From 460c52653ab0dcca6f19a4f492ed2c5e4e963ab0 Mon Sep 17 00:00:00 2001 From: toma Date: Wed, 25 Nov 2009 17:56:58 +0000 Subject: Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features. BUG:215923 git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdepim@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da --- kmail/folderrequester.cpp | 127 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 127 insertions(+) create mode 100644 kmail/folderrequester.cpp (limited to 'kmail/folderrequester.cpp') diff --git a/kmail/folderrequester.cpp b/kmail/folderrequester.cpp new file mode 100644 index 00000000..e03ddba7 --- /dev/null +++ b/kmail/folderrequester.cpp @@ -0,0 +1,127 @@ +/* + * Copyright (c) 2004 Carsten Burghardt + * + * 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; version 2 of the License + * + * 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. + * + * In addition, as a special exception, the copyright holders give + * permission to link the code of this program with any edition of + * the Qt library by Trolltech AS, Norway (or with modified versions + * of Qt that use the same license as Qt), and distribute linked + * combinations including the two. You must obey the GNU General + * Public License in all respects for all of the code used other than + * Qt. If you modify this file, you may extend this exception to + * your version of the file, but you are not obligated to do so. If + * you do not wish to do so, delete this exception statement from + * your version. + */ + +#include "folderrequester.h" +#include "kmfolder.h" +#include "kmfoldertree.h" +#include "kmfolderseldlg.h" + +#include +#include +#include +#include + +#include +#include + +namespace KMail { + +FolderRequester::FolderRequester( QWidget *parent, KMFolderTree *tree ) + : QWidget( parent ), mFolder( 0 ), mFolderTree( tree ), + mMustBeReadWrite( true ), mShowOutbox( true ), mShowImapFolders( true ) +{ + QHBoxLayout * hlay = new QHBoxLayout( this, 0, KDialog::spacingHint() ); + hlay->setAutoAdd( true ); + + edit = new KLineEdit( this ); + edit->setReadOnly( true ); + + QToolButton* button = new QToolButton( this ); + button->setIconSet( KGlobal::iconLoader()->loadIconSet( "folder", KIcon::Small, 0 ) ); + connect( button, SIGNAL(clicked()), this, SLOT(slotOpenDialog()) ); + + setSizePolicy( QSizePolicy( QSizePolicy::MinimumExpanding, + QSizePolicy::Fixed ) ); + setFocusPolicy( QWidget::StrongFocus ); +} + +//----------------------------------------------------------------------------- +void FolderRequester::slotOpenDialog() +{ + KMFolderSelDlg dlg( this, mFolderTree, i18n("Select Folder"), + mMustBeReadWrite, false ); + dlg.setFlags( mMustBeReadWrite, mShowOutbox, mShowImapFolders ); + dlg.setFolder( mFolder ); + + if (!dlg.exec()) return; + setFolder( dlg.folder() ); +} + +//----------------------------------------------------------------------------- +FolderRequester::~FolderRequester() +{ +} + +//----------------------------------------------------------------------------- +KMFolder * FolderRequester::folder( void ) const +{ + return mFolder; +} + +//----------------------------------------------------------------------------- +void FolderRequester::setFolder( KMFolder *folder ) +{ + mFolder = folder; + if ( mFolder ) { + edit->setText( mFolder->prettyURL() ); + mFolderId = mFolder->idString(); + } + else if ( !mMustBeReadWrite ) // the Local Folders root node was selected + edit->setText( i18n("Local Folders") ); + emit folderChanged( folder ); +} + +//----------------------------------------------------------------------------- +void FolderRequester::setFolder( const QString &idString ) +{ + KMFolder *folder = kmkernel->findFolderById( idString ); + if ( folder ) { + setFolder( folder ); + } else { + if ( !idString.isEmpty() ) { + edit->setText( i18n( "Unknown folder '%1'" ).arg( idString ) ); + } else { + edit->setText( i18n( "Please select a folder" ) ); + } + mFolder = 0; + } + mFolderId = idString; +} + +//----------------------------------------------------------------------------- +void FolderRequester::keyPressEvent( QKeyEvent * e ) +{ + if ( e->key() == Qt::Key_Space ) + slotOpenDialog(); + else + e->ignore(); +} + +} // namespace KMail + +#include "folderrequester.moc" -- cgit v1.2.3