/*
* Copyright 2013, 2015 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:
* Michael Zanetti
*/
#include "quicklistmodel.h"
QuickListModel::QuickListModel(QObject *parent) :
QuickListModelInterface(parent)
{
}
QuickListModel::~QuickListModel()
{
}
void QuickListModel::appendAction(const QuickListEntry &entry)
{
beginInsertRows(QModelIndex(), m_list.count(), m_list.count());
m_list.append(entry);
endInsertRows();
}
void QuickListModel::insertAction(const QuickListEntry &entry, int index)
{
beginInsertRows(QModelIndex(), index, index);
m_list.insert(index, entry);
endInsertRows();
}
void QuickListModel::updateAction(const QuickListEntry &entry)
{
for (int i = 0; i < m_list.count(); ++i) {
if (m_list.at(i).actionId() == entry.actionId()) {
m_list.replace(i, entry);
Q_EMIT dataChanged(index(i), index(i));
return;
}
}
}
void QuickListModel::removeAction(const QuickListEntry &entry)
{
const int start = m_list.indexOf(entry);
if (start > -1) {
beginRemoveRows(QModelIndex(), start, start);
m_list.removeOne(entry);
Q_EMIT dataChanged(index(start), index(start));
endRemoveRows();
}
}
QuickListEntry QuickListModel::get(int index) const
{
return m_list.at(index);
}
int QuickListModel::rowCount(const QModelIndex &index) const
{
Q_UNUSED(index)
return m_list.count();
}
QVariant QuickListModel::data(const QModelIndex &index, int role) const
{
switch (role) {
case RoleLabel:
return m_list.at(index.row()).text();
case RoleIcon:
return m_list.at(index.row()).icon();
case RoleClickable:
return m_list.at(index.row()).clickable();
case RoleHasSeparator:
return m_list.at(index.row()).hasSeparator();
case RoleIsPrivate:
return m_list.at(index.row()).isPrivate();
}
return QVariant();
}