Open DBus settings interface
This commit is contained in:
parent
68442e5280
commit
d747ca3f56
6 changed files with 39 additions and 45 deletions
|
@ -44,7 +44,6 @@ DockSettings::DockSettings(QObject *parent)
|
||||||
, m_direction(Left)
|
, m_direction(Left)
|
||||||
, m_visibility(AlwaysShow)
|
, m_visibility(AlwaysShow)
|
||||||
, m_settings(new QSettings(QSettings::UserScope, "cutefishos", "dock"))
|
, m_settings(new QSettings(QSettings::UserScope, "cutefishos", "dock"))
|
||||||
, m_fileWatcher(new QFileSystemWatcher(this))
|
|
||||||
{
|
{
|
||||||
if (!m_settings->contains("IconSize"))
|
if (!m_settings->contains("IconSize"))
|
||||||
m_settings->setValue("IconSize", 54);
|
m_settings->setValue("IconSize", 54);
|
||||||
|
@ -61,9 +60,6 @@ DockSettings::DockSettings(QObject *parent)
|
||||||
m_direction = static_cast<Direction>(m_settings->value("Direction").toInt());
|
m_direction = static_cast<Direction>(m_settings->value("Direction").toInt());
|
||||||
m_visibility = static_cast<Visibility>(m_settings->value("Visibility").toInt());
|
m_visibility = static_cast<Visibility>(m_settings->value("Visibility").toInt());
|
||||||
m_roundedWindowEnabled = m_settings->value("RoundedWindow").toBool();
|
m_roundedWindowEnabled = m_settings->value("RoundedWindow").toBool();
|
||||||
|
|
||||||
m_fileWatcher->addPath(m_settings->fileName());
|
|
||||||
connect(m_fileWatcher, &QFileSystemWatcher::fileChanged, this, &DockSettings::onConfigFileChanged);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int DockSettings::iconSize() const
|
int DockSettings::iconSize() const
|
||||||
|
@ -73,9 +69,12 @@ int DockSettings::iconSize() const
|
||||||
|
|
||||||
void DockSettings::setIconSize(int iconSize)
|
void DockSettings::setIconSize(int iconSize)
|
||||||
{
|
{
|
||||||
|
if (m_iconSize != iconSize) {
|
||||||
m_iconSize = iconSize;
|
m_iconSize = iconSize;
|
||||||
|
m_settings->setValue("IconSize", iconSize);
|
||||||
emit iconSizeChanged();
|
emit iconSizeChanged();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
DockSettings::Direction DockSettings::direction() const
|
DockSettings::Direction DockSettings::direction() const
|
||||||
{
|
{
|
||||||
|
@ -84,9 +83,12 @@ DockSettings::Direction DockSettings::direction() const
|
||||||
|
|
||||||
void DockSettings::setDirection(const Direction &direction)
|
void DockSettings::setDirection(const Direction &direction)
|
||||||
{
|
{
|
||||||
|
if (m_direction != direction) {
|
||||||
m_direction = direction;
|
m_direction = direction;
|
||||||
|
m_settings->setValue("Direction", direction);
|
||||||
emit directionChanged();
|
emit directionChanged();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
DockSettings::Visibility DockSettings::visibility() const
|
DockSettings::Visibility DockSettings::visibility() const
|
||||||
{
|
{
|
||||||
|
@ -97,6 +99,7 @@ void DockSettings::setVisibility(const DockSettings::Visibility &visibility)
|
||||||
{
|
{
|
||||||
if (m_visibility != visibility) {
|
if (m_visibility != visibility) {
|
||||||
m_visibility = visibility;
|
m_visibility = visibility;
|
||||||
|
m_settings->setValue("Visibility", visibility);
|
||||||
emit visibilityChanged();
|
emit visibilityChanged();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -123,30 +126,3 @@ void DockSettings::setRoundedWindowEnabled(bool enabled)
|
||||||
emit roundedWindowEnabledChanged();
|
emit roundedWindowEnabledChanged();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void DockSettings::onConfigFileChanged()
|
|
||||||
{
|
|
||||||
if (!QFile(m_settings->fileName()).exists())
|
|
||||||
return;
|
|
||||||
|
|
||||||
m_settings->sync();
|
|
||||||
|
|
||||||
int iconSize = m_settings->value("IconSize").toInt();
|
|
||||||
Direction direction = static_cast<Direction>(m_settings->value("Direction").toInt());
|
|
||||||
Visibility visibility = static_cast<Visibility>(m_settings->value("Visibility").toInt());
|
|
||||||
bool roundedWindow = m_settings->value("RoundedWindow").toBool();
|
|
||||||
|
|
||||||
if (m_iconSize != iconSize)
|
|
||||||
setIconSize(iconSize);
|
|
||||||
|
|
||||||
if (m_direction != direction)
|
|
||||||
setDirection(direction);
|
|
||||||
|
|
||||||
if (m_visibility != visibility)
|
|
||||||
setVisibility(visibility);
|
|
||||||
|
|
||||||
if (m_roundedWindowEnabled != roundedWindow)
|
|
||||||
setRoundedWindowEnabled(roundedWindow);
|
|
||||||
|
|
||||||
m_fileWatcher->addPath(m_settings->fileName());
|
|
||||||
}
|
|
||||||
|
|
|
@ -22,7 +22,6 @@
|
||||||
|
|
||||||
#include <QObject>
|
#include <QObject>
|
||||||
#include <QSettings>
|
#include <QSettings>
|
||||||
#include <QFileSystemWatcher>
|
|
||||||
|
|
||||||
class DockSettings : public QObject
|
class DockSettings : public QObject
|
||||||
{
|
{
|
||||||
|
@ -65,9 +64,6 @@ public:
|
||||||
bool roundedWindowEnabled() const;
|
bool roundedWindowEnabled() const;
|
||||||
void setRoundedWindowEnabled(bool enabled);
|
void setRoundedWindowEnabled(bool enabled);
|
||||||
|
|
||||||
private slots:
|
|
||||||
void onConfigFileChanged();
|
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void iconSizeChanged();
|
void iconSizeChanged();
|
||||||
void directionChanged();
|
void directionChanged();
|
||||||
|
@ -81,7 +77,6 @@ private:
|
||||||
Direction m_direction;
|
Direction m_direction;
|
||||||
Visibility m_visibility;
|
Visibility m_visibility;
|
||||||
QSettings *m_settings;
|
QSettings *m_settings;
|
||||||
QFileSystemWatcher *m_fileWatcher;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // DOCKSETTINGS_H
|
#endif // DOCKSETTINGS_H
|
||||||
|
|
|
@ -51,7 +51,7 @@ MainWindow::MainWindow(QQuickView *parent)
|
||||||
setColor(Qt::transparent);
|
setColor(Qt::transparent);
|
||||||
|
|
||||||
setFlags(Qt::FramelessWindowHint | Qt::WindowDoesNotAcceptFocus);
|
setFlags(Qt::FramelessWindowHint | Qt::WindowDoesNotAcceptFocus);
|
||||||
KWindowSystem::setOnDesktop(winId(), NET::OnAllDesktops);
|
// KWindowSystem::setOnDesktop(winId(), NET::OnAllDesktops);
|
||||||
KWindowSystem::setType(winId(), NET::Dock);
|
KWindowSystem::setType(winId(), NET::Dock);
|
||||||
|
|
||||||
engine()->rootContext()->setContextProperty("appModel", m_appModel);
|
engine()->rootContext()->setContextProperty("appModel", m_appModel);
|
||||||
|
@ -61,6 +61,7 @@ MainWindow::MainWindow(QQuickView *parent)
|
||||||
engine()->rootContext()->setContextProperty("trash", m_trashManager);
|
engine()->rootContext()->setContextProperty("trash", m_trashManager);
|
||||||
|
|
||||||
setSource(QUrl(QStringLiteral("qrc:/qml/main.qml")));
|
setSource(QUrl(QStringLiteral("qrc:/qml/main.qml")));
|
||||||
|
setScreen(qApp->primaryScreen());
|
||||||
setResizeMode(QQuickView::SizeRootObjectToView);
|
setResizeMode(QQuickView::SizeRootObjectToView);
|
||||||
initScreens();
|
initScreens();
|
||||||
|
|
||||||
|
@ -109,6 +110,21 @@ bool MainWindow::pinned(const QString &desktop)
|
||||||
return m_appModel->isDesktopPinned(desktop);
|
return m_appModel->isDesktopPinned(desktop);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MainWindow::setDirection(int direction)
|
||||||
|
{
|
||||||
|
DockSettings::self()->setDirection(static_cast<DockSettings::Direction>(direction));
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWindow::setIconSize(int iconSize)
|
||||||
|
{
|
||||||
|
DockSettings::self()->setIconSize(iconSize);
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWindow::setVisibility(int visibility)
|
||||||
|
{
|
||||||
|
DockSettings::self()->setVisibility(static_cast<DockSettings::Visibility>(visibility));
|
||||||
|
}
|
||||||
|
|
||||||
void MainWindow::updateSize()
|
void MainWindow::updateSize()
|
||||||
{
|
{
|
||||||
resizeWindow();
|
resizeWindow();
|
||||||
|
|
|
@ -42,6 +42,10 @@ public:
|
||||||
void remove(const QString &desktop);
|
void remove(const QString &desktop);
|
||||||
bool pinned(const QString &desktop);
|
bool pinned(const QString &desktop);
|
||||||
|
|
||||||
|
void setDirection(int direction);
|
||||||
|
void setIconSize(int iconSize);
|
||||||
|
void setVisibility(int visibility);
|
||||||
|
|
||||||
Q_INVOKABLE void updateSize();
|
Q_INVOKABLE void updateSize();
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
|
|
|
@ -7,5 +7,9 @@
|
||||||
<arg name="desktopFile" type="s" direction="in"/>
|
<arg name="desktopFile" type="s" direction="in"/>
|
||||||
<arg type="b" direction="out"/>
|
<arg type="b" direction="out"/>
|
||||||
</method>
|
</method>
|
||||||
|
|
||||||
|
<method name="setDirection"><arg name="direction" type="i" direction="in"/></method>
|
||||||
|
<method name="setIconSize"><arg name="iconSize" type="i" direction="in"/></method>
|
||||||
|
<method name="setVisibility"><arg name="visibility" type="i" direction="in"/></method>
|
||||||
</interface>
|
</interface>
|
||||||
</node>
|
</node>
|
||||||
|
|
|
@ -162,15 +162,14 @@ void XWindowInterface::setViewStruts(QWindow *view, DockSettings::Direction dire
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case DockSettings::Bottom: {
|
case DockSettings::Bottom: {
|
||||||
const int bottomOffset { wholeScreen.bottom() - currentScreen.bottom() };
|
strut.bottom_width = rect.height() + edgeMargins;
|
||||||
strut.bottom_width = rect.height() + bottomOffset + edgeMargins;
|
|
||||||
strut.bottom_start = rect.x();
|
strut.bottom_start = rect.x();
|
||||||
strut.bottom_end = rect.x() + rect.width();
|
strut.bottom_end = rect.x() + rect.width();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case DockSettings::Right: {
|
case DockSettings::Right: {
|
||||||
const int rightOffset = {wholeScreen.right() - currentScreen.right()};
|
// const int rightOffset = {wholeScreen.right() - currentScreen.right()};
|
||||||
strut.right_width = rect.width() + rightOffset + edgeMargins;
|
strut.right_width = rect.width() + edgeMargins;
|
||||||
strut.right_start = rect.y();
|
strut.right_start = rect.y();
|
||||||
strut.right_end = rect.y() + rect.height() - 1;
|
strut.right_end = rect.y() + rect.height() - 1;
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Add table
Reference in a new issue