QTfrontend/model/gameSchemeModel.cpp
changeset 13198 ceae8e01af98
parent 13197 0bc5f618ca7c
child 13272 5984e8c6cbeb
equal deleted inserted replaced
13197:0bc5f618ca7c 13198:ceae8e01af98
    17  */
    17  */
    18 
    18 
    19 #include <QDebug>
    19 #include <QDebug>
    20 #include <QModelIndex>
    20 #include <QModelIndex>
    21 #include <QFile>
    21 #include <QFile>
       
    22 #include <QSettings>
    22 #include <QTextStream>
    23 #include <QTextStream>
    23 #include <QHash>
    24 #include <QHash>
    24 
    25 
    25 #include "gameSchemeModel.h"
    26 #include "gameSchemeModel.h"
    26 #include "hwconsts.h"
    27 #include "hwconsts.h"
    71                                 << QVariant(0)             // world edge     42
    72                                 << QVariant(0)             // world edge     42
    72                                 << QVariant()              // scriptparam    43
    73                                 << QVariant()              // scriptparam    43
    73                                 ;
    74                                 ;
    74 
    75 
    75 GameSchemeModel::GameSchemeModel(QObject* parent, const QString & directory) :
    76 GameSchemeModel::GameSchemeModel(QObject* parent, const QString & directory) :
    76     QAbstractTableModel(parent),
    77     QAbstractTableModel(parent)
    77     fileConfig(cfgdir->absolutePath() + "/schemes.ini", QSettings::IniFormat)
       
    78 {
    78 {
    79     predefSchemesNames = QStringList()
    79     predefSchemesNames = QStringList()
    80                          << "Default"
    80                          << "Default"
    81                          << "Pro Mode"
    81                          << "Pro Mode"
    82                          << "Shoppa"
    82                          << "Shoppa"
   741     if (!QDir(directory).exists()) {
   741     if (!QDir(directory).exists()) {
   742         QDir().mkdir(directory);
   742         QDir().mkdir(directory);
   743 
   743 
   744         qDebug("No /Schemes/Game directory found. Trying to import game schemes from schemes.ini.");
   744         qDebug("No /Schemes/Game directory found. Trying to import game schemes from schemes.ini.");
   745 
   745 
   746         int size = fileConfig.beginReadArray("schemes");
   746         QSettings legacyFileConfig(cfgdir->absolutePath() + "/schemes.ini", QSettings::IniFormat);
       
   747         int size = legacyFileConfig.beginReadArray("schemes");
   747         int imported = 0;
   748         int imported = 0;
   748         for (int i = 0; i < size; ++i)
   749         for (int i = 0; i < size; ++i)
   749         {
   750         {
   750             fileConfig.setArrayIndex(i);
   751             legacyFileConfig.setArrayIndex(i);
   751 
   752 
   752             QString schemeName = fileConfig.value(spNames[0]).toString();
   753             QString schemeName = legacyFileConfig.value(spNames[0]).toString();
   753             if (!schemeName.isNull() && !predefSchemesNames.contains(schemeName))
   754             if (!schemeName.isNull() && !predefSchemesNames.contains(schemeName))
   754             {
   755             {
   755                 QList<QVariant> scheme;
   756                 QList<QVariant> scheme;
   756                 QFile file(directory + "/" + schemeName + ".hwg");
   757                 QFile file(directory + "/" + schemeName + ".hwg");
   757 
   758 
   758                 // Add keys to scheme info and create file
   759                 // Add keys to scheme info and create file
   759                 if (file.open(QIODevice::WriteOnly)) {
   760                 if (file.open(QIODevice::WriteOnly)) {
   760                     QTextStream stream(&file);
   761                     QTextStream stream(&file);
   761 
   762 
   762                     for (int k = 0; k < spNames.size(); ++k) {
   763                     for (int k = 0; k < spNames.size(); ++k) {
   763                         scheme << fileConfig.value(spNames[k], defaultScheme[k]);
   764                         scheme << legacyFileConfig.value(spNames[k], defaultScheme[k]);
   764 
   765 
   765                         // File handling
   766                         // File handling
   766                         // We skip the name key (k==0), it is not stored redundantly in file.
   767                         // We skip the name key (k==0), it is not stored redundantly in file.
   767                         // The file name is used for that already.
   768                         // The file name is used for that already.
   768                         if(k != 0) {
   769                         if(k != 0) {
   769                             // The file is just a list of key=value pairs
   770                             // The file is just a list of key=value pairs
   770                             stream << spNames[k] << "=" << fileConfig.value(spNames[k], defaultScheme[k]).toString();
   771                             stream << spNames[k] << "=" << legacyFileConfig.value(spNames[k], defaultScheme[k]).toString();
   771                             stream << endl;
   772                             stream << endl;
   772                         }
   773                         }
   773                     }
   774                     }
   774                     file.close();
   775                     file.close();
   775                 }
   776                 }
   777 
   778 
   778                 schemes.append(scheme);
   779                 schemes.append(scheme);
   779             }
   780             }
   780         }
   781         }
   781         qDebug("%d game scheme(s) imported.", imported);
   782         qDebug("%d game scheme(s) imported.", imported);
   782         fileConfig.endArray();
   783         legacyFileConfig.endArray();
   783     } else {
   784     } else {
   784         QStringList scheme_dir = QDir(directory).entryList(QDir::Files);
   785         QStringList scheme_dir = QDir(directory).entryList(QDir::Files);
   785 
   786 
   786         for(int i = 0; i < scheme_dir.size(); i++)
   787         for(int i = 0; i < scheme_dir.size(); i++)
   787         {
   788         {
   960     return schemes[index.row()][index.column()];
   961     return schemes[index.row()][index.column()];
   961 }
   962 }
   962 
   963 
   963 void GameSchemeModel::Save()
   964 void GameSchemeModel::Save()
   964 {
   965 {
   965     fileConfig.beginWriteArray("schemes");
       
   966     for (int i = 0; i < schemes.size() - numberOfDefaultSchemes; ++i)
   966     for (int i = 0; i < schemes.size() - numberOfDefaultSchemes; ++i)
   967     {
   967     {
   968         QList<QVariant> scheme = schemes[i + numberOfDefaultSchemes];
   968         QList<QVariant> scheme = schemes[i + numberOfDefaultSchemes];
   969         int j = spNames.indexOf("name");
   969         int j = spNames.indexOf("name");
   970 
   970 
   982                 }
   982                 }
   983             }
   983             }
   984             file.close();
   984             file.close();
   985         }
   985         }
   986     }
   986     }
   987     fileConfig.endArray();
       
   988 }
   987 }
   989 
   988 
   990 
   989 
   991 NetGameSchemeModel::NetGameSchemeModel(QObject * parent) :
   990 NetGameSchemeModel::NetGameSchemeModel(QObject * parent) :
   992     QAbstractTableModel(parent)
   991     QAbstractTableModel(parent)