]> Some of my projects - localmylist.git/commitdiff
Add Watched column to MyListModel
authorAPTX <marek321@gmail.com>
Mon, 11 Jun 2012 12:42:17 +0000 (14:42 +0200)
committerAPTX <marek321@gmail.com>
Mon, 11 Jun 2012 12:42:17 +0000 (14:42 +0200)
localmylist/mylistnode.cpp

index 9f6b6bff2f587f3cffa09d6d5e55de700a2d5ae0..9388c027ecb9ac0635ffd59d2cdea3505316902f 100644 (file)
@@ -19,7 +19,7 @@ MyListNode::MyListNode(NodeType type, int id, const QList<QVariant> &data, MyLis
        if (m_type != Root)
                return;
 
-       itemData << "Title" << "Episode / Version" << "Rating / Quality" << "Vote";
+       itemData << "Title" << "Episode / Version" << "Rating / Quality" << "Vote" << "Watched";
 
 }
 
@@ -98,7 +98,7 @@ int MyListNode::fetchMore()
        qDebug() << "fetching some more for" << m_id;
        QSqlQuery q(LocalMyList::instance()->database()->connection());
 
-       if (!q.exec("SELECT aid, title_romaji AS title, (SELECT COUNT(e.eid) FROM episode e WHERE e.aid = a.aid), rating, my_vote FROM anime a ORDER BY title ASC "
+       if (!q.exec("SELECT aid, title_romaji AS title, (SELECT COUNT(e.eid) FROM episode e WHERE e.aid = a.aid), rating, my_vote, (SELECT COUNT(DISTINCT f.eid) FROM episode e  JOIN file f ON (f.eid = e.eid)  WHERE e.aid = a.aid  AND f.my_watched IS NOT NULL) FROM anime a ORDER BY title ASC "
                                "LIMIT " + QString::number(LIMIT) + " "
                                "OFFSET " + QString::number(childCount())))
                return 0;
@@ -110,7 +110,8 @@ int MyListNode::fetchMore()
 
                data << q.value(1) << q.value(2)
                         << (q.value(3).toDouble() < 1 ? "n/a" : QString::number(q.value(3).toDouble(), 'f', 2))
-                        << (q.value(4).toDouble() < 1 ? "n/a" : QString::number(q.value(4).toDouble(), 'f', 2));
+                        << (q.value(4).toDouble() < 1 ? "n/a" : QString::number(q.value(4).toDouble(), 'f', 2))
+                        << QObject::tr("%1 of %2").arg(q.value(5).toInt()).arg(q.value(2).toInt());
                childItems << new MyListAnimeNode(id, data, this);
        }
        return q.size();
@@ -156,7 +157,7 @@ int MyListAnimeNode::fetchMore()
        qDebug() << "fetching some more for aid" << m_id;
        QSqlQuery q(LocalMyList::instance()->database()->connection());
 
-       if (!q.exec("SELECT eid, title_english, epno, rating, my_vote FROM episode WHERE aid = " + QString::number(m_id)
+       if (!q.exec("SELECT eid, title_english, epno, rating, my_vote, (SELECT MIN(my_watched) FROM file WHERE eid = episode.eid AND my_watched IS NOT NULL) AS my_watched FROM episode WHERE aid = " + QString::number(m_id)
                        + " ORDER BY epno ASC "
                          "LIMIT " + QString::number(LIMIT) + " "
                          "OFFSET " + QString::number(childCount())))
@@ -168,7 +169,8 @@ int MyListAnimeNode::fetchMore()
                QVariantList data;
                data << q.value(1) << q.value(2)
                         << (q.value(3).toDouble() < 1 ? "n/a" : QString::number(q.value(3).toDouble(), 'f', 2))
-                        << (q.value(4).toDouble() < 1 ? "n/a" : QString::number(q.value(4).toDouble(), 'f', 2));
+                        << (q.value(4).toDouble() < 1 ? "n/a" : QString::number(q.value(4).toDouble(), 'f', 2))
+                        << (q.value(5).toDateTime().isValid() ? QObject::tr("Yes, on %1").arg(q.value(5).toDateTime().toString()) : QObject::tr("No"));
                childItems << new MyListEpisodeNode(id, data, this);
        }
 
@@ -192,14 +194,15 @@ int MyListEpisodeNode::fetchMore()
        qDebug() << "fetching some more for eid" << m_id;
        QSqlQuery q(LocalMyList::instance()->database()->connection());
 
-       if (!q.exec("SELECT fid, group_name, version, quality FROM file WHERE eid = " + QString::number(m_id)))
+       if (!q.exec("SELECT fid, group_name, version, quality, my_watched FROM file WHERE eid = " + QString::number(m_id)))
                return 0;
 
        while (q.next())
        {
                int id = q.value(0).toInt();
                QVariantList data;
-               data << q.value(1) << "v" + q.value(2).toString() << q.value(3);
+               data << q.value(1) << "v" + q.value(2).toString() << q.value(3) << ""
+                        << (q.value(4).toDateTime().isValid() ? QObject::tr("Yes, on %1").arg(q.value(4).toDateTime().toString()) : QObject::tr("No"));
                childItems << new MyListFileNode(id, data, this);
        }