/* ColorCode, a free MasterMind clone with built in solver
* Copyright (C) 2009 Dirk Laebisch
* http://www.laebisch.com/
*
* ColorCode is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* ColorCode is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with ColorCode. If not, see .
*/
#include "highscoresmodel.h"
#include "gametableview.h"
HighScoresModel* GetHighScoresModel()
{
static HighScoresModel* m = new HighScoresModel();
return m;
}
HighScoresModel::HighScoresModel(QObject* parent) : GamesListModel(parent)
{
mId = MODEL_ID_HIGH;
mEditIndex = QModelIndex();
mMaxSize = 20;
}
bool HighScoresModel::IsValidHighScore(const int score) const
{
if (mGamesList.size() < mMaxSize || mGamesList.last().mScore < score)
{
return true;
}
return false;
}
void HighScoresModel::InsertRow(CCGame g)
{
if (mEditIndex.isValid())
{
emit CloseEditorSignal(mEditIndex);
}
mView->clearSelection();
beginInsertRows(QModelIndex(), rowCount(), rowCount());
mGamesList.push_back(g);
endInsertRows();
QModelIndex mix = index(rowCount() - 1, GetColIx(COL_DELETE), QModelIndex());
mView->openPersistentEditor(mix);
DoSort(mGamesList);
LimitGamesListSize();
int ix = mGamesList.indexOf(g);
emit layoutChanged();
if (ix > -1)
{
mEditIndex = createIndex(ix, GetColIx(COL_USERNAME));
EditField();
}
}
int HighScoresModel::GetColIx(const int ix) const
{
int ret = -1;
if (ix == COL_RANKING)
{
ret = 0;
}
else if (ix == COL_SCORE)
{
ret = 1;
}
else if (ix == COL_USERNAME)
{
ret = 2;
}
else if (ix == COL_DELETE)
{
ret = 3;
}
return ret;
}
int HighScoresModel::GetMaxColCnt() const
{
return 4;
}
void HighScoresModel::DoSort(QList &list)
{
qSort(list.begin(), list.end(), GamesListModel::SortListScore);
}