From 09719d24451fa5164b13f5801fa00aa35d286eff Mon Sep 17 00:00:00 2001 From: craig Date: Thu, 22 Dec 2011 19:05:53 +0000 Subject: [PATCH] Reduce code --- models/albumsmodel.cpp | 4 +- models/dirviewitem.cpp | 15 ++++--- models/dirviewitem.h | 46 ++++++++++--------- models/dirviewitemdir.cpp | 49 +-------------------- models/dirviewitemdir.h | 25 ++++------- models/dirviewitemfile.cpp | 73 ------------------------------- models/dirviewitemfile.h | 17 +++---- models/dirviewitemroot.cpp | 65 --------------------------- models/dirviewitemroot.h | 26 +++-------- models/dirviewmodel.cpp | 14 +++--- models/dirviewproxymodel.cpp | 5 ++- models/musiclibraryitem.cpp | 47 -------------------- models/musiclibraryitem.h | 45 ++++++++++++++----- models/musiclibraryitemalbum.cpp | 31 +------------ models/musiclibraryitemalbum.h | 13 +----- models/musiclibraryitemartist.cpp | 41 +++-------------- models/musiclibraryitemartist.h | 14 ++---- models/musiclibraryitemroot.cpp | 22 +--------- models/musiclibraryitemroot.h | 12 +++-- models/musiclibraryitemsong.cpp | 49 --------------------- models/musiclibraryitemsong.h | 12 ++--- models/musiclibrarymodel.cpp | 37 ++++++++-------- models/musiclibraryproxymodel.cpp | 36 +++++++-------- 23 files changed, 162 insertions(+), 536 deletions(-) delete mode 100644 models/dirviewitemfile.cpp delete mode 100644 models/dirviewitemroot.cpp delete mode 100644 models/musiclibraryitem.cpp delete mode 100644 models/musiclibraryitemsong.cpp diff --git a/models/albumsmodel.cpp b/models/albumsmodel.cpp index b75f27903..da765e5a6 100644 --- a/models/albumsmodel.cpp +++ b/models/albumsmodel.cpp @@ -332,10 +332,10 @@ void AlbumsModel::update(const MusicLibraryItemRoot *root) bool changed=false; for (int i = 0; i < root->childCount(); i++) { MusicLibraryItemArtist *artistItem = static_cast(root->child(i)); - QString artist=artistItem->data(0).toString(); + QString artist=artistItem->data(); for (int j = 0; j < artistItem->childCount(); j++) { MusicLibraryItemAlbum *albumItem = static_cast(artistItem->child(j)); - QString album=albumItem->data(0).toString(); + QString album=albumItem->data(); bool found=false; it=items.begin(); end=items.end(); diff --git a/models/dirviewitem.cpp b/models/dirviewitem.cpp index c95f3fdec..4810221d7 100644 --- a/models/dirviewitem.cpp +++ b/models/dirviewitem.cpp @@ -26,12 +26,15 @@ #include "dirviewitem.h" -DirViewItem::DirViewItem(const QString name, Type type) - : d_name(name), - d_type(type) +QString DirViewItem::fullName() { + QString fn = m_name; + DirViewItem *item = parent(); + while (item && item->type() != DirViewItem::Type_Root) { + fn.prepend("/"); + fn.prepend(item->name()); + item = item->parent(); + } + return fn; } -DirViewItem::~DirViewItem() -{ -} diff --git a/models/dirviewitem.h b/models/dirviewitem.h index dbd9c0b45..6c6f3c050 100644 --- a/models/dirviewitem.h +++ b/models/dirviewitem.h @@ -39,41 +39,45 @@ public: Type_File }; - DirViewItem(const QString name, Type type); - virtual ~DirViewItem(); - - virtual int row() const { - return 0; + DirViewItem(const QString name, Type type, DirViewItem *p) + : m_parentItem(p) + , m_name(name) + , m_type(type) { } - virtual DirViewItem * parent() const { - return NULL; + virtual ~DirViewItem() { + qDeleteAll(m_childItems); } - virtual int childCount() const { - return 0; + int row() const { + return m_parentItem ? m_parentItem->m_childItems.indexOf(const_cast(this)) : 0; } - virtual DirViewItem * child(int /*row*/) const { - return NULL; + DirViewItem * parent() const { + return m_parentItem; } - virtual QString fileName() { - return QString(); + int childCount() const { + return m_childItems.count();; } - + DirViewItem * child(int row) const { + return m_childItems.value(row);; + } + QString fullName(); int columnCount() const { return 1; } - QVariant data(int) const { - return d_name; + const QString & data() const { + return m_name; } - QString name() { - return d_name; + const QString & name() { + return m_name; } DirViewItem::Type type() const { - return d_type; + return m_type; } protected: - QString d_name; - Type d_type; + DirViewItem * m_parentItem; + QList m_childItems; + QString m_name; + Type m_type; }; #endif diff --git a/models/dirviewitemdir.cpp b/models/dirviewitemdir.cpp index 2bb40442c..1de109aca 100644 --- a/models/dirviewitemdir.cpp +++ b/models/dirviewitemdir.cpp @@ -24,64 +24,19 @@ * along with QtMPC. If not, see . */ -#include "dirviewitemroot.h" #include "dirviewitemdir.h" #include "dirviewitemfile.h" -DirViewItemDir::DirViewItemDir(const QString name, DirViewItem *parent) - : DirViewItem(name, DirViewItem::Type_Dir), - d_parentItem(parent) -{ -} - -DirViewItemDir::~DirViewItemDir() -{ - qDeleteAll(d_childItems); -} - -int DirViewItemDir::row() const -{ - switch (d_parentItem->type()) { - case DirViewItem::Type_Root: - return static_cast(d_parentItem)->d_childItems.indexOf(const_cast(this)); - break; - case DirViewItem::Type_Dir: - return static_cast(d_parentItem)->d_childItems.indexOf(const_cast(this)); - break; - default: - break; - } - - return 0; -} - -DirViewItem * DirViewItemDir::parent() const -{ - return d_parentItem; -} - -int DirViewItemDir::childCount() const -{ - return d_childItems.count(); -} - DirViewItem * DirViewItemDir::createDirectory(const QString dirName) { DirViewItemDir *dir = new DirViewItemDir(dirName, this); - d_childItems.append(dir); - + m_childItems.append(dir); return dir; } DirViewItem * DirViewItemDir::insertFile(const QString fileName) { DirViewItemFile *file = new DirViewItemFile(fileName, this); - d_childItems.append(file); - + m_childItems.append(file); return file; } - -DirViewItem * DirViewItemDir::child(int row) const -{ - return d_childItems.value(row); -} diff --git a/models/dirviewitemdir.h b/models/dirviewitemdir.h index 7ec56dc4c..65d1dadc6 100644 --- a/models/dirviewitemdir.h +++ b/models/dirviewitemdir.h @@ -26,31 +26,22 @@ #ifndef DIRVIEWITEMDIR_H #define DIRVIEWITEMDIR_H -#include -#include -#include -#include #include "dirviewitem.h" class DirViewItemDir : public DirViewItem { public: - DirViewItemDir(const QString name, DirViewItem *parent = 0); - ~DirViewItemDir(); + DirViewItemDir(const QString name, DirViewItem *parent) + : DirViewItem(name, DirViewItem::Type_Dir, parent) { + } + DirViewItemDir() + : DirViewItem(QString(), DirViewItem::Type_Root, 0) { + } + virtual ~DirViewItemDir() { + } DirViewItem * createDirectory(const QString dirName); DirViewItem * insertFile(const QString fileName); - - int row() const; - DirViewItem * parent() const; - int childCount() const; - DirViewItem * child(int row) const; - -private: - DirViewItem * const d_parentItem; - QList d_childItems; - - friend class DirViewItemFile; }; #endif diff --git a/models/dirviewitemfile.cpp b/models/dirviewitemfile.cpp deleted file mode 100644 index 458560b82..000000000 --- a/models/dirviewitemfile.cpp +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Cantata - * - * Copyright (c) 2011 Craig Drummond - * - */ -/* - * Copyright (c) 2008 Sander Knopper (sander AT knopper DOT tk) and - * Roeland Douma (roeland AT rullzer DOT com) - * - * This file is part of QtMPC. - * - * QtMPC is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * QtMPC is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with QtMPC. If not, see . - */ - -#include "dirviewitemroot.h" -#include "dirviewitemdir.h" -#include "dirviewitemfile.h" - -DirViewItemFile::DirViewItemFile(const QString name, DirViewItem *parent) - : DirViewItem(name, DirViewItem::Type_File), - d_parentItem(parent) -{ -} - -DirViewItemFile::~DirViewItemFile() -{ -} - -int DirViewItemFile::row() const -{ - switch (d_parentItem->type()) { - case DirViewItem::Type_Root: - return static_cast(d_parentItem)->d_childItems.indexOf(const_cast(this)); - break; - case DirViewItem::Type_Dir: - return static_cast(d_parentItem)->d_childItems.indexOf(const_cast(this)); - break; - default: - break; - } - - return 0; -} - -DirViewItem * DirViewItemFile::parent() const -{ - return d_parentItem; -} - -QString DirViewItemFile::fileName() -{ - QString filename = d_name; - - DirViewItem *current = this->parent(); - while (current->type() != DirViewItem::Type_Root) { - filename.prepend("/"); - filename.prepend(current->name()); - current = current->parent(); - } - return filename; -} diff --git a/models/dirviewitemfile.h b/models/dirviewitemfile.h index 57626916c..0247fd970 100644 --- a/models/dirviewitemfile.h +++ b/models/dirviewitemfile.h @@ -26,23 +26,16 @@ #ifndef DIRVIEWITEMFILE_H #define DIRVIEWITEMFILE_H -#include -#include -#include #include "dirviewitem.h" class DirViewItemFile : public DirViewItem { public: - DirViewItemFile(const QString name, DirViewItem *parent = 0); - ~DirViewItemFile(); - - int row() const; - DirViewItem * parent() const; - QString fileName(); - -private: - DirViewItem * const d_parentItem; + DirViewItemFile(const QString name, DirViewItem *parent) + : DirViewItem(name, DirViewItem::Type_File, parent) { + } + virtual ~DirViewItemFile() { + } }; #endif diff --git a/models/dirviewitemroot.cpp b/models/dirviewitemroot.cpp deleted file mode 100644 index 14443b191..000000000 --- a/models/dirviewitemroot.cpp +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Cantata - * - * Copyright (c) 2011 Craig Drummond - * - */ -/* - * Copyright (c) 2008 Sander Knopper (sander AT knopper DOT tk) and - * Roeland Douma (roeland AT rullzer DOT com) - * - * This file is part of QtMPC. - * - * QtMPC is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * QtMPC is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with QtMPC. If not, see . - */ - -#include "dirviewitemroot.h" -#include "dirviewitemdir.h" -#include "dirviewitemfile.h" - -DirViewItemRoot::DirViewItemRoot(const QString name) - : DirViewItem(name, DirViewItem::Type_Root) -{ -} - -DirViewItemRoot::~DirViewItemRoot() -{ - qDeleteAll(d_childItems); -} - -int DirViewItemRoot::childCount() const -{ - return d_childItems.count(); -} - -DirViewItem * DirViewItemRoot::createDirectory(const QString dirName) -{ - DirViewItemDir *dir = new DirViewItemDir(dirName, this); - d_childItems.append(dir); - - return dir; -} - -DirViewItem * DirViewItemRoot::insertFile(const QString fileName) -{ - DirViewItemFile *file = new DirViewItemFile(fileName, this); - d_childItems.append(file); - - return file; -} - -DirViewItem * DirViewItemRoot::child(int row) const -{ - return d_childItems.value(row); -} diff --git a/models/dirviewitemroot.h b/models/dirviewitemroot.h index d9bcb21a5..65d29f1c6 100644 --- a/models/dirviewitemroot.h +++ b/models/dirviewitemroot.h @@ -26,29 +26,15 @@ #ifndef DIRVIEWITEMROOT_H #define DIRVIEWITEMROOT_H -#include -#include -#include -#include -#include "dirviewitem.h" +#include "dirviewitemdir.h" -class DirViewItemRoot : public DirViewItem +class DirViewItemRoot : public DirViewItemDir { public: - DirViewItemRoot(const QString name=QString()); - ~DirViewItemRoot(); - - DirViewItem * createDirectory(const QString dirName); - DirViewItem * insertFile(const QString fileName); - - int childCount() const; - DirViewItem * child(int row) const; - -private: - QList d_childItems; - - friend class DirViewItemDir; - friend class DirViewItemFile; + DirViewItemRoot() { + } + virtual ~DirViewItemRoot() { + } }; #endif diff --git a/models/dirviewmodel.cpp b/models/dirviewmodel.cpp index d53328f07..f52fd6d3e 100644 --- a/models/dirviewmodel.cpp +++ b/models/dirviewmodel.cpp @@ -127,17 +127,17 @@ QVariant dirViewModel::data(const QModelIndex &index, int role) const break; } case Qt::DisplayRole: - return item->data(index.column()); + return item->data(); case Qt::ToolTipRole: return 0==item->childCount() - ? item->data(index.column()) + ? item->data() : #ifdef ENABLE_KDE_SUPPORT - i18np("%1\n1 Entry", "%1\n%2 Entries", item->data(index.column()).toString(), item->childCount()); + i18np("%1\n1 Entry", "%1\n%2 Entries", item->data(), item->childCount()); #else (item->childCount()>1 - ? tr("%1\n%2 Entries").arg(item->data(index.column()).toString()).arg(item->childCount()) - : tr("%1\n1 Entry").arg(item->data(index.column()).toString())); + ? tr("%1\n%2 Entries").arg(item->data()).arg(item->childCount()) + : tr("%1\n1 Entry").arg(item->data())); #endif case ItemView::Role_SubText: switch (item->type()) { @@ -197,8 +197,8 @@ QMimeData *dirViewModel::mimeData(const QModelIndexList &indexes) const void dirViewModel::recurseDirItems(DirViewItem &parent, QStringList &filenames) const { if (parent.childCount() == 0) { - if (!filenames.contains(parent.fileName())) { - filenames << parent.fileName(); + if (!filenames.contains(parent.fullName())) { + filenames << parent.fullName(); } } else { for (int i = 0; i < parent.childCount(); i++) { diff --git a/models/dirviewproxymodel.cpp b/models/dirviewproxymodel.cpp index a13f3d0d6..15e9fa656 100644 --- a/models/dirviewproxymodel.cpp +++ b/models/dirviewproxymodel.cpp @@ -25,6 +25,7 @@ */ #include "dirviewitem.h" +#include "dirviewitemfile.h" #include "dirviewproxymodel.h" DirViewProxyModel::DirViewProxyModel(QObject *parent) : QSortFilterProxyModel(parent) @@ -41,7 +42,7 @@ bool DirViewProxyModel::filterAcceptsDirViewItem(const DirViewItem * const item, DirViewItem *parent; // check if self matches regex - if (item->data(0).toString().contains(filterRegExp())) { + if (item->data().contains(filterRegExp())) { return true; } @@ -50,7 +51,7 @@ bool DirViewProxyModel::filterAcceptsDirViewItem(const DirViewItem * const item, // only need to check parents on first level of recursion parent = item->parent(); while (parent->type() != DirViewItem::Type_Root) { - if (parent->data(0).toString().contains(filterRegExp())) { + if (parent->data().contains(filterRegExp())) { return true; } parent = parent->parent(); diff --git a/models/musiclibraryitem.cpp b/models/musiclibraryitem.cpp deleted file mode 100644 index ee40c2c77..000000000 --- a/models/musiclibraryitem.cpp +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Cantata - * - * Copyright (c) 2011 Craig Drummond - * - */ -/* - * Copyright (c) 2008 Sander Knopper (sander AT knopper DOT tk) and - * Roeland Douma (roeland AT rullzer DOT com) - * - * This file is part of QtMPC. - * - * QtMPC is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * QtMPC is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with QtMPC. If not, see . - */ - -#include "musiclibraryitem.h" - -MusicLibraryItem::MusicLibraryItem(const QString &data, Type type) - : m_type(type), - m_itemData(data) -{ -} - -MusicLibraryItem::~MusicLibraryItem() -{ -} - -QVariant MusicLibraryItem::data(int /*column*/) const -{ - return m_itemData; -} - -MusicLibraryItem::Type MusicLibraryItem::type() const -{ - return m_type; -} diff --git a/models/musiclibraryitem.h b/models/musiclibraryitem.h index 3a90f87c6..e8cc5ff98 100644 --- a/models/musiclibraryitem.h +++ b/models/musiclibraryitem.h @@ -40,20 +40,34 @@ public: Type_Album, Type_Song }; - MusicLibraryItem(const QString &data, Type type); - virtual ~MusicLibraryItem(); + MusicLibraryItem(const QString &data, Type type, MusicLibraryItem *parent) + : m_parentItem(parent) + , m_type(type) + , m_itemData(data) { + } - virtual MusicLibraryItem * child(int /*row*/) const { - return NULL; + virtual ~MusicLibraryItem() { + qDeleteAll(m_childItems); } - virtual int childCount() const { - return 0; + + MusicLibraryItem * parent() const { + return m_parentItem; } - virtual int row() const { - return 0; + + void append(MusicLibraryItem *i) { + m_childItems.append(i); } - virtual MusicLibraryItem * parent() const { - return NULL; + + MusicLibraryItem * child(int row) const { + return m_childItems.value(row); + } + + int childCount() const { + return m_childItems.count(); + } + + int row() const { + return m_parentItem ? m_parentItem->m_childItems.indexOf(const_cast(this)) : 0; } int columnCount() const { @@ -72,10 +86,17 @@ public: return m_genres; } - QVariant data(int column) const; - MusicLibraryItem::Type type() const; + const QString & data() const { + return m_itemData; + } + + MusicLibraryItem::Type type() const { + return m_type; + } protected: + MusicLibraryItem *m_parentItem; + QList m_childItems; Type m_type; QString m_itemData; QSet m_genres; diff --git a/models/musiclibraryitemalbum.cpp b/models/musiclibraryitemalbum.cpp index 6e8a1de25..020048d96 100644 --- a/models/musiclibraryitemalbum.cpp +++ b/models/musiclibraryitemalbum.cpp @@ -69,45 +69,18 @@ void MusicLibraryItemAlbum::setCoverSize(MusicLibraryItemAlbum::CoverSize size) } MusicLibraryItemAlbum::MusicLibraryItemAlbum(const QString &data, const QString &dir, MusicLibraryItem *parent) - : MusicLibraryItem(data, MusicLibraryItem::Type_Album) + : MusicLibraryItem(data, MusicLibraryItem::Type_Album, parent) , m_dir(dir) , m_coverIsDefault(false) , m_cover(0) - , m_parentItem(static_cast(parent)) { } MusicLibraryItemAlbum::~MusicLibraryItemAlbum() { - qDeleteAll(m_childItems); delete m_cover; } -void MusicLibraryItemAlbum::appendSong(MusicLibraryItemSong * const song) -{ - m_childItems.append(song); -} - -MusicLibraryItem * MusicLibraryItemAlbum::child(int row) const -{ - return m_childItems.value(row); -} - -int MusicLibraryItemAlbum::childCount() const -{ - return m_childItems.count(); -} - -MusicLibraryItem * MusicLibraryItemAlbum::parent() const -{ - return m_parentItem; -} - -int MusicLibraryItemAlbum::row() const -{ - return m_parentItem->m_childItems.indexOf(const_cast(this)); -} - bool MusicLibraryItemAlbum::setCover(const QImage &img) { if (m_coverIsDefault) { @@ -139,7 +112,7 @@ const QPixmap & MusicLibraryItemAlbum::cover() m_coverIsDefault = true; if (parent() && iSize) { Song song; - song.albumartist=parent()->data(0).toString(); + song.albumartist=parent()->data(); song.album=m_itemData; song.file=m_dir; Covers::self()->get(song); diff --git a/models/musiclibraryitemalbum.h b/models/musiclibraryitemalbum.h index 8fe953e6f..63b0001c1 100644 --- a/models/musiclibraryitemalbum.h +++ b/models/musiclibraryitemalbum.h @@ -51,14 +51,9 @@ public: static int iconSize(MusicLibraryItemAlbum::CoverSize sz); static int iconSize(); - MusicLibraryItemAlbum(const QString &data, const QString &dir, MusicLibraryItem *parent = 0); - ~MusicLibraryItemAlbum(); + MusicLibraryItemAlbum(const QString &data, const QString &dir, MusicLibraryItem *parent); + virtual ~MusicLibraryItemAlbum(); - void appendSong(MusicLibraryItemSong * const song); - MusicLibraryItem * child(int row) const; - int childCount() const; - int row() const; - MusicLibraryItem * parent() const; bool setCover(const QImage &img); const QPixmap & cover(); bool hasRealCover() const { return !m_coverIsDefault; } @@ -69,10 +64,6 @@ private: QString m_dir; bool m_coverIsDefault; QPixmap *m_cover; - QList m_childItems; - MusicLibraryItemArtist * const m_parentItem; - - friend class MusicLibraryItemSong; }; #endif diff --git a/models/musiclibraryitemartist.cpp b/models/musiclibraryitemartist.cpp index 5092a49e7..213595df6 100644 --- a/models/musiclibraryitemartist.cpp +++ b/models/musiclibraryitemartist.cpp @@ -29,21 +29,16 @@ #include "musiclibraryitemalbum.h" #include "song.h" #include "mpdparseutils.h" +#include MusicLibraryItemArtist::MusicLibraryItemArtist(const QString &data, MusicLibraryItem *parent) - : MusicLibraryItem(data, MusicLibraryItem::Type_Artist), - m_parentItem(static_cast(parent)) + : MusicLibraryItem(data, MusicLibraryItem::Type_Artist, parent) { if (m_itemData.startsWith(QLatin1String("The "))) { - nonTheArtist=m_itemData.mid(4); + m_nonTheArtist=m_itemData.mid(4); } } -MusicLibraryItemArtist::~MusicLibraryItemArtist() -{ - qDeleteAll(m_childItems); -} - MusicLibraryItemAlbum * MusicLibraryItemArtist::album(const Song &s) { QHash::Iterator it=m_indexes.find(s.album); @@ -54,36 +49,10 @@ MusicLibraryItemAlbum * MusicLibraryItemArtist::album(const Song &s) m_childItems.append(item); return item; } - return m_childItems.at(*it); -} - -MusicLibraryItem * MusicLibraryItemArtist::child(int row) const -{ - return m_childItems.value(row); -} - -int MusicLibraryItemArtist::childCount() const -{ - return m_childItems.count(); -} - -MusicLibraryItem * MusicLibraryItemArtist::parent() const -{ - return m_parentItem; -} - -void MusicLibraryItemArtist::setParent(MusicLibraryItem * const parent) -{ - m_parentItem = static_cast(parent); -} - -int MusicLibraryItemArtist::row() const -{ - return m_parentItem->m_childItems.indexOf(const_cast(this)); + return static_cast(m_childItems.at(*it)); } const QString & MusicLibraryItemArtist::baseArtist() const { - return nonTheArtist.isEmpty() ? m_itemData : nonTheArtist; + return m_nonTheArtist.isEmpty() ? m_itemData : m_nonTheArtist; } - diff --git a/models/musiclibraryitemartist.h b/models/musiclibraryitemartist.h index 15dc8cebd..8687d3e5a 100644 --- a/models/musiclibraryitemartist.h +++ b/models/musiclibraryitemartist.h @@ -40,23 +40,15 @@ class MusicLibraryItemArtist : public MusicLibraryItem { public: MusicLibraryItemArtist(const QString &data, MusicLibraryItem *parent = 0); - ~MusicLibraryItemArtist(); + virtual ~MusicLibraryItemArtist() { + } MusicLibraryItemAlbum * album(const Song &s); - MusicLibraryItem * child(int row) const; - int childCount() const; - int row() const; - MusicLibraryItem * parent() const; - void setParent(MusicLibraryItem * const parent); const QString & baseArtist() const; private: - QString nonTheArtist; + QString m_nonTheArtist; QHash m_indexes; - QList m_childItems; - MusicLibraryItemRoot *m_parentItem; - - friend class MusicLibraryItemAlbum; }; #endif diff --git a/models/musiclibraryitemroot.cpp b/models/musiclibraryitemroot.cpp index 59617e148..b9f3f902d 100644 --- a/models/musiclibraryitemroot.cpp +++ b/models/musiclibraryitemroot.cpp @@ -28,16 +28,6 @@ #include "musiclibraryitemartist.h" #include "song.h" -MusicLibraryItemRoot::MusicLibraryItemRoot(const QString &data) - : MusicLibraryItem(data, MusicLibraryItem::Type_Root) -{ -} - -MusicLibraryItemRoot::~MusicLibraryItemRoot() -{ - qDeleteAll(m_childItems); -} - MusicLibraryItemArtist * MusicLibraryItemRoot::artist(const Song &s) { QString aa=s.albumArtist(); @@ -49,15 +39,5 @@ MusicLibraryItemArtist * MusicLibraryItemRoot::artist(const Song &s) m_childItems.append(item); return item; } - return m_childItems.at(*it); -} - -MusicLibraryItem * MusicLibraryItemRoot::child(int row) const -{ - return m_childItems.value(row); -} - -int MusicLibraryItemRoot::childCount() const -{ - return m_childItems.count(); + return static_cast(m_childItems.at(*it)); } diff --git a/models/musiclibraryitemroot.h b/models/musiclibraryitemroot.h index 3f4241c7b..a0a04dd0f 100644 --- a/models/musiclibraryitemroot.h +++ b/models/musiclibraryitemroot.h @@ -38,18 +38,16 @@ class MusicLibraryItemArtist; class MusicLibraryItemRoot : public MusicLibraryItem { public: - MusicLibraryItemRoot(const QString &data=QString()); - ~MusicLibraryItemRoot(); + MusicLibraryItemRoot() + : MusicLibraryItem(QString(), MusicLibraryItem::Type_Root, 0) { + } + virtual ~MusicLibraryItemRoot() { + } MusicLibraryItemArtist * artist(const Song &s); - MusicLibraryItem * child(int row) const; - int childCount() const; private: QHash m_indexes; - QList m_childItems; - - friend class MusicLibraryItemArtist; }; #endif diff --git a/models/musiclibraryitemsong.cpp b/models/musiclibraryitemsong.cpp deleted file mode 100644 index 41522abeb..000000000 --- a/models/musiclibraryitemsong.cpp +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Cantata - * - * Copyright (c) 2011 Craig Drummond - * - */ -/* - * Copyright (c) 2008 Sander Knopper (sander AT knopper DOT tk) and - * Roeland Douma (roeland AT rullzer DOT com) - * - * This file is part of QtMPC. - * - * QtMPC is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * QtMPC is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with QtMPC. If not, see . - */ - -#include "musiclibraryitemalbum.h" -#include "musiclibraryitemsong.h" - -MusicLibraryItemSong::MusicLibraryItemSong(const Song &s, MusicLibraryItem *parent) - : MusicLibraryItem(s.displayTitle(), MusicLibraryItem::Type_Song), - m_song(s), - m_parentItem(static_cast(parent)) -{ -} - -MusicLibraryItemSong::~MusicLibraryItemSong() -{ -} - -MusicLibraryItem * MusicLibraryItemSong::parent() const -{ - return m_parentItem; -} - -int MusicLibraryItemSong::row() const -{ - return m_parentItem->m_childItems.indexOf(const_cast(this)); -} diff --git a/models/musiclibraryitemsong.h b/models/musiclibraryitemsong.h index 54d5475e2..3e7f0e0ab 100644 --- a/models/musiclibraryitemsong.h +++ b/models/musiclibraryitemsong.h @@ -37,11 +37,14 @@ class MusicLibraryItemAlbum; class MusicLibraryItemSong : public MusicLibraryItem { public: - MusicLibraryItemSong(const Song &s, MusicLibraryItem *parent = 0); - ~MusicLibraryItemSong(); + MusicLibraryItemSong(const Song &s, MusicLibraryItem *parent) + : MusicLibraryItem(s.displayTitle(), MusicLibraryItem::Type_Song, parent) + , m_song(s) { + } + + virtual ~MusicLibraryItemSong() { + } - int row() const; - MusicLibraryItem * parent() const; const QString & file() const { return m_song.file; } @@ -62,7 +65,6 @@ public: } private: Song m_song; - MusicLibraryItemAlbum * const m_parentItem; }; #endif diff --git a/models/musiclibrarymodel.cpp b/models/musiclibrarymodel.cpp index 6b249efbb..d46740a22 100644 --- a/models/musiclibrarymodel.cpp +++ b/models/musiclibrarymodel.cpp @@ -99,8 +99,9 @@ QModelIndex MusicLibraryModel::parent(const QModelIndex &index) const QVariant MusicLibraryModel::headerData(int section, Qt::Orientation orientation, int role) const { + Q_UNUSED(section) if (orientation == Qt::Horizontal && role == Qt::DisplayRole) - return rootItem->data(section); + return rootItem->data(); return QVariant(); } @@ -152,35 +153,35 @@ QVariant MusicLibraryModel::data(const QModelIndex &index, int role) const if (MusicLibraryItem::Type_Song==item->type()) { MusicLibraryItemSong *song = static_cast(item); if (song->track()>9) { - return QString::number(song->track())+QChar(' ')+item->data(index.column()).toString(); + return QString::number(song->track())+QChar(' ')+item->data(); } else if (song->track()>0) { - return QChar('0')+QString::number(song->track())+QChar(' ')+item->data(index.column()).toString(); + return QChar('0')+QString::number(song->track())+QChar(' ')+item->data(); } } - return item->data(index.column()); + return item->data(); case Qt::ToolTipRole: switch (item->type()) { case MusicLibraryItem::Type_Artist: return 0==item->childCount() - ? item->data(index.column()) + ? item->data() : #ifdef ENABLE_KDE_SUPPORT - i18np("%1\n1 Album", "%1\n%2 Albums", item->data(index.column()).toString(), item->childCount()); + i18np("%1\n1 Album", "%1\n%2 Albums", item->data(), item->childCount()); #else (item->childCount()>1 - ? tr("%1\n%2 Albums").arg(item->data(index.column()).toString()).arg(item->childCount()) - : tr("%1\n1 Album").arg(item->data(index.column()).toString())); + ? tr("%1\n%2 Albums").arg(item->data()).arg(item->childCount()) + : tr("%1\n1 Album").arg(item->data())); #endif case MusicLibraryItem::Type_Album: return 0==item->childCount() - ? item->data(index.column()) + ? item->data() : #ifdef ENABLE_KDE_SUPPORT - i18np("%1\n1 Track", "%1\n%2 Tracks", item->data(index.column()).toString(), item->childCount()); + i18np("%1\n1 Track", "%1\n%2 Tracks", item->data(), item->childCount()); #else (item->childCount()>1 - ? tr("%1\n%2 Tracks").arg(item->data(index.column()).toString()).arg(item->childCount()) - : tr("%1\n1 Track").arg(item->data(index.column()).toString())); + ? tr("%1\n%2 Tracks").arg(item->data()).arg(item->childCount()) + : tr("%1\n1 Track").arg(item->data())); #endif case MusicLibraryItem::Type_Song: { QString duration=MPDParseUtils::formatDuration(static_cast(item)->time()); @@ -292,10 +293,10 @@ void MusicLibraryModel::setCover(const QString &artist, const QString &album, co for (int i = 0; i < rootItem->childCount(); i++) { MusicLibraryItemArtist *artistItem = static_cast(rootItem->child(i)); - if (artistItem->data(0).toString()==artist) { + if (artistItem->data()==artist) { for (int j = 0; j < artistItem->childCount(); j++) { MusicLibraryItemAlbum *albumItem = static_cast(artistItem->child(j)); - if (albumItem->data(0).toString()==album) { + if (albumItem->data()==album) { if (albumItem->setCover(img)) { QModelIndex idx=index(j, 0, index(i, 0, QModelIndex())); emit dataChanged(idx, idx); @@ -344,16 +345,16 @@ void MusicLibraryModel::toXML(const QDateTime db_update) for (int i = 0; i < rootItem->childCount(); i++) { MusicLibraryItemArtist *artist = static_cast(rootItem->child(i)); writer.writeStartElement("Artist"); - writer.writeAttribute("name", artist->data(0).toString()); + writer.writeAttribute("name", artist->data()); for (int j = 0; j < artist->childCount(); j++) { MusicLibraryItemAlbum *album = static_cast(artist->child(j)); writer.writeStartElement("Album"); - writer.writeAttribute("title", album->data(0).toString()); + writer.writeAttribute("title", album->data()); writer.writeAttribute("dir", album->dir()); for (int k = 0; k < album->childCount(); k++) { MusicLibraryItemSong *track = static_cast(album->child(k)); writer.writeEmptyElement("Track"); - writer.writeAttribute("title", track->data(0).toString()); + writer.writeAttribute("title", track->data()); writer.writeAttribute("filename", track->file()); writer.writeAttribute("time", QString::number(track->time())); //Only write track number if it is set @@ -469,7 +470,7 @@ bool MusicLibraryModel::fromXML(const QDateTime db_update) songItem = new MusicLibraryItemSong(song, albumItem); - albumItem->appendSong(songItem); + albumItem->append(songItem); QString genre = reader.attributes().value("genre").toString(); albumItem->addGenre(genre); diff --git a/models/musiclibraryproxymodel.cpp b/models/musiclibraryproxymodel.cpp index 90e844f42..f5117b012 100644 --- a/models/musiclibraryproxymodel.cpp +++ b/models/musiclibraryproxymodel.cpp @@ -43,33 +43,33 @@ bool MusicLibraryProxyModel::filterAcceptsArtist(const MusicLibraryItem * const { switch (_filterField) { case 0: // Artist - return item->data(0).toString().contains(filterRegExp()); + return item->data().contains(filterRegExp()); case 1: // Album for (int i = 0; i < item->childCount(); i++) { - if (item->child(i)->data(0).toString().contains(filterRegExp())) + if (item->child(i)->data().contains(filterRegExp())) return true; } break; case 2: // Song for (int i = 0; i < item->childCount(); i++) { for (int j = 0; j < item->child(i)->childCount(); j++) { - if (item->child(i)->child(j)->data(0).toString().contains(filterRegExp())) + if (item->child(i)->child(j)->data().contains(filterRegExp())) return true; } } break; case 3: // Any - if (item->data(0).toString().contains(filterRegExp())) + if (item->data().contains(filterRegExp())) return true; for (int i = 0; i < item->childCount(); i++) { - if (item->child(i)->data(0).toString().contains(filterRegExp())) + if (item->child(i)->data().contains(filterRegExp())) return true; } for (int i = 0; i < item->childCount(); i++) { for (int j = 0; j < item->child(i)->childCount(); j++) { - if (item->child(i)->child(j)->data(0).toString().contains(filterRegExp())) + if (item->child(i)->child(j)->data().contains(filterRegExp())) return true; } } @@ -85,21 +85,21 @@ bool MusicLibraryProxyModel::filterAcceptsAlbum(const MusicLibraryItem * const i { switch (_filterField) { case 0: // Artist - return item->parent()->data(0).toString().contains(filterRegExp()); + return item->parent()->data().contains(filterRegExp()); case 1: // Album - return item->data(0).toString().contains(filterRegExp()); + return item->data().contains(filterRegExp()); case 2: // Song for (int i = 0; i < item->childCount(); i++) { - if (item->child(i)->data(0).toString().contains(filterRegExp())) + if (item->child(i)->data().contains(filterRegExp())) return true; } break; case 3: // Any - if (item->parent()->data(0).toString().contains(filterRegExp()) || \ - item->data(0).toString().contains(filterRegExp())) + if (item->parent()->data().contains(filterRegExp()) || \ + item->data().contains(filterRegExp())) return true; for (int i = 0; i < item->childCount(); i++) { - if (item->child(i)->data(0).toString().contains(filterRegExp())) + if (item->child(i)->data().contains(filterRegExp())) return true; } break; @@ -114,15 +114,15 @@ bool MusicLibraryProxyModel::filterAcceptsSong(const MusicLibraryItem * const it { switch (_filterField) { case 0: // Artist - return item->parent()->parent()->data(0).toString().contains(filterRegExp()); + return item->parent()->parent()->data().contains(filterRegExp()); case 1: // Album - return item->parent()->data(0).toString().contains(filterRegExp()); + return item->parent()->data().contains(filterRegExp()); case 2: // Song - return item->data(0).toString().contains(filterRegExp()); + return item->data().contains(filterRegExp()); case 3: // Any - return item->parent()->parent()->data(0).toString().contains(filterRegExp()) || \ - item->parent()->data(0).toString().contains(filterRegExp()) || \ - item->data(0).toString().contains(filterRegExp()); + return item->parent()->parent()->data().contains(filterRegExp()) || \ + item->parent()->data().contains(filterRegExp()) || \ + item->data().contains(filterRegExp()); default: break; }