/*
* Copyright 2014 Canonical Ltd.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see .
*
* Authors:
* Nick Dedekind
*/
#include "fakeindicatorsmodel.h"
#include "indicators.h"
FakeIndicatorsModel::FakeIndicatorsModel(QObject *parent)
: QAbstractListModel(parent),
m_profile("phone")
{
QObject::connect(this, SIGNAL(rowsInserted(const QModelIndex &, int, int)), this, SIGNAL(countChanged()));
QObject::connect(this, SIGNAL(rowsRemoved(const QModelIndex &, int, int)), this, SIGNAL(countChanged()));
QObject::connect(this, SIGNAL(modelReset()), this, SIGNAL(countChanged()));
}
/*! \internal */
FakeIndicatorsModel::~FakeIndicatorsModel()
{
}
int FakeIndicatorsModel::count() const
{
return rowCount();
}
QString FakeIndicatorsModel::profile() const
{
return m_profile;
}
void FakeIndicatorsModel::setProfile(const QString& profile)
{
m_profile = profile;
Q_EMIT profileChanged();
}
void FakeIndicatorsModel::load(const QString&)
{
}
void FakeIndicatorsModel::unload()
{
beginResetModel();
m_modelData.clear();
Q_EMIT modelDataChanged();
endResetModel();
}
void FakeIndicatorsModel::append(const QVariantMap& data)
{
QList allData = m_modelData.toList();
beginInsertRows(QModelIndex(), allData.count(), allData.count());
allData.append(data);
m_modelData = allData;
Q_EMIT modelDataChanged();
endInsertRows();
}
void FakeIndicatorsModel::insert(int row, const QVariantMap& data)
{
QList allData = m_modelData.toList();
row = qMax(0, qMin(row, allData.count()));
beginInsertRows(QModelIndex(), row, row);
allData.insert(row, data);
m_modelData = allData;
Q_EMIT modelDataChanged();
endInsertRows();
}
void FakeIndicatorsModel::remove(int row)
{
QList allData = m_modelData.toList();
row = qMax(0, qMin(row, allData.count()));
beginRemoveRows(QModelIndex(), row, row);
allData.removeAt(row);
m_modelData = allData;
Q_EMIT modelDataChanged();
endRemoveRows();
}
void FakeIndicatorsModel::setModelData(const QVariant& modelData)
{
beginResetModel();
m_modelData = modelData;
Q_EMIT modelDataChanged();
endResetModel();
}
QHash FakeIndicatorsModel::roleNames() const
{
static QHash roles;
if (roles.isEmpty())
{
roles[IndicatorsModelRole::Identifier] = "identifier";
roles[IndicatorsModelRole::Position] = "position";
roles[IndicatorsModelRole::IndicatorProperties] = "indicatorProperties";
}
return roles;
}
int FakeIndicatorsModel::columnCount(const QModelIndex &) const
{
return 1;
}
QVariant FakeIndicatorsModel::data(int row, int role) const
{
return data(index(row, 0), role);
}
QVariant FakeIndicatorsModel::data(const QModelIndex &index, int role) const
{
QList dataList = m_modelData.toList();
if (!index.isValid() || index.row() >= dataList.size())
return QVariant();
return dataList[index.row()].toMap()[roleNames()[role]];
}
QModelIndex FakeIndicatorsModel::parent(const QModelIndex&) const
{
return QModelIndex();
}
int FakeIndicatorsModel::rowCount(const QModelIndex&) const
{
return m_modelData.toList().count();
}