File indexing completed on 2024-05-05 04:51:43
0001 /* 0002 SPDX-FileCopyrightText: 1998-2008 Sebastian Trueg <trueg@k3b.org> 0003 SPDX-License-Identifier: GPL-2.0-or-later 0004 */ 0005 0006 #include "k3bdatamultisessioncombobox.h" 0007 0008 #include <KConfigGroup> 0009 #include <KLocalizedString> 0010 0011 #include <QToolTip> 0012 0013 0014 static const int s_autoIndex = 0; 0015 static const int s_noneIndex = 1; 0016 static const int s_startIndex = 2; 0017 static const int s_continueIndex = 3; 0018 static const int s_finishIndex = 4; 0019 0020 0021 K3b::DataMultiSessionCombobox::DataMultiSessionCombobox( QWidget* parent ) 0022 : QComboBox( parent ), 0023 m_forceNoMultiSession(false) 0024 { 0025 init( false ); 0026 0027 this->setToolTip( i18n("Select the Multisession Mode for the project.") ); 0028 this->setWhatsThis( i18n("<p><b>Multisession Mode</b>" 0029 "<p><b>Auto</b><br>" 0030 "Let K3b decide which mode to use. The decision will be based " 0031 "on the size of the project (does it fill the whole media) and " 0032 "the state of the inserted media (appendable or not)." 0033 "<p><b>No Multisession</b><br>" 0034 "Create a single-session CD or DVD and close the disk." 0035 "<p><b>Start Multisession</b><br>" 0036 "Start a multisession CD or DVD, not closing the disk to " 0037 "allow further sessions to be appended." 0038 "<p><b>Continue Multisession</b><br>" 0039 "Continue an appendable data CD (as for example created in " 0040 "<em>Start Multisession</em> mode) and add another session " 0041 "without closing the disk to " 0042 "allow further sessions to be appended." 0043 "<p><b>Finish Multisession</b><br>" 0044 "Continue an appendable data CD (as for example created in " 0045 "<em>Start Multisession</em> mode), add another session, " 0046 "and close the disk." 0047 "<p><em>In the case of DVD+RW and DVD-RW restricted overwrite media " 0048 "K3b will not actually create multiple sessions but grow the " 0049 "file system to include the new data.</em>") ); 0050 } 0051 0052 0053 K3b::DataMultiSessionCombobox::~DataMultiSessionCombobox() 0054 { 0055 } 0056 0057 0058 void K3b::DataMultiSessionCombobox::init( bool force ) 0059 { 0060 m_forceNoMultiSession = force; 0061 0062 clear(); 0063 0064 insertItem( s_autoIndex, i18n("Auto") ); 0065 insertItem( s_noneIndex, i18n("No Multisession") ); 0066 if( !m_forceNoMultiSession ) { 0067 insertItem( s_startIndex, i18n("Start Multisession") ); 0068 insertItem( s_continueIndex, i18n("Continue Multisession") ); 0069 insertItem( s_finishIndex, i18n("Finish Multisession") ); 0070 } 0071 } 0072 0073 0074 K3b::DataDoc::MultiSessionMode K3b::DataMultiSessionCombobox::multiSessionMode() const 0075 { 0076 switch( currentIndex() ) { 0077 case s_noneIndex: 0078 return K3b::DataDoc::NONE; 0079 case s_startIndex: 0080 return K3b::DataDoc::START; 0081 case s_continueIndex: 0082 return K3b::DataDoc::CONTINUE; 0083 case s_finishIndex: 0084 return K3b::DataDoc::FINISH; 0085 default: 0086 return K3b::DataDoc::AUTO; 0087 } 0088 } 0089 0090 0091 void K3b::DataMultiSessionCombobox::saveConfig( KConfigGroup c ) 0092 { 0093 QString s; 0094 switch( currentIndex() ) { 0095 case s_autoIndex: 0096 s = "auto"; 0097 break; 0098 case s_noneIndex: 0099 s = "none"; 0100 break; 0101 case s_startIndex: 0102 s = "start"; 0103 break; 0104 case s_continueIndex: 0105 s = "continue"; 0106 break; 0107 case s_finishIndex: 0108 s = "finish"; 0109 break; 0110 } 0111 0112 c.writeEntry( "multisession mode", s ); 0113 } 0114 0115 0116 void K3b::DataMultiSessionCombobox::loadConfig( const KConfigGroup& c ) 0117 { 0118 QString s = c.readEntry( "multisession mode" ); 0119 if( s == "none" ) 0120 setMultiSessionMode( K3b::DataDoc::NONE ); 0121 else if( s == "start" ) 0122 setMultiSessionMode( K3b::DataDoc::START ); 0123 else if( s == "continue" ) 0124 setMultiSessionMode( K3b::DataDoc::CONTINUE ); 0125 else if( s == "finish" ) 0126 setMultiSessionMode( K3b::DataDoc::FINISH ); 0127 else 0128 setMultiSessionMode( K3b::DataDoc::AUTO ); 0129 } 0130 0131 0132 void K3b::DataMultiSessionCombobox::setMultiSessionMode( K3b::DataDoc::MultiSessionMode m ) 0133 { 0134 switch( m ) { 0135 case K3b::DataDoc::AUTO: 0136 setCurrentIndex( s_autoIndex ); 0137 break; 0138 case K3b::DataDoc::NONE: 0139 setCurrentIndex( s_noneIndex ); 0140 break; 0141 case K3b::DataDoc::START: 0142 if( !m_forceNoMultiSession ) 0143 setCurrentIndex( s_startIndex ); 0144 break; 0145 case K3b::DataDoc::CONTINUE: 0146 if( !m_forceNoMultiSession ) 0147 setCurrentIndex( s_continueIndex ); 0148 break; 0149 case K3b::DataDoc::FINISH: 0150 if( !m_forceNoMultiSession ) 0151 setCurrentIndex( s_finishIndex ); 0152 break; 0153 } 0154 } 0155 0156 0157 void K3b::DataMultiSessionCombobox::setForceNoMultisession( bool f ) 0158 { 0159 if( f != m_forceNoMultiSession ) { 0160 K3b::DataDoc::MultiSessionMode m = multiSessionMode(); 0161 init( f ); 0162 setMultiSessionMode( m ); 0163 } 0164 } 0165 0166 #include "moc_k3bdatamultisessioncombobox.cpp"