Merge branch 'main' into 0512-dev

This commit is contained in:
iaom 2021-05-13 11:39:26 +08:00 committed by GitHub
commit 1ad0542fca
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
20 changed files with 180 additions and 64 deletions

View File

@ -65,7 +65,7 @@ QVector<SKeyWord> ChineseSegmentation::callSegement(QString str) {
convert(keywordres, vecNeeds); convert(keywordres, vecNeeds);
keywordres.clear(); keywordres.clear();
keywordres.shrink_to_fit(); // keywordres.shrink_to_fit();
return vecNeeds; return vecNeeds;

View File

@ -19,7 +19,6 @@
* *
*/ */
#include <QtConcurrent> #include <QtConcurrent>
#include <QApplication>
#include <QPalette> #include <QPalette>
#include "global-settings.h" #include "global-settings.h"
@ -83,6 +82,8 @@ GlobalSettings::GlobalSettings(QObject *parent) : QObject(parent) {
qApp->paletteChanged(qApp->palette()); qApp->paletteChanged(qApp->palette());
m_cache.remove(FONT_SIZE_KEY); m_cache.remove(FONT_SIZE_KEY);
m_cache.insert(FONT_SIZE_KEY, m_theme_gsettings->get(FONT_SIZE_KEY).toDouble()); m_cache.insert(FONT_SIZE_KEY, m_theme_gsettings->get(FONT_SIZE_KEY).toDouble());
} else if (key == ICON_THEME_KEY) {
qApp->paletteChanged(qApp->palette());
} }
}); });
m_cache.remove(STYLE_NAME_KEY); m_cache.remove(STYLE_NAME_KEY);

View File

@ -33,6 +33,7 @@
#include <QGSettings/QGSettings> #include <QGSettings/QGSettings>
#include <QDBusConnection> #include <QDBusConnection>
#include <QDBusInterface> #include <QDBusInterface>
#include <QApplication>
#include "libsearch_global.h" #include "libsearch_global.h"
#define CONTROL_CENTER_PERSONALISE_GSETTINGS_ID "org.ukui.control-center.personalise" #define CONTROL_CENTER_PERSONALISE_GSETTINGS_ID "org.ukui.control-center.personalise"
@ -40,6 +41,7 @@
#define THEME_GSETTINGS_ID "org.ukui.style" #define THEME_GSETTINGS_ID "org.ukui.style"
#define STYLE_NAME_KEY "styleName" #define STYLE_NAME_KEY "styleName"
#define FONT_SIZE_KEY "systemFontSize" #define FONT_SIZE_KEY "systemFontSize"
#define ICON_THEME_KEY "iconThemeName"
#define ENABLE_CREATE_INDEX_ASK_DIALOG "enable_create_index_ask_dialog" #define ENABLE_CREATE_INDEX_ASK_DIALOG "enable_create_index_ask_dialog"
#define WEB_ENGINE "web_engine" #define WEB_ENGINE "web_engine"

View File

@ -11,19 +11,24 @@ namespace Zeeker {
class SearchPluginIface : public PluginInterface class SearchPluginIface : public PluginInterface
{ {
public: public:
struct DescriptionInfo
{
QString key;
QString value;
};
/** /**
* @brief The resultInfo struct * @brief The ResultInfo struct
*/ */
struct resultInfo struct ResultInfo
{ {
QIcon icon; QIcon icon;
QString name; QString name;
QString description; QVector<DescriptionInfo> description;
QMap<QString,QString> actionMap;//action name and action key QMap<QString,QString> actionMap;//action name and action key
}; };
virtual ~SearchPluginIface() {} virtual ~SearchPluginIface() {}
virtual QString getPluginName() = 0; virtual QString getPluginName() = 0;
virtual void KeywordSearch(QString keyword,QQueue<resultInfo> *searchResult) = 0; virtual void KeywordSearch(QString keyword,QQueue<ResultInfo> *searchResult) = 0;
virtual void openAction(QString name, QString key) = 0; virtual void openAction(QString name, QString key) = 0;
}; };

View File

@ -22,7 +22,6 @@
#include <QDebug> #include <QDebug>
#include <QLabel> #include <QLabel>
#include <QTimer> #include <QTimer>
#include <QApplication>
#include "config-file.h" #include "config-file.h"
using namespace Zeeker; using namespace Zeeker;

View File

@ -20,12 +20,10 @@
*/ */
#include "highlight-item-delegate.h" #include "highlight-item-delegate.h"
#include <QPainter> #include <QPainter>
#include <QApplication>
#include <QStyle> #include <QStyle>
#include <QDebug> #include <QDebug>
#include <QTextDocument> #include <QTextDocument>
#include <QAbstractTextDocumentLayout> #include <QAbstractTextDocumentLayout>
#include "global-settings.h"
using namespace Zeeker; using namespace Zeeker;
HighlightItemDelegate::HighlightItemDelegate(QObject *parent) : QStyledItemDelegate(parent) { HighlightItemDelegate::HighlightItemDelegate(QObject *parent) : QStyledItemDelegate(parent) {

View File

@ -22,6 +22,7 @@
#define HIGHLIGHTITEMDELEGATE_H #define HIGHLIGHTITEMDELEGATE_H
#include <QStyledItemDelegate> #include <QStyledItemDelegate>
#include "global-settings.h"
namespace Zeeker { namespace Zeeker {
class HighlightItemDelegate : public QStyledItemDelegate { class HighlightItemDelegate : public QStyledItemDelegate {

View File

@ -26,7 +26,6 @@
#include <QPainter> #include <QPainter>
#include <QDesktopServices> #include <QDesktopServices>
#include <QUrl> #include <QUrl>
#include <QApplication>
using namespace Zeeker; using namespace Zeeker;
HomePageItem::HomePageItem(QWidget *parent, const int& type, const QString& path) : QWidget(parent) { HomePageItem::HomePageItem(QWidget *parent, const int& type, const QString& path) : QWidget(parent) {

View File

@ -30,7 +30,6 @@
#include <QFileInfo> #include <QFileInfo>
#include <QProcess> #include <QProcess>
#include <QClipboard> #include <QClipboard>
#include <QApplication>
#include <QFileInfo> #include <QFileInfo>
#include <QDateTime> #include <QDateTime>
#include <QDBusMetaType> #include <QDBusMetaType>
@ -40,6 +39,7 @@
using namespace Zeeker; using namespace Zeeker;
SearchDetailView::SearchDetailView(QWidget *parent) : QWidget(parent) { SearchDetailView::SearchDetailView(QWidget *parent) : QWidget(parent) {
initUI(); initUI();
connect(qApp, &QApplication::paletteChanged, this, &SearchDetailView::refreshIcon);
} }
SearchDetailView::~SearchDetailView() { SearchDetailView::~SearchDetailView() {
@ -200,9 +200,7 @@ void SearchDetailView::setAppWidget(const QString &appname, const QString &path,
m_typeLabel->show(); m_typeLabel->show();
m_hLine->show(); m_hLine->show();
QIcon icon;
if(path.isEmpty() || path == "") { if(path.isEmpty() || path == "") {
icon = QIcon(iconpath);
m_optionView->setupOptions(m_type, false); m_optionView->setupOptions(m_type, false);
//未安装应用有一个label显示软件描述 //未安装应用有一个label显示软件描述
if(description != "" && !description.isEmpty()) { if(description != "" && !description.isEmpty()) {
@ -210,17 +208,13 @@ void SearchDetailView::setAppWidget(const QString &appname, const QString &path,
m_contentLabel->show(); m_contentLabel->show();
m_contentLabel->setText(QString(tr("Introduction: %1")).arg(description)); m_contentLabel->setText(QString(tr("Introduction: %1")).arg(description));
} }
setIcon(iconpath, false);
} else { } else {
m_optionView->setupOptions(m_type, true); m_optionView->setupOptions(m_type, true);
if(QIcon::fromTheme(iconpath).isNull()) { setIcon(iconpath, true);
icon = QIcon(":/res/icons/desktop.png");
} else {
icon = QIcon::fromTheme(iconpath);
}
} }
m_optionView->show(); m_optionView->show();
m_iconLabel->setPixmap(icon.pixmap(icon.actualSize(QSize(96, 96))));
QFontMetrics fontMetrics = m_nameLabel->fontMetrics(); QFontMetrics fontMetrics = m_nameLabel->fontMetrics();
QString showname = fontMetrics.elidedText(m_name, Qt::ElideRight, 274); //当字体长度超过215时显示为省略号 QString showname = fontMetrics.elidedText(m_name, Qt::ElideRight, 274); //当字体长度超过215时显示为省略号
m_nameLabel->setText(showname); m_nameLabel->setText(showname);
@ -352,8 +346,7 @@ void SearchDetailView::setupWidget(const int& type, const QString& path) {
case SearchListView::ResType::Content: case SearchListView::ResType::Content:
case SearchListView::ResType::Dir : case SearchListView::ResType::Dir :
case SearchListView::ResType::File : { case SearchListView::ResType::File : {
QIcon icon = FileUtils::getFileIcon(QUrl::fromLocalFile(path).toString()); setIcon(path);
m_iconLabel->setPixmap(icon.pixmap(icon.actualSize(QSize(96, 96))));
QFontMetrics fontMetrics = m_nameLabel->fontMetrics(); QFontMetrics fontMetrics = m_nameLabel->fontMetrics();
QString wholeName = FileUtils::getFileName(path); QString wholeName = FileUtils::getFileName(path);
QString name = fontMetrics.elidedText(wholeName, Qt::ElideRight, 274); QString name = fontMetrics.elidedText(wholeName, Qt::ElideRight, 274);
@ -366,8 +359,7 @@ void SearchDetailView::setupWidget(const int& type, const QString& path) {
break; break;
} }
case SearchListView::ResType::Setting : { case SearchListView::ResType::Setting : {
QIcon icon = FileUtils::getSettingIcon(path, true); setIcon(path);
m_iconLabel->setPixmap(icon.pixmap(icon.actualSize(QSize(96, 96))));
QString settingType = path.mid(path.indexOf("/") + 1, path.lastIndexOf("/") - path.indexOf("/") - 1); //配置项所属控制面板插件名 QString settingType = path.mid(path.indexOf("/") + 1, path.lastIndexOf("/") - path.indexOf("/") - 1); //配置项所属控制面板插件名
m_nameLabel->setText(settingType); m_nameLabel->setText(settingType);
m_typeLabel->setText(FileUtils::getSettingName(path)); m_typeLabel->setText(FileUtils::getSettingName(path));
@ -567,6 +559,42 @@ void SearchDetailView::initUI() {
this->clearLayout(); //初始化时隐藏所有控件 this->clearLayout(); //初始化时隐藏所有控件
} }
/**
* @brief SearchDetailView::refreshIcon
*/
void SearchDetailView::refreshIcon() {
this->setIcon(m_iconPath);
}
/**
* @brief SearchDetailView::setIcon
* @param path
* @param installed
*/
void SearchDetailView::setIcon(const QString &path, const bool &installed)
{
m_iconPath = path;
if (m_type == SearchListView::ResType::App) {
QIcon icon;
if(!installed) {
icon = QIcon(path);
} else {
if(QIcon::fromTheme(path).isNull()) {
icon = QIcon(":/res/icons/desktop.png");
} else {
icon = QIcon::fromTheme(path);
}
}
m_iconLabel->setPixmap(icon.pixmap(icon.actualSize(QSize(96, 96))));
} else if (m_type == SearchListView::ResType::Setting) {
QIcon icon = FileUtils::getSettingIcon(path, true);
m_iconLabel->setPixmap(icon.pixmap(icon.actualSize(QSize(96, 96))));
} else {
QIcon icon = FileUtils::getFileIcon(QUrl::fromLocalFile(path).toString());
m_iconLabel->setPixmap(icon.pixmap(icon.actualSize(QSize(96, 96))));
}
}
/** /**
* @brief SearchDetailView::addDesktopShortcut * @brief SearchDetailView::addDesktopShortcut
* @return * @return

View File

@ -71,6 +71,8 @@ private:
QString m_pkgname = 0; //目前只有未安装应用在打开软件商店时需要此参数 QString m_pkgname = 0; //目前只有未安装应用在打开软件商店时需要此参数
void initUI(); void initUI();
void setIcon(const QString& path, const bool &installed = true);
QString m_iconPath;
QLabel * m_iconLabel = nullptr; QLabel * m_iconLabel = nullptr;
QFrame * m_nameFrame = nullptr; QFrame * m_nameFrame = nullptr;
QHBoxLayout * m_nameLayout = nullptr; QHBoxLayout * m_nameLayout = nullptr;
@ -105,6 +107,7 @@ Q_SIGNALS:
void configFileChanged(); void configFileChanged();
private Q_SLOTS: private Q_SLOTS:
void execActions(const int&, const int&, const QString&); void execActions(const int&, const int&, const QString&);
void refreshIcon();
}; };
//此类用于url拦截 //此类用于url拦截

View File

@ -128,7 +128,13 @@ void SearchListView::clear() {
*/ */
void SearchListView::refresh() void SearchListView::refresh()
{ {
QModelIndex index = this->currentIndex();
m_model->refresh(); m_model->refresh();
if(index.row() >= 0 && index.row() < m_model->length() && m_isSelected) {
this->blockSignals(true);
this->setCurrentIndex(index);
this->blockSignals(false);
}
rowheight = this->rowHeight(this->model()->index(0, 0, QModelIndex())) + 1; rowheight = this->rowHeight(this->model()->index(0, 0, QModelIndex())) + 1;
this->setFixedHeight(m_item->getCurrentSize() * rowheight + 4); this->setFixedHeight(m_item->getCurrentSize() * rowheight + 4);
} }

View File

@ -20,11 +20,10 @@
*/ */
#include "create-index-ask-dialog.h" #include "create-index-ask-dialog.h"
#include <QPainter>
using namespace Zeeker; using namespace Zeeker;
CreateIndexAskDialog::CreateIndexAskDialog(QWidget *parent) : QDialog(parent) { CreateIndexAskDialog::CreateIndexAskDialog(QWidget *parent) : QDialog(parent) {
this->setWindowIcon(QIcon::fromTheme("kylin-search")); // this->setWindowIcon(QIcon::fromTheme("kylin-search"));
this->setWindowTitle(tr("ukui-search")); this->setWindowTitle(tr("ukui-search"));
initUi(); initUi();
@ -46,6 +45,10 @@ void CreateIndexAskDialog::initUi() {
m_iconLabel = new QLabel(m_titleFrame); m_iconLabel = new QLabel(m_titleFrame);
m_iconLabel->setFixedSize(24, 24); m_iconLabel->setFixedSize(24, 24);
m_iconLabel->setPixmap(QIcon::fromTheme("kylin-search").pixmap(QSize(24, 24))); m_iconLabel->setPixmap(QIcon::fromTheme("kylin-search").pixmap(QSize(24, 24)));
//主题改变时,更新自定义标题栏的图标
connect(qApp, &QApplication::paletteChanged, this, [ = ]() {
m_iconLabel->setPixmap(QIcon::fromTheme("kylin-search").pixmap(QSize(24, 24)));
});
m_titleLabel = new QLabel(m_titleFrame); m_titleLabel = new QLabel(m_titleFrame);
m_titleLabel->setText(tr("Search")); m_titleLabel->setText(tr("Search"));
m_closeBtn = new QPushButton(m_titleFrame); m_closeBtn = new QPushButton(m_titleFrame);
@ -113,6 +116,10 @@ void CreateIndexAskDialog::initUi() {
m_contentLyt->addWidget(m_btnFrame); m_contentLyt->addWidget(m_btnFrame);
m_mainLyt->addWidget(m_contentFrame); m_mainLyt->addWidget(m_contentFrame);
#if (QT_VERSION < QT_VERSION_CHECK(5, 12, 0))
m_titleFrame->hide();
this->setFixedSize(380, 162);
#endif
} }
/** /**

View File

@ -30,6 +30,8 @@
#include <QLabel> #include <QLabel>
#include <QPushButton> #include <QPushButton>
#include <QStyleOption> #include <QStyleOption>
#include <QApplication>
#include <QPainter>
namespace Zeeker { namespace Zeeker {
class CreateIndexAskDialog : public QDialog { class CreateIndexAskDialog : public QDialog {

View File

@ -29,8 +29,11 @@
#include <QLocale> #include <QLocale>
#include <X11/Xlib.h> #include <X11/Xlib.h>
#include <syslog.h> #include <syslog.h>
#if (QT_VERSION >= QT_VERSION_CHECK(5, 12, 0))
#include <ukui-log4qt.h> #include <ukui-log4qt.h>
#endif
#include <QObject> #include <QObject>
#include <QApplication>
#include "qt-single-application.h" #include "qt-single-application.h"
#include "qt-local-peer.h" #include "qt-local-peer.h"
//#include "inotify-manager.h" //#include "inotify-manager.h"
@ -144,8 +147,11 @@ void searchMethod(FileUtils::SearchMethod sm){
} }
*/ */
int main(int argc, char *argv[]) { int main(int argc, char *argv[]) {
//Init log module //v101日志模块
//#if (QT_VERSION >= QT_VERSION_CHECK(5, 12, 0))
// //Init log module
// initUkuiLog4qt("ukui-search"); // initUkuiLog4qt("ukui-search");
//#endif
// Determine whether the home directory has been created, and if not, keep waiting. // Determine whether the home directory has been created, and if not, keep waiting.
char *p_home = NULL; char *p_home = NULL;
@ -171,6 +177,11 @@ int main(int argc, char *argv[]) {
// Output log to file // Output log to file
qInstallMessageHandler(messageOutput); qInstallMessageHandler(messageOutput);
//若使用v101日志模块可以解放如下判断条件
//#if (QT_VERSION < QT_VERSION_CHECK(5, 12, 0))
// // Output log to file
// qInstallMessageHandler(messageOutput);
//#endif
// Register meta type // Register meta type
qDebug() << "ukui-search main start"; qDebug() << "ukui-search main start";
@ -268,6 +279,7 @@ int main(int argc, char *argv[]) {
//set main window to the center of screen //set main window to the center of screen
MainWindow *w = new MainWindow; MainWindow *w = new MainWindow;
qApp->setWindowIcon(QIcon::fromTheme("kylin-search"));
// centerToScreen(w); // centerToScreen(w);
// w->moveToPanel(); // w->moveToPanel();
centerToScreen(w); centerToScreen(w);
@ -289,7 +301,9 @@ int main(int argc, char *argv[]) {
if(QString::compare(QString("-s"), QString(QLatin1String(argv[1]))) == 0) { if(QString::compare(QString("-s"), QString(QLatin1String(argv[1]))) == 0) {
// w->moveToPanel(); // w->moveToPanel();
centerToScreen(w); centerToScreen(w);
#if (QT_VERSION >= QT_VERSION_CHECK(5, 12, 0))
XAtomHelper::getInstance()->setWindowMotifHint(w->winId(), w->m_hints); XAtomHelper::getInstance()->setWindowMotifHint(w->winId(), w->m_hints);
#endif
w->show(); w->show();
} }

View File

@ -29,9 +29,11 @@
#include <QPalette> #include <QPalette>
#include <QScreen> #include <QScreen>
#include <QStyleOption> #include <QStyleOption>
#include <KWindowEffects>
#include <QPixmap> #include <QPixmap>
#if (QT_VERSION >= QT_VERSION_CHECK(5, 12, 0))
#include <KWindowEffects>
#include "kwindowsystem.h" #include "kwindowsystem.h"
#endif
#include "qt-single-application.h" #include "qt-single-application.h"
//#include "inotify-manager.h" //#include "inotify-manager.h"
@ -58,7 +60,7 @@ MainWindow::MainWindow(QWidget *parent) :
// this->setWindowFlags(Qt::CustomizeWindowHint | Qt::FramelessWindowHint | Qt::X11BypassWindowManagerHint); // this->setWindowFlags(Qt::CustomizeWindowHint | Qt::FramelessWindowHint | Qt::X11BypassWindowManagerHint);
// this->setWindowFlags(Qt::CustomizeWindowHint | Qt::FramelessWindowHint); // this->setWindowFlags(Qt::CustomizeWindowHint | Qt::FramelessWindowHint);
this->setWindowIcon(QIcon::fromTheme("kylin-search")); // this->setWindowIcon(QIcon::fromTheme("kylin-search"));
this->setAttribute(Qt::WA_TranslucentBackground, true); this->setAttribute(Qt::WA_TranslucentBackground, true);
this->setAutoFillBackground(false); this->setAutoFillBackground(false);
this->setFocusPolicy(Qt::StrongFocus); this->setFocusPolicy(Qt::StrongFocus);
@ -67,6 +69,7 @@ MainWindow::MainWindow(QWidget *parent) :
initUi(); initUi();
initTimer(); initTimer();
#if (QT_VERSION >= QT_VERSION_CHECK(5, 12, 0))
// setProperty("useStyleWindowManager", false); //禁止拖动 // setProperty("useStyleWindowManager", false); //禁止拖动
m_hints.flags = MWM_HINTS_FUNCTIONS | MWM_HINTS_DECORATIONS; m_hints.flags = MWM_HINTS_FUNCTIONS | MWM_HINTS_DECORATIONS;
m_hints.functions = MWM_FUNC_ALL; m_hints.functions = MWM_FUNC_ALL;
@ -80,6 +83,7 @@ MainWindow::MainWindow(QWidget *parent) :
path.addRect(rect); path.addRect(rect);
setProperty("blurRegion", QRegion(path.toFillPolygon().toPolygon())); setProperty("blurRegion", QRegion(path.toFillPolygon().toPolygon()));
KWindowEffects::enableBlurBehind(this->winId(), true, QRegion(path.toFillPolygon().toPolygon())); KWindowEffects::enableBlurBehind(this->winId(), true, QRegion(path.toFillPolygon().toPolygon()));
#endif
connect(qApp, &QApplication::paletteChanged, this, [ = ](const QPalette & pal) { connect(qApp, &QApplication::paletteChanged, this, [ = ](const QPalette & pal) {
this->setPalette(pal); this->setPalette(pal);
@ -125,7 +129,9 @@ MainWindow::MainWindow(QWidget *parent) :
clearSearchResult(); clearSearchResult();
// this->moveToPanel(); // this->moveToPanel();
centerToScreen(this); centerToScreen(this);
#if (QT_VERSION >= QT_VERSION_CHECK(5, 12, 0))
XAtomHelper::getInstance()->setWindowMotifHint(winId(), m_hints); XAtomHelper::getInstance()->setWindowMotifHint(winId(), m_hints);
#endif
this->show(); this->show();
this->m_searchLayout->focusIn(); //打开主界面时输入框夺焦,可直接输入 this->m_searchLayout->focusIn(); //打开主界面时输入框夺焦,可直接输入
this->raise(); this->raise();
@ -150,10 +156,12 @@ MainWindow::~MainWindow() {
delete m_searchLayout; delete m_searchLayout;
m_searchLayout = NULL; m_searchLayout = NULL;
} }
// if(m_settingsWidget) { #if (QT_VERSION < QT_VERSION_CHECK(5, 12, 0))
// delete m_settingsWidget; if(m_settingsWidget) {
// m_settingsWidget = NULL; delete m_settingsWidget;
// } m_settingsWidget = NULL;
}
#endif
if(m_askDialog) { if(m_askDialog) {
delete m_askDialog; delete m_askDialog;
m_askDialog = NULL; m_askDialog = NULL;
@ -189,6 +197,10 @@ void MainWindow::initUi() {
m_iconLabel = new QLabel(m_titleFrame); m_iconLabel = new QLabel(m_titleFrame);
m_iconLabel->setFixedSize(24, 24); m_iconLabel->setFixedSize(24, 24);
m_iconLabel->setPixmap(QIcon::fromTheme("kylin-search").pixmap(QSize(24, 24))); m_iconLabel->setPixmap(QIcon::fromTheme("kylin-search").pixmap(QSize(24, 24)));
//主题改变时,更新自定义标题栏的图标
connect(qApp, &QApplication::paletteChanged, this, [ = ]() {
m_iconLabel->setPixmap(QIcon::fromTheme("kylin-search").pixmap(QSize(24, 24)));
});
m_titleLabel = new QLabel(m_titleFrame); m_titleLabel = new QLabel(m_titleFrame);
m_titleLabel->setText(tr("Search")); m_titleLabel->setText(tr("Search"));
m_menuBtn = new QPushButton(m_titleFrame); m_menuBtn = new QPushButton(m_titleFrame);
@ -199,38 +211,42 @@ void MainWindow::initUi() {
m_menuBtn->setProperty("isWindowButton", 0x01); m_menuBtn->setProperty("isWindowButton", 0x01);
m_menuBtn->setFlat(true); m_menuBtn->setFlat(true);
connect(m_menuBtn, &QPushButton::clicked, this, [ = ]() { connect(m_menuBtn, &QPushButton::clicked, this, [ = ]() {
// if(m_settingsWidget) { //当此窗口已存在时,仅需置顶 #if (QT_VERSION < QT_VERSION_CHECK(5, 12, 0))
// if(!m_settingsWidget->isVisible()) { if(m_settingsWidget) { //当此窗口已存在时,仅需置顶
// centerToScreen(m_settingsWidget); if(!m_settingsWidget->isVisible()) {
// } centerToScreen(m_settingsWidget);
// m_settingsWidget->showWidget(); }
// return; m_settingsWidget->showWidget();
// } return;
// m_settingsWidget = new SettingsWidget(); }
// connect(this, &MainWindow::webEngineChanged, m_settingsWidget, [ = ]() { m_settingsWidget = new SettingsWidget();
// m_settingsWidget->resetWebEngine(); connect(this, &MainWindow::webEngineChanged, m_settingsWidget, [ = ]() {
// }); m_settingsWidget->resetWebEngine();
// connect(m_settingsWidget, &SettingsWidget::webEngineChanged, this, [ = ](const QString & engine) { });
// if(m_search_gsettings && m_search_gsettings->keys().contains(WEB_ENGINE_KEY)) { connect(m_settingsWidget, &SettingsWidget::webEngineChanged, this, [ = ](const QString & engine) {
// m_search_gsettings->set(WEB_ENGINE_KEY, engine); if(m_search_gsettings && m_search_gsettings->keys().contains(WEB_ENGINE_KEY)) {
// } else { m_search_gsettings->set(WEB_ENGINE_KEY, engine);
// GlobalSettings::getInstance()->setValue(WEB_ENGINE, engine); } else {
// } GlobalSettings::getInstance()->setValue(WEB_ENGINE, engine);
// }); }
// centerToScreen(m_settingsWidget); });
// m_settingsWidget->show(); centerToScreen(m_settingsWidget);
// connect(m_settingsWidget, &SettingsWidget::settingWidgetClosed, this, [ = ]() { m_settingsWidget->show();
// QTimer::singleShot(100, this, [ = ] { connect(m_settingsWidget, &SettingsWidget::settingWidgetClosed, this, [ = ]() {
//// clearSearchResult(); //现暂定从设置页返回主页面不清空搜索结果 QTimer::singleShot(100, this, [ = ] {
// this->setWindowState(this->windowState() & ~Qt::WindowMinimized); // clearSearchResult(); //现暂定从设置页返回主页面不清空搜索结果
// this->raise(); this->setWindowState(this->windowState() & ~Qt::WindowMinimized);
// this->showNormal(); this->raise();
// this->activateWindow(); this->showNormal();
// }); this->activateWindow();
// }); });
});
#endif
#if (QT_VERSION >= QT_VERSION_CHECK(5, 12, 0))
//打开控制面板的设置页 //打开控制面板的设置页
QProcess process; QProcess process;
process.startDetached("ukui-control-center --search"); process.startDetached("ukui-control-center --search");
#endif
}); });
m_titleLyt->addWidget(m_iconLabel); m_titleLyt->addWidget(m_iconLabel);
m_titleLyt->addWidget(m_titleLabel); m_titleLyt->addWidget(m_titleLabel);
@ -286,11 +302,13 @@ void MainWindow::initUi() {
//创建索引询问弹窗 //创建索引询问弹窗
m_askDialog = new CreateIndexAskDialog(this); m_askDialog = new CreateIndexAskDialog(this);
#if (QT_VERSION >= QT_VERSION_CHECK(5, 12, 0))
MotifWmHints ask_dialog_hints; MotifWmHints ask_dialog_hints;
ask_dialog_hints.flags = MWM_HINTS_FUNCTIONS | MWM_HINTS_DECORATIONS; ask_dialog_hints.flags = MWM_HINTS_FUNCTIONS | MWM_HINTS_DECORATIONS;
ask_dialog_hints.functions = MWM_FUNC_ALL; ask_dialog_hints.functions = MWM_FUNC_ALL;
ask_dialog_hints.decorations = MWM_DECOR_BORDER; ask_dialog_hints.decorations = MWM_DECOR_BORDER;
XAtomHelper::getInstance()->setWindowMotifHint(m_askDialog->winId(), ask_dialog_hints); XAtomHelper::getInstance()->setWindowMotifHint(m_askDialog->winId(), ask_dialog_hints);
#endif
connect(m_askDialog, &CreateIndexAskDialog::closed, this, [ = ]() { connect(m_askDialog, &CreateIndexAskDialog::closed, this, [ = ]() {
m_isAskDialogVisible = false; m_isAskDialogVisible = false;
}); });
@ -323,7 +341,9 @@ void MainWindow::bootOptionsFilter(QString opt) {
clearSearchResult(); clearSearchResult();
// this->moveToPanel(); // this->moveToPanel();
centerToScreen(this); centerToScreen(this);
#if (QT_VERSION >= QT_VERSION_CHECK(5, 12, 0))
XAtomHelper::getInstance()->setWindowMotifHint(winId(), m_hints); XAtomHelper::getInstance()->setWindowMotifHint(winId(), m_hints);
#endif
this->show(); this->show();
this->m_searchLayout->focusIn(); this->m_searchLayout->focusIn();
this->raise(); this->raise();

View File

@ -49,10 +49,14 @@
#include "content-widget.h" #include "content-widget.h"
#include "input-box.h" #include "input-box.h"
#include "index/index-generator.h" #include "index/index-generator.h"
//#include "settings-widget.h"
#include "libsearch.h" #include "libsearch.h"
#include "search-app-thread.h" #include "search-app-thread.h"
#if (QT_VERSION >= QT_VERSION_CHECK(5, 12, 0))
#include "xatom-helper.h" #include "xatom-helper.h"
#endif
#if (QT_VERSION < QT_VERSION_CHECK(5, 12, 0))
#include "settings-widget.h"
#endif
#include "create-index-ask-dialog.h" #include "create-index-ask-dialog.h"
#define UKUI_SEARCH_SCHEMAS "org.ukui.search.settings" #define UKUI_SEARCH_SCHEMAS "org.ukui.search.settings"
@ -82,7 +86,9 @@ public:
void centerToScreen(QWidget* widget); void centerToScreen(QWidget* widget);
void initGsettings(); void initGsettings();
#if (QT_VERSION >= QT_VERSION_CHECK(5, 12, 0))
MotifWmHints m_hints; MotifWmHints m_hints;
#endif
private: private:
@ -95,7 +101,9 @@ private:
QLabel * m_iconLabel = nullptr; // Icon lable QLabel * m_iconLabel = nullptr; // Icon lable
QLabel * m_titleLabel = nullptr; // Title lable QLabel * m_titleLabel = nullptr; // Title lable
QPushButton * m_menuBtn = nullptr; // Menu button QPushButton * m_menuBtn = nullptr; // Menu button
// SettingsWidget * m_settingsWidget = nullptr; // Settings Widget #if (QT_VERSION < QT_VERSION_CHECK(5, 12, 0))
SettingsWidget * m_settingsWidget = nullptr; // Settings Widget
#endif
ContentWidget * m_contentFrame = nullptr; // Content frame ContentWidget * m_contentFrame = nullptr; // Content frame
SearchBarHLayout * m_searchLayout = nullptr; // Search bar layout SearchBarHLayout * m_searchLayout = nullptr; // Search bar layout
SeachBarWidget * m_searchWidget = nullptr; // Search bar SeachBarWidget * m_searchWidget = nullptr; // Search bar

View File

@ -186,3 +186,8 @@ void SearchItemModel::refresh()
this->beginResetModel(); this->beginResetModel();
this->endResetModel(); this->endResetModel();
} }
int SearchItemModel::length()
{
return m_item->m_pathlist.length();
}

View File

@ -60,6 +60,7 @@ public:
void clear(); void clear();
void setBestAppIcon(const QString &, const bool &); void setBestAppIcon(const QString &, const bool &);
void refresh(); void refresh();
int length();
private : private :
SearchItem * m_item = nullptr; SearchItem * m_item = nullptr;

View File

@ -32,15 +32,17 @@
using namespace Zeeker; using namespace Zeeker;
extern void qt_blurImage(QImage &blurImage, qreal radius, bool quality, int transposed); extern void qt_blurImage(QImage &blurImage, qreal radius, bool quality, int transposed);
SettingsWidget::SettingsWidget(QWidget *parent) : QWidget(parent) { SettingsWidget::SettingsWidget(QWidget *parent) : QWidget(parent) {
this->setWindowIcon(QIcon::fromTheme("kylin-search")); // this->setWindowIcon(QIcon::fromTheme("kylin-search"));
this->setWindowTitle(tr("ukui-search-settings")); this->setWindowTitle(tr("ukui-search-settings"));
// this->setWindowFlags(Qt::CustomizeWindowHint | Qt::FramelessWindowHint); // this->setWindowFlags(Qt::CustomizeWindowHint | Qt::FramelessWindowHint);
// this->setAttribute(Qt::WA_TranslucentBackground); // this->setAttribute(Qt::WA_TranslucentBackground);
#if (QT_VERSION >= QT_VERSION_CHECK(5, 12, 0))
m_hints.flags = MWM_HINTS_FUNCTIONS | MWM_HINTS_DECORATIONS; m_hints.flags = MWM_HINTS_FUNCTIONS | MWM_HINTS_DECORATIONS;
m_hints.functions = MWM_FUNC_ALL; m_hints.functions = MWM_FUNC_ALL;
m_hints.decorations = MWM_DECOR_BORDER; m_hints.decorations = MWM_DECOR_BORDER;
XAtomHelper::getInstance()->setWindowMotifHint(winId(), m_hints); XAtomHelper::getInstance()->setWindowMotifHint(winId(), m_hints);
#endif
initUi(); initUi();
refreshIndexState(); refreshIndexState();
@ -70,6 +72,10 @@ void SettingsWidget::initUi() {
m_titleFrame->setLayout(m_titleLyt); m_titleFrame->setLayout(m_titleLyt);
m_titleIcon = new QLabel(m_titleFrame); m_titleIcon = new QLabel(m_titleFrame);
m_titleIcon->setPixmap(QIcon::fromTheme("kylin-search").pixmap(QSize(24, 24))); m_titleIcon->setPixmap(QIcon::fromTheme("kylin-search").pixmap(QSize(24, 24)));
//主题改变时,更新自定义标题栏的图标
connect(qApp, &QApplication::paletteChanged, this, [ = ]() {
m_titleIcon->setPixmap(QIcon::fromTheme("kylin-search").pixmap(QSize(24, 24)));
});
m_titleLabel = new QLabel(m_titleFrame); m_titleLabel = new QLabel(m_titleFrame);
m_titleLabel->setText(tr("Search")); m_titleLabel->setText(tr("Search"));
m_closeBtn = new QPushButton(m_titleFrame); m_closeBtn = new QPushButton(m_titleFrame);
@ -220,6 +226,11 @@ void SettingsWidget::initUi() {
// m_mainLyt->addWidget(m_bottomBtnFrame); // m_mainLyt->addWidget(m_bottomBtnFrame);
m_contentLyt->addStretch(); m_contentLyt->addStretch();
#if (QT_VERSION < QT_VERSION_CHECK(5, 12, 0))
this->m_titleFrame->hide();
setAttribute(Qt::WA_DeleteOnClose);
#endif
} }
/** /**
@ -370,7 +381,9 @@ void SettingsWidget::showWidget() {
flags &= ~Qt::WindowStaysOnTopHint; flags &= ~Qt::WindowStaysOnTopHint;
this->setWindowFlags(flags); this->setWindowFlags(flags);
m_timer->start(); m_timer->start();
#if (QT_VERSION >= QT_VERSION_CHECK(5, 12, 0))
XAtomHelper::getInstance()->setWindowMotifHint(winId(), m_hints); XAtomHelper::getInstance()->setWindowMotifHint(winId(), m_hints);
#endif
this->show(); this->show();
} }

View File

@ -33,7 +33,9 @@
#include <QScrollArea> #include <QScrollArea>
#include <QTimer> #include <QTimer>
#include <libsearch.h> #include <libsearch.h>
#if (QT_VERSION >= QT_VERSION_CHECK(5, 12, 0))
#include "xatom-helper.h" #include "xatom-helper.h"
#endif
namespace Zeeker { namespace Zeeker {
class SettingsWidget : public QWidget { class SettingsWidget : public QWidget {
@ -56,7 +58,9 @@ private:
void resize(); void resize();
void showWarningDialog(const int&); void showWarningDialog(const int&);
#if (QT_VERSION >= QT_VERSION_CHECK(5, 12, 0))
MotifWmHints m_hints; MotifWmHints m_hints;
#endif
//标题栏 //标题栏
QVBoxLayout * m_mainLyt = nullptr; QVBoxLayout * m_mainLyt = nullptr;