QTfrontend/ammoSchemeModel.cpp
changeset 1902 aeadb10c2d77
parent 1899 5763f46d7486
child 1940 bbdca883b5f9
equal deleted inserted replaced
1901:6bfa989c70f3 1902:aeadb10c2d77
    20 #include <QModelIndex>
    20 #include <QModelIndex>
    21 
    21 
    22 #include "ammoSchemeModel.h"
    22 #include "ammoSchemeModel.h"
    23 #include "hwconsts.h"
    23 #include "hwconsts.h"
    24 
    24 
    25 QList<QVariant>	defaultScheme = QList<QVariant>()
    25 QList<QVariant> defaultScheme = QList<QVariant>()
    26 		<< QVariant("Default") // name           0
    26 		<< QVariant("Default")     // name           0
    27 		<< QVariant(false)         // fortsmode      1
    27 		<< QVariant(false)         // fortsmode      1
    28 		<< QVariant(false)         // team divide    2
    28 		<< QVariant(false)         // team divide    2
    29 		<< QVariant(false)         // solid land     3
    29 		<< QVariant(false)         // solid land     3
    30 		<< QVariant(false)         // border         4
    30 		<< QVariant(false)         // border         4
    31 		<< QVariant(false)         // low gravity    5
    31 		<< QVariant(false)         // low gravity    5
    39 		<< QVariant(5)             // case prob      13
    39 		<< QVariant(5)             // case prob      13
    40 		;
    40 		;
    41 
    41 
    42 AmmoSchemeModel::AmmoSchemeModel(QObject* parent, const QString & fileName) :
    42 AmmoSchemeModel::AmmoSchemeModel(QObject* parent, const QString & fileName) :
    43 	QAbstractTableModel(parent),
    43 	QAbstractTableModel(parent),
    44 	fileConfig(fileName, QSettings::IniFormat)
    44 	fileConfig(fileName, QSettings::IniFormat),
       
    45 	numberOfDefaultSchemes(2)
    45 {
    46 {
    46 	QStringList predefSchemesNames;
    47 	QStringList predefSchemesNames;
    47 	predefSchemesNames
    48 	predefSchemesNames
    48 		<< "Default"
    49 		<< "Default"
    49 		<< "Pro mode";
    50 		<< "Pro mode";
    50 	
    51 	
    51 QStringList	spNames = QStringList()
    52 	spNames = QStringList()
    52 		<< "name"             //  0
    53 		<< "name"             //  0
    53 		<< "fortsmode"        //  1
    54 		<< "fortsmode"        //  1
    54 		<< "divteams"         //  2
    55 		<< "divteams"         //  2
    55 		<< "solidland"        //  3
    56 		<< "solidland"        //  3
    56 		<< "border"           //  4
    57 		<< "border"           //  4
   133 		| Qt::ItemIsEditable;
   134 		| Qt::ItemIsEditable;
   134 }
   135 }
   135 
   136 
   136 bool AmmoSchemeModel::setData(const QModelIndex & index, const QVariant & value, int role)
   137 bool AmmoSchemeModel::setData(const QModelIndex & index, const QVariant & value, int role)
   137 {
   138 {
   138 	if (!index.isValid() || index.row() < 0
   139 	if (!index.isValid() || index.row() < numberOfDefaultSchemes
   139 		|| index.row() >= schemes.size()
   140 		|| index.row() >= schemes.size()
   140 		|| index.column() >= defaultScheme.size()
   141 		|| index.column() >= defaultScheme.size()
   141 		|| role != Qt::EditRole)
   142 		|| role != Qt::EditRole)
   142 		return false;
   143 		return false;
   143 
   144 
   155 	newScheme[0] = QVariant(tr("new"));
   156 	newScheme[0] = QVariant(tr("new"));
   156 	
   157 	
   157 	schemes.insert(row, newScheme);
   158 	schemes.insert(row, newScheme);
   158 
   159 
   159 	endInsertRows();
   160 	endInsertRows();
       
   161 	
       
   162 	return true;
   160 }
   163 }
   161 
   164 
   162 bool AmmoSchemeModel::removeRows(int row, int count, const QModelIndex & parent)
   165 bool AmmoSchemeModel::removeRows(int row, int count, const QModelIndex & parent)
   163 {
   166 {
       
   167 	if(count != 1
       
   168 		|| row < numberOfDefaultSchemes
       
   169 		|| row >= schemes.size())
       
   170 		return false;
       
   171 		
   164 	beginRemoveRows(parent, row, row);
   172 	beginRemoveRows(parent, row, row);
   165 
   173 
   166 	fileConfig.remove(schemes[row][0].toString());
       
   167 	schemes.removeAt(row);
   174 	schemes.removeAt(row);
   168 
   175 
   169 	endRemoveRows();
   176 	endRemoveRows();
       
   177 
       
   178 	return true;
   170 }
   179 }
   171 
   180 
   172 QVariant AmmoSchemeModel::data(const QModelIndex &index, int role) const
   181 QVariant AmmoSchemeModel::data(const QModelIndex &index, int role) const
   173 {
   182 {
   174 	if (!index.isValid() || index.row() < 0
   183 	if (!index.isValid() || index.row() < 0
   181 	return schemes[index.row()][index.column()];
   190 	return schemes[index.row()][index.column()];
   182 }
   191 }
   183 
   192 
   184 void AmmoSchemeModel::Save()
   193 void AmmoSchemeModel::Save()
   185 {
   194 {
   186 	fileConfig.beginWriteArray("schemes");
   195 	fileConfig.beginWriteArray("schemes", schemes.size());
       
   196 	
   187 	for (int i = 0; i < schemes.size(); ++i) {
   197 	for (int i = 0; i < schemes.size(); ++i) {
   188 		fileConfig.setArrayIndex(i);
   198 		fileConfig.setArrayIndex(i);
   189 
   199 
   190 		QList<QVariant> scheme = schemes[i];
   200 		QList<QVariant> scheme = schemes[i];
   191 
   201 		
   192 		for (int k = 0; k < spNames.size(); ++k)
   202 		for (int k = 0; k < scheme.size(); ++k)
   193 			fileConfig.setValue(spNames[k], scheme[k]);
   203 			fileConfig.setValue(spNames[k], scheme[k]);
   194 	}
   204 	}
   195 	fileConfig.endArray();
   205 	fileConfig.endArray();
   196 }
   206 }
   197 
   207