Fix: 解决平板桌面拖动状态下时间小插件的AM/PM与上午/下午偶现来回跳动的问题

This commit is contained in:
yan wang 2023-02-06 16:00:23 +08:00
parent 34b61a2dcf
commit cb6f507159
3 changed files with 4 additions and 64 deletions

View File

@ -1,25 +1,11 @@
#include "timeprovider.h"
#include <ukui/kappwidgetmanager.h>
#include <unistd.h>
#define UKUI_CONTROL_CENTER_SERVER "org.freedesktop.Accounts"
//#define UKUI_CONTROL_CENTER_PATH "/org/freedesktop/Accounts/User1000"
#define UKUI_CONTROL_CENTER_INTERFACE "org.freedesktop.Accounts.User"
#define PROPERTIES_NAME "FormatsLocale"
TimeProvider::TimeProvider(QString providername, QObject *parent)
: KAppWidgetProvider(providername, parent)
{
QString UKUI_CONTROL_CENTER_PATH = "/org/freedesktop/Accounts/User" + QString("%1").arg(QString::number(getuid()));
m_interface = new QDBusInterface(UKUI_CONTROL_CENTER_SERVER,
UKUI_CONTROL_CENTER_PATH,
UKUI_CONTROL_CENTER_INTERFACE,
QDBusConnection::systemBus());
m_local = m_interface->property(PROPERTIES_NAME);
qDebug() << "当前FormatsLocale为" << m_local;
}
TimeProvider::~TimeProvider()
{
delete m_manager;
}
void TimeProvider::appWidgetRecevie(const QString &eventname,
const QString &widgetname,
@ -31,12 +17,7 @@ void TimeProvider::appWidgetRecevie(const QString &eventname,
}
void TimeProvider::appWidgetUpdate()
{
QVariantMap m;
m.insert("FormatsLocale", m_local);
if(m_manager) {
m_manager->updateAppWidget("time", m);
qDebug() <<"更新时间小插件";
}
}
void TimeProvider::appWidgetDisable()
{
@ -48,15 +29,7 @@ void TimeProvider::appWidgetDeleted()
}
void TimeProvider::appWidgetEnable()
{
if(!m_manager) {
m_manager = new AppWidget::KAppWidgetManager(this);
}
QVariantMap m;
m.insert("FormatsLocale" , m_local);
if(m_manager) {
m_manager->updateAppWidget("time", m);
qDebug() <<"更新时间小插件";
}
}
void TimeProvider::appWidgetClicked(const QString &widgetname, const QDBusVariant &value)
{

View File

@ -16,10 +16,6 @@ public:
void appWidgetDeleted();
void appWidgetEnable();
void appWidgetClicked(const QString &widgetname, const QDBusVariant &value);
private:
AppWidget::KAppWidgetManager * m_manager = nullptr;
QDBusInterface *m_interface = nullptr;
QVariant m_local;
};
#endif // TIMEPROVIDER_H

View File

@ -14,7 +14,6 @@ AppWidget {
property double scalefactor: 1.00
property string timeformat: "12";
property string dateformat: "cn";
property string locale: "zh_CN.UTF-8"
property string hour;
property string minute;
property int hournumber;
@ -36,23 +35,10 @@ AppWidget {
appwidget.minute = Qt.formatTime(new Date(),"mm");
if(appwidget.timeformat === "12") {
appwidget.hournumber = Number(appwidget.hour);
ampm.text = Qt.formatTime(new Date(), "AP")
if(appwidget.hournumber > 12) {
if(appwidget.locale == "zh_CN.UTF-8") {
ampm.text = "下午"
}
else if(appwidget.locale == "en_US.UTF-8") {
ampm.text = "PM"
}
appwidget.hournumber -= 12;
}
else {
if(appwidget.locale == "zh_CN.UTF-8") {
ampm.text = "上午"
}
else if(appwidget.locale == "en_US.UTF-8") {
ampm.text = "AM"
}
}
if(appwidget.hournumber < 10) {
time1rec.width = 244*appwidget.scalefactor
@ -286,8 +272,6 @@ AppWidget {
initScalefactor()
gettime.start();
appwidget.update.connect(appwidget.onupdate);
userStatusChangedSignal.connect(onUserStatusChanged)
console.log("qml 接收到数据更新信号");
@ -310,19 +294,6 @@ AppWidget {
console.log("qml 窗口高度改变,重新计算缩放比");
initScalefactor()
}
function onupdate()
{
for (var i in appwidget.datavalue)
{
var info = appwidget.datavalue[i];
if( i === "FormatsLocale") {
console.log("date", info);
appwidget.locale = info;
}
}
}
function onGsettingUpdate(key, value)
{
if(key === "hoursystem")