+
+
+UpdateDialog *UpdateDialog::instance = NULL;
+
+UpdateDialog::UpdateDialog( intf_thread_t *_p_intf) : QVLCFrame( _p_intf )
+{
+ setWindowTitle( qtr( "Update" ) );
+ resize( 230, 180 );
+
+ 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 );
+
+ QGroupBox *checkGroup = new QGroupBox( qtr( "Select Package" ) );
+ QGridLayout *checkLayout = new QGridLayout( checkGroup );
+ checkInfo = new QCheckBox( qtr( "Information" ) );
+ checkSource = new QCheckBox( qtr( "Sources" ) );
+ checkBinary = new QCheckBox( qtr( "Binary" ) );
+ checkPlugin = new QCheckBox( qtr( "Plugin" ) );
+
+ checkInfo->setDisabled( true );
+ checkSource->setDisabled( true );
+ checkBinary->setDisabled( true );
+ checkPlugin->setDisabled( true );
+
+ checkLayout->addWidget( checkInfo, 0, 0 );
+ checkLayout->addWidget( checkSource, 1, 0 );
+ checkLayout->addWidget( checkBinary, 2, 0 );
+ checkLayout->addWidget( checkPlugin, 3, 0 );
+
+ layout->addWidget( checkGroup, 0, 0 );
+ layout->addWidget( buttonBox, 1, 0 );
+
+ BUTTONACT( updateButton, updateOrUpload() );
+ BUTTONACT( closeButton, close() );
+
+ p_update = update_New( _p_intf );
+ b_updated = false;
+}
+
+UpdateDialog::~UpdateDialog()
+{
+ update_Delete( p_update );
+}
+
+void UpdateDialog::close()
+{
+ toggleVisible();
+}
+
+void UpdateDialog::updateOrUpload()
+{
+ if( !b_updated )
+ {
+ update_Check( p_update, VLC_FALSE );
+ update_iterator_t *p_updateit = update_iterator_New( p_update );
+ bool b_download = false;
+ if( p_updateit )
+ {
+ p_updateit->i_rs = UPDATE_RELEASE_STATUS_NEWER;
+ p_updateit->i_t = UPDATE_FILE_TYPE_ALL;
+ update_iterator_Action( p_updateit, UPDATE_MIRROR );
+ while( update_iterator_Action( p_updateit, UPDATE_FILE ) != UPDATE_FAIL )
+ {
+ switch( p_updateit->file.i_type )
+ {
+ case UPDATE_FILE_TYPE_INFO:
+ checkInfo->setText( qtr( "Information" ) + " (" + qfu( p_updateit->release.psz_version ) + ")" );
+ checkInfo->setDisabled( false );
+ checkInfo->setCheckState( Qt::Checked );
+ b_download = true;
+ break;
+ case UPDATE_FILE_TYPE_SOURCE:
+ checkSource->setText( qtr( "Source" ) + " (" + qfu( p_updateit->release.psz_version ) + ")" );
+ checkSource->setDisabled( false );
+ checkSource->setCheckState( Qt::Checked );
+ b_download = true;
+ break;
+ case UPDATE_FILE_TYPE_BINARY:
+ checkBinary->setText( qtr( "Binary" ) + " (" + qfu( p_updateit->release.psz_version ) + ")" );
+ checkBinary->setDisabled( false );
+ checkBinary->setCheckState( Qt::Checked );
+ b_download = true;
+ break;
+ case UPDATE_FILE_TYPE_PLUGIN:
+ checkPlugin->setText( qtr( "Plugin" ) + " (" + qfu( p_updateit->release.psz_version ) + ")");
+ checkPlugin->setDisabled( false );
+ checkPlugin->setCheckState( Qt::Checked );
+ b_download = true;
+ break;
+ default:
+ break;
+ }
+ }
+ }
+ if( b_download )
+ {
+ updateButton->setText(qtr( "Download" ) );
+ b_updated = true;
+ }
+ update_iterator_Delete( p_updateit );
+ }
+ else
+ {
+ update_iterator_t *p_updateit = update_iterator_New( p_update );
+ bool b_download = false;
+ if( p_updateit )
+ {
+ QString saveDir = QFileDialog::getExistingDirectory( this, qtr( "Choose a direcctory..." ),
+ qfu( p_intf->p_libvlc->psz_homedir ) );
+
+ p_updateit->i_rs = UPDATE_RELEASE_STATUS_NEWER;
+ p_updateit->i_t = UPDATE_FILE_TYPE_ALL;
+ update_iterator_Action( p_updateit, UPDATE_MIRROR );
+
+ while( update_iterator_Action( p_updateit, UPDATE_FILE ) != UPDATE_FAIL )
+ {
+ b_download = false;
+ switch( p_updateit->file.i_type )
+ {
+ case UPDATE_FILE_TYPE_INFO:
+ if( checkInfo->isChecked() )
+ b_download = true;
+ break;
+ case UPDATE_FILE_TYPE_SOURCE:
+ if( checkSource->isChecked() )
+ b_download = true;
+ break;
+ case UPDATE_FILE_TYPE_BINARY:
+ if( checkBinary->isChecked() )
+ b_download = true;
+ break;
+ case UPDATE_FILE_TYPE_PLUGIN:
+ if( checkPlugin->isChecked() )
+ b_download = true;
+ break;
+ default:
+ break;
+ }
+ if( b_download )
+ {
+ QString strFileName = p_updateit->file.psz_url;
+ strFileName.remove( 0, strFileName.lastIndexOf( "/" ) + 1 );
+ update_download( p_updateit, qtu( ( saveDir + strFileName ) ) );
+ }
+ }
+ }
+ }
+}