From: APTX Date: Tue, 2 Apr 2013 00:20:34 +0000 (+0200) Subject: Add tooltips with alternate names to the model X-Git-Url: https://gitweb.tyo.aptx.org/?a=commitdiff_plain;h=d38cefdf68e7f6cd2b533f3270c0629cf3c45bc2;p=localmylist.git Add tooltips with alternate names to the model --- diff --git a/localmylist/mylistmodel.cpp b/localmylist/mylistmodel.cpp index d3aa66a..f727c9b 100644 --- a/localmylist/mylistmodel.cpp +++ b/localmylist/mylistmodel.cpp @@ -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(index.internalPointer()); - return item->data(index.column()); + return item->data(index.column(), role); } QModelIndex MyListModel::index(int row, int column, const QModelIndex &parent) const diff --git a/localmylist/mylistnode.cpp b/localmylist/mylistnode.cpp index 7b08182..45f5ef9 100644 --- a/localmylist/mylistnode.cpp +++ b/localmylist/mylistnode.cpp @@ -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: diff --git a/localmylist/mylistnode.h b/localmylist/mylistnode.h index ccc7226..fdcbaa5 100644 --- a/localmylist/mylistnode.h +++ b/localmylist/mylistnode.h @@ -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;