forked from openkylin/ukui-menu
实现简易的文件夹数据扩展插件
This commit is contained in:
parent
29a0046b44
commit
33e05ce03a
|
@ -87,6 +87,7 @@ set(SOURCE_FILES
|
||||||
src/extension/menu-extension.cpp src/extension/menu-extension.h
|
src/extension/menu-extension.cpp src/extension/menu-extension.h
|
||||||
src/extension/menu-extension-iface.h
|
src/extension/menu-extension-iface.h
|
||||||
src/appdata/data-provider-plugin-iface.h
|
src/appdata/data-provider-plugin-iface.h
|
||||||
|
src/extension/extensions/folder-extension.cpp src/extension/extensions/folder-extension.h
|
||||||
)
|
)
|
||||||
|
|
||||||
# qrc文件
|
# qrc文件
|
||||||
|
|
|
@ -0,0 +1,76 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2022, KylinSoft Co., Ltd.
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
import QtQuick 2.0
|
||||||
|
import org.ukui.menu.extension 1.0
|
||||||
|
|
||||||
|
UkuiMenuExtension {
|
||||||
|
onExtensionDataChanged: {
|
||||||
|
folderView.model = extensionData.folders
|
||||||
|
}
|
||||||
|
|
||||||
|
Component.onCompleted: {
|
||||||
|
folderView.model = extensionData.folders
|
||||||
|
}
|
||||||
|
|
||||||
|
Rectangle {
|
||||||
|
anchors.fill: parent;
|
||||||
|
color: "green"
|
||||||
|
|
||||||
|
ListView {
|
||||||
|
id: folderView
|
||||||
|
anchors.fill: parent
|
||||||
|
delegate: Item {
|
||||||
|
width: ListView.view.width
|
||||||
|
height: 150
|
||||||
|
|
||||||
|
Column {
|
||||||
|
anchors.fill: parent
|
||||||
|
Row {
|
||||||
|
width: parent.width;
|
||||||
|
height: 50
|
||||||
|
Text {
|
||||||
|
width: 100
|
||||||
|
height: parent.height
|
||||||
|
text: "index: " + index
|
||||||
|
verticalAlignment: Text.AlignVCenter
|
||||||
|
horizontalAlignment: Text.AlignHCenter
|
||||||
|
}
|
||||||
|
|
||||||
|
Text {
|
||||||
|
width: 200
|
||||||
|
height: parent.height
|
||||||
|
text: "name: " + modelData.name
|
||||||
|
verticalAlignment: Text.AlignVCenter
|
||||||
|
horizontalAlignment: Text.AlignHCenter
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Text {
|
||||||
|
width: parent.width;
|
||||||
|
height: 100
|
||||||
|
text: "name: " + modelData.apps
|
||||||
|
verticalAlignment: Text.AlignVCenter
|
||||||
|
horizontalAlignment: Text.AlignLeft
|
||||||
|
wrapMode: Text.WordWrap
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -14,5 +14,6 @@
|
||||||
<file>AppControls2/StyleBackground.qml</file>
|
<file>AppControls2/StyleBackground.qml</file>
|
||||||
<file>AppControls2/StyleText.qml</file>
|
<file>AppControls2/StyleText.qml</file>
|
||||||
<file>AppControls2/IconLabel.qml</file>
|
<file>AppControls2/IconLabel.qml</file>
|
||||||
|
<file>extensions/FolderExtension.qml</file>
|
||||||
</qresource>
|
</qresource>
|
||||||
</RCC>
|
</RCC>
|
||||||
|
|
|
@ -0,0 +1,69 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2022, KylinSoft Co., Ltd.
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "folder-extension.h"
|
||||||
|
#include "app-folder-helper.h"
|
||||||
|
|
||||||
|
#include <QDebug>
|
||||||
|
|
||||||
|
namespace UkuiMenu {
|
||||||
|
|
||||||
|
FolderExtension::FolderExtension(QObject *parent) : MenuExtensionIFace(parent)
|
||||||
|
{
|
||||||
|
qRegisterMetaType<UkuiMenu::Folder>("Folder");
|
||||||
|
m_data.insert("name", "old name: hxf");
|
||||||
|
|
||||||
|
QVariantList folders;
|
||||||
|
for (const auto &item: AppFolderHelper::instance()->folderData()) {
|
||||||
|
folders.append(QVariant::fromValue(item));
|
||||||
|
}
|
||||||
|
|
||||||
|
m_data.insert("folders", folders);
|
||||||
|
}
|
||||||
|
|
||||||
|
int FolderExtension::index()
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString FolderExtension::name()
|
||||||
|
{
|
||||||
|
return "Folder";
|
||||||
|
}
|
||||||
|
|
||||||
|
QUrl FolderExtension::url()
|
||||||
|
{
|
||||||
|
return {"qrc:///qml/extensions/FolderExtension.qml"};
|
||||||
|
}
|
||||||
|
|
||||||
|
QVariantMap FolderExtension::data()
|
||||||
|
{
|
||||||
|
return m_data;
|
||||||
|
}
|
||||||
|
|
||||||
|
void FolderExtension::receive(QVariantMap data)
|
||||||
|
{
|
||||||
|
for (const auto &item: data) {
|
||||||
|
qDebug() << "receive item:" << item.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
m_data.insert("name", "new name: hxf");
|
||||||
|
Q_EMIT dataUpdated();
|
||||||
|
}
|
||||||
|
|
||||||
|
} // UkuiMenu
|
|
@ -0,0 +1,44 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2022, KylinSoft Co., Ltd.
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef UKUI_MENU_FOLDER_EXTENSION_H
|
||||||
|
#define UKUI_MENU_FOLDER_EXTENSION_H
|
||||||
|
|
||||||
|
#include "../menu-extension-iface.h"
|
||||||
|
|
||||||
|
namespace UkuiMenu {
|
||||||
|
|
||||||
|
class FolderExtension : public MenuExtensionIFace
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
explicit FolderExtension(QObject *parent = nullptr);
|
||||||
|
|
||||||
|
int index() override;
|
||||||
|
QString name() override;
|
||||||
|
QUrl url() override;
|
||||||
|
QVariantMap data() override;
|
||||||
|
void receive(QVariantMap data) override;
|
||||||
|
|
||||||
|
private:
|
||||||
|
QVariantMap m_data;
|
||||||
|
};
|
||||||
|
|
||||||
|
} // UkuiMenu
|
||||||
|
|
||||||
|
#endif //UKUI_MENU_FOLDER_EXTENSION_H
|
|
@ -17,6 +17,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "menu-extension.h"
|
#include "menu-extension.h"
|
||||||
|
#include "extensions/folder-extension.h"
|
||||||
|
|
||||||
#include <utility>
|
#include <utility>
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
|
@ -36,6 +37,7 @@ MenuExtension::MenuExtension()
|
||||||
// TODO load extension from filesystem.
|
// TODO load extension from filesystem.
|
||||||
|
|
||||||
// register extension.
|
// register extension.
|
||||||
|
registerExtension(new FolderExtension(this));
|
||||||
|
|
||||||
initModel();
|
initModel();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue