From b3e42974eef7e0082144e7bb7535c8fa1df0afd7 Mon Sep 17 00:00:00 2001
From: Christian Muehlhaeuser <muesli@gmail.com>
Date: Mon, 25 Aug 2014 10:48:00 +0200
Subject: [PATCH] * Added QueueItem, sidebar item for the queue.

---
 src/tomahawk/sourcetree/items/QueueItem.cpp | 85 +++++++++++++++++++++
 src/tomahawk/sourcetree/items/QueueItem.h   | 48 ++++++++++++
 2 files changed, 133 insertions(+)
 create mode 100644 src/tomahawk/sourcetree/items/QueueItem.cpp
 create mode 100644 src/tomahawk/sourcetree/items/QueueItem.h

diff --git a/src/tomahawk/sourcetree/items/QueueItem.cpp b/src/tomahawk/sourcetree/items/QueueItem.cpp
new file mode 100644
index 000000000..e738bb502
--- /dev/null
+++ b/src/tomahawk/sourcetree/items/QueueItem.cpp
@@ -0,0 +1,85 @@
+/* === This file is part of Tomahawk Player - <http://tomahawk-player.org> ===
+ *
+ *   Copyright 2014, Christian Muehlhaeuser <muesli@tomahawk-player.org>
+ *
+ *   Tomahawk 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 3 of the License, or
+ *   (at your option) any later version.
+ *
+ *   Tomahawk 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 Tomahawk. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
+#include "QueueItem.h"
+
+#include "utils/ImageRegistry.h"
+#include "playlist/TrackView.h"
+#include "playlist/PlayableProxyModel.h"
+#include "ViewManager.h"
+#include "ViewPage.h"
+
+#include <QString>
+#include <QIcon>
+
+
+QueueItem::QueueItem( SourcesModel* model, SourceTreeItem* parent )
+    : SourceTreeItem( model, parent, SourcesModel::Queue )
+    , m_sortValue( -150 )
+{
+    m_text = tr( "Queue" );
+    m_icon = ImageRegistry::instance()->icon( RESPATH "images/new-releases.svg" );
+}
+
+
+QueueItem::~QueueItem()
+{}
+
+
+QString
+QueueItem::text() const
+{
+    return m_text;
+}
+
+
+QIcon
+QueueItem::icon() const
+{
+    return m_icon;
+}
+
+
+int
+QueueItem::peerSortValue() const
+{
+    return m_sortValue;
+}
+
+
+void
+QueueItem::setSortValue( int value )
+{
+    m_sortValue = value;
+}
+
+
+int
+QueueItem::unlistenedCount() const
+{
+    return ViewManager::instance()->queue()->trackView()->proxyModel()->rowCount();
+}
+
+
+void
+QueueItem::activate()
+{
+    Tomahawk::ViewPage* page = ViewManager::instance()->showQueuePage();
+    model()->linkSourceItemToPage( this, page );
+}
diff --git a/src/tomahawk/sourcetree/items/QueueItem.h b/src/tomahawk/sourcetree/items/QueueItem.h
new file mode 100644
index 000000000..4b2b8a9cd
--- /dev/null
+++ b/src/tomahawk/sourcetree/items/QueueItem.h
@@ -0,0 +1,48 @@
+/* === This file is part of Tomahawk Player - <http://tomahawk-player.org> ===
+ *
+ *   Copyright 2014, Christian Muehlhaeuser <muesli@tomahawk-player.org>
+ *
+ *   Tomahawk 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 3 of the License, or
+ *   (at your option) any later version.
+ *
+ *   Tomahawk 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 Tomahawk. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
+#ifndef QUEUEITEM_H
+#define QUEUEITEM_H
+
+#include "SourceTreeItem.h"
+
+class QueueItem : public SourceTreeItem
+{
+    Q_OBJECT
+public:
+    explicit QueueItem( SourcesModel* model, SourceTreeItem* parent );
+    virtual ~QueueItem();
+
+    virtual QString text() const;
+    virtual QIcon icon() const;
+    virtual int peerSortValue() const;
+    void setSortValue( int value );
+
+    int unlistenedCount() const;
+
+public slots:
+    virtual void activate();
+
+private:
+    int m_sortValue;
+    QIcon m_icon;
+    QString m_text;
+};
+
+#endif // QUEUEITEM_H