X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=modules%2Fgui%2Fqt4%2Fdialogs%2Fhelp.cpp;h=16c8221ef091a24202926f85b11cee5c5f6061e8;hb=1595a7ef89f45c936857d3e12aff5f66cb2b0880;hp=b7cd757141815cdfd5c33afdb011aca23b79d9ea;hpb=d4db9fc979638a058154653e5e17b1c85e7c2c92;p=vlc diff --git a/modules/gui/qt4/dialogs/help.cpp b/modules/gui/qt4/dialogs/help.cpp index b7cd757141..16c8221ef0 100644 --- a/modules/gui/qt4/dialogs/help.cpp +++ b/modules/gui/qt4/dialogs/help.cpp @@ -2,9 +2,10 @@ * Help.cpp : Help and About dialogs **************************************************************************** * Copyright (C) 2007 the VideoLAN team - * $Id: Messages.cpp 16024 2006-07-13 13:51:05Z xtophe $ + * $Id$ * * Authors: Jean-Baptiste Kempf + * Rémi Duraffort * * 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 @@ -21,30 +22,46 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. *****************************************************************************/ -#include "dialogs/about.hpp" +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include + #include "dialogs/help.hpp" +#include + +#ifdef UPDATE_CHECK +#include +#endif #include "dialogs_provider.hpp" -#include "util/qvlcframe.hpp" -#include "qt4.hpp" + +#include #include #include #include #include #include +#include +#include +#include +#include + HelpDialog *HelpDialog::instance = NULL; -HelpDialog::HelpDialog( intf_thread_t *_p_intf) : QVLCFrame( _p_intf ) +HelpDialog::HelpDialog( intf_thread_t *_p_intf ) : QVLCFrame( _p_intf ) + { setWindowTitle( qtr( "Help" ) ); - resize( 600, 500 ); + setMinimumSize( 250, 300 ); QGridLayout *layout = new QGridLayout( this ); QTextBrowser *helpBrowser = new QTextBrowser( this ); helpBrowser->setOpenExternalLinks( true ); - helpBrowser->setHtml( _("Documentation

You can find VLC documentation (in english) on VLC wiki website.

Please see the Basic Documentation.
As well as the more Advanced Documentation.
You might also be interested by the Streaming Documentation.


Getting Help

