]> git.sesse.net Git - vlc/commitdiff
Qt: split searchLineEdit in its own file
authorJean-Baptiste Kempf <jb@videolan.org>
Tue, 30 Nov 2010 19:57:06 +0000 (20:57 +0100)
committerJean-Baptiste Kempf <jb@videolan.org>
Tue, 30 Nov 2010 19:57:06 +0000 (20:57 +0100)
modules/gui/qt4/Modules.am
modules/gui/qt4/components/playlist/playlist.cpp
modules/gui/qt4/components/preferences_widgets.cpp
modules/gui/qt4/dialogs/openurl.cpp
modules/gui/qt4/dialogs/plugins.cpp
modules/gui/qt4/util/customwidgets.cpp
modules/gui/qt4/util/customwidgets.hpp
modules/gui/qt4/util/searchlineedit.cpp [new file with mode: 0644]
modules/gui/qt4/util/searchlineedit.hpp [new file with mode: 0644]

index 3d500fefab613a1f39bc15d5ac299325f0842086..fc7ba1e519cb09589783046d9cea36fc126bfd67 100644 (file)
@@ -66,6 +66,7 @@ nodist_SOURCES_qt4 = \
                components/sout/sout_widgets.moc.cpp \
                util/input_slider.moc.cpp \
                util/customwidgets.moc.cpp \
+               util/searchlineedit.moc.cpp \
                util/qvlcapp.moc.cpp \
                util/pictureflow.moc.cpp \
                resources.cpp \
@@ -274,6 +275,7 @@ SOURCES_qt4 =       qt4.cpp \
                components/sout/sout_widgets.cpp \
                util/input_slider.cpp \
                util/customwidgets.cpp \
+               util/searchlineedit.cpp \
                util/registry.cpp \
                util/qt_dirs.cpp \
                util/pictureflow.cpp
@@ -336,6 +338,7 @@ noinst_HEADERS = \
        components/sout/profiles.hpp \
        util/input_slider.hpp \
        util/customwidgets.hpp \
+       util/searchlineedit.hpp \
        util/qvlcframe.hpp \
        util/qvlcapp.hpp \
        util/qt_dirs.hpp \
index 9ec11a6ad99d5eb7104586443c49c76b48ed067a..e722226e23a1346c89fbb8fedb4efb47b7e66011 100644 (file)
@@ -32,6 +32,8 @@
 #include "components/playlist/playlist_model.hpp" /* PLModel */
 #include "components/interface_widgets.hpp"       /* CoverArtLabel */
 
+#include "util/searchlineedit.hpp"
+
 #include "input_manager.hpp"                      /* art signal */
 #include "main_interface.hpp"                     /* DropEvent TODO remove this*/
 
index 8a3a3d76c4acc7c2047e68678cb98d9a60750494..fee069c18d7e16e3daf1a85d9cdcf23696753517 100644 (file)
@@ -36,6 +36,7 @@
 
 #include "components/preferences_widgets.hpp"
 #include "util/customwidgets.hpp"
+#include "util/searchlineedit.hpp"
 #include "util/qt_dirs.hpp"
 #include <vlc_keys.h>
 #include <vlc_intf_strings.h>
index e9a549cb80d785cea3343d2b70a9feae2d08997e..30600264773fffa523c66ff06a61de0375927f32 100644 (file)
@@ -26,7 +26,7 @@
 #endif
 
 #include "dialogs/openurl.hpp"
-#include "util/customwidgets.hpp"
+#include "util/searchlineedit.hpp"
 
 #include <QPushButton>
 #include <QDialogButtonBox>
index 07f08eac8981e0a0a4638ef71e3c391d2fcb18f5..96c944773226e9488d131267d34f4826edc43f5d 100644 (file)
@@ -28,7 +28,7 @@
 
 #include "plugins.hpp"
 
-#include "util/customwidgets.hpp"
+#include "util/searchlineedit.hpp"
 #include "extensions_manager.hpp"
 
 #include <assert.h>
index 1a0abbb3fe2afe31a6acc3a919c5dcd388d390b1..58c1df2d8e188a2c9ccaaf418c13b7741c0cc2be 100644 (file)
 #include <vlc_keys.h>
 #include <wctype.h> /* twolower() */
 
