fix: avoid create menu actions everytime when trigger context menu.

fix the minor memory leak issue, also bring some possibility to
implement custom keybinding.

And oops I also did another feature in this commit..
Now we are able to set mouse wheel behavior in config dialog.
This commit is contained in:
Gary Wang
2021-01-24 00:07:58 +08:00
parent b3011f47e4
commit 1449844fdd
16 changed files with 624 additions and 249 deletions

View File

@ -28,6 +28,13 @@ DoubleClickBehavior Settings::doubleClickBehavior()
return stringToDoubleClickBehavior(result);
}
MouseWheelBehavior Settings::mouseWheelBehavior()
{
QString result = m_qsettings->value("mouse_wheel_behavior", "close").toString().toLower();
return stringToMouseWheelBehavior(result);
}
void Settings::setStayOnTop(bool on)
{
m_qsettings->setValue("stay_on_top", on);
@ -40,6 +47,12 @@ void Settings::setDoubleClickBehavior(DoubleClickBehavior dcb)
m_qsettings->sync();
}
void Settings::setMouseWheelBehavior(MouseWheelBehavior mwb)
{
m_qsettings->setValue("mouse_wheel_behavior", mouseWheelBehaviorToString(mwb));
m_qsettings->sync();
}
QString Settings::doubleClickBehaviorToString(DoubleClickBehavior dcb)
{
static QMap<DoubleClickBehavior, QString> _map {
@ -51,6 +64,16 @@ QString Settings::doubleClickBehaviorToString(DoubleClickBehavior dcb)
return _map.value(dcb, "close");
}
QString Settings::mouseWheelBehaviorToString(MouseWheelBehavior mwb)
{
static QMap<MouseWheelBehavior, QString> _map {
{ActionZoomImage, "zoom"},
{ActionPrevNextImage, "switch"}
};
return _map.value(mwb, "zoom");
}
DoubleClickBehavior Settings::stringToDoubleClickBehavior(QString str)
{
static QMap<QString, DoubleClickBehavior> _map {
@ -62,6 +85,16 @@ DoubleClickBehavior Settings::stringToDoubleClickBehavior(QString str)
return _map.value(str, ActionCloseWindow);
}
MouseWheelBehavior Settings::stringToMouseWheelBehavior(QString str)
{
static QMap<QString, MouseWheelBehavior> _map {
{"zoom", ActionZoomImage},
{"switch", ActionPrevNextImage}
};
return _map.value(str, ActionZoomImage);
}
Settings::Settings()
: QObject(qApp)
{