mirror of
https://github.com/tomahawk-player/tomahawk.git
synced 2025-08-16 11:04:01 +02:00
replace readwrite labels with summary widget for non local playlists
This commit is contained in:
@@ -33,6 +33,7 @@ using namespace Tomahawk;
|
|||||||
|
|
||||||
CollapsibleControls::CollapsibleControls( QWidget* parent )
|
CollapsibleControls::CollapsibleControls( QWidget* parent )
|
||||||
: QWidget( parent )
|
: QWidget( parent )
|
||||||
|
, m_isLocal( true )
|
||||||
{
|
{
|
||||||
init();
|
init();
|
||||||
}
|
}
|
||||||
@@ -40,9 +41,10 @@ CollapsibleControls::CollapsibleControls( QWidget* parent )
|
|||||||
CollapsibleControls::CollapsibleControls( const dynplaylist_ptr& playlist, bool isLocal, QWidget* parent )
|
CollapsibleControls::CollapsibleControls( const dynplaylist_ptr& playlist, bool isLocal, QWidget* parent )
|
||||||
: QWidget( parent )
|
: QWidget( parent )
|
||||||
, m_dynplaylist( playlist )
|
, m_dynplaylist( playlist )
|
||||||
|
, m_isLocal( isLocal )
|
||||||
{
|
{
|
||||||
init();
|
init();
|
||||||
setControls( m_dynplaylist, isLocal );
|
setControls( m_dynplaylist, m_isLocal );
|
||||||
}
|
}
|
||||||
|
|
||||||
Tomahawk::CollapsibleControls::~CollapsibleControls()
|
Tomahawk::CollapsibleControls::~CollapsibleControls()
|
||||||
@@ -87,11 +89,16 @@ CollapsibleControls::init()
|
|||||||
m_summaryExpand->setToolButtonStyle( Qt::ToolButtonIconOnly );
|
m_summaryExpand->setToolButtonStyle( Qt::ToolButtonIconOnly );
|
||||||
m_summaryExpand->setAutoRaise( true );
|
m_summaryExpand->setAutoRaise( true );
|
||||||
m_summaryExpand->setContentsMargins( 0, 0, 0, 0 );
|
m_summaryExpand->setContentsMargins( 0, 0, 0, 0 );
|
||||||
summaryLayout->addWidget( m_summaryExpand );
|
if( m_isLocal )
|
||||||
|
summaryLayout->addWidget( m_summaryExpand );
|
||||||
m_layout->addWidget( m_summaryWidget );
|
m_layout->addWidget( m_summaryWidget );
|
||||||
connect( m_summaryExpand, SIGNAL( clicked( bool ) ), this, SLOT( toggleCollapse() ) );
|
connect( m_summaryExpand, SIGNAL( clicked( bool ) ), this, SLOT( toggleCollapse() ) );
|
||||||
|
|
||||||
m_layout->setCurrentIndex( 0 );
|
if( m_isLocal )
|
||||||
|
m_layout->setCurrentWidget( m_controls );
|
||||||
|
else
|
||||||
|
m_layout->setCurrentWidget( m_summary );
|
||||||
|
|
||||||
connect( m_controls, SIGNAL( controlChanged( Tomahawk::dyncontrol_ptr ) ), SIGNAL( controlChanged( Tomahawk::dyncontrol_ptr ) ) );
|
connect( m_controls, SIGNAL( controlChanged( Tomahawk::dyncontrol_ptr ) ), SIGNAL( controlChanged( Tomahawk::dyncontrol_ptr ) ) );
|
||||||
connect( m_controls, SIGNAL( controlsChanged() ), SIGNAL( controlsChanged() ) );
|
connect( m_controls, SIGNAL( controlsChanged() ), SIGNAL( controlsChanged() ) );
|
||||||
|
|
||||||
@@ -111,7 +118,8 @@ void
|
|||||||
CollapsibleControls::setControls( const dynplaylist_ptr& playlist, bool isLocal )
|
CollapsibleControls::setControls( const dynplaylist_ptr& playlist, bool isLocal )
|
||||||
{
|
{
|
||||||
m_dynplaylist = playlist;
|
m_dynplaylist = playlist;
|
||||||
m_controls->setControls( m_dynplaylist->generator(), m_dynplaylist->generator()->controls(), isLocal );
|
m_isLocal = isLocal;
|
||||||
|
m_controls->setControls( m_dynplaylist->generator(), m_dynplaylist->generator()->controls() );
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@@ -60,6 +60,7 @@ private:
|
|||||||
dynplaylist_ptr m_dynplaylist;
|
dynplaylist_ptr m_dynplaylist;
|
||||||
QStackedLayout* m_layout;
|
QStackedLayout* m_layout;
|
||||||
DynamicControlList* m_controls;
|
DynamicControlList* m_controls;
|
||||||
|
bool m_isLocal;
|
||||||
|
|
||||||
QWidget* m_summaryWidget;
|
QWidget* m_summaryWidget;
|
||||||
QLabel* m_summary;
|
QLabel* m_summary;
|
||||||
|
@@ -39,15 +39,14 @@ DynamicControlList::DynamicControlList( QWidget* parent )
|
|||||||
init();
|
init();
|
||||||
}
|
}
|
||||||
|
|
||||||
DynamicControlList::DynamicControlList( const geninterface_ptr& generator, const QList< dyncontrol_ptr >& controls, bool isLocal, QWidget* parent )
|
DynamicControlList::DynamicControlList( const geninterface_ptr& generator, const QList< dyncontrol_ptr >& controls, QWidget* parent )
|
||||||
: QWidget( parent )
|
: QWidget( parent )
|
||||||
, m_generator( generator )
|
, m_generator( generator )
|
||||||
, m_layout( new QGridLayout )
|
, m_layout( new QGridLayout )
|
||||||
, m_summaryWidget( 0 )
|
, m_summaryWidget( 0 )
|
||||||
, m_isLocal( isLocal )
|
|
||||||
{
|
{
|
||||||
init();
|
init();
|
||||||
setControls( generator, controls, m_isLocal );
|
setControls( generator, controls );
|
||||||
}
|
}
|
||||||
|
|
||||||
DynamicControlList::~DynamicControlList()
|
DynamicControlList::~DynamicControlList()
|
||||||
@@ -90,7 +89,7 @@ DynamicControlList::init()
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
DynamicControlList::setControls( const geninterface_ptr& generator, const QList< dyncontrol_ptr >& controls, bool isLocal )
|
DynamicControlList::setControls( const geninterface_ptr& generator, const QList< dyncontrol_ptr >& controls )
|
||||||
{
|
{
|
||||||
if( m_controls.size() == controls.size() && controls.size() > 0 ) { // check if we're setting the same controls we already have, and exit if we are
|
if( m_controls.size() == controls.size() && controls.size() > 0 ) { // check if we're setting the same controls we already have, and exit if we are
|
||||||
bool different = false;
|
bool different = false;
|
||||||
@@ -112,18 +111,17 @@ DynamicControlList::setControls( const geninterface_ptr& generator, const QList<
|
|||||||
|
|
||||||
m_layout->removeItem( m_collapseLayout );
|
m_layout->removeItem( m_collapseLayout );
|
||||||
|
|
||||||
m_isLocal = isLocal;
|
|
||||||
m_generator = generator;
|
m_generator = generator;
|
||||||
if( controls.isEmpty() ) {
|
if( controls.isEmpty() ) {
|
||||||
qDebug() << "CREATING DEFAULT CONTROL";
|
qDebug() << "CREATING DEFAULT CONTROL";
|
||||||
DynamicControlWrapper* ctrlW = new DynamicControlWrapper( generator->createControl(), m_layout, m_controls.size(), isLocal, this );
|
DynamicControlWrapper* ctrlW = new DynamicControlWrapper( generator->createControl(), m_layout, m_controls.size(), this );
|
||||||
connect( ctrlW, SIGNAL( removeControl() ), this, SLOT( removeControl() ) );
|
connect( ctrlW, SIGNAL( removeControl() ), this, SLOT( removeControl() ) );
|
||||||
connect( ctrlW, SIGNAL( changed() ), this, SLOT( controlChanged() ) );
|
connect( ctrlW, SIGNAL( changed() ), this, SLOT( controlChanged() ) );
|
||||||
m_controls << ctrlW;
|
m_controls << ctrlW;
|
||||||
} else
|
} else
|
||||||
{
|
{
|
||||||
foreach( const dyncontrol_ptr& control, controls ) {
|
foreach( const dyncontrol_ptr& control, controls ) {
|
||||||
DynamicControlWrapper* ctrlW = new DynamicControlWrapper( control, m_layout, m_controls.size(), isLocal, this );
|
DynamicControlWrapper* ctrlW = new DynamicControlWrapper( control, m_layout, m_controls.size(), this );
|
||||||
connect( ctrlW, SIGNAL( removeControl() ), this, SLOT( removeControl() ) );
|
connect( ctrlW, SIGNAL( removeControl() ), this, SLOT( removeControl() ) );
|
||||||
connect( ctrlW, SIGNAL( changed() ), this, SLOT( controlChanged() ) );
|
connect( ctrlW, SIGNAL( changed() ), this, SLOT( controlChanged() ) );
|
||||||
|
|
||||||
@@ -139,7 +137,7 @@ void DynamicControlList::addNewControl()
|
|||||||
m_layout->removeItem( m_collapseLayout );
|
m_layout->removeItem( m_collapseLayout );
|
||||||
|
|
||||||
dyncontrol_ptr control = m_generator->createControl();
|
dyncontrol_ptr control = m_generator->createControl();
|
||||||
m_controls.append( new DynamicControlWrapper( control, m_layout, m_controls.size(), m_isLocal, this ) );
|
m_controls.append( new DynamicControlWrapper( control, m_layout, m_controls.size(), this ) );
|
||||||
connect( m_controls.last(), SIGNAL( removeControl() ), this, SLOT( removeControl() ) );
|
connect( m_controls.last(), SIGNAL( removeControl() ), this, SLOT( removeControl() ) );
|
||||||
connect( m_controls.last(), SIGNAL( changed() ), this, SLOT( controlChanged() ) );
|
connect( m_controls.last(), SIGNAL( changed() ), this, SLOT( controlChanged() ) );
|
||||||
|
|
||||||
|
@@ -44,10 +44,10 @@ class DynamicControlList : public QWidget
|
|||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
DynamicControlList( QWidget* parent = 0 );
|
DynamicControlList( QWidget* parent = 0 );
|
||||||
explicit DynamicControlList( const geninterface_ptr& generator, const QList< dyncontrol_ptr >& controls, bool isLocal, QWidget* parent = 0 );
|
explicit DynamicControlList( const geninterface_ptr& generator, const QList< dyncontrol_ptr >& controls, QWidget* parent = 0 );
|
||||||
virtual ~DynamicControlList();
|
virtual ~DynamicControlList();
|
||||||
|
|
||||||
void setControls( const geninterface_ptr& generator, const QList< dyncontrol_ptr >& controls, bool isLocal );
|
void setControls( const geninterface_ptr& generator, const QList< dyncontrol_ptr >& controls );
|
||||||
QList< DynamicControlWrapper* > controls() const { return m_controls; }
|
QList< DynamicControlWrapper* > controls() const { return m_controls; }
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
@@ -73,7 +73,6 @@ private:
|
|||||||
QPushButton* m_collapse;
|
QPushButton* m_collapse;
|
||||||
QToolButton* m_addControl;
|
QToolButton* m_addControl;
|
||||||
|
|
||||||
bool m_isLocal;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
|
@@ -18,7 +18,6 @@
|
|||||||
|
|
||||||
#include "tomahawk/tomahawkapp.h"
|
#include "tomahawk/tomahawkapp.h"
|
||||||
#include "dynamic/DynamicControl.h"
|
#include "dynamic/DynamicControl.h"
|
||||||
#include "dynamic/widgets/ReadOrWriteWidget.h"
|
|
||||||
|
|
||||||
#include <QHBoxLayout>
|
#include <QHBoxLayout>
|
||||||
#include <QComboBox>
|
#include <QComboBox>
|
||||||
@@ -30,10 +29,8 @@
|
|||||||
|
|
||||||
using namespace Tomahawk;
|
using namespace Tomahawk;
|
||||||
|
|
||||||
DynamicControlWrapper::DynamicControlWrapper( const Tomahawk::dyncontrol_ptr& control, QGridLayout* layout, int row, bool isLocal, QWidget* parent )
|
DynamicControlWrapper::DynamicControlWrapper( const Tomahawk::dyncontrol_ptr& control, QGridLayout* layout, int row, QWidget* parent )
|
||||||
: QObject( parent )
|
: QObject( parent )
|
||||||
, m_isLocal( isLocal )
|
|
||||||
, m_mouseOver( false )
|
|
||||||
, m_parent( parent )
|
, m_parent( parent )
|
||||||
, m_row( row )
|
, m_row( row )
|
||||||
, m_minusButton( 0 )
|
, m_minusButton( 0 )
|
||||||
@@ -46,43 +43,37 @@ DynamicControlWrapper::DynamicControlWrapper( const Tomahawk::dyncontrol_ptr& co
|
|||||||
|
|
||||||
qDebug() << "CREATING DYNAMIC CONTROL WRAPPER WITH ROW:" << row << layout;
|
qDebug() << "CREATING DYNAMIC CONTROL WRAPPER WITH ROW:" << row << layout;
|
||||||
|
|
||||||
QComboBox* typeSelector = new QComboBox( parent );
|
m_typeSelector = new QComboBox( m_parent );
|
||||||
m_typeSelector = new ReadOrWriteWidget( typeSelector, m_isLocal, m_parent );
|
|
||||||
|
|
||||||
m_matchSelector = new ReadOrWriteWidget( control->matchSelector(), m_isLocal, m_parent );
|
m_matchSelector = control->matchSelector();
|
||||||
m_entryWidget = new ReadOrWriteWidget( control->inputField(), m_isLocal, m_parent );
|
m_entryWidget = control->inputField();
|
||||||
|
|
||||||
if( m_isLocal )
|
|
||||||
{
|
|
||||||
m_minusButton = initButton();
|
|
||||||
m_minusButton->setIcon( QIcon( RESPATH "images/list-remove.png" ) );
|
|
||||||
connect( m_minusButton, SIGNAL( clicked( bool ) ), this, SIGNAL( removeControl() ) );
|
|
||||||
|
|
||||||
|
|
||||||
m_plusL = new QStackedLayout();
|
|
||||||
m_plusL->setContentsMargins( 0, 0, 0, 0 );
|
|
||||||
m_plusL->setMargin( 0 );
|
|
||||||
m_plusL->addWidget( m_minusButton );
|
|
||||||
m_plusL->addWidget( createDummy( m_minusButton ) ); // :-(
|
|
||||||
}
|
|
||||||
|
|
||||||
connect( typeSelector, SIGNAL( activated( QString) ), SLOT( typeSelectorChanged( QString ) ) );
|
m_minusButton = initButton();
|
||||||
|
m_minusButton->setIcon( QIcon( RESPATH "images/list-remove.png" ) );
|
||||||
|
connect( m_minusButton, SIGNAL( clicked( bool ) ), this, SIGNAL( removeControl() ) );
|
||||||
|
|
||||||
|
|
||||||
|
m_plusL = new QStackedLayout();
|
||||||
|
m_plusL->setContentsMargins( 0, 0, 0, 0 );
|
||||||
|
m_plusL->setMargin( 0 );
|
||||||
|
m_plusL->addWidget( m_minusButton );
|
||||||
|
m_plusL->addWidget( createDummy( m_minusButton ) ); // :-(
|
||||||
|
|
||||||
|
connect( m_typeSelector, SIGNAL( activated( QString) ), SLOT( typeSelectorChanged( QString ) ) );
|
||||||
connect( m_control.data(), SIGNAL( changed() ), this, SIGNAL( changed() ) );
|
connect( m_control.data(), SIGNAL( changed() ), this, SIGNAL( changed() ) );
|
||||||
|
|
||||||
m_layout->addWidget( m_typeSelector, row, 0, Qt::AlignLeft );
|
m_layout->addWidget( m_typeSelector, row, 0, Qt::AlignLeft );
|
||||||
|
|
||||||
if( !control.isNull() ) {
|
if( !control.isNull() ) {
|
||||||
foreach( const QString& type, control->typeSelectors() )
|
foreach( const QString& type, control->typeSelectors() )
|
||||||
typeSelector->addItem( type );
|
m_typeSelector->addItem( type );
|
||||||
}
|
}
|
||||||
|
|
||||||
typeSelectorChanged( m_control.isNull() ? "" : m_control->selectedType(), true );
|
typeSelectorChanged( m_control.isNull() ? "" : m_control->selectedType(), true );
|
||||||
|
|
||||||
if( m_isLocal )
|
m_layout->addLayout( m_plusL, m_row, 3, Qt::AlignCenter );
|
||||||
{
|
m_plusL->setCurrentIndex( 0 );
|
||||||
m_layout->addLayout( m_plusL, m_row, 3, Qt::AlignCenter );
|
|
||||||
m_plusL->setCurrentIndex( 0 );
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -96,8 +87,6 @@ DynamicControlWrapper::~DynamicControlWrapper()
|
|||||||
m_control->matchSelector()->setParent( 0 );
|
m_control->matchSelector()->setParent( 0 );
|
||||||
|
|
||||||
delete m_typeSelector;
|
delete m_typeSelector;
|
||||||
delete m_matchSelector;
|
|
||||||
delete m_entryWidget;
|
|
||||||
delete m_minusButton;
|
delete m_minusButton;
|
||||||
delete m_plusL;
|
delete m_plusL;
|
||||||
}
|
}
|
||||||
@@ -150,27 +139,21 @@ DynamicControlWrapper::typeSelectorChanged( const QString& type, bool firstLoad
|
|||||||
if( m_control->selectedType() != type && !firstLoad )
|
if( m_control->selectedType() != type && !firstLoad )
|
||||||
m_control->setSelectedType( type );
|
m_control->setSelectedType( type );
|
||||||
|
|
||||||
m_typeSelector->setLabel( type );
|
|
||||||
|
|
||||||
QComboBox* typeSel = qobject_cast<QComboBox*>(m_typeSelector->writableWidget());
|
int idx = m_typeSelector->findText( type );
|
||||||
if( m_typeSelector->writable() && m_typeSelector->writableWidget() && typeSel ) {
|
if( idx > -1 )
|
||||||
int idx = typeSel->findText( type );
|
m_typeSelector->setCurrentIndex( idx );
|
||||||
if( idx > -1 )
|
|
||||||
typeSel->setCurrentIndex( idx );
|
|
||||||
}
|
|
||||||
|
|
||||||
if( m_control->matchSelector() ) {
|
if( m_control->matchSelector() ) {
|
||||||
m_matchSelector->setWritableWidget( m_control->matchSelector() );
|
m_matchSelector = m_control->matchSelector();
|
||||||
m_matchSelector->setLabel( m_control->matchString() );
|
|
||||||
m_matchSelector->setWritable( m_isLocal );
|
|
||||||
m_layout->addWidget( m_matchSelector, m_row, 1, Qt::AlignCenter );
|
m_layout->addWidget( m_matchSelector, m_row, 1, Qt::AlignCenter );
|
||||||
|
m_matchSelector->show();
|
||||||
}
|
}
|
||||||
if( m_control->inputField() ) {
|
if( m_control->inputField() ) {
|
||||||
m_entryWidget->setWritableWidget( m_control->inputField() );
|
m_entryWidget = m_control->inputField();
|
||||||
m_entryWidget->setLabel( m_control->input() );
|
|
||||||
m_entryWidget->setWritable( m_isLocal );
|
|
||||||
m_layout->addWidget( m_entryWidget, m_row, 2 );
|
m_layout->addWidget( m_entryWidget, m_row, 2 );
|
||||||
|
m_entryWidget->show();
|
||||||
}
|
}
|
||||||
|
|
||||||
emit changed();
|
emit changed();
|
||||||
|
@@ -22,7 +22,6 @@
|
|||||||
#include "typedefs.h"
|
#include "typedefs.h"
|
||||||
|
|
||||||
class QGridLayout;
|
class QGridLayout;
|
||||||
class ReadOrWriteWidget;
|
|
||||||
class QStackedLayout;
|
class QStackedLayout;
|
||||||
class QEvent;
|
class QEvent;
|
||||||
class QToolButton;
|
class QToolButton;
|
||||||
@@ -40,7 +39,7 @@ class DynamicControlWrapper : public QObject
|
|||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
explicit DynamicControlWrapper( const dyncontrol_ptr& control, QGridLayout* layout, int row, bool isLocal = false, QWidget* parent = 0 );
|
explicit DynamicControlWrapper( const dyncontrol_ptr& control, QGridLayout* layout, int row, QWidget* parent = 0 );
|
||||||
virtual ~DynamicControlWrapper();
|
virtual ~DynamicControlWrapper();
|
||||||
|
|
||||||
// virtual void enterEvent(QEvent* );
|
// virtual void enterEvent(QEvent* );
|
||||||
@@ -61,17 +60,15 @@ private:
|
|||||||
QToolButton* initButton();
|
QToolButton* initButton();
|
||||||
QWidget* createDummy( QWidget* fromW );
|
QWidget* createDummy( QWidget* fromW );
|
||||||
|
|
||||||
bool m_isLocal, m_mouseOver;
|
|
||||||
|
|
||||||
QWidget* m_parent;
|
QWidget* m_parent;
|
||||||
int m_row;
|
int m_row;
|
||||||
QStackedLayout* m_plusL;
|
QStackedLayout* m_plusL;
|
||||||
QToolButton* m_minusButton;
|
QToolButton* m_minusButton;
|
||||||
|
|
||||||
dyncontrol_ptr m_control;
|
dyncontrol_ptr m_control;
|
||||||
ReadOrWriteWidget* m_typeSelector;
|
QComboBox* m_typeSelector;
|
||||||
ReadOrWriteWidget* m_matchSelector;
|
QWidget* m_matchSelector;
|
||||||
ReadOrWriteWidget* m_entryWidget;
|
QWidget* m_entryWidget;
|
||||||
QGridLayout* m_layout;
|
QGridLayout* m_layout;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user