-ClickLineEdit::ClickLineEdit( const QString &msg, QWidget *parent) : QLineEdit( parent )
-{
-    mDrawClickMsg = true;
-    setClickMessage( msg );
-}
-
-void ClickLineEdit::setClickMessage( const QString &msg )
-{
-    mClickMessage = msg;
-    repaint();
-}
-
-
-void ClickLineEdit::setText( const QString &txt )
-{
-    mDrawClickMsg = txt.isEmpty();
-    repaint();
-    QLineEdit::setText( txt );
-}
-
-void ClickLineEdit::paintEvent( QPaintEvent *pe )
-{
-    QLineEdit::paintEvent( pe );
-    if ( mDrawClickMsg == true && !hasFocus() ) {
-        QPainter p( this );
-        QPen tmp = p.pen();
-        p.setPen( palette().color( QPalette::Disabled, QPalette::Text ) );
-        QRect cr = contentsRect();
-        // Add two pixel margin on the left side
-        cr.setLeft( cr.left() + 3 );
-        p.drawText( cr, Qt::AlignLeft | Qt::AlignVCenter, mClickMessage );
-        p.setPen( tmp );
-        p.end();
-    }
-}
-
-void ClickLineEdit::dropEvent( QDropEvent *ev )
-{
-    mDrawClickMsg = false;
-    QLineEdit::dropEvent( ev );
-}
-
-void ClickLineEdit::focusInEvent( QFocusEvent *ev )
-{
-    if ( mDrawClickMsg == true ) {
-        mDrawClickMsg = false;
-        repaint();
-    }
-    QLineEdit::focusInEvent( ev );
-}
-
-void ClickLineEdit::focusOutEvent( QFocusEvent *ev )
-{
-    if ( text().isEmpty() ) {
-        mDrawClickMsg = true;
-        repaint();
-    }
-    QLineEdit::focusOutEvent( ev );
-}
-
 QVLCFramelessButton::QVLCFramelessButton( QWidget *parent )
   : QPushButton( parent )
 {
@@ -122,102 +62,6 @@ QSize QVLCFramelessButton::sizeHint() const
     return iconSize();
 }
 
-SearchLineEdit::SearchLineEdit( QWidget *parent ) : QLineEdit( parent )
-{
-    clearButton = new QVLCFramelessButton( this );
-    clearButton->setIcon( QIcon( ":/toolbar/clear" ) );
-    clearButton->setIconSize( QSize( 16, 16 ) );
-    clearButton->setCursor( Qt::ArrowCursor );
-    clearButton->setToolTip( qfu(vlc_pgettext("Tooltip|Clear", "Clear")) );
-    clearButton->hide();
-
-    CONNECT( clearButton, clicked(), this, clear() );
-
-    int frameWidth = style()->pixelMetric( QStyle::PM_DefaultFrameWidth, 0, this );
-
-    QFontMetrics metrics( font() );
-    QString styleSheet = QString( "min-height: %1px; "
-                                  "padding-top: 1px; "
-                                  "padding-bottom: 1px; "
-                                  "padding-right: %2px;" )
-                                  .arg( metrics.height() + ( 2 * frameWidth ) )
-                                  .arg( clearButton->sizeHint().width() + 1 );
-    setStyleSheet( styleSheet );
-
-    setMessageVisible( true );
-
-    CONNECT( this, textEdited( const QString& ),
-             this, updateText( const QString& ) );
-
-    CONNECT( this, editingFinished(),
-             this, searchEditingFinished() );
-
-}
-
-void SearchLineEdit::clear()
-{
-    setText( QString() );
-    clearButton->hide();
-    setMessageVisible( true );
-}
-
-void SearchLineEdit::setMessageVisible( bool on )
-{
-    message = on;
-    repaint();
-    return;
-}
-
-void SearchLineEdit::updateText( const QString& text )
-{
-    clearButton->setVisible( !text.isEmpty() );
-}
-
-void SearchLineEdit::resizeEvent ( QResizeEvent * event )
-{
-  QLineEdit::resizeEvent( event );
-  int frameWidth = style()->pixelMetric(QStyle::PM_DefaultFrameWidth,0,this);
-  clearButton->resize( clearButton->sizeHint().width(), height() );
-  clearButton->move( width() - clearButton->width() - frameWidth, 0 );
-}
-
-void SearchLineEdit::focusInEvent( QFocusEvent *event )
-{
-  if( message )
-  {
-      setMessageVisible( false );
-  }
-  QLineEdit::focusInEvent( event );
-}
-
-void SearchLineEdit::focusOutEvent( QFocusEvent *event )
-{
-  if( text().isEmpty() )
-  {
-      setMessageVisible( true );
-  }
-  QLineEdit::focusOutEvent( event );
-}
-
-void SearchLineEdit::paintEvent( QPaintEvent *event )
-{
-  QLineEdit::paintEvent( event );
-  if( !message ) return;
-  QStyleOption option;
-  option.initFrom( this );
-  QRect rect = style()->subElementRect( QStyle::SE_LineEditContents, &option, this )
-                  .adjusted( 3, 0, clearButton->width() + 1, 0 );
-  QPainter painter( this );
-  painter.setPen( palette().color( QPalette::Disabled, QPalette::Text ) );
-  painter.drawText( rect, Qt::AlignLeft | Qt::AlignVCenter, qtr( I_PL_FILTER ) );
-}
-
-void SearchLineEdit::searchEditingFinished()
-{
-    emit searchDelayedChanged( text() );
-}
-
-
 QVLCElidingLabel::QVLCElidingLabel( const QString &s, Qt::TextElideMode mode, QWidget * parent )
   : elideMode( mode ), QLabel( s, parent )
 { }
