mirror of
https://github.com/tomahawk-player/tomahawk.git
synced 2025-08-02 04:10:20 +02:00
Add new jobs status view
This commit is contained in:
@@ -115,5 +115,6 @@
|
|||||||
<file>data/images/drop-top-songs.png</file>
|
<file>data/images/drop-top-songs.png</file>
|
||||||
<file>data/images/drop-song.png</file>
|
<file>data/images/drop-song.png</file>
|
||||||
<file>data/images/drop-album.png</file>
|
<file>data/images/drop-album.png</file>
|
||||||
|
<file>data/images/spotify-logo.jpg</file>
|
||||||
</qresource>
|
</qresource>
|
||||||
</RCC>
|
</RCC>
|
||||||
|
@@ -63,10 +63,13 @@ SET( tomahawkSourcesGui ${tomahawkSourcesGui}
|
|||||||
sourcetree/items/genericpageitems.cpp
|
sourcetree/items/genericpageitems.cpp
|
||||||
sourcetree/items/temporarypageitem.cpp
|
sourcetree/items/temporarypageitem.cpp
|
||||||
|
|
||||||
|
jobview/JobStatusView.cpp
|
||||||
|
jobview/JobStatusModel.cpp
|
||||||
|
jobview/JobStatusDelegate.cpp
|
||||||
|
jobview/PipelineStatusItem.cpp
|
||||||
# breakpad/BreakPad.cpp
|
# breakpad/BreakPad.cpp
|
||||||
|
|
||||||
transferview.cpp
|
transferview.cpp
|
||||||
PipelineStatusView.cpp
|
|
||||||
tomahawktrayicon.cpp
|
tomahawktrayicon.cpp
|
||||||
audiocontrols.cpp
|
audiocontrols.cpp
|
||||||
settingsdialog.cpp
|
settingsdialog.cpp
|
||||||
@@ -115,8 +118,13 @@ SET( tomahawkHeadersGui ${tomahawkHeadersGui}
|
|||||||
sourcetree/items/genericpageitems.h
|
sourcetree/items/genericpageitems.h
|
||||||
sourcetree/items/temporarypageitem.h
|
sourcetree/items/temporarypageitem.h
|
||||||
|
|
||||||
|
jobview/JobStatusView.h
|
||||||
|
jobview/JobStatusModel.h
|
||||||
|
jobview/JobStatusDelegate.h
|
||||||
|
jobview/JobStatusItem.h
|
||||||
|
jobview/PipelineStatusItem.h
|
||||||
|
|
||||||
transferview.h
|
transferview.h
|
||||||
PipelineStatusView.h
|
|
||||||
tomahawktrayicon.h
|
tomahawktrayicon.h
|
||||||
audiocontrols.h
|
audiocontrols.h
|
||||||
settingsdialog.h
|
settingsdialog.h
|
||||||
|
@@ -1,6 +1,7 @@
|
|||||||
/* === This file is part of Tomahawk Player - <http://tomahawk-player.org> ===
|
/* === This file is part of Tomahawk Player - <http://tomahawk-player.org> ===
|
||||||
*
|
*
|
||||||
* Copyright 2010-2011, Christian Muehlhaeuser <muesli@tomahawk-player.org>
|
* Copyright 2010-2011, Christian Muehlhaeuser <muesli@tomahawk-player.org>
|
||||||
|
* Copyright 2011, Leo Franchi <lfranchi@kde.org>
|
||||||
*
|
*
|
||||||
* Tomahawk is free software: you can redistribute it and/or modify
|
* Tomahawk is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
@@ -16,7 +17,7 @@
|
|||||||
* along with Tomahawk. If not, see <http://www.gnu.org/licenses/>.
|
* along with Tomahawk. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "PipelineStatusView.h"
|
#include "JobStatusView.h"
|
||||||
|
|
||||||
#include <QHeaderView>
|
#include <QHeaderView>
|
||||||
#include <QVBoxLayout>
|
#include <QVBoxLayout>
|
||||||
@@ -28,7 +29,7 @@
|
|||||||
using namespace Tomahawk;
|
using namespace Tomahawk;
|
||||||
|
|
||||||
|
|
||||||
PipelineStatusView::PipelineStatusView( AnimatedSplitter* parent )
|
JobStatusView::JobStatusView( AnimatedSplitter* parent )
|
||||||
: AnimatedWidget( parent )
|
: AnimatedWidget( parent )
|
||||||
, m_parent( parent )
|
, m_parent( parent )
|
||||||
{
|
{
|
||||||
@@ -76,7 +77,7 @@ PipelineStatusView::PipelineStatusView( AnimatedSplitter* parent )
|
|||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
PipelineStatusView::onPipelineUpdate( const query_ptr& query )
|
JobStatusView::onPipelineUpdate( const query_ptr& query )
|
||||||
{
|
{
|
||||||
QTreeWidgetItem* ti = m_tree->invisibleRootItem()->child( 0 );
|
QTreeWidgetItem* ti = m_tree->invisibleRootItem()->child( 0 );
|
||||||
|
|
||||||
@@ -100,7 +101,7 @@ PipelineStatusView::onPipelineUpdate( const query_ptr& query )
|
|||||||
|
|
||||||
|
|
||||||
QSize
|
QSize
|
||||||
PipelineStatusView::sizeHint() const
|
JobStatusView::sizeHint() const
|
||||||
{
|
{
|
||||||
unsigned int y = 0;
|
unsigned int y = 0;
|
||||||
y += m_tree->header()->height();
|
y += m_tree->header()->height();
|
||||||
|
@@ -1,6 +1,7 @@
|
|||||||
/* === This file is part of Tomahawk Player - <http://tomahawk-player.org> ===
|
/* === This file is part of Tomahawk Player - <http://tomahawk-player.org> ===
|
||||||
*
|
*
|
||||||
* Copyright 2010-2011, Christian Muehlhaeuser <muesli@tomahawk-player.org>
|
* Copyright 2010-2011, Christian Muehlhaeuser <muesli@tomahawk-player.org>
|
||||||
|
* Copyright 2011, Leo Franchi <lfranchi@kde.org>
|
||||||
*
|
*
|
||||||
* Tomahawk is free software: you can redistribute it and/or modify
|
* Tomahawk is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
@@ -16,8 +17,8 @@
|
|||||||
* along with Tomahawk. If not, see <http://www.gnu.org/licenses/>.
|
* along with Tomahawk. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef PIPELINESTATUSVIEW_H
|
#ifndef JOBSTATUSVIEW_H
|
||||||
#define PIPELINESTATUSVIEW_H
|
#define JOBSTATUSVIEW_H
|
||||||
|
|
||||||
#include <QTreeWidget>
|
#include <QTreeWidget>
|
||||||
|
|
||||||
@@ -27,13 +28,13 @@
|
|||||||
|
|
||||||
class StreamConnection;
|
class StreamConnection;
|
||||||
|
|
||||||
class PipelineStatusView : public AnimatedWidget
|
class JobStatusView : public AnimatedWidget
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit PipelineStatusView( AnimatedSplitter* parent );
|
explicit JobStatusView( AnimatedSplitter* parent );
|
||||||
virtual ~PipelineStatusView()
|
virtual ~JobStatusView()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -43,8 +44,8 @@ private slots:
|
|||||||
void onPipelineUpdate( const Tomahawk::query_ptr& query = Tomahawk::query_ptr() );
|
void onPipelineUpdate( const Tomahawk::query_ptr& query = Tomahawk::query_ptr() );
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QTreeWidget* m_tree;
|
QTreeView* m_tree;
|
||||||
AnimatedSplitter* m_parent;
|
AnimatedSplitter* m_parent;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // TRANSFERVIEW_H
|
#endif // JOBSTATUSVIEW_H
|
||||||
|
82
src/jobview/JobStatusDelegate.cpp
Normal file
82
src/jobview/JobStatusDelegate.cpp
Normal file
@@ -0,0 +1,82 @@
|
|||||||
|
/* === This file is part of Tomahawk Player - <http://tomahawk-player.org> ===
|
||||||
|
*
|
||||||
|
* Copyright 2010-2011, Leo Franchi <lfranchi@kde.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 "JobStatusDelegate.h"
|
||||||
|
|
||||||
|
#include <QPainter>
|
||||||
|
#include <QApplication>
|
||||||
|
#include "JobStatusModel.h"
|
||||||
|
|
||||||
|
#define ROW_HEIGHT 20
|
||||||
|
#define PADDING 2
|
||||||
|
JobStatusDelegate::JobStatusDelegate( QObject* parent )
|
||||||
|
: QStyledItemDelegate ( parent )
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
JobStatusDelegate::~JobStatusDelegate()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
JobStatusDelegate::paint( QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index ) const
|
||||||
|
{
|
||||||
|
QStyleOptionViewItemV4 opt = option;
|
||||||
|
initStyleOption( &opt, index );
|
||||||
|
QFontMetrics fm( opt.font );
|
||||||
|
|
||||||
|
QApplication::style()->drawPrimitive( QStyle::PE_PanelItemViewItem, &opt, painter, opt.widget );
|
||||||
|
|
||||||
|
painter->setRenderHint( QPainter::Antialiasing );
|
||||||
|
|
||||||
|
painter->drawLine( opt.rect.topLeft(), opt.rect.topRight() );
|
||||||
|
|
||||||
|
const QRect iconRect( PADDING, PADDING + opt.rect.y(), ROW_HEIGHT - 2*PADDING, ROW_HEIGHT - 2*PADDING );
|
||||||
|
QPixmap p = index.data( Qt::DecorationRole ).value< QPixmap >();
|
||||||
|
p = p.scaled( iconRect.size(), Qt::KeepAspectRatio, Qt::SmoothTransformation );
|
||||||
|
painter->drawPixmap( iconRect, p );
|
||||||
|
|
||||||
|
// draw right column if there is one
|
||||||
|
const QString rCol = index.data( JobStatusModel::RightColumnRole ).toString();
|
||||||
|
int rightEdge = opt.rect.right();
|
||||||
|
if ( !rCol.isEmpty() )
|
||||||
|
{
|
||||||
|
const int w = fm.width( rCol );
|
||||||
|
const QRect rRect( opt.rect.right() - PADDING - w, PADDING + opt.rect.y(), w, opt.rect.height() - 2*PADDING );
|
||||||
|
painter->drawText( rRect, Qt::AlignCenter, rCol );
|
||||||
|
|
||||||
|
rightEdge = rRect.left();
|
||||||
|
}
|
||||||
|
|
||||||
|
const int mainW = rightEdge - iconRect.right();
|
||||||
|
QString mainText = index.data( Qt::DisplayRole ).toString();
|
||||||
|
mainText = fm.elidedText( mainText, Qt::ElideRight, mainW );
|
||||||
|
painter->drawText( QRect( iconRect.right() + 2*PADDING, PADDING + opt.rect.y(), mainW, opt.rect.height() - 2*PADDING ), Qt::AlignLeft | Qt::AlignVCenter, mainText );
|
||||||
|
}
|
||||||
|
|
||||||
|
QSize
|
||||||
|
JobStatusDelegate::sizeHint( const QStyleOptionViewItem& option, const QModelIndex& index ) const
|
||||||
|
{
|
||||||
|
// return QStyledItemDelegate::sizeHint( option, index );
|
||||||
|
const int w = QStyledItemDelegate::sizeHint ( option, index ).width();
|
||||||
|
return QSize( w, ROW_HEIGHT );
|
||||||
|
}
|
||||||
|
|
38
src/jobview/JobStatusDelegate.h
Normal file
38
src/jobview/JobStatusDelegate.h
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
/* === This file is part of Tomahawk Player - <http://tomahawk-player.org> ===
|
||||||
|
*
|
||||||
|
* Copyright 2010-2011, Leo Franchi <lfranchi@kde.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 JOBSTATUSDELEGATE_H
|
||||||
|
#define JOBSTATUSDELEGATE_H
|
||||||
|
|
||||||
|
#include <QStyledItemDelegate>
|
||||||
|
|
||||||
|
class QPainter;
|
||||||
|
|
||||||
|
class JobStatusDelegate : public QStyledItemDelegate
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
explicit JobStatusDelegate ( QObject* parent = 0 );
|
||||||
|
virtual ~JobStatusDelegate();
|
||||||
|
|
||||||
|
virtual void paint( QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index ) const;
|
||||||
|
virtual QSize sizeHint( const QStyleOptionViewItem& option, const QModelIndex& index ) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // JOBSTATUSDELEGATE_H
|
65
src/jobview/JobStatusItem.h
Normal file
65
src/jobview/JobStatusItem.h
Normal file
@@ -0,0 +1,65 @@
|
|||||||
|
/* === This file is part of Tomahawk Player - <http://tomahawk-player.org> ===
|
||||||
|
*
|
||||||
|
* Copyright 2010-2011, Leo Franchi <lfranchi@kde.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 JOB_STATUS_ITEM
|
||||||
|
#define JOB_STATUS_ITEM
|
||||||
|
|
||||||
|
#include <QObject>
|
||||||
|
#include <QPixmap>
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Implement your own JobStatusItem if you want to add some sort of job status entry in the JobStatusView.
|
||||||
|
*
|
||||||
|
* Status items have 3 columns:
|
||||||
|
* ________________________________
|
||||||
|
* | icon | main col | right col|
|
||||||
|
* _________________________________
|
||||||
|
*
|
||||||
|
* The right column may be empty.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
class JobStatusItem : public QObject
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
explicit JobStatusItem() : QObject() {}
|
||||||
|
virtual ~JobStatusItem() {}
|
||||||
|
|
||||||
|
virtual QString type() const = 0;
|
||||||
|
|
||||||
|
/// Please cache this.
|
||||||
|
virtual QPixmap icon() const = 0;
|
||||||
|
virtual QString mainText() const = 0;
|
||||||
|
virtual QString rightColumnText() const = 0;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* If collapse item is true, sending multiple items of the same type will "collapse" them into one
|
||||||
|
* instead of showing each individually. In this case, the right column from the item will be ignored
|
||||||
|
* and a count will be shown instead.
|
||||||
|
*/
|
||||||
|
virtual bool collapseItem() const { return false; }
|
||||||
|
|
||||||
|
signals:
|
||||||
|
/// Ask for an update
|
||||||
|
void statusChanged();
|
||||||
|
|
||||||
|
/// Job is finished, will be deleted by the model
|
||||||
|
void finished();
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
146
src/jobview/JobStatusModel.cpp
Normal file
146
src/jobview/JobStatusModel.cpp
Normal file
@@ -0,0 +1,146 @@
|
|||||||
|
/* === This file is part of Tomahawk Player - <http://tomahawk-player.org> ===
|
||||||
|
*
|
||||||
|
* Copyright 2010-2011, Leo Franchi <lfranchi@kde.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 "JobStatusModel.h"
|
||||||
|
#include "JobStatusItem.h"
|
||||||
|
|
||||||
|
JobStatusModel::JobStatusModel( QObject* parent )
|
||||||
|
: QAbstractListModel ( parent )
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
JobStatusModel::~JobStatusModel()
|
||||||
|
{
|
||||||
|
qDeleteAll( m_items );
|
||||||
|
m_collapseCount.clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
JobStatusModel::addJob( JobStatusItem* item )
|
||||||
|
{
|
||||||
|
if ( item->collapseItem() )
|
||||||
|
{
|
||||||
|
if ( m_collapseCount.contains( item->type() ) )
|
||||||
|
{
|
||||||
|
m_collapseCount[ item->type() ].append( item );
|
||||||
|
return; // we're done, no new rows
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_collapseCount.insert( item->type(), QList< JobStatusItem* >() << item );
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
connect( item, SIGNAL( statusChanged() ), this, SLOT( itemUpdated() ) );
|
||||||
|
connect( item, SIGNAL( finished() ), this, SLOT( itemFinished() ) );
|
||||||
|
|
||||||
|
beginInsertRows( QModelIndex(), 0, 0 );
|
||||||
|
m_items.prepend( item );
|
||||||
|
endInsertRows();
|
||||||
|
}
|
||||||
|
|
||||||
|
Qt::ItemFlags
|
||||||
|
JobStatusModel::flags( const QModelIndex& index ) const
|
||||||
|
{
|
||||||
|
// Don't let the items be selectable
|
||||||
|
return Qt::ItemIsEnabled;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
QVariant
|
||||||
|
JobStatusModel::data( const QModelIndex& index, int role ) const
|
||||||
|
{
|
||||||
|
if ( !hasIndex( index.row(), index.column(), index.parent() ) )
|
||||||
|
return QVariant();
|
||||||
|
|
||||||
|
JobStatusItem* item = m_items[ index.row() ];
|
||||||
|
|
||||||
|
switch ( role )
|
||||||
|
{
|
||||||
|
case Qt::DecorationRole:
|
||||||
|
return item->icon();
|
||||||
|
case Qt::DisplayRole:
|
||||||
|
{
|
||||||
|
if ( m_collapseCount.contains( item->type() ) )
|
||||||
|
return m_collapseCount[ item->type() ].last()->mainText();
|
||||||
|
else
|
||||||
|
return item->mainText();
|
||||||
|
}
|
||||||
|
case RightColumnRole:
|
||||||
|
{
|
||||||
|
if ( m_collapseCount.contains( item->type() ) )
|
||||||
|
return m_collapseCount[ item->type() ].count();
|
||||||
|
else
|
||||||
|
return item->rightColumnText();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return QVariant();
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
JobStatusModel::rowCount( const QModelIndex& parent ) const
|
||||||
|
{
|
||||||
|
return m_items.count();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
JobStatusModel::itemFinished()
|
||||||
|
{
|
||||||
|
JobStatusItem* item = qobject_cast< JobStatusItem* >( sender() );
|
||||||
|
Q_ASSERT( item );
|
||||||
|
|
||||||
|
if ( m_collapseCount.contains( item->type() ) )
|
||||||
|
{
|
||||||
|
m_collapseCount[ item->type() ].removeAll( item );
|
||||||
|
if ( m_collapseCount[ item->type() ].isEmpty() )
|
||||||
|
m_collapseCount.remove( item->type() );
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// One less to count, but item is still there
|
||||||
|
const QModelIndex idx = index( m_items.indexOf( m_collapseCount[ item->type() ].first() ), 0, QModelIndex() );
|
||||||
|
emit dataChanged( idx, idx );
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Remove row completely
|
||||||
|
const int idx = m_items.indexOf( item );
|
||||||
|
beginRemoveRows( QModelIndex(), idx, idx );
|
||||||
|
m_items.removeAll( item );
|
||||||
|
endRemoveRows();
|
||||||
|
|
||||||
|
item->deleteLater();
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
JobStatusModel::itemUpdated()
|
||||||
|
{
|
||||||
|
JobStatusItem* item = qobject_cast< JobStatusItem* >( sender() );
|
||||||
|
Q_ASSERT( item );
|
||||||
|
|
||||||
|
if ( m_collapseCount.contains( item->type() ) )
|
||||||
|
item = m_collapseCount[ item->type() ].first();
|
||||||
|
|
||||||
|
const QModelIndex idx = index( m_items.indexOf( item ), 0, QModelIndex() );
|
||||||
|
emit dataChanged( idx, idx );
|
||||||
|
return;
|
||||||
|
}
|
54
src/jobview/JobStatusModel.h
Normal file
54
src/jobview/JobStatusModel.h
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
/* === This file is part of Tomahawk Player - <http://tomahawk-player.org> ===
|
||||||
|
*
|
||||||
|
* Copyright 2010-2011, Leo Franchi <lfranchi@kde.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 JOBSTATUSMODEL_H
|
||||||
|
#define JOBSTATUSMODEL_H
|
||||||
|
|
||||||
|
#include <QModelIndex>
|
||||||
|
|
||||||
|
class JobStatusItem;
|
||||||
|
class JobStatusModel : public QAbstractListModel
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
enum JobRoles {
|
||||||
|
// DecorationRole is icon
|
||||||
|
// DisplayRole is main col
|
||||||
|
RightColumnRole = Qt::UserRole + 1
|
||||||
|
};
|
||||||
|
|
||||||
|
explicit JobStatusModel( QObject* parent = 0 );
|
||||||
|
virtual ~JobStatusModel();
|
||||||
|
|
||||||
|
virtual Qt::ItemFlags flags( const QModelIndex& index ) const;
|
||||||
|
virtual QVariant data( const QModelIndex& index, int role = Qt::DisplayRole ) const;
|
||||||
|
virtual int rowCount( const QModelIndex& parent = QModelIndex() ) const;
|
||||||
|
|
||||||
|
/// Takes ownership of job
|
||||||
|
void addJob( JobStatusItem* item );
|
||||||
|
|
||||||
|
private slots:
|
||||||
|
void itemUpdated();
|
||||||
|
void itemFinished();
|
||||||
|
|
||||||
|
private:
|
||||||
|
QList< JobStatusItem* > m_items;
|
||||||
|
QHash< QString, QList< JobStatusItem* > > m_collapseCount;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // JOBSTATUSMODEL_H
|
110
src/jobview/JobStatusView.cpp
Normal file
110
src/jobview/JobStatusView.cpp
Normal file
@@ -0,0 +1,110 @@
|
|||||||
|
/* === This file is part of Tomahawk Player - <http://tomahawk-player.org> ===
|
||||||
|
*
|
||||||
|
* Copyright 2010-2011, Christian Muehlhaeuser <muesli@tomahawk-player.org>
|
||||||
|
* Copyright 2011, Leo Franchi <lfranchi@kde.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 "JobStatusView.h"
|
||||||
|
|
||||||
|
|
||||||
|
#include "libtomahawk/pipeline.h"
|
||||||
|
|
||||||
|
#include "JobStatusModel.h"
|
||||||
|
#include "JobStatusDelegate.h"
|
||||||
|
#include "PipelineStatusItem.h"
|
||||||
|
#include "utils/logger.h"
|
||||||
|
|
||||||
|
#include <QHeaderView>
|
||||||
|
#include <QVBoxLayout>
|
||||||
|
#include <QListView>
|
||||||
|
#include <QAbstractItemModel>
|
||||||
|
|
||||||
|
using namespace Tomahawk;
|
||||||
|
|
||||||
|
|
||||||
|
JobStatusView::JobStatusView( AnimatedSplitter* parent )
|
||||||
|
: AnimatedWidget( parent )
|
||||||
|
, m_parent( parent )
|
||||||
|
{
|
||||||
|
setHiddenSize( QSize( 0, 0 ) );
|
||||||
|
setLayout( new QVBoxLayout() );
|
||||||
|
m_view = new QListView( this );
|
||||||
|
|
||||||
|
layout()->setMargin( 0 );
|
||||||
|
layout()->addWidget( m_view );
|
||||||
|
|
||||||
|
m_view->setHorizontalScrollBarPolicy( Qt::ScrollBarAlwaysOff );
|
||||||
|
m_view->setVerticalScrollBarPolicy( Qt::ScrollBarAlwaysOff );
|
||||||
|
m_view->setSizePolicy( QSizePolicy::Preferred, QSizePolicy::Ignored );
|
||||||
|
|
||||||
|
m_view->setFrameShape( QFrame::NoFrame );
|
||||||
|
m_view->setAttribute( Qt::WA_MacShowFocusRect, 0 );
|
||||||
|
|
||||||
|
// new QTreeWidgetItem( m_tree );
|
||||||
|
m_view->setUniformItemSizes( true );
|
||||||
|
|
||||||
|
#ifndef Q_WS_WIN
|
||||||
|
QFont f = font();
|
||||||
|
f.setPointSize( f.pointSize() - 1 );
|
||||||
|
setFont( f );
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef Q_WS_MAC
|
||||||
|
f.setPointSize( f.pointSize() - 2 );
|
||||||
|
setFont( f );
|
||||||
|
#endif
|
||||||
|
|
||||||
|
hideWidget();
|
||||||
|
|
||||||
|
new PipelineStatusManager( this );
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
JobStatusView::setModel( QAbstractItemModel* m )
|
||||||
|
{
|
||||||
|
m_view->setModel( m );
|
||||||
|
m_view->setItemDelegate( new JobStatusDelegate( m_view ) );
|
||||||
|
|
||||||
|
connect( m_view->model(), SIGNAL( rowsInserted( QModelIndex, int, int ) ), this, SLOT( checkCount() ) );
|
||||||
|
connect( m_view->model(), SIGNAL( rowsRemoved( QModelIndex, int, int ) ), this, SLOT( checkCount() ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
JobStatusView::checkCount()
|
||||||
|
{
|
||||||
|
if ( m_view->model()->rowCount() == 0 && !isHidden() )
|
||||||
|
emit hideWidget();
|
||||||
|
else if ( isHidden() && m_view->model()->rowCount() > 0 )
|
||||||
|
emit showWidget();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
QSize
|
||||||
|
JobStatusView::sizeHint() const
|
||||||
|
{
|
||||||
|
unsigned int y = 0;
|
||||||
|
// y += m_tree->header()->height();
|
||||||
|
y += m_view->contentsMargins().top() + m_view->contentsMargins().bottom();
|
||||||
|
|
||||||
|
if ( m_view->model()->rowCount() )
|
||||||
|
{
|
||||||
|
unsigned int rowheight = m_view->sizeHintForRow( 0 );
|
||||||
|
y += rowheight * m_view->model()->rowCount() + 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
return QSize( 0, y );
|
||||||
|
}
|
53
src/jobview/JobStatusView.h
Normal file
53
src/jobview/JobStatusView.h
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
/* === This file is part of Tomahawk Player - <http://tomahawk-player.org> ===
|
||||||
|
*
|
||||||
|
* Copyright 2010-2011, Christian Muehlhaeuser <muesli@tomahawk-player.org>
|
||||||
|
* Copyright 2011, Leo Franchi <lfranchi@kde.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 JOBSTATUSVIEW_H
|
||||||
|
#define JOBSTATUSVIEW_H
|
||||||
|
|
||||||
|
#include "typedefs.h"
|
||||||
|
#include "widgets/animatedsplitter.h"
|
||||||
|
|
||||||
|
class QAbstractItemModel;
|
||||||
|
class QListView;
|
||||||
|
class JobStatusModel;
|
||||||
|
class StreamConnection;
|
||||||
|
|
||||||
|
class JobStatusView : public AnimatedWidget
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
explicit JobStatusView( AnimatedSplitter* parent );
|
||||||
|
virtual ~JobStatusView()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
QSize sizeHint() const;
|
||||||
|
|
||||||
|
void setModel( QAbstractItemModel* model );
|
||||||
|
|
||||||
|
private slots:
|
||||||
|
void checkCount();
|
||||||
|
|
||||||
|
private:
|
||||||
|
QListView* m_view;
|
||||||
|
AnimatedSplitter* m_parent;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // JOBSTATUSVIEW_H
|
81
src/jobview/PipelineStatusItem.cpp
Normal file
81
src/jobview/PipelineStatusItem.cpp
Normal file
@@ -0,0 +1,81 @@
|
|||||||
|
/* === This file is part of Tomahawk Player - <http://tomahawk-player.org> ===
|
||||||
|
*
|
||||||
|
* Copyright 2010-2011, Leo Franchi <lfranchi@kde.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 "PipelineStatusItem.h"
|
||||||
|
|
||||||
|
#include "utils/tomahawkutils.h"
|
||||||
|
#include "pipeline.h"
|
||||||
|
#include "tomahawkapp.h"
|
||||||
|
#include "JobStatusModel.h"
|
||||||
|
|
||||||
|
PipelineStatusItem::PipelineStatusItem()
|
||||||
|
: JobStatusItem()
|
||||||
|
{
|
||||||
|
m_icon.load( RESPATH"images/search-icon.png" );
|
||||||
|
|
||||||
|
connect( Tomahawk::Pipeline::instance(), SIGNAL( resolving( Tomahawk::query_ptr ) ), this, SLOT( resolving( Tomahawk::query_ptr ) ) );
|
||||||
|
connect( Tomahawk::Pipeline::instance(), SIGNAL( idle() ), this, SLOT( idle() ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
PipelineStatusItem::~PipelineStatusItem()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
QString
|
||||||
|
PipelineStatusItem::rightColumnText() const
|
||||||
|
{
|
||||||
|
return QString( "%1" ).arg( Tomahawk::Pipeline::instance()->activeQueryCount() + Tomahawk::Pipeline::instance()->pendingQueryCount() );
|
||||||
|
}
|
||||||
|
|
||||||
|
QString
|
||||||
|
PipelineStatusItem::mainText() const
|
||||||
|
{
|
||||||
|
return m_latestQuery;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
PipelineStatusItem::idle()
|
||||||
|
{
|
||||||
|
if ( !Tomahawk::Pipeline::instance()->activeQueryCount() )
|
||||||
|
emit finished();
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
PipelineStatusItem::resolving( const Tomahawk::query_ptr& query )
|
||||||
|
{
|
||||||
|
m_latestQuery = QString( "%1 - %2" ).arg( query->artist() ).arg( query->track() );
|
||||||
|
emit statusChanged();
|
||||||
|
}
|
||||||
|
|
||||||
|
PipelineStatusManager::PipelineStatusManager( QObject* parent )
|
||||||
|
: QObject(parent)
|
||||||
|
{
|
||||||
|
connect( Tomahawk::Pipeline::instance(), SIGNAL( resolving( Tomahawk::query_ptr ) ), this, SLOT( resolving( Tomahawk::query_ptr ) ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
PipelineStatusManager::resolving( const Tomahawk::query_ptr& p )
|
||||||
|
{
|
||||||
|
if ( m_curItem.isNull() )
|
||||||
|
{
|
||||||
|
// No current query item and we're resolving something, so show it
|
||||||
|
m_curItem = QWeakPointer< PipelineStatusItem >( new PipelineStatusItem );
|
||||||
|
APP->mainWindow()->jobsModel()->addJob( m_curItem.data() );
|
||||||
|
}
|
||||||
|
}
|
64
src/jobview/PipelineStatusItem.h
Normal file
64
src/jobview/PipelineStatusItem.h
Normal file
@@ -0,0 +1,64 @@
|
|||||||
|
/* === This file is part of Tomahawk Player - <http://tomahawk-player.org> ===
|
||||||
|
*
|
||||||
|
* Copyright 2010-2011, Leo Franchi <lfranchi@kde.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 PIPELINESTATUSITEM_H
|
||||||
|
#define PIPELINESTATUSITEM_H
|
||||||
|
|
||||||
|
#include "jobview/JobStatusItem.h"
|
||||||
|
#include "query.h"
|
||||||
|
|
||||||
|
class PipelineStatusItem : public JobStatusItem
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
explicit PipelineStatusItem();
|
||||||
|
virtual ~PipelineStatusItem();
|
||||||
|
|
||||||
|
virtual QString rightColumnText() const;
|
||||||
|
virtual QString mainText() const;
|
||||||
|
virtual QPixmap icon() const { return m_icon; }
|
||||||
|
|
||||||
|
virtual QString type() const { return "pipeline"; }
|
||||||
|
|
||||||
|
virtual bool collapseItem() const { return false; } // We can't collapse, since we use this meta-item instead of one per resolve
|
||||||
|
|
||||||
|
private slots:
|
||||||
|
void resolving( const Tomahawk::query_ptr& query );
|
||||||
|
void idle();
|
||||||
|
|
||||||
|
private:
|
||||||
|
QPixmap m_icon;
|
||||||
|
QString m_latestQuery;
|
||||||
|
};
|
||||||
|
|
||||||
|
class PipelineStatusManager : public QObject
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
explicit PipelineStatusManager( QObject* parent = 0 );
|
||||||
|
virtual ~PipelineStatusManager() {}
|
||||||
|
|
||||||
|
private slots:
|
||||||
|
void resolving( const Tomahawk::query_ptr& p );
|
||||||
|
|
||||||
|
private:
|
||||||
|
QWeakPointer<PipelineStatusItem> m_curItem;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#endif // PIPELINESTATUSITEM_H
|
@@ -29,6 +29,32 @@
|
|||||||
|
|
||||||
using namespace Tomahawk;
|
using namespace Tomahawk;
|
||||||
|
|
||||||
|
QPixmap SpotifyParser::s_pixmap = QPixmap();
|
||||||
|
|
||||||
|
SpotifyJobNotifier::SpotifyJobNotifier( const QString &type, const QPixmap& pixmap )
|
||||||
|
: JobStatusItem()
|
||||||
|
, m_type( type )
|
||||||
|
, m_icon( pixmap )
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
SpotifyJobNotifier::~SpotifyJobNotifier()
|
||||||
|
{}
|
||||||
|
|
||||||
|
QString
|
||||||
|
SpotifyJobNotifier::rightColumnText() const
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
QString
|
||||||
|
SpotifyJobNotifier::mainText() const
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
SpotifyParser::SpotifyParser( const QStringList& Urls, bool createNewPlaylist, QObject* parent )
|
SpotifyParser::SpotifyParser( const QStringList& Urls, bool createNewPlaylist, QObject* parent )
|
||||||
: QObject ( parent )
|
: QObject ( parent )
|
||||||
, m_single( false )
|
, m_single( false )
|
||||||
@@ -46,6 +72,9 @@ SpotifyParser::SpotifyParser( const QString& Url, bool createNewPlaylist, QObjec
|
|||||||
, m_trackMode( true )
|
, m_trackMode( true )
|
||||||
, m_createNewPlaylist( createNewPlaylist )
|
, m_createNewPlaylist( createNewPlaylist )
|
||||||
{
|
{
|
||||||
|
if ( s_pixmap.isNull() )
|
||||||
|
s_pixmap.load( RESPATH "images/spotify-logo.jpg" );
|
||||||
|
|
||||||
lookupUrl( Url );
|
lookupUrl( Url );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -22,6 +22,7 @@
|
|||||||
#include "dllmacro.h"
|
#include "dllmacro.h"
|
||||||
#include "typedefs.h"
|
#include "typedefs.h"
|
||||||
#include "query.h"
|
#include "query.h"
|
||||||
|
#include "jobview/JobStatusItem.h"
|
||||||
|
|
||||||
#include <QObject>
|
#include <QObject>
|
||||||
#include <QSet>
|
#include <QSet>
|
||||||
@@ -69,6 +70,29 @@ private:
|
|||||||
QSet< QNetworkReply* > m_queries;
|
QSet< QNetworkReply* > m_queries;
|
||||||
QString m_title, m_info, m_creator;
|
QString m_title, m_info, m_creator;
|
||||||
Tomahawk::playlist_ptr m_playlist;
|
Tomahawk::playlist_ptr m_playlist;
|
||||||
|
|
||||||
|
static QPixmap s_pixmap;
|
||||||
|
};
|
||||||
|
|
||||||
|
class DLLEXPORT SpotifyJobNotifier : public JobStatusItem
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
friend class SpotifyParser;
|
||||||
|
public:
|
||||||
|
SpotifyJobNotifier( const QString& type, const QPixmap& pixmap );
|
||||||
|
virtual ~SpotifyJobNotifier();
|
||||||
|
|
||||||
|
virtual QString rightColumnText() const;
|
||||||
|
virtual QString mainText() const;
|
||||||
|
virtual QPixmap icon() const { return m_icon; }
|
||||||
|
virtual QString type() const { return m_type; }
|
||||||
|
virtual bool collapseItem() const { return true; }
|
||||||
|
|
||||||
|
private:
|
||||||
|
void set
|
||||||
|
QPixmap m_icon;
|
||||||
|
QString m_type;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -57,7 +57,7 @@
|
|||||||
#include "diagnosticsdialog.h"
|
#include "diagnosticsdialog.h"
|
||||||
#include "tomahawksettings.h"
|
#include "tomahawksettings.h"
|
||||||
#include "sourcelist.h"
|
#include "sourcelist.h"
|
||||||
#include "PipelineStatusView.h"
|
#include "jobview/JobStatusView.h"
|
||||||
#include "transferview.h"
|
#include "transferview.h"
|
||||||
#include "tomahawktrayicon.h"
|
#include "tomahawktrayicon.h"
|
||||||
#include "scanmanager.h"
|
#include "scanmanager.h"
|
||||||
@@ -68,6 +68,7 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "utils/logger.h"
|
#include "utils/logger.h"
|
||||||
|
#include "jobview/JobStatusModel.h"
|
||||||
|
|
||||||
using namespace Tomahawk;
|
using namespace Tomahawk;
|
||||||
|
|
||||||
@@ -205,7 +206,9 @@ TomahawkWindow::setupSideBar()
|
|||||||
|
|
||||||
m_sourcetree = new SourceTreeView();
|
m_sourcetree = new SourceTreeView();
|
||||||
TransferView* transferView = new TransferView( m_sidebar );
|
TransferView* transferView = new TransferView( m_sidebar );
|
||||||
PipelineStatusView* pipelineView = new PipelineStatusView( m_sidebar );
|
JobStatusView* jobsView = new JobStatusView( m_sidebar );
|
||||||
|
m_jobsModel = new JobStatusModel( jobsView );
|
||||||
|
jobsView->setModel( m_jobsModel );
|
||||||
|
|
||||||
m_queueView = new QueueView( m_sidebar );
|
m_queueView = new QueueView( m_sidebar );
|
||||||
m_queueModel = new PlaylistModel( m_queueView );
|
m_queueModel = new PlaylistModel( m_queueView );
|
||||||
@@ -217,7 +220,7 @@ TomahawkWindow::setupSideBar()
|
|||||||
m_sidebar->addWidget( m_searchWidget );
|
m_sidebar->addWidget( m_searchWidget );
|
||||||
m_sidebar->addWidget( m_sourcetree );
|
m_sidebar->addWidget( m_sourcetree );
|
||||||
m_sidebar->addWidget( transferView );
|
m_sidebar->addWidget( transferView );
|
||||||
m_sidebar->addWidget( pipelineView );
|
m_sidebar->addWidget( jobsView );
|
||||||
m_sidebar->addWidget( m_queueView );
|
m_sidebar->addWidget( m_queueView );
|
||||||
|
|
||||||
m_sidebar->setGreedyWidget( 1 );
|
m_sidebar->setGreedyWidget( 1 );
|
||||||
|
@@ -28,6 +28,7 @@
|
|||||||
#include "result.h"
|
#include "result.h"
|
||||||
#include "utils/xspfloader.h"
|
#include "utils/xspfloader.h"
|
||||||
|
|
||||||
|
class JobStatusModel;
|
||||||
class QSearchField;
|
class QSearchField;
|
||||||
class SipPlugin;
|
class SipPlugin;
|
||||||
class SourceTreeView;
|
class SourceTreeView;
|
||||||
@@ -56,6 +57,7 @@ public:
|
|||||||
|
|
||||||
AudioControls* audioControls() { return m_audioControls; }
|
AudioControls* audioControls() { return m_audioControls; }
|
||||||
SourceTreeView* sourceTreeView() const { return m_sourcetree; }
|
SourceTreeView* sourceTreeView() const { return m_sourcetree; }
|
||||||
|
JobStatusModel* jobsModel() const { return m_jobsModel; }
|
||||||
|
|
||||||
void setWindowTitle( const QString& title );
|
void setWindowTitle( const QString& title );
|
||||||
|
|
||||||
@@ -130,6 +132,7 @@ private:
|
|||||||
PlaylistModel* m_queueModel;
|
PlaylistModel* m_queueModel;
|
||||||
QueueView* m_queueView;
|
QueueView* m_queueView;
|
||||||
AnimatedSplitter* m_sidebar;
|
AnimatedSplitter* m_sidebar;
|
||||||
|
JobStatusModel* m_jobsModel;
|
||||||
|
|
||||||
Tomahawk::result_ptr m_currentTrack;
|
Tomahawk::result_ptr m_currentTrack;
|
||||||
QString m_windowTitle;
|
QString m_windowTitle;
|
||||||
|
Reference in New Issue
Block a user