]> git.sesse.net Git - vlc/commitdiff
Qt: NetOpenPanel: add drop-down list
authorFrancois Cartegnie <fcvlcdev@free.fr>
Wed, 29 Sep 2010 15:47:02 +0000 (17:47 +0200)
committerFrancois Cartegnie <fcvlcdev@free.fr>
Wed, 29 Sep 2010 19:39:15 +0000 (21:39 +0200)
modules/gui/qt4/components/open_panels.cpp
modules/gui/qt4/components/open_panels.hpp
modules/gui/qt4/ui/open_net.ui

index 59fe5c0bbe1974c700590141645a60736b7a9266..ae75fc6b2e362fa19cab554387be2be37b2bb876 100644 (file)
@@ -539,21 +539,22 @@ NetOpenPanel::NetOpenPanel( QWidget *_parent, intf_thread_t *_p_intf ) :
     ui.setupUi( this );
 
     /* CONNECTs */
-    CONNECT( ui.urlText, textChanged( const QString& ), this, updateMRL());
+    CONNECT( ui.urlComboBox->lineEdit(), textChanged( const QString& ), this, updateMRL());
+    CONNECT( ui.urlComboBox, currentIndexChanged( const QString& ), this, updateMRL());
 
     if( var_InheritBool( p_intf, "qt-recentplay" ) )
     {
         mrlList = new QStringListModel(
                 getSettings()->value( "Open/netMRL" ).toStringList() );
-        QCompleter *completer = new QCompleter( mrlList, this );
-        ui.urlText->setCompleter( completer );
-
-        CONNECT( ui.urlText, editingFinished(), this, updateCompleter() );
+        ui.urlComboBox->setModel( mrlList );
+        ui.urlComboBox->clearEditText();
+        CONNECT( ui.urlComboBox->lineEdit(), editingFinished(), this, updateModel() );
     }
     else
         mrlList = NULL;
 
-    ui.urlText->setValidator( new UrlValidator( this ) );
+    ui.urlComboBox->setValidator( new UrlValidator( this ) );
+    ui.urlComboBox->setFocus();
 }
 
 NetOpenPanel::~NetOpenPanel()
@@ -601,7 +602,7 @@ void NetOpenPanel::updateMRL()
         { "udp",   "udp"   },
     };
 
-    QString url = ui.urlText->text();
+    QString url = ui.urlComboBox->lineEdit()->text();
     if( !url.contains( "://") )
         return; /* nothing to do this far */
 
@@ -618,12 +619,12 @@ void NetOpenPanel::updateMRL()
     emit mrlUpdated( qsl, "" );
 }
 
-void NetOpenPanel::updateCompleter()
+void NetOpenPanel::updateModel()
 {
     assert( mrlList );
     QStringList tempL = mrlList->stringList();
-    if( !tempL.contains( ui.urlText->text() ) )
-        tempL.append( ui.urlText->text() );
+    if( !tempL.contains( ui.urlComboBox->lineEdit()->text() ) )
+        tempL.append( ui.urlComboBox->lineEdit()->text() );
     mrlList->setStringList( tempL );
 }
 
index bcd09e2c4fc459d59300dac1336c83a2f10e96e3..bef2c8c6a3ea7259bf138fb5a3a5acd9e0d528ea 100644 (file)
@@ -146,7 +146,7 @@ private:
 public slots:
     virtual void updateMRL();
 private slots:
-    void updateCompleter();
+    void updateModel();
 };
 
 class UrlValidator : public QValidator
index 34b6d22dd74b95a2aaaf2cce27a004440aacc9e5..91e5319864572e25bc67d1bacde9b52b3db8f6b0 100644 (file)
         <property name="text">
          <string>Please enter a network URL:</string>
         </property>
-        <property name="buddy">
-         <cstring>urlText</cstring>
-        </property>
-       </widget>
-      </item>
-      <item row="1" column="0">
-       <widget class="QLineEdit" name="urlText">
-        <property name="toolTip">
-         <string>Enter the URL of the network stream here.</string>
-        </property>
        </widget>
       </item>
       <item row="2" column="0">
@@ -52,7 +42,7 @@
 p, li { white-space: pre-wrap; }
 p { margin: 0; -qt-block-indent: 0; text-indent: 0;}
 body { font-family: 'sans'; font-size: 8pt; font-weight: 400; }
-p > span { color: #838383; }
+p &gt; span { color: #838383; }
 &lt;/style&gt;&lt;/head&gt;&lt;body&gt;
 &lt;p&gt;&lt;span&gt;http://www.example.com/stream.avi&lt;/span&gt;&lt;/p&gt;
 &lt;p&gt;&lt;span&gt;rtp://@:1234&lt;/span&gt;&lt;/p&gt;
@@ -68,6 +58,16 @@ p > span { color: #838383; }
         </property>
        </widget>
       </item>
+      <item row="1" column="0">
+       <widget class="QComboBox" name="urlComboBox">
+        <property name="editable">
+         <bool>true</bool>
+        </property>
+        <property name="insertPolicy">
+         <enum>QComboBox::NoInsert</enum>
+        </property>
+       </widget>
+      </item>
      </layout>
     </widget>
    </item>
@@ -90,7 +90,7 @@ p > span { color: #838383; }
   </layout>
  </widget>
  <tabstops>
-  <tabstop>urlText</tabstop>
+  <tabstop>urlComboBox</tabstop>
  </tabstops>
  <resources/>
  <connections/>