/*
* Copyright (C) 2014 Canonical, Ltd.
*
* This program 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; version 3.
*
* This program 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 this program. If not, see .
*/
#include "fake_settingsmodel.h"
SettingsModel::SettingsModel(QObject* parent) :
SettingsModelInterface(parent) {
{
QVariantMap parameters;
m_data << QSharedPointer(new Data("boolean-setting", "Boolean Setting", "boolean", parameters, true));
}
{
QVariantMap parameters;
parameters["values"] = QVariantList() << "First" << "Second" << "Third";
m_data << QSharedPointer(new Data("list-setting", "List Setting", "list", parameters, 1));
}
{
QVariantMap parameters;
m_data << QSharedPointer(new Data("number-setting", "Number Setting", "number", parameters, 1.23));
}
{
QVariantMap parameters;
m_data << QSharedPointer(new Data("string-setting", "String Setting", "string", parameters, "flibble"));
}
}
QVariant SettingsModel::data(const QModelIndex& index, int role) const {
int row = index.row();
QVariant result;
if (row < m_data.size()) {
auto data = m_data[row];
switch (role) {
case Roles::RoleSettingId:
result = data->id;
break;
case Roles::RoleDisplayName:
result = data->displayName;
break;
case Roles::RoleType:
result = data->type;
break;
case Roles::RoleProperties:
result = data->properties;
break;
case Roles::RoleValue: {
result = data->value;
break;
}
default:
break;
}
}
return result;
}
bool SettingsModel::setData(const QModelIndex &index, const QVariant &value, int role) {
int row = index.row();
if (row < m_data.size()) {
switch (role) {
case SettingsModelInterface::RoleValue: {
auto data = m_data[row];
data->value = value;
return true;
}
default:
break;
}
}
return false;
}
int SettingsModel::rowCount(const QModelIndex&) const {
return count();
}
int SettingsModel::count() const {
return m_data.size();
}