kde-playground/kdepim/messageviewer/widgets/attachmentdialog.cpp
2015-04-14 21:49:29 +00:00

110 lines
3.6 KiB
C++

/* -*- mode: C++; c-file-style: "gnu" -*-
This file is part of KMail, the KDE mail client.
Copyright (c) 2009 Martin Koller <kollix@aon.at>
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 "attachmentdialog.h"
#include <kdialog.h>
#include <kmessagebox.h>
#include <klocale.h>
using namespace MessageViewer;
//---------------------------------------------------------------------
AttachmentDialog::AttachmentDialog( QWidget *parent, const QString &filenameText,
const QString &application, const QString &dontAskAgainName )
: dontAskName( dontAskAgainName )
{
text = i18n( "Open attachment '%1'?\n"
"Note that opening an attachment may compromise "
"your system's security.",
filenameText );
dialog = new KDialog( parent );
dialog->setCaption( i18n("Open Attachment?") );
dialog->setObjectName( QLatin1String("attachmentSaveOpen") );
if ( application.isEmpty() )
dialog->setButtons( KDialog::User3 | KDialog::User1 | KDialog::Cancel );
else {
dialog->setButtons( KDialog::User3 | KDialog::User2 | KDialog::User1 | KDialog::Cancel );
dialog->setButtonText( KDialog::User2, i18n("&Open with '%1'", application ) );
}
dialog->setButtonGuiItem( KDialog::User3, KStandardGuiItem::saveAs() );
dialog->setButtonText( KDialog::User1, i18n("&Open With...") );
dialog->setDefaultButton( KDialog::User3 );
connect( dialog, SIGNAL(user3Clicked()), this, SLOT(saveClicked()) );
connect( dialog, SIGNAL(user2Clicked()), this, SLOT(openClicked()) );
connect( dialog, SIGNAL(user1Clicked()), this, SLOT(openWithClicked()) );
}
//---------------------------------------------------------------------
int AttachmentDialog::exec()
{
KConfigGroup cg( KGlobal::config().data(), "Notification Messages" );
if ( cg.hasKey( dontAskName ) )
return cg.readEntry( dontAskName, 0 );
bool again = false;
const int ret =
KMessageBox::createKMessageBox( dialog, QMessageBox::Question, text, QStringList(),
i18n( "Do not ask again" ), &again, 0 );
if ( ret == QDialog::Rejected )
return Cancel;
else {
if ( again ) {
KConfigGroup::WriteConfigFlags flags = KConfig::Persistent;
KConfigGroup cg( KGlobal::config().data(), "Notification Messages" );
cg.writeEntry( dontAskName, ret, flags );
cg.sync();
}
return ret;
}
}
//---------------------------------------------------------------------
void AttachmentDialog::saveClicked()
{
dialog->done( Save );
}
//---------------------------------------------------------------------
void AttachmentDialog::openClicked()
{
dialog->done( Open );
}
//---------------------------------------------------------------------
void AttachmentDialog::openWithClicked()
{
dialog->done( OpenWith );
}
//---------------------------------------------------------------------