update changelog
This commit is contained in:
parent
56db069a82
commit
80be9f66a1
|
@ -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修复:无
|
||||
|
|
|
@ -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
|
|
@ -12,3 +12,4 @@
|
|||
0012-update-changelog.patch
|
||||
0013-update-changelog-1.patch
|
||||
0014-update-changelog.patch
|
||||
0015-update-changelog-1.patch
|
||||
|
|
Loading…
Reference in New Issue