update changelog

This commit is contained in:
liulinsong 2023-02-07 13:05:24 +08:00 committed by chenyue
parent 56db069a82
commit 80be9f66a1
3 changed files with 269 additions and 0 deletions

8
debian/changelog vendored
View File

@ -1,3 +1,11 @@
kylin-virtual-keyboard (1.0.2.1-0k0.1tablet2) v101; urgency=medium
* bug修复
* 新需求:无
* 其他修改:优化计算虚拟键盘位置的逻辑
-- liulinsong <liulinsong@liulinsong> Tue, 07 Feb 2023 13:00:34 +0800
kylin-virtual-keyboard (1.0.2.1-0k0.1tablet1) v101; urgency=medium
* bug修复

View File

@ -0,0 +1,260 @@
From: liulinsong <liulinsong@kylinos.cn>
Date: Tue, 7 Feb 2023 13:05:24 +0800
Subject: update changelog
---
src/floatgeometrymanager.cpp | 143 +++++++++++++++++++++++++------------------
src/floatgeometrymanager.h | 29 ++++++---
2 files changed, 105 insertions(+), 67 deletions(-)
diff --git a/src/floatgeometrymanager.cpp b/src/floatgeometrymanager.cpp
index 9473f12..9e79c34 100644
--- a/src/floatgeometrymanager.cpp
+++ b/src/floatgeometrymanager.cpp
@@ -7,32 +7,34 @@
#include "virtualkeyboardsettings.h"
// static
-QString FloatGeometryManager::virtualKeyboardPositionRatioMapKey =
- "virtualKeyboardPositionRatioMap";
+QString FloatGeometryManager::marginRatioMapKey =
+ "virtualKeyboardMarginRatioMap";
// static
-QString FloatGeometryManager::virtualKeyboardPositionRatioXKey =
- "virtualKeyboardPositionRatioX";
+QString FloatGeometryManager::leftMarginRatioKey =
+ "virtualKeyboardLeftMarginRatio";
// static
-QString FloatGeometryManager::virtualKeyboardPositionRatioYKey =
- "virtualKeyboardPositionRatioY";
+QString FloatGeometryManager::topMarginRatioKey =
+ "virtualKeyboardTopMarginRatio";
FloatGeometryManager::FloatGeometryManager(QObject *parent)
: GeometryManager{parent} {
- loadVirtualKeyboardPosition();
+ loadMarginRatioMap();
}
-FloatGeometryManager::~FloatGeometryManager() { saveVirtualKeyboardPosition(); }
+FloatGeometryManager::~FloatGeometryManager() { saveMarginRatioMap(); }
void FloatGeometryManager::moveBy(int offsetX, int offsetY) {
const QPoint offset(offsetX, offsetY);
- moveVirtualKeyboard(QPoint(position_ + offset));
+ moveVirtualKeyboard(QPoint(calculateCurrentPosition() + offset));
}
void FloatGeometryManager::endDrag() {
- const QPoint normalizedPoint = calculateNormalizedPosition(position_);
- if (normalizedPoint != position_) {
- moveVirtualKeyboard(normalizedPoint);
+ const QPoint currentPosition = calculateCurrentPosition();
+ const QPoint normalizedPosition =
+ calculateNormalizedPosition(currentPosition);
+ if (normalizedPosition != currentPosition) {
+ moveVirtualKeyboard(normalizedPosition);
}
}
@@ -80,77 +82,102 @@ QPoint FloatGeometryManager::calculateNormalizedPosition(
calculateNormalizedY(position.y()));
}
+QPoint FloatGeometryManager::calculateCurrentPosition() const {
+ return calculatePositionFromRatio(leftMarginRatio_, topMarginRatio_);
+}
+
+QPoint
+FloatGeometryManager::calculatePositionFromRatio(float leftMarginRatio,
+ float topMarginRatio) const {
+ const QSize marginSize = calculateMarginSize();
+
+ return QPoint(marginSize.width() * leftMarginRatio,
+ marginSize.height() * topMarginRatio);
+}
+
+QPoint FloatGeometryManager::calculateNormalizedPositionFromRatio(
+ float leftMarginRatio, float topMarginRatio) const {
+ return calculateNormalizedPosition(
+ calculatePositionFromRatio(leftMarginRatio, topMarginRatio));
+}
+
QPoint FloatGeometryManager::calculateVirtualKeyboardPosition() {
- return position_;
+ return calculateNormalizedPosition(calculateCurrentPosition());
}
-QMap<QString, QVariant>
-FloatGeometryManager::getVirtualKeyboardCurrentPositionRatioMap() const {
+QSize FloatGeometryManager::calculateMarginSize() const {
const QSize viewPortSize =
QGuiApplication::primaryScreen()->geometry().size();
+ const auto virtualKeyboardSize = calculateVirtualKeyboardSize();
- const float positionX = position_.x();
- const float positionY = position_.y();
- const float ratioX = positionX / viewPortSize.width();
- const float ratioY = positionY / viewPortSize.height();
- QMap<QString, QVariant> virtualKeyboardPositionRatioMap = {
- {virtualKeyboardPositionRatioXKey, ratioX},
- {virtualKeyboardPositionRatioYKey, ratioY}};
+ const int horizontalMargin =
+ viewPortSize.width() - virtualKeyboardSize.width();
+ const int verticalMargin =
+ viewPortSize.height() - virtualKeyboardSize.height();
- return virtualKeyboardPositionRatioMap;
+ return QSize(horizontalMargin, verticalMargin);
}
-void FloatGeometryManager::saveVirtualKeyboardPosition() {
- VirtualKeyboardSettings::getInstance().setValue(
- virtualKeyboardPositionRatioMapKey,
- getVirtualKeyboardCurrentPositionRatioMap());
+QMap<QString, QVariant> FloatGeometryManager::getMarginRatioMap() const {
+ QMap<QString, QVariant> marginRatioMap = {
+ {leftMarginRatioKey, leftMarginRatio_},
+ {topMarginRatioKey, topMarginRatio_}};
+
+ return marginRatioMap;
}
-QMap<QString, QVariant>
-FloatGeometryManager::getVirtualKeyboardDefaultPositionRatioMap() const {
+void FloatGeometryManager::updateMarginRatio(const QPoint &targetPosition) {
+ const QSize marginSize = calculateMarginSize();
+
+ leftMarginRatio_ = targetPosition.x() * 1.0f / marginSize.width();
+ topMarginRatio_ = targetPosition.y() * 1.0f / marginSize.height();
+}
+
+void FloatGeometryManager::saveMarginRatioMap() {
+ VirtualKeyboardSettings::getInstance().setValue(marginRatioMapKey,
+ getMarginRatioMap());
+}
+
+QMap<QString, QVariant> FloatGeometryManager::getDefaultMarginRatioMap() const {
const QSize viewPortSize =
QGuiApplication::primaryScreen()->geometry().size();
const auto virtualKeyboardSize = calculateVirtualKeyboardSize();
- const float defaultPositionX =
+ const float leftMargin =
(viewPortSize.width() - virtualKeyboardSize.width()) / 2;
- const float defaultPositionY =
- viewPortSize.height() -
- (virtualKeyboardSize.height() + distanceToBottom);
- const float defaultRatioX = defaultPositionX / viewPortSize.width();
- const float defaultRatioY = defaultPositionY / viewPortSize.height();
+ const float topMargin = viewPortSize.height() -
+ (virtualKeyboardSize.height() + distanceToBottom);
+
+ const QSize marginSize = calculateMarginSize();
+
+ const float defaultLeftMarginRatio = leftMargin / marginSize.width();
+ const float defaultTopMarginRatio = topMargin / marginSize.height();
- QMap<QString, QVariant> virtualKeyboardDefaultPositionRatioMap = {
- {virtualKeyboardPositionRatioXKey, defaultRatioX},
- {virtualKeyboardPositionRatioYKey, defaultRatioY}};
+ QMap<QString, QVariant> virtualKeyboardDefaultMarginRatioMap = {
+ {leftMarginRatioKey, defaultLeftMarginRatio},
+ {topMarginRatioKey, defaultTopMarginRatio}};
- return virtualKeyboardDefaultPositionRatioMap;
+ return virtualKeyboardDefaultMarginRatioMap;
}
-void FloatGeometryManager::loadVirtualKeyboardPosition() {
- const auto virtualKeyboardPositionRatioMap =
+void FloatGeometryManager::loadMarginRatioMap() {
+ const auto marginRatioMap =
VirtualKeyboardSettings::getInstance()
- .getValue(virtualKeyboardPositionRatioMapKey,
- getVirtualKeyboardDefaultPositionRatioMap())
+ .getValue(marginRatioMapKey, getDefaultMarginRatioMap())
.toMap();
- const QSize viewPortSize =
- QGuiApplication::primaryScreen()->geometry().size();
-
- const float ratioX =
- virtualKeyboardPositionRatioMap[virtualKeyboardPositionRatioXKey]
- .toFloat();
- const float ratioY =
- virtualKeyboardPositionRatioMap[virtualKeyboardPositionRatioYKey]
- .toFloat();
+ const float leftMarginRatio = marginRatioMap[leftMarginRatioKey].toFloat();
+ const float topMarginRatio = marginRatioMap[topMarginRatioKey].toFloat();
- const QPoint virtualKeyboardPosition(viewPortSize.width() * ratioX,
- viewPortSize.height() * ratioY);
- position_ = calculateNormalizedPosition(virtualKeyboardPosition);
+ updateMarginRatio(
+ calculateNormalizedPositionFromRatio(leftMarginRatio, topMarginRatio));
}
void FloatGeometryManager::moveVirtualKeyboard(const QPoint &targetPoint) {
- position_ = targetPoint;
- emit virtualKeyboardMoved(position_.x(), position_.y());
- saveVirtualKeyboardPosition();
+ updateMarginRatio(targetPoint);
+
+ const QPoint currentPosition = calculateCurrentPosition();
+ emit virtualKeyboardMoved(currentPosition.x(), currentPosition.y());
+
+ saveMarginRatioMap();
}
diff --git a/src/floatgeometrymanager.h b/src/floatgeometrymanager.h
index 3eb4e38..5ad61a2 100644
--- a/src/floatgeometrymanager.h
+++ b/src/floatgeometrymanager.h
@@ -14,26 +14,37 @@ public slots:
void endDrag();
private:
+ QPoint calculateVirtualKeyboardPosition() override;
float getVirtualKeyboardWidthRatio() const override;
float getVirtualKeyboardHeightRatio() const override;
+
int calculateNormalizedX(int positionX) const;
int calculateNormalizedY(int positionY) const;
QPoint calculateNormalizedPosition(const QPoint &position) const;
- QPoint calculateVirtualKeyboardPosition() override;
- QMap<QString, QVariant> getVirtualKeyboardCurrentPositionRatioMap() const;
- QMap<QString, QVariant> getVirtualKeyboardDefaultPositionRatioMap() const;
- void saveVirtualKeyboardPosition();
- void loadVirtualKeyboardPosition();
+
+ QPoint calculatePositionFromRatio(float leftMarginRatio,
+ float topMarginRatio) const;
+ QPoint calculateCurrentPosition() const;
+ QPoint calculateNormalizedPositionFromRatio(float leftMarginRatio,
+ float topMarginRatio) const;
+
+ QSize calculateMarginSize() const;
+ QMap<QString, QVariant> getMarginRatioMap() const;
+ QMap<QString, QVariant> getDefaultMarginRatioMap() const;
+ void updateMarginRatio(const QPoint &targetPosition);
+ void saveMarginRatioMap();
+ void loadMarginRatioMap();
void moveVirtualKeyboard(const QPoint &targetPoint);
constexpr static int distanceToBottom = 56;
- QPoint position_ = {0, 0};
+ float leftMarginRatio_ = 0.0f;
+ float topMarginRatio_ = 0.0f;
- static QString virtualKeyboardPositionRatioMapKey;
- static QString virtualKeyboardPositionRatioXKey;
- static QString virtualKeyboardPositionRatioYKey;
+ static QString marginRatioMapKey;
+ static QString leftMarginRatioKey;
+ static QString topMarginRatioKey;
};
#endif // FLOATGEOMETRYMANAGER_H

View File

@ -12,3 +12,4 @@
0012-update-changelog.patch
0013-update-changelog-1.patch
0014-update-changelog.patch
0015-update-changelog-1.patch