]> git.sesse.net Git - vlc/commitdiff
Edit mediainfo so you can edit meta-data even when playitem changes in
authorIlkka Ollakka <ileoo@videolan.org>
Sun, 19 Aug 2007 13:39:56 +0000 (13:39 +0000)
committerIlkka Ollakka <ileoo@videolan.org>
Sun, 19 Aug 2007 13:39:56 +0000 (13:39 +0000)
background. Also sets default to readonly, so user can't change meta if
he/she doesn't want to edit it. First try ;)

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

index 3b87947c3879b01db9002e2a934bfdfc900681b3..0a165bef03c44a6872876b2800b088095ef6fa0b 100644 (file)
@@ -126,6 +126,7 @@ MetaPanel::MetaPanel( QWidget *parent,
 
 #undef ADD_META
 #undef ADD_META_2
+    ReadOnly( true );
 }
 
 MetaPanel::~MetaPanel(){}
@@ -135,6 +136,7 @@ MetaPanel::~MetaPanel(){}
  **/
 void MetaPanel::saveMeta()
 {
+    ReadOnly( true );
     playlist_t *p_playlist;
     char psz[5];
 
@@ -183,6 +185,28 @@ void MetaPanel::saveMeta()
     pl_Release( p_playlist );
 }
 
+void MetaPanel::ReadOnly(bool readonly)
+{
+    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 );
+
+}
+
+void MetaPanel::editMeta()
+{
+    ReadOnly( false );
+}
+
 /**
  * Update all the MetaData and art on an "item-changed" event
  **/
index 7a95dfa9ec61364d5dc7da2ff5f7ad401adb5f89..01e3b0c655e223521a7742f01f30c3127cdbc864 100644 (file)
@@ -54,6 +54,8 @@ public:
     MetaPanel( QWidget *, intf_thread_t * );
     virtual ~MetaPanel();
     input_item_t *p_input;
+    void saveMeta();
+    void editMeta();
 private:
     intf_thread_t *p_intf;
     QLineEdit *uri_text;
@@ -71,11 +73,11 @@ private:
     QLineEdit *nowplaying_text;
     QLineEdit *publisher_text;
     QLabel *art_cover;
+    void ReadOnly( bool );
 
 public slots:
     void update( input_item_t * );
     void clear();
-    void saveMeta();
 signals:
     void uriSet( QString );
 };
index 6935b8f84a3e9ece1f73ac37bd8b1399d5622ae8..af65871d1b89cef7163c30ff41f2f28e5bdc0882 100644 (file)
@@ -67,7 +67,9 @@ 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" ) );
     closeButton->setDefault( true );
 
@@ -78,12 +80,14 @@ 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(), MP, saveMeta() );
+    CONNECT( saveMetaButton, clicked(), this, saveMeta() );
+    CONNECT( editMetaButton, clicked(), this, editMeta() );
 
     /* Let the MetaData Panel update the URI */
     CONNECT( MP, uriSet( QString ), uriLine, setText( QString ) );
@@ -112,6 +116,22 @@ void MediaInfoDialog::showTab( int i_tab = 0 )
     IT->setCurrentIndex( i_tab );
 }
 
+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,
         vlc_value_t oldval, vlc_value_t newval, void *param )
 {
@@ -152,6 +172,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;
     if( update_info )
         IP->update( p_item );
@@ -174,6 +195,7 @@ void MediaInfoDialog::clear()
 
 void MediaInfoDialog::close()
 {
+    in_edit = false;
     this->toggleVisible();
 
     if( mainInput == false ) {
index dbac68cf5781ab686849b7caa0822d66fb300ecb..3dc463113b619d6774a5cf263880661fa5fb2862 100644 (file)
@@ -62,13 +62,17 @@ private:
     int i_runs;
     bool mainInput;
     bool stats;
+    bool in_edit;
     InputStatsPanel *ISP;
     MetaPanel *MP;
     InfoPanel *IP;
     ExtraMetaPanel *EMP;
     QPushButton *saveMetaButton;
+    QPushButton *editMetaButton;
 public slots:
     void update();
+    void saveMeta();
+    void editMeta();
     void update( input_item_t *, bool, bool );
     void close();
     void clear();