2015-09-06 20:20:00 +02:00
# include "./settingsdialog.h"
# include "./notificationlabel.h"
2015-04-22 19:33:53 +02:00
2015-09-06 20:20:00 +02:00
# include "../application/settings.h"
# include "../application/knownfieldmodel.h"
2016-05-26 02:15:41 +02:00
# include "../application/targetlevelmodel.h"
2015-04-22 19:33:53 +02:00
2016-09-12 21:52:39 +02:00
# include "ui_filebrowsergeneraloptionpage.h"
# include "ui_editorgeneraloptionpage.h"
# include "ui_editortempoptionpage.h"
# include "ui_editorfieldsoptionpage.h"
# include "ui_editorautocorrectionoptionpage.h"
# include "ui_editordbqueryoptionpage.h"
# include "ui_infooptionpage.h"
# include "ui_tagprocessinggeneraloptionpage.h"
# include "ui_id3v1optionpage.h"
# include "ui_id3v2optionpage.h"
# include "ui_tagprocessingtargetsoptionpage.h"
# include "ui_filelayout.h"
2015-04-22 19:33:53 +02:00
# include <tagparser/mediafileinfo.h>
# include <tagparser/backuphelper.h>
# include <qtutilities/settingsdialog/optioncategory.h>
# include <qtutilities/settingsdialog/optioncategorymodel.h>
2016-07-27 18:31:42 +02:00
# include <qtutilities/settingsdialog/qtsettings.h>
2015-04-22 19:33:53 +02:00
# include <QFileDialog>
2015-11-21 01:13:45 +01:00
# include <functional>
using namespace std ;
using namespace std : : placeholders ;
2015-04-22 19:33:53 +02:00
using namespace Settings ;
using namespace Media ;
namespace QtGui {
// FileBrowserGeneralOptionPage
2016-04-04 14:51:14 +02:00
FileBrowserGeneralOptionPage : : FileBrowserGeneralOptionPage ( QWidget * parentWidget ) :
FileBrowserGeneralOptionPageBase ( parentWidget )
2015-04-22 19:33:53 +02:00
{ }
FileBrowserGeneralOptionPage : : ~ FileBrowserGeneralOptionPage ( )
{ }
bool FileBrowserGeneralOptionPage : : apply ( )
{
2016-10-24 20:15:10 +02:00
auto & settings = values ( ) . fileBrowser ;
2015-04-22 19:33:53 +02:00
if ( hasBeenShown ( ) ) {
2016-10-24 20:15:10 +02:00
settings . hideBackupFiles = ui ( ) - > hideBackupFilesCheckBox - > isChecked ( ) ;
settings . readOnly = ui ( ) - > readOnlyCheckBox - > isChecked ( ) ;
2015-04-22 19:33:53 +02:00
}
return true ;
}
void FileBrowserGeneralOptionPage : : reset ( )
{
2016-10-24 20:15:10 +02:00
const auto & settings = values ( ) . fileBrowser ;
2015-04-22 19:33:53 +02:00
if ( hasBeenShown ( ) ) {
2016-10-24 20:15:10 +02:00
ui ( ) - > hideBackupFilesCheckBox - > setChecked ( settings . hideBackupFiles ) ;
ui ( ) - > readOnlyCheckBox - > setChecked ( settings . readOnly ) ;
2015-04-22 19:33:53 +02:00
}
}
// EditorGeneralOptionPage
2016-04-04 14:51:14 +02:00
EditorGeneralOptionPage : : EditorGeneralOptionPage ( QWidget * parentWidget ) :
EditorGeneralOptionPageBase ( parentWidget )
2015-04-22 19:33:53 +02:00
{ }
EditorGeneralOptionPage : : ~ EditorGeneralOptionPage ( )
{ }
bool EditorGeneralOptionPage : : apply ( )
{
if ( hasBeenShown ( ) ) {
2016-10-24 20:15:10 +02:00
auto & settings = values ( ) . editor ;
2015-04-22 19:33:53 +02:00
if ( ui ( ) - > disableAdoptRadioButton - > isChecked ( ) ) {
2016-10-24 20:15:10 +02:00
settings . adoptFields = AdoptFields : : Never ;
2015-04-22 19:33:53 +02:00
} else if ( ui ( ) - > enableWithinDirRadioButton - > isChecked ( ) ) {
2016-10-24 20:15:10 +02:00
settings . adoptFields = AdoptFields : : WithinDirectory ;
2015-04-22 19:33:53 +02:00
} else if ( ui ( ) - > enableForAllRadioButton - > isChecked ( ) ) {
2016-10-24 20:15:10 +02:00
settings . adoptFields = AdoptFields : : Always ;
2015-04-22 19:33:53 +02:00
}
if ( ui ( ) - > multipleTagsOneEditorRadioButton - > isChecked ( ) ) {
2016-10-24 20:15:10 +02:00
settings . multipleTagHandling = MultipleTagHandling : : SingleEditorPerTarget ;
2015-04-22 19:33:53 +02:00
} else if ( ui ( ) - > multipleTagsSeparateEditorsRadioButton - > isChecked ( ) ) {
2016-10-24 20:15:10 +02:00
settings . multipleTagHandling = MultipleTagHandling : : SeparateEditors ;
2015-04-22 19:33:53 +02:00
}
2016-10-24 20:15:10 +02:00
settings . saveAndShowNextOnEnter = ui ( ) - > nextWhenPressingEnterCheckBox - > isChecked ( ) ;
settings . askBeforeDeleting = ui ( ) - > askBeforeDeletingCheckBox - > isChecked ( ) ;
settings . hideTagSelectionComboBox = ui ( ) - > hideTagSelectionComboBoxCheckBox - > isChecked ( ) ;
settings . hideCoverButtons = ui ( ) - > hideCoverButtonsCheckBox - > isChecked ( ) ;
2015-04-22 19:33:53 +02:00
}
return true ;
}
void EditorGeneralOptionPage : : reset ( )
{
if ( hasBeenShown ( ) ) {
2016-10-24 20:15:10 +02:00
const auto & settings = values ( ) . editor ;
switch ( settings . adoptFields ) {
2015-04-22 19:33:53 +02:00
case AdoptFields : : Never :
ui ( ) - > disableAdoptRadioButton - > setChecked ( true ) ;
break ;
case AdoptFields : : WithinDirectory :
ui ( ) - > enableWithinDirRadioButton - > setChecked ( true ) ;
break ;
case AdoptFields : : Always :
ui ( ) - > enableForAllRadioButton - > setChecked ( true ) ;
break ;
}
2016-10-24 20:15:10 +02:00
switch ( settings . multipleTagHandling ) {
2015-04-22 19:33:53 +02:00
case MultipleTagHandling : : SingleEditorPerTarget :
ui ( ) - > multipleTagsOneEditorRadioButton - > setChecked ( true ) ;
break ;
case MultipleTagHandling : : SeparateEditors :
ui ( ) - > multipleTagsSeparateEditorsRadioButton - > setChecked ( true ) ;
break ;
}
2016-10-24 20:15:10 +02:00
ui ( ) - > nextWhenPressingEnterCheckBox - > setChecked ( settings . saveAndShowNextOnEnter ) ;
ui ( ) - > askBeforeDeletingCheckBox - > setChecked ( settings . askBeforeDeleting ) ;
ui ( ) - > hideTagSelectionComboBoxCheckBox - > setChecked ( settings . hideTagSelectionComboBox ) ;
ui ( ) - > hideCoverButtonsCheckBox - > setChecked ( settings . hideCoverButtons ) ;
2015-04-22 19:33:53 +02:00
}
}
// EditorTempOptionPage
EditorTempOptionPage : : EditorTempOptionPage ( QWidget * parentWindow ) :
2016-04-04 14:51:14 +02:00
EditorTempOptionPageBase ( parentWindow )
2015-04-22 19:33:53 +02:00
{ }
EditorTempOptionPage : : ~ EditorTempOptionPage ( )
{ }
bool EditorTempOptionPage : : apply ( )
{
if ( hasBeenShown ( ) ) {
2016-05-01 20:07:04 +02:00
BackupHelper : : backupDirectory ( ) = ui ( ) - > directoryWidget - > lineEdit ( ) - > text ( ) . toStdString ( ) ;
2015-04-22 19:33:53 +02:00
}
return true ;
}
void EditorTempOptionPage : : reset ( )
{
if ( hasBeenShown ( ) ) {
2016-05-01 20:07:04 +02:00
ui ( ) - > directoryWidget - > lineEdit ( ) - > setText ( QString : : fromStdString ( BackupHelper : : backupDirectory ( ) ) ) ;
2015-04-22 19:33:53 +02:00
}
}
QWidget * EditorTempOptionPage : : setupWidget ( )
{
2016-04-04 14:51:14 +02:00
auto * widget = EditorTempOptionPageBase : : setupWidget ( ) ;
2016-05-01 20:07:04 +02:00
ui ( ) - > notificationLabel - > setText ( QCoreApplication : : translate ( " QtGui::EditorTempOptionPage " , " To avoid unnecessary copying this directory should be on the same partition as the files you want to edit. " ) ) ;
2016-03-22 23:01:50 +01:00
ui ( ) - > notificationLabel - > setNotificationType ( NotificationType : : Information ) ;
2015-04-22 19:33:53 +02:00
return widget ;
}
// EditorFieldsOptionPage
2016-04-04 14:51:14 +02:00
EditorFieldsOptionPage : : EditorFieldsOptionPage ( QWidget * parentWidget ) :
2016-05-26 02:15:41 +02:00
EditorFieldsOptionPageBase ( parentWidget ) ,
2015-04-22 19:33:53 +02:00
m_model ( nullptr )
{ }
EditorFieldsOptionPage : : ~ EditorFieldsOptionPage ( )
{ }
bool EditorFieldsOptionPage : : apply ( )
{
if ( hasBeenShown ( ) & & m_model ) {
2016-10-24 20:15:10 +02:00
values ( ) . editor . fields . setItems ( m_model - > items ( ) ) ;
2015-04-22 19:33:53 +02:00
}
return true ;
}
void EditorFieldsOptionPage : : reset ( )
{
if ( hasBeenShown ( ) & & m_model ) {
2016-10-24 20:15:10 +02:00
m_model - > setItems ( values ( ) . editor . fields . items ( ) ) ;
2015-04-22 19:33:53 +02:00
}
}
QWidget * EditorFieldsOptionPage : : setupWidget ( )
{
2016-04-04 14:51:14 +02:00
auto * w = EditorFieldsOptionPageBase : : setupWidget ( ) ;
2015-04-22 19:33:53 +02:00
if ( ! m_model ) {
m_model = new KnownFieldModel ( w ) ;
}
ui ( ) - > fieldsListView - > setModel ( m_model ) ;
return w ;
}
// EditorAutoCorrectionOptionPage
2016-04-04 14:51:14 +02:00
EditorAutoCorrectionOptionPage : : EditorAutoCorrectionOptionPage ( QWidget * parentWidget ) :
EditorAutoCorrectionOptionPageBase ( parentWidget ) ,
2015-04-22 19:33:53 +02:00
m_model ( nullptr )
{ }
EditorAutoCorrectionOptionPage : : ~ EditorAutoCorrectionOptionPage ( )
{ }
bool EditorAutoCorrectionOptionPage : : apply ( )
{
if ( hasBeenShown ( ) ) {
2016-10-24 20:15:10 +02:00
auto & settings = values ( ) . editor . autoCompletition ;
settings . insertTitleFromFilename = ui ( ) - > insertTitleFromFilenameCheckBox - > isChecked ( ) ;
settings . trimWhitespaces = ui ( ) - > trimWhitespacesCheckBox - > isChecked ( ) ;
settings . formatNames = ui ( ) - > formatNamesCheckBox - > isChecked ( ) ;
settings . fixUmlauts = ui ( ) - > fixUmlautsCheckBox - > isChecked ( ) ;
2015-04-22 19:33:53 +02:00
if ( m_model ) {
2016-10-24 20:15:10 +02:00
settings . fields . setItems ( m_model - > items ( ) ) ;
2015-04-22 19:33:53 +02:00
}
}
return true ;
}
void EditorAutoCorrectionOptionPage : : reset ( )
{
if ( hasBeenShown ( ) ) {
2016-10-24 20:15:10 +02:00
const auto & settings = values ( ) . editor . autoCompletition ;
ui ( ) - > insertTitleFromFilenameCheckBox - > setChecked ( settings . insertTitleFromFilename ) ;
ui ( ) - > trimWhitespacesCheckBox - > setChecked ( settings . trimWhitespaces ) ;
ui ( ) - > formatNamesCheckBox - > setChecked ( settings . formatNames ) ;
ui ( ) - > fixUmlautsCheckBox - > setChecked ( settings . fixUmlauts ) ;
2015-04-22 19:33:53 +02:00
if ( m_model ) {
2016-10-24 20:15:10 +02:00
m_model - > setItems ( settings . fields . items ( ) ) ;
2015-04-22 19:33:53 +02:00
}
}
}
QWidget * EditorAutoCorrectionOptionPage : : setupWidget ( )
{
2016-04-04 14:51:14 +02:00
auto * w = EditorAutoCorrectionOptionPageBase : : setupWidget ( ) ;
2015-04-22 19:33:53 +02:00
if ( ! m_model ) {
m_model = new KnownFieldModel ( w ) ;
}
ui ( ) - > fieldsListView - > setModel ( m_model ) ;
return w ;
}
2016-03-05 16:50:23 +01:00
// EditorDbQueryOptionsPage
2016-04-04 14:51:14 +02:00
EditorDbQueryOptionsPage : : EditorDbQueryOptionsPage ( QWidget * parentWidget ) :
EditorDbQueryOptionsPageBase ( parentWidget )
2016-03-05 16:50:23 +01:00
{ }
EditorDbQueryOptionsPage : : ~ EditorDbQueryOptionsPage ( )
{ }
bool EditorDbQueryOptionsPage : : apply ( )
{
if ( hasBeenShown ( ) ) {
2016-10-24 20:15:10 +02:00
auto & settings = values ( ) . dbQuery ;
settings . musicBrainzUrl = ui ( ) - > musicBrainzUrlLineEdit - > text ( ) ;
settings . coverArtArchiveUrl = ui ( ) - > coverArtArchiveUrlLineEdit - > text ( ) ;
2016-03-05 16:50:23 +01:00
}
return true ;
}
void EditorDbQueryOptionsPage : : reset ( )
{
if ( hasBeenShown ( ) ) {
2016-10-24 20:15:10 +02:00
const auto & settings = values ( ) . dbQuery ;
ui ( ) - > musicBrainzUrlLineEdit - > setText ( settings . musicBrainzUrl ) ;
ui ( ) - > coverArtArchiveUrlLineEdit - > setText ( settings . coverArtArchiveUrl ) ;
2016-03-05 16:50:23 +01:00
}
}
2015-04-22 19:33:53 +02:00
// InfoOptionPage
2016-04-04 14:51:14 +02:00
InfoOptionPage : : InfoOptionPage ( QWidget * parentWidget ) :
InfoOptionPageBase ( parentWidget )
2015-04-22 19:33:53 +02:00
{ }
InfoOptionPage : : ~ InfoOptionPage ( )
{ }
bool InfoOptionPage : : apply ( )
{
if ( hasBeenShown ( ) ) {
2016-10-24 20:15:10 +02:00
auto & settings = values ( ) . editor ;
settings . forceFullParse = ui ( ) - > forceFullParseCheckBox - > isChecked ( ) ;
2016-04-21 23:55:22 +02:00
# ifndef TAGEDITOR_NO_WEBVIEW
2016-10-24 20:15:10 +02:00
settings . noWebView = ui ( ) - > noWebViewCheckBox - > isChecked ( ) ;
2016-04-21 23:55:22 +02:00
# endif
2015-04-22 19:33:53 +02:00
}
return true ;
}
void InfoOptionPage : : reset ( )
{
if ( hasBeenShown ( ) ) {
2016-10-24 20:15:10 +02:00
const auto & settings = values ( ) . editor ;
ui ( ) - > forceFullParseCheckBox - > setChecked ( settings . forceFullParse ) ;
2016-04-21 23:55:22 +02:00
# ifdef TAGEDITOR_NO_WEBVIEW
ui ( ) - > noWebViewCheckBox - > setChecked ( true ) ;
ui ( ) - > noWebViewCheckBox - > setEnabled ( false ) ;
# else
2016-10-24 20:15:10 +02:00
ui ( ) - > noWebViewCheckBox - > setChecked ( settings . noWebView ) ;
2016-04-21 23:55:22 +02:00
# endif
2015-04-22 19:33:53 +02:00
}
}
// TagProcessingGeneralOptionPage
2016-04-04 14:51:14 +02:00
TagProcessingGeneralOptionPage : : TagProcessingGeneralOptionPage ( QWidget * parentWidget ) :
TagProcessingGeneralOptionPageBase ( parentWidget )
2015-04-22 19:33:53 +02:00
{ }
TagProcessingGeneralOptionPage : : ~ TagProcessingGeneralOptionPage ( )
{ }
bool TagProcessingGeneralOptionPage : : apply ( )
{
if ( hasBeenShown ( ) ) {
2016-10-24 20:15:10 +02:00
auto & settings = values ( ) . tagPocessing ;
2015-04-22 19:33:53 +02:00
if ( ui ( ) - > latin1RadioButton - > isChecked ( ) ) {
2016-10-24 20:15:10 +02:00
settings . preferredEncoding = TagTextEncoding : : Latin1 ;
2015-04-22 19:33:53 +02:00
} else if ( ui ( ) - > utf8RadioButton - > isChecked ( ) ) {
2016-10-24 20:15:10 +02:00
settings . preferredEncoding = TagTextEncoding : : Utf8 ;
2015-04-22 19:33:53 +02:00
} else if ( ui ( ) - > utf16leRadioButton - > isChecked ( ) ) {
2016-10-24 20:15:10 +02:00
settings . preferredEncoding = TagTextEncoding : : Utf16LittleEndian ;
2015-04-22 19:33:53 +02:00
} else if ( ui ( ) - > utf16beRadioButton - > isChecked ( ) ) {
2016-10-24 20:15:10 +02:00
settings . preferredEncoding = TagTextEncoding : : Utf16BigEndian ;
2015-04-22 19:33:53 +02:00
} else if ( ui ( ) - > autoRadioButton - > isChecked ( ) ) {
2016-10-24 20:15:10 +02:00
settings . preferredEncoding = TagTextEncoding : : Unspecified ;
2015-04-22 19:33:53 +02:00
}
if ( ui ( ) - > ignoreUnsupportedRadioButton - > isChecked ( ) ) {
2016-10-24 20:15:10 +02:00
settings . unsupportedFieldHandling = UnsupportedFieldHandling : : Ignore ;
2015-04-22 19:33:53 +02:00
} else if ( ui ( ) - > discardUnsupportedRadioButton - > isChecked ( ) ) {
2016-10-24 20:15:10 +02:00
settings . unsupportedFieldHandling = UnsupportedFieldHandling : : Discard ;
2015-04-22 19:33:53 +02:00
}
2016-10-24 20:15:10 +02:00
settings . autoTagManagement = ui ( ) - > autoTagManagementCheckBox - > isChecked ( ) ;
2015-04-22 19:33:53 +02:00
}
return true ;
}
void TagProcessingGeneralOptionPage : : reset ( )
{
if ( hasBeenShown ( ) ) {
2016-10-24 20:15:10 +02:00
const auto & settings = values ( ) . tagPocessing ;
switch ( settings . preferredEncoding ) {
2015-04-22 19:33:53 +02:00
case TagTextEncoding : : Latin1 :
ui ( ) - > latin1RadioButton - > setChecked ( true ) ;
break ;
case TagTextEncoding : : Utf8 :
ui ( ) - > utf8RadioButton - > setChecked ( true ) ;
break ;
case TagTextEncoding : : Utf16LittleEndian :
ui ( ) - > utf16leRadioButton - > setChecked ( true ) ;
break ;
case TagTextEncoding : : Utf16BigEndian :
ui ( ) - > utf16beRadioButton - > setChecked ( true ) ;
break ;
case TagTextEncoding : : Unspecified :
ui ( ) - > autoRadioButton - > setChecked ( true ) ;
break ;
}
2016-10-24 20:15:10 +02:00
switch ( settings . unsupportedFieldHandling ) {
2015-04-22 19:33:53 +02:00
case UnsupportedFieldHandling : : Ignore :
ui ( ) - > ignoreUnsupportedRadioButton - > setChecked ( true ) ;
break ;
case UnsupportedFieldHandling : : Discard :
ui ( ) - > discardUnsupportedRadioButton - > setChecked ( true ) ;
break ;
}
2016-10-24 20:15:10 +02:00
ui ( ) - > autoTagManagementCheckBox - > setChecked ( settings . autoTagManagement ) ;
2015-04-22 19:33:53 +02:00
}
}
// Id3v1OptionPage
2016-04-04 14:51:14 +02:00
Id3v1OptionPage : : Id3v1OptionPage ( QWidget * parentWidget ) :
Id3v1OptionPageBase ( parentWidget )
2015-04-22 19:33:53 +02:00
{ }
Id3v1OptionPage : : ~ Id3v1OptionPage ( )
{ }
bool Id3v1OptionPage : : apply ( )
{
if ( hasBeenShown ( ) ) {
2016-10-24 20:15:10 +02:00
auto & settings = values ( ) . tagPocessing . id3 ;
2015-04-22 19:33:53 +02:00
if ( ui ( ) - > alwaysCreateRadioButton - > isChecked ( ) ) {
2016-10-24 20:15:10 +02:00
settings . v1Usage = TagUsage : : Always ;
2015-04-22 19:33:53 +02:00
} else if ( ui ( ) - > keepExistingRadioButton - > isChecked ( ) ) {
2016-10-24 20:15:10 +02:00
settings . v1Usage = TagUsage : : KeepExisting ;
2015-04-22 19:33:53 +02:00
} else if ( ui ( ) - > removeExistingRadioButton - > isChecked ( ) ) {
2016-10-24 20:15:10 +02:00
settings . v1Usage = TagUsage : : Never ;
2015-04-22 19:33:53 +02:00
}
}
return true ;
}
void Id3v1OptionPage : : reset ( )
{
if ( hasBeenShown ( ) ) {
2016-10-24 20:15:10 +02:00
const auto & settings = values ( ) . tagPocessing . id3 ;
switch ( settings . v1Usage ) {
2015-04-22 19:33:53 +02:00
case TagUsage : : Always :
ui ( ) - > alwaysCreateRadioButton - > setChecked ( true ) ;
break ;
case TagUsage : : KeepExisting :
ui ( ) - > keepExistingRadioButton - > setChecked ( true ) ;
break ;
case TagUsage : : Never :
ui ( ) - > removeExistingRadioButton - > setChecked ( true ) ;
break ;
}
}
}
// Id3v2OptionPage
2016-04-04 14:51:14 +02:00
Id3v2OptionPage : : Id3v2OptionPage ( QWidget * parentWidget ) :
Id3v2OptionPageBase ( parentWidget )
2015-04-22 19:33:53 +02:00
{ }
Id3v2OptionPage : : ~ Id3v2OptionPage ( )
{ }
bool Id3v2OptionPage : : apply ( )
{
if ( hasBeenShown ( ) ) {
2016-10-24 20:15:10 +02:00
auto & settings = values ( ) . tagPocessing . id3 ;
2015-04-22 19:33:53 +02:00
if ( ui ( ) - > alwaysCreateRadioButton - > isChecked ( ) ) {
2016-10-24 20:15:10 +02:00
settings . v2Usage = TagUsage : : Always ;
2015-04-22 19:33:53 +02:00
} else if ( ui ( ) - > keepExistingRadioButton - > isChecked ( ) ) {
2016-10-24 20:15:10 +02:00
settings . v2Usage = TagUsage : : KeepExisting ;
2015-04-22 19:33:53 +02:00
} else if ( ui ( ) - > removeExistingRadioButton - > isChecked ( ) ) {
2016-10-24 20:15:10 +02:00
settings . v2Usage = TagUsage : : Never ;
2015-04-22 19:33:53 +02:00
}
if ( ui ( ) - > version230radioButton - > isChecked ( ) ) {
2016-10-24 20:15:10 +02:00
settings . v2Version = 3 ;
2015-04-22 19:33:53 +02:00
} else if ( ui ( ) - > version240radioButton - > isChecked ( ) ) {
2016-10-24 20:15:10 +02:00
settings . v2Version = 4 ;
2015-04-22 19:33:53 +02:00
} else if ( ui ( ) - > version220radioButton - > isChecked ( ) ) {
2016-10-24 20:15:10 +02:00
settings . v2Version = 2 ;
2015-04-22 19:33:53 +02:00
}
2016-10-24 20:15:10 +02:00
settings . keepVersionOfExistingId3v2Tag = ui ( ) - > keepExistingVersionCheckBox - > isChecked ( ) ;
settings . mergeMultipleSuccessiveId3v2Tags = ui ( ) - > mergeRadioButton - > isChecked ( ) ;
2015-04-22 19:33:53 +02:00
}
return true ;
}
void Id3v2OptionPage : : reset ( )
{
if ( hasBeenShown ( ) ) {
2016-10-24 20:15:10 +02:00
const auto & settings = values ( ) . tagPocessing . id3 ;
switch ( settings . v2Usage ) {
2015-04-22 19:33:53 +02:00
case TagUsage : : Always :
ui ( ) - > alwaysCreateRadioButton - > setChecked ( true ) ;
break ;
case TagUsage : : KeepExisting :
ui ( ) - > keepExistingRadioButton - > setChecked ( true ) ;
break ;
case TagUsage : : Never :
ui ( ) - > removeExistingRadioButton - > setChecked ( true ) ;
break ;
}
2016-10-24 20:15:10 +02:00
switch ( settings . v2Version ) {
2015-04-22 19:33:53 +02:00
case 3 :
ui ( ) - > version230radioButton - > setChecked ( true ) ;
break ;
case 4 :
ui ( ) - > version240radioButton - > setChecked ( true ) ;
break ;
case 2 :
ui ( ) - > version220radioButton - > setChecked ( true ) ;
break ;
}
2016-10-24 20:15:10 +02:00
ui ( ) - > keepExistingVersionCheckBox - > setChecked ( settings . keepVersionOfExistingId3v2Tag ) ;
if ( settings . mergeMultipleSuccessiveId3v2Tags ) {
2015-04-22 19:33:53 +02:00
ui ( ) - > mergeRadioButton - > setChecked ( true ) ;
} else {
ui ( ) - > keepSeparateRadioButton - > setChecked ( true ) ;
}
}
}
2016-05-26 02:15:41 +02:00
// TagProcessingTargetsOptionPage
TagProcessingTargetsOptionPage : : TagProcessingTargetsOptionPage ( QWidget * parentWidget ) :
TagProcessingTargetsOptionPageBase ( parentWidget ) ,
m_model ( nullptr )
{ }
TagProcessingTargetsOptionPage : : ~ TagProcessingTargetsOptionPage ( )
{ }
bool TagProcessingTargetsOptionPage : : apply ( )
{
if ( hasBeenShown ( ) & & m_model ) {
2016-10-24 20:15:10 +02:00
values ( ) . editor . defaultTargets . setItems ( m_model - > items ( ) ) ;
2016-05-26 02:15:41 +02:00
}
return true ;
}
void TagProcessingTargetsOptionPage : : reset ( )
{
if ( hasBeenShown ( ) & & m_model ) {
2016-10-24 20:15:10 +02:00
m_model - > setItems ( values ( ) . editor . defaultTargets . items ( ) ) ;
2016-05-26 02:15:41 +02:00
}
}
QWidget * TagProcessingTargetsOptionPage : : setupWidget ( )
{
auto * w = TagProcessingTargetsOptionPageBase : : setupWidget ( ) ;
if ( ! m_model ) {
m_model = new TargetLevelModel ( w ) ;
}
ui ( ) - > targetsToBeAddedListView - > setModel ( m_model ) ;
return w ;
}
2015-11-21 01:13:45 +01:00
// FileLayoutPage
2016-04-04 14:51:14 +02:00
FileLayoutPage : : FileLayoutPage ( QWidget * parentWidget ) :
FileLayoutPageBase ( parentWidget )
2015-11-21 01:13:45 +01:00
{ }
FileLayoutPage : : ~ FileLayoutPage ( )
{ }
bool FileLayoutPage : : apply ( )
{
2016-04-04 14:51:14 +02:00
// error handling
errors ( ) . clear ( ) ;
bool ok = true ;
2015-11-21 01:13:45 +01:00
if ( hasBeenShown ( ) ) {
2016-10-24 20:15:10 +02:00
auto & settings = values ( ) . tagPocessing . fileLayout ;
settings . forceRewrite = ui ( ) - > forceRewriteCheckBox - > isChecked ( ) ;
2015-11-21 01:13:45 +01:00
if ( ui ( ) - > minPaddingSpinBox - > value ( ) > ui ( ) - > maxPaddingSpinBox - > value ( ) ) {
2016-04-04 14:51:14 +02:00
errors ( ) < < QCoreApplication : : translate ( " QtGui::FileLayoutPage " , " Minimum padding must be less or equal than maximum padding. " ) ;
ok = false ;
} else {
2016-10-24 20:15:10 +02:00
settings . maxPadding = static_cast < size_t > ( ui ( ) - > maxPaddingSpinBox - > value ( ) ) ;
settings . minPadding = static_cast < size_t > ( ui ( ) - > minPaddingSpinBox - > value ( ) ) ;
2015-11-21 01:13:45 +01:00
}
2016-10-24 20:15:10 +02:00
settings . preferredPadding = static_cast < size_t > ( ui ( ) - > preferredPaddingSpinBox - > value ( ) ) ;
2015-11-26 19:25:59 +01:00
if ( ui ( ) - > tagPosBeforeDataRadioButton - > isChecked ( ) ) {
2016-10-24 20:15:10 +02:00
settings . preferredTagPosition = ElementPosition : : BeforeData ;
2015-11-26 19:25:59 +01:00
} else if ( ui ( ) - > tagPosAfterDataRadioButton - > isChecked ( ) ) {
2016-10-24 20:15:10 +02:00
settings . preferredTagPosition = ElementPosition : : AfterData ;
2015-11-26 19:25:59 +01:00
} else if ( ui ( ) - > tagPosKeepRadioButton - > isChecked ( ) ) {
2016-10-24 20:15:10 +02:00
settings . preferredTagPosition = ElementPosition : : Keep ;
2015-11-21 01:13:45 +01:00
}
2016-10-24 20:15:10 +02:00
settings . forceTagPosition = ui ( ) - > tagPosForceCheckBox - > isChecked ( ) ;
2015-11-26 19:25:59 +01:00
if ( ui ( ) - > indexPosBeforeDataRadioButton - > isChecked ( ) ) {
2016-10-24 20:15:10 +02:00
settings . preferredIndexPosition = ElementPosition : : BeforeData ;
2015-11-26 19:25:59 +01:00
} else if ( ui ( ) - > indexPosAfterDataRadioButton - > isChecked ( ) ) {
2016-10-24 20:15:10 +02:00
settings . preferredIndexPosition = ElementPosition : : AfterData ;
2015-11-26 19:25:59 +01:00
} else if ( ui ( ) - > indexPosKeepRadioButton - > isChecked ( ) ) {
2016-10-24 20:15:10 +02:00
settings . preferredIndexPosition = ElementPosition : : Keep ;
2015-11-26 19:25:59 +01:00
}
2016-10-24 20:15:10 +02:00
settings . forceIndexPosition = ui ( ) - > indexPosForceCheckBox - > isChecked ( ) ;
2015-11-21 01:13:45 +01:00
}
2016-04-04 14:51:14 +02:00
return ok ;
2015-11-21 01:13:45 +01:00
}
void FileLayoutPage : : reset ( )
{
if ( hasBeenShown ( ) ) {
2016-10-24 20:15:10 +02:00
const auto & settings = values ( ) . tagPocessing . fileLayout ;
ui ( ) - > forceRewriteCheckBox - > setChecked ( settings . forceRewrite ) ;
ui ( ) - > maxPaddingSpinBox - > setValue ( static_cast < int > ( settings . maxPadding ) ) ;
ui ( ) - > minPaddingSpinBox - > setValue ( static_cast < int > ( settings . minPadding ) ) ;
ui ( ) - > preferredPaddingSpinBox - > setValue ( static_cast < int > ( settings . preferredPadding ) ) ;
switch ( settings . preferredTagPosition ) {
2015-11-26 19:25:59 +01:00
case ElementPosition : : BeforeData :
ui ( ) - > tagPosBeforeDataRadioButton - > setChecked ( true ) ;
break ;
case ElementPosition : : AfterData :
ui ( ) - > tagPosAfterDataRadioButton - > setChecked ( true ) ;
break ;
case ElementPosition : : Keep :
ui ( ) - > tagPosKeepRadioButton - > setChecked ( true ) ;
break ;
}
2016-10-24 20:15:10 +02:00
ui ( ) - > tagPosForceCheckBox - > setChecked ( settings . forceTagPosition ) ;
switch ( settings . preferredIndexPosition ) {
2015-11-26 19:25:59 +01:00
case ElementPosition : : BeforeData :
ui ( ) - > indexPosBeforeDataRadioButton - > setChecked ( true ) ;
break ;
case ElementPosition : : AfterData :
ui ( ) - > indexPosAfterDataRadioButton - > setChecked ( true ) ;
2015-11-21 01:13:45 +01:00
break ;
2015-11-26 19:25:59 +01:00
case ElementPosition : : Keep :
ui ( ) - > indexPosKeepRadioButton - > setChecked ( true ) ;
2015-11-21 01:13:45 +01:00
break ;
}
2016-10-24 20:15:10 +02:00
ui ( ) - > indexPosForceCheckBox - > setChecked ( settings . forceIndexPosition ) ;
2015-11-21 01:13:45 +01:00
}
}
QWidget * FileLayoutPage : : setupWidget ( )
{
2016-04-04 14:51:14 +02:00
auto * widget = FileLayoutPageBase : : setupWidget ( ) ;
2015-11-21 01:13:45 +01:00
ui ( ) - > preferredTagPosLabel - > setNotificationType ( NotificationType : : Warning ) ;
ui ( ) - > preferredTagPosLabel - > setText ( QApplication : : translate ( " QtGui::FileLayoutPage " , " These options might be ignored if not supported by either the format or the implementation. " ) ) ;
QObject : : connect ( ui ( ) - > minPaddingSpinBox , static_cast < void ( QSpinBox : : * ) ( int ) > ( & QSpinBox : : valueChanged ) , ui ( ) - > maxPaddingSpinBox , & QSpinBox : : setMinimum ) ;
QObject : : connect ( ui ( ) - > minPaddingSpinBox , static_cast < void ( QSpinBox : : * ) ( int ) > ( & QSpinBox : : valueChanged ) , ui ( ) - > preferredPaddingSpinBox , & QSpinBox : : setMinimum ) ;
QObject : : connect ( ui ( ) - > maxPaddingSpinBox , static_cast < void ( QSpinBox : : * ) ( int ) > ( & QSpinBox : : valueChanged ) , ui ( ) - > minPaddingSpinBox , & QSpinBox : : setMaximum ) ;
QObject : : connect ( ui ( ) - > maxPaddingSpinBox , static_cast < void ( QSpinBox : : * ) ( int ) > ( & QSpinBox : : valueChanged ) , ui ( ) - > preferredPaddingSpinBox , & QSpinBox : : setMaximum ) ;
return widget ;
}
2015-04-22 19:33:53 +02:00
/*
TRANSLATOR QtGui : : SettingsDialog
Necessary for lupdate .
*/
SettingsDialog : : SettingsDialog ( QWidget * parent ) :
Dialogs : : SettingsDialog ( parent )
{
// setup categories
QList < Dialogs : : OptionCategory * > categories ;
Dialogs : : OptionCategory * category ;
category = new Dialogs : : OptionCategory ( this ) ;
category - > setDisplayName ( tr ( " Tag processing " ) ) ;
category - > assignPages ( QList < Dialogs : : OptionPage * > ( )
2016-05-26 02:15:41 +02:00
< < new TagProcessingGeneralOptionPage < < new Id3v1OptionPage
< < new Id3v2OptionPage < < new TagProcessingTargetsOptionPage < < new FileLayoutPage ) ;
2015-12-02 01:24:27 +01:00
category - > setIcon ( QIcon : : fromTheme ( QStringLiteral ( " tag " ) , QIcon ( QStringLiteral ( " :/tageditor/icons/hicolor/32x32/settingscategories/tag.png " ) ) ) ) ;
2015-04-22 19:33:53 +02:00
categories < < category ;
category = new Dialogs : : OptionCategory ( this ) ;
category - > setDisplayName ( tr ( " Editor " ) ) ;
2015-12-02 01:24:27 +01:00
category - > setIcon ( QIcon : : fromTheme ( QStringLiteral ( " document-edit " ) , QIcon ( QStringLiteral ( " :/tageditor/icons/hicolor/32x32/settingscategories/key-enter.png " ) ) ) ) ;
2015-04-22 19:33:53 +02:00
category - > assignPages ( QList < Dialogs : : OptionPage * > ( )
< < new EditorGeneralOptionPage < < new EditorTempOptionPage ( this ) < < new EditorFieldsOptionPage
2016-03-05 16:50:23 +01:00
< < new InfoOptionPage < < new EditorAutoCorrectionOptionPage < < new EditorDbQueryOptionsPage ) ;
2015-04-22 19:33:53 +02:00
categories < < category ;
category = new Dialogs : : OptionCategory ( this ) ;
category - > setDisplayName ( tr ( " File browser " ) ) ;
2015-12-02 01:24:27 +01:00
category - > setIcon ( QIcon : : fromTheme ( QStringLiteral ( " view-list-tree " ) , QIcon ( QStringLiteral ( " :/tageditor/icons/hicolor/32x32/settingscategories/system-file-manager.png " ) ) ) ) ;
2015-04-22 19:33:53 +02:00
category - > assignPages ( QList < Dialogs : : OptionPage * > ( ) < < new FileBrowserGeneralOptionPage ) ;
categories < < category ;
2016-04-04 14:51:14 +02:00
2016-10-24 20:15:10 +02:00
categories < < values ( ) . qt . category ( ) ;
2016-04-04 14:51:14 +02:00
2015-04-22 19:33:53 +02:00
categoryModel ( ) - > setCategories ( categories ) ;
setMinimumSize ( 800 , 450 ) ;
setWindowIcon ( QIcon : : fromTheme ( QStringLiteral ( " preferences-other " ) , QIcon ( QStringLiteral ( " :/tageditor/icons/hicolor/32x32/settingscategories/preferences-other.png " ) ) ) ) ;
2016-08-14 22:49:47 +02:00
// some settings could be applied without restarting the application, good idea?
//connect(this, &Dialogs::SettingsDialog::applied, bind(&Dialogs::QtSettings::apply, &Settings::qtSettings()));
2015-04-22 19:33:53 +02:00
}
SettingsDialog : : ~ SettingsDialog ( )
{ }
}
2016-09-12 21:52:39 +02:00
INSTANTIATE_UI_FILE_BASED_OPTION_PAGE_NS ( QtGui , FileBrowserGeneralOptionPage )
INSTANTIATE_UI_FILE_BASED_OPTION_PAGE_NS ( QtGui , EditorGeneralOptionPage )
INSTANTIATE_UI_FILE_BASED_OPTION_PAGE_NS ( QtGui , EditorTempOptionPage )
INSTANTIATE_UI_FILE_BASED_OPTION_PAGE_NS ( QtGui , EditorFieldsOptionPage )
INSTANTIATE_UI_FILE_BASED_OPTION_PAGE_NS ( QtGui , EditorAutoCorrectionOptionPage )
INSTANTIATE_UI_FILE_BASED_OPTION_PAGE_NS ( QtGui , EditorDbQueryOptionsPage )
INSTANTIATE_UI_FILE_BASED_OPTION_PAGE_NS ( QtGui , InfoOptionPage )
INSTANTIATE_UI_FILE_BASED_OPTION_PAGE_NS ( QtGui , TagProcessingGeneralOptionPage )
INSTANTIATE_UI_FILE_BASED_OPTION_PAGE_NS ( QtGui , Id3v1OptionPage )
INSTANTIATE_UI_FILE_BASED_OPTION_PAGE_NS ( QtGui , Id3v2OptionPage )
INSTANTIATE_UI_FILE_BASED_OPTION_PAGE_NS ( QtGui , TagProcessingTargetsOptionPage )
INSTANTIATE_UI_FILE_BASED_OPTION_PAGE_NS ( QtGui , FileLayoutPage )