File indexing completed on 2024-04-21 05:50:00

0001 //**************************************************************************
0002 //   Copyright 2006 - 2017 Martin Koller, kollix@aon.at
0003 //
0004 //   This program is free software; you can redistribute it and/or modify
0005 //   it under the terms of the GNU General Public License as published by
0006 //   the Free Software Foundation, version 2 of the License
0007 //
0008 //**************************************************************************
0009 
0010 #include <SettingsDialog.hxx>
0011 
0012 //--------------------------------------------------------------------------------
0013 
0014 SettingsDialog::SettingsDialog(QWidget *parent)
0015   : QDialog(parent)
0016 {
0017   ui.setupUi(this);
0018 
0019   QStringList sizes;
0020   
0021   sizes << i18n("unlimited")
0022         << i18n("650 MB CD")
0023         << i18n("700 MB CD")
0024         << i18n("4.7 GB DVD")
0025         << i18n("8.5 GB DVD")
0026         << i18n("9.4 GB DVD")
0027         << i18n("17.1 GB DVD")
0028         << i18n("custom");
0029   
0030   ui.predefSizes->addItems(sizes);
0031   
0032   // unlimited as default
0033   ui.predefSizes->setCurrentIndex(0);
0034   ui.maxSliceSize->setValue(0);
0035   ui.maxSliceSize->setDisabled(true);
0036   connect(ui.predefSizes, &QComboBox::activated, this, &SettingsDialog::slotSizeSelected);
0037 }
0038 
0039 //--------------------------------------------------------------------------------
0040 
0041 void SettingsDialog::slotSizeSelected(int idx)
0042 {
0043   if ( idx == (ui.predefSizes->count() - 1) )
0044     ui.maxSliceSize->setEnabled(true);
0045   else
0046     ui.maxSliceSize->setDisabled(true);
0047   
0048   // https://en.wikipedia.org/wiki/Binary_prefix#Binary_prefixes_using_SI_symbols
0049   // CD capacities are always given in binary units
0050   // But DVD capacities are given in decimal units
0051 
0052   switch ( idx )
0053   {
0054     // unlimited
0055     case 0: ui.maxSliceSize->setValue(    0); break;
0056 
0057             // CDs
0058     case 1: ui.maxSliceSize->setValue(  650); break;
0059     case 2: ui.maxSliceSize->setValue(  700); break;
0060 
0061             // DVDs
0062     case 3: ui.maxSliceSize->setValue( 4482); break;
0063     case 4: ui.maxSliceSize->setValue( 8106); break;
0064     case 5: ui.maxSliceSize->setValue( 8964); break;
0065     case 6: ui.maxSliceSize->setValue(16307); break;
0066 
0067             // custom
0068     case 7: ui.maxSliceSize->setValue(    0); break;
0069   }
0070 }
0071 
0072 //--------------------------------------------------------------------------------
0073 
0074 void SettingsDialog::setMaxMB(int mb)
0075 {
0076   ui.maxSliceSize->setValue(mb);
0077   ui.maxSliceSize->setDisabled(true);
0078   
0079   switch ( mb )
0080   {
0081     case     0: ui.predefSizes->setCurrentIndex(0); break;
0082     case   650: ui.predefSizes->setCurrentIndex(1); break;
0083     case   700: ui.predefSizes->setCurrentIndex(2); break;
0084     case  4482: ui.predefSizes->setCurrentIndex(3); break;
0085     case  8106: ui.predefSizes->setCurrentIndex(4); break;
0086     case  8964: ui.predefSizes->setCurrentIndex(5); break;
0087     case 16307: ui.predefSizes->setCurrentIndex(6); break;
0088 
0089     default   : ui.predefSizes->setCurrentIndex(7);
0090                 ui.maxSliceSize->setEnabled(true);
0091                 break;
0092   }
0093 }
0094 
0095 //--------------------------------------------------------------------------------
0096 
0097 #include "moc_SettingsDialog.cpp"