From 928d428e11984a6512eb05ed3e3eeb24d6a1499b Mon Sep 17 00:00:00 2001 From: cutefishd Date: Thu, 1 Apr 2021 01:27:40 +0800 Subject: [PATCH] Update --- .vscode/settings.json | 58 ---------------------------- debian/changelog | 5 +++ debian/compat | 1 + debian/control | 24 ++++++++++++ debian/copyright | 3 ++ debian/rules | 9 +++++ debian/source/format | 1 + screen/common/control.cpp | 51 +++++++++--------------- screen/common/control.h | 27 ++++++------- screen/common/orientation_sensor.cpp | 5 ++- screen/common/orientation_sensor.h | 5 ++- screen/confighandler.cpp | 56 ++++++++++++--------------- screen/confighandler.h | 17 ++++---- screen/outputmodel.cpp | 3 +- screen/screen.cpp | 5 ++- 15 files changed, 120 insertions(+), 150 deletions(-) delete mode 100644 .vscode/settings.json create mode 100644 debian/changelog create mode 100644 debian/compat create mode 100644 debian/control create mode 100644 debian/copyright create mode 100755 debian/rules create mode 100644 debian/source/format diff --git a/.vscode/settings.json b/.vscode/settings.json deleted file mode 100644 index a1c27fe..0000000 --- a/.vscode/settings.json +++ /dev/null @@ -1,58 +0,0 @@ -{ - "files.associations": { - "array": "cpp", - "atomic": "cpp", - "bit": "cpp", - "*.tcc": "cpp", - "cctype": "cpp", - "chrono": "cpp", - "clocale": "cpp", - "cmath": "cpp", - "compare": "cpp", - "concepts": "cpp", - "condition_variable": "cpp", - "cstdarg": "cpp", - "cstddef": "cpp", - "cstdint": "cpp", - "cstdio": "cpp", - "cstdlib": "cpp", - "ctime": "cpp", - "cwchar": "cpp", - "cwctype": "cpp", - "deque": "cpp", - "list": "cpp", - "map": "cpp", - "unordered_map": "cpp", - "vector": "cpp", - "exception": "cpp", - "algorithm": "cpp", - "functional": "cpp", - "iterator": "cpp", - "memory": "cpp", - "memory_resource": "cpp", - "numeric": "cpp", - "optional": "cpp", - "random": "cpp", - "ratio": "cpp", - "string": "cpp", - "string_view": "cpp", - "system_error": "cpp", - "tuple": "cpp", - "type_traits": "cpp", - "utility": "cpp", - "future": "cpp", - "initializer_list": "cpp", - "iosfwd": "cpp", - "limits": "cpp", - "mutex": "cpp", - "new": "cpp", - "ostream": "cpp", - "ranges": "cpp", - "stdexcept": "cpp", - "stop_token": "cpp", - "streambuf": "cpp", - "thread": "cpp", - "typeinfo": "cpp", - "variant": "cpp" - } -} \ No newline at end of file diff --git a/debian/changelog b/debian/changelog new file mode 100644 index 0000000..57f35d3 --- /dev/null +++ b/debian/changelog @@ -0,0 +1,5 @@ +libcutefish (0.1) UNRELEASED; urgency=low + + * Initial release (CutefishOS) + + -- CutefishOS Thu, 16 Oct 2014 17:22:15 +0200 diff --git a/debian/compat b/debian/compat new file mode 100644 index 0000000..ec63514 --- /dev/null +++ b/debian/compat @@ -0,0 +1 @@ +9 diff --git a/debian/control b/debian/control new file mode 100644 index 0000000..f6b448c --- /dev/null +++ b/debian/control @@ -0,0 +1,24 @@ +Source: libcutefish +Section: devel +Priority: optional +Maintainer: CutefishOS +Build-Depends: cmake, + debhelper (>= 9), + extra-cmake-modules, + libkf5networkmanagerqt-dev, + libkf5kio-dev, + modemmanager-qt-dev, + libqt5sensors5-dev, + qtbase5-dev, + qtdeclarative5-dev, + qtquickcontrols2-5-dev, + qttools5-dev, + qttools5-dev-tools +Standards-Version: 4.5.0 +Homepage: https://github.com/cutefishos/qt-plugins + +Package: libcutefish +Architecture: any +Depends: ${misc:Depends}, + ${shlibs:Depends} +Description: CutefishOS Library diff --git a/debian/copyright b/debian/copyright new file mode 100644 index 0000000..716fe64 --- /dev/null +++ b/debian/copyright @@ -0,0 +1,3 @@ +Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ +Upstream-Name: calamares +Source: diff --git a/debian/rules b/debian/rules new file mode 100755 index 0000000..ab2f7c3 --- /dev/null +++ b/debian/rules @@ -0,0 +1,9 @@ +#!/usr/bin/make -f + +export QT_SELECT=5 + +%: + dh $@ + +override_dh_auto_configure: + dh_auto_configure -- -DEMBED_TRANSLATIONS=ON -DBUILD_TESTING=ON diff --git a/debian/source/format b/debian/source/format new file mode 100644 index 0000000..163aaf8 --- /dev/null +++ b/debian/source/format @@ -0,0 +1 @@ +3.0 (quilt) diff --git a/screen/common/control.cpp b/screen/common/control.cpp index 8275e4c..67170ad 100644 --- a/screen/common/control.cpp +++ b/screen/common/control.cpp @@ -17,11 +17,11 @@ along with this program. If not, see . #include "control.h" #include "globals.h" -#include +#include +#include #include -#include #include -#include +#include #include #include @@ -38,14 +38,15 @@ void Control::activateWatcher() if (m_watcher) { return; } - m_watcher = new QFileSystemWatcher({filePath()}, this); - connect(m_watcher, &QFileSystemWatcher::fileChanged, this, [this]() { + m_watcher = new KDirWatch(this); + m_watcher->addFile(filePath()); + connect(m_watcher, &KDirWatch::dirty, this, [this]() { readFile(); Q_EMIT changed(); }); } -QFileSystemWatcher* Control::watcher() const +KDirWatch *Control::watcher() const { return m_watcher; } @@ -61,19 +62,15 @@ bool Control::writeFile() return true; } if (!QDir().mkpath(dirPath())) { - // TODO: error message return false; } // write updated data to file QFile file(path); if (!file.open(QIODevice::WriteOnly)) { - // TODO: logging category? -// qCWarning(KSCREEN_COMMON) << "Failed to open config control file for writing! " << file.errorString(); return false; } file.write(QJsonDocument::fromVariant(infoMap).toJson()); -// qCDebug(KSCREEN_COMMON) << "Control saved on: " << file.fileName(); return true; } @@ -98,12 +95,12 @@ QString Control::filePathFromHash(const QString &hash) const return dirPath() % hash; } -QVariantMap& Control::info() +QVariantMap &Control::info() { return m_info; } -const QVariantMap& Control::constInfo() const +const QVariantMap &Control::constInfo() const { return m_info; } @@ -126,7 +123,7 @@ ControlConfig::ControlConfig(KScreen::ConfigPtr config, QObject *parent) : Control(parent) , m_config(config) { -// qDebug() << "Looking for control file:" << config->connectedOutputsHash(); + // qDebug() << "Looking for control file:" << config->connectedOutputsHash(); readFile(); // TODO: use a file watcher in case of changes to the control file while @@ -184,8 +181,7 @@ bool ControlConfig::writeFile() { bool success = true; for (auto *outputControl : m_outputsControls) { - if (getOutputRetention(outputControl->id(), outputControl->name()) - == OutputRetention::Individual) { + if (getOutputRetention(outputControl->id(), outputControl->name()) == OutputRetention::Individual) { continue; } success &= outputControl->writeFile(); @@ -303,8 +299,8 @@ qreal ControlConfig::getScale(const QString &outputId, const QString &outputName } // Info for output not found. - return -1; - } + return -1; +} void ControlConfig::setScale(const KScreen::OutputPtr &output, qreal value) { @@ -321,7 +317,6 @@ void ControlConfig::setScale(const QString &outputId, const QString &outputName, if (auto *control = getOutputControl(outputId, outputName)) { control->setScale(value); } - }; for (it = outputsInfo.begin(); it != outputsInfo.end(); ++it) { @@ -387,7 +382,6 @@ void ControlConfig::setAutoRotate(const QString &outputId, const QString &output if (auto *control = getOutputControl(outputId, outputName)) { control->setAutoRotate(value); } - }; for (it = outputsInfo.begin(); it != outputsInfo.end(); ++it) { @@ -415,8 +409,7 @@ bool ControlConfig::getAutoRotateOnlyInTabletMode(const KScreen::OutputPtr &outp return getAutoRotateOnlyInTabletMode(output->hashMd5(), output->name()); } -bool ControlConfig::getAutoRotateOnlyInTabletMode(const QString &outputId, - const QString &outputName) const +bool ControlConfig::getAutoRotateOnlyInTabletMode(const QString &outputId, const QString &outputName) const { const auto retention = getOutputRetention(outputId, outputName); if (retention == OutputRetention::Individual) { @@ -445,8 +438,7 @@ void ControlConfig::setAutoRotateOnlyInTabletMode(const KScreen::OutputPtr &outp } // TODO: combine methods (templated functions) -void ControlConfig::setAutoRotateOnlyInTabletMode(const QString &outputId, - const QString &outputName, bool value) +void ControlConfig::setAutoRotateOnlyInTabletMode(const QString &outputId, const QString &outputName, bool value) { QList::iterator it; QVariantList outputsInfo = getOutputs(); @@ -477,14 +469,12 @@ void ControlConfig::setAutoRotateOnlyInTabletMode(const QString &outputId, setOutputAutoRotateOnlyInTabletMode(); } - KScreen::OutputPtr ControlConfig::getReplicationSource(const KScreen::OutputPtr &output) const { return getReplicationSource(output->hashMd5(), output->name()); } -KScreen::OutputPtr ControlConfig::getReplicationSource(const QString &outputId, - const QString &outputName) const +KScreen::OutputPtr ControlConfig::getReplicationSource(const QString &outputId, const QString &outputName) const { const QVariantList outputsInfo = getOutputs(); for (const auto &variantInfo : outputsInfo) { @@ -512,14 +502,12 @@ KScreen::OutputPtr ControlConfig::getReplicationSource(const QString &outputId, return nullptr; } -void ControlConfig::setReplicationSource(const KScreen::OutputPtr &output, - const KScreen::OutputPtr &source) +void ControlConfig::setReplicationSource(const KScreen::OutputPtr &output, const KScreen::OutputPtr &source) { setReplicationSource(output->hashMd5(), output->name(), source); } -void ControlConfig::setReplicationSource(const QString &outputId, const QString &outputName, - const KScreen::OutputPtr &source) +void ControlConfig::setReplicationSource(const QString &outputId, const QString &outputName, const KScreen::OutputPtr &source) { QList::iterator it; QVariantList outputsInfo = getOutputs(); @@ -558,8 +546,7 @@ void ControlConfig::setOutputs(QVariantList outputsInfo) auto &infoMap = info(); infoMap[QStringLiteral("outputs")] = outputsInfo; } -ControlOutput* ControlConfig::getOutputControl(const QString &outputId, - const QString &outputName) const +ControlOutput *ControlConfig::getOutputControl(const QString &outputId, const QString &outputName) const { for (auto *control : m_outputsControls) { if (control->id() == outputId && control->name() == outputName) { diff --git a/screen/common/control.h b/screen/common/control.h index 5cea1ec..75f2038 100644 --- a/screen/common/control.h +++ b/screen/common/control.h @@ -14,16 +14,17 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . *********************************************************************/ + #ifndef COMMON_CONTROL_H #define COMMON_CONTROL_H #include #include -#include #include +#include -class QFileSystemWatcher; +class KDirWatch; class Control : public QObject { @@ -38,7 +39,6 @@ public: explicit Control(QObject *parent = nullptr); - ~Control() override = default; virtual bool writeFile(); @@ -52,16 +52,16 @@ protected: virtual QString filePath() const = 0; QString filePathFromHash(const QString &hash) const; void readFile(); - QVariantMap& info(); - const QVariantMap& constInfo() const; - QFileSystemWatcher* watcher() const; + QVariantMap &info(); + const QVariantMap &constInfo() const; + KDirWatch *watcher() const; static OutputRetention convertVariantToOutputRetention(QVariant variant); private: static QString s_dirName; QVariantMap m_info; - QFileSystemWatcher *m_watcher = nullptr; + KDirWatch *m_watcher = nullptr; }; class ControlOutput; @@ -90,15 +90,12 @@ public: bool getAutoRotateOnlyInTabletMode(const KScreen::OutputPtr &output) const; bool getAutoRotateOnlyInTabletMode(const QString &outputId, const QString &outputName) const; void setAutoRotateOnlyInTabletMode(const KScreen::OutputPtr &output, bool value); - void setAutoRotateOnlyInTabletMode(const QString &outputId, const QString &outputName, - bool value); + void setAutoRotateOnlyInTabletMode(const QString &outputId, const QString &outputName, bool value); KScreen::OutputPtr getReplicationSource(const KScreen::OutputPtr &output) const; - KScreen::OutputPtr getReplicationSource(const QString &outputId, - const QString &outputName) const; + KScreen::OutputPtr getReplicationSource(const QString &outputId, const QString &outputName) const; void setReplicationSource(const KScreen::OutputPtr &output, const KScreen::OutputPtr &source); - void setReplicationSource(const QString &outputId, const QString &outputName, - const KScreen::OutputPtr &source); + void setReplicationSource(const QString &outputId, const QString &outputName, const KScreen::OutputPtr &source); QString dirPath() const override; QString filePath() const override; @@ -110,11 +107,11 @@ private: QVariantList getOutputs() const; void setOutputs(QVariantList outputsInfo); bool infoIsOutput(const QVariantMap &info, const QString &outputId, const QString &outputName) const; - ControlOutput* getOutputControl(const QString &outputId, const QString &outputName) const; + ControlOutput *getOutputControl(const QString &outputId, const QString &outputName) const; KScreen::ConfigPtr m_config; QStringList m_duplicateOutputIds; - QVector m_outputsControls; + QVector m_outputsControls; }; class ControlOutput : public Control diff --git a/screen/common/orientation_sensor.cpp b/screen/common/orientation_sensor.cpp index 2615529..0cc456e 100644 --- a/screen/common/orientation_sensor.cpp +++ b/screen/common/orientation_sensor.cpp @@ -1,13 +1,16 @@ /******************************************************************** Copyright © 2019 Roman Gilg + This program 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 2 of the License, or (at your option) any later version. + This program 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 this program. If not, see . *********************************************************************/ @@ -75,4 +78,4 @@ void OrientationSensor::setEnabled(bool enable) m_value = QOrientationReading::Undefined; } Q_EMIT enabledChanged(enable); -} \ No newline at end of file +} diff --git a/screen/common/orientation_sensor.h b/screen/common/orientation_sensor.h index 7ffdecf..6aace60 100644 --- a/screen/common/orientation_sensor.h +++ b/screen/common/orientation_sensor.h @@ -1,13 +1,16 @@ /******************************************************************** Copyright © 2019 Roman Gilg + This program 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 2 of the License, or (at your option) any later version. + This program 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 this program. If not, see . *********************************************************************/ @@ -41,4 +44,4 @@ private: QOrientationSensor *m_sensor; QOrientationReading::Orientation m_value = QOrientationReading::Undefined; bool m_enabled = false; -}; \ No newline at end of file +}; diff --git a/screen/confighandler.cpp b/screen/confighandler.cpp index 2a10648..b4838d1 100644 --- a/screen/confighandler.cpp +++ b/screen/confighandler.cpp @@ -24,6 +24,7 @@ along with this program. If not, see . #include #include +#include using namespace KScreen; @@ -42,10 +43,8 @@ void ConfigHandler::setConfig(KScreen::ConfigPtr config) m_control.reset(new ControlConfig(config)); m_outputs = new OutputModel(this); - connect(m_outputs, &OutputModel::positionChanged, - this, &ConfigHandler::checkScreenNormalization); - connect(m_outputs, &OutputModel::sizeChanged, - this, &ConfigHandler::checkScreenNormalization); + connect(m_outputs, &OutputModel::positionChanged, this, &ConfigHandler::checkScreenNormalization); + connect(m_outputs, &OutputModel::sizeChanged, this, &ConfigHandler::checkScreenNormalization); for (const KScreen::OutputPtr &output : config->outputs()) { initOutput(output); @@ -56,17 +55,17 @@ void ConfigHandler::setConfig(KScreen::ConfigPtr config) m_initialRetention = getRetention(); Q_EMIT retentionChanged(); - connect(m_outputs, &OutputModel::changed, - this, [this]() { - checkNeedsSave(); - Q_EMIT changed(); + connect(m_outputs, &OutputModel::changed, this, [this]() { + checkNeedsSave(); + Q_EMIT changed(); + }); + connect(m_config.data(), &KScreen::Config::outputAdded, this, [this]() { + Q_EMIT outputConnect(true); }); - connect(m_config.data(), &KScreen::Config::outputAdded, - this, [this]() { Q_EMIT outputConnect(true); }); - connect(m_config.data(), &KScreen::Config::outputRemoved, - this, [this]() { Q_EMIT outputConnect(false); }); - connect(m_config.data(), &KScreen::Config::primaryOutputChanged, - this, &ConfigHandler::primaryOutputChanged); + connect(m_config.data(), &KScreen::Config::outputRemoved, this, [this]() { + Q_EMIT outputConnect(false); + }); + connect(m_config.data(), &KScreen::Config::primaryOutputChanged, this, &ConfigHandler::primaryOutputChanged); Q_EMIT outputModelChanged(); } @@ -92,8 +91,7 @@ void ConfigHandler::initOutput(const KScreen::OutputPtr &output) resetScale(output); m_outputs->add(output); } - connect(output.data(), &KScreen::Output::isConnectedChanged, - this, [this, output]() { + connect(output.data(), &KScreen::Output::isConnectedChanged, this, [this, output]() { Q_EMIT outputConnect(output->isConnected()); }); } @@ -101,12 +99,11 @@ void ConfigHandler::initOutput(const KScreen::OutputPtr &output) void ConfigHandler::updateInitialData() { m_initialRetention = getRetention(); - connect(new GetConfigOperation(), &GetConfigOperation::finished, - this, [this](ConfigOperation *op) { + connect(new GetConfigOperation(), &GetConfigOperation::finished, this, [this](ConfigOperation *op) { if (op->hasError()) { return; } - m_initialConfig = qobject_cast(op)->config(); + m_initialConfig = qobject_cast(op)->config(); for (auto output : m_config->outputs()) { resetScale(output); } @@ -117,11 +114,9 @@ void ConfigHandler::updateInitialData() void ConfigHandler::checkNeedsSave() { - if (m_config->supportedFeatures() & - KScreen::Config::Feature::PrimaryDisplay) { + if (m_config->supportedFeatures() & KScreen::Config::Feature::PrimaryDisplay) { if (m_config->primaryOutput() && m_initialConfig->primaryOutput()) { - if (m_config->primaryOutput()->hashMd5() != - m_initialConfig->primaryOutput()->hashMd5() ) { + if (m_config->primaryOutput()->hashMd5() != m_initialConfig->primaryOutput()->hashMd5()) { Q_EMIT needsSaveChecked(true); return; } @@ -146,6 +141,7 @@ void ConfigHandler::checkNeedsSave() if (output->isEnabled() != initialOutput->isEnabled()) { needsSave = true; } + // clang-format off if (output->isEnabled()) { needsSave |= output->currentModeId() != initialOutput->currentModeId() @@ -157,6 +153,7 @@ void ConfigHandler::checkNeedsSave() || autoRotateOnlyInTabletMode(output) != m_initialControl->getAutoRotateOnlyInTabletMode(output); } + // clang-format on if (needsSave) { Q_EMIT needsSaveChecked(true); return; @@ -211,9 +208,7 @@ QSize ConfigHandler::normalizeScreen() void ConfigHandler::checkScreenNormalization() { - const bool normalized = !m_config || - (m_lastNormalizedScreenSize == screenSize() && - m_outputs->positionsNormalized()); + const bool normalized = !m_config || (m_lastNormalizedScreenSize == screenSize() && m_outputs->positionsNormalized()); Q_EMIT screenNormalizationUpdate(normalized); } @@ -227,7 +222,6 @@ void ConfigHandler::primaryOutputSelected(int index) void ConfigHandler::primaryOutputChanged(const KScreen::OutputPtr &output) { Q_UNUSED(output) - } Control::OutputRetention ConfigHandler::getRetention() const @@ -246,7 +240,7 @@ Control::OutputRetention ConfigHandler::getRetention() const for (const auto &output : outputs) { const auto outputRet = m_control->getOutputRetention(output); - if (ret != outputRet ) { + if (ret != outputRet) { // Control file with different retention values per output. return Retention::Undefined; } @@ -272,8 +266,7 @@ void ConfigHandler::setRetention(int retention) if (!m_control) { return; } - if (retention != static_cast(Retention::Global) && - retention != static_cast(Retention::Individual)) { + if (retention != static_cast(Retention::Global) && retention != static_cast(Retention::Individual)) { // We only allow setting to global or individual retention. return; } @@ -304,8 +297,7 @@ KScreen::OutputPtr ConfigHandler::replicationSource(const KScreen::OutputPtr &ou return m_control->getReplicationSource(output); } -void ConfigHandler::setReplicationSource(KScreen::OutputPtr &output, - const KScreen::OutputPtr &source) +void ConfigHandler::setReplicationSource(KScreen::OutputPtr &output, const KScreen::OutputPtr &source) { m_control->setReplicationSource(output, source); } diff --git a/screen/confighandler.h b/screen/confighandler.h index c7c00c5..cc6956a 100644 --- a/screen/confighandler.h +++ b/screen/confighandler.h @@ -29,25 +29,27 @@ class OutputModel; class ConfigHandler : public QObject { Q_OBJECT - public: - explicit ConfigHandler (QObject *parent = nullptr); + explicit ConfigHandler(QObject *parent = nullptr); ~ConfigHandler() override = default; void setConfig(KScreen::ConfigPtr config); void updateInitialData(); - OutputModel* outputModel() const { + OutputModel *outputModel() const + { return m_outputs; } QSize normalizeScreen(); - KScreen::ConfigPtr config() const { + KScreen::ConfigPtr config() const + { return m_config; } - KScreen::ConfigPtr initialConfig() const { + KScreen::ConfigPtr initialConfig() const + { return m_initialConfig; } @@ -92,9 +94,8 @@ private: std::unique_ptr m_control; std::unique_ptr m_initialControl; - Control::OutputRetention m_initialRetention = Control::OutputRetention:: - Undefined; + Control::OutputRetention m_initialRetention = Control::OutputRetention::Undefined; QSize m_lastNormalizedScreenSize; }; -#endif \ No newline at end of file +#endif diff --git a/screen/outputmodel.cpp b/screen/outputmodel.cpp index 3409ac6..39ece45 100644 --- a/screen/outputmodel.cpp +++ b/screen/outputmodel.cpp @@ -297,8 +297,7 @@ bool OutputModel::setEnabled(int outputIndex, bool enable) return true; } -inline -bool refreshRateCompare(float rate1, float rate2) +inline bool refreshRateCompare(float rate1, float rate2) { return qAbs(rate1 - rate2) < 0.5; } diff --git a/screen/screen.cpp b/screen/screen.cpp index 73b431d..335e885 100644 --- a/screen/screen.cpp +++ b/screen/screen.cpp @@ -33,6 +33,9 @@ void Screen::load() void Screen::save() { + if (!m_config) + return; + auto config = m_config->config(); bool atLeastOneEnabledOutput = false; @@ -67,4 +70,4 @@ void Screen::configReady(KScreen::ConfigOperation *op) const bool autoRotationSupported = config->supportedFeatures() & (KScreen::Config::Feature::AutoRotation | KScreen::Config::Feature::TabletMode); m_config->setConfig(config); -} \ No newline at end of file +}