From: APTX Date: Tue, 23 Apr 2013 23:49:05 +0000 (+0200) Subject: Enable voting for episodes in localmylist-management. X-Git-Url: https://gitweb.aptx.org/?a=commitdiff_plain;h=ce8296dc5ced65b0ad7914ce5a3d847c115867e9;p=localmylist.git Enable voting for episodes in localmylist-management. --- diff --git a/localmylist/mylistnode.cpp b/localmylist/mylistnode.cpp index 00ebd45..27993da 100644 --- a/localmylist/mylistnode.cpp +++ b/localmylist/mylistnode.cpp @@ -594,6 +594,11 @@ MyListEpisodeNode::~MyListEpisodeNode() 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) @@ -618,6 +623,7 @@ QVariant MyListEpisodeNode::data(int column, int role) const return QObject::tr("No"); return QObject::tr("Yes, on %1").arg(episodeData.watchedDate.toString()); } + break; case Qt::ToolTipRole: switch (column) { @@ -630,12 +636,47 @@ QVariant MyListEpisodeNode::data(int column, int role) const 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(); diff --git a/localmylist/mylistnode.h b/localmylist/mylistnode.h index 4cca60f..c51f203 100644 --- a/localmylist/mylistnode.h +++ b/localmylist/mylistnode.h @@ -126,7 +126,10 @@ public: 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;