Changeset 37 in tspsg-svn for trunk/src


Ignore:
Timestamp:
Jul 16, 2009, 6:00:27 PM (15 years ago)
Author:
laleppa
Message:

+ Task save prompt before creating or opening task and closing application if current task was modified.

  • Translation updates.
Location:
trunk/src
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/mainwindow.cpp

    r33 r37  
    4545        connect(actionSettingsLanguageAutodetect,SIGNAL(triggered(bool)),this,SLOT(actionSettingsLanguageAutodetectTriggered(bool)));
    4646        connect(groupSettingsLanguageList,SIGNAL(triggered(QAction *)),this,SLOT(groupSettingsLanguageListTriggered(QAction *)));
     47        connect(actionHelpAboutQt,SIGNAL(triggered()),qApp,SLOT(aboutQt()));
    4748        connect(actionHelpAbout,SIGNAL(triggered()),this,SLOT(actionHelpAboutTriggered()));
    4849#ifndef Q_OS_WINCE
     
    7879        taskView->setModel(tspmodel);
    7980        connect(tspmodel,SIGNAL(numCitiesChanged(int)),this,SLOT(numCitiesChanged(int)));
     81        connect(tspmodel,SIGNAL(dataChanged(const QModelIndex &, const QModelIndex &)),this,SLOT(dataChanged()));
     82        connect(tspmodel,SIGNAL(layoutChanged()),this,SLOT(dataChanged()));
    8083#ifdef Q_OS_WINCE
    8184        taskView->resizeColumnsToContents();
     
    149152void MainWindow::actionFileNewTriggered()
    150153{
     154        if (isWindowModified()) {
     155int res = QMessageBox(QMessageBox::Warning,trUtf8("New Task"),trUtf8("Would you like to save changes in current task?"),QMessageBox::Yes | QMessageBox::No | QMessageBox::Cancel,this).exec();
     156                if ((res == QMessageBox::Cancel) || ((res == QMessageBox::Yes) && !saveTask()))
     157                        return;
     158        }
    151159        tspmodel->clear();
     160        setWindowModified(false);
    152161}
    153162
    154163void MainWindow::actionFileOpenTriggered()
    155164{
     165        if (isWindowModified()) {
     166int res = QMessageBox(QMessageBox::Warning,trUtf8("Task Open"),trUtf8("Would you like to save changes in current task?"),QMessageBox::Yes | QMessageBox::No | QMessageBox::Cancel,this).exec();
     167                if ((res == QMessageBox::Cancel) || ((res == QMessageBox::Yes) && !saveTask()))
     168                        return;
     169        }
    156170QFileDialog od(this);
    157171        od.setAcceptMode(QFileDialog::AcceptOpen);
     
    168182                return;
    169183        tspmodel->loadTask(files.first());
     184        setWindowModified(false);
    170185}
    171186
    172187void MainWindow::actionFileSaveTaskTriggered()
    173188{
     189        saveTask();
     190}
     191
     192bool MainWindow::saveTask() {
    174193QFileDialog sd(this);
    175194        sd.setAcceptMode(QFileDialog::AcceptSave);
     
    179198        sd.setDefaultSuffix("tspt");
    180199        if (sd.exec() != QDialog::Accepted)
    181                 return;
     200                return false;
    182201QStringList files = sd.selectedFiles();
    183202        if (files.size() < 1)
    184                 return;
    185         tspmodel->saveTask(files.first());
     203                return false;
     204        if (tspmodel->saveTask(files.first())) {
     205                setWindowModified(false);
     206                return true;
     207        } else
     208                return false;
    186209}
    187210
     
    208231{
    209232        tspmodel->randomize();
     233        setWindowModified(true);
    210234#ifdef Q_OS_WINCE
    211235        taskView->resizeColumnsToContents();
     
    244268QString about = QString::fromUtf8("TSPSG - TSP Solver and Generator\n");
    245269about += QString::fromUtf8("    Copyright (C) 2007-%1 Lёppa <contacts[at]oleksii[dot]name>\n").arg(QDate::currentDate().toString("yyyy"));
    246         about += "Qt library versions:\n";
    247         about += QString::fromUtf8("    OS: %1\n").arg(OS);
     270        about += QString::fromUtf8("Target OS: %1\n").arg(OS);
     271        about += "Qt library:\n";
    248272        about += QString::fromUtf8("    Compile time: %1\n").arg(QT_VERSION_STR);
    249273        about += QString::fromUtf8("    Runtime: %1\n").arg(qVersion());
     
    312336void MainWindow::closeEvent(QCloseEvent *event)
    313337{
     338        if (isWindowModified()) {
     339int res = QMessageBox(QMessageBox::Warning,trUtf8("Application Close"),trUtf8("Would you like to save changes in current task?"),QMessageBox::Yes | QMessageBox::No | QMessageBox::Cancel,this).exec();
     340                if ((res == QMessageBox::Cancel) || ((res == QMessageBox::Yes) && !saveTask())) {
     341                        event->ignore();
     342                        return;
     343                }
     344        }
    314345        settings->setValue("NumCities",spinCities->value());
    315346#ifndef Q_OS_WINCE
     
    328359}
    329360
     361void MainWindow::dataChanged()
     362{
     363        setWindowModified(true);
     364}
     365
    330366void MainWindow::numCitiesChanged(int nCities)
    331367{
  • trunk/src/mainwindow.h

    r31 r37  
    4949        void groupSettingsLanguageListTriggered(QAction *);
    5050        void actionHelpAboutTriggered();
     51        void dataChanged();
    5152#ifndef Q_OS_WINCE
    5253        void actionFilePrintSetupTriggered();
     
    6364        bool loadLanguage(QString lang = "");
    6465        void loadLangList();
     66        bool saveTask();
    6567};
    6668
  • trunk/src/os.h

    r31 r37  
    2525#define OS_H
    2626
     27#ifdef _WIN64
     28        #define BITS " (64-bit)"
     29#elif defined _WIN32
     30        #define BITS " (32-bit)"
     31#else
     32        #define BITS ""
     33#endif // BITS
     34
    2735#ifdef Q_OS_AIX
    28         #define OS "AIX"
     36        #define OS "AIX"BITS
    2937        #define OSID quint8(1)
    3038#elif defined Q_OS_BSD4
    31         #define OS "BSD 4.4"
     39        #define OS "BSD 4.4"BITS
    3240        #define OSID quint8(2)
    3341#elif defined Q_OS_BSDI
    34         #define OS "BSD/OS"
     42        #define OS "BSD/OS"BITS
    3543        #define OSID quint8(3)
    3644#elif defined Q_OS_CYGWIN
    37         #define OS "Cygwin"
     45        #define OS "Cygwin"BITS
    3846        #define OSID quint8(4)
    3947#elif defined Q_OS_DARWIN
    40         #define OS "Darwin OS"
     48        #define OS "Darwin OS"BITS
    4149        #define OSID quint8(5)
    4250#elif defined Q_OS_DGUX
    43         #define OS "DG/UX"
     51        #define OS "DG/UX"BITS
    4452        #define OSID quint8(6)
    4553#elif defined Q_OS_DYNIX
    46         #define OS "DYNIX/ptx"
     54        #define OS "DYNIX/ptx"BITS
    4755        #define OSID quint8(7)
    4856#elif defined Q_OS_FREEBSD
    49         #define OS "FreeBSD"
     57        #define OS "FreeBSD"BITS
    5058        #define OSID quint8(8)
    5159#elif defined Q_OS_HPUX
    52         #define OS "HP-UX"
     60        #define OS "HP-UX"BITS
    5361        #define OSID quint8(9)
    5462#elif defined Q_OS_HURD
    55         #define OS "GNU Hurd"
     63        #define OS "GNU Hurd"BITS
    5664        #define OSID quint8(10)
    5765#elif defined Q_OS_IRIX
    58         #define OS "SGI Irix"
     66        #define OS "SGI Irix"BITS
    5967        #define OSID quint8(11)
    6068#elif defined Q_OS_LINUX
    61         #define OS "Linux"
     69        #define OS "Linux"BITS
    6270        #define OSID quint8(12)
    6371#elif defined Q_OS_LYNX
    64         #define OS "LynxOS"
     72        #define OS "LynxOS"BITS
    6573        #define OSID quint8(13)
    6674#elif defined Q_OS_MSDOS
    67         #define OS "MS-DOS"
     75        #define OS "MS-DOS"BITS
    6876        #define OSID quint8(14)
    6977#elif defined Q_OS_NETBSD
    70         #define OS "NetBSD"
     78        #define OS "NetBSD"BITS
    7179        #define OSID quint8(15)
    7280#elif defined Q_OS_OS2
    73         #define OS "OS/2"
     81        #define OS "OS/2"BITS
    7482        #define OSID quint8(16)
    7583#elif defined Q_OS_OPENBSD
    76         #define OS "OpenBSD"
     84        #define OS "OpenBSD"BITS
    7785        #define OSID quint8(17)
    7886#elif defined Q_OS_OS2EMX
    79         #define OS "OS/2"
     87        #define OS "OS/2"BITS
    8088        #define OSID quint8(18)
    8189#elif defined Q_OS_OSF
    82         #define OS "HP Tru64 UNIX"
     90        #define OS "HP Tru64 UNIX"BITS
    8391        #define OSID quint8(19)
    8492#elif defined Q_OS_QNX6
    85         #define OS "QNX RTP 6.1"
     93        #define OS "QNX RTP 6.1"BITS
    8694        #define OSID quint8(20)
    8795#elif defined Q_OS_QNX
    88         #define OS "QNX"
     96        #define OS "QNX"BITS
    8997        #define OSID quint8(21)
    9098#elif defined Q_OS_RELIANT
    91         #define OS "Reliant UNIX"
     99        #define OS "Reliant UNIX"BITS
    92100        #define OSID quint8(22)
    93101#elif defined Q_OS_SCO
    94         #define OS "SCO OpenServer 5"
     102        #define OS "SCO OpenServer 5"BITS
    95103        #define OSID quint8(23)
    96104#elif defined Q_OS_SOLARIS
    97         #define OS "Sun Solaris"
     105        #define OS "Sun Solaris"BITS
    98106        #define OSID quint8(24)
    99107#elif defined Q_OS_ULTRIX
    100         #define OS "DEC Ultrix"
     108        #define OS "DEC Ultrix"BITS
    101109        #define OSID quint8(25)
    102110#elif defined Q_OS_UNIX
    103         #define OS "UNIX BSD/SYSV"
     111        #define OS "UNIX BSD/SYSV"BITS
    104112        #define OSID quint8(26)
    105113#elif defined Q_OS_UNIXWARE
    106         #define OS "UnixWare 7/Open UNIX 8"
     114        #define OS "UnixWare 7/Open UNIX 8"BITS
    107115        #define OSID quint8(27)
    108116#elif defined Q_OS_WIN32
    109         #define OS "Windows"
     117        #define OS "Windows"BITS
    110118        #define OSID quint8(28)
    111119#elif defined Q_OS_WINCE
     
    113121        #define OSID quint8(29)
    114122#else
    115         #define OS "Unknown"
     123        #define OS "Unknown"BITS
    116124        #define OSID quint8(255)
    117 #endif
     125#endif // OS
    118126
    119127#endif // OS_H
  • trunk/src/tspmodel.cpp

    r36 r37  
    276276}
    277277
    278 void CTSPModel::saveTask(QString fname)
     278bool CTSPModel::saveTask(QString fname)
    279279{
    280280QFile f(fname);
    281281        if (!f.open(QIODevice::WriteOnly)) {
    282282                QMessageBox(QMessageBox::Critical,trUtf8("Task Save"),QString(trUtf8("Unable to create task file.\nError: %1\nMaybe, file is read-only?")).arg(f.errorString()),QMessageBox::Ok).exec();
    283                 return;
     283                return false;
    284284        }
    285285QDataStream ds(&f);
     
    288288                QMessageBox(QMessageBox::Critical,trUtf8("Task Save"),trUtf8("Unable to save task.\nError: %1").arg(f.errorString()),QMessageBox::Ok).exec();
    289289                f.close();
    290                 return;
     290                return false;
    291291        }
    292292        // File signature
     
    295295                QMessageBox(QMessageBox::Critical,trUtf8("Task Save"),trUtf8("Unable to save task.\nError: %1").arg(f.errorString()),QMessageBox::Ok).exec();
    296296                f.close();
    297                 return;
     297                return false;
    298298        }
    299299        // File version
     
    302302                QMessageBox(QMessageBox::Critical,trUtf8("Task Save"),trUtf8("Unable to save task.\nError: %1").arg(f.errorString()),QMessageBox::Ok).exec();
    303303                f.close();
    304                 return;
     304                return false;
    305305        }
    306306        // File metadata version
     
    309309                QMessageBox(QMessageBox::Critical,trUtf8("Task Save"),trUtf8("Unable to save task.\nError: %1").arg(f.errorString()),QMessageBox::Ok).exec();
    310310                f.close();
    311                 return;
     311                return false;
    312312        }
    313313        // Metadata
     
    316316                QMessageBox(QMessageBox::Critical,trUtf8("Task Save"),trUtf8("Unable to save task.\nError: %1").arg(f.errorString()),QMessageBox::Ok).exec();
    317317                f.close();
    318                 return;
     318                return false;
    319319        }
    320320        // Number of cities
     
    323323                QMessageBox(QMessageBox::Critical,trUtf8("Task Save"),trUtf8("Unable to save task.\nError: %1").arg(f.errorString()),QMessageBox::Ok).exec();
    324324                f.close();
    325                 return;
     325                return false;
    326326        }
    327327        // Costs
     
    333333                                        QMessageBox(QMessageBox::Critical,trUtf8("Task Save"),trUtf8("Unable to save task.\nError: %1").arg(f.errorString()),QMessageBox::Ok).exec();
    334334                                        f.close();
    335                                         return;
     335                                        return false;
    336336                                }
    337337                        }
    338338        f.close();
     339        return true;
    339340}
    340341
  • trunk/src/tspmodel.h

    r35 r37  
    4242        void clear();
    4343        void loadTask(QString);
    44         void saveTask(QString);
     44        bool saveTask(QString);
    4545        void randomize();
    4646signals:
Note: See TracChangeset for help on using the changeset viewer.