diff --git a/gui/LogViewDialog.ui b/gui/LogViewDialog.ui index a321a1c0..23fe1768 100644 --- a/gui/LogViewDialog.ui +++ b/gui/LogViewDialog.ui @@ -311,6 +311,12 @@ RUN\DOS\RUN :/icons/cross.png:/icons/cross.png + + + 16 + 16 + + @@ -328,6 +334,12 @@ RUN\DOS\RUN :/icons/disk.png:/icons/disk.png + + + 16 + 16 + + @@ -358,6 +370,12 @@ RUN\DOS\RUN :/icons/paste_plain.png:/icons/paste_plain.png + + + 16 + 16 + + @@ -373,6 +391,7 @@ RUN\DOS\RUN + diff --git a/gui/MetaInfo.ui b/gui/MetaInfo.ui index ab066860..f9df2e30 100644 --- a/gui/MetaInfo.ui +++ b/gui/MetaInfo.ui @@ -213,6 +213,12 @@ :/icons/arrow_up.png:/icons/arrow_up.png + + + 16 + 16 + + false @@ -227,6 +233,12 @@ :/icons/arrow_down.png:/icons/arrow_down.png + + + 16 + 16 + + false @@ -263,6 +275,12 @@ :/icons/table_edit.png:/icons/table_edit.png + + + 16 + 16 + + false @@ -283,6 +301,12 @@ :/icons/cross.png:/icons/cross.png + + + 16 + 16 + + false @@ -319,6 +343,7 @@ + diff --git a/gui/ProcessingDialog.ui b/gui/ProcessingDialog.ui index 2fdf7939..1f37b2f9 100644 --- a/gui/ProcessingDialog.ui +++ b/gui/ProcessingDialog.ui @@ -390,6 +390,12 @@ :/icons/cancel.png:/icons/cancel.png + + + 16 + 16 + + @@ -407,6 +413,12 @@ :/icons/accept.png:/icons/accept.png + + + 16 + 16 + + @@ -438,6 +450,8 @@ + + diff --git a/gui/UpdateDialog.ui b/gui/UpdateDialog.ui index b3e3c090..5e01a3f3 100644 --- a/gui/UpdateDialog.ui +++ b/gui/UpdateDialog.ui @@ -374,6 +374,12 @@ :/icons/arrow_refresh.png:/icons/arrow_refresh.png + + + 16 + 16 + + @@ -391,6 +397,12 @@ :/icons/application_view_list.png:/icons/application_view_list.png + + + 16 + 16 + + @@ -473,6 +485,12 @@ :/icons/accept.png:/icons/accept.png + + + 16 + 16 + + @@ -490,6 +508,12 @@ :/icons/cross.png:/icons/cross.png + + + 16 + 16 + + @@ -559,6 +583,8 @@ + + diff --git a/src/Config.h b/src/Config.h index 37347154..dfaddec4 100644 --- a/src/Config.h +++ b/src/Config.h @@ -25,7 +25,7 @@ #define VER_LAMEXP_MAJOR 4 #define VER_LAMEXP_MINOR_HI 0 #define VER_LAMEXP_MINOR_LO 0 -#define VER_LAMEXP_BUILD 300 +#define VER_LAMEXP_BUILD 302 #define VER_LAMEXP_SUFFIX Beta-4 /* diff --git a/src/Dialog_About.cpp b/src/Dialog_About.cpp index 5874144a..adcb9136 100644 --- a/src/Dialog_About.cpp +++ b/src/Dialog_About.cpp @@ -104,16 +104,19 @@ AboutDialog::AboutDialog(SettingsModel *settings, QWidget *parent, bool firstSta { QPushButton *firstButton = addButton(tr("Show License Text"), QMessageBox::AcceptRole); firstButton->setIcon(QIcon(":/icons/script.png")); + firstButton->setIconSize(QSize(16, 16)); firstButton->setMinimumWidth(135); firstButton->disconnect(); connect(firstButton, SIGNAL(clicked()), this, SLOT(openLicenseText())); QPushButton *secondButton = addButton(tr("Accept License"), QMessageBox::AcceptRole); secondButton->setIcon(QIcon(":/icons/accept.png")); + secondButton->setIconSize(QSize(16, 16)); secondButton->setMinimumWidth(120); QPushButton *thirdButton = addButton(tr("Decline License"), QMessageBox::AcceptRole); thirdButton->setIcon(QIcon(":/icons/delete.png")); + thirdButton->setIconSize(QSize(16, 16)); thirdButton->setMinimumWidth(120); thirdButton->setEnabled(false); } @@ -121,24 +124,28 @@ AboutDialog::AboutDialog(SettingsModel *settings, QWidget *parent, bool firstSta { QPushButton *firstButton = addButton(tr("3rd Party S/W"), QMessageBox::AcceptRole); firstButton->setIcon(QIcon(":/icons/page_white_cplusplus.png")); + firstButton->setIconSize(QSize(16, 16)); firstButton->setMinimumWidth(120); firstButton->disconnect(); connect(firstButton, SIGNAL(clicked()), this, SLOT(showMoreAbout())); QPushButton *secondButton = addButton(tr("Contributors"), QMessageBox::AcceptRole); secondButton->setIcon(QIcon(":icons/user_suit.png")); + secondButton->setIconSize(QSize(16, 16)); secondButton->setMinimumWidth(120); secondButton->disconnect(); connect(secondButton, SIGNAL(clicked()), this, SLOT(showAboutContributors())); QPushButton *thirdButton = addButton(tr("About Qt4"), QMessageBox::AcceptRole); thirdButton->setIcon(QIcon(":/images/Qt.svg")); + thirdButton->setIconSize(QSize(16, 16)); thirdButton->setMinimumWidth(120); thirdButton->disconnect(); connect(thirdButton, SIGNAL(clicked()), this, SLOT(showAboutQt())); QPushButton *fourthButton = addButton(tr("Discard"), QMessageBox::AcceptRole); fourthButton->setIcon(QIcon(":/icons/cross.png")); + fourthButton->setIconSize(QSize(16, 16)); fourthButton->setMinimumWidth(90); } diff --git a/src/Dialog_MainWindow.cpp b/src/Dialog_MainWindow.cpp index 7b20ae50..132cc655 100644 --- a/src/Dialog_MainWindow.cpp +++ b/src/Dialog_MainWindow.cpp @@ -168,6 +168,7 @@ MainWindow::MainWindow(FileListModel *fileListModel, AudioFileModel *metaInfo, S //Setup "Meta Data" tab m_metaInfoModel = new MetaInfoModel(m_metaData, 6); m_metaInfoModel->clearData(); + m_metaInfoModel->setData(m_metaInfoModel->index(4, 1), m_settings->metaInfoPosition()); metaDataView->setModel(m_metaInfoModel); metaDataView->verticalHeader()->setResizeMode(QHeaderView::ResizeToContents); metaDataView->verticalHeader()->hide(); @@ -574,6 +575,7 @@ void MainWindow::changeEvent(QEvent *e) //Force GUI update m_metaInfoModel->clearData(); + m_metaInfoModel->setData(m_metaInfoModel->index(4, 1), m_settings->metaInfoPosition()); updateEncoder(m_settings->compressionEncoder()); updateLameAlgoQuality(sliderLameAlgoQuality->value()); @@ -1406,7 +1408,14 @@ void MainWindow::makeFolderButtonClicked(void) void MainWindow::editMetaButtonClicked(void) { ABORT_IF_BUSY; - m_metaInfoModel->editItem(metaDataView->currentIndex(), this); + + const QModelIndex index = metaDataView->currentIndex(); + m_metaInfoModel->editItem(index, this); + + if(index.row() == 4) + { + m_settings->metaInfoPosition(m_metaData->filePosition()); + } } /* diff --git a/src/Model_MetaInfo.cpp b/src/Model_MetaInfo.cpp index fe985e9d..104bd216 100644 --- a/src/Model_MetaInfo.cpp +++ b/src/Model_MetaInfo.cpp @@ -244,6 +244,56 @@ QVariant MetaInfoModel::headerData(int section, Qt::Orientation orientation, int } } +bool MetaInfoModel::setData (const QModelIndex &index, const QVariant &value, int role) +{ + if((role != Qt::EditRole) || (index.column() != 1) || !value.isValid()) + { + return false; + } + + switch(index.row() + m_offset) + { + case 0: + m_audioFile->setFilePath(value.toString()); + break; + case 1: + case 2: + case 3: + return false; + break; + case 4: + m_audioFile->setFileDuration(value.toUInt()); + break; + case 5: + m_audioFile->setFileName(value.toString()); + break; + case 6: + m_audioFile->setFileArtist(value.toString()); + break; + case 7: + m_audioFile->setFileAlbum(value.toString()); + break; + case 8: + m_audioFile->setFileGenre(value.toString()); + break; + case 9: + m_audioFile->setFileYear(value.toUInt()); + break; + case 10: + m_audioFile->setFilePosition(value.toUInt()); + break; + case 11: + m_audioFile->setFileComment(value.toString()); + break; + default: + return false; + break; + } + + emit dataChanged(index, index); + return true; +} + void MetaInfoModel::editItem(const QModelIndex &index, QWidget *parent) { bool ok = false; diff --git a/src/Model_MetaInfo.h b/src/Model_MetaInfo.h index ff030228..74711092 100644 --- a/src/Model_MetaInfo.h +++ b/src/Model_MetaInfo.h @@ -39,6 +39,7 @@ public: int rowCount(const QModelIndex &parent = QModelIndex()) const; QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const; QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const; + bool setData (const QModelIndex &index, const QVariant &value, int role = Qt::EditRole); Qt::ItemFlags flags(const QModelIndex &index) const; void editItem(const QModelIndex &index, QWidget *parent); void clearData(void); diff --git a/src/Model_Settings.cpp b/src/Model_Settings.cpp index 039c549d..46962aa0 100644 --- a/src/Model_Settings.cpp +++ b/src/Model_Settings.cpp @@ -32,44 +32,11 @@ #include #include -//Constants -static const char *g_settingsId_versionNumber = "VersionNumber"; -static const char *g_settingsId_licenseAccepted = "LicenseAccepted"; -static const char *g_settingsId_interfaceStyle = "InterfaceStyle"; -static const char *g_settingsId_compressionEncoder = "Compression/Encoder"; -static const char *g_settingsId_compressionRCMode = "Compression/RCMode"; -static const char *g_settingsId_compressionBitrate = "Compression/Bitrate"; -static const char *g_settingsId_outputDir = "OutputDirectory/SelectedPath"; -static const char *g_settingsId_outputToSourceDir = "OutputDirectory/OutputToSourceFolder"; -static const char *g_settingsId_prependRelativeSourcePath = "OutputDirectory/PrependRelativeSourcePath"; -static const char *g_settingsId_writeMetaTags = "Flags/WriteMetaTags"; -static const char *g_settingsId_createPlaylist = "Flags/AutoCreatePlaylist"; -static const char *g_settingsId_autoUpdateLastCheck = "AutoUpdate/LastCheck"; -static const char *g_settingsId_autoUpdateEnabled = "AutoUpdate/Enabled"; -static const char *g_settingsId_soundsEnabled = "Flags/EnableSounds"; -static const char *g_settingsId_neroAacNotificationsEnabled = "Flags/EnableNeroAacNotifications"; -static const char *g_settingsId_wmaDecoderNotificationsEnabled = "Flags/EnableWmaDecoderNotifications"; -static const char *g_settingsId_dropBoxWidgetEnabled = "Flags/EnableDropBoxWidget"; -static const char *g_settingsId_shellIntegrationEnabled = "Flags/EnableShellIntegration"; -static const char *g_settingsId_currentLanguage = "Localization/Language"; -static const char *g_settingsId_lameAlgoQuality = "AdvancedOptions/LAME/AlgorithmQuality"; -static const char *g_settingsId_lameChannelMode = "AdvancedOptions/LAME/ChannelMode"; -static const char *g_settingsId_bitrateManagementEnabled = "AdvancedOptions/BitrateManagement/Enabled"; -static const char *g_settingsId_bitrateManagementMinRate = "AdvancedOptions/BitrateManagement/MinRate"; -static const char *g_settingsId_bitrateManagementMaxRate = "AdvancedOptions/BitrateManagement/MaxRate"; -static const char *g_settingsId_samplingRate = "AdvancedOptions/Common/Resampling"; -static const char *g_settingsId_neroAACEnable2Pass = "AdvancedOptions/NeroAAC/Enable2Pass"; -static const char *g_settingsId_neroAACProfile = "AdvancedOptions/NeroAAC/ForceProfile"; -static const char *g_settingsId_normalizationFilterEnabled = "AdvancedOptions/VolumeNormalization/Enabled"; -static const char *g_settingsId_normalizationFilterMaxVolume = "AdvancedOptions/VolumeNormalization/MaxVolume"; -static const char *g_settingsId_toneAdjustBass = "AdvancedOptions/ToneAdjustment/Bass"; -static const char *g_settingsId_toneAdjustTreble = "AdvancedOptions/ToneAdjustment/Treble"; -static const char *g_settingsId_customParametersLAME = "AdvancedOptions/CustomParameters/LAME"; -static const char *g_settingsId_customParametersOggEnc = "AdvancedOptions/CustomParameters/OggEnc"; -static const char *g_settingsId_customParametersNeroAAC = "AdvancedOptions/CustomParameters/NeroAAC"; -static const char *g_settingsId_customParametersFLAC = "AdvancedOptions/CustomParameters/FLAC"; +//////////////////////////////////////////////////////////// //Macros +//////////////////////////////////////////////////////////// + #define MAKE_OPTION1(OPT,DEF) \ int SettingsModel::OPT(void) { return m_settings->value(g_settingsId_##OPT, DEF).toInt(); } \ void SettingsModel::OPT(int value) { m_settings->setValue(g_settingsId_##OPT, value); } \ @@ -85,6 +52,55 @@ bool SettingsModel::OPT(void) { return m_settings->value(g_settingsId_##OPT, DEF void SettingsModel::OPT(bool value) { m_settings->setValue(g_settingsId_##OPT, value); } \ bool SettingsModel::OPT##Default(void) { return DEF; } +#define MAKE_OPTION4(OPT,DEF) \ +unsigned int SettingsModel::OPT(void) { return m_settings->value(g_settingsId_##OPT, DEF).toUInt(); } \ +void SettingsModel::OPT(unsigned int value) { m_settings->setValue(g_settingsId_##OPT, value); } \ +unsigned int SettingsModel::OPT##Default(void) { return DEF; } + +#define MAKE_ID(DEC,STR) static const char *g_settingsId_##DEC = STR + +//////////////////////////////////////////////////////////// +//Constants +//////////////////////////////////////////////////////////// + +//Setting ID's +MAKE_ID(versionNumber, "VersionNumber"); +MAKE_ID(licenseAccepted, "LicenseAccepted"); +MAKE_ID(interfaceStyle, "InterfaceStyle"); +MAKE_ID(compressionEncoder, "Compression/Encoder"); +MAKE_ID(compressionRCMode, "Compression/RCMode"); +MAKE_ID(compressionBitrate, "Compression/Bitrate"); +MAKE_ID(outputDir, "OutputDirectory/SelectedPath"); +MAKE_ID(outputToSourceDir, "OutputDirectory/OutputToSourceFolder"); +MAKE_ID(prependRelativeSourcePath, "OutputDirectory/PrependRelativeSourcePath"); +MAKE_ID(writeMetaTags, "Flags/WriteMetaTags"); +MAKE_ID(createPlaylist, "Flags/AutoCreatePlaylist"); +MAKE_ID(autoUpdateLastCheck, "AutoUpdate/LastCheck"); +MAKE_ID(autoUpdateEnabled, "AutoUpdate/Enabled"); +MAKE_ID(soundsEnabled, "Flags/EnableSounds"); +MAKE_ID(neroAacNotificationsEnabled, "Flags/EnableNeroAacNotifications"); +MAKE_ID(wmaDecoderNotificationsEnabled, "Flags/EnableWmaDecoderNotifications"); +MAKE_ID(dropBoxWidgetEnabled, "Flags/EnableDropBoxWidget"); +MAKE_ID(shellIntegrationEnabled, "Flags/EnableShellIntegration"); +MAKE_ID(currentLanguage, "Localization/Language"); +MAKE_ID(lameAlgoQuality, "AdvancedOptions/LAME/AlgorithmQuality"); +MAKE_ID(lameChannelMode, "AdvancedOptions/LAME/ChannelMode"); +MAKE_ID(bitrateManagementEnabled, "AdvancedOptions/BitrateManagement/Enabled"); +MAKE_ID(bitrateManagementMinRate, "AdvancedOptions/BitrateManagement/MinRate"); +MAKE_ID(bitrateManagementMaxRate, "AdvancedOptions/BitrateManagement/MaxRate"); +MAKE_ID(samplingRate, "AdvancedOptions/Common/Resampling"); +MAKE_ID(neroAACEnable2Pass, "AdvancedOptions/NeroAAC/Enable2Pass"); +MAKE_ID(neroAACProfile, "AdvancedOptions/NeroAAC/ForceProfile"); +MAKE_ID(normalizationFilterEnabled, "AdvancedOptions/VolumeNormalization/Enabled"); +MAKE_ID(normalizationFilterMaxVolume, "AdvancedOptions/VolumeNormalization/MaxVolume"); +MAKE_ID(toneAdjustBass, "AdvancedOptions/ToneAdjustment/Bass"); +MAKE_ID(toneAdjustTreble, "AdvancedOptions/ToneAdjustment/Treble"); +MAKE_ID(customParametersLAME, "AdvancedOptions/CustomParameters/LAME"); +MAKE_ID(customParametersOggEnc, "AdvancedOptions/CustomParameters/OggEnc"); +MAKE_ID(customParametersNeroAAC, "AdvancedOptions/CustomParameters/NeroAAC"); +MAKE_ID(customParametersFLAC, "AdvancedOptions/CustomParameters/FLAC"); +MAKE_ID(metaInfoPosition, "MetaInformation/PlaylistPosition"); + //LUT const int SettingsModel::mp3Bitrates[15] = {32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, -1}; const int SettingsModel::samplingRates[8] = {0, 16000, 22050, 24000, 32000, 44100, 48000, -1}; @@ -241,3 +257,4 @@ MAKE_OPTION2(customParametersLAME, QString()); MAKE_OPTION2(customParametersOggEnc, QString()); MAKE_OPTION2(customParametersNeroAAC, QString()); MAKE_OPTION2(customParametersFLAC, QString()); +MAKE_OPTION4(metaInfoPosition, UINT_MAX); diff --git a/src/Model_Settings.h b/src/Model_Settings.h index 655324e5..7c4b5c92 100644 --- a/src/Model_Settings.h +++ b/src/Model_Settings.h @@ -24,6 +24,8 @@ class QSettings; class QString; +/////////////////////////////////////////////////////////////////////////////// + #define MAKE_OPTION_DEC1(OPT) \ int OPT(void); \ void OPT(int value); \ @@ -39,6 +41,13 @@ bool OPT(void); \ void OPT(bool value); \ bool OPT##Default(void); +#define MAKE_OPTION_DEC4(OPT) \ +unsigned int OPT(void); \ +void OPT(unsigned int value); \ +unsigned int OPT##Default(void); + +/////////////////////////////////////////////////////////////////////////////// + class SettingsModel { public: @@ -100,6 +109,7 @@ public: MAKE_OPTION_DEC2(customParametersOggEnc); MAKE_OPTION_DEC2(customParametersNeroAAC); MAKE_OPTION_DEC2(customParametersFLAC); + MAKE_OPTION_DEC4(metaInfoPosition); //Misc void validate(void); @@ -110,6 +120,9 @@ private: QString defaultLanguage(void); }; +/////////////////////////////////////////////////////////////////////////////// + #undef MAKE_OPTION_DEC1 #undef MAKE_OPTION_DEC2 #undef MAKE_OPTION_DEC3 +#undef MAKE_OPTION_DEC4