index ddd3711e71a4a1c46a0cc8b666e9d644cddc4e4b..79d8ec44f8981141a3f08bda1013aeee2f250c13 100644 (file)
 #include <QStackedWidget>
 #include <QSpinBox>
 
-/**
-  This class provides a QLineEdit which contains a greyed-out hinting
-  text as long as the user didn't enter any text
-
-  @short LineEdit with customizable "Click here" text
-  @author Daniel Molkentin
-*/
-class ClickLineEdit : public QLineEdit
-{
-    Q_OBJECT
-    Q_PROPERTY( QString clickMessage READ clickMessage WRITE setClickMessage )
-public:
-    ClickLineEdit( const QString &msg, QWidget *parent );
-    void setClickMessage( const QString &msg );
-    const QString& clickMessage() const { return mClickMessage; }
-    virtual void setText( const QString& txt );
-protected:
-    virtual void paintEvent( QPaintEvent *e );
-    virtual void dropEvent( QDropEvent *ev );
-    virtual void focusInEvent( QFocusEvent *ev );
-    virtual void focusOutEvent( QFocusEvent *ev );
-private:
-    QString mClickMessage;
-    bool mDrawClickMsg;
-};
-
 class QVLCFramelessButton : public QPushButton
 {
     Q_OBJECT
@@ -69,31 +43,6 @@ protected:
     virtual void paintEvent( QPaintEvent * event );
 };
 
