]> Some of my projects - localmylist.git/commitdiff
Add tooltips with alternate names to the model
authorAPTX <marek321@gmail.com>
Tue, 2 Apr 2013 00:20:34 +0000 (02:20 +0200)
committerAPTX <marek321@gmail.com>
Tue, 2 Apr 2013 00:20:34 +0000 (02:20 +0200)
localmylist/mylistmodel.cpp
localmylist/mylistnode.cpp
localmylist/mylistnode.h

index d3aa66add272b26187f117c30d59ffe5ea898aac..f727c9b221c4c60257ec02de8a138004e648d408 100644 (file)
@@ -168,8 +168,8 @@ QModelIndex MyListModel::fileLocationIndex(int id) const
 
 QVariant MyListModel::headerData(int section, Qt::Orientation orientation, int role) const
 {
-       if (orientation == Qt::Horizontal && role == Qt::DisplayRole)
-               return rootItem->data(section);
+       if (orientation == Qt::Horizontal)
+               return rootItem->data(section, role);
 
        return QVariant();
 }
@@ -187,12 +187,9 @@ QVariant MyListModel::data(const QModelIndex &index, int role) const
        if (!index.isValid())
                return QVariant();
 
-       if (role != Qt::DisplayRole)
-               return QVariant();
-
        MyListNode *item = static_cast<MyListNode *>(index.internalPointer());
 
-       return item->data(index.column());
+       return item->data(index.column(), role);
 }
 
 QModelIndex MyListModel::index(int row, int column, const QModelIndex &parent) const
index 7b08182caa12415d101e7cec87edbfc4fee3a48b..45f5ef9fa1564cdcc50b9292a994c8c99caebacf 100644 (file)
@@ -55,9 +55,12 @@ int MyListNode::columnCount() const
        return 5;
 }
 
-QVariant MyListNode::data(int column) const
+QVariant MyListNode::data(int column, int role) const
 {
-       return itemData.value(column);
+       if (role == Qt::DisplayRole)
+               return itemData.value(column);
+       else
+               return QVariant();
 }
 
 MyListNode *MyListNode::parent()
@@ -309,26 +312,43 @@ MyListAnimeNode::~MyListAnimeNode()
        model->animeSet.erase(model->animeSet.s_iterator_to(animeData));
 }
 
-QVariant MyListAnimeNode::data(int column) const
+QVariant MyListAnimeNode::data(int column, int role) const
 {
-       switch (column)
+       switch (role)
        {
-               case 0:
-                       return animeData.data.titleRomaji;
-               case 1:
-                       return watchedEpisodes();
-               case 2:
-                       if (animeData.data.rating < 1)
-                               return "n/a";
-                       return QString::number(animeData.data.rating, 'f', 2);
-               case 3:
-                       if (animeData.data.myVote < 1)
-                               return "n/a";
-                       return QString::number(animeData.data.myVote, 'f', 2);
-               case 4:
-                       return QString("%1 of %2").arg(animeData.watchedEpisodes)
-                                       .arg(watchedEpisodes());
+               case Qt::DisplayRole:
+                       switch (column)
+                       {
+                               case 0:
+                                       return animeData.data.titleRomaji;
+                               case 1:
+                                       return watchedEpisodes();
+                               case 2:
+                                       if (animeData.data.rating < 1)
+                                               return "n/a";
+                                       return QString::number(animeData.data.rating, 'f', 2);
+                               case 3:
+                                       if (animeData.data.myVote < 1)
+                                               return "n/a";
+                                       return QString::number(animeData.data.myVote, 'f', 2);
+                               case 4:
+                                       return QString("%1 of %2").arg(animeData.watchedEpisodes)
+                                                       .arg(watchedEpisodes());
+                       }
+               case Qt::ToolTipRole:
+                       switch (column)
+                       {
+                               case 0:
+                                       if (!animeData.data.titleEnglish.isEmpty() && !animeData.data.titleKanji.isEmpty())
+                                               return QString("%1 -- %2").arg(animeData.data.titleEnglish)
+                                                               .arg(animeData.data.titleKanji);
+                                       if (!animeData.data.titleEnglish.isEmpty())
+                                               return animeData.data.titleEnglish;
+                                       if (!animeData.data.titleKanji.isEmpty())
+                                               return animeData.data.titleKanji;
+                       }
        }
+
        return QVariant();
 }
 
@@ -492,27 +512,45 @@ MyListEpisodeNode::~MyListEpisodeNode()
        model->episodeSet.erase(model->episodeSet.s_iterator_to(episodeData));
 }
 
