forked from openkylin/ukui-search
Add ukcc plugin.
This commit is contained in:
parent
25bae31cff
commit
66a8df1a51
|
@ -19,7 +19,8 @@ Build-Depends: debhelper (>=9.0.0),
|
||||||
libuchardet-dev,
|
libuchardet-dev,
|
||||||
libpoppler-qt5-dev,
|
libpoppler-qt5-dev,
|
||||||
libukui-log4qt-dev,
|
libukui-log4qt-dev,
|
||||||
libqt5xdg-dev
|
libqt5xdg-dev,
|
||||||
|
libukcc-dev
|
||||||
Standards-Version: 4.5.0
|
Standards-Version: 4.5.0
|
||||||
Homepage: https://www.ukui.org/
|
Homepage: https://www.ukui.org/
|
||||||
Vcs-Git: https://github.com/ukui/ukui-search.git
|
Vcs-Git: https://github.com/ukui/ukui-search.git
|
||||||
|
|
|
@ -3,3 +3,7 @@ etc/xdg/autostart/*.desktop
|
||||||
usr/share/applications/*.desktop
|
usr/share/applications/*.desktop
|
||||||
frontend/.qm/*.qm usr/share/ukui-search/translations
|
frontend/.qm/*.qm usr/share/ukui-search/translations
|
||||||
usr/share/glib-2.0/schemas/*.xml
|
usr/share/glib-2.0/schemas/*.xml
|
||||||
|
usr/lib/*/ukui-control-center/*
|
||||||
|
usr/share/ukui-search/search-ukcc-plugin/translations/*
|
||||||
|
usr/share/ukui-search/search-ukcc-plugin/image/*
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,18 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||||
|
<!-- Generator: Sketch 59 (86127) - https://sketch.com -->
|
||||||
|
<title>360</title>
|
||||||
|
<desc>Created with Sketch.</desc>
|
||||||
|
<g id="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||||
|
<g id="搜索设置-添加/删除2" transform="translate(-1476.000000, -630.000000)">
|
||||||
|
<g id="编组-11" transform="translate(1471.000000, 630.000000)">
|
||||||
|
<rect id="矩形备份-15" x="0" y="0" width="24" height="24"></rect>
|
||||||
|
<g id="360" transform="translate(7.000000, 3.000000)" fill-rule="nonzero">
|
||||||
|
<path d="M16.3973402,16.1013473 C16.3973402,15.1220886 17.1776523,14.3264408 18.1680485,14.3264408 C19.1584446,14.3264408 19.9087447,15.1220886 19.9087447,16.1013473 C19.9087447,17.0806061 19.1284326,17.9068557 18.1680485,17.9068557 C17.2076643,17.9068557 16.3973402,17.1112079 16.3973402,16.1013473 Z" id="路径" fill="#FF9932"></path>
|
||||||
|
<path d="M16.4273522,12.4597288 L13.8763318,11.4192664 C13.6662478,11.3274609 13.6662478,11.1744517 13.7562838,10.9602389 C13.9963798,10.3482021 14.1164278,9.64435991 14.1164278,8.97111953 C14.1164278,6.03334326 11.6854554,3.55459454 8.80430297,3.55459452 C5.92315053,3.5545945 3.49217813,6.06394509 3.49217811,8.97111953 C3.49217811,9.64435993 3.67225014,10.378804 3.91234618,10.9908407 C3.9723702,11.113248 3.9723702,11.2662572 3.91234618,11.3886646 C3.85232217,11.4804701 3.79229817,11.3886646 3.70226216,11.4192664 L1.09121773,12.2761178 C1.06120574,12.3067197 1.00118172,12.3067197 0.971169723,12.3067197 C0.791097696,12.3067197 0.671049665,12.2149141 0.61102567,12.0313031 C0.220869599,11.0214425 0.0107855548,10.011582 0.0107855548,8.97111953 C0.0107855548,4.04422391 3.9723702,0.0047815345 8.80430297,0.0047815345 C13.6362358,0.0047815345 17.5978204,4.01362206 17.5978204,8.94051768 C17.5978204,10.1033874 17.3877363,11.2050535 16.9975803,12.245516 C16.9675683,12.3373215 16.8775323,12.429127 16.7574842,12.4597288 C16.6974602,12.4903307 16.6674482,12.4903307 16.6074242,12.4903307 C16.5474002,12.4903307 16.4873762,12.4903307 16.4273522,12.4597288 Z" id="路径" fill="#0FB264"></path>
|
||||||
|
<path d="M0.971169723,13.0717656 C0.821109694,12.7657472 0.701061683,12.4597288 0.581013652,12.1537105 C0.520989636,12.0007013 0.520989636,11.8782939 0.520989636,11.8170903 C0.520989636,10.8378315 1.30130176,10.0421838 2.29169792,10.0421838 C3.01198603,10.0421838 3.64223814,10.5012113 3.9423582,11.1438499 C3.9723702,11.2050536 4.06240621,11.3886646 4.12243023,11.4804701 C5.02279038,13.2553766 6.82351066,14.3876445 8.77429098,14.3876445 C10.6950593,14.3876445 12.4657676,13.2859784 13.3961397,11.5722756 C13.4861757,11.3886646 13.7262718,10.9602389 13.7562838,10.9602389 C14.0564038,10.3482021 14.5966199,10.0727856 15.256884,10.0727856 C16.2472802,10.0727856 17.0275923,10.8684333 17.0275923,11.8476921 C17.0275923,11.9700995 17.0275923,12.1231086 16.9375563,12.3067197 L16.7574842,12.7657472 L16.7574842,12.796349 C16.7274722,12.8881545 16.6974602,12.9493582 16.6374362,13.0411637 C15.136836,16.0707455 12.1356355,17.9680593 8.77429098,17.9680593 C5.47297044,17.9068556 2.50178197,16.0707455 0.971169723,13.0717656 L0.971169723,13.0717656 Z" id="路径" fill="#FF9932"></path>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 3.4 KiB |
|
@ -0,0 +1 @@
|
||||||
|
<svg id="图层_1" data-name="图层 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><title>add</title><g opacity="0.85"><polygon points="16 7 9 7 9 0 7 0 7 7 0 7 0 9 7 9 7 16 9 16 9 9 16 9 16 7"/></g></svg>
|
After Width: | Height: | Size: 217 B |
File diff suppressed because one or more lines are too long
After Width: | Height: | Size: 7.3 KiB |
|
@ -0,0 +1,22 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||||
|
<!-- Generator: Sketch 59 (86127) - https://sketch.com -->
|
||||||
|
<title>sougou</title>
|
||||||
|
<desc>Created with Sketch.</desc>
|
||||||
|
<defs>
|
||||||
|
<linearGradient x1="24.2116501%" y1="13.4446809%" x2="84.5451665%" y2="97.3997161%" id="linearGradient-1">
|
||||||
|
<stop stop-color="#FD8449" offset="0%"></stop>
|
||||||
|
<stop stop-color="#FA4D23" offset="100%"></stop>
|
||||||
|
</linearGradient>
|
||||||
|
</defs>
|
||||||
|
<g id="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||||
|
<g id="搜索设置-添加/删除2" transform="translate(-1442.000000, -630.000000)">
|
||||||
|
<g id="编组-10" transform="translate(1442.000000, 630.000000)">
|
||||||
|
<rect id="矩形备份-12" x="0" y="0" width="24" height="24"></rect>
|
||||||
|
<g id="搜狗" transform="translate(2.000000, 2.000000)" fill="url(#linearGradient-1)" fill-rule="nonzero">
|
||||||
|
<path d="M17.811,16.201375 L18.535,16.706375 C17.4840306,17.9285167 16.1537307,18.8790739 14.657,19.477375 L14.657,19.477375 L14.206,18.723375 C15.5948993,18.1884192 16.8323353,17.3227289 17.811,16.201375 L17.811,16.201375 Z M9.999,0.004375 C15.52,0.004375 19.998,4.345375 20,9.702375 C19.9986243,11.9758025 19.1802151,14.1730148 17.694,15.893375 L17.694,15.893375 L16.97,15.388375 C18.3483127,13.814701 19.1087129,11.7943105 19.11,9.702375 C19.11,4.822375 15.031,0.867375 9.998,0.867375 C4.967,0.867375 0.888,4.822375 0.888,9.702375 C0.888,14.579375 4.967,18.534375 9.999,18.534375 C11.1498074,18.5349329 12.2908639,18.3234001 13.365,17.910375 L13.365,17.910375 L13.816,18.664375 C12.607,19.150375 11.309,19.399375 9.999,19.397387 C4.475,19.397387 0,15.056375 0,9.699375 C0,4.345375 4.475,0.004375 9.999,0.004375 Z M4.774,5.817375 C7.913,2.471375 15.885,5.403375 15.885,5.403375 L15.885,5.403375 L15.885,7.583375 C15.885,7.583375 14.095,6.692375 10.575,6.416375 C7.606,6.183375 8.645,7.350375 8.645,7.350375 C10.535,8.406375 12.213,8.803375 12.213,8.803375 C16.463,9.891375 16.213,11.475375 16.213,11.475375 C16.108,18.140375 4.368,13.990375 4.368,13.990375 L4.368,13.990375 L4.521,11.526375 C6.464,13.289375 10.031,13.264375 10.031,13.264375 C14.688,12.874375 10.945,11.214375 10.945,11.214375 C8.042,10.487375 5.872,9.267375 4.807,8.307375 C3.741,7.347375 4.774,5.817375 4.774,5.817375 Z" id="形状结合"></path>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 2.5 KiB |
|
@ -0,0 +1,35 @@
|
||||||
|
QT += widgets
|
||||||
|
|
||||||
|
TEMPLATE = lib
|
||||||
|
TARGET = $$qtLibraryTarget(search-ukcc-plugin)
|
||||||
|
target.path = $$[QT_INSTALL_LIBS]/ukui-control-center/
|
||||||
|
|
||||||
|
CONFIG += plugin link_pkgconfig c++11 lrelease
|
||||||
|
|
||||||
|
PKGCONFIG += gio-2.0 gio-unix-2.0 gsettings-qt
|
||||||
|
|
||||||
|
LIBS += -L$$[QT_INSTALL_LIBS] -lgsettings-qt
|
||||||
|
LIBS += -lukcc
|
||||||
|
|
||||||
|
DEFINES += QT_DEPRECATED_WARNINGS
|
||||||
|
|
||||||
|
SOURCES += search.cpp
|
||||||
|
|
||||||
|
HEADERS += search.h
|
||||||
|
|
||||||
|
TRANSLATIONS += translations/zh_CN.ts
|
||||||
|
|
||||||
|
images.files = image/*
|
||||||
|
images.path = /usr/share/ukui-search/search-ukcc-plugin/image/
|
||||||
|
|
||||||
|
qm_files.files = translations/* $$OUT_PWD/.qm/*.qm
|
||||||
|
qm_files.path = /usr/share/ukui-search/search-ukcc-plugin/translations
|
||||||
|
|
||||||
|
|
||||||
|
INSTALLS += target images qm_files
|
||||||
|
|
||||||
|
DISTFILES += \
|
||||||
|
./image/360.svg \
|
||||||
|
./image/baidu.scg \
|
||||||
|
./image/sougou.svg \
|
||||||
|
./image/add.svg
|
|
@ -0,0 +1,440 @@
|
||||||
|
#include "search.h"
|
||||||
|
#include <QTranslator>
|
||||||
|
#include <QApplication>
|
||||||
|
|
||||||
|
Search::Search()
|
||||||
|
{
|
||||||
|
QTranslator* translator = new QTranslator(this);
|
||||||
|
if(!translator->load("/usr/share/ukui-search/search-ukcc-plugin/translations/" + QLocale::system().name())) {
|
||||||
|
qWarning() << "/usr/share/ukui-search/search-ukcc-plugin/translations/" + QLocale::system().name() << "load failed";
|
||||||
|
}
|
||||||
|
QApplication::installTranslator(translator);
|
||||||
|
|
||||||
|
m_plugin_name = tr("Search");
|
||||||
|
m_plugin_type = SEARCH_F;
|
||||||
|
initUi();
|
||||||
|
setupConnection();
|
||||||
|
m_dirSettings = new QSettings(QDir::homePath() + CONFIG_FILE, QSettings::NativeFormat, this);
|
||||||
|
m_dirSettings->setIniCodec(QTextCodec::codecForName("UTF-8"));
|
||||||
|
initBlockDirsList();
|
||||||
|
}
|
||||||
|
|
||||||
|
Search::~Search()
|
||||||
|
{
|
||||||
|
delete m_pluginWidget;
|
||||||
|
if (m_gsettings) {
|
||||||
|
delete m_gsettings;
|
||||||
|
m_gsettings = nullptr;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
QString Search::plugini18nName()
|
||||||
|
{
|
||||||
|
return m_plugin_name;
|
||||||
|
}
|
||||||
|
|
||||||
|
int Search::pluginTypes()
|
||||||
|
{
|
||||||
|
return m_plugin_type;
|
||||||
|
}
|
||||||
|
|
||||||
|
QWidget *Search::pluginUi()
|
||||||
|
{
|
||||||
|
m_pluginWidget->setAttribute(Qt::WA_DeleteOnClose);
|
||||||
|
|
||||||
|
const QByteArray id(UKUI_SEARCH_SCHEMAS);
|
||||||
|
if (QGSettings::isSchemaInstalled(id)) {
|
||||||
|
m_gsettings = new QGSettings(id, QByteArray(), this);
|
||||||
|
//按钮状态初始化
|
||||||
|
if (m_gsettings->keys().contains(SEARCH_METHOD_KEY)) {
|
||||||
|
//当前是否使用索引搜索/暴力搜索
|
||||||
|
bool is_index_search_on = m_gsettings->get(SEARCH_METHOD_KEY).toBool();
|
||||||
|
m_searchMethodBtn->setChecked(is_index_search_on);
|
||||||
|
} else {
|
||||||
|
m_searchMethodBtn->setEnabled(false);
|
||||||
|
}
|
||||||
|
if (m_gsettings->keys().contains(WEB_ENGINE_KEY)) {
|
||||||
|
//当前网页搜索的搜索引擎
|
||||||
|
QString engine = m_gsettings->get(WEB_ENGINE_KEY).toString();
|
||||||
|
m_webEngineFrame->mCombox->setCurrentIndex(m_webEngineFrame->mCombox->findData(engine));
|
||||||
|
} else {
|
||||||
|
m_webEngineFrame->mCombox->setEnabled(false);
|
||||||
|
}
|
||||||
|
//监听gsettings值改变,更新控制面板UI
|
||||||
|
connect(m_gsettings, &QGSettings::changed, this, [ = ](const QString &key) {
|
||||||
|
if (key == SEARCH_METHOD_KEY) {
|
||||||
|
bool is_index_search_on = m_gsettings->get(SEARCH_METHOD_KEY).toBool();
|
||||||
|
m_searchMethodBtn->blockSignals(true);
|
||||||
|
m_searchMethodBtn->setChecked(is_index_search_on);
|
||||||
|
m_searchMethodBtn->blockSignals(false);
|
||||||
|
} else if (key == WEB_ENGINE_KEY) {
|
||||||
|
QString engine = m_gsettings->get(WEB_ENGINE_KEY).toString();
|
||||||
|
m_webEngineFrame->mCombox->blockSignals(true);
|
||||||
|
m_webEngineFrame->mCombox->setCurrentIndex(m_webEngineFrame->mCombox->findData(engine));
|
||||||
|
m_webEngineFrame->mCombox->blockSignals(false);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
connect(m_searchMethodBtn, &SwitchButton::checkedChanged, this, [ = ](bool checked) {
|
||||||
|
if (m_gsettings && m_gsettings->keys().contains(SEARCH_METHOD_KEY)) {
|
||||||
|
m_gsettings->set(SEARCH_METHOD_KEY, checked);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
connect(m_webEngineFrame->mCombox, QOverload<int>::of(&QComboBox::currentIndexChanged), this, [=](int index) {
|
||||||
|
if (m_gsettings && m_gsettings->keys().contains(WEB_ENGINE_KEY)) {
|
||||||
|
m_gsettings->set(WEB_ENGINE_KEY, m_webEngineFrame->mCombox->currentData().toString());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
qCritical() << UKUI_SEARCH_SCHEMAS << " not installed!\n";
|
||||||
|
m_searchMethodBtn->setEnabled(false);
|
||||||
|
m_webEngineFrame->mCombox->setEnabled(false);
|
||||||
|
}
|
||||||
|
return m_pluginWidget;
|
||||||
|
}
|
||||||
|
|
||||||
|
const QString Search::name() const
|
||||||
|
{
|
||||||
|
return QStringLiteral("Search");
|
||||||
|
}
|
||||||
|
|
||||||
|
QString Search::translationPath() const
|
||||||
|
{
|
||||||
|
return QStringLiteral("/usr/share/ukui-search/search-ukcc-plugin/translations/%1.ts");
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Search::isShowOnHomePage() const
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
QIcon Search::icon() const
|
||||||
|
{
|
||||||
|
return QIcon();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Search::isEnable() const
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Search::initUi 初始化此插件UI
|
||||||
|
*/
|
||||||
|
void Search::initUi()
|
||||||
|
{
|
||||||
|
m_pluginWidget = new QWidget;
|
||||||
|
m_mainLyt = new QVBoxLayout(m_pluginWidget);
|
||||||
|
m_pluginWidget->setLayout(m_mainLyt);
|
||||||
|
|
||||||
|
m_titleLabel = new TitleLabel(m_setFrame);
|
||||||
|
m_titleLabel->setText(tr("Search"));
|
||||||
|
m_mainLyt->addWidget(m_titleLabel);
|
||||||
|
|
||||||
|
//设置搜索模式部分的ui
|
||||||
|
m_setFrame = new QFrame(m_pluginWidget);
|
||||||
|
m_setFrame->setFrameShape(QFrame::Shape::Box);
|
||||||
|
m_setFrameLyt = new QVBoxLayout(m_setFrame);
|
||||||
|
m_setFrameLyt->setContentsMargins(0, 0, 0, 0);
|
||||||
|
m_setFrameLyt->setSpacing(0);
|
||||||
|
|
||||||
|
m_searchMethodFrame = new QFrame(m_setFrame);
|
||||||
|
m_searchMethodFrame->setMinimumWidth(550);
|
||||||
|
m_searchMethodLyt = new QHBoxLayout(m_searchMethodFrame);
|
||||||
|
m_searchMethodLyt->setContentsMargins(16, 18, 16, 21);
|
||||||
|
m_searchMethodFrame->setLayout(m_searchMethodLyt);
|
||||||
|
|
||||||
|
m_descFrame = new QFrame(m_searchMethodFrame);
|
||||||
|
m_descFrameLyt = new QVBoxLayout(m_descFrame);
|
||||||
|
m_descFrameLyt->setContentsMargins(0, 0, 0, 0);
|
||||||
|
m_descFrame->setLayout(m_descFrameLyt);
|
||||||
|
m_descLabel1 = new QLabel(m_descFrame);
|
||||||
|
m_descLabel2 = new QLabel(m_descFrame);
|
||||||
|
|
||||||
|
//~ contents_path /Search/Create index
|
||||||
|
m_descLabel1->setText(tr("Create index"));
|
||||||
|
m_descLabel2->setText(tr("Creating index can help you getting results quickly."));
|
||||||
|
m_descLabel2->setEnabled(false);
|
||||||
|
m_descFrameLyt->addWidget(m_descLabel1);
|
||||||
|
m_descFrameLyt->addWidget(m_descLabel2);
|
||||||
|
m_searchMethodBtn = new SwitchButton(m_searchMethodFrame);
|
||||||
|
m_searchMethodLyt->addWidget(m_descFrame);
|
||||||
|
m_searchMethodLyt->addStretch();
|
||||||
|
m_searchMethodLyt->addWidget(m_searchMethodBtn);
|
||||||
|
m_setFrameLyt->addWidget(m_searchMethodFrame);
|
||||||
|
|
||||||
|
QFrame *line = new QFrame(m_setFrame);
|
||||||
|
line->setFixedHeight(1);
|
||||||
|
line->setLineWidth(0);
|
||||||
|
line->setFrameShape(QFrame::HLine);
|
||||||
|
line->setFrameShadow(QFrame::Sunken);
|
||||||
|
m_setFrameLyt->addWidget(line);
|
||||||
|
|
||||||
|
//设置网页搜索引擎部分的ui
|
||||||
|
//~ contents_path /Search/Default web searching engine
|
||||||
|
m_webEngineFrame = new ComboxFrame(tr("Default web searching engine"), m_searchMethodFrame);
|
||||||
|
m_webEngineFrame->setContentsMargins(8, 0, 16, 0);
|
||||||
|
m_webEngineFrame->setFixedHeight(56);
|
||||||
|
m_webEngineFrame->setMinimumWidth(550);
|
||||||
|
m_webEngineFrame->mCombox->insertItem(0, QIcon("/usr/share/ukui-search/search-ukcc-plugin/image/baidu.svg"), tr("baidu"), "baidu");
|
||||||
|
m_webEngineFrame->mCombox->insertItem(1, QIcon("/usr/share/ukui-search/search-ukcc-plugin/image/sougou.svg"), tr("sougou"), "sougou");
|
||||||
|
m_webEngineFrame->mCombox->insertItem(2, QIcon("/usr/share/ukui-search/search-ukcc-plugin/image/360.svg"), tr("360"), "360");
|
||||||
|
m_setFrameLyt->addWidget(m_webEngineFrame);
|
||||||
|
m_mainLyt->addWidget(m_setFrame);
|
||||||
|
|
||||||
|
//设置黑名单文件夹部分的ui
|
||||||
|
m_blockDirTitleLabel = new TitleLabel(m_pluginWidget);
|
||||||
|
|
||||||
|
//~ contents_path /Search/Block Folders
|
||||||
|
m_blockDirTitleLabel->setText(tr("Block Folders"));
|
||||||
|
m_blockDirDescLabel = new QLabel(m_pluginWidget);
|
||||||
|
m_blockDirDescLabel->setWordWrap(true);
|
||||||
|
m_blockDirDescLabel->setText(tr("Following folders will not be searched. You can set it by adding and removing folders."));
|
||||||
|
|
||||||
|
m_blockDirsFrame = new QFrame(m_pluginWidget);
|
||||||
|
m_blockDirsFrame->setFrameShape(QFrame::Shape::Box);
|
||||||
|
m_blockDirsLyt = new QVBoxLayout(m_blockDirsFrame);
|
||||||
|
m_blockDirsLyt->setDirection(QBoxLayout::BottomToTop);
|
||||||
|
m_blockDirsFrame->setLayout(m_blockDirsLyt);
|
||||||
|
m_blockDirsLyt->setContentsMargins(0, 0, 0, 0);
|
||||||
|
m_blockDirsLyt->setSpacing(2);
|
||||||
|
|
||||||
|
|
||||||
|
QFrame * m_addBlockDirFrame = new QFrame(m_blockDirsFrame);
|
||||||
|
m_addBlockDirFrame->setFrameShape(QFrame::Shape::NoFrame);
|
||||||
|
m_addBlockDirFrame->setFixedHeight(60);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
m_addBlockDirWidget = new HoverWidget("", m_addBlockDirFrame);
|
||||||
|
m_addBlockDirWidget->setFixedHeight(60);
|
||||||
|
|
||||||
|
|
||||||
|
// m_addBlockDirWidget->setObjectName("addBlockDirWidget");
|
||||||
|
// QPalette pal;
|
||||||
|
// QBrush brush = pal.highlight(); //获取window的色值
|
||||||
|
// QColor highLightColor = brush.color();
|
||||||
|
// QString stringColor = QString("rgba(%1,%2,%3)") //叠加20%白色
|
||||||
|
// .arg(highLightColor.red()*0.8 + 255*0.2)
|
||||||
|
// .arg(highLightColor.green()*0.8 + 255*0.2)
|
||||||
|
// .arg(highLightColor.blue()*0.8 + 255*0.2);
|
||||||
|
|
||||||
|
// m_addBlockDirWidget->setStyleSheet(QString("HoverWidget#addBlockDirWidget{background: palette(button);\
|
||||||
|
// border-radius: 4px;}\
|
||||||
|
// HoverWidget:hover:!pressed#addBlockDirWidget{background: %1; \
|
||||||
|
// border-radius: 4px;}").arg(stringColor));
|
||||||
|
|
||||||
|
|
||||||
|
m_addBlockDirIcon = new QLabel(m_addBlockDirWidget);
|
||||||
|
m_addBlockDirIcon->setPixmap(QIcon("/usr/share/ukui-search/search-ukcc-plugin/image/add.svg").pixmap(12, 12));
|
||||||
|
m_addBlockDirIcon->setProperty("useIconHighlightEffect", true);
|
||||||
|
m_addBlockDirIcon->setProperty("iconHighlightEffectMode", 1);
|
||||||
|
|
||||||
|
m_addBlockDirLabel = new QLabel(m_addBlockDirWidget);
|
||||||
|
m_addBlockDirLabel->setText(tr("Choose folder"));
|
||||||
|
|
||||||
|
m_addBlockDirLyt = new QHBoxLayout(m_addBlockDirWidget);
|
||||||
|
m_addBlockDirWidget->setLayout(m_addBlockDirLyt);
|
||||||
|
|
||||||
|
m_blockDirsLyt->addWidget(m_addBlockDirWidget);
|
||||||
|
|
||||||
|
m_addBlockDirLyt->addStretch();
|
||||||
|
m_addBlockDirLyt->addWidget(m_addBlockDirIcon);
|
||||||
|
m_addBlockDirLyt->addWidget(m_addBlockDirLabel);
|
||||||
|
m_addBlockDirLyt->addStretch();
|
||||||
|
m_mainLyt->addSpacing(32);
|
||||||
|
m_mainLyt->addWidget(m_blockDirTitleLabel);
|
||||||
|
m_mainLyt->addWidget(m_blockDirDescLabel);
|
||||||
|
m_mainLyt->addWidget(m_blockDirsFrame);
|
||||||
|
m_mainLyt->addStretch();
|
||||||
|
m_mainLyt->setContentsMargins(0, 0, 40, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Search::getBlockDirs 从配置文件获取黑名单并将黑名单列表传入
|
||||||
|
*/
|
||||||
|
void Search::getBlockDirs()
|
||||||
|
{
|
||||||
|
m_blockDirs.clear();
|
||||||
|
if (m_dirSettings)
|
||||||
|
m_blockDirs = m_dirSettings->allKeys();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Search::setBlockDir 尝试写入新的黑名单文件夹
|
||||||
|
* @param dirPath 待添加到黑名单的文件夹路径
|
||||||
|
* @param is_add 是否是在添加黑名单
|
||||||
|
* @return 0成功 !0添加失败的错误代码
|
||||||
|
*/
|
||||||
|
int Search::setBlockDir(const QString &dirPath, const bool &is_add)
|
||||||
|
{
|
||||||
|
if (!is_add) {
|
||||||
|
if (dirPath.isEmpty()) {
|
||||||
|
return ReturnCode::PathEmpty;
|
||||||
|
}
|
||||||
|
//删除黑名单目录
|
||||||
|
m_dirSettings->remove(dirPath);
|
||||||
|
removeBlockDirFromList(dirPath);
|
||||||
|
return ReturnCode::Succeed;
|
||||||
|
}
|
||||||
|
if (!dirPath.startsWith(QDir::homePath())) {
|
||||||
|
return ReturnCode::NotInHomeDir;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString pathKey = dirPath.right(dirPath.length() - 1);
|
||||||
|
|
||||||
|
for (QString dir : m_blockDirs) {
|
||||||
|
if (pathKey == dir) {
|
||||||
|
return ReturnCode::HasBeenBlocked;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pathKey.startsWith(dir)) {
|
||||||
|
return ReturnCode::ParentExist;
|
||||||
|
}
|
||||||
|
|
||||||
|
//有它的子文件夹已被添加,删除这些子文件夹
|
||||||
|
if (dir.startsWith(pathKey)) {
|
||||||
|
m_dirSettings->remove(dir);
|
||||||
|
removeBlockDirFromList("/" + dir);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
m_dirSettings->setValue(pathKey, "0");
|
||||||
|
appendBlockDirToList(dirPath);
|
||||||
|
return ReturnCode::Succeed;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Search::initBlockDirsList 初始化黑名单列表
|
||||||
|
*/
|
||||||
|
void Search::initBlockDirsList()
|
||||||
|
{
|
||||||
|
getBlockDirs();
|
||||||
|
for (QString path: m_blockDirs) {
|
||||||
|
QString wholePath = QString("/%1").arg(path);
|
||||||
|
if (QFileInfo(wholePath).isDir() && path.startsWith("home")) {
|
||||||
|
appendBlockDirToList(wholePath);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Search::appendBlockDirToList(const QString &path)
|
||||||
|
{
|
||||||
|
HoverWidget * dirWidget = new HoverWidget(path, m_blockDirsFrame);
|
||||||
|
dirWidget->setObjectName(path);
|
||||||
|
dirWidget->setMinimumWidth(550);
|
||||||
|
dirWidget->setAttribute(Qt::WA_DeleteOnClose);
|
||||||
|
QHBoxLayout * dirWidgetLyt = new QHBoxLayout(dirWidget);
|
||||||
|
dirWidgetLyt->setSpacing(8);
|
||||||
|
dirWidgetLyt->setContentsMargins(0, 0, 0, 0);
|
||||||
|
dirWidget->setLayout(dirWidgetLyt);
|
||||||
|
QFrame * dirFrame = new QFrame(dirWidget);
|
||||||
|
dirFrame->setFrameShape(QFrame::Shape::Box);
|
||||||
|
dirFrame->setFixedHeight(50);
|
||||||
|
QHBoxLayout * dirFrameLayout = new QHBoxLayout(dirFrame);
|
||||||
|
dirFrameLayout->setSpacing(16);
|
||||||
|
dirFrameLayout->setContentsMargins(16, 0, 16, 0);
|
||||||
|
QLabel * iconLabel = new QLabel(dirFrame);
|
||||||
|
QLabel * pathLabel = new QLabel(dirFrame);
|
||||||
|
|
||||||
|
dirFrameLayout->addWidget(iconLabel);
|
||||||
|
iconLabel->setPixmap(QIcon::fromTheme("inode-directory").pixmap(QSize(24, 24)));
|
||||||
|
pathLabel->setText(path);
|
||||||
|
dirFrameLayout->addWidget(pathLabel);
|
||||||
|
dirFrameLayout->addStretch();
|
||||||
|
QPushButton * delBtn = new QPushButton(dirFrame);
|
||||||
|
delBtn->setIcon(QIcon::fromTheme("window-close-symbolic"));
|
||||||
|
delBtn->setFixedSize(30, 30);
|
||||||
|
delBtn->setToolTip(tr("delete"));
|
||||||
|
delBtn->setProperty("isWindowButton", 0x2);
|
||||||
|
delBtn->setProperty("useIconHighlightEffect", 0x8);
|
||||||
|
delBtn->setFlat(true);
|
||||||
|
|
||||||
|
|
||||||
|
delBtn->hide();
|
||||||
|
dirFrameLayout->addWidget(delBtn);
|
||||||
|
dirWidgetLyt->addWidget(dirFrame);
|
||||||
|
// dirWidgetLyt->addWidget(delBtn);
|
||||||
|
|
||||||
|
QFrame *line = new QFrame(m_blockDirsFrame);
|
||||||
|
line->setFixedHeight(1);
|
||||||
|
line->setLineWidth(0);
|
||||||
|
line->setFrameShape(QFrame::HLine);
|
||||||
|
line->setFrameShadow(QFrame::Sunken);
|
||||||
|
// m_setFrameLyt->addWidget(line);
|
||||||
|
|
||||||
|
m_blockDirsLyt->addWidget(line);
|
||||||
|
m_blockDirsLyt->addWidget(dirWidget);
|
||||||
|
connect(delBtn, &QPushButton::clicked, this, [ = ]() {
|
||||||
|
setBlockDir(path, false);
|
||||||
|
getBlockDirs();
|
||||||
|
m_blockDirsLyt->removeWidget(line);
|
||||||
|
line->deleteLater();
|
||||||
|
});
|
||||||
|
connect(dirWidget, &HoverWidget::enterWidget, this, [ = ]() {
|
||||||
|
delBtn->show();
|
||||||
|
});
|
||||||
|
connect(dirWidget, &HoverWidget::leaveWidget, this, [ = ]() {
|
||||||
|
delBtn->hide();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
void Search::removeBlockDirFromList(const QString &path)
|
||||||
|
{
|
||||||
|
HoverWidget * delDirWidget = m_blockDirsFrame->findChild<HoverWidget *>(path);
|
||||||
|
if (delDirWidget) {
|
||||||
|
qDebug() << "Delete folder succeed! path = " << path;
|
||||||
|
delDirWidget->close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Search::setupConnection()
|
||||||
|
{
|
||||||
|
connect(m_addBlockDirWidget, &HoverWidget::widgetClicked, this, &Search::onBtnAddFolderClicked);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Search::onBtnAddFolderClicked()
|
||||||
|
{
|
||||||
|
QFileDialog * fileDialog = new QFileDialog(m_pluginWidget);
|
||||||
|
// fileDialog->setFileMode(QFileDialog::Directory); //允许查看文件和文件夹,但只允许选择文件夹
|
||||||
|
fileDialog->setFileMode(QFileDialog::DirectoryOnly); //只允许查看文件夹
|
||||||
|
// fileDialog->setViewMode(QFileDialog::Detail);
|
||||||
|
fileDialog->setDirectory(QDir::homePath());
|
||||||
|
fileDialog->setNameFilter(tr("Directories"));
|
||||||
|
fileDialog->setWindowTitle(tr("select blocked folder"));
|
||||||
|
fileDialog->setLabelText(QFileDialog::Accept, tr("Select"));
|
||||||
|
fileDialog->setLabelText(QFileDialog::LookIn, tr("Position: "));
|
||||||
|
fileDialog->setLabelText(QFileDialog::FileName, tr("FileName: "));
|
||||||
|
fileDialog->setLabelText(QFileDialog::FileType, tr("FileType: "));
|
||||||
|
fileDialog->setLabelText(QFileDialog::Reject, tr("Cancel"));
|
||||||
|
if(fileDialog->exec() != QDialog::Accepted) {
|
||||||
|
fileDialog->deleteLater();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
QString selectedDir = 0;
|
||||||
|
selectedDir = fileDialog->selectedFiles().first();
|
||||||
|
qDebug() << "Selected a folder in onBtnAddClicked(): " << selectedDir;
|
||||||
|
int returnCode = setBlockDir(selectedDir, true);
|
||||||
|
switch (returnCode) {
|
||||||
|
case ReturnCode::Succeed :
|
||||||
|
qDebug() << "Add blocked folder succeed! path = " << selectedDir;
|
||||||
|
getBlockDirs();
|
||||||
|
break;
|
||||||
|
case ReturnCode::PathEmpty :
|
||||||
|
qWarning() << "Add blocked folder failed, choosen path is empty! path = " << selectedDir;
|
||||||
|
QMessageBox::warning(m_pluginWidget, tr("Warning"), tr("Add blocked folder failed, choosen path is empty!"));
|
||||||
|
break;
|
||||||
|
case ReturnCode::NotInHomeDir :
|
||||||
|
qWarning() << "Add blocked folder failed, it is not in home path! path = " << selectedDir;
|
||||||
|
QMessageBox::warning(m_pluginWidget, tr("Warning"), tr("Add blocked folder failed, it is not in home path!"));
|
||||||
|
break;
|
||||||
|
case ReturnCode::ParentExist :
|
||||||
|
qWarning() << "Add blocked folder failed, its parent dir is exist! path = " << selectedDir;
|
||||||
|
QMessageBox::warning(m_pluginWidget, tr("Warning"), tr("Add blocked folder failed, its parent dir is exist!"));
|
||||||
|
break;
|
||||||
|
case ReturnCode::HasBeenBlocked :
|
||||||
|
qWarning() << "Add blocked folder failed, it has been already blocked! path = " << selectedDir;
|
||||||
|
QMessageBox::warning(m_pluginWidget, tr("Warning"), tr("Add blocked folder failed, it has been already blocked!"));
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,110 @@
|
||||||
|
#ifndef SEARCH_H
|
||||||
|
#define SEARCH_H
|
||||||
|
|
||||||
|
#include <QObject>
|
||||||
|
#include <QGSettings>
|
||||||
|
#include <QDebug>
|
||||||
|
#include <QVBoxLayout>
|
||||||
|
#include <QLabel>
|
||||||
|
#include <QFrame>
|
||||||
|
#include <QSettings>
|
||||||
|
#include <QFileDialog>
|
||||||
|
#include <QTextCodec>
|
||||||
|
#include <QPushButton>
|
||||||
|
#include <QMessageBox>
|
||||||
|
|
||||||
|
#include <ukcc/interface/interface.h>
|
||||||
|
#include <ukcc/widgets/comboboxitem.h>
|
||||||
|
#include <ukcc/widgets/switchbutton.h>
|
||||||
|
#include <ukcc/widgets/hoverwidget.h>
|
||||||
|
#include <ukcc/widgets/switchbutton.h>
|
||||||
|
#include <ukcc/widgets/comboxframe.h>
|
||||||
|
#include <ukcc/widgets/titlelabel.h>
|
||||||
|
|
||||||
|
#define UKUI_SEARCH_SCHEMAS "org.ukui.search.settings"
|
||||||
|
#define SEARCH_METHOD_KEY "indexSearch"
|
||||||
|
#define WEB_ENGINE_KEY "webEngine"
|
||||||
|
//TODO
|
||||||
|
#define CONFIG_FILE "/.config/org.ukui/ukui-search/ukui-search-block-dirs.conf"
|
||||||
|
|
||||||
|
enum ReturnCode {
|
||||||
|
Succeed,
|
||||||
|
PathEmpty,
|
||||||
|
NotInHomeDir,
|
||||||
|
ParentExist,
|
||||||
|
HasBeenBlocked
|
||||||
|
};
|
||||||
|
|
||||||
|
class Search : public QObject, CommonInterface
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
Q_PLUGIN_METADATA(IID "org.ukcc.CommonInterface")
|
||||||
|
Q_INTERFACES(CommonInterface)
|
||||||
|
|
||||||
|
public:
|
||||||
|
explicit Search();
|
||||||
|
~Search();
|
||||||
|
|
||||||
|
QString plugini18nName() Q_DECL_OVERRIDE;
|
||||||
|
int pluginTypes() Q_DECL_OVERRIDE;
|
||||||
|
QWidget * pluginUi() Q_DECL_OVERRIDE;
|
||||||
|
const QString name() const Q_DECL_OVERRIDE;
|
||||||
|
QString translationPath() const;
|
||||||
|
bool isShowOnHomePage() const Q_DECL_OVERRIDE;
|
||||||
|
QIcon icon() const Q_DECL_OVERRIDE;
|
||||||
|
bool isEnable() const Q_DECL_OVERRIDE;
|
||||||
|
|
||||||
|
private:
|
||||||
|
QWidget * m_pluginWidget = nullptr;
|
||||||
|
QString m_plugin_name = "";
|
||||||
|
int m_plugin_type = 0;
|
||||||
|
|
||||||
|
QGSettings * m_gsettings = nullptr;
|
||||||
|
|
||||||
|
void initUi();
|
||||||
|
QVBoxLayout * m_mainLyt = nullptr;
|
||||||
|
TitleLabel * m_titleLabel = nullptr;
|
||||||
|
|
||||||
|
QFrame *m_setFrame = nullptr;
|
||||||
|
QVBoxLayout *m_setFrameLyt = nullptr;
|
||||||
|
//设置搜索模式
|
||||||
|
QFrame *m_descFrame = nullptr;
|
||||||
|
QVBoxLayout *m_descFrameLyt = nullptr;
|
||||||
|
QLabel *m_descLabel1 = nullptr;
|
||||||
|
QLabel *m_descLabel2 = nullptr;
|
||||||
|
QFrame *m_searchMethodFrame = nullptr;
|
||||||
|
QHBoxLayout *m_searchMethodLyt = nullptr;
|
||||||
|
// QLabel *m_searchMethodLabel = nullptr;
|
||||||
|
SwitchButton * m_searchMethodBtn = nullptr;
|
||||||
|
//设置搜索引擎
|
||||||
|
TitleLabel * m_webEngineLabel = nullptr;
|
||||||
|
ComboxFrame * m_webEngineFrame = nullptr;
|
||||||
|
QVBoxLayout * m_webEngineLyt = nullptr;
|
||||||
|
|
||||||
|
//设置黑名单
|
||||||
|
TitleLabel * m_blockDirTitleLabel = nullptr;
|
||||||
|
QLabel * m_blockDirDescLabel = nullptr;
|
||||||
|
QFrame * m_blockDirsFrame = nullptr;
|
||||||
|
QVBoxLayout * m_blockDirsLyt = nullptr;
|
||||||
|
HoverWidget * m_addBlockDirWidget = nullptr;
|
||||||
|
QLabel * m_addBlockDirIcon = nullptr;
|
||||||
|
QLabel * m_addBlockDirLabel = nullptr;
|
||||||
|
QHBoxLayout * m_addBlockDirLyt = nullptr;
|
||||||
|
|
||||||
|
QStringList m_blockDirs;
|
||||||
|
QSettings * m_dirSettings = nullptr;
|
||||||
|
void getBlockDirs();
|
||||||
|
int setBlockDir(const QString &dirPath, const bool &is_add = true);
|
||||||
|
void appendBlockDirToList(const QString &path);
|
||||||
|
void removeBlockDirFromList(const QString &path);
|
||||||
|
void initBlockDirsList();
|
||||||
|
// void refreshBlockDirsList();
|
||||||
|
|
||||||
|
|
||||||
|
void setupConnection();
|
||||||
|
|
||||||
|
private slots:
|
||||||
|
void onBtnAddFolderClicked();
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // SEARCH_H
|
|
@ -0,0 +1,19 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<ui version="4.0">
|
||||||
|
<class>Search</class>
|
||||||
|
<widget class="QWidget" name="Search">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>784</width>
|
||||||
|
<height>630</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="windowTitle">
|
||||||
|
<string>Form</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<resources/>
|
||||||
|
<connections/>
|
||||||
|
</ui>
|
|
@ -0,0 +1,129 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!DOCTYPE TS>
|
||||||
|
<TS version="2.1" language="zh_CN">
|
||||||
|
<context>
|
||||||
|
<name>Search</name>
|
||||||
|
<message>
|
||||||
|
<location filename="../search.cpp" line="13"/>
|
||||||
|
<location filename="../search.cpp" line="125"/>
|
||||||
|
<source>Search</source>
|
||||||
|
<translation>搜索</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../search.cpp" line="149"/>
|
||||||
|
<source>Create index</source>
|
||||||
|
<translation>创建索引</translation>
|
||||||
|
<extra-contents_path>/Search/Create index</extra-contents_path>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../search.cpp" line="150"/>
|
||||||
|
<source>Creating index can help you getting results quickly.</source>
|
||||||
|
<translation>开启之后可以快速获取搜索结果</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../search.cpp" line="169"/>
|
||||||
|
<source>Default web searching engine</source>
|
||||||
|
<translation>默认互联网搜索引擎</translation>
|
||||||
|
<extra-contents_path>/Search/Default web searching engine</extra-contents_path>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../search.cpp" line="173"/>
|
||||||
|
<source>baidu</source>
|
||||||
|
<translation>百度</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../search.cpp" line="174"/>
|
||||||
|
<source>sougou</source>
|
||||||
|
<translation>搜狗</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../search.cpp" line="175"/>
|
||||||
|
<source>360</source>
|
||||||
|
<translation>360</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../search.cpp" line="183"/>
|
||||||
|
<source>Block Folders</source>
|
||||||
|
<translation>排除的文件夹</translation>
|
||||||
|
<extra-contents_path>/Search/Block Folders</extra-contents_path>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../search.cpp" line="186"/>
|
||||||
|
<source>Following folders will not be searched. You can set it by adding and removing folders.</source>
|
||||||
|
<translation>搜索将不查看以下文件夹,通过添加和删除可以设置排除的文件夹位置</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../search.cpp" line="228"/>
|
||||||
|
<source>Choose folder</source>
|
||||||
|
<translation>添加</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../search.cpp" line="341"/>
|
||||||
|
<source>delete</source>
|
||||||
|
<translation>删除</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../search.cpp" line="396"/>
|
||||||
|
<source>Directories</source>
|
||||||
|
<translation>文件夹</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../search.cpp" line="397"/>
|
||||||
|
<source>select blocked folder</source>
|
||||||
|
<translation>选择排除的文件夹</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../search.cpp" line="398"/>
|
||||||
|
<source>Select</source>
|
||||||
|
<translation>选择</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../search.cpp" line="399"/>
|
||||||
|
<source>Position: </source>
|
||||||
|
<translation>位置</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../search.cpp" line="400"/>
|
||||||
|
<source>FileName: </source>
|
||||||
|
<translation>文件名</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../search.cpp" line="401"/>
|
||||||
|
<source>FileType: </source>
|
||||||
|
<translation>类型</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../search.cpp" line="402"/>
|
||||||
|
<source>Cancel</source>
|
||||||
|
<translation>取消</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../search.cpp" line="418"/>
|
||||||
|
<location filename="../search.cpp" line="422"/>
|
||||||
|
<location filename="../search.cpp" line="426"/>
|
||||||
|
<location filename="../search.cpp" line="430"/>
|
||||||
|
<source>Warning</source>
|
||||||
|
<translation>警告</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../search.cpp" line="418"/>
|
||||||
|
<source>Add blocked folder failed, choosen path is empty!</source>
|
||||||
|
<translation>添加失败,选择的路径为空!</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../search.cpp" line="422"/>
|
||||||
|
<source>Add blocked folder failed, it is not in home path!</source>
|
||||||
|
<translation>添加失败,添加的路径不在家目录下!</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../search.cpp" line="426"/>
|
||||||
|
<source>Add blocked folder failed, its parent dir is exist!</source>
|
||||||
|
<translation>添加失败,父目录已被添加!</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../search.cpp" line="430"/>
|
||||||
|
<source>Add blocked folder failed, it has been already blocked!</source>
|
||||||
|
<translation>添加失败,这个文件夹已经被添加过了!</translation>
|
||||||
|
</message>
|
||||||
|
</context>
|
||||||
|
</TS>
|
|
@ -1,9 +1,9 @@
|
||||||
TEMPLATE = subdirs
|
TEMPLATE = subdirs
|
||||||
SUBDIRS += $$PWD/libchinese-segmentation \
|
SUBDIRS += $$PWD/libchinese-segmentation \
|
||||||
$$PWD/libsearch \
|
$$PWD/libsearch \
|
||||||
# $$PWD/src \
|
|
||||||
$$PWD/frontend \
|
$$PWD/frontend \
|
||||||
$$PWD/ukuisearch-systemdbus
|
$$PWD/ukuisearch-systemdbus \
|
||||||
|
$$PWD/search-ukcc-plugin
|
||||||
# The following define makes your compiler emit warnings if you use
|
# The following define makes your compiler emit warnings if you use
|
||||||
# any Qt feature that has been marked deprecated (the exact warnings
|
# any Qt feature that has been marked deprecated (the exact warnings
|
||||||
# depend on your compiler). Please consult the documentation of the
|
# depend on your compiler). Please consult the documentation of the
|
||||||
|
|
Loading…
Reference in New Issue