214 lines
6.3 KiB
C++
214 lines
6.3 KiB
C++
/*!
|
|
@file Settings.h
|
|
|
|
@brief Save all the settings for the programme in the right place.
|
|
|
|
@author L. J. Barman
|
|
|
|
Copyright (c) 2008-2020, L. J. Barman and others, all rights reserved
|
|
|
|
This file is part of the PianoBooster application
|
|
|
|
PianoBooster is free software: you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation, either version 3 of the License, or
|
|
(at your option) any later version.
|
|
|
|
PianoBooster is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with PianoBooster. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
*/
|
|
|
|
#ifndef __SETTINGS_H__
|
|
#define __SETTINGS_H__
|
|
|
|
#include <QSettings>
|
|
#include <QDomDocument>
|
|
#include "Song.h"
|
|
#include "Notation.h"
|
|
|
|
#define QSTR_APPNAME "pianobooster"
|
|
|
|
class GuiSidePanel;
|
|
class GuiTopBar;
|
|
class QtWindow;
|
|
|
|
/// Save all the settings for the programme in the right place.
|
|
class CSettings : public QSettings
|
|
{
|
|
|
|
public:
|
|
CSettings(QtWindow *mainWindow);
|
|
|
|
void init(CSong* song, GuiSidePanel* sidePanel, GuiTopBar* topBar);
|
|
|
|
/// returns true if the user wants to see the note names
|
|
bool isNoteNamesEnabled() { return m_noteNamesEnabled; }
|
|
bool displayCourtesyAccidentals() { return CNotation::displayCourtesyAccidentals(); }
|
|
|
|
bool isTutorPagesEnabled() { return m_tutorPagesEnabled; }
|
|
bool isFollowThroughErrorsEnabled() { return m_followThroughErrorsEnabled; }
|
|
bool isColoredNotesEnabled() { return m_coloredNotes; }
|
|
|
|
/// Saves in the .ini file whether the user wants to show the note names
|
|
void setNoteNamesEnabled(bool value);
|
|
void setColoredNotes(bool value);
|
|
void setTutorPagesEnabled(bool value);
|
|
void setFollowThroughErrorsEnabled(bool value);
|
|
|
|
void setCourtesyAccidentals(bool value);
|
|
void setAdvancedMode(bool value) { m_advancedMode = value;}
|
|
|
|
/// returns true if the user wants to see the note names
|
|
bool showNoteNames(){
|
|
return m_noteNamesEnabled;
|
|
}
|
|
|
|
/// returns true if the user wants to see color-coded notes
|
|
bool coloredNotes(){
|
|
return m_coloredNotes;
|
|
}
|
|
|
|
void coloredNotes(bool b){
|
|
m_coloredNotes = b;
|
|
}
|
|
|
|
/// returns true if the user wants Follow Skill to ignore errors
|
|
bool followThroughErrors(){
|
|
return m_followThroughErrorsEnabled;
|
|
}
|
|
|
|
void updateTutorPage();
|
|
void openSongFile(const QString & filename);
|
|
QString getCurrentSongName() { return m_currentSongName; }
|
|
void setCurrentSongName(const QString & name);
|
|
|
|
QString getCurrentBookName() { return m_currentBookName; }
|
|
void setCurrentBookName(const QString & name, bool clearSongName);
|
|
QStringList getBookList();
|
|
QStringList getSongList();
|
|
void writeSettings();
|
|
void loadSettings();
|
|
void unzipBoosterMusicBooks();
|
|
QString getCurrentSongLongFileName()
|
|
{
|
|
if (getCurrentSongName().isEmpty())
|
|
return QString();
|
|
return m_bookPath + getCurrentBookName() + '/' + getCurrentSongName();
|
|
}
|
|
QStringList getFluidSoundFontNames()
|
|
{
|
|
return m_fluidSoundFontNames;
|
|
}
|
|
void setFluidSoundFontNames(QStringList names)
|
|
{
|
|
m_fluidSoundFontNames = names;
|
|
}
|
|
void setFluidSoundFontNames(QString names)
|
|
{
|
|
m_fluidSoundFontNames = QStringList(names);
|
|
}
|
|
void addFluidSoundFontName(QString sfName)
|
|
{
|
|
m_fluidSoundFontNames.append(sfName);
|
|
}
|
|
void removeFluidSoundFontName(QString sfName)
|
|
{
|
|
m_fluidSoundFontNames.removeAll(sfName);
|
|
}
|
|
void clearFluidSoundFontNames()
|
|
{
|
|
m_fluidSoundFontNames.clear();
|
|
}
|
|
void saveSoundFontSettings()
|
|
{
|
|
setValue("FluidSynth/SoundFont", getFluidSoundFontNames());
|
|
}
|
|
|
|
// has a new sound font been entered that is not the same as the old sound font
|
|
bool isNewSoundFontEntered()
|
|
{
|
|
if (getFluidSoundFontNames().isEmpty())
|
|
return false;
|
|
|
|
return getFluidSoundFontNames() != value("FluidSynth/SoundFont").toStringList();
|
|
}
|
|
|
|
void pianistActive() { m_pianistActive = true;}
|
|
void setActiveHand(whichPart_t hand);
|
|
|
|
void setChannelHands(int left, int right);
|
|
|
|
void fastUpdateRate(bool fullSpeed);
|
|
QString getWarningMessage() {return m_warningMessage;}
|
|
void updateWarningMessages();
|
|
|
|
QString selectedLangauge() {
|
|
QString locale = value("General/lang","").toString();
|
|
if (locale.isEmpty()) {
|
|
locale = QLocale::system().bcp47Name();
|
|
int n = locale.indexOf("_");
|
|
if ((n > 0)) {
|
|
locale = locale.left(n);
|
|
}
|
|
}
|
|
return locale;
|
|
}
|
|
|
|
private:
|
|
|
|
Q_OBJECT
|
|
QDomElement openDomElement(QDomElement parent, const QString & elementName, const QString & attributeName = QString());
|
|
void loadHandSettings();
|
|
void saveHandSettings();
|
|
void loadPartSettings();
|
|
void savePartSettings();
|
|
void loadSongSettings();
|
|
void saveSongSettings();
|
|
void loadBookSettings();
|
|
void saveBookSettings();
|
|
void loadXmlFile();
|
|
void saveXmlFile();
|
|
void setDefaultValue(const QString & key, const QVariant & value );
|
|
void setupDefaultSoundFont();
|
|
|
|
// returns either 'left' 'right' or 'both'
|
|
const QString partToHandString(whichPart_t part)
|
|
{
|
|
if (part == PB_PART_left)
|
|
return "left";
|
|
else if (part == PB_PART_right)
|
|
return "right";
|
|
return "both";
|
|
}
|
|
|
|
QDomDocument m_domDocument; // The Complete XML DOM document for one book
|
|
QDomElement m_domBook; // only one book
|
|
QDomElement m_domSong; // The Elements for each song
|
|
QDomElement m_domHand; // The saved settings for each hand
|
|
|
|
QtWindow *m_mainWindow;
|
|
|
|
CSong* m_song;
|
|
GuiSidePanel* m_guiSidePanel;
|
|
GuiTopBar* m_guiTopBar;
|
|
bool m_noteNamesEnabled;
|
|
bool m_coloredNotes;
|
|
bool m_tutorPagesEnabled;
|
|
bool m_advancedMode;
|
|
bool m_followThroughErrorsEnabled;
|
|
QString m_bookPath;
|
|
QString m_currentBookName;
|
|
QString m_currentSongName;
|
|
QString m_warningMessage;
|
|
QStringList m_fluidSoundFontNames = QStringList();
|
|
bool m_pianistActive;
|
|
};
|
|
|
|
#endif // __SETTINGS_H__
|