Files

126 lines
3.8 KiB
C++
Raw Permalink Normal View History

/*
* Copyright (C) 2019 Tianjin KYLIN Information Technology Co., Ltd.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation; either version 2.1, 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 <http://www.gnu.org/licenses/&gt;.
*
*/
#include "startbar.h"
#include <QMouseEvent>
#include <QHBoxLayout>
#include <QScreen>
#include <QDebug>
#include <QMenu>
#include <QStyle>
#include "../panel/customstyle.h"
#define THEME_QT_SCHEMA "org.ukui.style"
#define THEME_Style_Name "styleName"
2022-02-16 09:50:35 +08:00
#define UKUI_PANEL_SETTINGS "org.ukui.panel.settings"
#define SHOW_TASKVIEW "showtaskview"
UKUIStartbarPlugin::UKUIStartbarPlugin(const IUKUIPanelPluginStartupInfo &startupInfo):
QObject(),
IUKUIPanelPlugin(startupInfo),
2022-02-16 09:50:35 +08:00
m_widget(new UKUIStartBarWidget(this))
{
2022-02-16 09:50:35 +08:00
m_widget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
}
UKUIStartbarPlugin::~UKUIStartbarPlugin()
{
2022-02-16 09:50:35 +08:00
delete m_widget;
}
QWidget *UKUIStartbarPlugin::widget()
{
2022-02-16 09:50:35 +08:00
return m_widget;
}
void UKUIStartbarPlugin::realign()
{
2022-02-16 09:50:35 +08:00
m_widget->realign();
}
UKUIStartBarWidget::UKUIStartBarWidget( IUKUIPanelPlugin *plugin, QWidget* parent ):
2022-02-16 09:50:35 +08:00
m_plugin(plugin)
{
translator();
2022-02-16 09:50:35 +08:00
m_startMenuButton=new StartMenuButton(plugin,this);
m_layout=new UKUi::GridLayout(this);
m_layout->addWidget(m_startMenuButton);
const QByteArray id(UKUI_PANEL_SETTINGS);
if(QGSettings::isSchemaInstalled(id)) {
m_gsettings = new QGSettings(id);
}
connect(m_gsettings, &QGSettings::changed, this, [=] (const QString &key){
if(key==SHOW_TASKVIEW)
realign();
});
2022-02-16 09:50:35 +08:00
realign();
}
void UKUIStartBarWidget::translator(){
m_translator = new QTranslator(this);
QString locale = QLocale::system().name();
if (locale == "zh_CN"){
if (m_translator->load(QM_INSTALL))
qApp->installTranslator(m_translator);
else
qDebug() <<PLUGINNAME<<"Load translations file" << locale << "failed!";
}
}
UKUIStartBarWidget::~UKUIStartBarWidget()
{
2022-02-16 09:50:35 +08:00
m_startMenuButton->deleteLater();
m_taskViewButton->deleteLater();
}
/*plugin-startmenu refresh function*/
void UKUIStartBarWidget::realign()
{
2022-02-16 09:50:35 +08:00
if(m_gsettings->get(SHOW_TASKVIEW).toBool()){
if (!this->findChild<TaskViewButton *>("TaskViewButton")) {
m_taskViewButton=new TaskViewButton(m_plugin,this);
m_taskViewButton->setObjectName("TaskViewButton");
m_layout->addWidget(m_taskViewButton);
}
} else {
if (this->findChild<TaskViewButton *>("TaskViewButton")) {
if (m_taskViewButton != nullptr) {
m_layout->removeWidget(m_taskViewButton);
m_taskViewButton->deleteLater();
}
} else {
m_startMenuButton->realign();
return;
}
}
2022-02-16 09:50:35 +08:00
if (m_plugin->panel()->isHorizontal()){
m_layout->setColumnCount(m_layout->count());
m_layout->setRowCount(0);
// this->setFixedSize(m_plugin->panel()->panelSize()*2.3,m_plugin->panel()->panelSize());
}else{
m_layout->setRowCount(m_layout->count());
m_layout->setColumnCount(0);
// this->setFixedSize(m_plugin->panel()->panelSize(),m_plugin->panel()->panelSize()*2.3);
}
m_startMenuButton->realign();
m_taskViewButton->realign();
}