mirror of
https://github.com/tomahawk-player/tomahawk.git
synced 2025-08-12 00:54:20 +02:00
don't change type and delete widgets unless we have to
fixes improper loading of input
This commit is contained in:
@@ -166,7 +166,7 @@ DynamicControlWidget::typeSelectorChanged( const QString& type, bool firstLoad )
|
|||||||
m_typeSelector->setLabel( type );
|
m_typeSelector->setLabel( type );
|
||||||
if( m_control->matchSelector() ) {
|
if( m_control->matchSelector() ) {
|
||||||
m_matchSelector->setWritableWidget( m_control->matchSelector() );
|
m_matchSelector->setWritableWidget( m_control->matchSelector() );
|
||||||
m_matchSelector->setLabel( m_control->match() );
|
m_matchSelector->setLabel( m_control->matchString() );
|
||||||
m_matchSelector->setWritable( m_isLocal );
|
m_matchSelector->setWritable( m_isLocal );
|
||||||
m_layout->insertWidget( 1, m_matchSelector, 0 );
|
m_layout->insertWidget( 1, m_matchSelector, 0 );
|
||||||
}
|
}
|
||||||
|
@@ -65,6 +65,9 @@ public:
|
|||||||
*/
|
*/
|
||||||
virtual QWidget* inputField() { Q_ASSERT( false ); return 0; }
|
virtual QWidget* inputField() { Q_ASSERT( false ); return 0; }
|
||||||
|
|
||||||
|
/// The user-readable match value, for showing in read-only playlists
|
||||||
|
virtual QString matchString() { Q_ASSERT( false ); return QString(); }
|
||||||
|
|
||||||
/// the serializable value of the match
|
/// the serializable value of the match
|
||||||
virtual QString match() const { Q_ASSERT( false ); return QString(); }
|
virtual QString match() const { Q_ASSERT( false ); return QString(); }
|
||||||
/// the serializable value of the input
|
/// the serializable value of the input
|
||||||
|
@@ -44,6 +44,7 @@ Tomahawk::EchonestControl::matchSelector()
|
|||||||
void
|
void
|
||||||
Tomahawk::EchonestControl::setSelectedType ( const QString& type )
|
Tomahawk::EchonestControl::setSelectedType ( const QString& type )
|
||||||
{
|
{
|
||||||
|
if( type != selectedType() ) {
|
||||||
if( !m_input.isNull() )
|
if( !m_input.isNull() )
|
||||||
delete m_input.data();
|
delete m_input.data();
|
||||||
if( !m_match.isNull() )
|
if( !m_match.isNull() )
|
||||||
@@ -51,6 +52,7 @@ Tomahawk::EchonestControl::setSelectedType ( const QString& type )
|
|||||||
|
|
||||||
Tomahawk::DynamicControl::setSelectedType ( type );
|
Tomahawk::DynamicControl::setSelectedType ( type );
|
||||||
updateWidgets();
|
updateWidgets();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Echonest::DynamicPlaylist::PlaylistParamData
|
Echonest::DynamicPlaylist::PlaylistParamData
|
||||||
@@ -65,10 +67,16 @@ QString Tomahawk::EchonestControl::input() const
|
|||||||
}
|
}
|
||||||
|
|
||||||
QString Tomahawk::EchonestControl::match() const
|
QString Tomahawk::EchonestControl::match() const
|
||||||
|
{
|
||||||
|
return m_matchData;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString Tomahawk::EchonestControl::matchString()
|
||||||
{
|
{
|
||||||
return m_matchString;
|
return m_matchString;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void Tomahawk::EchonestControl::setInput(const QString& input)
|
void Tomahawk::EchonestControl::setInput(const QString& input)
|
||||||
{
|
{
|
||||||
// TODO generate widgets
|
// TODO generate widgets
|
||||||
@@ -79,7 +87,7 @@ void Tomahawk::EchonestControl::setInput(const QString& input)
|
|||||||
void Tomahawk::EchonestControl::setMatch(const QString& match)
|
void Tomahawk::EchonestControl::setMatch(const QString& match)
|
||||||
{
|
{
|
||||||
// TODO generate widgets
|
// TODO generate widgets
|
||||||
m_matchString = match;
|
m_matchData = match;
|
||||||
updateWidgetsFromData();
|
updateWidgetsFromData();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -101,7 +109,7 @@ Tomahawk::EchonestControl::updateWidgets()
|
|||||||
|
|
||||||
match->addItem( "Limit To", Echonest::DynamicPlaylist::ArtistType );
|
match->addItem( "Limit To", Echonest::DynamicPlaylist::ArtistType );
|
||||||
match->addItem( "Similar To", Echonest::DynamicPlaylist::ArtistRadioType );
|
match->addItem( "Similar To", Echonest::DynamicPlaylist::ArtistRadioType );
|
||||||
m_matchString = match->itemText( 0 );
|
m_matchString = match->currentText();
|
||||||
|
|
||||||
input->setPlaceholderText( "Artist name" );
|
input->setPlaceholderText( "Artist name" );
|
||||||
input->setSizePolicy( QSizePolicy::Ignored, QSizePolicy::Fixed );
|
input->setSizePolicy( QSizePolicy::Ignored, QSizePolicy::Fixed );
|
||||||
@@ -127,7 +135,8 @@ Tomahawk::EchonestControl::updateData()
|
|||||||
if( selectedType() == "Artist" ) {
|
if( selectedType() == "Artist" ) {
|
||||||
QComboBox* combo = qobject_cast<QComboBox*>( m_match.data() );
|
QComboBox* combo = qobject_cast<QComboBox*>( m_match.data() );
|
||||||
if( combo ) {
|
if( combo ) {
|
||||||
m_matchString = combo->itemData( combo->currentIndex() ).toString();
|
m_matchString = combo->currentText();
|
||||||
|
m_matchData = combo->itemData( combo->currentIndex() ).toString();
|
||||||
}
|
}
|
||||||
QLineEdit* edit = qobject_cast<QLineEdit*>( m_input.data() );
|
QLineEdit* edit = qobject_cast<QLineEdit*>( m_input.data() );
|
||||||
if( edit && !edit->text().isEmpty() ) {
|
if( edit && !edit->text().isEmpty() ) {
|
||||||
@@ -137,13 +146,13 @@ Tomahawk::EchonestControl::updateData()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// fills in the current widget with the data from json or dbcmd (m_data.second and m_matchString)
|
// fills in the current widget with the data from json or dbcmd (m_data.second and m_matchData)
|
||||||
void Tomahawk::EchonestControl::updateWidgetsFromData()
|
void Tomahawk::EchonestControl::updateWidgetsFromData()
|
||||||
{
|
{
|
||||||
if( selectedType() == "Artist" ) {
|
if( selectedType() == "Artist" ) {
|
||||||
QComboBox* combo = qobject_cast<QComboBox*>( m_match.data() );
|
QComboBox* combo = qobject_cast<QComboBox*>( m_match.data() );
|
||||||
if( combo )
|
if( combo )
|
||||||
combo->setCurrentIndex( combo->findData( m_matchString ) );
|
combo->setCurrentIndex( combo->findData( m_matchData ) );
|
||||||
QLineEdit* edit = qobject_cast<QLineEdit*>( m_input.data() );
|
QLineEdit* edit = qobject_cast<QLineEdit*>( m_input.data() );
|
||||||
if( edit )
|
if( edit )
|
||||||
edit->setText( m_data.second.toString() );
|
edit->setText( m_data.second.toString() );
|
||||||
|
@@ -36,6 +36,7 @@ public:
|
|||||||
|
|
||||||
virtual QString input() const;
|
virtual QString input() const;
|
||||||
virtual QString match() const;
|
virtual QString match() const;
|
||||||
|
virtual QString matchString();
|
||||||
|
|
||||||
virtual void setInput(const QString& input);
|
virtual void setInput(const QString& input);
|
||||||
virtual void setMatch(const QString& match);
|
virtual void setMatch(const QString& match);
|
||||||
@@ -57,6 +58,7 @@ private:
|
|||||||
|
|
||||||
QWeakPointer< QWidget > m_input;
|
QWeakPointer< QWidget > m_input;
|
||||||
QWeakPointer< QWidget > m_match;
|
QWeakPointer< QWidget > m_match;
|
||||||
|
QString m_matchData;
|
||||||
QString m_matchString;
|
QString m_matchString;
|
||||||
|
|
||||||
Echonest::DynamicPlaylist::PlaylistParamData m_data;
|
Echonest::DynamicPlaylist::PlaylistParamData m_data;
|
||||||
|
Reference in New Issue
Block a user