lid behavior watcher to lock session #115
@@ -0,0 +1,58 @@
|
||||
---
|
||||
BasedOnStyle: LLVM
|
||||
AccessModifierOffset: 0
|
||||
AlignAfterOpenBracket: Align
|
||||
AlignConsecutiveAssignments: false
|
||||
AlignConsecutiveDeclarations: false
|
||||
AlignOperands: Align
|
||||
AllowAllParametersOfDeclarationOnNextLine: true
|
||||
AllowShortFunctionsOnASingleLine: Inline
|
||||
AllowShortIfStatementsOnASingleLine: Never
|
||||
AlwaysBreakBeforeMultilineStrings: false
|
||||
AlwaysBreakTemplateDeclarations: Yes
|
||||
BinPackArguments: false
|
||||
BinPackParameters: false
|
||||
BreakBeforeBraces: Attach
|
||||
BreakBeforeTernaryOperators: true
|
||||
BreakConstructorInitializers: BeforeComma
|
||||
ColumnLimit: 80
|
||||
ConstructorInitializerAllOnOneLineOrOnePerLine: true
|
||||
ConstructorInitializerIndentWidth: 4
|
||||
ContinuationIndentWidth: 4
|
||||
Cpp11BracedListStyle: true
|
||||
DerivePointerAlignment: false
|
||||
FixNamespaceComments: true
|
||||
IndentCaseLabels: false
|
||||
IndentWidth: 4
|
||||
KeepEmptyLinesAtTheStartOfBlocks: false
|
||||
Language: Cpp
|
||||
MaxEmptyLinesToKeep: 2
|
||||
NamespaceIndentation: None
|
||||
PenaltyBreakAssignment: 10
|
||||
PenaltyBreakBeforeFirstCallParameter: 100
|
||||
PenaltyBreakComment: 300
|
||||
PenaltyBreakFirstLessLess: 120
|
||||
PenaltyBreakString: 1000
|
||||
PenaltyExcessCharacter: 100
|
||||
PenaltyReturnTypeOnItsOwnLine: 200
|
||||
PointerAlignment: Left
|
||||
ReflowComments: false
|
||||
SortIncludes: false
|
||||
SpaceAfterCStyleCast: false
|
||||
SpaceAfterTemplateKeyword: true
|
||||
SpaceBeforeAssignmentOperators: true
|
||||
SpaceBeforeCpp11BracedList: false
|
||||
SpaceBeforeCtorInitializerColon: true
|
||||
SpaceBeforeInheritanceColon: true
|
||||
SpaceBeforeParens: ControlStatements
|
||||
SpaceBeforeRangeBasedForLoopColon: true
|
||||
SpaceInEmptyParentheses: false
|
||||
SpacesBeforeTrailingComments: 1
|
||||
SpacesInAngles: false
|
||||
SpacesInContainerLiterals: false
|
||||
SpacesInCStyleCastParentheses: false
|
||||
SpacesInParentheses: false
|
||||
SpacesInSquareBrackets: false
|
||||
Standard: c++20
|
||||
TabWidth: 4
|
||||
UseTab: Always
|
||||
+31
@@ -0,0 +1,31 @@
|
||||
---
|
||||
Checks: >
|
||||
-*,
|
||||
bugprone-*,
|
||||
clang-analyzer-*,
|
||||
modernize-*,
|
||||
-modernize-use-trailing-return-type,
|
||||
performance-*,
|
||||
readability-braces-around-statements,
|
||||
readability-else-after-return,
|
||||
readability-identifier-naming,
|
||||
readability-redundant-*,
|
||||
readability-simplify-*,
|
||||
CheckOptions:
|
||||
readability-identifier-naming.ClassCase: CamelCase
|
||||
readability-identifier-naming.EnumCase: CamelCase
|
||||
readability-identifier-naming.FunctionCase: camelBack
|
||||
readability-identifier-naming.MemberCase: camelBack
|
||||
readability-identifier-naming.MemberPrefix: m_
|
||||
readability-identifier-naming.MethodCase: camelBack
|
||||
readability-identifier-naming.NamespaceCase: lower_case
|
||||
readability-identifier-naming.ParameterCase: camelBack
|
||||
readability-identifier-naming.PrivateMemberPrefix: m_
|
||||
readability-identifier-naming.StaticConstantCase: UPPER_CASE
|
||||
readability-identifier-naming.StaticConstantPrefix: k
|
||||
readability-identifier-naming.VariableCase: camelBack
|
||||
WarningsAsErrors: "*"
|
||||
HeaderFilterRegex: ".*"
|
||||
FormatStyle: file
|
||||
|
||||
...
|
||||
@@ -25,6 +25,9 @@ add_compile_options(
|
||||
|
||||
if("plugin" IN_LIST ENABLE_MODULES)
|
||||
add_subdirectory(Plugins)
|
||||
|
||||
add_custom_target(fix-cc
|
||||
COMMAND sed -i "s/-mno-direct-extern-access/-fno-direct-access-external-data/g" "${CMAKE_BINARY_DIR}/compile_commands.json")
|
||||
endif()
|
||||
|
||||
if("shell" IN_LIST ENABLE_MODULES)
|
||||
|
||||
@@ -12,12 +12,10 @@ namespace ZShell {
|
||||
static constexpr auto kLogin1Service = "org.freedesktop.login1";
|
||||
static constexpr auto kLogin1Path = "/org/freedesktop/login1";
|
||||
static constexpr auto kLogin1Interface = "org.freedesktop.login1.Manager";
|
||||
static constexpr auto kDBusPropertiesInterface = "org.freedesktop.DBus.Properties";
|
||||
static constexpr auto kDBusPropertiesInterface =
|
||||
"org.freedesktop.DBus.Properties";
|
||||
|
||||
LidWatcher::LidWatcher(QObject* parent)
|
||||
: QObject(parent)
|
||||
, m_available(false)
|
||||
, m_state(Opened) {
|
||||
LidWatcher::LidWatcher(QObject* parent) : QObject(parent), m_available(false) {
|
||||
QDBusConnection bus = QDBusConnection::systemBus();
|
||||
m_available = bus.isConnected();
|
||||
|
||||
@@ -27,8 +25,13 @@ LidWatcher::LidWatcher(QObject* parent)
|
||||
return;
|
||||
}
|
||||
|
||||
const auto ok = bus.connect(kLogin1Service, kLogin1Path, kDBusPropertiesInterface, "PropertiesChanged",
|
||||
this, SLOT(onPropertiesChanged(QString,QVariantMap,QStringList)));
|
||||
const auto ok = bus.connect(
|
||||
kLogin1Service,
|
||||
kLogin1Path,
|
||||
kDBusPropertiesInterface,
|
||||
"PropertiesChanged",
|
||||
this,
|
||||
SLOT(onPropertiesChanged(QString, QVariantMap, QStringList)));
|
||||
|
||||
m_available = ok;
|
||||
emit availableChanged();
|
||||
@@ -49,24 +52,30 @@ LidWatcher::LidState LidWatcher::state() const {
|
||||
}
|
||||
|
||||
void LidWatcher::queryInitialState() {
|
||||
auto msg = QDBusMessage::createMethodCall(
|
||||
kLogin1Service, kLogin1Path,
|
||||
kDBusPropertiesInterface, "Get");
|
||||
auto msg = QDBusMessage::createMethodCall(kLogin1Service,
|
||||
kLogin1Path,
|
||||
kDBusPropertiesInterface,
|
||||
"Get");
|
||||
msg << kLogin1Interface << "LidClosed";
|
||||
const QDBusReply<QVariant> reply = QDBusConnection::systemBus().call(msg);
|
||||
if (!reply.isValid()) {
|
||||
qCWarning(lcLidWatcher) << "cannot query LidClosed:" << reply.error().message();
|
||||
qCWarning(lcLidWatcher)
|
||||
<< "cannot query LidClosed:" << reply.error().message();
|
||||
return;
|
||||
}
|
||||
m_state = reply.value().toBool() ? Closed : Opened;
|
||||
emit stateChanged();
|
||||
}
|
||||
|
||||
void LidWatcher::onPropertiesChanged(const QString& interface, const QVariantMap& changed, const QStringList& /*invalidated*/) {
|
||||
if (interface != kLogin1Interface)
|
||||
void LidWatcher::onPropertiesChanged(const QString& interface,
|
||||
const QVariantMap& changed,
|
||||
const QStringList& ) {
|
||||
if (interface != kLogin1Interface) {
|
||||
return;
|
||||
if (!changed.contains("LidClosed"))
|
||||
}
|
||||
if (!changed.contains("LidClosed")) {
|
||||
return;
|
||||
}
|
||||
m_state = changed.value("LidClosed").toBool() ? Closed : Opened;
|
||||
emit stateChanged();
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
#include <QObject>
|
||||
#include <QStringList>
|
||||
#include <QVariantMap>
|
||||
#include <cstdint>
|
||||
#include <qqmlintegration.h>
|
||||
|
||||
namespace ZShell {
|
||||
@@ -15,11 +16,8 @@ class LidWatcher : public QObject {
|
||||
Q_PROPERTY(bool available READ available NOTIFY availableChanged)
|
||||
Q_PROPERTY(LidState state READ state NOTIFY stateChanged)
|
||||
|
||||
public:
|
||||
enum LidState {
|
||||
Opened,
|
||||
Closed
|
||||
};
|
||||
public:
|
||||
enum LidState : std::uint8_t{ Opened, Closed };
|
||||
Q_ENUM(LidState)
|
||||
|
||||
explicit LidWatcher(QObject* parent = nullptr);
|
||||
@@ -27,16 +25,19 @@ public:
|
||||
[[nodiscard]] bool available() const;
|
||||
[[nodiscard]] LidState state() const;
|
||||
|
||||
private:
|
||||
private:
|
||||
void queryInitialState();
|
||||
|
||||
bool m_available;
|
||||
LidState m_state = Opened;
|
||||
|
||||
private Q_SLOTS:
|
||||
void onPropertiesChanged(const QString& interface, const QVariantMap& changed, const QStringList& invalidated);
|
||||
|
||||
Q_SIGNALS:
|
||||
void extracted();
|
||||
|
AramJonghu marked this conversation as resolved
Outdated
|
||||
void onPropertiesChanged(const QString& interface,
|
||||
const QVariantMap& changed,
|
||||
const QStringList& invalidated);
|
||||
|
||||
Q_SIGNALS:
|
||||
void availableChanged();
|
||||
void stateChanged();
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user
extracted()is declared but never implemented in the.cppfile.