Merge tag 'upstream/4.10.0.2' into packaging/openkylin/nile
4.10.0.2-release
This commit is contained in:
commit
0892cf66f7
|
@ -100,14 +100,14 @@ SwipeView {
|
|||
appPageHeader.title = folderName;
|
||||
appPageHeader.content = folderPageHeader;
|
||||
root.currentIndex = SwipeView.index;
|
||||
EventTrack.sendClickEvent("EnterFolderPage", "AppView");
|
||||
EventTrack.sendClickEvent("enter_folder_page", "AppView");
|
||||
}
|
||||
function hideFolderPage() {
|
||||
root.currentIndex = appListBase.SwipeView.index;
|
||||
appPageHeader.title = appList.title;
|
||||
appPageHeader.content = null;
|
||||
//active = false;
|
||||
EventTrack.sendClickEvent("ExitFolderPage", "AppView");
|
||||
EventTrack.sendClickEvent("exit_folder_page", "AppView");
|
||||
}
|
||||
|
||||
Component.onCompleted: {
|
||||
|
|
|
@ -70,36 +70,53 @@ Item {
|
|||
}
|
||||
]
|
||||
|
||||
onStateChanged: {
|
||||
if (isLiteMode) {
|
||||
if (state === "search") {
|
||||
setPluginSelectionVisible(false);
|
||||
setSearchBarVisible(true);
|
||||
} else {
|
||||
setPluginSelectionVisible(true);
|
||||
setSearchBarVisible(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function setPluginSelectionVisible(vis) {
|
||||
pluginSelectionBar.visible = vis;
|
||||
pluginSelectMenu.visible = vis;
|
||||
}
|
||||
|
||||
function setSearchBarVisible(vis) {
|
||||
searchBar.visible = vis;
|
||||
if (vis) {
|
||||
searchInputBar.providerId = "search";
|
||||
searchInputBar.textInputFocus();
|
||||
}
|
||||
}
|
||||
|
||||
transitions:[
|
||||
Transition {
|
||||
to: "normal"
|
||||
enabled: !isLiteMode
|
||||
SequentialAnimation {
|
||||
ScriptAction {
|
||||
script: {
|
||||
pluginSelectionBar.visible = true;
|
||||
pluginSelectMenu.visible = true;
|
||||
}
|
||||
script: { setPluginSelectionVisible(true); }
|
||||
}
|
||||
NumberAnimation { easing.type: Easing.InOutQuad; properties: "scale,y"; duration: 300 }
|
||||
ScriptAction { script: searchBar.visible = false }
|
||||
ScriptAction { script: { setSearchBarVisible(false); } }
|
||||
}
|
||||
},
|
||||
Transition {
|
||||
to: "search"
|
||||
enabled: !isLiteMode
|
||||
SequentialAnimation {
|
||||
ScriptAction {
|
||||
script: {
|
||||
searchBar.visible = true;
|
||||
searchInputBar.providerId = "search";
|
||||
searchInputBar.textInputFocus();
|
||||
}
|
||||
script: { setSearchBarVisible(true); }
|
||||
}
|
||||
NumberAnimation { easing.type: Easing.InOutQuad; properties: "scale,y"; duration: 300}
|
||||
NumberAnimation { easing.type: Easing.InOutQuad; properties: "scale,y"; duration: 300 }
|
||||
ScriptAction {
|
||||
script: {
|
||||
pluginSelectionBar.visible = false;
|
||||
pluginSelectMenu.visible = false;
|
||||
}
|
||||
script: { setPluginSelectionVisible(false); }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -34,9 +34,14 @@ Item {
|
|||
anchors.topMargin: 12
|
||||
spacing: 0
|
||||
|
||||
property bool liteMode: isLiteMode
|
||||
onLiteModeChanged: {
|
||||
updateSidebarLayout(extensionInfoList.currentItem.extensionOptions)
|
||||
}
|
||||
|
||||
function updateSidebarLayout(options) {
|
||||
sidebarBottomBar.visible = !options.includes(MenuExtension.HideBottomBar);
|
||||
fullScreenbutton.visible = !options.includes(MenuExtension.HideFullScreenButton);
|
||||
fullScreenbutton.visible = !isLiteMode && !options.includes(MenuExtension.HideFullScreenButton);
|
||||
}
|
||||
|
||||
Item {
|
||||
|
@ -237,6 +242,7 @@ Item {
|
|||
Keys.onPressed: {
|
||||
if (event.key === Qt.Key_Enter || event.key === Qt.Key_Return) {
|
||||
ListView.view.currentIndex = model.index;
|
||||
EventTrack.sendClickEvent("switch_plugin", "Sidebar", {"plugin": model.name});
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -249,7 +255,6 @@ Item {
|
|||
function select() {
|
||||
if (extensionLoader.source !== model.url) {
|
||||
extensionLoader.setSource(model.url, {extensionData: extensionData});
|
||||
EventTrack.sendClickEvent("Switch Plugin: " + model.name, "Sidebar");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -269,6 +274,7 @@ Item {
|
|||
onClicked: {
|
||||
normalUI.focusToFalse();
|
||||
parent.ListView.view.currentIndex = model.index;
|
||||
EventTrack.sendClickEvent("switch_plugin", "Sidebar", {"plugin": model.name});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -221,7 +221,7 @@ void AppFolderHelper::addAppToFolder(const QString &appId, const int &folderId)
|
|||
forceSync();
|
||||
Q_EMIT folderDataChanged(folderId);
|
||||
|
||||
EventTrack::instance()->sendDefaultEvent("AddAppToFolder", "AppView");
|
||||
EventTrack::instance()->sendDefaultEvent("add_app_to_folder", "AppView");
|
||||
}
|
||||
|
||||
void AppFolderHelper::addAppToNewFolder(const QString &appId, const QString &folderName)
|
||||
|
@ -245,7 +245,7 @@ void AppFolderHelper::addAppToNewFolder(const QString &appId, const QString &fol
|
|||
insertFolder(folder);
|
||||
Q_EMIT folderAdded(folder.id);
|
||||
|
||||
EventTrack::instance()->sendDefaultEvent("AddAppToNewFolder", "AppView");
|
||||
EventTrack::instance()->sendDefaultEvent("add_app_to_new_folder", "AppView");
|
||||
}
|
||||
|
||||
void AppFolderHelper::addAppsToNewFolder(const QString &appIdA, const QString &appIdB, const QString &folderName)
|
||||
|
@ -311,7 +311,7 @@ bool AppFolderHelper::deleteFolder(const int& folderId)
|
|||
}
|
||||
|
||||
Q_EMIT folderDeleted(folderId);
|
||||
EventTrack::instance()->sendDefaultEvent("DeleteFolder", "AppView");
|
||||
EventTrack::instance()->sendDefaultEvent("delete_folder", "AppView");
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
@ -60,7 +60,7 @@ void DataProviderManager::initProviders()
|
|||
connect(this, &DataProviderManager::toUpdate, sort, &AppLetterSortPlugin::update);
|
||||
registerProvider(sort);
|
||||
|
||||
activateProvider(allProvider->id());
|
||||
activateProvider(allProvider->id(), false);
|
||||
allProvider->moveToThread(&m_worker);
|
||||
search->moveToThread(&m_worker);
|
||||
category->moveToThread(&m_worker);
|
||||
|
@ -152,7 +152,7 @@ ProviderInfo DataProviderManager::providerInfo(const QString &id) const
|
|||
return info;
|
||||
}
|
||||
|
||||
void DataProviderManager::activateProvider(const QString &id)
|
||||
void DataProviderManager::activateProvider(const QString &id, bool record)
|
||||
{
|
||||
if (!m_providers.contains(id) || m_activatedPlugin == id) {
|
||||
return;
|
||||
|
@ -160,7 +160,11 @@ void DataProviderManager::activateProvider(const QString &id)
|
|||
|
||||
m_activatedPlugin = id;
|
||||
Q_EMIT pluginChanged(m_activatedPlugin, m_providers.value(m_activatedPlugin)->group());
|
||||
EventTrack::instance()->sendClickEvent("Switch AppView: " + id, "AppView");
|
||||
if (record) {
|
||||
QMap<QString, QVariant> map;
|
||||
map.insert("viewName", id);
|
||||
EventTrack::instance()->sendClickEvent("switch_app_view", "AppView", map);
|
||||
}
|
||||
}
|
||||
|
||||
DataProviderManager::~DataProviderManager()
|
||||
|
|
|
@ -49,7 +49,7 @@ public:
|
|||
QVector<ProviderInfo> providers(PluginGroup::Group group) const;
|
||||
ProviderInfo providerInfo(const QString &id) const;
|
||||
QString activatedProvider() const;
|
||||
void activateProvider(const QString &id);
|
||||
void activateProvider(const QString &id, bool record = true);
|
||||
QVector<DataEntity> data() const;
|
||||
QVector<LabelItem> labels() const;
|
||||
void forceUpdate() const;
|
||||
|
|
|
@ -219,13 +219,13 @@ FavoriteMenuProvider::generateActions(QObject *parent, const QVariant &data, con
|
|||
list << new QAction(QObject::tr("Fix to favorite"), parent);
|
||||
QObject::connect(list.last(), &QAction::triggered, parent, [app] {
|
||||
Q_EMIT AppDataManager::instance()->fixToFavoriteSignal(app.id(), 1);
|
||||
EventTrack::instance()->sendDefaultEvent("Fix to favorite", "Right-click Menu");
|
||||
EventTrack::instance()->sendDefaultEvent("fix_to_favorite", "Right-click Menu");
|
||||
});
|
||||
} else if (locationId == "favorite") {
|
||||
list << new QAction(QObject::tr("Remove from favorite"), parent);
|
||||
QObject::connect(list.last(), &QAction::triggered, parent, [app] {
|
||||
Q_EMIT AppDataManager::instance()->fixToFavoriteSignal(app.id(), 0);
|
||||
EventTrack::instance()->sendDefaultEvent("Remove from favorite", "Right-click Menu");
|
||||
EventTrack::instance()->sendDefaultEvent("remove_from_favorite", "Right-click Menu");
|
||||
});
|
||||
}
|
||||
break;
|
||||
|
|
|
@ -21,6 +21,8 @@
|
|||
#include <QVariant>
|
||||
#include <QDebug>
|
||||
#include <QtQml>
|
||||
#include <QDBusInterface>
|
||||
#include <QDBusReply>
|
||||
|
||||
#define UKUI_MENU_SCHEMA "org.ukui.menu.settings"
|
||||
#define CONTROL_CENTER_SETTING "org.ukui.control-center.personalise"
|
||||
|
@ -51,6 +53,7 @@ GlobalSetting::GlobalSetting(QObject *parent) : QObject(parent)
|
|||
{
|
||||
initStyleSetting();
|
||||
initGlobalSettings();
|
||||
initUSDSetting();
|
||||
}
|
||||
|
||||
void GlobalSetting::initStyleSetting()
|
||||
|
@ -173,6 +176,35 @@ void GlobalSetting::initGlobalSettings()
|
|||
}
|
||||
}
|
||||
|
||||
void GlobalSetting::initUSDSetting()
|
||||
{
|
||||
m_cache.insert(IsLiteMode, true);
|
||||
|
||||
const QString service = QStringLiteral("org.ukui.SettingsDaemon");
|
||||
const QString path = QStringLiteral("/GlobalSignal");
|
||||
const QString interface = QStringLiteral("org.ukui.SettingsDaemon.GlobalSignal");
|
||||
|
||||
QDBusInterface dBusInterface(service, path, interface);
|
||||
if (dBusInterface.isValid()) {
|
||||
QDBusReply<QString> reply = dBusInterface.call(QStringLiteral("getUKUILiteAnimation"));
|
||||
if (reply.isValid()) {
|
||||
QMap<QString, QVariant> m;
|
||||
m.insert("animation", reply.value());
|
||||
onSysModeChanged(m);
|
||||
}
|
||||
}
|
||||
|
||||
QDBusConnection::sessionBus().connect(service, path, interface, "UKUILiteChanged", this, SLOT(onSysModeChanged));
|
||||
}
|
||||
|
||||
void GlobalSetting::onSysModeChanged(QMap<QString, QVariant> map)
|
||||
{
|
||||
if (map.contains("animation")) {
|
||||
m_cache.insert(IsLiteMode, (map.value("animation").toString() == "off"));
|
||||
Q_EMIT styleChanged(IsLiteMode);
|
||||
}
|
||||
}
|
||||
|
||||
MenuSetting *MenuSetting::instance()
|
||||
{
|
||||
static MenuSetting setting(nullptr);
|
||||
|
|
|
@ -55,7 +55,8 @@ public:
|
|||
IconThemeName,
|
||||
Transparency,
|
||||
EffectEnabled,
|
||||
SystemFontSize
|
||||
SystemFontSize,
|
||||
IsLiteMode
|
||||
};
|
||||
Q_ENUM(Key)
|
||||
|
||||
|
@ -75,10 +76,14 @@ public:
|
|||
Q_SIGNALS:
|
||||
void styleChanged(const GlobalSetting::Key& key);
|
||||
|
||||
private Q_SLOTS:
|
||||
void onSysModeChanged(QMap<QString, QVariant> map);
|
||||
|
||||
private:
|
||||
explicit GlobalSetting(QObject *parent = nullptr);
|
||||
void initStyleSetting();
|
||||
void initGlobalSettings();
|
||||
void initUSDSetting();
|
||||
void updateData(const GlobalSetting::Key& key, const QVariant &value);
|
||||
|
||||
private:
|
||||
|
|
|
@ -22,6 +22,40 @@
|
|||
|
||||
namespace UkuiMenu {
|
||||
|
||||
KCustomProperty* appendCustomProp(KTrackData *data, const QVariantMap &map)
|
||||
{
|
||||
if (!data || map.isEmpty()) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
int i = 0;
|
||||
auto properties = new KCustomProperty[map.size()];
|
||||
QMapIterator<QString, QVariant> it(map);
|
||||
while (it.hasNext()) {
|
||||
it.next();
|
||||
|
||||
std::string string = it.key().toStdString();
|
||||
properties[i].key = strdup(string.c_str());
|
||||
|
||||
string = it.value().toString().toStdString();
|
||||
properties[i].value = strdup(string.c_str());
|
||||
|
||||
++i;
|
||||
}
|
||||
|
||||
return properties;
|
||||
}
|
||||
|
||||
void freeKCustomProperty(KCustomProperty *customProperty, int size)
|
||||
{
|
||||
for (int i = 0; i < size; ++i) {
|
||||
delete customProperty[i].key;
|
||||
delete customProperty[i].value;
|
||||
}
|
||||
|
||||
delete [] customProperty;
|
||||
}
|
||||
|
||||
EventTrack::EventTrack(QObject *parent) : QObject(parent)
|
||||
{
|
||||
|
||||
|
@ -39,18 +73,30 @@ EventTrack *EventTrack::instance()
|
|||
return &eventTrack;
|
||||
}
|
||||
|
||||
void EventTrack::sendClickEvent(const QString &event, const QString &page)
|
||||
void EventTrack::sendClickEvent(const QString &event, const QString &page, const QVariantMap &map)
|
||||
{
|
||||
KTrackData* data = kdk_dia_data_init(KEVENTSOURCE_DESKTOP, KEVENT_CLICK);
|
||||
KCustomProperty* properties = appendCustomProp(data, map);
|
||||
if (properties) {
|
||||
kdk_dia_append_custom_property(data, properties, map.size());
|
||||
}
|
||||
|
||||
kdk_dia_upload_default(data, event.toUtf8().data(), page.toUtf8().data());
|
||||
kdk_dia_data_free(data);
|
||||
freeKCustomProperty(properties, map.size());
|
||||
}
|
||||
|
||||
void EventTrack::sendDefaultEvent(const QString& event, const QString& page)
|
||||
void EventTrack::sendDefaultEvent(const QString& event, const QString& page, const QVariantMap &map)
|
||||
{
|
||||
KTrackData* data = kdk_dia_data_init(KEVENTSOURCE_DESKTOP, KEVENT_CUSTOM);
|
||||
KCustomProperty* properties = appendCustomProp(data, map);
|
||||
if (properties) {
|
||||
kdk_dia_append_custom_property(data, properties, map.size());
|
||||
}
|
||||
|
||||
kdk_dia_upload_default(data, event.toUtf8().data(), page.toUtf8().data());
|
||||
kdk_dia_data_free(data);
|
||||
freeKCustomProperty(properties, map.size());
|
||||
}
|
||||
|
||||
void EventTrack::sendSearchEvent(const QString &event, const QString &page, const QString &content)
|
||||
|
|
|
@ -20,6 +20,7 @@
|
|||
#define UKUI_MENU_EVENT_TRACK_H
|
||||
|
||||
#include <QObject>
|
||||
#include <QVariant>
|
||||
#include <qqml.h>
|
||||
|
||||
namespace UkuiMenu {
|
||||
|
@ -32,8 +33,8 @@ public:
|
|||
static EventTrack *instance();
|
||||
|
||||
explicit EventTrack(QObject *parent = nullptr);
|
||||
Q_INVOKABLE void sendClickEvent(const QString& event, const QString& page);
|
||||
Q_INVOKABLE void sendDefaultEvent(const QString& event, const QString& page);
|
||||
Q_INVOKABLE void sendClickEvent(const QString& event, const QString& page, const QVariantMap &map = {});
|
||||
Q_INVOKABLE void sendDefaultEvent(const QString& event, const QString& page, const QVariantMap &map = {});
|
||||
Q_INVOKABLE void sendSearchEvent(const QString& event, const QString& page, const QString& content);
|
||||
};
|
||||
|
||||
|
|
|
@ -407,12 +407,14 @@ void MenuWindow::init()
|
|||
Q_EMIT panelPosChanged();
|
||||
});
|
||||
|
||||
rootContext()->setContextProperty("isLiteMode", GlobalSetting::instance()->get(GlobalSetting::IsLiteMode));
|
||||
connect(GlobalSetting::instance(), &GlobalSetting::styleChanged, this , [this] (const GlobalSetting::Key& key) {
|
||||
if (key == GlobalSetting::EffectEnabled) {
|
||||
Q_EMIT effectEnabledChanged();
|
||||
}
|
||||
if (key == GlobalSetting::Transparency) {
|
||||
} else if (key == GlobalSetting::Transparency) {
|
||||
Q_EMIT transparencyChanged();
|
||||
} else if (key == GlobalSetting::IsLiteMode) {
|
||||
rootContext()->setContextProperty("isLiteMode", GlobalSetting::instance()->get(key));
|
||||
}
|
||||
});
|
||||
|
||||
|
|
|
@ -273,27 +273,4 @@
|
|||
<translation>关机</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>UkuiMenu::RecentFileExtension</name>
|
||||
<message>
|
||||
<source>Recent Files</source>
|
||||
<translation>最近文件</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Open</source>
|
||||
<translation>打开</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Remove from list</source>
|
||||
<translation>从列表删除</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Clear list</source>
|
||||
<translation>清空全部</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Open the directory where the file is located</source>
|
||||
<translation>打开文件所在目录</translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
|
|
Loading…
Reference in New Issue