]> git.sesse.net Git - vlc/blobdiff - modules/gui/qt4/util/customwidgets.hpp
Merge branch 'master' into lpcm_encoder
[vlc] / modules / gui / qt4 / util / customwidgets.hpp
index 132c5fc30b45c4c4d9291e77c9cc23d84b22724a..e2338c6baa7eef8899bfc4e45dfc0063267acc0d 100644 (file)
 #define _CUSTOMWIDGETS_H_
 
 #include <QLineEdit>
+#include <QPushButton>
 #include <QLabel>
-#include <QIcon>
+#include <QStackedWidget>
+#include <QSpinBox>
 
 /**
   This class provides a QLineEdit which contains a greyed-out hinting
@@ -44,9 +46,8 @@ class ClickLineEdit : public QLineEdit
     Q_PROPERTY( QString clickMessage READ clickMessage WRITE setClickMessage )
 public:
     ClickLineEdit( const QString &msg, QWidget *parent );
-    virtual ~ClickLineEdit() {};
     void setClickMessage( const QString &msg );
-    QString clickMessage() const { return mClickMessage; }
+    const QString& clickMessage() const { return mClickMessage; }
     virtual void setText( const QString& txt );
 protected:
     virtual void paintEvent( QPaintEvent *e );
@@ -58,41 +59,68 @@ private:
     bool mDrawClickMsg;
 };
 
-class QToolButton;
-class SearchLineEdit : public QFrame
+class QVLCFramelessButton : public QPushButton
 {
     Q_OBJECT
 public:
-    SearchLineEdit( QWidget *parent );
+    QVLCFramelessButton( QWidget *parent = NULL );
+    QSize sizeHint() const;
+protected:
+    virtual void paintEvent( QPaintEvent * event );
+};
+
+class SearchLineEdit : public QLineEdit
+{
+    Q_OBJECT
+public:
+    SearchLineEdit( QWidget *parent = NULL );
 
 private:
-    ClickLineEdit *searchLine;
-    QToolButton   *clearButton;
+    void resizeEvent ( QResizeEvent * event );
+    void focusInEvent( QFocusEvent *event );
+    void focusOutEvent( QFocusEvent *event );
+    void paintEvent( QPaintEvent *event );
+    void setMessageVisible( bool on );
+    QVLCFramelessButton   *clearButton;
+    bool message;
+
+public slots:
+    void clear();
 
 private slots:
     void updateText( const QString& );
+};
 
-signals:
-    void textChanged( const QString& );
+class QVLCElidingLabel : public QLabel
+{
+public:
+    QVLCElidingLabel( const QString &s = QString(),
+                      Qt::TextElideMode mode = Qt::ElideRight,
+                      QWidget * parent = NULL );
+    void setElideMode( Qt::TextElideMode );
+private:
+    void paintEvent( QPaintEvent * event );
+    Qt::TextElideMode elideMode;
+};
+
+class QVLCStackedWidget : public QStackedWidget
+{
+public:
+    QVLCStackedWidget( QWidget *parent ) : QStackedWidget( parent ) { }
+    QSize minimumSizeHint () const
+    {
+        return currentWidget() ? currentWidget()->minimumSizeHint() : QSize();
+    }
 };
 
-class QVLCIconLabel : public QLabel
+class DebugLevelSpinBox : public QSpinBox
 {
     Q_OBJECT
 public:
-    QVLCIconLabel( const QIcon&, QWidget *parent = 0 );
-    void setIcon( const QIcon& );
-signals:
-    void clicked();
+    DebugLevelSpinBox( QWidget *parent ) : QSpinBox( parent ) { };
 protected:
-    virtual void enterEvent( QEvent * );
-    virtual void leaveEvent( QEvent * );
-    virtual void mouseReleaseEvent( QMouseEvent * );
-    virtual void resizeEvent( QResizeEvent * );
-private:
-    inline void updatePixmap( );
-    QIcon icon;
-    QIcon::Mode iconMode;
+    QString textFromValue( int ) const;
+    int mapTextToValue ( bool * );
 };
 
 /* VLC Key/Wheel hotkeys interactions */