mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
Merge branch 'qPrefDisplay' of https://github.com/janiversen/subsurface
This commit is contained in:
commit
e834874a7a
14 changed files with 246 additions and 142 deletions
|
@ -15,6 +15,7 @@ static qPref *self = new qPref;
|
|||
|
||||
void qPref::loadSync(bool doSync)
|
||||
{
|
||||
qPrefDisplay::instance()->loadSync(doSync);
|
||||
}
|
||||
|
||||
const QString qPref::canonical_version() const
|
||||
|
|
|
@ -20,6 +20,8 @@ public:
|
|||
|
||||
// Load/Sync local settings (disk) and struct preference
|
||||
void loadSync(bool doSync);
|
||||
void load() { loadSync(false); }
|
||||
void sync() { loadSync(true); }
|
||||
|
||||
public:
|
||||
enum cloud_status {
|
||||
|
|
|
@ -39,7 +39,12 @@ void qPrefDisplay::set_divelist_font(const QString& value)
|
|||
emit divelist_font_changed(value);
|
||||
}
|
||||
}
|
||||
DISK_LOADSYNC_TXT(Display, "/divelist_font", divelist_font);
|
||||
void qPrefDisplay::disk_divelist_font(bool doSync)
|
||||
{
|
||||
LOADSYNC_TXT("/divelist_font", divelist_font);
|
||||
if (!doSync)
|
||||
setCorrectFont();
|
||||
}
|
||||
|
||||
GET_PREFERENCE_DOUBLE(Display, font_size);
|
||||
void qPrefDisplay::set_font_size(double value)
|
||||
|
@ -53,10 +58,37 @@ void qPrefDisplay::set_font_size(double value)
|
|||
emit font_size_changed(value);
|
||||
}
|
||||
}
|
||||
DISK_LOADSYNC_DOUBLE(Display, "/font_size", font_size);
|
||||
void qPrefDisplay::disk_font_size(bool doSync)
|
||||
{
|
||||
LOADSYNC_DOUBLE("/font_size", font_size);
|
||||
if (!doSync)
|
||||
setCorrectFont();
|
||||
}
|
||||
|
||||
HANDLE_PREFERENCE_BOOL(Display, "/displayinvalid", display_invalid_dives);
|
||||
|
||||
HANDLE_PREFERENCE_BOOL(Display, "/show_developer", show_developer);
|
||||
|
||||
HANDLE_PREFERENCE_TXT(Display, "/theme", theme);
|
||||
|
||||
|
||||
void qPrefDisplay::setCorrectFont()
|
||||
{
|
||||
// get the font from the settings or our defaults
|
||||
// respect the system default font size if none is explicitly set
|
||||
QFont defaultFont(prefs.divelist_font);
|
||||
if (IS_FP_SAME(system_divelist_default_font_size, -1.0)) {
|
||||
prefs.font_size = qApp->font().pointSizeF();
|
||||
system_divelist_default_font_size = prefs.font_size; // this way we don't save it on exit
|
||||
}
|
||||
// painful effort to ignore previous default fonts on Windows - ridiculous
|
||||
QString fontName = defaultFont.toString();
|
||||
if (fontName.contains(","))
|
||||
fontName = fontName.left(fontName.indexOf(","));
|
||||
if (subsurface_ignore_font(qPrintable(fontName)))
|
||||
defaultFont = QFont(prefs.divelist_font);
|
||||
else
|
||||
COPY_TXT(divelist_font, fontName);
|
||||
defaultFont.setPointSizeF(prefs.font_size);
|
||||
qApp->setFont(defaultFont);
|
||||
}
|
||||
|
|
|
@ -19,6 +19,8 @@ public:
|
|||
|
||||
// Load/Sync local settings (disk) and struct preference
|
||||
void loadSync(bool doSync);
|
||||
void load() { loadSync(false); }
|
||||
void sync() { loadSync(true); }
|
||||
|
||||
public:
|
||||
const QString divelist_font() const;
|
||||
|
@ -51,5 +53,8 @@ private:
|
|||
void disk_display_invalid_dives(bool doSync);
|
||||
void disk_show_developer(bool doSync);
|
||||
void disk_theme(bool doSync);
|
||||
|
||||
// font helper function
|
||||
void setCorrectFont();
|
||||
};
|
||||
#endif
|
||||
|
|
|
@ -1913,75 +1913,6 @@ void GeneralSettingsObjectWrapper::setAutoRecalculateThumbnails(bool value)
|
|||
emit autoRecalculateThumbnailsChanged(value);
|
||||
}
|
||||
|
||||
DisplaySettingsObjectWrapper::DisplaySettingsObjectWrapper(QObject *parent) :
|
||||
QObject(parent)
|
||||
{
|
||||
}
|
||||
|
||||
QString DisplaySettingsObjectWrapper::divelistFont() const
|
||||
{
|
||||
return prefs.divelist_font;
|
||||
}
|
||||
|
||||
double DisplaySettingsObjectWrapper::fontSize() const
|
||||
{
|
||||
return prefs.font_size;
|
||||
}
|
||||
|
||||
bool DisplaySettingsObjectWrapper::displayInvalidDives() const
|
||||
{
|
||||
return prefs.display_invalid_dives;
|
||||
}
|
||||
|
||||
void DisplaySettingsObjectWrapper::setDivelistFont(const QString& value)
|
||||
{
|
||||
|
||||
QString newValue = value;
|
||||
if (value.contains(","))
|
||||
newValue = value.left(value.indexOf(","));
|
||||
|
||||
if (newValue == prefs.divelist_font)
|
||||
return;
|
||||
|
||||
QSettings s;
|
||||
s.beginGroup(group);
|
||||
s.setValue("divelist_font", value);
|
||||
|
||||
if (!subsurface_ignore_font(qPrintable(newValue))) {
|
||||
free((void *)prefs.divelist_font);
|
||||
prefs.divelist_font = copy_qstring(newValue);
|
||||
qApp->setFont(QFont(newValue));
|
||||
}
|
||||
emit divelistFontChanged(newValue);
|
||||
}
|
||||
|
||||
void DisplaySettingsObjectWrapper::setFontSize(double value)
|
||||
{
|
||||
if (value == prefs.font_size)
|
||||
return;
|
||||
|
||||
QSettings s;
|
||||
s.beginGroup(group);
|
||||
s.setValue("font_size", value);
|
||||
prefs.font_size = value;
|
||||
QFont defaultFont = qApp->font();
|
||||
defaultFont.setPointSizeF(prefs.font_size);
|
||||
qApp->setFont(defaultFont);
|
||||
emit fontSizeChanged(value);
|
||||
}
|
||||
|
||||
void DisplaySettingsObjectWrapper::setDisplayInvalidDives(bool value)
|
||||
{
|
||||
if (value == prefs.display_invalid_dives)
|
||||
return;
|
||||
|
||||
QSettings s;
|
||||
s.beginGroup(group);
|
||||
s.setValue("displayinvalid", value);
|
||||
prefs.display_invalid_dives = value;
|
||||
emit displayInvalidDivesChanged(value);
|
||||
}
|
||||
|
||||
LanguageSettingsObjectWrapper::LanguageSettingsObjectWrapper(QObject *parent) :
|
||||
QObject(parent)
|
||||
{
|
||||
|
@ -2194,7 +2125,7 @@ QObject(parent),
|
|||
planner_settings(new DivePlannerSettings(this)),
|
||||
unit_settings(new UnitsSettings(this)),
|
||||
general_settings(new GeneralSettingsObjectWrapper(this)),
|
||||
display_settings(new DisplaySettingsObjectWrapper(this)),
|
||||
display_settings(new qPrefDisplay(this)),
|
||||
language_settings(new LanguageSettingsObjectWrapper(this)),
|
||||
animation_settings(new AnimationsSettingsObjectWrapper(this)),
|
||||
location_settings(new LocationServiceSettingsObjectWrapper(this)),
|
||||
|
@ -2287,29 +2218,7 @@ void SettingsObjectWrapper::load()
|
|||
GET_BOOL("auto_recalculate_thumbnails", auto_recalculate_thumbnails);
|
||||
s.endGroup();
|
||||
|
||||
s.beginGroup("Display");
|
||||
// get the font from the settings or our defaults
|
||||
// respect the system default font size if none is explicitly set
|
||||
QFont defaultFont = s.value("divelist_font", prefs.divelist_font).value<QFont>();
|
||||
if (IS_FP_SAME(system_divelist_default_font_size, -1.0)) {
|
||||
prefs.font_size = qApp->font().pointSizeF();
|
||||
system_divelist_default_font_size = prefs.font_size; // this way we don't save it on exit
|
||||
}
|
||||
prefs.font_size = s.value("font_size", prefs.font_size).toFloat();
|
||||
// painful effort to ignore previous default fonts on Windows - ridiculous
|
||||
QString fontName = defaultFont.toString();
|
||||
if (fontName.contains(","))
|
||||
fontName = fontName.left(fontName.indexOf(","));
|
||||
if (subsurface_ignore_font(qPrintable(fontName))) {
|
||||
defaultFont = QFont(prefs.divelist_font);
|
||||
} else {
|
||||
free((void *)prefs.divelist_font);
|
||||
prefs.divelist_font = copy_qstring(fontName);
|
||||
}
|
||||
defaultFont.setPointSizeF(prefs.font_size);
|
||||
qApp->setFont(defaultFont);
|
||||
GET_BOOL("displayinvalid", display_invalid_dives);
|
||||
s.endGroup();
|
||||
qPrefDisplay::instance()->load();
|
||||
|
||||
s.beginGroup("Animations");
|
||||
GET_INT("animation_speed", animation_speed);
|
||||
|
@ -2420,6 +2329,8 @@ void SettingsObjectWrapper::load()
|
|||
|
||||
void SettingsObjectWrapper::sync()
|
||||
{
|
||||
qPrefDisplay::instance()->sync();
|
||||
|
||||
QSettings s;
|
||||
s.beginGroup("Planner");
|
||||
s.setValue("last_stop", prefs.last_stop);
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
#include <QDate>
|
||||
|
||||
#include "core/pref.h"
|
||||
#include "core/settings/qPref.h"
|
||||
|
||||
/* Wrapper class for the Settings. This will allow
|
||||
* seamlessy integration of the settings with the QML
|
||||
|
@ -594,28 +595,6 @@ private:
|
|||
const QString group = QStringLiteral("GeneralSettings");
|
||||
};
|
||||
|
||||
class DisplaySettingsObjectWrapper : public QObject {
|
||||
Q_OBJECT
|
||||
Q_PROPERTY(QString divelist_font READ divelistFont WRITE setDivelistFont NOTIFY divelistFontChanged)
|
||||
Q_PROPERTY(double font_size READ fontSize WRITE setFontSize NOTIFY fontSizeChanged)
|
||||
Q_PROPERTY(bool display_invalid_dives READ displayInvalidDives WRITE setDisplayInvalidDives NOTIFY displayInvalidDivesChanged)
|
||||
public:
|
||||
DisplaySettingsObjectWrapper(QObject *parent);
|
||||
QString divelistFont() const;
|
||||
double fontSize() const;
|
||||
bool displayInvalidDives() const;
|
||||
public slots:
|
||||
void setDivelistFont(const QString& value);
|
||||
void setFontSize(double value);
|
||||
void setDisplayInvalidDives(bool value);
|
||||
signals:
|
||||
void divelistFontChanged(const QString& value);
|
||||
void fontSizeChanged(double value);
|
||||
void displayInvalidDivesChanged(bool value);
|
||||
private:
|
||||
const QString group = QStringLiteral("Display");
|
||||
};
|
||||
|
||||
class LanguageSettingsObjectWrapper : public QObject {
|
||||
Q_OBJECT
|
||||
Q_PROPERTY(QString language READ language WRITE setLanguage NOTIFY languageChanged)
|
||||
|
@ -709,7 +688,7 @@ class SettingsObjectWrapper : public QObject {
|
|||
Q_PROPERTY(UnitsSettings* units MEMBER unit_settings CONSTANT)
|
||||
|
||||
Q_PROPERTY(GeneralSettingsObjectWrapper* general MEMBER general_settings CONSTANT)
|
||||
Q_PROPERTY(DisplaySettingsObjectWrapper* display MEMBER display_settings CONSTANT)
|
||||
Q_PROPERTY(qPrefDisplay* display MEMBER display_settings CONSTANT)
|
||||
Q_PROPERTY(LanguageSettingsObjectWrapper* language MEMBER language_settings CONSTANT)
|
||||
Q_PROPERTY(AnimationsSettingsObjectWrapper* animation MEMBER animation_settings CONSTANT)
|
||||
Q_PROPERTY(LocationServiceSettingsObjectWrapper* Location MEMBER location_settings CONSTANT)
|
||||
|
@ -728,7 +707,7 @@ public:
|
|||
DivePlannerSettings *planner_settings;
|
||||
UnitsSettings *unit_settings;
|
||||
GeneralSettingsObjectWrapper *general_settings;
|
||||
DisplaySettingsObjectWrapper *display_settings;
|
||||
qPrefDisplay *display_settings;
|
||||
LanguageSettingsObjectWrapper *language_settings;
|
||||
AnimationsSettingsObjectWrapper *animation_settings;
|
||||
LocationServiceSettingsObjectWrapper *location_settings;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue