forked from openkylin/ukui-panel
feat: 将panel布局代码作为一个包加载
This commit is contained in:
parent
a2f8550555
commit
8e38bfc8f1
|
@ -0,0 +1,25 @@
|
|||
{
|
||||
"Authors": [
|
||||
{
|
||||
"Name": "hxf",
|
||||
"Email": "hewenfei@kylinos.cn"
|
||||
}
|
||||
],
|
||||
"Id": "org.ukui.panel",
|
||||
"Icon": "ukui-panel",
|
||||
"Name": "ukui-panel",
|
||||
"Name[zh_CN]": "任务栏面板",
|
||||
"Tooltip": "Common taskbar panel",
|
||||
"Tooltip[zh_CN]": "普通任务栏面板",
|
||||
"Description": "Common taskbar panel",
|
||||
"Description[zh_CN]": "普通任务栏面板",
|
||||
"Version": "1.0",
|
||||
"Website": "https://ukui.org",
|
||||
"BugReport": "https://gitee.com/openkylin/ukui-panel/issues",
|
||||
"ShowIn": "Panel",
|
||||
"WidgetType": "Container",
|
||||
|
||||
"Contents": {
|
||||
"Main": "ui/Container.qml"
|
||||
}
|
||||
}
|
|
@ -259,7 +259,7 @@ WidgetContainerItem {
|
|||
id: repeater
|
||||
model: Panel.WidgetSortModel {
|
||||
// TODO: use config
|
||||
widgetOrder: widgetsOrder
|
||||
widgetOrder: containerItem.WidgetContainer.config.widgetsOrder
|
||||
sourceModel: containerItem.widgetItemModel
|
||||
}
|
||||
delegate: widgetLoaderComponent
|
|
@ -1,5 +1,6 @@
|
|||
<RCC>
|
||||
<qresource prefix="/">
|
||||
<file>Container.qml</file>
|
||||
<qresource prefix="/ukui-panel">
|
||||
<file>org.ukui.panel/metadata.json</file>
|
||||
<file>org.ukui.panel/ui/Container.qml</file>
|
||||
</qresource>
|
||||
</RCC>
|
||||
|
|
|
@ -59,11 +59,12 @@ Panel::Panel(Screen *screen, const QString &id, QWindow *parent)
|
|||
{
|
||||
qRegisterMetaType<QList<int>>();
|
||||
qmlRegisterType<UkuiPanel::WidgetSortModel>("org.ukui.panel.impl", 1, 0, "WidgetSortModel");
|
||||
|
||||
rootContext()->setContextProperty("panel", this);
|
||||
initIsland();
|
||||
|
||||
setColor(Qt::transparent);
|
||||
setFlags(flags() | Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint | Qt::WindowDoesNotAcceptFocus);
|
||||
rootContext()->setContextProperty("panel", this);
|
||||
|
||||
m_windowProxy = new UkuiQuick::WindowProxy(this);
|
||||
m_windowProxy->setWindowType(UkuiQuick::WindowType::Dock);
|
||||
|
@ -72,7 +73,6 @@ Panel::Panel(Screen *screen, const QString &id, QWindow *parent)
|
|||
setPanelScreen(screen);
|
||||
initConfig();
|
||||
loadWidgetsConfig();
|
||||
loadContainerItem();
|
||||
initWidgets();
|
||||
loadActions();
|
||||
|
||||
|
@ -121,10 +121,14 @@ void Panel::initIsland()
|
|||
config->addChild(UkuiQuick::Island::viewGroupName(), data);
|
||||
}
|
||||
|
||||
// 添加panel包所在的qrc路径
|
||||
UkuiQuick::WidgetContainer::widgetLoader().addWidgetSearchPath(QStringLiteral(":/ukui-panel"));
|
||||
|
||||
// TODO: 配置错误检查
|
||||
if (!loadMainView(defaultViewId)) {
|
||||
// 全部使用默认配置
|
||||
auto cont = new UkuiQuick::WidgetContainer(this);
|
||||
auto metadata = UkuiQuick::WidgetMetadata(QStringLiteral(":/ukui-panel/org.ukui.panel"));
|
||||
auto cont = new UkuiQuick::WidgetContainer(metadata, this);
|
||||
cont->setConfig(UkuiQuick::ConfigLoader::getConfig(QStringLiteral("panel")));
|
||||
setMainView(cont);
|
||||
}
|
||||
|
@ -311,11 +315,6 @@ void Panel::setPanelSize(int size)
|
|||
}
|
||||
}
|
||||
|
||||
void Panel::loadContainerItem()
|
||||
{
|
||||
setSource(QUrl("qrc:///Container.qml"));
|
||||
}
|
||||
|
||||
void Panel::loadWidgetsConfig()
|
||||
{
|
||||
auto containerConfig = mainView()->config();
|
||||
|
@ -352,8 +351,6 @@ void Panel::loadWidgetsConfig()
|
|||
|
||||
// TODO: 在model内使用config实现禁用列表
|
||||
m_disabledWidgets = containerConfig->getValue(QStringLiteral("disabledWidgets")).toStringList();
|
||||
// widgetsOrder
|
||||
rootContext()->setContextProperty("widgetsOrder", containerConfig->getValue(QStringLiteral("widgetsOrder")));
|
||||
}
|
||||
|
||||
void Panel::initWidgets()
|
||||
|
|
|
@ -98,7 +98,6 @@ private Q_SLOTS:
|
|||
private:
|
||||
void initConfig();
|
||||
void initPanelConfig();
|
||||
void loadContainerItem();
|
||||
void loadWidgetsConfig();
|
||||
void initWidgets();
|
||||
void updateGeometry();
|
||||
|
|
Loading…
Reference in New Issue