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"