You might get (and give) help on the Forums.") ); + helpBrowser->setHtml( I_LONGHELP ); QPushButton *closeButton = new QPushButton( qtr( "&Close" ) ); closeButton->setDefault( true ); @@ -52,22 +69,27 @@ HelpDialog::HelpDialog( intf_thread_t *_p_intf) : QVLCFrame( _p_intf ) layout->addWidget( closeButton, 1, 3 ); BUTTONACT( closeButton, close() ); + readSettings( "Help", QSize( 400, 450 ) ); } HelpDialog::~HelpDialog() { + writeSettings( "Help" ); } + void HelpDialog::close() { - this->toggleVisible(); + toggleVisible(); } AboutDialog *AboutDialog::instance = NULL; -AboutDialog::AboutDialog( intf_thread_t *_p_intf) : QVLCFrame( _p_intf ) +AboutDialog::AboutDialog( QWidget *parent, intf_thread_t *_p_intf) + : QVLCDialog( parent, _p_intf ) { setWindowTitle( qtr( "About" ) ); resize( 600, 500 ); + setMinimumSize( 600, 500 ); QGridLayout *layout = new QGridLayout( this ); QTabWidget *tab = new QTabWidget( this ); @@ -77,27 +99,74 @@ AboutDialog::AboutDialog( intf_thread_t *_p_intf) : QVLCFrame( _p_intf ) closeButton->setDefault( true ); QLabel *introduction = new QLabel( - qtr( "Information about VLC media player" ) ); + qtr( "VLC media player" " " VERSION_MESSAGE ) ); + QLabel *iconVLC = new QLabel; + if( QDate::currentDate().dayOfYear() >= 354 ) + iconVLC->setPixmap( QPixmap( ":/vlc48-christmas.png" ) ); + else + iconVLC->setPixmap( QPixmap( ":/vlc48.png" ) ); + layout->addWidget( iconVLC, 0, 0, 1, 1 ); + layout->addWidget( introduction, 0, 1, 1, 7 ); + layout->addWidget( tab, 1, 0, 1, 8 ); + layout->addWidget( closeButton, 2, 6, 1, 2 ); + + /* Main Introduction */ + QWidget *infoWidget = new QWidget( this ); + QHBoxLayout *infoLayout = new QHBoxLayout( infoWidget ); + QLabel *infoLabel = new QLabel( + qtr( "VLC media player is a free media player, " + "encoder and streamer that can read from files, " + "CDs, DVDs, network streams, capture cards and even more!\n" + "VLC uses its internal codecs and works on essentially every " + "popular platform.\n\n" ) + + qtr( "This version of VLC was compiled by:\n " ) + + qfu( VLC_CompileBy() )+ "@" + qfu( VLC_CompileHost() ) + "." + + qfu( VLC_CompileDomain() ) + ".\n" + + "Compiler: " + qfu( VLC_Compiler() ) + ".\n" + + qtr( "Based on Git commit: " ) + qfu( VLC_Changeset() ) + ".\n" + + qtr( "You are using the Qt4 Interface.\n\n" ) + + qtr( "Copyright (C) " COPYRIGHT_YEARS " by the VideoLAN Team.\n" ) + + "vlc@videolan.org, http://www.videolan.org" ); + infoLabel->setWordWrap( infoLabel ); - layout->addWidget( introduction, 0, 0, 1, 2 ); - layout->addWidget( tab, 1, 0, 1, 2 ); - layout->addWidget( closeButton, 2, 1, 1, 1 ); + QLabel *iconVLC2 = new QLabel; + if( QDate::currentDate().dayOfYear() >= 354 ) + iconVLC2->setPixmap( QPixmap( ":/vlc128-christmas.png" ) ); + else + iconVLC2->setPixmap( QPixmap( ":/vlc128.png" ) ); + infoLayout->addWidget( iconVLC2 ); + infoLayout->addWidget( infoLabel ); /* GPL License */ QTextEdit *licenseEdit = new QTextEdit( this ); - licenseEdit->setText( qfu( psz_licence ) ); + licenseEdit->setText( qfu( psz_license ) ); licenseEdit->setReadOnly( true ); /* People who helped */ + QWidget *thanksWidget = new QWidget( this ); + QVBoxLayout *thanksLayout = new QVBoxLayout( thanksWidget ); + + QLabel *thanksLabel = new QLabel( qtr( "We would like to thank the whole " + "VLC community, the testers, our users and the following people " + "(and the missing ones...) for their collaboration to " + "create the best free software." ) ); + thanksLabel->setWordWrap( true ); + thanksLayout->addWidget( thanksLabel ); QTextEdit *thanksEdit = new QTextEdit( this ); thanksEdit->setText( qfu( psz_thanks ) ); thanksEdit->setReadOnly( true ); + thanksLayout->addWidget( thanksEdit ); + + /* People who wrote the software */ + QTextEdit *authorsEdit = new QTextEdit( this ); + authorsEdit->setText( qfu( psz_authors ) ); + authorsEdit->setReadOnly( true ); /* add the tabs to the Tabwidget */ - tab->addTab( NULL, qtr( "General Info" ) ); - tab->addTab( NULL, qtr( "Authors" ) ); - tab->addTab( thanksEdit, qtr("Thanks") ); - tab->addTab( licenseEdit, qtr("Distribution License") ); + tab->addTab( infoWidget, qtr( "About" ) ); + tab->addTab( authorsEdit, qtr( "Authors" ) ); + tab->addTab( thanksWidget, qtr("Thanks") ); + tab->addTab( licenseEdit, qtr("License") ); BUTTONACT( closeButton, close() ); } @@ -105,7 +174,143 @@ AboutDialog::AboutDialog( intf_thread_t *_p_intf) : QVLCFrame( _p_intf ) AboutDialog::~AboutDialog() { } + void AboutDialog::close() { - this->toggleVisible(); + toggleVisible(); +} + +#ifdef UPDATE_CHECK + +/***************************************************************************** + * UpdateDialog + *****************************************************************************/ +/* callback to get information from the core */ +static void UpdateCallback( void *data, bool b_ret ) +{ + UpdateDialog* UDialog = (UpdateDialog *)data; + QEvent* event; + + if( b_ret ) + event = new QEvent( (QEvent::Type)UDOkEvent ); + else + event = new QEvent( (QEvent::Type)UDErrorEvent ); + + QApplication::postEvent( UDialog, event ); } + +UpdateDialog *UpdateDialog::instance = NULL; + +UpdateDialog::UpdateDialog( intf_thread_t *_p_intf ) : QVLCFrame( _p_intf ) +{ + setWindowTitle( qtr( "Update" ) ); + + QGridLayout *layout = new QGridLayout( this ); + + QPushButton *closeButton = new QPushButton( qtr( "&Close" ) ); + updateButton = new QPushButton( qtr( "&Update List" ) ); + updateButton->setDefault( true ); + QDialogButtonBox *buttonBox = new QDialogButtonBox( Qt::Horizontal ); + buttonBox->addButton( updateButton, QDialogButtonBox::ActionRole ); + buttonBox->addButton( closeButton, QDialogButtonBox::AcceptRole ); + + updateLabel = new QLabel( qtr( "Checking for an update..." ) ); + updateLabel->setWordWrap( true ); + + layout->addWidget( updateLabel, 0, 0 ); + layout->addWidget( buttonBox, 1, 0 ); + + BUTTONACT( updateButton, UpdateOrDownload() ); + BUTTONACT( closeButton, close() ); + + /* Create the update structure */ + p_update = update_New( p_intf ); + b_checked = false; + + readSettings( "Update", QSize( 120, 80 ) ); + + /* Check for updates */ + UpdateOrDownload(); +} + +UpdateDialog::~UpdateDialog() +{ + update_Delete( p_update ); + writeSettings( "Update" ); +} + +void UpdateDialog::close() +{ + toggleVisible(); +} + +/* Check for updates */ +void UpdateDialog::UpdateOrDownload() +{ + if( !b_checked ) + { + updateButton->setEnabled( false ); + msg_Dbg( p_intf, "Launching an update request" ); + update_Check( p_update, UpdateCallback, this ); + } + else + { + updateButton->setEnabled( false ); + QString dest_dir = QFileDialog::getExistingDirectory( this, + qtr( "Select a directory..." ), + qfu( config_GetHomeDir() ) ); + + if( dest_dir != "" ) + { + #if defined( WIN32 ) || defined( UNDER_CE ) + dest_dir += DIR_SEP; + #endif + msg_Dbg( p_intf, "Downloading to folder: %s", dest_dir ); + toggleVisible(); + update_Download( p_update, qtu( dest_dir ) ); + } + else + updateButton->setEnabled( true ); + } +} + +/* Handle the events */ +void UpdateDialog::customEvent( QEvent *event ) +{ + if( event->type() == UDOkEvent ) + updateNotify( true ); + else + updateNotify( false ); +} + +/* Notify the end of the update_Check */ +void UpdateDialog::updateNotify( bool b_result ) +{ + /* The update finish without errors */ + if( b_result ) + { + if( update_NeedUpgrade( p_update ) ) + { + update_release_t *p_release = update_GetRelease( p_update ); + assert( p_release ); + b_checked = true; + updateButton->setText( "Download" ); + updateLabel->setText( qtr( "There is a new version of VLC :\n" ) + + qfu( p_release->psz_desc ) ); + + /* Force the dialog to be shown */ + this->show(); + } + else + updateLabel->setText( qtr( "You have the latest version of VLC" ) ); + } + else + updateLabel->setText( + qtr( "An error occurred while checking for updates" ) ); + + adjustSize(); + updateButton->setEnabled( true ); +} + +#endif +