Changeset 47 in tspsg-svn for trunk/src/tspmodel.cpp


Ignore:
Timestamp:
Aug 2, 2009, 9:47:45 PM (15 years ago)
Author:
laleppa
Message:

+ Current file name is displayed in main application window header.

  • Created a method for prompt for unsaved changes to unify it throughout the code.
  • Some stylistic README changes.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/tspmodel.cpp

    r42 r47  
    154154}
    155155
    156 void CTSPModel::loadTask(QString fname)
     156bool CTSPModel::loadTask(QString fname)
    157157{
    158158QFile f(fname);
    159159        if (!f.open(QIODevice::ReadOnly)) {
    160160                QMessageBox(QMessageBox::Critical,trUtf8("Task Load"),QString(trUtf8("Unable to open task file.\nError: %1")).arg(f.errorString()),QMessageBox::Ok).exec();
    161                 return;
     161                return false;
    162162        }
    163163QDataStream ds(&f);
     
    166166        ds >> sig;
    167167        if (loadError(ds.status()))
    168                 return;
     168                return false;
    169169        ds.device()->reset();
    170170        if (sig == TSPT)
    171                 loadTSPT(&ds);
     171                if (!loadTSPT(&ds)) {
     172                        f.close();
     173                        return false;
     174                }
    172175        else if ((sig >> 16) == ZKT)
    173                 loadZKT(&ds);
    174         else
     176                if (!loadZKT(&ds)) {
     177                        f.close();
     178                        return false;
     179                }
     180        else {
    175181                QMessageBox(QMessageBox::Critical,trUtf8("Task Load"),trUtf8("Unable to load task:") + "\n" + trUtf8("Unknown file format or file is corrupted."),QMessageBox::Ok).exec();
     182                f.close();
     183                return false;
     184        }
    176185        f.close();
    177 }
    178 
    179 void CTSPModel::loadTSPT(QDataStream *ds)
     186        return true;
     187}
     188
     189bool CTSPModel::loadTSPT(QDataStream *ds)
    180190{
    181191        // Skipping signature
    182192        ds->skipRawData(sizeof(TSPT));
    183193        if (loadError(ds->status()))
    184                 return;
     194                return false;
    185195        // File version
    186196quint8 version;
    187197        *ds >> version;
    188198        if (loadError(ds->status()))
    189                 return;
     199                return false;
    190200        if (version > TSPT_VERSION) {
    191201                QMessageBox(QMessageBox::Critical,trUtf8("Task Load"),trUtf8("Unable to load task:") + "\n" + trUtf8("File version is newer than application supports.\nPlease, try to update application."),QMessageBox::Ok).exec();
    192                 return;
     202                return false;
    193203        }
    194204        // Skipping metadata
    195205        ds->skipRawData(TSPT_META_SIZE);
    196206        if (loadError(ds->status()))
    197                 return;
     207                return false;
    198208        // Cities number
    199209quint16 size;
    200210        *ds >> size;
    201211        if (loadError(ds->status()))
    202                 return;
     212                return false;
    203213        if (size < 3) {
    204214                QMessageBox(QMessageBox::Critical,trUtf8("Task Load"),trUtf8("Unable to load task:") + "\n" + trUtf8("Unexpected data read.\nFile is possibly corrupted."),QMessageBox::Ok).exec();
    205                 return;
     215                return false;
    206216        }
    207217        if (nCities != size)
     
    214224                                if (loadError(ds->status())) {
    215225                                        clear();
    216                                         return;
     226                                        return false;
    217227                                }
    218228                        }
    219229        emit dataChanged(index(0,0),index(nCities - 1,nCities - 1));
    220 }
    221 
    222 void CTSPModel::loadZKT(QDataStream *ds)
     230        return true;
     231}
     232
     233bool CTSPModel::loadZKT(QDataStream *ds)
    223234{
    224235        // Skipping signature
    225236        ds->skipRawData(sizeof(ZKT));
    226237        if (loadError(ds->status()))
    227                 return;
     238                return false;
    228239        // File version
    229240quint16 version;
    230241        ds->readRawData(reinterpret_cast<char *>(&version),2);
    231242        if (loadError(ds->status()))
    232                 return;
     243                return false;
    233244        if (version > ZKT_VERSION) {
    234245                QMessageBox(QMessageBox::Critical,trUtf8("Task Load"),trUtf8("Unable to load task:") + "\n" + trUtf8("File version is newer than application supports.\nPlease, try to update application."),QMessageBox::Ok).exec();
    235                 return;
     246                return false;
    236247        }
    237248        // Cities number
     
    239250        ds->readRawData(reinterpret_cast<char *>(&size),1);
    240251        if (loadError(ds->status()))
    241                 return;
     252                return false;
    242253        if ((size < 3) || (size > 5)) {
    243254                QMessageBox(QMessageBox::Critical,trUtf8("Task Load"),trUtf8("Unable to load task:") + "\n" + trUtf8("Unexpected data read.\nFile is possibly corrupted."),QMessageBox::Ok).exec();
    244                 return;
     255                return false;
    245256        }
    246257        if (nCities != size)
     
    254265                                if (loadError(ds->status())) {
    255266                                        clear();
    256                                         return;
     267                                        return false;
    257268                                }
    258269                                table[r][c] = val;
     
    261272                                if (loadError(ds->status())) {
    262273                                        clear();
    263                                         return;
     274                                        return false;
    264275                                }
    265276                        }
    266277        emit dataChanged(index(0,0),index(nCities - 1,nCities - 1));
     278        return true;
    267279}
    268280
Note: See TracChangeset for help on using the changeset viewer.