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 }