diff --git a/src/lib/data/html/speeddial.html b/src/lib/data/html/speeddial.html
index 0258f387f..b84553f3d 100644
--- a/src/lib/data/html/speeddial.html
+++ b/src/lib/data/html/speeddial.html
@@ -527,7 +527,8 @@ input[type=checkbox] {
data-max-pages-row="%ROW-PAGES%"
data-dial-width="%SD-SIZE%"
data-sd-center="%SD-CENTER%"
- data-initial-script='%INITIAL-SCRIPT%'>
+ data-initial-script='%INITIAL-SCRIPT%'
+ data-lock-dials='%LOCK-DIALS%'>
@@ -544,6 +545,10 @@ input[type=checkbox] {
%TXT_CNTRDLS%
+
+
+ %TXT_LOCKDIALS%
+
diff --git a/src/lib/data/html/speeddial.user.js b/src/lib/data/html/speeddial.user.js
index 5d15e986f..90bc72adc 100644
--- a/src/lib/data/html/speeddial.user.js
+++ b/src/lib/data/html/speeddial.user.js
@@ -37,6 +37,7 @@ function configureSpeedDial()
$('#BgImgSelSiz').val(scriptData.bSize).attr('selected', 'selected');
$('#BgImgToggle').prop('checked', scriptData.imgBackground != "");
$('#SdCntrToggle').prop('checked', scriptData.sdCenter == "true");
+ $('#SdLockDials').prop('checked', scriptData.lockDials == "true");
$('#BgImgToggle').is(':checked') ? $('#BgImgSel').removeAttr('disabled') : $('#BgImgSel').attr('disabled', 'disabled');
$('#BgImgToggle').is(':checked') ? $('#BgImgSelSiz').removeAttr('disabled') : $('#BgImgSelSiz').attr('disabled', 'disabled');
$('#SdSizeToggle').is(':checked') ? $('#SdSize').removeAttr('disabled') : $('#SdSize').attr('disabled', 'disabled');
@@ -343,11 +344,13 @@ function saveSettings() {
scriptData.maxPagesRow = $('#PgInRow').val();
scriptData.dialWidth = $('#SdSize').val();
scriptData.sdCenter = $('#SdCntrToggle').prop('checked');
+ scriptData.lockDials = $('#SdLockDials').prop('checked');
external.speedDial.setBackgroundImage($('#BgImgHoldUrl').val());
external.speedDial.setBackgroundImageSize($('#BgImgSelSiz').val());
external.speedDial.setPagesInRow(scriptData.maxPagesRow);
external.speedDial.setSdSize(scriptData.dialWidth);
external.speedDial.setSdCentered(scriptData.sdCenter == "true");
+ external.speedDial.setLockDials(scriptData.lockDials == "true");
alignPage();
}
@@ -479,6 +482,7 @@ function init() {
containment: 'document',
opacity: 0.8,
distance: 40,
+ disabled: scriptData.lockDials == "true",
start: function(event, ui) {
disableCentering();
},
diff --git a/src/lib/network/schemehandlers/falkonschemehandler.cpp b/src/lib/network/schemehandlers/falkonschemehandler.cpp
index b26140ad5..bedd0509b 100644
--- a/src/lib/network/schemehandlers/falkonschemehandler.cpp
+++ b/src/lib/network/schemehandlers/falkonschemehandler.cpp
@@ -235,6 +235,7 @@ QString FalkonSchemeReply::speeddialPage()
dPage.replace(QLatin1String("%TXT_NRROWS%"), tr("Maximum pages in a row:"));
dPage.replace(QLatin1String("%TXT_SDSIZE%"), tr("Change size of pages:"));
dPage.replace(QLatin1String("%TXT_CNTRDLS%"), tr("Center speed dials"));
+ dPage.replace(QLatin1String("%TXT_LOCKDIALS%"), tr("Lock the position of SpeedDial entries."));
dPage = QzTools::applyDirectionToPage(dPage);
}
@@ -248,6 +249,7 @@ QString FalkonSchemeReply::speeddialPage()
page.replace(QLatin1String("%ROW-PAGES%"), QString::number(dial->pagesInRow()));
page.replace(QLatin1String("%SD-SIZE%"), QString::number(dial->sdSize()));
page.replace(QLatin1String("%SD-CENTER%"), dial->sdCenter() ? QSL("true") : QSL("false"));
+ page.replace(QLatin1String("%LOCK-DIALS%"), dial->lockDials() ? QSL("true") : QSL("false"));
return page;
}
diff --git a/src/lib/plugins/speeddial.cpp b/src/lib/plugins/speeddial.cpp
index cce0cc24d..fd115e445 100644
--- a/src/lib/plugins/speeddial.cpp
+++ b/src/lib/plugins/speeddial.cpp
@@ -60,6 +60,7 @@ void SpeedDial::loadSettings()
m_maxPagesInRow = settings.value(QSL("pagesrow"), 4).toInt();
m_sizeOfSpeedDials = settings.value(QSL("sdsize"), 231).toInt();
m_sdcentered = settings.value(QSL("sdcenter"), false).toBool();
+ m_lockDials = settings.value(QSL("lock-dials"), false).toBool();
settings.endGroup();
if (allPages.isEmpty()) {
@@ -90,6 +91,7 @@ void SpeedDial::saveSettings()
settings.setValue(QSL("pagesrow"), m_maxPagesInRow);
settings.setValue(QSL("sdsize"), m_sizeOfSpeedDials);
settings.setValue(QSL("sdcenter"), m_sdcentered);
+ settings.setValue(QSL("lock-dials"), m_lockDials);
settings.endGroup();
}
@@ -175,6 +177,13 @@ bool SpeedDial::sdCenter()
return m_sdcentered;
}
+bool SpeedDial::lockDials()
+{
+ ENSURE_LOADED;
+
+ return m_lockDials;
+}
+
QString SpeedDial::backgroundImage()
{
ENSURE_LOADED;
@@ -324,6 +333,11 @@ void SpeedDial::setSdCentered(bool centered)
m_autoSaver->changeOccurred();
}
+void SpeedDial::setLockDials(bool lockDials)
+{
+ m_lockDials = lockDials;
+}
+
void SpeedDial::thumbnailCreated(const QPixmap &pixmap)
{
auto* thumbnailer = qobject_cast(sender());
diff --git a/src/lib/plugins/speeddial.h b/src/lib/plugins/speeddial.h
index a8e9c5802..e23b347b4 100644
--- a/src/lib/plugins/speeddial.h
+++ b/src/lib/plugins/speeddial.h
@@ -62,6 +62,7 @@ public:
int pagesInRow();
int sdSize();
bool sdCenter();
+ bool lockDials();
QString backgroundImage();
QString backgroundImageUrl();
@@ -86,6 +87,7 @@ public Q_SLOTS:
void setPagesInRow(int count);
void setSdSize(int count);
void setSdCentered(bool centered);
+ void setLockDials(bool lockDials);
private Q_SLOTS:
void thumbnailCreated(const QPixmap &pixmap);
@@ -105,6 +107,7 @@ private:
int m_maxPagesInRow;
int m_sizeOfSpeedDials;
bool m_sdcentered;
+ bool m_lockDials;
QList m_pages;
AutoSaver* m_autoSaver;