📄 qvlcframe.hpp
字号:
/***************************************************************************** * qvlcframe.hpp : A few helpers ***************************************************************************** * Copyright (C) 2006-2007 the VideoLAN team * $Id$ * * Authors: Clément Stenac <zorglub@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 _QVLCFRAME_H_#define _QVLCFRAME_H_#include <QWidget>#include <QDialog>#include <QSpacerItem>#include <QHBoxLayout>#include <QApplication>#include <QMainWindow>#include <QPushButton>#include <QKeyEvent>#include <QDesktopWidget>#include <QSettings>#include "qt4.hpp"#include <vlc_common.h>#include <vlc_charset.h>class QVLCTools{ public: /* use this function to save a widgets screen position only for windows / dialogs which are floating, if a window is docked into an other - don't all this function or it may write garbage to position info! */ static void saveWidgetPosition( QSettings *settings, QWidget *widget) { settings->setValue("geometry", widget->saveGeometry()); } static void saveWidgetPosition( intf_thread_t *p_intf, QString configName, QWidget *widget) { getSettings()->beginGroup( configName ); QVLCTools::saveWidgetPosition(getSettings(), widget); getSettings()->endGroup(); } /* use this method only for restoring window state of non docked windows! */ static bool restoreWidgetPosition(QSettings *settings, QWidget *widget, QSize defSize = QSize( 0, 0 ), QPoint defPos = QPoint( 0, 0 )) { if(!widget->restoreGeometry(settings->value("geometry") .toByteArray())) { widget->move(defPos); widget->resize(defSize); if(defPos.x() == 0 && defPos.y()==0) centerWidgetOnScreen(widget); return true; } return false; } static bool restoreWidgetPosition( intf_thread_t *p_intf, QString configName, QWidget *widget, QSize defSize = QSize( 0, 0 ), QPoint defPos = QPoint( 0, 0 ) ) { getSettings()->beginGroup( configName ); bool defaultUsed = QVLCTools::restoreWidgetPosition( getSettings(), widget, defSize, defPos); getSettings()->endGroup(); return defaultUsed; } /* call this method for a window or dialog to show it centred on current screen */ static void centerWidgetOnScreen(QWidget *widget) { QDesktopWidget * const desktop = QApplication::desktop(); QRect screenRect = desktop->availableGeometry(widget); QPoint p1 = widget->frameGeometry().center(); widget->move ( screenRect.center() - p1 ); }};class QVLCFrame : public QWidget{public:#ifdef __APPLE__ QVLCFrame( intf_thread_t *_p_intf ) : QWidget( NULL, Qt::Window ), p_intf( _p_intf )#else QVLCFrame( intf_thread_t *_p_intf ) : QWidget( NULL ), p_intf( _p_intf )#endif {}; virtual ~QVLCFrame() {}; void toggleVisible() { if( isVisible() ) hide(); else show(); }protected: intf_thread_t *p_intf; void readSettings( QString name, QSize defSize = QSize( 1, 1 ), QPoint defPos = QPoint( 0, 0 ) ) { QVLCTools::restoreWidgetPosition(p_intf, name, this, defSize, defPos); } void writeSettings( QString name ) { QVLCTools::saveWidgetPosition( p_intf, name, this); } virtual void cancel() { hide(); } virtual void close() { hide(); } virtual void keyPressEvent( QKeyEvent *keyEvent ) { if( keyEvent->key() == Qt::Key_Escape ) { msg_Dbg( p_intf, "Escp Key pressed" ); cancel(); } else if( keyEvent->key() == Qt::Key_Return ) { msg_Dbg( p_intf, "Enter Key pressed" ); close(); } }};class QVLCDialog : public QDialog{public: QVLCDialog( QWidget* parent, intf_thread_t *_p_intf ) : QDialog( parent ), p_intf( _p_intf ) {} virtual ~QVLCDialog() {}; void toggleVisible() { if( isVisible() ) hide(); else show(); }protected: intf_thread_t *p_intf; virtual void cancel() { hide(); } virtual void close() { hide(); } virtual void keyPressEvent( QKeyEvent *keyEvent ) { if( keyEvent->key() == Qt::Key_Escape ) { msg_Dbg( p_intf, "Escp Key pressed" ); cancel(); } else if( keyEvent->key() == Qt::Key_Return ) { msg_Dbg( p_intf, "Enter Key pressed" ); close(); } }};class QVLCMW : public QMainWindow{public: QVLCMW( intf_thread_t *_p_intf ) : QMainWindow( NULL ), p_intf( _p_intf ) { } virtual ~QVLCMW() {}; void toggleVisible() { if( isVisible() ) hide(); else show(); }protected: intf_thread_t *p_intf; QSize mainSize; void readSettings( QString name, QSize defSize ) { QVLCTools::restoreWidgetPosition( p_intf, name, this, defSize); } void readSettings( QString name ) { QVLCTools::restoreWidgetPosition( p_intf, name, this); } void readSettings( QSettings *settings ) { QVLCTools::restoreWidgetPosition(settings, this); } void readSettings( QSettings *settings, QSize defSize) { QVLCTools::restoreWidgetPosition(settings, this, defSize); } void writeSettings(QString name ) { QVLCTools::saveWidgetPosition( p_intf, name, this); } void writeSettings(QSettings *settings ) { QVLCTools::saveWidgetPosition(settings, this); }};#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -