]> git.sesse.net Git - vlc/commitdiff
Second try, show save meta button if user changes any input field, also
authorIlkka Ollakka <ileoo@videolan.org>
Sun, 19 Aug 2007 14:35:31 +0000 (14:35 +0000)
committerIlkka Ollakka <ileoo@videolan.org>
Sun, 19 Aug 2007 14:35:31 +0000 (14:35 +0000)
then set in_edit=true so playlist changes doesn't change meta-data what
to edit.

modules/gui/qt4/components/infopanels.cpp
modules/gui/qt4/components/infopanels.hpp
modules/gui/qt4/dialogs/mediainfo.cpp

index 0a165bef03c44a6872876b2800b088095ef6fa0b..40c6e365dbc71a855828d3771080aa8d2d77b5b1 100644 (file)
@@ -126,7 +126,18 @@ MetaPanel::MetaPanel( QWidget *parent,
 
 #undef ADD_META
 #undef ADD_META_2
-    ReadOnly( true );
+
+
+    CONNECT( title_text, textEdited( QString ), this, editMeta( QString ) );
+    CONNECT( description_text, textEdited( QString ), this, editMeta( QString ) );
+    CONNECT( artist_text, textEdited( QString ), this, editMeta( QString ) );
+    CONNECT( collection_text, textEdited( QString ), this, editMeta( QString ) );
+    CONNECT( genre_text, textEdited( QString ), this, editMeta( QString ) );
+    CONNECT( description_text, textEdited( QString ), this, editMeta( QString ) );
+    CONNECT( date_text, valueChanged( QString ), this, editMeta( QString ) );
+    CONNECT( seqnum_text, valueChanged( QString ), this, editMeta( QString ) );
+    CONNECT( rating_text, valueChanged( QString ), this, editMeta( QString ) );
+    in_edit = false;
 }
 
 MetaPanel::~MetaPanel(){}
@@ -136,7 +147,6 @@ MetaPanel::~MetaPanel(){}
  **/
 void MetaPanel::saveMeta()
 {
-    ReadOnly( true );
     playlist_t *p_playlist;
     char psz[5];
 
@@ -183,28 +193,25 @@ void MetaPanel::saveMeta()
         module_Unneed( p_playlist, p_mod );
     PL_UNLOCK;
     pl_Release( p_playlist );
+    in_edit = false;
 }
 
-void MetaPanel::ReadOnly(bool readonly)
+void MetaPanel::editMeta( QString edit )
 {
-    title_text->setReadOnly( readonly );
-    artist_text->setReadOnly( readonly );
-    collection_text->setReadOnly( readonly );
-    genre_text->setReadOnly( readonly );
-    date_text->setReadOnly( readonly );
-    seqnum_text->setReadOnly( readonly );
-    rating_text->setReadOnly( readonly );
-    language_text->setReadOnly( readonly );
-    setting_text->setReadOnly( readonly );
-    copyright_text->setReadOnly( readonly );
-    publisher_text->setReadOnly( readonly );
-    description_text->setReadOnly( readonly );
+    in_edit = true;
+    emit editing();
+}
 
+void MetaPanel::setEdit( bool editing )
+{
+   in_edit = editing;
 }
 
