You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
114 lines
3.8 KiB
114 lines
3.8 KiB
/* Copyright 2009 Klarälvdalens Datakonsult AB |
|
|
|
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) version 3 or any later version |
|
accepted by the membership of KDE e.V. (or its successor approved |
|
by the membership of KDE e.V.), which shall act as a proxy |
|
defined in Section 14 of version 3 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, see <http://www.gnu.org/licenses/>. |
|
*/ |
|
#include "importarchivedialog.h" |
|
|
|
#include "folderrequester.h" |
|
#include "kmmainwidget.h" |
|
#include "importjob.h" |
|
|
|
#include <Akonadi/Collection> |
|
|
|
#include <kurlrequester.h> |
|
#include <klocale.h> |
|
#include <kmessagebox.h> |
|
|
|
#include <qlayout.h> |
|
#include <qlabel.h> |
|
|
|
using namespace KMail; |
|
|
|
ImportArchiveDialog::ImportArchiveDialog( QWidget *parent ) |
|
: KDialog( parent ), mParentWidget( parent ) |
|
{ |
|
setObjectName( "import_archive_dialog" ); |
|
setCaption( i18n( "Import Archive" ) ); |
|
setButtons( Ok|Cancel ); |
|
setDefaultButton( Ok ); |
|
setModal( true ); |
|
QWidget *mainWidget = new QWidget( this ); |
|
QGridLayout *mainLayout = new QGridLayout( mainWidget ); |
|
mainLayout->setSpacing( KDialog::spacingHint() ); |
|
mainLayout->setMargin( KDialog::marginHint() ); |
|
setMainWidget( mainWidget ); |
|
|
|
int row = 0; |
|
|
|
// TODO: Explaination label |
|
// TODO: Use QFormLayout in KDE4 |
|
// TODO: better label for "Ok" button |
|
|
|
QLabel *folderLabel = new QLabel( i18n( "&Folder:" ), mainWidget ); |
|
mainLayout->addWidget( folderLabel, row, 0 ); |
|
mFolderRequester = new FolderRequester( mainWidget ); |
|
folderLabel->setBuddy( mFolderRequester ); |
|
mainLayout->addWidget( mFolderRequester, row, 1 ); |
|
row++; |
|
|
|
QLabel *fileNameLabel = new QLabel( i18n( "&Archive File:" ), mainWidget ); |
|
mainLayout->addWidget( fileNameLabel, row, 0 ); |
|
mUrlRequester = new KUrlRequester( mainWidget ); |
|
mUrlRequester->setFilter( "*.tar *.zip *.tar.gz *.tar.bz2" ); |
|
fileNameLabel->setBuddy( mUrlRequester ); |
|
mainLayout->addWidget( mUrlRequester, row, 1 ); |
|
row++; |
|
|
|
// TODO: what's this, tooltips |
|
|
|
mainLayout->setColumnStretch( 1, 1 ); |
|
mainLayout->addItem( new QSpacerItem( 1, 1, QSizePolicy::Expanding, QSizePolicy::Expanding ), row, 0 ); |
|
|
|
// Make it a bit bigger, else the folder requester cuts off the text too early |
|
resize( 500, minimumSize().height() ); |
|
} |
|
|
|
void ImportArchiveDialog::setFolder( const Akonadi::Collection &defaultCollection ) |
|
{ |
|
mFolderRequester->setFolder( defaultCollection ); |
|
} |
|
|
|
void ImportArchiveDialog::slotButtonClicked( int button ) |
|
{ |
|
if ( button == KDialog::Cancel ) { |
|
reject(); |
|
return; |
|
} |
|
Q_ASSERT( button == KDialog::Ok ); |
|
|
|
if ( !QFile::exists( mUrlRequester->url().path() ) ) { |
|
KMessageBox::information( this, i18n( "Please select an archive file that should be imported." ), |
|
i18n( "No archive file selected" ) ); |
|
return; |
|
} |
|
|
|
if ( !mFolderRequester->folderCollection().isValid() ) { |
|
KMessageBox::information( this, i18n( "Please select the folder where the archive should be imported to." ), |
|
i18n( "No target folder selected" ) ); |
|
return; |
|
} |
|
|
|
// TODO: check if url is empty. or better yet, disable ok button until file is chosen |
|
|
|
ImportJob *importJob = new KMail::ImportJob( mParentWidget ); |
|
importJob->setFile( mUrlRequester->url() ); |
|
importJob->setRootFolder( mFolderRequester->folderCollection() ); |
|
importJob->start(); |
|
accept(); |
|
} |
|
|
|
#include "importarchivedialog.moc"
|
|
|