2009-02-25 09:15:00 +01:00
/**************************************************************************
2008-12-02 12:01:29 +01:00
* *
* * This file is part of Qt Creator
* *
2011-01-11 16:28:15 +01:00
* * Copyright ( c ) 2011 Nokia Corporation and / or its subsidiary ( - ies ) .
2008-12-02 12:01:29 +01:00
* *
2011-11-02 15:59:12 +01:00
* * Contact : Nokia Corporation ( qt - info @ nokia . com )
2008-12-02 12:01:29 +01:00
* *
2008-12-02 14:17:16 +01:00
* *
2009-02-25 09:15:00 +01:00
* * GNU Lesser General Public License Usage
2008-12-02 14:17:16 +01:00
* *
2011-04-13 08:42:33 +02:00
* * This file may be used under the terms of the GNU Lesser General Public
* * License version 2.1 as published by the Free Software Foundation and
* * appearing in the file LICENSE . LGPL included in the packaging of this file .
* * Please review the following information to ensure the GNU Lesser General
* * Public License version 2.1 requirements will be met :
* * http : //www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
2008-12-02 14:17:16 +01:00
* *
2010-12-17 16:01:08 +01:00
* * In addition , as a special exception , Nokia gives you certain additional
2011-04-13 08:42:33 +02:00
* * rights . These rights are described in the Nokia Qt LGPL Exception
2010-12-17 16:01:08 +01:00
* * version 1.1 , included in the file LGPL_EXCEPTION . txt in this package .
* *
2011-04-13 08:42:33 +02:00
* * Other Usage
* *
* * Alternatively , this file may be used in accordance with the terms and
* * conditions contained in a signed written agreement between you and Nokia .
* *
2010-12-17 16:01:08 +01:00
* * If you have questions regarding the use of this file , please contact
2011-11-02 15:59:12 +01:00
* * Nokia at qt - info @ nokia . com .
2008-12-02 12:01:29 +01:00
* *
2009-02-25 09:15:00 +01:00
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2008-12-02 14:09:21 +01:00
2008-12-02 12:01:29 +01:00
# include "reloadpromptutils.h"
2008-12-02 14:09:21 +01:00
2009-05-13 14:39:55 +02:00
# include <QtCore/QCoreApplication>
2009-09-01 13:32:50 +02:00
# include <QtCore/QDir>
2010-03-19 10:28:05 +01:00
# include <QtGui/QMessageBox>
# include <QtGui/QPushButton>
# include <QtGui/QAbstractButton>
2008-12-02 12:01:29 +01:00
2009-10-05 11:06:05 +02:00
using namespace Utils ;
2008-12-02 12:01:29 +01:00
2009-10-05 11:06:05 +02:00
QTCREATOR_UTILS_EXPORT Utils : : ReloadPromptAnswer
Utils : : reloadPrompt ( const QString & fileName , bool modified , QWidget * parent )
2008-12-02 12:01:29 +01:00
{
2009-07-13 15:00:20 +02:00
2009-10-05 11:06:05 +02:00
const QString title = QCoreApplication : : translate ( " Utils::reloadPrompt " , " File Changed " ) ;
2009-07-13 15:00:20 +02:00
QString msg ;
if ( modified )
2009-10-05 11:06:05 +02:00
msg = QCoreApplication : : translate ( " Utils::reloadPrompt " ,
2010-06-30 15:29:48 +02:00
" The unsaved file <i>%1</i> has been changed outside Qt Creator. Do you want to reload it and discard your changes? " ) ;
2009-07-13 15:00:20 +02:00
else
2009-10-05 11:06:05 +02:00
msg = QCoreApplication : : translate ( " Utils::reloadPrompt " ,
2010-06-30 15:29:48 +02:00
" The file <i>%1</i> has changed outside Qt Creator. Do you want to reload it? " ) ;
msg = msg . arg ( QFileInfo ( fileName ) . fileName ( ) ) ;
return reloadPrompt ( title , msg , QDir : : toNativeSeparators ( fileName ) , parent ) ;
2008-12-02 12:01:29 +01:00
}
2009-10-05 11:06:05 +02:00
QTCREATOR_UTILS_EXPORT Utils : : ReloadPromptAnswer
2010-06-30 15:29:48 +02:00
Utils : : reloadPrompt ( const QString & title , const QString & prompt , const QString & details , QWidget * parent )
2008-12-02 12:01:29 +01:00
{
2010-06-30 15:29:48 +02:00
QMessageBox msg ( parent ) ;
msg . setStandardButtons ( QMessageBox : : Yes | QMessageBox : : YesToAll | QMessageBox : : No | QMessageBox : : NoToAll ) ;
msg . setDefaultButton ( QMessageBox : : YesToAll ) ;
msg . setWindowTitle ( title ) ;
msg . setText ( prompt ) ;
msg . setDetailedText ( details ) ;
switch ( msg . exec ( ) ) {
2008-12-02 12:01:29 +01:00
case QMessageBox : : Yes :
return ReloadCurrent ;
case QMessageBox : : YesToAll :
return ReloadAll ;
case QMessageBox : : No :
return ReloadSkipCurrent ;
default :
break ;
}
return ReloadNone ;
}
2010-03-19 10:28:05 +01:00
QTCREATOR_UTILS_EXPORT Utils : : FileDeletedPromptAnswer
2011-04-27 15:52:24 +02:00
Utils : : fileDeletedPrompt ( const QString & fileName , bool triggerExternally , QWidget * parent )
2010-03-19 10:28:05 +01:00
{
const QString title = QCoreApplication : : translate ( " Utils::fileDeletedPrompt " , " File has been removed " ) ;
QString msg ;
2011-04-27 15:52:24 +02:00
if ( triggerExternally )
msg = QCoreApplication : : translate ( " Utils::fileDeletedPrompt " ,
" The file %1 has been removed outside Qt Creator. Do you want to save it under a different name, or close the editor? " ) . arg ( QDir : : toNativeSeparators ( fileName ) ) ;
else
msg = QCoreApplication : : translate ( " Utils::fileDeletedPrompt " ,
" The file %1 was removed. Do you want to save it under a different name, or close the editor? " ) . arg ( QDir : : toNativeSeparators ( fileName ) ) ;
2010-03-19 10:28:05 +01:00
QMessageBox box ( QMessageBox : : Question , title , msg , QMessageBox : : NoButton , parent ) ;
2011-11-10 17:15:02 +01:00
QPushButton * close = box . addButton ( QCoreApplication : : translate ( " Utils::fileDeletedPrompt " , " &Close " ) , QMessageBox : : RejectRole ) ;
QPushButton * saveas = box . addButton ( QCoreApplication : : translate ( " Utils::fileDeletedPrompt " , " Save &as... " ) , QMessageBox : : ActionRole ) ;
QPushButton * save = box . addButton ( QCoreApplication : : translate ( " Utils::fileDeletedPrompt " , " &Save " ) , QMessageBox : : AcceptRole ) ;
2010-03-19 10:28:05 +01:00
box . setDefaultButton ( saveas ) ;
box . exec ( ) ;
QAbstractButton * clickedbutton = box . clickedButton ( ) ;
if ( clickedbutton = = close ) {
return FileDeletedClose ;
} else if ( clickedbutton = = saveas ) {
return FileDeletedSaveAs ;
} else if ( clickedbutton = = save ) {
return FileDeletedSave ;
}
return FileDeletedClose ;
}