File indexing completed on 2024-05-12 04:51:10
0001 /* 0002 SPDX-FileCopyrightText: 2003-2004 Christian Kvasny <chris@k3b.org> 0003 SPDX-FileCopyrightText: 1998-2007 Sebastian Trueg <trueg@k3b.org> 0004 0005 SPDX-License-Identifier: GPL-2.0-or-later 0006 */ 0007 0008 #include "k3bvcdoptions.h" 0009 #include "k3bversion.h" 0010 #include "k3bcore.h" 0011 #include "k3b_i18n.h" 0012 0013 #include <KConfig> 0014 #include <QFile> 0015 #include <QString> 0016 #include <QStandardPaths> 0017 0018 K3b::VcdOptions::VcdOptions() 0019 : m_restriction( 0 ), 0020 m_segment( 0 ), 0021 m_sequence( 0 ), 0022 m_pbcenabled(false), 0023 m_pbcnumkeysenabled(false), 0024 m_volumeID( "VIDEOCD" ), 0025 m_albumID( "" ), 0026 m_volumeSetId( "" ), 0027 m_publisher( QString( "K3b - Version %1" ).arg( k3bcore->version() ) ), 0028 m_applicationId( "CDI/CDI_VCD.APP;1" ), 0029 m_systemId( "CD-RTOS CD-BRIDGE" ), 0030 m_vcdclass( "vcd" ), 0031 m_vcdversion( "2.0" ), 0032 m_pregapleadout( 150 ), 0033 m_pregaptrack( 150 ), 0034 m_frontmargintrack( 30 ), 0035 m_rearmargintrack( 45 ), 0036 m_frontmargintrackSVCD( 0 ), 0037 m_rearmargintrackSVCD( 0 ), 0038 m_mpegversion( VCD20 ), 0039 m_volumeCount( 1 ), 0040 m_volumeNumber( 1 ), 0041 m_autodetect( true ), 0042 m_cdisupport( false ), 0043 m_brokensvcdmode( false ), 0044 m_VCD30interpretation( false ), 0045 m_sector2336( false ), 0046 m_updatescanoffsets( false ), 0047 m_relaxedaps( false ), 0048 m_segmentfolder( true ), 0049 m_usegaps( false ) 0050 {} 0051 0052 bool K3b::VcdOptions::checkCdiFiles() 0053 { 0054 m_cdisize = 0; 0055 if ( !QFile::exists( QStandardPaths::locate( QStandardPaths::GenericDataLocation, "k3b/cdi/cdi_imag.rtf" ) ) ) 0056 return false; 0057 if ( !QFile::exists( QStandardPaths::locate( QStandardPaths::GenericDataLocation, "k3b/cdi/cdi_text.fnt" ) ) ) 0058 return false; 0059 if ( !QFile::exists( QStandardPaths::locate( QStandardPaths::GenericDataLocation, "k3b/cdi/cdi_vcd.app" ) ) ) 0060 return false; 0061 if ( !QFile::exists( QStandardPaths::locate( QStandardPaths::GenericDataLocation, "k3b/cdi/cdi_vcd.cfg" ) ) ) 0062 return false; 0063 0064 m_cdisize += QFile( QStandardPaths::locate( QStandardPaths::GenericDataLocation, "k3b/cdi/cdi_imag.rtf" ) ).size(); 0065 m_cdisize += QFile( QStandardPaths::locate( QStandardPaths::GenericDataLocation, "k3b/cdi/cdi_text.fnt" ) ).size(); 0066 m_cdisize += QFile( QStandardPaths::locate( QStandardPaths::GenericDataLocation, "k3b/cdi/cdi_vcd.app" ) ).size(); 0067 m_cdisize += QFile( QStandardPaths::locate( QStandardPaths::GenericDataLocation, "k3b/cdi/cdi_vcd.cfg" ) ).size(); 0068 0069 return true; 0070 } 0071 0072 void K3b::VcdOptions::save( KConfigGroup c ) 0073 { 0074 c.writeEntry( "volume_id", m_volumeID ); 0075 c.writeEntry( "album_id", m_albumID ); 0076 c.writeEntry( "volume_set_id", m_volumeSetId ); 0077 c.writeEntry( "preparer", m_preparer ); 0078 c.writeEntry( "publisher", m_publisher ); 0079 c.writeEntry( "volume_count", m_volumeCount ); 0080 c.writeEntry( "volume_number", m_volumeNumber ); 0081 c.writeEntry( "autodetect", m_autodetect ); 0082 c.writeEntry( "cdi_support", m_cdisupport ); 0083 c.writeEntry( "broken_svcd_mode", m_brokensvcdmode ); 0084 c.writeEntry( "VCD30interpretation", m_VCD30interpretation ); 0085 c.writeEntry( "2336_sectors", m_sector2336 ); 0086 c.writeEntry( "UpdateScanOffsets", m_updatescanoffsets ); 0087 c.writeEntry( "RelaxedAps", m_relaxedaps ); 0088 c.writeEntry( "PbcEnabled", m_pbcenabled ); 0089 c.writeEntry( "SegmentFolder", m_segmentfolder ); 0090 c.writeEntry( "Restriction", m_restriction ); 0091 c.writeEntry( "PreGapLeadout", m_pregapleadout ); 0092 c.writeEntry( "PreGapTrack", m_pregaptrack ); 0093 c.writeEntry( "FrontMarginTrack", m_frontmargintrack ); 0094 c.writeEntry( "RearMarginTrack", m_rearmargintrack ); 0095 c.writeEntry( "UseGaps", m_usegaps ); 0096 c.writeEntry( "MPEG Version", ( int )m_mpegversion ); 0097 } 0098 0099 0100 K3b::VcdOptions K3b::VcdOptions::load( const KConfigGroup& c ) 0101 { 0102 K3b::VcdOptions options; 0103 0104 options.setVolumeId( c.readEntry( "volume_id", options.volumeId() ) ); 0105 options.setAlbumId( c.readEntry( "album_id", options.albumId() ) ); 0106 options.setVolumeSetId( c.readEntry( "volume_set_id", options.volumeSetId() ) ); 0107 options.setPreparer( c.readEntry( "preparer", options.preparer() ) ); 0108 options.setPublisher( c.readEntry( "publisher", options.publisher() ) ); 0109 options.setVolumeCount( c.readEntry( "volume_count", options.volumeCount() ) ); 0110 options.setVolumeNumber( c.readEntry( "volume_number", options.volumeNumber() ) ); 0111 options.setAutoDetect( c.readEntry( "autodetect", options.AutoDetect() ) ); 0112 options.setCdiSupport( c.readEntry( "cdi_support", options.CdiSupport() ) ); 0113 options.setNonCompliantMode( c.readEntry( "broken_svcd_mode", options.NonCompliantMode() ) ); 0114 options.setVCD30interpretation( c.readEntry( "VCD30interpretation", options.VCD30interpretation() ) ); 0115 options.setSector2336( c.readEntry( "2336_sectors", options.Sector2336() ) ); 0116 options.setUpdateScanOffsets( c.readEntry( "UpdateScanOffsets", options.UpdateScanOffsets() ) ); 0117 options.setRelaxedAps( c.readEntry( "RelaxedAps", options.RelaxedAps() ) ); 0118 options.setPbcEnabled( c.readEntry( "PbcEnabled", options.PbcEnabled() ) ); 0119 options.setSegmentFolder( c.readEntry( "SegmentFolder", options.SegmentFolder() ) ); 0120 options.setRestriction( c.readEntry( "Restriction", options.Restriction() ) ); 0121 options.setPreGapLeadout( c.readEntry( "PreGapLeadout", options.PreGapLeadout() ) ); 0122 options.setPreGapTrack( c.readEntry( "PreGapTrack", options.PreGapTrack() ) ); 0123 options.setFrontMarginTrack( c.readEntry( "FrontMarginTrack", options.FrontMarginTrack() ) ); 0124 options.setRearMarginTrack( c.readEntry( "RearMarginTrack", options.RearMarginTrack() ) ); 0125 options.setUseGaps( c.readEntry( "UseGaps", options.UseGaps() ) ); 0126 options.setMpegVersion( ( MPEGVersion )c.readEntry( "MPEG Version", ( int )options.mpegVersion() ) ); 0127 return options; 0128 } 0129 0130 K3b::VcdOptions K3b::VcdOptions::defaults() 0131 { 0132 // let the constructor create defaults 0133 return K3b::VcdOptions(); 0134 }