+bool StationListModel::setData(const QModelIndex &index, QVariant &value, int role)
+{
+ if (!index.isValid())
+ return false;
+ if (role == FavoriteIndicatorRole) {
+ bool favorite = value.toBool();
+ if (data(index, FavoriteIndicatorRole) != favorite) {
+ QString name = m_stations[index.row()].name();
+ if (favorite) {
+ qDebug() << "adding" << name << "to favorites";
+ m_favorites.insert(name);
+ } else {
+ qDebug() << "removing" << name << "from favorites";
+ m_favorites.remove(name);
+ }
+ Settings *settings = Settings::instance();
+ settings->setFavoriteStations(QStringList::fromSet(m_favorites));
+ QVector<int> changedRoles;
+ changedRoles << FavoriteIndicatorRole;
+ //emit dataChanged(index, index, changedRoles);
+ emit dataChanged(index, index);
+ }
+ return true;
+ }
+ return false;
+}
+
+Qt::ItemFlags StationListModel::flags(const QModelIndex &index) const
+{
+ if (!index.isValid())
+ return 0;
+ return Qt::ItemIsEditable | Qt::ItemIsSelectable | Qt::ItemIsEnabled;