X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=modules%2Fgui%2Fqt4%2Fdialogs%2Fhelp.cpp;h=3fef481ff20cf6f472cd49e01b3f276406abcc22;hb=9cc1540b8c973407d32c013489e2e1277141ef1e;hp=9a183ec5f332cf2f1a2ed2a621827edff7a4825a;hpb=ee51eb43bd4f193641882329006d22d303275427;p=vlc
diff --git a/modules/gui/qt4/dialogs/help.cpp b/modules/gui/qt4/dialogs/help.cpp
index 9a183ec5f3..3fef481ff2 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 You can find VLC documentation on VideoLAN's wiki website. If you are a newcomer to VLC media player, please read the You will find some information on how to use the player in the Welcome to VLC media player help
Documentation
introduction to VLC media player.
\"How to play files with VLC media player\"document.
If you are unsure about terminology, please consult the knowledge base.
To understand the main keyboard shortcuts, read the shortcuts page.
Before asking any question, please refer yourself to the FAQ
You might then get (and give) help on the Forums, the mailing-lists or our IRC channel ( #videolan on irc.freenode.net ).
You can help the VideoLAN project giving some of your time to help the community, to design skins, to translate the documentation, to test and to code. You can also give funds and material to help us. And of course, you can promote VLC media player.
") ); - QPushButton *closeButton = new QPushButton( qtr( "&Close" ) ); - closeButton->setDefault( true ); + helpBrowser->setHtml( qtr(I_LONGHELP) ); + QDialogButtonBox *closeButtonBox = new QDialogButtonBox( Qt::Horizontal, this ); + closeButtonBox->addButton( + new QPushButton( qtr("&Close"), this ), QDialogButtonBox::RejectRole ); + closeButtonBox->setFocus(); - layout->addWidget( helpBrowser, 0, 0, 1, 0 ); - layout->addWidget( closeButton, 1, 3 ); + layout->addWidget( helpBrowser ); + layout->addWidget( closeButtonBox ); - BUTTONACT( closeButton, close() ); + CONNECT( closeButtonBox, rejected(), this, close() ); + readSettings( "Help", QSize( 500, 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( intf_thread_t *_p_intf) + : QVLCDialog( (QWidget*)_p_intf->p_sys->p_mi, _p_intf ) { + /* Build UI */ + ui.setupUi( this ); + ui.closeButtonBox->addButton( + new QPushButton( qtr("&Close"), this ), QDialogButtonBox::RejectRole ); + setWindowTitle( qtr( "About" ) ); + setWindowRole( "vlc-about" ); resize( 600, 500 ); + setMinimumSize( 600, 500 ); + setWindowModality( Qt::WindowModal ); - QGridLayout *layout = new QGridLayout( this ); - QTabWidget *tab = new QTabWidget( this ); + CONNECT( ui.closeButtonBox, rejected(), this, close() ); + ui.closeButtonBox->setFocus(); - QPushButton *closeButton = new QPushButton( qtr( "&Close" ) ); - closeButton->setSizePolicy( QSizePolicy::Minimum, QSizePolicy::Minimum ); - closeButton->setDefault( true ); + ui.introduction->setText( + qtr( "VLC media player" ) + qfu( " " VERSION_MESSAGE ) ); - QLabel *introduction = new QLabel( - qtr( "Information about VLC media player" ) ); + if( QDate::currentDate().dayOfYear() >= 354 ) + ui.iconVLC->setPixmap( QPixmap( ":/logo/vlc128-christmas.png" ) ); + else + ui.iconVLC->setPixmap( QPixmap( ":/logo/vlc128.png" ) ); - layout->addWidget( introduction, 0, 0, 1, 2 ); - layout->addWidget( tab, 1, 0, 1, 2 ); - layout->addWidget( closeButton, 2, 1, 1, 1 ); + /* Main Introduction */ + ui.infoLabel->setText( + 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() )+ " on " + qfu( VLC_CompileHost() ) + + + " ("__DATE__" "__TIME__").\n" + + qtr( "Compiler: " ) + qfu( VLC_Compiler() ) + ".\n" + + qtr( "You are using the Qt4 Interface.\n\n" ) + + qtr( "Copyright (C) " ) + COPYRIGHT_YEARS + + qtr( " by the VideoLAN Team.\n" ) + + "vlc@videolan.org, http://www.videolan.org" ); /* GPL License */ - QTextEdit *licenseEdit = new QTextEdit( this ); - licenseEdit->setText( qfu( psz_licence ) ); - licenseEdit->setReadOnly( true ); + ui.licenseEdit->setText( qfu( psz_license ) ); /* People who helped */ - QTextEdit *thanksEdit = new QTextEdit( this ); - thanksEdit->setText( qfu( psz_thanks ) ); - thanksEdit->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") ); + ui.thanksEdit->setText( qfu( psz_thanks ) ); - BUTTONACT( closeButton, close() ); + /* People who wrote the software */ + ui.authorsEdit->setText( qfu( psz_authors ) ); } 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( intf_thread_t *_p_intf ) : QVLCFrame( _p_intf ) +{ + /* build Ui */ + ui.setupUi( this ); + ui.updateDialogButtonBox->addButton( new QPushButton( qtr("&Close"), this ), + QDialogButtonBox::RejectRole ); + QPushButton *recheckButton = new QPushButton( qtr("&Recheck version"), this ); + ui.updateDialogButtonBox->addButton( recheckButton, QDialogButtonBox::ActionRole ); + + ui.updateNotifyButtonBox->addButton( new QPushButton( qtr("&Yes"), this ), + QDialogButtonBox::AcceptRole ); + ui.updateNotifyButtonBox->addButton( new QPushButton( qtr("&No"), this ), + QDialogButtonBox::RejectRole ); + + setWindowTitle( qtr( "VLC media player updates" ) ); + setWindowRole( "vlc-update" ); + + BUTTONACT( recheckButton, UpdateOrDownload() ); + CONNECT( ui.updateDialogButtonBox, rejected(), this, close() ); + + CONNECT( ui.updateNotifyButtonBox, accepted(), this, UpdateOrDownload() ); + CONNECT( ui.updateNotifyButtonBox, rejected(), this, close() ); + + /* Create the update structure */ + p_update = update_New( p_intf ); + b_checked = false; + + setMinimumSize( 300, 300 ); + setMaximumSize( 400, 300 ); + + readSettings( "Update", QSize( 300, 250 ) ); + + /* 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 ) + { + ui.stackedWidget->setCurrentWidget( ui.updateRequestPage ); + update_Check( p_update, UpdateCallback, this ); + } + else + { + QString dest_dir = QFileDialog::getExistingDirectory( this, + qtr( I_OP_SEL_DIR ), + QVLCUserDir( VLC_DOWNLOAD_DIR ) ); + + if( !dest_dir.isEmpty() ) + { + dest_dir = toNativeSepNoSlash( dest_dir ) + DIR_SEP; + msg_Dbg( p_intf, "Downloading to folder: %s", qtu( dest_dir ) ); + toggleVisible(); + update_Download( p_update, qtu( dest_dir ) ); + /* FIXME: We should trigger a change to another dialog here ! */ + } + } +} + +/* 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 ) ) + { + ui.stackedWidget->setCurrentWidget( ui.updateNotifyPage ); + update_release_t *p_release = update_GetRelease( p_update ); + assert( p_release ); + b_checked = true; + QString message = QString( + qtr( "A new version of VLC (%1.%2.%3%4) is available." ) ) + .arg( QString::number( p_release->i_major ) ) + .arg( QString::number( p_release->i_minor ) ) + .arg( QString::number( p_release->i_revision ) ) + .arg( ( p_release->extra )?QString( p_release->extra ):"" ); + + ui.updateNotifyLabel->setText( message ); + ui.updateNotifyTextEdit->setText( qfu( p_release->psz_desc ) ); + + /* Force the dialog to be shown */ + this->show(); + } + else + { + ui.stackedWidget->setCurrentWidget( ui.updateDialogPage ); + ui.updateDialogLabel->setText( + qtr( "You have the latest version of VLC media player." ) ); + } + } + else + { + ui.stackedWidget->setCurrentWidget( ui.updateDialogPage ); + ui.updateDialogLabel->setText( + qtr( "An error occurred while checking for updates..." ) ); + } } + +#endif +