File indexing completed on 2024-05-05 04:51:49
0001 /* 0002 SPDX-FileCopyrightText: 1998-2009 Sebastian Trueg <trueg@k3b.org> 0003 SPDX-License-Identifier: GPL-2.0-or-later 0004 */ 0005 #include "k3bvideodvdburndialog.h" 0006 #include "k3bvideodvddoc.h" 0007 0008 #include "k3bdevice.h" 0009 #include "k3bwriterselectionwidget.h" 0010 #include "k3btempdirselectionwidget.h" 0011 #include "k3bcore.h" 0012 #include "k3bwritingmodewidget.h" 0013 #include "k3bglobals.h" 0014 #include "k3bdataimagesettingswidget.h" 0015 #include "k3bisooptions.h" 0016 #include "k3bstdguiitems.h" 0017 #include "k3bglobalsettings.h" 0018 0019 #include <KConfig> 0020 #include <KLocalizedString> 0021 #include <KIO/Global> 0022 #include <KMessageBox> 0023 0024 #include <QFileInfo> 0025 #include <QCheckBox> 0026 #include <QLayout> 0027 #include <QLabel> 0028 #include <QToolTip> 0029 0030 0031 K3b::VideoDvdBurnDialog::VideoDvdBurnDialog( K3b::VideoDvdDoc* doc, QWidget *parent ) 0032 : K3b::ProjectBurnDialog( doc, parent ), 0033 m_doc( doc ) 0034 { 0035 prepareGui(); 0036 0037 setTitle( i18n("Video DVD Project"), i18n("Size: %1", KIO::convertSize(doc->size()) ) ); 0038 0039 // for now we just put the verify checkbox on the main page... 0040 m_checkVerify = K3b::StdGuiItems::verifyCheckBox( m_optionGroup ); 0041 m_optionGroupLayout->addWidget( m_checkVerify ); 0042 0043 QSpacerItem* spacer = new QSpacerItem( 20, 20, QSizePolicy::Minimum, QSizePolicy::Expanding ); 0044 m_optionGroupLayout->addItem( spacer ); 0045 0046 // create image settings tab 0047 m_imageSettingsWidget = new K3b::DataImageSettingsWidget( this ); 0048 m_imageSettingsWidget->showFileSystemOptions( false ); 0049 0050 addPage( m_imageSettingsWidget, i18n("Filesystem") ); 0051 0052 m_tempDirSelectionWidget->setSelectionMode( K3b::TempDirSelectionWidget::FILE ); 0053 0054 QString path = m_doc->tempDir(); 0055 if( path.isEmpty() ) { 0056 path = K3b::defaultTempPath(); 0057 if( m_doc->isoOptions().volumeID().isEmpty() ) 0058 path.append( "image.iso" ); 0059 else 0060 path.append( m_doc->isoOptions().volumeID() + ".iso" ); 0061 } 0062 m_tempDirSelectionWidget->setTempPath( path ); 0063 } 0064 0065 0066 K3b::VideoDvdBurnDialog::~VideoDvdBurnDialog() 0067 { 0068 } 0069 0070 0071 void K3b::VideoDvdBurnDialog::saveSettingsToProject() 0072 { 0073 K3b::ProjectBurnDialog::saveSettingsToProject(); 0074 0075 // save iso image settings 0076 K3b::IsoOptions o = m_doc->isoOptions(); 0077 m_imageSettingsWidget->save( o ); 0078 m_doc->setIsoOptions( o ); 0079 0080 // save image file path 0081 m_doc->setTempDir( m_tempDirSelectionWidget->tempPath() ); 0082 0083 m_doc->setVerifyData( m_checkVerify->isChecked() ); 0084 } 0085 0086 0087 void K3b::VideoDvdBurnDialog::readSettingsFromProject() 0088 { 0089 K3b::ProjectBurnDialog::readSettingsFromProject(); 0090 0091 if( !doc()->tempDir().isEmpty() ) 0092 m_tempDirSelectionWidget->setTempPath( doc()->tempDir() ); 0093 else 0094 m_tempDirSelectionWidget->setTempPath( K3b::defaultTempPath() + doc()->name() + ".iso" ); 0095 0096 m_checkVerify->setChecked( m_doc->verifyData() ); 0097 0098 m_imageSettingsWidget->load( m_doc->isoOptions() ); 0099 0100 // in case overburn is enabled we allow some made up max size 0101 // before we force a DL medium 0102 if( doc()->length() > MediaSizeDvd4Gb && !IsOverburnAllowed( doc()->length(), MediaSizeDvd4Gb ) ) 0103 m_writerSelectionWidget->setWantedMediumType( K3b::Device::MEDIA_WRITABLE_DVD_DL ); 0104 else 0105 m_writerSelectionWidget->setWantedMediumType( K3b::Device::MEDIA_WRITABLE_DVD ); 0106 0107 toggleAll(); 0108 } 0109 0110 0111 void K3b::VideoDvdBurnDialog::toggleAll() 0112 { 0113 K3b::ProjectBurnDialog::toggleAll(); 0114 0115 if( m_checkSimulate->isChecked() || m_checkOnlyCreateImage->isChecked() ) { 0116 m_checkVerify->setChecked(false); 0117 m_checkVerify->setEnabled(false); 0118 } 0119 else 0120 m_checkVerify->setEnabled(true); 0121 } 0122 0123 0124 void K3b::VideoDvdBurnDialog::loadSettings( const KConfigGroup& c ) 0125 { 0126 K3b::ProjectBurnDialog::loadSettings( c ); 0127 0128 K3b::IsoOptions o = K3b::IsoOptions::load( c ); 0129 m_imageSettingsWidget->load( o ); 0130 0131 m_checkVerify->setChecked( c.readEntry( "verify data", false ) ); 0132 0133 toggleAll(); 0134 } 0135 0136 0137 void K3b::VideoDvdBurnDialog::saveSettings( KConfigGroup c ) 0138 { 0139 K3b::ProjectBurnDialog::saveSettings(c); 0140 0141 K3b::IsoOptions o; 0142 m_imageSettingsWidget->save( o ); 0143 o.save( c ); 0144 0145 c.writeEntry( "verify data", m_checkVerify->isChecked() ); 0146 } 0147 0148 0149 void K3b::VideoDvdBurnDialog::slotStartClicked() 0150 { 0151 if( m_checkOnlyCreateImage->isChecked() || 0152 m_checkCacheImage->isChecked() ) { 0153 QFileInfo fi( m_tempDirSelectionWidget->tempPath() ); 0154 if( fi.isDir() ) 0155 m_tempDirSelectionWidget->setTempPath( fi.filePath() + "/image.iso" ); 0156 0157 if( QFile::exists( m_tempDirSelectionWidget->tempPath() ) ) { 0158 if( KMessageBox::warningContinueCancel( this, 0159 i18n("Do you want to overwrite %1?",m_tempDirSelectionWidget->tempPath()), 0160 i18n("File Exists"), KStandardGuiItem::overwrite() ) 0161 == KMessageBox::Continue ) { 0162 // delete the file here to avoid problems with free space in K3b::ProjectBurnDialog::slotStartClicked 0163 QFile::remove( m_tempDirSelectionWidget->tempPath() ); 0164 } 0165 else 0166 return; 0167 } 0168 } 0169 0170 K3b::ProjectBurnDialog::slotStartClicked(); 0171 } 0172 0173 #include "moc_k3bvideodvdburndialog.cpp"