1
0
mirror of https://github.com/tomahawk-player/tomahawk.git synced 2025-08-17 19:37:09 +02:00

replace readwrite labels with summary widget for non local playlists

This commit is contained in:
Leo Franchi
2011-01-29 11:42:19 -05:00
parent db890a54c7
commit 92c9ab2495
6 changed files with 53 additions and 67 deletions

View File

@@ -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 );
if( m_isLocal )
summaryLayout->addWidget( m_summaryExpand ); 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

View File

@@ -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;

View File

@@ -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() ) );

View File

@@ -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;
}; };
}; };

View File

@@ -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,14 +43,11 @@ 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 = initButton();
m_minusButton->setIcon( QIcon( RESPATH "images/list-remove.png" ) ); m_minusButton->setIcon( QIcon( RESPATH "images/list-remove.png" ) );
connect( m_minusButton, SIGNAL( clicked( bool ) ), this, SIGNAL( removeControl() ) ); connect( m_minusButton, SIGNAL( clicked( bool ) ), this, SIGNAL( removeControl() ) );
@@ -64,25 +58,22 @@ DynamicControlWrapper::DynamicControlWrapper( const Tomahawk::dyncontrol_ptr& co
m_plusL->setMargin( 0 ); m_plusL->setMargin( 0 );
m_plusL->addWidget( m_minusButton ); m_plusL->addWidget( m_minusButton );
m_plusL->addWidget( createDummy( m_minusButton ) ); // :-( m_plusL->addWidget( createDummy( m_minusButton ) ); // :-(
}
connect( typeSelector, SIGNAL( activated( QString) ), SLOT( typeSelectorChanged( QString ) ) ); 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_layout->addLayout( m_plusL, m_row, 3, Qt::AlignCenter );
m_plusL->setCurrentIndex( 0 ); 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 ) {
int idx = typeSel->findText( type );
if( idx > -1 ) if( idx > -1 )
typeSel->setCurrentIndex( idx ); m_typeSelector->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();

View File

@@ -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;
}; };