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

📄 dialogs_provider.cpp

📁 VLC Player Source Code
💻 CPP
📖 第 1 页 / 共 2 页
字号:
/***************************************************************************** * dialogs_provider.cpp : Dialog Provider ***************************************************************************** * Copyright (C) 2006-2008 the VideoLAN team * $Id$ * * Authors: Clément Stenac <zorglub@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. *****************************************************************************/#ifdef HAVE_CONFIG_H# include "config.h"#endif#include <QEvent>#include <QApplication>#include <QSignalMapper>#include <QFileDialog>#include <vlc_common.h>#include "qt4.hpp"#include "dialogs_provider.hpp"#include "main_interface.hpp"#include "menus.hpp"#include <vlc_intf_strings.h>#include "input_manager.hpp"/* The dialogs */#include "dialogs/playlist.hpp"#include "dialogs/bookmarks.hpp"#include "dialogs/preferences.hpp"#include "dialogs/mediainfo.hpp"#include "dialogs/messages.hpp"#include "dialogs/extended.hpp"#include "dialogs/vlm.hpp"#include "dialogs/sout.hpp"#include "dialogs/open.hpp"#include "dialogs/help.hpp"#include "dialogs/gototime.hpp"#include "dialogs/podcast_configuration.hpp"DialogsProvider* DialogsProvider::instance = NULL;DialogsProvider::DialogsProvider( intf_thread_t *_p_intf ) :                                  QObject( NULL ), p_intf( _p_intf ){    b_isDying = false;    fixed_timer = new QTimer( this );    fixed_timer->start( 150 /* milliseconds */ );    menusMapper = new QSignalMapper();    CONNECT( menusMapper, mapped(QObject *), this, menuAction( QObject *) );    menusUpdateMapper = new QSignalMapper();    CONNECT( menusUpdateMapper, mapped(QObject *),             this, menuUpdateAction( QObject *) );    SDMapper = new QSignalMapper();    CONNECT( SDMapper, mapped (QString), this, SDMenuAction( QString ) );}DialogsProvider::~DialogsProvider(){    msg_Dbg( p_intf, "Destroying the Dialog Provider" );    PlaylistDialog::killInstance();    MediaInfoDialog::killInstance();    MessagesDialog::killInstance();    ExtendedDialog::killInstance();    BookmarksDialog::killInstance();    HelpDialog::killInstance();#ifdef UPDATE_CHECK    UpdateDialog::killInstance();#endif    fixed_timer->stop();    delete menusMapper;    delete menusUpdateMapper;    delete SDMapper;}void DialogsProvider::quit(){    /* Stop the playlist */    playlist_Stop( THEPL );    b_isDying = true;    vlc_object_kill( p_intf->p_libvlc );    QApplication::closeAllWindows();    QApplication::quit();}void DialogsProvider::customEvent( QEvent *event ){    if( event->type() == DialogEvent_Type )    {        DialogEvent *de = static_cast<DialogEvent*>(event);        switch( de->i_dialog )        {        case INTF_DIALOG_FILE_SIMPLE:        case INTF_DIALOG_FILE:            openDialog(); break;        case INTF_DIALOG_FILE_GENERIC:            openFileGenericDialog( de->p_arg ); break;        case INTF_DIALOG_DISC:            openDiscDialog(); break;        case INTF_DIALOG_NET:            openNetDialog(); break;        case INTF_DIALOG_SAT:        case INTF_DIALOG_CAPTURE:            openCaptureDialog(); break;        case INTF_DIALOG_DIRECTORY:            PLAppendDir(); break;        case INTF_DIALOG_PLAYLIST:            playlistDialog(); break;        case INTF_DIALOG_MESSAGES:            messagesDialog(); break;        case INTF_DIALOG_FILEINFO:           mediaInfoDialog(); break;        case INTF_DIALOG_PREFS:           prefsDialog(); break;        case INTF_DIALOG_BOOKMARKS:           bookmarksDialog(); break;        case INTF_DIALOG_EXTENDED:           extendedDialog(); break;#ifdef ENABLE_VLM        case INTF_DIALOG_VLM:           vlmDialog(); break;#endif        case INTF_DIALOG_INTERACTION:           doInteraction( de->p_arg ); break;        case INTF_DIALOG_POPUPMENU:           QVLCMenu::PopupMenu( p_intf, (de->i_arg != 0) ); break;        case INTF_DIALOG_AUDIOPOPUPMENU:           QVLCMenu::AudioPopupMenu( p_intf ); break;        case INTF_DIALOG_VIDEOPOPUPMENU:           QVLCMenu::VideoPopupMenu( p_intf ); break;        case INTF_DIALOG_MISCPOPUPMENU:           QVLCMenu::MiscPopupMenu( p_intf ); break;        case INTF_DIALOG_WIZARD:        case INTF_DIALOG_STREAMWIZARD:            openThenStreamingDialogs(); break;#ifdef UPDATE_CHECK        case INTF_DIALOG_UPDATEVLC:            updateDialog(); break;#endif        case INTF_DIALOG_EXIT:            quit(); break;        default:           msg_Warn( p_intf, "unimplemented dialog" );        }    }}/**************************************************************************** * Individual simple dialogs ****************************************************************************/void DialogsProvider::playlistDialog(){    PlaylistDialog::getInstance( p_intf )->toggleVisible();}void DialogsProvider::prefsDialog(){    PrefsDialog::getInstance( p_intf )->toggleVisible();}void DialogsProvider::extendedDialog(){    ExtendedDialog::getInstance( p_intf )->toggleVisible();}void DialogsProvider::messagesDialog(){    MessagesDialog::getInstance( p_intf )->toggleVisible();}void DialogsProvider::gotoTimeDialog(){    GotoTimeDialog::getInstance( p_intf )->toggleVisible();}#ifdef ENABLE_VLMvoid DialogsProvider::vlmDialog(){    VLMDialog::getInstance( p_intf )->toggleVisible();}#endifvoid DialogsProvider::helpDialog(){    HelpDialog::getInstance( p_intf )->toggleVisible();}#ifdef UPDATE_CHECKvoid DialogsProvider::updateDialog(){    UpdateDialog::getInstance( p_intf )->toggleVisible();}#endifvoid DialogsProvider::aboutDialog(){    AboutDialog::getInstance( p_intf )->toggleVisible();}void DialogsProvider::mediaInfoDialog(){    MediaInfoDialog::getInstance( p_intf )->toggleVisible();}void DialogsProvider::mediaCodecDialog(){    MediaInfoDialog::getInstance( p_intf )->showTab( 2 );}void DialogsProvider::bookmarksDialog(){    BookmarksDialog::getInstance( p_intf )->toggleVisible();}void DialogsProvider::podcastConfigureDialog(){    PodcastConfigDialog::getInstance( p_intf )->toggleVisible();}/**************************************************************************** * All the open/add stuff * Open Dialog first - Simple Open then ****************************************************************************/void DialogsProvider::openDialog( int i_tab ){    OpenDialog::getInstance( p_intf->p_sys->p_mi , p_intf )->showTab( i_tab );}void DialogsProvider::openDialog(){    openDialog( OPEN_FILE_TAB );}void DialogsProvider::openFileGenericDialog( intf_dialog_args_t *p_arg ){    if( p_arg == NULL )    {        msg_Warn( p_intf, "openFileGenericDialog() called with NULL arg" );        return;    }    /* Replace the extensions to a Qt format */    int i = 0;    QString extensions = qfu( p_arg->psz_extensions );    while ( ( i = extensions.indexOf( "|", i ) ) != -1 )    {        if( ( extensions.count( "|" ) % 2 ) == 0 )            extensions.replace( i, 1, ");;" );        else            extensions.replace( i, 1, "(" );    }    extensions.replace(QString(";*"), QString(" *"));    extensions.append( ")" );    /* Save */    if( p_arg->b_save )    {        QString file = QFileDialog::getSaveFileName( NULL, p_arg->psz_title,                            qfu( p_intf->p_sys->psz_filepath ), extensions );        if( !file.isEmpty() )        {            p_arg->i_results = 1;            p_arg->psz_results = (char **)malloc( p_arg->i_results * sizeof( char * ) );            p_arg->psz_results[0] = strdup( qtu( file ) );        }        else            p_arg->i_results = 0;    }    else /* non-save mode */    {        QStringList files = QFileDialog::getOpenFileNames( NULL,                p_arg->psz_title, qfu( p_intf->p_sys->psz_filepath ),                extensions );        p_arg->i_results = files.count();        p_arg->psz_results = (char **)malloc( p_arg->i_results * sizeof( char * ) );        i = 0;        foreach( QString file, files )            p_arg->psz_results[i++] = strdup( qtu( file ) );    }    /* Callback */    if( p_arg->pf_callback )        p_arg->pf_callback( p_arg );    /* Clean afterwards */    if( p_arg->psz_results )    {        for( i = 0; i < p_arg->i_results; i++ )            free( p_arg->psz_results[i] );        free( p_arg->psz_results );    }    free( p_arg->psz_title );    free( p_arg->psz_extensions );    free( p_arg );}void DialogsProvider::openFileDialog(){    openDialog( OPEN_FILE_TAB );}void DialogsProvider::openDiscDialog(){    openDialog( OPEN_DISC_TAB );

⌨️ 快捷键说明

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