⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 preferences_widgets.hpp

📁 VLC Player Source Code
💻 HPP
字号:
/***************************************************************************** * preferences_widgets.hpp : Widgets for preferences panels **************************************************************************** * Copyright (C) 2006-2007 the VideoLAN team * $Id$ * * Authors: Clément Stenac <zorglub@videolan.org> *          Antoine Cellerier <dionoea@videolan.org> *          Jean-Baptiste Kempf <jb@videolan.org> * * 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 _PREFERENCESWIDGETS_H_#define _PREFERENCESWIDGETS_H_#ifdef HAVE_CONFIG_H# include "config.h"#endif#include <vlc_common.h>#include "qt4.hpp"#include <assert.h>#include <QWidget>#include <QCheckBox>#include <QComboBox>#include <QLineEdit>#include <QTreeWidget>#include <QSpinBox>#include <QLabel>#include <QDoubleSpinBox>#include <QPushButton>#include <QVector>#include <QDialog>class QTreeWidget;class QTreeWidgetItem;class QGroupBox;class QGridLayout;class QDialogButtonBox;class QVBoxLayout;class ConfigControl : public QObject{    Q_OBJECTpublic:    ConfigControl( vlc_object_t *_p_this, module_config_t *_p_conf,                   QWidget *p ) : p_this( _p_this ), p_item( _p_conf )    {        widget = new QWidget( p );    }    ConfigControl( vlc_object_t *_p_this, module_config_t *_p_conf ) :                            p_this (_p_this ), p_item( _p_conf )    {        widget = NULL;    }    virtual ~ConfigControl() {};    virtual int getType() = 0;    const char * getName() { return  p_item->psz_name; }    QWidget *getWidget() { assert( widget ); return widget; }    bool isAdvanced() { return p_item->b_advanced; }    virtual void hide() { getWidget()->hide(); };    virtual void show() { getWidget()->show(); };    static ConfigControl * createControl( vlc_object_t*,                                          module_config_t*,QWidget* );    static ConfigControl * createControl( vlc_object_t*,                                          module_config_t*,QWidget*,                                          QGridLayout *, int& );    void doApply( intf_thread_t *);protected:    vlc_object_t *p_this;    module_config_t *p_item;    QString _name;    QWidget *widget;    bool _advanced;#if 0/* You shouldn't use that now..*/signals:    void Updated();#endif};/******************************************************* * Integer-based controls *******************************************************/class VIntConfigControl : public ConfigControl{Q_OBJECTpublic:    VIntConfigControl( vlc_object_t *a, module_config_t *b, QWidget *c ) :            ConfigControl(a,b,c) {};    VIntConfigControl( vlc_object_t *a, module_config_t *b ) :                ConfigControl(a,b) {};    virtual ~VIntConfigControl() {};    virtual int getValue() = 0;    virtual int getType() { return CONFIG_ITEM_INTEGER; }};class IntegerConfigControl : public VIntConfigControl{Q_OBJECTpublic:    IntegerConfigControl( vlc_object_t *, module_config_t *, QWidget *,                          QGridLayout *, int& );    IntegerConfigControl( vlc_object_t *, module_config_t *,                          QLabel*, QSpinBox* );    IntegerConfigControl( vlc_object_t *, module_config_t *,                          QLabel*, QSlider* );    virtual ~IntegerConfigControl() {};    virtual int getValue();    virtual void show() { spin->show(); if( label ) label->show(); }    virtual void hide() { spin->hide(); if( label ) label->hide(); }protected:    QSpinBox *spin;private:    QLabel *label;    void finish();};class IntegerRangeConfigControl : public IntegerConfigControl{public:    IntegerRangeConfigControl( vlc_object_t *, module_config_t *, QWidget *,                               QGridLayout *, int& );    IntegerRangeConfigControl( vlc_object_t *, module_config_t *,                               QLabel*, QSpinBox* );private:    void finish();};class IntegerRangeSliderConfigControl : public VIntConfigControl{public:    IntegerRangeSliderConfigControl( vlc_object_t *, module_config_t *,                                QLabel *, QSlider * );    virtual ~IntegerRangeSliderConfigControl() {};    virtual int getValue();protected:         QSlider *slider;private:         QLabel *label;         void finish();};class IntegerListConfigControl : public VIntConfigControl{Q_OBJECTpublic:    IntegerListConfigControl( vlc_object_t *, module_config_t *, QWidget *,                              bool, QGridLayout*, int& );    IntegerListConfigControl( vlc_object_t *, module_config_t *, QLabel *,                              QComboBox*, bool );    virtual ~IntegerListConfigControl() {};    virtual int getValue();    virtual void hide() { combo->hide(); if( label ) label->hide(); }    virtual void show() { combo->show(); if( label ) label->show(); }private:    void finish(module_config_t *, bool );    QLabel *label;    QComboBox *combo;private slots:    void actionRequested( int );};class BoolConfigControl : public VIntConfigControl{public:    BoolConfigControl( vlc_object_t *, module_config_t *, QWidget *,                       QGridLayout *, int& );    BoolConfigControl( vlc_object_t *, module_config_t *,                       QLabel *, QCheckBox*, bool );    virtual ~BoolConfigControl() {};    virtual int getValue();    virtual void show() { checkbox->show(); }    virtual void hide() { checkbox->hide(); }    virtual int getType() { return CONFIG_ITEM_BOOL; }private:    QCheckBox *checkbox;    void finish();};/******************************************************* * Float-based controls *******************************************************/class VFloatConfigControl : public ConfigControl{    Q_OBJECTpublic:    VFloatConfigControl( vlc_object_t *a, module_config_t *b, QWidget *c ) :                ConfigControl(a,b,c) {};    VFloatConfigControl( vlc_object_t *a, module_config_t *b ) :                ConfigControl(a,b) {};    virtual ~VFloatConfigControl() {};    virtual float getValue() = 0;    virtual int getType() { return CONFIG_ITEM_FLOAT; }};class FloatConfigControl : public VFloatConfigControl{    Q_OBJECTpublic:    FloatConfigControl( vlc_object_t *, module_config_t *, QWidget *,                        QGridLayout *, int& );    FloatConfigControl( vlc_object_t *, module_config_t *,                        QLabel*, QDoubleSpinBox* );    virtual ~FloatConfigControl() {};    virtual float getValue();    virtual void show() { spin->show(); if( label ) label->show(); }    virtual void hide() { spin->hide(); if( label ) label->hide(); }protected:    QDoubleSpinBox *spin;private:    QLabel *label;    void finish();};class FloatRangeConfigControl : public FloatConfigControl{    Q_OBJECTpublic:    FloatRangeConfigControl( vlc_object_t *, module_config_t *, QWidget *,                             QGridLayout *, int& );    FloatRangeConfigControl( vlc_object_t *, module_config_t *,                             QLabel*, QDoubleSpinBox* );private:    void finish();};/******************************************************* * String-based controls *******************************************************/class VStringConfigControl : public ConfigControl{    Q_OBJECTpublic:    VStringConfigControl( vlc_object_t *a, module_config_t *b, QWidget *c ) :                ConfigControl(a,b,c) {};    VStringConfigControl( vlc_object_t *a, module_config_t *b ) :                ConfigControl(a,b) {};    virtual ~VStringConfigControl() {};    virtual QString getValue() = 0;    virtual int getType() { return CONFIG_ITEM_STRING; }};class StringConfigControl : public VStringConfigControl{    Q_OBJECTpublic:    StringConfigControl( vlc_object_t *, module_config_t *, QWidget *,                         QGridLayout *, int&,  bool pwd );    StringConfigControl( vlc_object_t *, module_config_t *, QLabel *,                         QLineEdit*,  bool pwd );    virtual ~StringConfigControl() {};    virtual QString getValue() { return text->text(); };    virtual void show() { text->show(); if( label ) label->show(); }    virtual void hide() { text->hide(); if( label ) label->hide(); }private:    void finish();    QLineEdit *text;    QLabel *label;};class FileConfigControl : public VStringConfigControl{    Q_OBJECT;public:    FileConfigControl( vlc_object_t *, module_config_t *, QWidget *,                       QGridLayout *, int&, bool pwd );    FileConfigControl( vlc_object_t *, module_config_t *, QLabel *,                       QLineEdit *, QPushButton *, bool pwd );    virtual ~FileConfigControl() {};    virtual QString getValue() { return text->text(); };    virtual void show() { text->show(); if( label ) label->show(); browse->show(); }    virtual void hide() { text->hide(); if( label ) label->hide(); browse->hide(); }public slots:    virtual void updateField();protected:    void finish();    QLineEdit *text;    QLabel *label;    QPushButton *browse;};class DirectoryConfigControl : public FileConfigControl{    Q_OBJECT;public:    DirectoryConfigControl( vlc_object_t *, module_config_t *, QWidget *,                            QGridLayout *, int&, bool pwd );    DirectoryConfigControl( vlc_object_t *, module_config_t *, QLabel *,                            QLineEdit *, QPushButton *, bool pwd );    virtual ~DirectoryConfigControl() {};public slots:    virtual void updateField();};#if 0class FontConfigControl : public FileConfigControl{    Q_OBJECT;public:    FontConfigControl( vlc_object_t *, module_config_t *, QWidget *,                       QGridLayout *, int&, bool pwd );    FontConfigControl( vlc_object_t *, module_config_t *, QLabel *,                       QLineEdit *, QPushButton *, bool pwd );    virtual ~FontConfigControl() {};public slots:    virtual void updateField();};#endifclass ModuleConfigControl : public VStringConfigControl{public:    ModuleConfigControl( vlc_object_t *, module_config_t *, QWidget *, bool,                         QGridLayout*, int& );    ModuleConfigControl( vlc_object_t *, module_config_t *, QLabel *,                         QComboBox*, bool );    virtual ~ModuleConfigControl() {};    virtual QString getValue();    virtual void hide() { combo->hide(); if( label ) label->hide(); }    virtual void show() { combo->show(); if( label ) label->show(); }private:    void finish( bool );    QLabel *label;    QComboBox *combo;};struct checkBoxListItem {    QCheckBox *checkBox;    char *psz_module;};class ModuleListConfigControl : public VStringConfigControl{    Q_OBJECT;    friend class ConfigControl;public:    ModuleListConfigControl( vlc_object_t *, module_config_t *, QWidget *,                             bool, QGridLayout*, int& );//    ModuleListConfigControl( vlc_object_t *, module_config_t *, QLabel *,//                         QComboBox*, bool );    virtual ~ModuleListConfigControl();    virtual QString getValue();    virtual void hide();    virtual void show();public slots:    void onUpdate( int value );private:    void finish( bool );    QVector<checkBoxListItem*> modules;    QGroupBox *groupBox;    QLineEdit *text;};class StringListConfigControl : public VStringConfigControl{    Q_OBJECT;public:    StringListConfigControl( vlc_object_t *, module_config_t *, QWidget *,                             bool, QGridLayout*, int& );    StringListConfigControl( vlc_object_t *, module_config_t *, QLabel *,                             QComboBox*, bool );    virtual ~StringListConfigControl() {};    virtual QString getValue();    virtual void hide() { combo->hide(); if( label ) label->hide(); }    virtual void show() { combo->show(); if( label ) label->show(); }	QComboBox *combo;private:    void finish(module_config_t *, bool );    QLabel *label;private slots:    void actionRequested( int );};void setfillVLCConfigCombo(const char *configname, intf_thread_t *p_intf,                        QComboBox *combo, QWidget *parent = 0 );#if 0struct ModuleCheckBox {    QCheckBox *checkbox;    QString module;};class ModuleListConfigControl : public ConfigControl{public:    StringConfigControl( vlc_object_t *, module_config_t *, QWidget *, bool                         bycat );    virtual ~StringConfigControl();    virtual QString getValue();private:    std::vector<ModuleCheckBox> checkboxes;    QLineEdit *text;private slot:    void OnUpdate();};#endif/********************************************************************** * Key selector widget **********************************************************************/class KeyShortcutEdit: public QLineEdit{    Q_OBJECTpublic:    void setValue( int _value ){ value = _value; }    int getValue() const { return value; }public slots:    virtual void clear(void) { value = 0; QLineEdit::clear(); }private:    int value;    virtual void mousePressEvent( QMouseEvent *event );signals:    void pressed();};class KeySelectorControl : public ConfigControl{    Q_OBJECT;public:    KeySelectorControl( vlc_object_t *, module_config_t *, QWidget *,                        QGridLayout*, int& );    virtual int getType() { return CONFIG_ITEM_KEY; }    virtual ~KeySelectorControl() {};    virtual void hide() { table->hide(); if( label ) label->hide(); }    virtual void show() { table->show(); if( label ) label->show(); }    void doApply();private:    void finish();    QLabel *label;    QTreeWidget *table;    KeyShortcutEdit *shortcutValue;    QList<module_config_t *> values;private slots:    void setTheKey();    void selectKey( QTreeWidgetItem * = NULL );    void select1Key();};class KeyInputDialog : public QDialog{public:    KeyInputDialog( QTreeWidget *, QString, QWidget * );    int keyValue;    bool conflicts;private:    QTreeWidget *table;    void checkForConflicts( int i_vlckey );    void keyPressEvent( QKeyEvent *);    void wheelEvent( QWheelEvent *);    QLabel *selected;    QVBoxLayout *vLayout;    QDialogButtonBox *buttonBox;};#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -