mirror of
https://bitbucket.org/smil3y/kde-playground.git
synced 2025-02-24 10:52:52 +00:00
110 lines
3.6 KiB
C++
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 );
|
|
}
|
|
|
|
//---------------------------------------------------------------------
|
|
|