-QVariant MyListEpisodeNode::data(int column) const
+QVariant MyListEpisodeNode::data(int column, int role) const
 {
-       switch (column)
+       switch (role)
        {
-               case 0:
-                       return episodeData.data.titleEnglish;
-               case 1:
-                       return episodeData.data.type + QString::number(episodeData.data.epno);
-               case 2:
-                       if (episodeData.data.rating < 1)
-                               return "n/a";
-                       return QString::number(episodeData.data.rating, 'f', 2);
-               case 3:
-                       if (episodeData.data.myVote < 1)
-                               return "n/a";
-                       return QString::number(episodeData.data.myVote, 'f', 2);
-               case 4:
-                       if (!episodeData.watchedDate.isValid())
-                               return QObject::tr("No");
-                       return QObject::tr("Yes, on %1").arg(episodeData.watchedDate.toString());
+               case Qt::DisplayRole:
+                       switch (column)
+                       {
+                               case 0:
+                                       return episodeData.data.titleEnglish;
+                               case 1:
+                                       return episodeData.data.type + QString::number(episodeData.data.epno);
+                               case 2:
+                                       if (episodeData.data.rating < 1)
+                                               return "n/a";
+                                       return QString::number(episodeData.data.rating, 'f', 2);
+                               case 3:
+                                       if (episodeData.data.myVote < 1)
+                                               return "n/a";
+                                       return QString::number(episodeData.data.myVote, 'f', 2);
+                               case 4:
+                                       if (!episodeData.watchedDate.isValid())
+                                               return QObject::tr("No");
+                                       return QObject::tr("Yes, on %1").arg(episodeData.watchedDate.toString());
+                       }
+               case Qt::ToolTipRole:
+                       switch (column)
+                       {
+                               case 0:
+                                       if (!episodeData.data.titleEnglish.isEmpty() && !episodeData.data.titleKanji.isEmpty())
+                                               return QString("%1 -- %2").arg(episodeData.data.titleKanji)
+                                                               .arg(episodeData.data.titleRomaji);
+                                       if (!episodeData.data.titleEnglish.isEmpty())
+                                               return episodeData.data.titleEnglish;
+                                       if (!episodeData.data.titleKanji.isEmpty())
+                                               return episodeData.data.titleKanji;
+                       }
        }
+
+
        return QVariant();
 }
 
@@ -709,8 +747,11 @@ MyListFileNode::~MyListFileNode()
        model->fileSet.erase(model->fileSet.s_iterator_to(fileData));
 }
 
-QVariant MyListFileNode::data(int column) const
+QVariant MyListFileNode::data(int column, int role) const
 {
+       if (role != Qt::DisplayRole)
+               return QVariant();
+
        switch (column)
        {
                case 0:
@@ -838,8 +879,11 @@ MyListFileLocationNode::~MyListFileLocationNode()
        model->fileLocationSet.erase(model->fileLocationSet.s_iterator_to(fileLocationData));
 }
 
-QVariant MyListFileLocationNode::data(int column) const
+QVariant MyListFileLocationNode::data(int column, int role) const
 {
+       if (role != Qt::DisplayRole)
+               return QVariant();
+
        switch (column)
        {
                case 0:
index ccc7226548ae9350dc74c6692c32a18f494f4d62..fdcbaa52a8924e8ddc04e8655915198b5cc45b61 100644 (file)
@@ -43,7 +43,7 @@ public:
        MyListNode *child(int row);
        int childCount() const;
        int columnCount() const;
-       virtual QVariant data(int column) const;
+       virtual QVariant data(int column, int role) const;
        int row() const;
        MyListNode *parent();
 
@@ -97,7 +97,7 @@ public:
        MyListAnimeNode(MyListModel *model, const AnimeData &data, MyListNode *parent);
        ~MyListAnimeNode();
 
-       QVariant data(int column) const;
+       QVariant data(int column, int role) const;
        void fetchMore();
        void fetchComplete();
        int id() const;
@@ -126,7 +126,7 @@ public:
        MyListEpisodeNode(MyListModel *model, const EpisodeData &data, MyListNode *parent);
        ~MyListEpisodeNode();
 
-       QVariant data(int column) const;
+       QVariant data(int column, int role) const;
        void fetchMore();
        void fetchComplete();
        int id() const;
@@ -154,7 +154,7 @@ public:
        MyListFileNode(MyListModel *model, const FileData &data, MyListNode *parent);
        ~MyListFileNode();
 
-       QVariant data(int column) const;
+       QVariant data(int column, int role) const;
        void fetchMore();
        void fetchComplete();
        int id() const;
@@ -181,7 +181,7 @@ public:
        MyListFileLocationNode(MyListModel *model, const FileLocationData &data, MyListNode *parent);
        ~MyListFileLocationNode();
 
-       QVariant data(int column) const;
+       QVariant data(int column, int role) const;
        void fetchMore();
        void fetchComplete();
        int id() const;