-class SearchLineEdit : public QLineEdit
-{
-    Q_OBJECT
-public:
-    SearchLineEdit( QWidget *parent = NULL );
-
-private:
-    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& );
-    void searchEditingFinished();
-
-signals:
-    void searchDelayedChanged( const QString& );
-};
 
 class QVLCElidingLabel : public QLabel
 {
diff --git a/modules/gui/qt4/util/searchlineedit.cpp b/modules/gui/qt4/util/searchlineedit.cpp
new file mode 100644 (file)
index 0000000..e46383b
--- /dev/null
@@ -0,0 +1,202 @@
+/*****************************************************************************
+ * customwidgets.cpp: Custom widgets
+ ****************************************************************************
+ * Copyright (C) 2006 the VideoLAN team
+ * Copyright (C) 2004 Daniel Molkentin <molkentin@kde.org>
+ * $Id$
+ *
+ * Authors: Clément Stenac <zorglub@videolan.org>
+ * The "ClickLineEdit" control is based on code by  Daniel Molkentin
+ * <molkentin@kde.org> for libkdepim
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+ *****************************************************************************/
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include "searchlineedit.hpp"
+#include "customwidgets.hpp"
+
+#include "qt4.hpp" /*needed for qtr and CONNECT, but not necessary */
+
+#include <QPainter>
+#include <QColorGroup>
+#include <QRect>
+#include <QKeyEvent>
+#include <QWheelEvent>
+#include <QHBoxLayout>
+#include <QStyle>
+#include <QStyleOption>
+#include <vlc_intf_strings.h>
+#include <vlc_keys.h>
+#include <wctype.h> /* twolower() */
+
+ClickLineEdit::ClickLineEdit( const QString &msg, QWidget *parent) : QLineEdit( parent )
+{
+    mDrawClickMsg = true;
+    setClickMessage( msg );
+}
+
+void ClickLineEdit::setClickMessage( const QString &msg )
+{
+    mClickMessage = msg;
+    repaint();
+}
+
+
+void ClickLineEdit::setText( const QString &txt )
+{
+    mDrawClickMsg = txt.isEmpty();
+    repaint();
+    QLineEdit::setText( txt );
+}
+
+void ClickLineEdit::paintEvent( QPaintEvent *pe )
+{
+    QLineEdit::paintEvent( pe );
+    if ( mDrawClickMsg == true && !hasFocus() ) {
+        QPainter p( this );
+        QPen tmp = p.pen();
+        p.setPen( palette().color( QPalette::Disabled, QPalette::Text ) );
+        QRect cr = contentsRect();
+        // Add two pixel margin on the left side
+        cr.setLeft( cr.left() + 3 );
+        p.drawText( cr, Qt::AlignLeft | Qt::AlignVCenter, mClickMessage );
+        p.setPen( tmp );
+        p.end();
+    }
+}
+
+void ClickLineEdit::dropEvent( QDropEvent *ev )
+{
+    mDrawClickMsg = false;
+    QLineEdit::dropEvent( ev );
+}
+
+void ClickLineEdit::focusInEvent( QFocusEvent *ev )
+{
+    if ( mDrawClickMsg == true ) {
+        mDrawClickMsg = false;
+        repaint();
+    }
+    QLineEdit::focusInEvent( ev );
+}
+
+void ClickLineEdit::focusOutEvent( QFocusEvent *ev )
+{
+    if ( text().isEmpty() ) {
+        mDrawClickMsg = true;
+        repaint();
+    }
+    QLineEdit::focusOutEvent( ev );
+}
+
+SearchLineEdit::SearchLineEdit( QWidget *parent ) : QLineEdit( parent )
+{
+    clearButton = new QVLCFramelessButton( this );
+    clearButton->setIcon( QIcon( ":/toolbar/clear" ) );
+    clearButton->setIconSize( QSize( 16, 16 ) );
+    clearButton->setCursor( Qt::ArrowCursor );
+    clearButton->setToolTip( qfu(vlc_pgettext("Tooltip|Clear", "Clear")) );
+    clearButton->hide();
+
+    CONNECT( clearButton, clicked(), this, clear() );
+
+    int frameWidth = style()->pixelMetric( QStyle::PM_DefaultFrameWidth, 0, this );
+
+    QFontMetrics metrics( font() );
+    QString styleSheet = QString( "min-height: %1px; "
+                                  "padding-top: 1px; "
+                                  "padding-bottom: 1px; "
+                                  "padding-right: %2px;" )
+                                  .arg( metrics.height() + ( 2 * frameWidth ) )
+                                  .arg( clearButton->sizeHint().width() + 1 );
+    setStyleSheet( styleSheet );
+
+    setMessageVisible( true );
+
+    CONNECT( this, textEdited( const QString& ),
+             this, updateText( const QString& ) );
+
+    CONNECT( this, editingFinished(),
+             this, searchEditingFinished() );
+
+}
+
+void SearchLineEdit::clear()
+{
+    setText( QString() );
+    clearButton->hide();
+    setMessageVisible( true );
+}
+
+void SearchLineEdit::setMessageVisible( bool on )
+{
+    message = on;
+    repaint();
+    return;
+}
+
+void SearchLineEdit::updateText( const QString& text )
+{
+    clearButton->setVisible( !text.isEmpty() );
+}
+
+void SearchLineEdit::resizeEvent ( QResizeEvent * event )
+{
+  QLineEdit::resizeEvent( event );
+  int frameWidth = style()->pixelMetric(QStyle::PM_DefaultFrameWidth,0,this);
+  clearButton->resize( clearButton->sizeHint().width(), height() );
+  clearButton->move( width() - clearButton->width() - frameWidth, 0 );
+}
+
+void SearchLineEdit::focusInEvent( QFocusEvent *event )
+{
+  if( message )
+  {
+      setMessageVisible( false );
+  }
+  QLineEdit::focusInEvent( event );
+}
+
+void SearchLineEdit::focusOutEvent( QFocusEvent *event )
+{
+  if( text().isEmpty() )
+  {
+      setMessageVisible( true );
+  }
+  QLineEdit::focusOutEvent( event );
+}
+
+void SearchLineEdit::paintEvent( QPaintEvent *event )
+{
+  QLineEdit::paintEvent( event );
+  if( !message ) return;
+  QStyleOption option;
+  option.initFrom( this );
+  QRect rect = style()->subElementRect( QStyle::SE_LineEditContents, &option, this )
+                  .adjusted( 3, 0, clearButton->width() + 1, 0 );
+  QPainter painter( this );
+  painter.setPen( palette().color( QPalette::Disabled, QPalette::Text ) );
+  painter.drawText( rect, Qt::AlignLeft | Qt::AlignVCenter, qtr( I_PL_FILTER ) );
+}
+
+void SearchLineEdit::searchEditingFinished()
+{
+    emit searchDelayedChanged( text() );
+}
+
diff --git a/modules/gui/qt4/util/searchlineedit.hpp b/modules/gui/qt4/util/searchlineedit.hpp
new file mode 100644 (file)
index 0000000..a824950
--- /dev/null
@@ -0,0 +1,90 @@
+/*****************************************************************************
+ * customwidgets.h: Custom widgets
+ ****************************************************************************
+ * Copyright (C) 2006 the VideoLAN team
+ * Copyright (C) 2004 Daniel Molkentin <molkentin@kde.org>
+ * $Id$
+ *
+ * Authors: Clément Stenac <zorglub@videolan.org>
+ * The "ClickLineEdit" control is based on code by  Daniel Molkentin
+ * <molkentin@kde.org> for libkdepim
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+ *****************************************************************************/
+
+#ifndef _SEARCHLINEEDIT_H_
+#define _SEARCHLINEEDIT_H_
+
+#include <QLineEdit>
+#include <QPushButton>
+#include <QLabel>
+#include <QStackedWidget>
+#include <QSpinBox>
+
+class QVLCFramelessButton;
+/**
+  This class provides a QLineEdit which contains a greyed-out hinting
+  text as long as the user didn't enter any text
+
+  @short LineEdit with customizable "Click here" text
+  @author Daniel Molkentin
+*/
+class ClickLineEdit : public QLineEdit
+{
+    Q_OBJECT
+    Q_PROPERTY( QString clickMessage READ clickMessage WRITE setClickMessage )
+public:
+    ClickLineEdit( const QString &msg, QWidget *parent );
+    void setClickMessage( const QString &msg );
+    const QString& clickMessage() const { return mClickMessage; }
+    virtual void setText( const QString& txt );
+protected:
+    virtual void paintEvent( QPaintEvent *e );
+    virtual void dropEvent( QDropEvent *ev );
+    virtual void focusInEvent( QFocusEvent *ev );
+    virtual void focusOutEvent( QFocusEvent *ev );
+private:
+    QString mClickMessage;
+    bool mDrawClickMsg;
+};
+
+class SearchLineEdit : public QLineEdit
+{
+    Q_OBJECT
+public:
+    SearchLineEdit( QWidget *parent = NULL );
+
+private:
+    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& );
+    void searchEditingFinished();
+
+signals:
+    void searchDelayedChanged( const QString& );
+};
+
+#endif
+