-void MetaPanel::editMeta()
+void MetaPanel::setInput( input_item_t *input )
 {
-    ReadOnly( false );
+    if( in_edit ) return;
+
+    p_input = input;
 }
 
 /**
@@ -212,6 +219,7 @@ void MetaPanel::editMeta()
  **/
 void MetaPanel::update( input_item_t *p_item )
 {
+    if( in_edit ) return;
     char *psz_meta; 
 #define UPDATE_META( meta, widget ) {               \
     psz_meta = input_item_Get##meta( p_item );      \
index 01e3b0c655e223521a7742f01f30c3127cdbc864..acd43a386d48a8f96878b770b0423525b97597f3 100644 (file)
@@ -53,10 +53,11 @@ class MetaPanel: public QWidget
 public:
     MetaPanel( QWidget *, intf_thread_t * );
     virtual ~MetaPanel();
-    input_item_t *p_input;
     void saveMeta();
-    void editMeta();
+    void setInput( input_item_t * );
+    void setEdit( bool );
 private:
+    input_item_t *p_input;
     intf_thread_t *p_intf;
     QLineEdit *uri_text;
     QLineEdit *title_text;
@@ -73,13 +74,15 @@ private:
     QLineEdit *nowplaying_text;
     QLineEdit *publisher_text;
     QLabel *art_cover;
-    void ReadOnly( bool );
+    bool in_edit;
 
 public slots:
     void update( input_item_t * );
     void clear();
+    void editMeta( QString );
 signals:
     void uriSet( QString );
+    void editing();
 };
 
 class ExtraMetaPanel: public QWidget
index af65871d1b89cef7163c30ff41f2f28e5bdc0882..5649bd2bdd03f71c2e9af74f2ce751e460f09ddb 100644 (file)
@@ -67,7 +67,6 @@ MediaInfoDialog::MediaInfoDialog( intf_thread_t *_p_intf, bool _mainInput,
     QGridLayout *layout = new QGridLayout( this );
 
     /* FIXME GNOME/KDE ? */
-    editMetaButton = new QPushButton( qtr( "&Edit Metadata" ) );
     saveMetaButton = new QPushButton( qtr( "&Save Metadata" ) );
     saveMetaButton->hide();
     QPushButton *closeButton = new QPushButton( qtr( "&Close" ) );
@@ -80,17 +79,16 @@ MediaInfoDialog::MediaInfoDialog( intf_thread_t *_p_intf, bool _mainInput,
     layout->addWidget( uriLabel, 1, 0, 1, 1 );
     layout->addWidget( uriLine, 1, 1, 1, 7 );
     layout->addWidget( saveMetaButton, 2, 6 );
-    layout->addWidget( editMetaButton, 2, 6 );
     layout->addWidget( closeButton, 2, 7 );
 
     BUTTONACT( closeButton, close() );
 
     /* The tabs buttons are shown in the main dialog for space and cosmetics */
     CONNECT( saveMetaButton, clicked(), this, saveMeta() );
-    CONNECT( editMetaButton, clicked(), this, editMeta() );
 
     /* Let the MetaData Panel update the URI */
     CONNECT( MP, uriSet( QString ), uriLine, setText( QString ) );
+    CONNECT( MP, editing(), this, editMeta() );
 
     CONNECT( IT, currentChanged ( int ), this, updateButtons( int ) );
 
@@ -118,18 +116,13 @@ void MediaInfoDialog::showTab( int i_tab = 0 )
 
 void MediaInfoDialog::editMeta()
 {
-    in_edit = true;
-    editMetaButton->hide();
     saveMetaButton->show();
-    MP->editMeta();
 }
 
 void MediaInfoDialog::saveMeta()
 {
     MP->saveMeta();
-    editMetaButton->show();
     saveMetaButton->hide();
-    in_edit = false;
 }
 
 static int ItemChanged( vlc_object_t *p_this, const char *psz_var,
@@ -172,8 +165,7 @@ void MediaInfoDialog::update()
 void MediaInfoDialog::update( input_item_t *p_item, bool update_info,
                                                     bool update_meta )
 {
-    if( in_edit ) return;
-    MP->p_input = p_item;
+    MP->setInput( p_item );
     if( update_info )
         IP->update( p_item );
     if( update_meta )
@@ -195,12 +187,12 @@ void MediaInfoDialog::clear()
 
 void MediaInfoDialog::close()
 {
-    in_edit = false;
     this->toggleVisible();
 
     if( mainInput == false ) {
         deleteLater();
     }
+    MP->setEdit( false );
 }
 
 void MediaInfoDialog::updateButtons( int i_tab )