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 |