QMap< QString, QString> ConfigBase::exportDatas( const QString &directory ) { QDir copyDirectory( directory ); QFileInfo fi; const QFileInfoList fil = copyDirectory.entryInfoList( QDir::Dirs | QDir::Files , QDir::Name ); QListIterator< QFileInfo > it( fil ); QMap< QString, QString> zipData; while ( it.hasNext() ) { fi = it.next(); if ( fi.fileName() == "." || fi.fileName() == ".." ) { ; } else { if ( fi.isDir() && fi.isReadable() ) { exportDatas( fi.absoluteFilePath() ); } else if ( fi.isFile() && fi.isReadable() ) { zipData.insert( fi.absolutePath(), fi.fileName() ); } } } return zipData; }
SubExportDialog::SubExportDialog(QList<Subtitles> subList, QList<qint32>selectedSub, QWidget *parent) : QDialog(parent), ui(new Ui::SubExportDialog) { ui->setupUi(this); mSubList = subList; mSelectedIndex = selectedSub; // Init EBu parameters mStlFileName = ""; mProgTitleVO = ""; mProgTitleTR = ""; mEpTitleVO = ""; mEpTitleTR = ""; mTranslatorName = ""; mTranslatorContact = ""; mSubListRef = ""; mCreationDate = ""; mRevisionNbr = 1; mStartOfProg = ""; mCountryOrigin = ""; mPublisher = ""; mEditorName = ""; mEditorContact = ""; for ( quint16 i = 0; i < 128; i++ ) { QString language = EbuParser::LANGUAGES_CODES[i]; if ( ( language != "" ) && ( language != "Reserved" ) ) { ui->languageComboBox->addItem(EbuParser::LANGUAGES_CODES[i], i); } } ui->languageComboBox->model()->sort(0); ui->languageComboBox->setCurrentIndex(ui->languageComboBox->findText("French")); on_languageComboBox_currentIndexChanged(ui->languageComboBox->currentIndex()); // Init BDN parameters ui->frameRateComboBox->setItemData(0, 23.976); ui->frameRateComboBox->setItemData(1, 24); ui->frameRateComboBox->setItemData(2, 25); ui->frameRateComboBox->setItemData(3, 29.97); ui->frameRateComboBox->setItemData(4, 50); ui->frameRateComboBox->setItemData(5, 59.94); ui->sizeFormatcomboBox->setItemData(0, QSize(720,480)); ui->sizeFormatcomboBox->setItemData(1, QSize(720,480)); ui->sizeFormatcomboBox->setItemData(2, QSize(720,576)); ui->sizeFormatcomboBox->setItemData(3, QSize(1280,720)); ui->sizeFormatcomboBox->setItemData(4, QSize(1920,1080)); ui->sizeFormatcomboBox->setItemData(5, QSize(1920,1080)); connect(ui->exportPushButton, SIGNAL(clicked()), this, SLOT(exportDatas()), Qt::QueuedConnection); }
bool ConfigBase::exportConfiguration( const QString &name, const Configuration &config ) { if ( name.isNull() || name.isEmpty() ) { return false; } QString homePath = QDir::homePath(); homePath.append( "/.dboxfe" ); QDir exportDir( homePath + "/export/" + name ); if ( exportDir.exists() ) { exportDir.mkpath( homePath + "/export/" + name ); } writeConfiguration( homePath + "/export/" + name + "/" + name + ".conf", config ); QSettings exportConf( homePath + "/export/" + name + "/" + name + ".conf", QSettings::IniFormat ); exportConf.beginGroup( "dosbox" ); QString language = exportConf.value( "language" ).toString(); QString captures = exportConf.value( "captures" ).toString(); exportConf.endGroup(); // autoexec QFile configFile( homePath + "/export/" + name + "/" + name + ".conf" ); if ( !configFile.open( QIODevice::ReadOnly | QIODevice::Text ) ) { return false; } QTextStream in( &configFile ); QString line = QString( "" ); QString autoexec = QString( "" ); QString mountDirectory = QString( "" ); while ( !in.atEnd() ) { line = in.readLine(); if ( line == "[autoexec]" ) { while ( !in.atEnd() ) { autoexec = in.readAll(); mountDirectory = autoexec.split( " " ).value( 2 ); QMap< QString, QString> zipData = exportDatas( mountDirectory ); QMap< QString, QString>::const_iterator zipDataIt = zipData.constBegin(); while ( zipDataIt != zipData.end() ) { QString fileDirectory = zipDataIt.key(); QString fileName = zipDataIt.value(); QString file = fileDirectory + fileName; // TODO make sure that you create directory before you create/copy file // insert code here ... QFile copyFile( file ); if ( copyFile.exists() ) { QFileInfo copyFileInfo( copyFile ); bool ok = copyFile.copy( homePath + "/export/" + name + "/" + fileName ); if ( !ok ) { ++zipDataIt; } } ++zipDataIt; } if ( line.startsWith( "[" ) && line.endsWith( "]" ) ) break; } } } configFile.close(); // Create Ziparchive for D-Fend Reloaded Zip::ErrorCode ec; Zip iz; ec = iz.createArchive( homePath + "/export/" + name + ".zip" ); if ( ec != Zip::Ok ) { qDebug() << QDateTime::currentDateTime().toString( Qt::LocaleDate ) << tr( " - [ERROR] Unable to create archive: " ) << iz.formatError( ec ).toAscii().data() << endl; return false; } ec = iz.addDirectory( homePath + "/export/" + name ); if ( ec != Zip::Ok ) { qDebug() << QDateTime::currentDateTime().toString( Qt::LocaleDate ) << tr( " - [ERROR] Unable to add directory: " ) << iz.formatError( ec ).toAscii().data() << endl; return false; } QString zipComment = QString( "" ); zipComment += tr( "This archive has been created using OSDaB Zip (http://osdab.sourceforge.net/)." ) + "\n"; zipComment += tr( "This archive was created by DBoxFE." ); iz.setArchiveComment( zipComment ); if ( iz.closeArchive() != Zip::Ok ) { qDebug() << QDateTime::currentDateTime().toString( Qt::LocaleDate ) << tr( " - [ERROR] Unable to close the archive: " ) << iz.formatError( ec ).toAscii().data() << endl; return false; } return true; }