Move some bits out of LibraryItem
This commit is contained in:
parent
1d9270bba5
commit
9b2a5b1535
@ -20,6 +20,8 @@ Library::Library(EngineBase* engine, QObject* parent)
|
||||
album_icon_(":album.png"),
|
||||
config_(new LibraryConfig)
|
||||
{
|
||||
root_->lazy_loaded = true;
|
||||
|
||||
connect(backend_, SIGNAL(Initialised()), SLOT(BackendInitialised()));
|
||||
connect(watcher_, SIGNAL(Initialised()), SLOT(WatcherInitialised()));
|
||||
waiting_for_threads_ = 2;
|
||||
@ -143,6 +145,7 @@ LibraryItem* Library::CreateArtistNode(bool signal, const QString& name) {
|
||||
|
||||
LibraryItem* divider =
|
||||
new LibraryItem(LibraryItem::Type_Divider, QString(divider_char), root_);
|
||||
divider->lazy_loaded = true;
|
||||
|
||||
if (divider_char.isDigit())
|
||||
divider->display_text = "0-9";
|
||||
@ -180,6 +183,7 @@ LibraryItem* Library::CreateSongNode(bool signal, const Song& song, LibraryItem*
|
||||
beginInsertRows(ItemToIndex(parent), parent->children.count(), parent->children.count());
|
||||
|
||||
LibraryItem* ret = new LibraryItem(LibraryItem::Type_Song, song.title(), parent);
|
||||
ret->lazy_loaded = true;
|
||||
ret->display_text = song.PrettyTitleWithArtist();
|
||||
ret->song = song;
|
||||
|
||||
@ -398,6 +402,7 @@ void Library::Reset() {
|
||||
compilation_artist_node_ = NULL;
|
||||
|
||||
root_ = new LibraryItem(LibraryItem::Type_Root);
|
||||
root_->lazy_loaded = true;
|
||||
|
||||
// Various artists?
|
||||
if (backend_->Worker()->HasCompilations(query_options_))
|
||||
|
@ -1,35 +0,0 @@
|
||||
#include "libraryitem.h"
|
||||
|
||||
LibraryItem::LibraryItem(Type _type, const QString& _key, LibraryItem* _parent)
|
||||
: type(_type),
|
||||
key(_key),
|
||||
lazy_loaded(_type == Type_Song || _type == Type_Root || _type == Type_Divider),
|
||||
parent(_parent)
|
||||
{
|
||||
if (parent) {
|
||||
row = parent->children.count();
|
||||
parent->children << this;
|
||||
} else {
|
||||
row = 0;
|
||||
}
|
||||
}
|
||||
|
||||
LibraryItem::~LibraryItem() {
|
||||
qDeleteAll(children);
|
||||
}
|
||||
|
||||
void LibraryItem::Delete(int child_row) {
|
||||
delete children.takeAt(child_row);
|
||||
|
||||
// Adjust row numbers of those below it :(
|
||||
for (int i=child_row ; i<children.count() ; ++i)
|
||||
children[i]->row --;
|
||||
}
|
||||
|
||||
LibraryItem* LibraryItem::ChildByKey(const QString& key) const {
|
||||
foreach (LibraryItem* child, children) {
|
||||
if (child->key == key)
|
||||
return child;
|
||||
}
|
||||
return NULL;
|
||||
}
|
@ -5,8 +5,10 @@
|
||||
#include <QList>
|
||||
|
||||
#include "song.h"
|
||||
#include "simpletreeitem.h"
|
||||
|
||||
struct LibraryItem {
|
||||
class LibraryItem : public SimpleTreeItem<LibraryItem> {
|
||||
public:
|
||||
enum Type {
|
||||
Type_Root,
|
||||
Type_Divider,
|
||||
@ -17,25 +19,10 @@ struct LibraryItem {
|
||||
Type_Song,
|
||||
};
|
||||
|
||||
LibraryItem(Type _type, const QString& _key = QString::null, LibraryItem* _parent = NULL);
|
||||
~LibraryItem();
|
||||
LibraryItem(Type type, const QString& key = QString::null, LibraryItem* parent = NULL)
|
||||
: SimpleTreeItem<LibraryItem>(type, key, parent) {}
|
||||
|
||||
void Delete(int child_row);
|
||||
LibraryItem* ChildByKey(const QString& key) const;
|
||||
|
||||
QString DisplayText() const { return display_text.isNull() ? key : display_text; }
|
||||
QString SortText() const { return sort_text.isNull() ? key : sort_text; }
|
||||
|
||||
Type type;
|
||||
QString key;
|
||||
QString sort_text;
|
||||
QString display_text;
|
||||
int row;
|
||||
bool lazy_loaded;
|
||||
Song song;
|
||||
|
||||
LibraryItem* parent;
|
||||
QList<LibraryItem*> children;
|
||||
};
|
||||
|
||||
#endif // LIBRARYITEM_H
|
||||
|
69
src/simpletreeitem.h
Normal file
69
src/simpletreeitem.h
Normal file
@ -0,0 +1,69 @@
|
||||
#ifndef SIMPLETREEITEM_H
|
||||
#define SIMPLETREEITEM_H
|
||||
|
||||
#include <QString>
|
||||
#include <QList>
|
||||
|
||||
template <typename T>
|
||||
class SimpleTreeItem {
|
||||
public:
|
||||
SimpleTreeItem(int _type, const QString& _key = QString::null, T* _parent = NULL);
|
||||
virtual ~SimpleTreeItem();
|
||||
|
||||
void Delete(int child_row);
|
||||
T* ChildByKey(const QString& key) const;
|
||||
|
||||
QString DisplayText() const { return display_text.isNull() ? key : display_text; }
|
||||
QString SortText() const { return sort_text.isNull() ? key : sort_text; }
|
||||
|
||||
int type;
|
||||
QString key;
|
||||
QString sort_text;
|
||||
QString display_text;
|
||||
|
||||
int row;
|
||||
bool lazy_loaded;
|
||||
|
||||
T* parent;
|
||||
QList<T*> children;
|
||||
};
|
||||
|
||||
template <typename T>
|
||||
SimpleTreeItem<T>::SimpleTreeItem(int _type, const QString& _key, T* _parent)
|
||||
: type(_type),
|
||||
key(_key),
|
||||
lazy_loaded(false),
|
||||
parent(_parent)
|
||||
{
|
||||
if (parent) {
|
||||
row = parent->children.count();
|
||||
parent->children << static_cast<T*>(this);
|
||||
} else {
|
||||
row = 0;
|
||||
}
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
SimpleTreeItem<T>::~SimpleTreeItem() {
|
||||
qDeleteAll(children);
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
void SimpleTreeItem<T>::Delete(int child_row) {
|
||||
delete children.takeAt(child_row);
|
||||
|
||||
// Adjust row numbers of those below it :(
|
||||
for (int i=child_row ; i<children.count() ; ++i)
|
||||
children[i]->row --;
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
T* SimpleTreeItem<T>::ChildByKey(const QString& key) const {
|
||||
foreach (T* child, children) {
|
||||
if (child->key == key)
|
||||
return child;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
#endif // SIMPLETREEITEM_H
|
@ -27,7 +27,6 @@ SOURCES += main.cpp \
|
||||
songmimedata.cpp \
|
||||
songplaylistitem.cpp \
|
||||
libraryview.cpp \
|
||||
libraryitem.cpp \
|
||||
libraryconfig.cpp \
|
||||
systemtrayicon.cpp \
|
||||
libraryquery.cpp \
|
||||
@ -63,7 +62,8 @@ HEADERS += mainwindow.h \
|
||||
libraryquery.h \
|
||||
fileview.h \
|
||||
fileviewlist.h \
|
||||
playlistheader.h
|
||||
playlistheader.h \
|
||||
simpletreeitem.h
|
||||
FORMS += mainwindow.ui \
|
||||
libraryconfig.ui \
|
||||
fileview.ui
|
||||
|
Loading…
x
Reference in New Issue
Block a user