customwidgets.hpp
上传用户:kjfoods
上传日期:2020-07-06
资源大小:29949k
文件大小:4k
源码类别:

midi

开发平台:

Unix_Linux

  1. /*****************************************************************************
  2.  * customwidgets.h: Custom widgets
  3.  ****************************************************************************
  4.  * Copyright (C) 2006 the VideoLAN team
  5.  * Copyright (C) 2004 Daniel Molkentin <molkentin@kde.org>
  6.  * $Id: 3037efa6488421389fcda04deeeb40f183670411 $
  7.  *
  8.  * Authors: Clément Stenac <zorglub@videolan.org>
  9.  * The "ClickLineEdit" control is based on code by  Daniel Molkentin
  10.  * <molkentin@kde.org> for libkdepim
  11.  *
  12.  * This program is free software; you can redistribute it and/or modify
  13.  * it under the terms of the GNU General Public License as published by
  14.  * the Free Software Foundation; either version 2 of the License, or
  15.  * (at your option) any later version.
  16.  *
  17.  * This program is distributed in the hope that it will be useful,
  18.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  19.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  20.  * GNU General Public License for more details.
  21.  *
  22.  * You should have received a copy of the GNU General Public License
  23.  * along with this program; if not, write to the Free Software
  24.  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
  25.  *****************************************************************************/
  26. #ifndef _CUSTOMWIDGETS_H_
  27. #define _CUSTOMWIDGETS_H_
  28. #include <QLineEdit>
  29. /**
  30.   This class provides a QLineEdit which contains a greyed-out hinting
  31.   text as long as the user didn't enter any text
  32.   @short LineEdit with customizable "Click here" text
  33.   @author Daniel Molkentin
  34. */
  35. class ClickLineEdit : public QLineEdit
  36. {
  37.     Q_OBJECT
  38.     Q_PROPERTY( QString clickMessage READ clickMessage WRITE setClickMessage )
  39. public:
  40.     ClickLineEdit( const QString &msg, QWidget *parent );
  41.     virtual ~ClickLineEdit() {};
  42.     void setClickMessage( const QString &msg );
  43.     QString clickMessage() const { return mClickMessage; }
  44.     virtual void setText( const QString& txt );
  45. protected:
  46.     virtual void paintEvent( QPaintEvent *e );
  47.     virtual void dropEvent( QDropEvent *ev );
  48.     virtual void focusInEvent( QFocusEvent *ev );
  49.     virtual void focusOutEvent( QFocusEvent *ev );
  50. private:
  51.     QString mClickMessage;
  52.     bool mDrawClickMsg;
  53. };
  54. class QToolButton;
  55. class SearchLineEdit : public QFrame
  56. {
  57.     Q_OBJECT
  58. public:
  59.     SearchLineEdit( QWidget *parent );
  60. private:
  61.     ClickLineEdit *searchLine;
  62.     QToolButton   *clearButton;
  63. private slots:
  64.     void updateText( const QString& );
  65. signals:
  66.     void textChanged( const QString& );
  67. };
  68. /*****************************************************************
  69.  * Custom views
  70.  *****************************************************************/
  71. #include <QMouseEvent>
  72. #include <QTreeView>
  73. #include <QCursor>
  74. #include <QPoint>
  75. #include <QModelIndex>
  76. /**
  77.   Special QTreeView that can emit rightClicked()
  78.   */
  79. class QVLCTreeView : public QTreeView
  80. {
  81.     Q_OBJECT;
  82. public:
  83.     void mouseReleaseEvent( QMouseEvent* e )
  84.     {
  85.         if( e->button() & Qt::RightButton )
  86.             return; /* Do NOT forward to QTreeView!! */
  87.         QTreeView::mouseReleaseEvent( e );
  88.     }
  89.     void mousePressEvent( QMouseEvent* e )
  90.     {
  91.         if( e->button() & Qt::RightButton )
  92.         {
  93.             QModelIndex index = indexAt( QPoint( e->x(), e->y() ) );
  94.             if( index.isValid() )
  95.                 setSelection( visualRect( index ), QItemSelectionModel::ClearAndSelect );
  96.             emit rightClicked( index, QCursor::pos() );
  97.             return;
  98.         }
  99.         if( e->button() & Qt::LeftButton )
  100.         {
  101.             if( !indexAt( QPoint( e->x(), e->y() ) ).isValid() )
  102.                 clearSelection();
  103.         }
  104.         QTreeView::mousePressEvent( e );
  105.     }
  106. signals:
  107.     void rightClicked( QModelIndex, QPoint  );
  108. };
  109. /* VLC Key/Wheel hotkeys interactions */
  110. class QKeyEvent;
  111. class QWheelEvent;
  112. int qtKeyModifiersToVLC( QInputEvent* e );
  113. int qtEventToVLCKey( QKeyEvent *e );
  114. int qtWheelEventToVLCKey( QWheelEvent *e );
  115. QString VLCKeyToString( int val );
  116. #endif