]> git.sesse.net Git - vlc/blobdiff - modules/gui/qt4/util/customwidgets.hpp
Use VLC_VAR_CLASS when applicable.
[vlc] / modules / gui / qt4 / util / customwidgets.hpp
index 24bc32436dc968d9c283411431c37e432ffc4f94..3037efa6488421389fcda04deeeb40f183670411 100644 (file)
@@ -56,6 +56,23 @@ private:
     bool mDrawClickMsg;
 };
 
+class QToolButton;
+class SearchLineEdit : public QFrame
+{
+    Q_OBJECT
+public:
+    SearchLineEdit( QWidget *parent );
+
+private:
+    ClickLineEdit *searchLine;
+    QToolButton   *clearButton;
+
+private slots:
+    void updateText( const QString& );
+
+signals:
+    void textChanged( const QString& );
+};
 
 /*****************************************************************
  * Custom views
@@ -66,33 +83,51 @@ private:
 #include <QPoint>
 #include <QModelIndex>
 
+/**
+  Special QTreeView that can emit rightClicked()
+  */
 class QVLCTreeView : public QTreeView
 {
     Q_OBJECT;
 public:
-    QVLCTreeView( QWidget * parent ) : QTreeView( parent )
+    void mouseReleaseEvent( QMouseEvent* e )
     {
-    };
-    virtual ~QVLCTreeView()   {};
+        if( e->button() & Qt::RightButton )
+            return; /* Do NOT forward to QTreeView!! */
+        QTreeView::mouseReleaseEvent( e );
+    }
 
-    void mouseReleaseEvent(QMouseEvent* e )
+    void mousePressEvent( QMouseEvent* e )
     {
         if( e->button() & Qt::RightButton )
         {
-            emit rightClicked( indexAt( QPoint( e->x(), e->y() ) ),
-                               QCursor::pos() );
+            QModelIndex index = indexAt( QPoint( e->x(), e->y() ) );
+            if( index.isValid() )
+                setSelection( visualRect( index ), QItemSelectionModel::ClearAndSelect );
+            emit rightClicked( index, QCursor::pos() );
+            return;
         }
-        QTreeView::mouseReleaseEvent( e );
+        if( e->button() & Qt::LeftButton )
+        {
+            if( !indexAt( QPoint( e->x(), e->y() ) ).isValid() )
+                clearSelection();
+        }
+        QTreeView::mousePressEvent( e );
     }
+
 signals:
     void rightClicked( QModelIndex, QPoint  );
 };
 
+/* VLC Key/Wheel hotkeys interactions */
+
 class QKeyEvent;
 class QWheelEvent;
+
 int qtKeyModifiersToVLC( QInputEvent* e );
 int qtEventToVLCKey( QKeyEvent *e );
 int qtWheelEventToVLCKey( QWheelEvent *e );
 QString VLCKeyToString( int val );
 
 #endif
+