Changeset 9b7064d770 in tspsg


Ignore:
Timestamp:
Jul 1, 2009, 7:01:23 PM (15 years ago)
Author:
Oleksii Serdiuk
Branches:
0.1.3.145-beta1-symbian, 0.1.4.170-beta2-bb10, appveyor, imgbot, master, readme
Children:
4c96f94558
Parents:
c02b4903bd
Message:

+ Error handling when loading/saving files.

  • Translation updates (not finished).
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • i18n/en.ts

    rc02b4903bd r9b7064d770  
    66    <name>CTSPModel</name>
    77    <message>
    8         <location filename="../src/tspmodel.cpp" line="52"/>
     8        <location filename="../src/tspmodel.cpp" line="51"/>
    99        <source>City %1</source>
    1010        <translation type="unfinished"></translation>
    1111    </message>
    1212    <message>
    13         <location filename="../src/tspmodel.cpp" line="54"/>
     13        <location filename="../src/tspmodel.cpp" line="53"/>
    1414        <source>%1</source>
     15        <translation type="unfinished"></translation>
     16    </message>
     17    <message>
     18        <location filename="../src/tspmodel.cpp" line="156"/>
     19        <source>Unexpected end of file.</source>
     20        <translation type="unfinished"></translation>
     21    </message>
     22    <message>
     23        <location filename="../src/tspmodel.cpp" line="158"/>
     24        <source>Corrupt data read. File possibly corrupted.</source>
     25        <translation type="unfinished"></translation>
     26    </message>
     27    <message>
     28        <location filename="../src/tspmodel.cpp" line="160"/>
     29        <source>Unknown error.</source>
     30        <translation type="unfinished"></translation>
     31    </message>
     32    <message>
     33        <location filename="../src/tspmodel.cpp" line="161"/>
     34        <location filename="../src/tspmodel.cpp" line="169"/>
     35        <location filename="../src/tspmodel.cpp" line="184"/>
     36        <location filename="../src/tspmodel.cpp" line="200"/>
     37        <location filename="../src/tspmodel.cpp" line="213"/>
     38        <location filename="../src/tspmodel.cpp" line="243"/>
     39        <location filename="../src/tspmodel.cpp" line="252"/>
     40        <source>Task Load</source>
     41        <translation type="unfinished"></translation>
     42    </message>
     43    <message>
     44        <location filename="../src/tspmodel.cpp" line="161"/>
     45        <location filename="../src/tspmodel.cpp" line="184"/>
     46        <location filename="../src/tspmodel.cpp" line="200"/>
     47        <location filename="../src/tspmodel.cpp" line="213"/>
     48        <location filename="../src/tspmodel.cpp" line="243"/>
     49        <location filename="../src/tspmodel.cpp" line="252"/>
     50        <source>Unable to load task:</source>
     51        <translation type="unfinished"></translation>
     52    </message>
     53    <message>
     54        <location filename="../src/tspmodel.cpp" line="169"/>
     55        <source>Unable to open task file.
     56Error: %1</source>
     57        <translation type="unfinished"></translation>
     58    </message>
     59    <message>
     60        <location filename="../src/tspmodel.cpp" line="184"/>
     61        <source>Unknown file format or file is corrupted.</source>
     62        <translation type="unfinished"></translation>
     63    </message>
     64    <message>
     65        <location filename="../src/tspmodel.cpp" line="200"/>
     66        <location filename="../src/tspmodel.cpp" line="243"/>
     67        <source>File version is newer than application supports.
     68Please, try to update application.</source>
     69        <translation type="unfinished"></translation>
     70    </message>
     71    <message>
     72        <location filename="../src/tspmodel.cpp" line="213"/>
     73        <location filename="../src/tspmodel.cpp" line="252"/>
     74        <source>Unexpected data read.
     75File is possibly corrupted.</source>
     76        <translation type="unfinished"></translation>
     77    </message>
     78    <message>
     79        <location filename="../src/tspmodel.cpp" line="282"/>
     80        <location filename="../src/tspmodel.cpp" line="288"/>
     81        <location filename="../src/tspmodel.cpp" line="295"/>
     82        <location filename="../src/tspmodel.cpp" line="302"/>
     83        <location filename="../src/tspmodel.cpp" line="309"/>
     84        <location filename="../src/tspmodel.cpp" line="316"/>
     85        <location filename="../src/tspmodel.cpp" line="323"/>
     86        <location filename="../src/tspmodel.cpp" line="333"/>
     87        <source>Task Save</source>
     88        <translation type="unfinished"></translation>
     89    </message>
     90    <message>
     91        <location filename="../src/tspmodel.cpp" line="282"/>
     92        <source>Unable to create task file.
     93Error: %1
     94Maybe, file is read-only?</source>
     95        <translation type="unfinished"></translation>
     96    </message>
     97    <message>
     98        <location filename="../src/tspmodel.cpp" line="288"/>
     99        <location filename="../src/tspmodel.cpp" line="295"/>
     100        <location filename="../src/tspmodel.cpp" line="302"/>
     101        <location filename="../src/tspmodel.cpp" line="309"/>
     102        <location filename="../src/tspmodel.cpp" line="316"/>
     103        <location filename="../src/tspmodel.cpp" line="323"/>
     104        <location filename="../src/tspmodel.cpp" line="333"/>
     105        <source>Unable to save task.
     106Error: %1</source>
    15107        <translation type="unfinished"></translation>
    16108    </message>
     
    19111    <name>MainWindow</name>
    20112    <message>
    21         <location filename="../src/mainwindow.cpp" line="125"/>
    22         <location filename="../src/mainwindow.cpp" line="246"/>
    23         <location filename="../src/mainwindow.cpp" line="255"/>
     113        <location filename="../src/mainwindow.cpp" line="124"/>
     114        <location filename="../src/mainwindow.cpp" line="292"/>
     115        <location filename="../src/mainwindow.cpp" line="301"/>
    24116        <source>Language change</source>
    25117        <translation type="unfinished"></translation>
    26118    </message>
    27119    <message>
    28         <location filename="../src/mainwindow.cpp" line="125"/>
     120        <location filename="../src/mainwindow.cpp" line="124"/>
    29121        <source>Unable to load translation language.</source>
    30122        <translation type="unfinished"></translation>
    31123    </message>
    32124    <message>
    33         <location filename="../src/mainwindow.cpp" line="192"/>
     125        <location filename="../src/mainwindow.cpp" line="159"/>
     126        <source>All Supported Formats</source>
     127        <translation type="unfinished"></translation>
     128    </message>
     129    <message>
     130        <location filename="../src/mainwindow.cpp" line="160"/>
     131        <location filename="../src/mainwindow.cpp" line="161"/>
     132        <source>%1 Task Files</source>
     133        <translation type="unfinished"></translation>
     134    </message>
     135    <message>
     136        <location filename="../src/mainwindow.cpp" line="162"/>
     137        <location filename="../src/mainwindow.cpp" line="177"/>
     138        <source>All Files</source>
     139        <translation type="unfinished"></translation>
     140    </message>
     141    <message>
     142        <location filename="../src/mainwindow.cpp" line="176"/>
     143        <source>%1 Task File</source>
     144        <translation type="unfinished"></translation>
     145    </message>
     146    <message>
     147        <location filename="../src/mainwindow.cpp" line="228"/>
    34148        <source>Data error</source>
    35149        <translation type="unfinished"></translation>
    36150    </message>
    37151    <message>
    38         <location filename="../src/mainwindow.cpp" line="192"/>
     152        <location filename="../src/mainwindow.cpp" line="228"/>
    39153        <source>Error in cell [Row %1; Column %2]: Invalid data format.</source>
    40154        <translation type="unfinished"></translation>
    41155    </message>
    42156    <message>
    43         <location filename="../src/mainwindow.cpp" line="201"/>
     157        <location filename="../src/mainwindow.cpp" line="237"/>
    44158        <source>Solution error</source>
    45159        <translation type="unfinished"></translation>
    46160    </message>
    47161    <message>
    48         <location filename="../src/mainwindow.cpp" line="201"/>
     162        <location filename="../src/mainwindow.cpp" line="237"/>
    49163        <source>There was an error while solving the task.</source>
    50164        <translation type="unfinished"></translation>
    51165    </message>
    52166    <message>
    53         <location filename="../src/mainwindow.cpp" line="246"/>
     167        <location filename="../src/mainwindow.cpp" line="292"/>
    54168        <source>Language will be autodetected on next application start.</source>
    55169        <translation type="unfinished"></translation>
    56170    </message>
    57171    <message>
    58         <location filename="../src/mainwindow.cpp" line="255"/>
     172        <location filename="../src/mainwindow.cpp" line="301"/>
    59173        <source>You have language autodetection turned on.
    60174It needs to be off.
     
    153267    </message>
    154268    <message>
     269        <location filename="../ui/mainwindow.ce.ui" line="558"/>
     270        <location filename="../ui/mainwindow.ui" line="571"/>
     271        <source>&amp;Save</source>
     272        <translation type="unfinished"></translation>
     273    </message>
     274    <message>
     275        <location filename="../ui/mainwindow.ce.ui" line="283"/>
     276        <location filename="../ui/mainwindow.ui" line="264"/>
     277        <source>&amp;Settings</source>
     278        <translation type="unfinished"></translation>
     279    </message>
     280    <message>
    155281        <location filename="../ui/mainwindow.ce.ui" line="262"/>
    156282        <location filename="../ui/mainwindow.ui" line="240"/>
    157         <source>&amp;Save</source>
    158         <translation type="unfinished"></translation>
    159     </message>
    160     <message>
    161         <location filename="../ui/mainwindow.ce.ui" line="282"/>
    162         <location filename="../ui/mainwindow.ui" line="263"/>
    163         <source>&amp;Settings</source>
    164         <translation type="unfinished"></translation>
    165     </message>
    166     <message>
    167         <location filename="../ui/mainwindow.ce.ui" line="292"/>
    168         <location filename="../ui/mainwindow.ui" line="273"/>
     283        <source>Save &amp;as...</source>
     284        <translation type="unfinished"></translation>
     285    </message>
     286    <message>
     287        <location filename="../ui/mainwindow.ce.ui" line="293"/>
     288        <location filename="../ui/mainwindow.ui" line="274"/>
    169289        <source>&amp;Language</source>
    170290        <translation type="unfinished"></translation>
    171291    </message>
    172292    <message>
    173         <location filename="../ui/mainwindow.ce.ui" line="308"/>
    174         <location filename="../ui/mainwindow.ui" line="289"/>
     293        <location filename="../ui/mainwindow.ce.ui" line="309"/>
     294        <location filename="../ui/mainwindow.ui" line="290"/>
    175295        <source>&amp;Help</source>
    176296        <translation type="unfinished"></translation>
    177297    </message>
    178298    <message>
    179         <location filename="../ui/mainwindow.ce.ui" line="348"/>
    180         <location filename="../ui/mainwindow.ui" line="361"/>
     299        <location filename="../ui/mainwindow.ce.ui" line="349"/>
     300        <location filename="../ui/mainwindow.ui" line="362"/>
    181301        <source>Solution st&amp;eps</source>
    182302        <translation type="unfinished"></translation>
    183303    </message>
    184304    <message>
    185         <location filename="../ui/mainwindow.ce.ui" line="351"/>
    186         <location filename="../ui/mainwindow.ui" line="364"/>
     305        <location filename="../ui/mainwindow.ce.ui" line="352"/>
     306        <location filename="../ui/mainwindow.ui" line="365"/>
    187307        <source>Save solution steps</source>
    188308        <translation type="unfinished"></translation>
    189309    </message>
    190310    <message>
    191         <location filename="../ui/mainwindow.ce.ui" line="354"/>
    192         <location filename="../ui/mainwindow.ui" line="367"/>
     311        <location filename="../ui/mainwindow.ce.ui" line="355"/>
     312        <location filename="../ui/mainwindow.ui" line="368"/>
    193313        <source>Save solution steps only</source>
    194314        <translation type="unfinished"></translation>
    195315    </message>
    196316    <message>
    197         <location filename="../ui/mainwindow.ce.ui" line="362"/>
    198         <location filename="../ui/mainwindow.ui" line="375"/>
     317        <location filename="../ui/mainwindow.ce.ui" line="363"/>
     318        <location filename="../ui/mainwindow.ui" line="376"/>
    199319        <source>Solution &amp;graph</source>
    200320        <translation type="unfinished"></translation>
    201321    </message>
    202322    <message>
    203         <location filename="../ui/mainwindow.ce.ui" line="365"/>
    204         <location filename="../ui/mainwindow.ui" line="378"/>
     323        <location filename="../ui/mainwindow.ce.ui" line="366"/>
     324        <location filename="../ui/mainwindow.ui" line="379"/>
    205325        <source>Save solution graph</source>
    206326        <translation type="unfinished"></translation>
    207327    </message>
    208328    <message>
    209         <location filename="../ui/mainwindow.ce.ui" line="368"/>
    210         <location filename="../ui/mainwindow.ui" line="381"/>
     329        <location filename="../ui/mainwindow.ce.ui" line="369"/>
     330        <location filename="../ui/mainwindow.ui" line="382"/>
    211331        <source>Save solution graph only</source>
    212332        <translation type="unfinished"></translation>
    213333    </message>
    214334    <message>
    215         <location filename="../ui/mainwindow.ce.ui" line="376"/>
    216         <location filename="../ui/mainwindow.ui" line="389"/>
     335        <location filename="../ui/mainwindow.ce.ui" line="377"/>
     336        <location filename="../ui/mainwindow.ui" line="390"/>
    217337        <source>&amp;Solution</source>
    218338        <translation type="unfinished"></translation>
    219339    </message>
    220340    <message>
    221         <location filename="../ui/mainwindow.ce.ui" line="379"/>
    222         <location filename="../ui/mainwindow.ui" line="392"/>
     341        <location filename="../ui/mainwindow.ce.ui" line="380"/>
     342        <location filename="../ui/mainwindow.ui" line="393"/>
    223343        <source>Save solution</source>
    224344        <translation type="unfinished"></translation>
    225345    </message>
    226346    <message>
    227         <location filename="../ui/mainwindow.ce.ui" line="382"/>
    228         <location filename="../ui/mainwindow.ui" line="395"/>
     347        <location filename="../ui/mainwindow.ce.ui" line="383"/>
     348        <location filename="../ui/mainwindow.ui" line="396"/>
    229349        <source>Save solution steps and graph</source>
    230350        <translation type="unfinished"></translation>
    231351    </message>
    232352    <message>
    233         <location filename="../ui/mainwindow.ce.ui" line="391"/>
    234         <location filename="../ui/mainwindow.ui" line="404"/>
     353        <location filename="../ui/mainwindow.ce.ui" line="392"/>
     354        <location filename="../ui/mainwindow.ui" line="405"/>
    235355        <source>&amp;New</source>
    236356        <translation type="unfinished"></translation>
    237357    </message>
    238358    <message>
    239         <location filename="../ui/mainwindow.ce.ui" line="394"/>
    240         <location filename="../ui/mainwindow.ui" line="407"/>
     359        <location filename="../ui/mainwindow.ce.ui" line="395"/>
     360        <location filename="../ui/mainwindow.ui" line="408"/>
    241361        <source>New</source>
    242362        <translation type="unfinished"></translation>
    243363    </message>
    244364    <message>
    245         <location filename="../ui/mainwindow.ce.ui" line="397"/>
    246         <location filename="../ui/mainwindow.ui" line="410"/>
     365        <location filename="../ui/mainwindow.ce.ui" line="398"/>
     366        <location filename="../ui/mainwindow.ui" line="411"/>
    247367        <source>New task</source>
    248368        <translation type="unfinished"></translation>
    249369    </message>
    250370    <message>
    251         <location filename="../ui/mainwindow.ce.ui" line="400"/>
    252         <location filename="../ui/mainwindow.ui" line="413"/>
     371        <location filename="../ui/mainwindow.ce.ui" line="401"/>
     372        <location filename="../ui/mainwindow.ui" line="414"/>
    253373        <source>Create new task</source>
    254374        <translation type="unfinished"></translation>
    255375    </message>
    256376    <message>
    257         <location filename="../ui/mainwindow.ce.ui" line="403"/>
    258         <location filename="../ui/mainwindow.ui" line="416"/>
     377        <location filename="../ui/mainwindow.ce.ui" line="404"/>
     378        <location filename="../ui/mainwindow.ui" line="417"/>
    259379        <source>Ctrl+N</source>
    260380        <translation type="unfinished"></translation>
    261381    </message>
    262382    <message>
    263         <location filename="../ui/mainwindow.ce.ui" line="415"/>
    264         <location filename="../ui/mainwindow.ui" line="428"/>
     383        <location filename="../ui/mainwindow.ce.ui" line="413"/>
     384        <location filename="../ui/mainwindow.ui" line="426"/>
    265385        <source>&amp;Open...</source>
    266386        <translation type="unfinished"></translation>
    267387    </message>
    268388    <message>
    269         <location filename="../ui/mainwindow.ce.ui" line="418"/>
    270         <location filename="../ui/mainwindow.ui" line="431"/>
     389        <location filename="../ui/mainwindow.ce.ui" line="416"/>
     390        <location filename="../ui/mainwindow.ui" line="429"/>
    271391        <source>Open...</source>
    272392        <translation type="unfinished"></translation>
    273393    </message>
    274394    <message>
    275         <location filename="../ui/mainwindow.ce.ui" line="421"/>
    276         <location filename="../ui/mainwindow.ui" line="434"/>
     395        <location filename="../ui/mainwindow.ce.ui" line="419"/>
     396        <location filename="../ui/mainwindow.ui" line="432"/>
    277397        <source>Open task</source>
    278398        <translation type="unfinished"></translation>
    279399    </message>
    280400    <message>
    281         <location filename="../ui/mainwindow.ce.ui" line="424"/>
    282         <location filename="../ui/mainwindow.ui" line="437"/>
     401        <location filename="../ui/mainwindow.ce.ui" line="422"/>
     402        <location filename="../ui/mainwindow.ui" line="435"/>
    283403        <source>Open saved task</source>
    284404        <translation type="unfinished"></translation>
    285405    </message>
    286406    <message>
    287         <location filename="../ui/mainwindow.ce.ui" line="427"/>
    288         <location filename="../ui/mainwindow.ui" line="440"/>
     407        <location filename="../ui/mainwindow.ce.ui" line="425"/>
     408        <location filename="../ui/mainwindow.ui" line="438"/>
    289409        <source>Ctrl+O</source>
    290410        <translation type="unfinished"></translation>
    291411    </message>
    292412    <message>
    293         <location filename="../ui/mainwindow.ce.ui" line="436"/>
    294         <location filename="../ui/mainwindow.ui" line="449"/>
     413        <location filename="../ui/mainwindow.ce.ui" line="434"/>
     414        <location filename="../ui/mainwindow.ui" line="447"/>
    295415        <source>&amp;Preferences...</source>
    296416        <translation type="unfinished"></translation>
    297417    </message>
    298418    <message>
    299         <location filename="../ui/mainwindow.ce.ui" line="439"/>
    300         <location filename="../ui/mainwindow.ui" line="452"/>
     419        <location filename="../ui/mainwindow.ce.ui" line="437"/>
     420        <location filename="../ui/mainwindow.ui" line="450"/>
    301421        <source>Preferences...</source>
    302422        <translation type="unfinished"></translation>
    303423    </message>
    304424    <message>
    305         <location filename="../ui/mainwindow.ce.ui" line="442"/>
    306         <location filename="../ui/mainwindow.ui" line="455"/>
     425        <location filename="../ui/mainwindow.ce.ui" line="440"/>
     426        <location filename="../ui/mainwindow.ui" line="453"/>
    307427        <source>Application preferences</source>
    308428        <translation type="unfinished"></translation>
    309429    </message>
    310430    <message>
    311         <location filename="../ui/mainwindow.ce.ui" line="454"/>
    312         <location filename="../ui/mainwindow.ui" line="467"/>
     431        <location filename="../ui/mainwindow.ce.ui" line="452"/>
     432        <location filename="../ui/mainwindow.ui" line="465"/>
    313433        <source>&amp;Contents</source>
    314434        <translation type="unfinished"></translation>
    315435    </message>
    316436    <message>
    317         <location filename="../ui/mainwindow.ce.ui" line="457"/>
    318         <location filename="../ui/mainwindow.ui" line="470"/>
     437        <location filename="../ui/mainwindow.ce.ui" line="455"/>
     438        <location filename="../ui/mainwindow.ui" line="468"/>
    319439        <source>Open help contents</source>
    320440        <translation type="unfinished"></translation>
    321441    </message>
    322442    <message>
    323         <location filename="../ui/mainwindow.ce.ui" line="469"/>
    324         <location filename="../ui/mainwindow.ui" line="482"/>
     443        <location filename="../ui/mainwindow.ce.ui" line="467"/>
     444        <location filename="../ui/mainwindow.ui" line="480"/>
    325445        <source>&amp;Context help</source>
    326446        <translation type="unfinished"></translation>
    327447    </message>
    328448    <message>
    329         <location filename="../ui/mainwindow.ce.ui" line="472"/>
    330         <location filename="../ui/mainwindow.ui" line="485"/>
     449        <location filename="../ui/mainwindow.ce.ui" line="470"/>
     450        <location filename="../ui/mainwindow.ui" line="483"/>
    331451        <source>Open context help</source>
    332452        <translation type="unfinished"></translation>
    333453    </message>
    334454    <message>
    335         <location filename="../ui/mainwindow.ce.ui" line="481"/>
    336         <location filename="../ui/mainwindow.ui" line="494"/>
     455        <location filename="../ui/mainwindow.ce.ui" line="479"/>
     456        <location filename="../ui/mainwindow.ui" line="492"/>
    337457        <source>&amp;About...</source>
    338458        <translation type="unfinished"></translation>
    339459    </message>
    340460    <message>
    341         <location filename="../ui/mainwindow.ce.ui" line="484"/>
    342         <location filename="../ui/mainwindow.ui" line="497"/>
     461        <location filename="../ui/mainwindow.ce.ui" line="482"/>
     462        <location filename="../ui/mainwindow.ui" line="495"/>
    343463        <source>About...</source>
    344464        <translation type="unfinished"></translation>
    345465    </message>
    346466    <message>
    347         <location filename="../ui/mainwindow.ce.ui" line="487"/>
    348         <location filename="../ui/mainwindow.ui" line="500"/>
     467        <location filename="../ui/mainwindow.ce.ui" line="485"/>
     468        <location filename="../ui/mainwindow.ui" line="498"/>
    349469        <source>About application</source>
    350470        <translation type="unfinished"></translation>
    351471    </message>
    352472    <message>
    353         <location filename="../ui/mainwindow.ce.ui" line="496"/>
    354         <location filename="../ui/mainwindow.ui" line="509"/>
     473        <location filename="../ui/mainwindow.ce.ui" line="494"/>
     474        <location filename="../ui/mainwindow.ui" line="507"/>
    355475        <source>E&amp;xit</source>
    356476        <translation type="unfinished"></translation>
    357477    </message>
    358478    <message>
    359         <location filename="../ui/mainwindow.ce.ui" line="499"/>
    360         <location filename="../ui/mainwindow.ui" line="512"/>
     479        <location filename="../ui/mainwindow.ce.ui" line="497"/>
     480        <location filename="../ui/mainwindow.ui" line="510"/>
    361481        <source>Exit application</source>
    362482        <translation type="unfinished"></translation>
    363483    </message>
    364484    <message>
    365         <location filename="../ui/mainwindow.ce.ui" line="511"/>
    366         <location filename="../ui/mainwindow.ui" line="524"/>
     485        <location filename="../ui/mainwindow.ce.ui" line="506"/>
     486        <location filename="../ui/mainwindow.ui" line="519"/>
    367487        <source>&amp;Task...</source>
    368488        <translation type="unfinished"></translation>
    369489    </message>
    370490    <message>
    371         <location filename="../ui/mainwindow.ce.ui" line="514"/>
    372         <location filename="../ui/mainwindow.ui" line="527"/>
     491        <location filename="../ui/mainwindow.ce.ui" line="509"/>
     492        <location filename="../ui/mainwindow.ui" line="522"/>
    373493        <source>Task...</source>
    374494        <translation type="unfinished"></translation>
    375495    </message>
    376496    <message>
    377         <location filename="../ui/mainwindow.ce.ui" line="517"/>
    378         <location filename="../ui/mainwindow.ui" line="530"/>
     497        <location filename="../ui/mainwindow.ce.ui" line="512"/>
     498        <location filename="../ui/mainwindow.ce.ui" line="561"/>
     499        <location filename="../ui/mainwindow.ui" line="525"/>
     500        <location filename="../ui/mainwindow.ui" line="577"/>
    379501        <source>Save task</source>
    380502        <translation type="unfinished"></translation>
    381503    </message>
    382504    <message>
    383         <location filename="../ui/mainwindow.ce.ui" line="520"/>
    384         <location filename="../ui/mainwindow.ui" line="533"/>
     505        <location filename="../ui/mainwindow.ce.ui" line="515"/>
     506        <location filename="../ui/mainwindow.ui" line="528"/>
    385507        <source>Save task to file</source>
    386508        <translation type="unfinished"></translation>
    387509    </message>
    388510    <message>
    389         <location filename="../ui/mainwindow.ce.ui" line="523"/>
    390         <location filename="../ui/mainwindow.ui" line="536"/>
     511        <location filename="../ui/mainwindow.ce.ui" line="518"/>
     512        <location filename="../ui/mainwindow.ui" line="531"/>
    391513        <source>Ctrl+S</source>
    392514        <translation type="unfinished"></translation>
    393515    </message>
    394516    <message>
    395         <location filename="../ui/mainwindow.ce.ui" line="534"/>
    396         <location filename="../ui/mainwindow.ui" line="547"/>
     517        <location filename="../ui/mainwindow.ce.ui" line="529"/>
     518        <location filename="../ui/mainwindow.ui" line="542"/>
    397519        <source>&amp;Autodetect</source>
    398520        <translation type="unfinished"></translation>
    399521    </message>
    400522    <message>
    401         <location filename="../ui/mainwindow.ce.ui" line="551"/>
     523        <location filename="../ui/mainwindow.ce.ui" line="546"/>
    402524        <source>English</source>
    403525        <translation type="unfinished"></translation>
    404526    </message>
    405527    <message>
    406         <location filename="../ui/mainwindow.ce.ui" line="286"/>
    407         <location filename="../ui/mainwindow.ui" line="267"/>
     528        <location filename="../ui/mainwindow.ce.ui" line="564"/>
     529        <location filename="../ui/mainwindow.ui" line="580"/>
     530        <source>Save current task</source>
     531        <translation type="unfinished"></translation>
     532    </message>
     533    <message>
     534        <location filename="../ui/mainwindow.ce.ui" line="287"/>
     535        <location filename="../ui/mainwindow.ui" line="268"/>
    408536        <source>Select language</source>
    409537        <translation type="unfinished"></translation>
    410538    </message>
    411539    <message>
    412         <location filename="../ui/mainwindow.ce.ui" line="289"/>
    413         <location filename="../ui/mainwindow.ui" line="270"/>
     540        <location filename="../ui/mainwindow.ce.ui" line="290"/>
     541        <location filename="../ui/mainwindow.ui" line="271"/>
    414542        <source>Select application language</source>
    415543        <translation type="unfinished"></translation>
    416544    </message>
    417545    <message>
    418         <location filename="../ui/mainwindow.ui" line="332"/>
     546        <location filename="../ui/mainwindow.ui" line="333"/>
    419547        <source>P&amp;rint setup...</source>
    420548        <translation type="unfinished"></translation>
    421549    </message>
    422550    <message>
    423         <location filename="../ui/mainwindow.ui" line="335"/>
     551        <location filename="../ui/mainwindow.ui" line="336"/>
    424552        <source>Setup printing</source>
    425553        <translation type="unfinished"></translation>
    426554    </message>
    427555    <message>
    428         <location filename="../ui/mainwindow.ui" line="347"/>
     556        <location filename="../ui/mainwindow.ui" line="348"/>
    429557        <source>&amp;Print...</source>
    430558        <translation type="unfinished"></translation>
    431559    </message>
    432560    <message>
    433         <location filename="../ui/mainwindow.ui" line="350"/>
     561        <location filename="../ui/mainwindow.ui" line="351"/>
    434562        <source>Print solution results</source>
    435563        <translation type="unfinished"></translation>
    436564    </message>
    437565    <message>
    438         <location filename="../ui/mainwindow.ui" line="353"/>
     566        <location filename="../ui/mainwindow.ui" line="354"/>
    439567        <source>Ctrl+P</source>
    440568        <translation type="unfinished"></translation>
    441569    </message>
    442570    <message>
    443         <location filename="../ui/mainwindow.ce.ui" line="537"/>
    444         <location filename="../ui/mainwindow.ui" line="550"/>
     571        <location filename="../ui/mainwindow.ui" line="574"/>
     572        <source>Save</source>
     573        <translation type="unfinished"></translation>
     574    </message>
     575    <message>
     576        <location filename="../ui/mainwindow.ce.ui" line="532"/>
     577        <location filename="../ui/mainwindow.ui" line="545"/>
    445578        <source>Detect language automatically</source>
    446579        <translation type="unfinished"></translation>
    447580    </message>
    448581    <message>
    449         <location filename="../ui/mainwindow.ce.ui" line="540"/>
    450         <location filename="../ui/mainwindow.ui" line="553"/>
     582        <location filename="../ui/mainwindow.ce.ui" line="535"/>
     583        <location filename="../ui/mainwindow.ui" line="548"/>
    451584        <source>Detect language automatically based on regional settings</source>
    452585        <translation type="unfinished"></translation>
  • i18n/ru.ts

    rc02b4903bd r9b7064d770  
    1616    </message>
    1717    <message>
    18         <location filename="../src/tspmodel.cpp" line="165"/>
    19         <location filename="../src/tspmodel.cpp" line="177"/>
    20         <location filename="../src/tspmodel.cpp" line="203"/>
     18        <location filename="../src/tspmodel.cpp" line="156"/>
     19        <source>Unexpected end of file.</source>
     20        <translation type="unfinished"></translation>
     21    </message>
     22    <message>
     23        <location filename="../src/tspmodel.cpp" line="158"/>
     24        <source>Corrupt data read. File possibly corrupted.</source>
     25        <translation type="unfinished"></translation>
     26    </message>
     27    <message>
     28        <location filename="../src/tspmodel.cpp" line="160"/>
     29        <source>Unknown error.</source>
     30        <translation>Неизвестная ошибка.</translation>
     31    </message>
     32    <message>
     33        <location filename="../src/tspmodel.cpp" line="161"/>
     34        <location filename="../src/tspmodel.cpp" line="169"/>
     35        <location filename="../src/tspmodel.cpp" line="184"/>
     36        <location filename="../src/tspmodel.cpp" line="200"/>
     37        <location filename="../src/tspmodel.cpp" line="213"/>
     38        <location filename="../src/tspmodel.cpp" line="243"/>
     39        <location filename="../src/tspmodel.cpp" line="252"/>
    2140        <source>Task Load</source>
    2241        <translation>Загрузка задания</translation>
    2342    </message>
    2443    <message>
    25         <location filename="../src/tspmodel.cpp" line="165"/>
    26         <source>Unable to load task:
    27 Unknown file format or file is corrupted.</source>
    28         <translation>Невозможно загрузить задание:
    29 Неизвестный формат файла или файл поврежден.</translation>
    30     </message>
    31     <message>
    32         <location filename="../src/tspmodel.cpp" line="177"/>
    33         <location filename="../src/tspmodel.cpp" line="203"/>
    34         <source>Unable to load task:
    35 File version is newer than application supports.
     44        <location filename="../src/tspmodel.cpp" line="161"/>
     45        <location filename="../src/tspmodel.cpp" line="184"/>
     46        <location filename="../src/tspmodel.cpp" line="200"/>
     47        <location filename="../src/tspmodel.cpp" line="213"/>
     48        <location filename="../src/tspmodel.cpp" line="243"/>
     49        <location filename="../src/tspmodel.cpp" line="252"/>
     50        <source>Unable to load task:</source>
     51        <translation>Невозможно загрузить задание:</translation>
     52    </message>
     53    <message>
     54        <location filename="../src/tspmodel.cpp" line="169"/>
     55        <source>Unable to open task file.
     56Error: %1</source>
     57        <translation type="unfinished"></translation>
     58    </message>
     59    <message>
     60        <location filename="../src/tspmodel.cpp" line="184"/>
     61        <source>Unknown file format or file is corrupted.</source>
     62        <translation>Неизвестный формат файла или файл поврежден.</translation>
     63    </message>
     64    <message>
     65        <location filename="../src/tspmodel.cpp" line="200"/>
     66        <location filename="../src/tspmodel.cpp" line="243"/>
     67        <source>File version is newer than application supports.
    3668Please, try to update application.</source>
    37         <translation>Невозможно загрузить задание:
    38 Версия файла новее чем поддерживаемая приложением.
     69        <translation>Версия файла новее чем поддерживаемая приложением.
    3970Пожалуйста, попробуйте обновить приложение.</translation>
     71    </message>
     72    <message>
     73        <location filename="../src/tspmodel.cpp" line="213"/>
     74        <location filename="../src/tspmodel.cpp" line="252"/>
     75        <source>Unexpected data read.
     76File is possibly corrupted.</source>
     77        <translation type="unfinished"></translation>
     78    </message>
     79    <message>
     80        <location filename="../src/tspmodel.cpp" line="282"/>
     81        <location filename="../src/tspmodel.cpp" line="288"/>
     82        <location filename="../src/tspmodel.cpp" line="295"/>
     83        <location filename="../src/tspmodel.cpp" line="302"/>
     84        <location filename="../src/tspmodel.cpp" line="309"/>
     85        <location filename="../src/tspmodel.cpp" line="316"/>
     86        <location filename="../src/tspmodel.cpp" line="323"/>
     87        <location filename="../src/tspmodel.cpp" line="333"/>
     88        <source>Task Save</source>
     89        <translation>Сохранение задачи</translation>
     90    </message>
     91    <message>
     92        <location filename="../src/tspmodel.cpp" line="282"/>
     93        <source>Unable to create task file.
     94Error: %1
     95Maybe, file is read-only?</source>
     96        <translation type="unfinished"></translation>
     97    </message>
     98    <message>
     99        <location filename="../src/tspmodel.cpp" line="288"/>
     100        <location filename="../src/tspmodel.cpp" line="295"/>
     101        <location filename="../src/tspmodel.cpp" line="302"/>
     102        <location filename="../src/tspmodel.cpp" line="309"/>
     103        <location filename="../src/tspmodel.cpp" line="316"/>
     104        <location filename="../src/tspmodel.cpp" line="323"/>
     105        <location filename="../src/tspmodel.cpp" line="333"/>
     106        <source>Unable to save task.
     107Error: %1</source>
     108        <translation>Невозможно сохранить задание.
     109Ошибка: %1</translation>
    40110    </message>
    41111</context>
     
    44114    <message>
    45115        <location filename="../src/mainwindow.cpp" line="124"/>
    46         <location filename="../src/mainwindow.cpp" line="279"/>
    47         <location filename="../src/mainwindow.cpp" line="288"/>
     116        <location filename="../src/mainwindow.cpp" line="292"/>
     117        <location filename="../src/mainwindow.cpp" line="301"/>
    48118        <source>Language change</source>
    49119        <translation>Смена языка</translation>
     
    58128        <source>All Supported Formats</source>
    59129        <translation>Все поддерживаемые форматы</translation>
    60     </message>
    61     <message>
    62         <source>TSPSG Task Files</source>
    63         <translation type="obsolete">Файлы задачи TSPSG</translation>
    64     </message>
    65     <message>
    66         <source>ZKomModRd Task Files</source>
    67         <translation type="obsolete">Файлы задачи ZKomModRd</translation>
    68130    </message>
    69131    <message>
     
    74136    </message>
    75137    <message>
    76         <source>TSPSG Task File</source>
    77         <translation type="obsolete">Файл задачи TSPSG</translation>
    78     </message>
    79     <message>
    80138        <location filename="../src/mainwindow.cpp" line="160"/>
    81139        <location filename="../src/mainwindow.cpp" line="161"/>
     
    89147    </message>
    90148    <message>
    91         <location filename="../src/mainwindow.cpp" line="225"/>
     149        <location filename="../src/mainwindow.cpp" line="228"/>
    92150        <source>Data error</source>
    93151        <translation>Ошибка в данных</translation>
    94152    </message>
    95153    <message>
    96         <location filename="../src/mainwindow.cpp" line="225"/>
     154        <location filename="../src/mainwindow.cpp" line="228"/>
    97155        <source>Error in cell [Row %1; Column %2]: Invalid data format.</source>
    98156        <translation>Ошибка в ячейке [Строка %1; Колонка %2]: Неверный формат данных.</translation>
    99157    </message>
    100158    <message>
    101         <location filename="../src/mainwindow.cpp" line="234"/>
     159        <location filename="../src/mainwindow.cpp" line="237"/>
    102160        <source>Solution error</source>
    103161        <translation>Ошибка при решении</translation>
    104162    </message>
    105163    <message>
    106         <location filename="../src/mainwindow.cpp" line="234"/>
     164        <location filename="../src/mainwindow.cpp" line="237"/>
    107165        <source>There was an error while solving the task.</source>
    108166        <translation>Во время решения задачи возникла ошибка.</translation>
    109167    </message>
    110168    <message>
    111         <location filename="../src/mainwindow.cpp" line="279"/>
     169        <location filename="../src/mainwindow.cpp" line="292"/>
    112170        <source>Language will be autodetected on next application start.</source>
    113171        <translation>Язык будет автоматически определен при следующем запуске приложения.</translation>
    114172    </message>
    115173    <message>
    116         <location filename="../src/mainwindow.cpp" line="288"/>
     174        <location filename="../src/mainwindow.cpp" line="301"/>
    117175        <source>You have language autodetection turned on.
    118176It needs to be off.
  • i18n/uk.ts

    rc02b4903bd r9b7064d770  
    1616    </message>
    1717    <message>
    18         <location filename="../src/tspmodel.cpp" line="165"/>
    19         <location filename="../src/tspmodel.cpp" line="177"/>
    20         <location filename="../src/tspmodel.cpp" line="203"/>
     18        <location filename="../src/tspmodel.cpp" line="156"/>
     19        <source>Unexpected end of file.</source>
     20        <translation type="unfinished"></translation>
     21    </message>
     22    <message>
     23        <location filename="../src/tspmodel.cpp" line="158"/>
     24        <source>Corrupt data read. File possibly corrupted.</source>
     25        <translation type="unfinished"></translation>
     26    </message>
     27    <message>
     28        <location filename="../src/tspmodel.cpp" line="160"/>
     29        <source>Unknown error.</source>
     30        <translation>Невідома помилка.</translation>
     31    </message>
     32    <message>
     33        <location filename="../src/tspmodel.cpp" line="161"/>
     34        <location filename="../src/tspmodel.cpp" line="169"/>
     35        <location filename="../src/tspmodel.cpp" line="184"/>
     36        <location filename="../src/tspmodel.cpp" line="200"/>
     37        <location filename="../src/tspmodel.cpp" line="213"/>
     38        <location filename="../src/tspmodel.cpp" line="243"/>
     39        <location filename="../src/tspmodel.cpp" line="252"/>
    2140        <source>Task Load</source>
    2241        <translation>Завантаження завдання</translation>
    2342    </message>
    2443    <message>
    25         <location filename="../src/tspmodel.cpp" line="165"/>
    26         <source>Unable to load task:
    27 Unknown file format or file is corrupted.</source>
    28         <translation>Неможливо завантажити завдання:
    29 Невідомий формат файлу або файл пошкоджено.</translation>
    30     </message>
    31     <message>
    32         <location filename="../src/tspmodel.cpp" line="177"/>
    33         <location filename="../src/tspmodel.cpp" line="203"/>
    34         <source>Unable to load task:
    35 File version is newer than application supports.
     44        <location filename="../src/tspmodel.cpp" line="161"/>
     45        <location filename="../src/tspmodel.cpp" line="184"/>
     46        <location filename="../src/tspmodel.cpp" line="200"/>
     47        <location filename="../src/tspmodel.cpp" line="213"/>
     48        <location filename="../src/tspmodel.cpp" line="243"/>
     49        <location filename="../src/tspmodel.cpp" line="252"/>
     50        <source>Unable to load task:</source>
     51        <translation>Неможливо завантажити завдання:</translation>
     52    </message>
     53    <message>
     54        <location filename="../src/tspmodel.cpp" line="169"/>
     55        <source>Unable to open task file.
     56Error: %1</source>
     57        <translation type="unfinished"></translation>
     58    </message>
     59    <message>
     60        <location filename="../src/tspmodel.cpp" line="184"/>
     61        <source>Unknown file format or file is corrupted.</source>
     62        <translation>Невідомий формат файлу або файл пошкоджено.</translation>
     63    </message>
     64    <message>
     65        <location filename="../src/tspmodel.cpp" line="200"/>
     66        <location filename="../src/tspmodel.cpp" line="243"/>
     67        <source>File version is newer than application supports.
    3668Please, try to update application.</source>
    37         <translation>Неможливо завантажити завдання:
    38 Версія файлу новіша ніж підримувана додатком.
     69        <translation>Версія файлу новіша ніж підримувана додатком.
    3970Будь-ласка, спробуйте оновити додаток.</translation>
     71    </message>
     72    <message>
     73        <location filename="../src/tspmodel.cpp" line="213"/>
     74        <location filename="../src/tspmodel.cpp" line="252"/>
     75        <source>Unexpected data read.
     76File is possibly corrupted.</source>
     77        <translation type="unfinished"></translation>
     78    </message>
     79    <message>
     80        <location filename="../src/tspmodel.cpp" line="282"/>
     81        <location filename="../src/tspmodel.cpp" line="288"/>
     82        <location filename="../src/tspmodel.cpp" line="295"/>
     83        <location filename="../src/tspmodel.cpp" line="302"/>
     84        <location filename="../src/tspmodel.cpp" line="309"/>
     85        <location filename="../src/tspmodel.cpp" line="316"/>
     86        <location filename="../src/tspmodel.cpp" line="323"/>
     87        <location filename="../src/tspmodel.cpp" line="333"/>
     88        <source>Task Save</source>
     89        <translation>Збереження завдання</translation>
     90    </message>
     91    <message>
     92        <location filename="../src/tspmodel.cpp" line="282"/>
     93        <source>Unable to create task file.
     94Error: %1
     95Maybe, file is read-only?</source>
     96        <translation type="unfinished"></translation>
     97    </message>
     98    <message>
     99        <location filename="../src/tspmodel.cpp" line="288"/>
     100        <location filename="../src/tspmodel.cpp" line="295"/>
     101        <location filename="../src/tspmodel.cpp" line="302"/>
     102        <location filename="../src/tspmodel.cpp" line="309"/>
     103        <location filename="../src/tspmodel.cpp" line="316"/>
     104        <location filename="../src/tspmodel.cpp" line="323"/>
     105        <location filename="../src/tspmodel.cpp" line="333"/>
     106        <source>Unable to save task.
     107Error: %1</source>
     108        <translation>Неможливо зберегти завдання.
     109Помилка: %1</translation>
    40110    </message>
    41111</context>
     
    453523    <message>
    454524        <location filename="../src/mainwindow.cpp" line="124"/>
    455         <location filename="../src/mainwindow.cpp" line="279"/>
    456         <location filename="../src/mainwindow.cpp" line="288"/>
     525        <location filename="../src/mainwindow.cpp" line="292"/>
     526        <location filename="../src/mainwindow.cpp" line="301"/>
    457527        <source>Language change</source>
    458528        <translation>Зміна мови</translation>
     
    467537        <source>All Supported Formats</source>
    468538        <translation>Усі підтримувані формати</translation>
    469     </message>
    470     <message>
    471         <source>TSPSG Task Files</source>
    472         <translation type="obsolete">Файли завдання TSPSG</translation>
    473     </message>
    474     <message>
    475         <source>ZKomModRd Task Files</source>
    476         <translation type="obsolete">Файли завдання ZKomModRd</translation>
    477539    </message>
    478540    <message>
     
    483545    </message>
    484546    <message>
    485         <source>TSPSG Task File</source>
    486         <translation type="obsolete">Файл завдання TSPSG</translation>
    487     </message>
    488     <message>
    489547        <location filename="../src/mainwindow.cpp" line="160"/>
    490548        <location filename="../src/mainwindow.cpp" line="161"/>
     
    498556    </message>
    499557    <message>
    500         <location filename="../src/mainwindow.cpp" line="225"/>
     558        <location filename="../src/mainwindow.cpp" line="228"/>
    501559        <source>Data error</source>
    502560        <translation>Помилка даних</translation>
    503561    </message>
    504562    <message>
    505         <location filename="../src/mainwindow.cpp" line="225"/>
     563        <location filename="../src/mainwindow.cpp" line="228"/>
    506564        <source>Error in cell [Row %1; Column %2]: Invalid data format.</source>
    507565        <translation>Помилка у комірці  [Рядок %1; Колонка %2]: Невірний формат даних.</translation>
    508566    </message>
    509567    <message>
    510         <location filename="../src/mainwindow.cpp" line="234"/>
     568        <location filename="../src/mainwindow.cpp" line="237"/>
    511569        <source>Solution error</source>
    512570        <translation>Помилка розв&apos;язку</translation>
    513571    </message>
    514572    <message>
    515         <location filename="../src/mainwindow.cpp" line="234"/>
     573        <location filename="../src/mainwindow.cpp" line="237"/>
    516574        <source>There was an error while solving the task.</source>
    517575        <translation>Під час розв&apos;язання задачі виникла помилка.</translation>
    518576    </message>
    519577    <message>
    520         <location filename="../src/mainwindow.cpp" line="279"/>
     578        <location filename="../src/mainwindow.cpp" line="292"/>
    521579        <source>Language will be autodetected on next application start.</source>
    522580        <translation>Мову буде автоматично визначено при наступному запуску додатку.</translation>
    523581    </message>
    524582    <message>
    525         <location filename="../src/mainwindow.cpp" line="288"/>
     583        <location filename="../src/mainwindow.cpp" line="301"/>
    526584        <source>You have language autodetection turned on.
    527585It needs to be off.
  • src/main.cpp

    rc02b4903bd r9b7064d770  
    2323
    2424#include "mainwindow.h"
     25#if QT_VERSION < 0x040500
     26        #ifdef _MSC_VER
     27                #pragma message("WARNING: You are using Qt version < 4.5. Application will not support some non-critical features.")
     28        #elif (defined(__GNUC__) || defined(__MINGW32__))
     29                #warning "WARNING: You are using Qt version < 4.5. Application will not support some non-critical features."
     30        #endif
     31#endif
    2532
    2633int main(int argc, char *argv[])
  • src/tspmodel.cpp

    rc02b4903bd r9b7064d770  
    3030}
    3131
    32 int CTSPModel::rand(int min, int max)
     32inline int CTSPModel::rand(int min, int max) const
    3333{
    3434        return min + (int)(((float)qrand() / RAND_MAX) * max);
    3535}
    3636
    37 int CTSPModel::rowCount(const QModelIndex &) const
     37inline int CTSPModel::rowCount(const QModelIndex &) const
    3838{
    3939        return nCities;
    4040}
    4141
    42 int CTSPModel::columnCount(const QModelIndex &) const
     42inline int CTSPModel::columnCount(const QModelIndex &) const
    4343{
    4444        return nCities;
     
    116116void CTSPModel::setNumCities(int n)
    117117{
    118 // int randMin = settings->value("MinCost",DEF_RAND_MIN).toInt();
    119 // int randMax = settings->value("MaxCost",DEF_RAND_MAX).toInt();
    120118        if (n == nCities)
    121119                return;
     
    127125                                        table[r][c] = INFINITY;
    128126                                else
    129                                         table[r][c] = 0; // rand(randMin,randMax);
     127                                        table[r][c] = 0;
    130128                }
    131129                for (int r = nCities; r < n; r++) {
     
    134132                                        table[r][c] = INFINITY;
    135133                                else
    136                                         table[r][c] = 0; // rand(randMin,randMax);
     134                                        table[r][c] = 0;
    137135                }
    138136        }
     
    150148}
    151149
     150inline bool CTSPModel::loadError(QDataStream::Status status) const
     151{
     152QString err;
     153        if (status == QDataStream::Ok)
     154                return false;
     155        else if (status == QDataStream::ReadPastEnd)
     156                err = trUtf8("Unexpected end of file.");
     157        else if (status == QDataStream::ReadCorruptData)
     158                err = trUtf8("Corrupt data read. File possibly corrupted.");
     159        else
     160                err = trUtf8("Unknown error.");
     161        QMessageBox(QMessageBox::Critical,trUtf8("Task Load"),trUtf8("Unable to load task:") + "\n" + err,QMessageBox::Ok).exec();
     162        return true;
     163}
     164
    152165void CTSPModel::loadTask(QString fname)
    153166{
    154167QFile f(fname);
    155         f.open(QIODevice::ReadOnly);
     168        if (!f.open(QIODevice::ReadOnly)) {
     169                QMessageBox(QMessageBox::Critical,trUtf8("Task Load"),QString(trUtf8("Unable to open task file.\nError: %1")).arg(f.errorString()),QMessageBox::Ok).exec();
     170                return;
     171        }
    156172QDataStream ds(&f);
    157173        ds.setVersion(QDataStream::Qt_4_4);
    158174quint32 sig;
    159175        ds >> sig;
     176        if (loadError(ds.status()))
     177                return;
    160178        ds.device()->reset();
    161179        if (sig == TSPT)
     
    164182                loadZKT(&ds);
    165183        else
    166                 QMessageBox(QMessageBox::Critical,trUtf8("Task Load"),trUtf8("Unable to load task:\nUnknown file format or file is corrupted."),QMessageBox::Ok).exec();
     184                QMessageBox(QMessageBox::Critical,trUtf8("Task Load"),trUtf8("Unable to load task:") + "\n" + trUtf8("Unknown file format or file is corrupted."),QMessageBox::Ok).exec();
    167185        f.close();
    168186}
     
    172190        // Skipping signature
    173191        ds->skipRawData(sizeof(TSPT));
     192        if (loadError(ds->status()))
     193                return;
    174194        // File version
    175195quint8 version;
    176196        *ds >> version;
     197        if (loadError(ds->status()))
     198                return;
    177199        if (version > TSPT_VERSION) {
    178                 QMessageBox(QMessageBox::Critical,trUtf8("Task Load"),trUtf8("Unable to load task:\nFile version is newer than application supports.\nPlease, try to update application."),QMessageBox::Ok).exec();
     200                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();
    179201                return;
    180202        }
    181203        // Skipping metadata
    182204        ds->skipRawData(TSPT_META_SIZE);
     205        if (loadError(ds->status()))
     206                return;
    183207        // Cities number
    184208quint16 size;
    185209        *ds >> size;
     210        if (loadError(ds->status()))
     211                return;
     212        if (size < 3) {
     213                QMessageBox(QMessageBox::Critical,trUtf8("Task Load"),trUtf8("Unable to load task:") + "\n" + trUtf8("Unexpected data read.\nFile is possibly corrupted."),QMessageBox::Ok).exec();
     214                return;
     215        }
    186216        if (nCities != size)
    187217                emit numCitiesChanged(size);
     
    189219        for (int r = 0; r < size; r++)
    190220                for (int c = 0; c < size; c++)
    191                         if (r != c)
     221                        if (r != c) {
    192222                                *ds >> table[r][c];
     223                                if (loadError(ds->status())) {
     224                                        clear();
     225                                        return;
     226                                }
     227                        }
    193228        emit dataChanged(index(0,0),index(nCities - 1,nCities - 1));
    194229}
     
    198233        // Skipping signature
    199234        ds->skipRawData(sizeof(ZKT));
     235        if (loadError(ds->status()))
     236                return;
    200237        // File version
    201238quint16 version;
    202239        ds->readRawData(reinterpret_cast<char *>(&version),2);
     240        if (loadError(ds->status()))
     241                return;
    203242        if (version > ZKT_VERSION) {
    204                 QMessageBox(QMessageBox::Critical,trUtf8("Task Load"),trUtf8("Unable to load task:\nFile version is newer than application supports.\nPlease, try to update application."),QMessageBox::Ok).exec();
     243                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();
    205244                return;
    206245        }
     
    208247quint8 size;
    209248        ds->readRawData(reinterpret_cast<char *>(&size),1);
     249        if (loadError(ds->status()))
     250                return;
     251        if ((size < 3) || (size > 5)) {
     252                QMessageBox(QMessageBox::Critical,trUtf8("Task Load"),trUtf8("Unable to load task:") + "\n" + trUtf8("Unexpected data read.\nFile is possibly corrupted."),QMessageBox::Ok).exec();
     253                return;
     254        }
    210255        if (nCities != size)
    211256                emit numCitiesChanged(size);
     
    216261                        if (r != c) {
    217262                                ds->readRawData(reinterpret_cast<char *>(&val),8);
     263                                if (loadError(ds->status())) {
     264                                        clear();
     265                                        return;
     266                                }
    218267                                table[r][c] = val;
    219                         } else
     268                        } else {
    220269                                ds->skipRawData(8);
     270                                if (loadError(ds->status())) {
     271                                        clear();
     272                                        return;
     273                                }
     274                        }
    221275        emit dataChanged(index(0,0),index(nCities - 1,nCities - 1));
    222276}
     
    225279{
    226280QFile f(fname);
    227         f.open(QIODevice::WriteOnly);
     281        if (!f.open(QIODevice::WriteOnly)) {
     282                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;
     284        }
    228285QDataStream ds(&f);
    229286        ds.setVersion(QDataStream::Qt_4_4);
     287        if (f.error() != QFile::NoError) {
     288                QMessageBox(QMessageBox::Critical,trUtf8("Task Save"),trUtf8("Unable to save task.\nError: %1").arg(f.errorString()),QMessageBox::Ok).exec();
     289                f.close();
     290                return;
     291        }
    230292        // File signature
    231293        ds << TSPT;
     294        if (f.error() != QFile::NoError) {
     295                QMessageBox(QMessageBox::Critical,trUtf8("Task Save"),trUtf8("Unable to save task.\nError: %1").arg(f.errorString()),QMessageBox::Ok).exec();
     296                f.close();
     297                return;
     298        }
    232299        // File version
    233300        ds << TSPT_VERSION;
     301        if (f.error() != QFile::NoError) {
     302                QMessageBox(QMessageBox::Critical,trUtf8("Task Save"),trUtf8("Unable to save task.\nError: %1").arg(f.errorString()),QMessageBox::Ok).exec();
     303                f.close();
     304                return;
     305        }
    234306        // File metadata version
    235307        ds << TSPT_META_VERSION;
     308        if (f.error() != QFile::NoError) {
     309                QMessageBox(QMessageBox::Critical,trUtf8("Task Save"),trUtf8("Unable to save task.\nError: %1").arg(f.errorString()),QMessageBox::Ok).exec();
     310                f.close();
     311                return;
     312        }
    236313        // Metadata
    237314        ds << OSID;
     315        if (f.error() != QFile::NoError) {
     316                QMessageBox(QMessageBox::Critical,trUtf8("Task Save"),trUtf8("Unable to save task.\nError: %1").arg(f.errorString()),QMessageBox::Ok).exec();
     317                f.close();
     318                return;
     319        }
    238320        // Number of cities
    239321        ds << nCities;
     322        if (f.error() != QFile::NoError) {
     323                QMessageBox(QMessageBox::Critical,trUtf8("Task Save"),trUtf8("Unable to save task.\nError: %1").arg(f.errorString()),QMessageBox::Ok).exec();
     324                f.close();
     325                return;
     326        }
    240327        // Costs
    241328        for (int r = 0; r < nCities; r++)
    242329                for (int c = 0; c < nCities; c++)
    243                         if (r != c)
     330                        if (r != c) {
    244331                                ds << table[r][c];
     332                                if (f.error() != QFile::NoError) {
     333                                        QMessageBox(QMessageBox::Critical,trUtf8("Task Save"),trUtf8("Unable to save task.\nError: %1").arg(f.errorString()),QMessageBox::Ok).exec();
     334                                        f.close();
     335                                        return;
     336                                }
     337                        }
    245338        f.close();
    246339}
  • src/tspmodel.h

    rc02b4903bd r9b7064d770  
    5050        double table[MAX_CITIES][MAX_CITIES];
    5151        quint16 nCities;
    52         int rand(int, int);
     52        int rand(int, int) const;
     53        bool loadError(QDataStream::Status) const;
    5354        void loadZKT(QDataStream *);
    5455        void loadTSPT(QDataStream *);
Note: See TracChangeset for help on using the changeset viewer.