model->episodeSet.erase(model->episodeSet.s_iterator_to(episodeData));
}
+Qt::ItemFlags MyListEpisodeNode::flags(const QModelIndex &index) const
+{
+ return MyListNode::flags(index) | (index.column() == 3 ? Qt::ItemIsEditable : 0);
+}
+
QVariant MyListEpisodeNode::data(int column, int role) const
{
switch (role)
return QObject::tr("No");
return QObject::tr("Yes, on %1").arg(episodeData.watchedDate.toString());
}
+ break;
case Qt::ToolTipRole:
switch (column)
{
if (!episodeData.data.titleKanji.isEmpty())
return episodeData.data.titleKanji;
}
+ break;
+ case Qt::EditRole:
+ switch (column)
+ {
+ case 3:
+ return episodeData.data.myVote;
+ }
+ break;
}
-
return QVariant();
}
+bool MyListEpisodeNode::setData(int column, const QVariant &data, int role)
+{
+ if (role != Qt::EditRole)
+ return false;
+
+ switch (column)
+ {
+ case 3:
+ {
+ double vote = data.toDouble();
+
+ if (qFuzzyCompare(episodeData.data.myVote, vote))
+ return false;
+
+ if (vote < 1.0 || vote > 10.0)
+ vote = 0;
+
+ episodeData.data.myVote = vote;
+
+ MyList::instance()->voteEpisode(episodeData.data.aid, episodeData.data.epno,
+ episodeData.data.type, vote);
+
+ return true;
+ }
+ }
+ return false;
+}
+
void MyListEpisodeNode::fetchMore()
{
qDebug() << "fetching some more for eid" << id();
MyListEpisodeNode(MyListModel *model, const EpisodeData &data, int totalRowCount, MyListNode *parent);
~MyListEpisodeNode();
+ Qt::ItemFlags flags(const QModelIndex &index) const;
+
QVariant data(int column, int role) const;
+ bool setData(int column, const QVariant &data, int role);
void fetchMore();
void fetchComplete();
int id() const;