forked from openkylin/ukui-search
Add file search internal plugins.
This commit is contained in:
parent
8e440ccb02
commit
c643518001
|
@ -130,10 +130,10 @@ void HomePage::createSection(const QString §ion_name, const HomePageItemShap
|
|||
this->appendSection(section);
|
||||
connect(section, &HomePageSection::requestAction, this, [ = ](const QString &key, const QString &action, const QString &pluginId) {
|
||||
SearchPluginIface *plugin = SearchPluginManager::getInstance()->getPlugin(pluginId);
|
||||
if (plugin) {
|
||||
plugin->openAction(action, key);
|
||||
} else {
|
||||
qWarning()<<"Get plugin failed!";
|
||||
}
|
||||
// if (plugin) {
|
||||
// plugin->openAction(action, key);
|
||||
// } else {
|
||||
// qWarning()<<"Get plugin failed!";
|
||||
// }
|
||||
});
|
||||
}
|
||||
|
|
|
@ -162,10 +162,10 @@ void DetailWidget::setWidgetInfo(const QString &plugin_name, const SearchPluginI
|
|||
m_line_2->show();
|
||||
}
|
||||
clearLayout(m_actionFrameLyt);
|
||||
Q_FOREACH (auto action, info.actionList) {
|
||||
ActionLabel * actionLabel = new ActionLabel(action, info.key, plugin_name, m_actionFrame);
|
||||
m_actionFrameLyt->addWidget(actionLabel);
|
||||
}
|
||||
// Q_FOREACH (auto action, info.actionList) {
|
||||
// ActionLabel * actionLabel = new ActionLabel(action, info.key, plugin_name, m_actionFrame);
|
||||
// m_actionFrameLyt->addWidget(actionLabel);
|
||||
// }
|
||||
m_actionFrame->show();
|
||||
}
|
||||
|
||||
|
@ -288,9 +288,9 @@ bool ActionLabel::eventFilter(QObject *watched, QEvent *event)
|
|||
return true;
|
||||
} else if(event->type() == QEvent::MouseButtonRelease) {
|
||||
SearchPluginIface *plugin = SearchPluginManager::getInstance()->getPlugin(m_plugin);
|
||||
if (plugin)
|
||||
plugin->openAction(m_action, m_key);
|
||||
else
|
||||
// if (plugin)
|
||||
// plugin->openAction(m_action, m_key);
|
||||
// else
|
||||
qWarning()<<"Get plugin failed!";
|
||||
this->setForegroundRole(QPalette::Light);
|
||||
return true;
|
||||
|
|
|
@ -20,13 +20,14 @@ DEFINES += QT_DEPRECATED_WARNINGS
|
|||
# In order to do so, uncomment the following line.
|
||||
# You can also select to disable deprecated APIs only up to a certain version of Qt.
|
||||
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
|
||||
|
||||
include(../libsearch/libukui-search-headers.pri)
|
||||
include(control/control.pri)
|
||||
include(model/model.pri)
|
||||
include(xatom/xatom.pri)
|
||||
include(singleapplication/qt-single-application.pri)
|
||||
include(view/view.pri)
|
||||
|
||||
|
||||
SOURCES += \
|
||||
main.cpp \
|
||||
mainwindow.cpp
|
||||
|
|
|
@ -253,6 +253,14 @@ int main(int argc, char *argv[]) {
|
|||
qDebug() << "Load translations file" << QLocale() << "failed!";
|
||||
}
|
||||
|
||||
QTranslator lib_translator;
|
||||
try {
|
||||
if(! lib_translator.load("/usr/share/ukui-search/translations/libukui-search_" + QLocale::system().name())) throw - 1;
|
||||
app.installTranslator(&lib_translator);
|
||||
} catch(...) {
|
||||
qDebug() << "Load translations file" << QLocale() << "failed!";
|
||||
}
|
||||
|
||||
//set main window to the center of screen
|
||||
MainWindow *w = new MainWindow;
|
||||
qApp->setWindowIcon(QIcon::fromTheme("kylin-search"));
|
||||
|
|
|
@ -41,57 +41,57 @@ void SearchResultManager::startSearch(const QString &keyword)
|
|||
SearchPluginIface *plugin = SearchPluginManager::getInstance()->getPlugin(m_plugin_id);
|
||||
// plugin->KeywordSearch(keyword, m_result_queue);
|
||||
/*********************测试用数据*********************/
|
||||
SearchPluginIface::ResultInfo test_info;
|
||||
if (m_plugin_id == "File") {
|
||||
test_info.icon = QIcon::fromTheme("ukui-control-center");
|
||||
test_info.name = "搜索";
|
||||
QVector<SearchPluginIface::DescriptionInfo> desc;
|
||||
SearchPluginIface::DescriptionInfo desc_1;
|
||||
desc_1.key = "描述";
|
||||
desc_1.value = "控制面板搜索插件";
|
||||
desc.append(desc_1);
|
||||
QStringList actions;
|
||||
actions.append("打开");
|
||||
test_info.description = desc;
|
||||
test_info.actionList = actions;
|
||||
m_result_queue->append(test_info);
|
||||
} else {
|
||||
test_info.icon = QIcon::fromTheme("unknown");
|
||||
test_info.name = "文件12345abcde.txt";
|
||||
QVector<SearchPluginIface::DescriptionInfo> desc;
|
||||
SearchPluginIface::DescriptionInfo desc_1;
|
||||
SearchPluginIface::DescriptionInfo desc_2;
|
||||
desc_1.key = "描述";
|
||||
desc_1.value = "一个文件";
|
||||
desc_2.key = "路径";
|
||||
desc_2.value = "一个路径/a/b/c/d/e/fffffff/文件12345abcde.txt";
|
||||
desc.append(desc_1);
|
||||
desc.append(desc_2);
|
||||
QStringList actions;
|
||||
actions.append("打开");
|
||||
actions.append("复制路径");
|
||||
test_info.description = desc;
|
||||
test_info.actionList = actions;
|
||||
SearchPluginIface::ResultInfo test_info_1 = test_info;
|
||||
test_info_1.name = "文件1";
|
||||
SearchPluginIface::ResultInfo test_info_2 = test_info;
|
||||
test_info_2.name = "文件2";
|
||||
SearchPluginIface::ResultInfo test_info_3 = test_info;
|
||||
test_info_3.name = "文件3";
|
||||
SearchPluginIface::ResultInfo test_info_4 = test_info;
|
||||
test_info_4.name = "文件4";
|
||||
SearchPluginIface::ResultInfo test_info_5 = test_info;
|
||||
test_info_5.name = "文件5";
|
||||
SearchPluginIface::ResultInfo test_info_6 = test_info;
|
||||
test_info_6.name = "文件6";
|
||||
m_result_queue->append(test_info);
|
||||
m_result_queue->append(test_info_1);
|
||||
m_result_queue->append(test_info_2);
|
||||
m_result_queue->append(test_info_3);
|
||||
m_result_queue->append(test_info_4);
|
||||
m_result_queue->append(test_info_5);
|
||||
m_result_queue->append(test_info_6);
|
||||
}
|
||||
// SearchPluginIface::ResultInfo test_info;
|
||||
// if (m_plugin_id == "File") {
|
||||
// test_info.icon = QIcon::fromTheme("ukui-control-center");
|
||||
// test_info.name = "搜索";
|
||||
// QVector<SearchPluginIface::DescriptionInfo> desc;
|
||||
// SearchPluginIface::DescriptionInfo desc_1;
|
||||
// desc_1.key = "描述";
|
||||
// desc_1.value = "控制面板搜索插件";
|
||||
// desc.append(desc_1);
|
||||
// QStringList actions;
|
||||
// actions.append("打开");
|
||||
// test_info.description = desc;
|
||||
// test_info.actionList = actions;
|
||||
// m_result_queue->append(test_info);
|
||||
// } else {
|
||||
// test_info.icon = QIcon::fromTheme("unknown");
|
||||
// test_info.name = "文件12345abcde.txt";
|
||||
// QVector<SearchPluginIface::DescriptionInfo> desc;
|
||||
// SearchPluginIface::DescriptionInfo desc_1;
|
||||
// SearchPluginIface::DescriptionInfo desc_2;
|
||||
// desc_1.key = "描述";
|
||||
// desc_1.value = "一个文件";
|
||||
// desc_2.key = "路径";
|
||||
// desc_2.value = "一个路径/a/b/c/d/e/fffffff/文件12345abcde.txt";
|
||||
// desc.append(desc_1);
|
||||
// desc.append(desc_2);
|
||||
// QStringList actions;
|
||||
// actions.append("打开");
|
||||
// actions.append("复制路径");
|
||||
// test_info.description = desc;
|
||||
// test_info.actionList = actions;
|
||||
// SearchPluginIface::ResultInfo test_info_1 = test_info;
|
||||
// test_info_1.name = "文件1";
|
||||
// SearchPluginIface::ResultInfo test_info_2 = test_info;
|
||||
// test_info_2.name = "文件2";
|
||||
// SearchPluginIface::ResultInfo test_info_3 = test_info;
|
||||
// test_info_3.name = "文件3";
|
||||
// SearchPluginIface::ResultInfo test_info_4 = test_info;
|
||||
// test_info_4.name = "文件4";
|
||||
// SearchPluginIface::ResultInfo test_info_5 = test_info;
|
||||
// test_info_5.name = "文件5";
|
||||
// SearchPluginIface::ResultInfo test_info_6 = test_info;
|
||||
// test_info_6.name = "文件6";
|
||||
// m_result_queue->append(test_info);
|
||||
// m_result_queue->append(test_info_1);
|
||||
// m_result_queue->append(test_info_2);
|
||||
// m_result_queue->append(test_info_3);
|
||||
// m_result_queue->append(test_info_4);
|
||||
// m_result_queue->append(test_info_5);
|
||||
// m_result_queue->append(test_info_6);
|
||||
// }
|
||||
/********************测试用数据********************/
|
||||
}
|
||||
|
||||
|
|
|
@ -126,14 +126,14 @@ const bool &SearchResultModel::isExpanded()
|
|||
QStringList SearchResultModel::getActions(const QModelIndex &index)
|
||||
{
|
||||
if (m_item->m_result_info_list.length() > index.row() && index.row() >= 0)
|
||||
return m_item->m_result_info_list.at(index.row()).actionList;
|
||||
// return m_item->m_result_info_list.at(index.row()).actionList;
|
||||
return QStringList();
|
||||
}
|
||||
|
||||
QString SearchResultModel::getKey(const QModelIndex &index)
|
||||
{
|
||||
if (m_item->m_result_info_list.length() > index.row() && index.row() >= 0)
|
||||
return m_item->m_result_info_list.at(index.row()).key;
|
||||
// return m_item->m_result_info_list.at(index.row()).key;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
|
|
@ -155,11 +155,11 @@ void ResultView::onRowDoubleClickedSlot(const QModelIndex &index)
|
|||
SearchPluginIface *plugin = SearchPluginManager::getInstance()->getPlugin(m_plugin_id);
|
||||
try {
|
||||
if (plugin) {
|
||||
if (!info.actionList.isEmpty()) {
|
||||
plugin->openAction(info.actionList.at(0), info.key);
|
||||
} else {
|
||||
throw -2;
|
||||
}
|
||||
// if (!info.actionList.isEmpty()) {
|
||||
// plugin->openAction(info.actionList.at(0), info.key);
|
||||
// } else {
|
||||
// throw -2;
|
||||
// }
|
||||
} else {
|
||||
throw -1;
|
||||
}
|
||||
|
@ -211,7 +211,7 @@ void ResultView::onMenuTriggered(QAction *action)
|
|||
//NEW_TODO 接口调整后需要修改
|
||||
SearchPluginIface *plugin = SearchPluginManager::getInstance()->getPlugin(m_plugin_id);
|
||||
if (plugin) {
|
||||
plugin->openAction(action->text(), m_model->getKey(this->currentIndex()));
|
||||
// plugin->openAction(action->text(), m_model->getKey(this->currentIndex()));
|
||||
} else {
|
||||
qWarning()<<"Get plugin failed!";
|
||||
}
|
||||
|
|
|
@ -2,6 +2,8 @@
|
|||
#define COMMON_H
|
||||
|
||||
#define UKUI_SEARCH_PIPE_PATH (QDir::homePath()+"/.config/org.ukui/ukui-search/ukuisearch").toLocal8Bit().constData()
|
||||
#define FILE_SEARCH_VALUE "0"
|
||||
#define DIR_SEARCH_VALUE "1"
|
||||
|
||||
//TODO Put things that needed to be put here here.
|
||||
#endif // COMMON_H
|
||||
|
|
|
@ -688,3 +688,18 @@ void FileUtils::getTxtContent(QString &path, QString &textcontent) {
|
|||
|
||||
return;
|
||||
}
|
||||
|
||||
bool FileUtils::openFile(QString &path, bool openInDir)
|
||||
{
|
||||
if(openInDir) {
|
||||
return QDesktopServices::openUrl(QUrl::fromLocalFile(path.left(path.lastIndexOf("/"))));
|
||||
} else {
|
||||
return QDesktopServices::openUrl(QUrl::fromLocalFile(path));
|
||||
}
|
||||
}
|
||||
|
||||
bool FileUtils::copyPath(QString &path)
|
||||
{
|
||||
QApplication::clipboard()->setText(path);
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -35,6 +35,9 @@
|
|||
#include <QMap>
|
||||
#include <QDomDocument>
|
||||
#include <QQueue>
|
||||
#include <QDesktopServices>
|
||||
#include <QApplication>
|
||||
#include <QClipboard>
|
||||
|
||||
#include <quazip/quazipfile.h>
|
||||
#include <stdio.h>
|
||||
|
@ -81,6 +84,9 @@ public:
|
|||
static void getXlsxTextContent(QString &path, QString &textcontent);
|
||||
static void getPdfTextContent(QString &path, QString &textcontent);
|
||||
static void getTxtContent(QString &path, QString &textcontent);
|
||||
|
||||
static bool openFile(QString &path, bool openInDir = false);
|
||||
static bool copyPath(QString &path);
|
||||
static size_t _max_index_count;
|
||||
static size_t _current_index_count; //this one has been Abandoned,do not use it.
|
||||
static unsigned short _index_status;
|
||||
|
|
|
@ -0,0 +1,6 @@
|
|||
#include "data-queue.h"
|
||||
|
||||
DataQueue::DataQueue()
|
||||
{
|
||||
|
||||
}
|
|
@ -0,0 +1,11 @@
|
|||
#ifndef DATAQUEUE_H
|
||||
#define DATAQUEUE_H
|
||||
|
||||
|
||||
class DataQueue
|
||||
{
|
||||
public:
|
||||
DataQueue();
|
||||
};
|
||||
|
||||
#endif // DATAQUEUE_H
|
|
@ -0,0 +1,190 @@
|
|||
#include "file-search-plugin.h"
|
||||
#include "search-manager.h"
|
||||
using namespace Zeeker;
|
||||
|
||||
FileSearchPlugin::FileSearchPlugin(QObject *parent) : QObject(parent)
|
||||
{
|
||||
SearchPluginIface::Actioninfo open { 0, tr("Open")};
|
||||
SearchPluginIface::Actioninfo Openpath { 1, tr("Open path")};
|
||||
SearchPluginIface::Actioninfo CopyPath { 2, tr("Copy Path")};
|
||||
m_actionInfo << open << Openpath << CopyPath;
|
||||
m_pool.setMaxThreadCount(2);
|
||||
m_pool.setExpiryTimeout(1000);
|
||||
}
|
||||
|
||||
const QString FileSearchPlugin::name()
|
||||
{
|
||||
return tr("File Search");
|
||||
}
|
||||
|
||||
const QString FileSearchPlugin::description()
|
||||
{
|
||||
return tr("File search.");
|
||||
}
|
||||
|
||||
QString FileSearchPlugin::getPluginName()
|
||||
{
|
||||
return tr("File Search");
|
||||
}
|
||||
|
||||
void Zeeker::FileSearchPlugin::KeywordSearch(QString keyword, DataQueue<ResultInfo> *searchResult)
|
||||
{
|
||||
SearchManager::m_mutex1.lock();
|
||||
++SearchManager::uniqueSymbol1;
|
||||
SearchManager::m_mutex1.unlock();
|
||||
|
||||
if(FileUtils::SearchMethod::DIRECTSEARCH == FileUtils::searchMethod) {
|
||||
DirectSearch *directSearch;
|
||||
directSearch = new DirectSearch(keyword, searchResult, FILE_SEARCH_VALUE, SearchManager::uniqueSymbol1);
|
||||
m_pool.start(directSearch);
|
||||
} else if(FileUtils::SearchMethod::INDEXSEARCH == FileUtils::searchMethod) {
|
||||
FileSearch *filesearch;
|
||||
filesearch = new FileSearch(searchResult, SearchManager::uniqueSymbol1, keyword, FILE_SEARCH_VALUE, 1, 0, 5);
|
||||
m_pool.start(filesearch);
|
||||
}
|
||||
}
|
||||
|
||||
QList<SearchPluginIface::Actioninfo> FileSearchPlugin::getActioninfo(int type)
|
||||
{
|
||||
return m_actionInfo;
|
||||
}
|
||||
|
||||
void FileSearchPlugin::openAction(int actionkey, QString key)
|
||||
{
|
||||
//TODO add some return message here.
|
||||
switch (actionkey) {
|
||||
case 0:
|
||||
FileUtils::openFile(key);
|
||||
break;
|
||||
case 1:
|
||||
FileUtils::openFile(key, true);
|
||||
case 2:
|
||||
FileUtils::copyPath(key);
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
DirSearchPlugin::DirSearchPlugin(QObject *parent) : QObject(parent)
|
||||
{
|
||||
SearchPluginIface::Actioninfo open { 0, tr("Open")};
|
||||
SearchPluginIface::Actioninfo Openpath { 1, tr("Open path")};
|
||||
SearchPluginIface::Actioninfo CopyPath { 2, tr("Copy Path")};
|
||||
m_actionInfo << open << Openpath << CopyPath;
|
||||
m_pool.setMaxThreadCount(2);
|
||||
m_pool.setExpiryTimeout(1000);
|
||||
}
|
||||
|
||||
const QString DirSearchPlugin::name()
|
||||
{
|
||||
return tr("Dir Search");
|
||||
}
|
||||
|
||||
const QString DirSearchPlugin::description()
|
||||
{
|
||||
return tr("Dir search.");
|
||||
}
|
||||
|
||||
QString DirSearchPlugin::getPluginName()
|
||||
{
|
||||
return tr("Dir Search");
|
||||
}
|
||||
|
||||
void Zeeker::DirSearchPlugin::KeywordSearch(QString keyword, DataQueue<ResultInfo> *searchResult)
|
||||
{
|
||||
SearchManager::m_mutex2.lock();
|
||||
++SearchManager::uniqueSymbol2;
|
||||
SearchManager::m_mutex2.unlock();
|
||||
|
||||
if(FileUtils::SearchMethod::DIRECTSEARCH == FileUtils::searchMethod) {
|
||||
DirectSearch *directSearch;
|
||||
directSearch = new DirectSearch(keyword, searchResult, DIR_SEARCH_VALUE, SearchManager::uniqueSymbol2);
|
||||
m_pool.start(directSearch);
|
||||
} else if(FileUtils::SearchMethod::INDEXSEARCH == FileUtils::searchMethod) {
|
||||
FileSearch *filesearch;
|
||||
filesearch = new FileSearch(searchResult, SearchManager::uniqueSymbol2, keyword, DIR_SEARCH_VALUE, 1, 0, 5);
|
||||
m_pool.start(filesearch);
|
||||
}
|
||||
}
|
||||
|
||||
QList<SearchPluginIface::Actioninfo> DirSearchPlugin::getActioninfo(int type)
|
||||
{
|
||||
return m_actionInfo;
|
||||
}
|
||||
|
||||
void DirSearchPlugin::openAction(int actionkey, QString key)
|
||||
{
|
||||
//TODO add some return message here.
|
||||
switch (actionkey) {
|
||||
case 0:
|
||||
FileUtils::openFile(key);
|
||||
break;
|
||||
case 1:
|
||||
FileUtils::openFile(key, true);
|
||||
case 2:
|
||||
FileUtils::copyPath(key);
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
FileContengSearchPlugin::FileContengSearchPlugin(QObject *parent) : QObject(parent)
|
||||
{
|
||||
SearchPluginIface::Actioninfo open { 0, tr("Open")};
|
||||
SearchPluginIface::Actioninfo Openpath { 1, tr("Open path")};
|
||||
SearchPluginIface::Actioninfo CopyPath { 2, tr("Copy Path")};
|
||||
m_actionInfo << open << Openpath << CopyPath;
|
||||
m_pool.setMaxThreadCount(2);
|
||||
m_pool.setExpiryTimeout(1000);
|
||||
}
|
||||
|
||||
const QString FileContengSearchPlugin::name()
|
||||
{
|
||||
return tr("File Content Search");
|
||||
}
|
||||
|
||||
const QString FileContengSearchPlugin::description()
|
||||
{
|
||||
return tr("File content search.");
|
||||
}
|
||||
|
||||
QString FileContengSearchPlugin::getPluginName()
|
||||
{
|
||||
return tr("File content search");
|
||||
}
|
||||
|
||||
void Zeeker::FileContengSearchPlugin::KeywordSearch(QString keyword, DataQueue<ResultInfo> *searchResult)
|
||||
{
|
||||
SearchManager::m_mutex3.lock();
|
||||
++SearchManager::uniqueSymbol3;
|
||||
SearchManager::m_mutex3.unlock();
|
||||
|
||||
if(FileUtils::SearchMethod::DIRECTSEARCH == FileUtils::searchMethod) {
|
||||
return;
|
||||
} else if(FileUtils::SearchMethod::INDEXSEARCH == FileUtils::searchMethod) {
|
||||
FileContentSearch *fileContentSearch;
|
||||
fileContentSearch = new FileContentSearch(searchResult, SearchManager::uniqueSymbol3, keyword, 0, 5);
|
||||
m_pool.start(fileContentSearch);
|
||||
}
|
||||
}
|
||||
|
||||
QList<SearchPluginIface::Actioninfo> FileContengSearchPlugin::getActioninfo(int type)
|
||||
{
|
||||
return m_actionInfo;
|
||||
}
|
||||
|
||||
void FileContengSearchPlugin::openAction(int actionkey, QString key)
|
||||
{
|
||||
//TODO add some return message here.
|
||||
switch (actionkey) {
|
||||
case 0:
|
||||
FileUtils::openFile(key);
|
||||
break;
|
||||
case 1:
|
||||
FileUtils::openFile(key, true);
|
||||
case 2:
|
||||
FileUtils::copyPath(key);
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,83 @@
|
|||
#ifndef FILESEARCHPLUGIN_H
|
||||
#define FILESEARCHPLUGIN_H
|
||||
|
||||
#include <QObject>
|
||||
#include <QThreadPool>
|
||||
|
||||
#include "libsearch_global.h"
|
||||
#include "search-plugin-iface.h"
|
||||
#include "common.h"
|
||||
namespace Zeeker {
|
||||
//internal plugin
|
||||
class LIBSEARCH_EXPORT FileSearchPlugin : public QObject, public SearchPluginIface
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
FileSearchPlugin(QObject *parent = nullptr);
|
||||
PluginType pluginType() {return PluginType::SearchPlugin;}
|
||||
const QString name();
|
||||
const QString description();
|
||||
const QIcon icon() {return QIcon::fromTheme("folder");}
|
||||
void setEnable(bool enable) {m_enable = enable;}
|
||||
bool isEnable() {return m_enable;}
|
||||
QString getPluginName();
|
||||
|
||||
void KeywordSearch(QString keyword,DataQueue<ResultInfo> *searchResult);
|
||||
QList<SearchPluginIface::Actioninfo> getActioninfo(int type);
|
||||
void openAction(int actionkey, QString key);
|
||||
|
||||
private:
|
||||
bool m_enable = true;
|
||||
QList<SearchPluginIface::Actioninfo> m_actionInfo;
|
||||
QThreadPool m_pool;
|
||||
};
|
||||
|
||||
class LIBSEARCH_EXPORT DirSearchPlugin : public QObject, public SearchPluginIface
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
DirSearchPlugin(QObject *parent = nullptr);
|
||||
PluginType pluginType() {return PluginType::SearchPlugin;}
|
||||
const QString name();
|
||||
const QString description();
|
||||
const QIcon icon() {return QIcon::fromTheme("folder");}
|
||||
void setEnable(bool enable) {m_enable = enable;}
|
||||
bool isEnable() {return m_enable;}
|
||||
QString getPluginName();
|
||||
|
||||
void KeywordSearch(QString keyword,DataQueue<ResultInfo> *searchResult);
|
||||
QList<SearchPluginIface::Actioninfo> getActioninfo(int type);
|
||||
void openAction(int actionkey, QString key);
|
||||
|
||||
private:
|
||||
bool m_enable = true;
|
||||
QList<SearchPluginIface::Actioninfo> m_actionInfo;
|
||||
QThreadPool m_pool;
|
||||
};
|
||||
|
||||
class LIBSEARCH_EXPORT FileContengSearchPlugin : public QObject, public SearchPluginIface
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
FileContengSearchPlugin(QObject *parent = nullptr);
|
||||
PluginType pluginType() {return PluginType::SearchPlugin;}
|
||||
const QString name();
|
||||
const QString description();
|
||||
const QIcon icon() {return QIcon::fromTheme("folder");}
|
||||
void setEnable(bool enable) {m_enable = enable;}
|
||||
bool isEnable() {return m_enable;}
|
||||
QString getPluginName();
|
||||
|
||||
void KeywordSearch(QString keyword,DataQueue<ResultInfo> *searchResult);
|
||||
QList<SearchPluginIface::Actioninfo> getActioninfo(int type);
|
||||
void openAction(int actionkey, QString key);
|
||||
|
||||
private:
|
||||
bool m_enable = true;
|
||||
QList<SearchPluginIface::Actioninfo> m_actionInfo;
|
||||
QThreadPool m_pool;
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
#endif // FILESEARCHPLUGIN_H
|
|
@ -4,6 +4,7 @@ HEADERS += \
|
|||
$$PWD/construct-document.h \
|
||||
$$PWD/document.h \
|
||||
$$PWD/file-reader.h \
|
||||
$$PWD/file-search-plugin.h \
|
||||
$$PWD/first-index.h \
|
||||
$$PWD/index-generator.h \
|
||||
$$PWD/index-status-recorder.h \
|
||||
|
@ -17,6 +18,7 @@ SOURCES += \
|
|||
$$PWD/construct-document.cpp \
|
||||
$$PWD/document.cpp \
|
||||
$$PWD/file-reader.cpp \
|
||||
$$PWD/file-search-plugin.cpp \
|
||||
$$PWD/first-index.cpp \
|
||||
$$PWD/index-generator.cpp \
|
||||
$$PWD/index-status-recorder.cpp \
|
||||
|
|
|
@ -56,25 +56,25 @@ void SearchManager::onKeywordSearch(QString keyword, QQueue<QString> *searchResu
|
|||
++uniqueSymbol3;
|
||||
m_mutex3.unlock();
|
||||
|
||||
if(FileUtils::SearchMethod::DIRECTSEARCH == FileUtils::searchMethod) {
|
||||
DirectSearch *directSearch;
|
||||
directSearch = new DirectSearch(keyword, searchResultFile, searchResultDir, uniqueSymbol1);
|
||||
m_pool.start(directSearch);
|
||||
} else if(FileUtils::SearchMethod::INDEXSEARCH == FileUtils::searchMethod) {
|
||||
FileSearch *filesearch;
|
||||
filesearch = new FileSearch(searchResultFile, uniqueSymbol1, keyword, "0", 1, 0, 5);
|
||||
m_pool.start(filesearch);
|
||||
// if(FileUtils::SearchMethod::DIRECTSEARCH == FileUtils::searchMethod) {
|
||||
// DirectSearch *directSearch;
|
||||
// directSearch = new DirectSearch(keyword, searchResultFile, searchResultDir, uniqueSymbol1);
|
||||
// m_pool.start(directSearch);
|
||||
// } else if(FileUtils::SearchMethod::INDEXSEARCH == FileUtils::searchMethod) {
|
||||
// FileSearch *filesearch;
|
||||
// filesearch = new FileSearch(searchResultFile, uniqueSymbol1, keyword, "0", 1, 0, 5);
|
||||
// m_pool.start(filesearch);
|
||||
|
||||
FileSearch *dirsearch;
|
||||
dirsearch = new FileSearch(searchResultDir, uniqueSymbol2, keyword, "1", 1, 0, 5);
|
||||
m_pool.start(dirsearch);
|
||||
// FileSearch *dirsearch;
|
||||
// dirsearch = new FileSearch(searchResultDir, uniqueSymbol2, keyword, "1", 1, 0, 5);
|
||||
// m_pool.start(dirsearch);
|
||||
|
||||
FileContentSearch *contentSearch;
|
||||
contentSearch = new FileContentSearch(searchResultContent, uniqueSymbol3, keyword, 0, 5);
|
||||
m_pool.start(contentSearch);
|
||||
} else {
|
||||
qWarning() << "Unknown search method! FileUtils::searchMethod: " << static_cast<int>(FileUtils::searchMethod);
|
||||
}
|
||||
// FileContentSearch *contentSearch;
|
||||
// contentSearch = new FileContentSearch(searchResultContent, uniqueSymbol3, keyword, 0, 5);
|
||||
// m_pool.start(contentSearch);
|
||||
// } else {
|
||||
// qWarning() << "Unknown search method! FileUtils::searchMethod: " << static_cast<int>(FileUtils::searchMethod);
|
||||
// }
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -88,7 +88,24 @@ bool SearchManager::isBlocked(QString &path) {
|
|||
|
||||
}
|
||||
|
||||
FileSearch::FileSearch(QQueue<QString> *searchResult, size_t uniqueSymbol, QString keyword, QString value, unsigned slot, int begin, int num) {
|
||||
bool SearchManager::creatResultInfo(SearchPluginIface::ResultInfo &ri, QString path)
|
||||
{
|
||||
QFileInfo info(info);
|
||||
if(!info.exists()) {
|
||||
return false;
|
||||
}
|
||||
SearchPluginIface::DescriptionInfo di;
|
||||
di.key = tr("Path:");
|
||||
di.value = path;
|
||||
|
||||
ri.icon = FileUtils::getFileIcon(QUrl::fromLocalFile(path).toString());
|
||||
ri.name = info.fileName();
|
||||
ri.description = QVector<SearchPluginIface::DescriptionInfo>() << di;
|
||||
ri.actionKey = path;
|
||||
ri.type = 0;
|
||||
return true;
|
||||
}
|
||||
FileSearch::FileSearch(DataQueue<SearchPluginIface::ResultInfo> *searchResult, size_t uniqueSymbol, QString keyword, QString value, unsigned slot, int begin, int num) {
|
||||
this->setAutoDelete(true);
|
||||
m_search_result = searchResult;
|
||||
m_uniqueSymbol = uniqueSymbol;
|
||||
|
@ -178,18 +195,13 @@ int FileSearch::getResult(Xapian::MSet &result) {
|
|||
if(SearchManager::isBlocked(path)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
QFileInfo info(path);
|
||||
|
||||
if(!info.exists()) {
|
||||
// pathTobeDelete->append(QString::fromStdString(data));
|
||||
qDebug() << path << "is not exist!!";
|
||||
} else {
|
||||
SearchPluginIface::ResultInfo ri;
|
||||
if(SearchManager::creatResultInfo(ri, path)) {
|
||||
switch(m_value.toInt()) {
|
||||
case 1:
|
||||
SearchManager::m_mutex1.lock();
|
||||
if(m_uniqueSymbol == SearchManager::uniqueSymbol2) {
|
||||
m_search_result->enqueue(path);
|
||||
m_search_result->enqueue(ri);
|
||||
SearchManager::m_mutex1.unlock();
|
||||
} else {
|
||||
SearchManager::m_mutex1.unlock();
|
||||
|
@ -200,7 +212,7 @@ int FileSearch::getResult(Xapian::MSet &result) {
|
|||
case 0:
|
||||
SearchManager::m_mutex2.lock();
|
||||
if(m_uniqueSymbol == SearchManager::uniqueSymbol1) {
|
||||
m_search_result->enqueue(path);
|
||||
m_search_result->enqueue(ri);
|
||||
SearchManager::m_mutex2.unlock();
|
||||
} else {
|
||||
SearchManager::m_mutex2.unlock();
|
||||
|
@ -210,8 +222,8 @@ int FileSearch::getResult(Xapian::MSet &result) {
|
|||
default:
|
||||
break;
|
||||
}
|
||||
// searchResult.append(path);
|
||||
}
|
||||
// searchResult.append(path);
|
||||
qDebug() << "doc=" << path << ",weight=" << docScoreWeight << ",percent=" << docScorePercent;
|
||||
}
|
||||
// if(!pathTobeDelete->isEmpty())
|
||||
|
@ -219,7 +231,7 @@ int FileSearch::getResult(Xapian::MSet &result) {
|
|||
return 0;
|
||||
}
|
||||
|
||||
FileContentSearch::FileContentSearch(QQueue<QPair<QString, QStringList>> *searchResult, size_t uniqueSymbol, QString keyword, int begin, int num) {
|
||||
FileContentSearch::FileContentSearch(DataQueue<SearchPluginIface::ResultInfo> *searchResult, size_t uniqueSymbol, QString keyword, int begin, int num) {
|
||||
this->setAutoDelete(true);
|
||||
m_search_result = searchResult;
|
||||
m_uniqueSymbol = uniqueSymbol;
|
||||
|
@ -339,15 +351,12 @@ int FileContentSearch::getResult(Xapian::MSet &result, std::string &keyWord) {
|
|||
continue;
|
||||
}
|
||||
|
||||
QFileInfo info(path);
|
||||
|
||||
if(!info.exists()) {
|
||||
// pathTobeDelete->append(QString::fromStdString(data));
|
||||
qDebug() << path << "is not exist!!";
|
||||
SearchPluginIface::ResultInfo ri;
|
||||
if(!SearchManager::creatResultInfo(ri, path)) {
|
||||
continue;
|
||||
}
|
||||
// Construct snippets containing keyword.
|
||||
QStringList snippets;
|
||||
// QStringList snippets;
|
||||
// snippets.append(QString::fromStdString( result.snippet(doc.get_data(),400)));
|
||||
// qWarning()<<QString::fromStdString(s);
|
||||
auto term = doc.termlist_begin();
|
||||
|
@ -363,13 +372,16 @@ int FileContentSearch::getResult(Xapian::MSet &result, std::string &keyWord) {
|
|||
} else {
|
||||
snippet.append("...").prepend("...");
|
||||
}
|
||||
snippets.append(snippet);
|
||||
ri.description.prepend(SearchPluginIface::DescriptionInfo{"",snippet});
|
||||
// snippets.append(snippet);
|
||||
QString().swap(snippet);
|
||||
std::string().swap(s);
|
||||
++count;
|
||||
}
|
||||
std::string().swap(data);
|
||||
|
||||
|
||||
|
||||
// for(QString i : QString::fromStdString(keyWord).split(" ",QString::SkipEmptyParts))
|
||||
// {
|
||||
// std::string word = i.toStdString();
|
||||
|
@ -387,10 +399,10 @@ int FileContentSearch::getResult(Xapian::MSet &result, std::string &keyWord) {
|
|||
|
||||
SearchManager::m_mutex3.lock();
|
||||
if(m_uniqueSymbol == SearchManager::uniqueSymbol3) {
|
||||
m_search_result->enqueue(qMakePair(path, snippets));
|
||||
m_search_result->enqueue(ri);
|
||||
SearchManager::m_mutex3.unlock();
|
||||
snippets.clear();
|
||||
QStringList().swap(snippets);
|
||||
// snippets.clear();
|
||||
// QStringList().swap(snippets);
|
||||
} else {
|
||||
SearchManager::m_mutex3.unlock();
|
||||
return -1;
|
||||
|
@ -403,12 +415,12 @@ int FileContentSearch::getResult(Xapian::MSet &result, std::string &keyWord) {
|
|||
return 0;
|
||||
}
|
||||
|
||||
DirectSearch::DirectSearch(QString keyword, QQueue<QString> *searchResultFile, QQueue<QString> *searchResultDir, size_t uniqueSymbol) {
|
||||
DirectSearch::DirectSearch(QString keyword, DataQueue<SearchPluginIface::ResultInfo> *searchResult, QString value, size_t uniqueSymbol) {
|
||||
this->setAutoDelete(true);
|
||||
m_keyword = keyword;
|
||||
m_searchResultFile = searchResultFile;
|
||||
m_searchResultDir = searchResultDir;
|
||||
m_searchResult = searchResult;
|
||||
m_uniqueSymbol = uniqueSymbol;
|
||||
m_value = value;
|
||||
}
|
||||
|
||||
void DirectSearch::run() {
|
||||
|
@ -417,8 +429,13 @@ void DirectSearch::run() {
|
|||
QFileInfoList list;
|
||||
QDir dir;
|
||||
// QDir::Hidden
|
||||
if(m_value == DIR_SEARCH_VALUE) {
|
||||
dir.setFilter(QDir::Dirs | QDir::NoDotAndDotDot);
|
||||
} else {
|
||||
dir.setFilter(QDir::Dirs | QDir::Files | QDir::NoDotAndDotDot);
|
||||
dir.setSorting(QDir::DirsFirst);
|
||||
}
|
||||
|
||||
QStringList blockList = GlobalSettings::getInstance()->getBlockDirs();
|
||||
while(!bfs.empty()) {
|
||||
dir.setPath(bfs.dequeue());
|
||||
|
@ -442,27 +459,23 @@ void DirectSearch::run() {
|
|||
bfs.enqueue(i.absoluteFilePath());
|
||||
}
|
||||
if(i.fileName().contains(m_keyword, Qt::CaseInsensitive)) {
|
||||
SearchManager::m_mutex1.lock();
|
||||
// qWarning() << i.fileName() << m_keyword;
|
||||
if(m_searchResult->length() > 49)
|
||||
return;
|
||||
if((i.isDir() && m_value == DIR_SEARCH_VALUE) || (i.isFile() && m_value == FILE_SEARCH_VALUE)) {
|
||||
SearchPluginIface::ResultInfo ri;
|
||||
if(SearchManager::creatResultInfo(ri,i.absoluteFilePath())) {
|
||||
SearchManager::m_mutex1.lock();
|
||||
if(m_uniqueSymbol == SearchManager::uniqueSymbol1) {
|
||||
// TODO
|
||||
if(i.isDir() && m_searchResultDir->length() < 51) {
|
||||
m_searchResultDir->enqueue(i.absoluteFilePath());
|
||||
} else if(m_searchResultFile->length() < 51) {
|
||||
m_searchResultFile->enqueue(i.absoluteFilePath());
|
||||
}
|
||||
m_searchResult->enqueue(ri);
|
||||
SearchManager::m_mutex1.unlock();
|
||||
if(m_searchResultDir->length() > 49 && m_searchResultFile->length() > 49) {
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
// TODO
|
||||
// More suitable method?
|
||||
m_searchResultFile->clear();
|
||||
m_searchResultDir->clear();
|
||||
SearchManager::m_mutex1.unlock();
|
||||
return;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -37,19 +37,19 @@
|
|||
#include <QThread>
|
||||
#include <QUrl>
|
||||
|
||||
#include "search-plugin-iface.h"
|
||||
#include "file-utils.h"
|
||||
#include "global-settings.h"
|
||||
#include "chinese-segmentation.h"
|
||||
|
||||
#include "common.h"
|
||||
|
||||
#define INDEX_PATH (QStandardPaths::writableLocation(QStandardPaths::HomeLocation)+"/.config/org.ukui/ukui-search/index_data").toStdString()
|
||||
#define CONTENT_INDEX_PATH (QStandardPaths::writableLocation(QStandardPaths::HomeLocation)+"/.config/org.ukui/ukui-search/content_index_data").toStdString()
|
||||
|
||||
namespace Zeeker {
|
||||
|
||||
class LIBSEARCH_EXPORT SearchManager : public QObject {
|
||||
friend class FileSearch;
|
||||
friend class FileContentSearch;
|
||||
friend class DirectSearch;
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit SearchManager(QObject *parent = nullptr);
|
||||
|
@ -72,33 +72,15 @@ Q_SIGNALS:
|
|||
void resultDir(QQueue<QString> *);
|
||||
void resultContent(QQueue<QPair<QString, QStringList>> *);
|
||||
private:
|
||||
// int keywordSearchfile(size_t uniqueSymbol, QString keyword, QString value,unsigned slot = 1,int begin = 0, int num = 20);
|
||||
// int keywordSearchContent(size_t uniqueSymbol, QString keyword, int begin = 0, int num = 20);
|
||||
|
||||
/**
|
||||
* @brief SearchManager::creatQueryForFileSearch
|
||||
* This part shall be optimized frequently to provide a more stable search function.
|
||||
* @param keyword
|
||||
* @param db
|
||||
* @return Xapian::Query
|
||||
*/
|
||||
// Xapian::Query creatQueryForFileSearch(QString keyword, Xapian::Database &db);
|
||||
// Xapian::Query creatQueryForContentSearch(QString keyword, Xapian::Database &db);
|
||||
|
||||
// int getResult(size_t uniqueSymbol, Xapian::MSet &result, QString value);
|
||||
// int getContentResult(size_t uniqueSymbol, Xapian::MSet &result,std::string &keyWord);
|
||||
|
||||
static bool isBlocked(QString &path);
|
||||
static bool creatResultInfo(Zeeker::SearchPluginIface::ResultInfo &ri, QString path);
|
||||
|
||||
// QQueue<QString> *m_search_result_file = nullptr;
|
||||
// QQueue<QString> *m_search_result_dir = nullptr;
|
||||
// QQueue<QPair<QString,QStringList>> *m_search_result_content = nullptr;
|
||||
QThreadPool m_pool;
|
||||
};
|
||||
|
||||
class FileSearch : public QRunnable {
|
||||
public:
|
||||
explicit FileSearch(QQueue<QString> *searchResult, size_t uniqueSymbol, QString keyword, QString value, unsigned slot = 1, int begin = 0, int num = 20);
|
||||
explicit FileSearch(DataQueue<SearchPluginIface::ResultInfo> *searchResult, size_t uniqueSymbol, QString keyword, QString value, unsigned slot = 1, int begin = 0, int num = 20);
|
||||
~FileSearch();
|
||||
protected:
|
||||
void run();
|
||||
|
@ -107,7 +89,7 @@ private:
|
|||
Xapian::Query creatQueryForFileSearch(Xapian::Database &db);
|
||||
int getResult(Xapian::MSet &result);
|
||||
|
||||
QQueue<QString> *m_search_result = nullptr;
|
||||
DataQueue<SearchPluginIface::ResultInfo> *m_search_result = nullptr;
|
||||
QString m_value;
|
||||
unsigned m_slot = 1;
|
||||
size_t m_uniqueSymbol;
|
||||
|
@ -118,7 +100,7 @@ private:
|
|||
|
||||
class FileContentSearch : public QRunnable {
|
||||
public:
|
||||
explicit FileContentSearch(QQueue<QPair<QString, QStringList>> *searchResult, size_t uniqueSymbol, QString keyword, int begin = 0, int num = 20);
|
||||
explicit FileContentSearch(DataQueue<SearchPluginIface::ResultInfo> *searchResult, size_t uniqueSymbol, QString keyword, int begin = 0, int num = 20);
|
||||
~FileContentSearch();
|
||||
protected:
|
||||
void run();
|
||||
|
@ -126,7 +108,7 @@ private:
|
|||
int keywordSearchContent();
|
||||
int getResult(Xapian::MSet &result, std::string &keyWord);
|
||||
|
||||
QQueue<QPair<QString, QStringList>> *m_search_result = nullptr;
|
||||
DataQueue<SearchPluginIface::ResultInfo> *m_search_result = nullptr;
|
||||
size_t m_uniqueSymbol;
|
||||
QString m_keyword;
|
||||
int m_begin = 0;
|
||||
|
@ -135,14 +117,14 @@ private:
|
|||
|
||||
class DirectSearch : public QRunnable {
|
||||
public:
|
||||
explicit DirectSearch(QString keyword, QQueue<QString> *searchResultFile, QQueue<QString> *searchResultDir, size_t uniqueSymbol);
|
||||
explicit DirectSearch(QString keyword, DataQueue<SearchPluginIface::ResultInfo> *searchResult, QString value, size_t uniqueSymbol);
|
||||
protected:
|
||||
void run();
|
||||
private:
|
||||
QString m_keyword;
|
||||
QQueue<QString>* m_searchResultFile = nullptr;
|
||||
QQueue<QString>* m_searchResultDir = nullptr;
|
||||
DataQueue<SearchPluginIface::ResultInfo>* m_searchResult = nullptr;
|
||||
size_t m_uniqueSymbol;
|
||||
QString m_value;
|
||||
};
|
||||
|
||||
}
|
||||
|
|
|
@ -26,12 +26,15 @@
|
|||
#include "file-utils.h"
|
||||
#include "global-settings.h"
|
||||
|
||||
#include "plugininterface/search-plugin-iface.h"
|
||||
#include "plugininterface/data-queue.h"
|
||||
#include "index/searchmethodmanager.h"
|
||||
#include "index/first-index.h"
|
||||
#include "index/ukui-search-qdbus.h"
|
||||
#include "index/inotify-index.h"
|
||||
#include "index/search-manager.h"
|
||||
|
||||
|
||||
namespace Zeeker {
|
||||
//class LIBSEARCH_EXPORT GlobalSearch {
|
||||
//public:
|
||||
|
|
|
@ -24,13 +24,14 @@ DEFINES += PLUGIN_INSTALL_DIRS='\\"$${PLUGIN_INSTALL_DIRS}\\"'
|
|||
# In order to do so, uncomment the following line.
|
||||
# You can also select to disable deprecated APIs only up to a certain version of Qt.
|
||||
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
|
||||
|
||||
include(pluginmanage/plugin-manager.pri)
|
||||
include(plugininterface/plugin-interface.pri)
|
||||
include(index/index.pri)
|
||||
include(parser/parser.pri))
|
||||
include(appsearch/appsearch.pri)
|
||||
include(settingsearch/settingsearch.pri))
|
||||
include(plugininterface/plugin-interface.pri)
|
||||
include(pluginmanage/plugin-manager.pri)
|
||||
|
||||
|
||||
|
||||
LIBS += -L$$OUT_PWD/../libchinese-segmentation/ -lchinese-segmentation
|
||||
LIBS += -lxapian -lquazip5 -luchardet
|
||||
|
@ -52,13 +53,13 @@ HEADERS += \
|
|||
RESOURCES += \
|
||||
resource1.qrc \
|
||||
|
||||
#TRANSLATIONS += \
|
||||
# ../translations/libsearch/libukui-search_zh_CN.ts
|
||||
TRANSLATIONS += \
|
||||
../translations/libukui-search/libukui-search_zh_CN.ts
|
||||
|
||||
#qm_files.path = /usr/share/ukui-search/translations/libsearch/
|
||||
#qm_files.files = $$OUT_PWD/.qm/*.qm
|
||||
qm_files.path = /usr/share/ukui-search/translations/
|
||||
qm_files.files = $$OUT_PWD/.qm/*.qm
|
||||
|
||||
#INSTALLS += qm_files
|
||||
INSTALLS += qm_files
|
||||
|
||||
|
||||
# Default rules for deployment.
|
||||
|
@ -67,11 +68,9 @@ unix {
|
|||
INSTALLS += target
|
||||
|
||||
header.path = /usr/include/ukui-search
|
||||
header.files += *.h index/*.h appsearch/*.h settingsearch/*.h
|
||||
header.files += *.h index/*.h appsearch/*.h settingsearch/*.h plugininterface/*.h
|
||||
INSTALLS += header
|
||||
}
|
||||
|
||||
|
||||
INCLUDEPATH += $$PWD/../libchinese-segmentation
|
||||
DEPENDPATH += $$PWD/../libchinese-segmentation
|
||||
|
||||
|
|
|
@ -0,0 +1,8 @@
|
|||
INCLUDEPATH += $$PWD
|
||||
INCLUDEPATH += $$PWD/plugininterface
|
||||
INCLUDEPATH += $$PWD/index
|
||||
INCLUDEPATH += $$PWD/parser
|
||||
INCLUDEPATH += $$PWD/pluginmanage
|
||||
INCLUDEPATH += $$PWD/settingsearch
|
||||
INCLUDEPATH += $$PWD/appsearch
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
#ifndef DATAQUEUE_H
|
||||
#define DATAQUEUE_H
|
||||
#include <QMutex>
|
||||
#include <QMutexLocker>
|
||||
#include <QList>
|
||||
#include "libsearch_global.h"
|
||||
namespace Zeeker {
|
||||
// TODO I want a unlocked queue
|
||||
template <typename T>
|
||||
class LIBSEARCH_EXPORT DataQueue : public QList<T>
|
||||
{
|
||||
public:
|
||||
inline void enqueue(const T &t) {
|
||||
QMutexLocker locker(&m_mutex);
|
||||
QList<T>::append(t);
|
||||
}
|
||||
inline T dequeue() {
|
||||
QMutexLocker locker(&m_mutex);
|
||||
return QList<T>::takeFirst();
|
||||
}
|
||||
private:
|
||||
QMutex m_mutex;
|
||||
};
|
||||
}
|
||||
|
||||
#endif // DATAQUEUE_H
|
|
@ -1,6 +1,7 @@
|
|||
INCLUDEPATH += $$PWD
|
||||
INCLUDEPATH += $$PWD \
|
||||
|
||||
HEADERS += \
|
||||
$$PWD/plugin-iface.h \
|
||||
$$PWD/search-plugin-iface.h
|
||||
$$PWD/search-plugin-iface.h \
|
||||
$$PWD/data-queue.h
|
||||
|
||||
|
|
|
@ -4,8 +4,11 @@
|
|||
|
||||
#include <QString>
|
||||
#include <QIcon>
|
||||
#include <QMap>
|
||||
#include <QList>
|
||||
#include <QMutex>
|
||||
#include <QtPlugin>
|
||||
#include "plugin-iface.h"
|
||||
#include "data-queue.h"
|
||||
|
||||
namespace Zeeker {
|
||||
class SearchPluginIface : public PluginInterface
|
||||
|
@ -16,6 +19,11 @@ public:
|
|||
QString key;
|
||||
QString value;
|
||||
};
|
||||
struct Actioninfo
|
||||
{
|
||||
int actionkey;
|
||||
QString displayName;
|
||||
};
|
||||
/**
|
||||
* @brief The ResultInfo struct
|
||||
*/
|
||||
|
@ -24,13 +32,15 @@ public:
|
|||
QIcon icon;
|
||||
QString name;
|
||||
QVector<DescriptionInfo> description;
|
||||
QStringList actionList; //all actions, take fist for double click action.
|
||||
QString key;
|
||||
QString actionKey;
|
||||
int type;
|
||||
};
|
||||
|
||||
virtual ~SearchPluginIface() {}
|
||||
virtual QString getPluginName() = 0;
|
||||
virtual void KeywordSearch(QString keyword,QQueue<ResultInfo> *searchResult) = 0;
|
||||
virtual void openAction(QString action, QString key) = 0;
|
||||
virtual void KeywordSearch(QString keyword,DataQueue<ResultInfo> *searchResult) = 0;
|
||||
virtual QList<Actioninfo> getActioninfo(int type) = 0;
|
||||
virtual void openAction(int actionkey, QString key) = 0;
|
||||
|
||||
};
|
||||
}
|
||||
|
|
|
@ -1,8 +1,16 @@
|
|||
#include "search-plugin-manager.h"
|
||||
#include "file-search-plugin.h"
|
||||
|
||||
using namespace Zeeker;
|
||||
|
||||
static SearchPluginManager *global_instance = nullptr;
|
||||
SearchPluginManager::SearchPluginManager(QObject *parent)
|
||||
{
|
||||
registerPlugin(new FileSearchPlugin(this));
|
||||
registerPlugin(new DirSearchPlugin(this));
|
||||
registerPlugin(new FileContengSearchPlugin(this));
|
||||
}
|
||||
|
||||
bool SearchPluginManager::registerPlugin(Zeeker::SearchPluginIface *plugin)
|
||||
{
|
||||
if (m_hash.value(plugin->name())) {
|
||||
|
@ -35,10 +43,6 @@ void SearchPluginManager::close()
|
|||
this->deleteLater();
|
||||
}
|
||||
|
||||
SearchPluginManager::SearchPluginManager(QObject *parent)
|
||||
{
|
||||
}
|
||||
|
||||
SearchPluginManager::~SearchPluginManager()
|
||||
{
|
||||
m_hash.clear();
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
#define SEARCHPLUGINFACTORY_H
|
||||
|
||||
#include <QObject>
|
||||
#include "plugininterface/search-plugin-iface.h"
|
||||
#include "search-plugin-iface.h"
|
||||
|
||||
namespace Zeeker {
|
||||
class SearchPluginManager : public QObject
|
||||
|
|
|
@ -20,11 +20,12 @@ DEFINES += QT_DEPRECATED_WARNINGS
|
|||
# In order to do so, uncomment the following line.
|
||||
# You can also select to disable deprecated APIs only up to a certain version of Qt.
|
||||
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
|
||||
|
||||
include(../libsearch/libukui-search-headers.pri)
|
||||
include(model/model.pri)
|
||||
include(control/control.pri)
|
||||
include(singleapplication/qt-single-application.pri)
|
||||
|
||||
|
||||
SOURCES += \
|
||||
content-widget.cpp \
|
||||
create-index-ask-dialog.cpp \
|
||||
|
|
|
@ -0,0 +1,103 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE TS>
|
||||
<TS version="2.1" language="zh_CN">
|
||||
<context>
|
||||
<name>Zeeker::DirSearchPlugin</name>
|
||||
<message>
|
||||
<location filename="../../libsearch/index/file-search-plugin.cpp" line="70"/>
|
||||
<source>Open</source>
|
||||
<translation>打开</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../libsearch/index/file-search-plugin.cpp" line="71"/>
|
||||
<source>Open path</source>
|
||||
<translation>打开文件所在路径</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../libsearch/index/file-search-plugin.cpp" line="72"/>
|
||||
<source>Copy Path</source>
|
||||
<translation>复制文件路径</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../libsearch/index/file-search-plugin.cpp" line="80"/>
|
||||
<location filename="../../libsearch/index/file-search-plugin.cpp" line="90"/>
|
||||
<source>Dir Search</source>
|
||||
<translation>目录搜索</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../libsearch/index/file-search-plugin.cpp" line="85"/>
|
||||
<source>Dir search.</source>
|
||||
<translation>目录搜索。</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Zeeker::FileContengSearchPlugin</name>
|
||||
<message>
|
||||
<location filename="../../libsearch/index/file-search-plugin.cpp" line="133"/>
|
||||
<source>Open</source>
|
||||
<translation>打开</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../libsearch/index/file-search-plugin.cpp" line="134"/>
|
||||
<source>Open path</source>
|
||||
<translation>打开文件所在路径</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../libsearch/index/file-search-plugin.cpp" line="135"/>
|
||||
<source>Copy Path</source>
|
||||
<translation>复制文件路径</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../libsearch/index/file-search-plugin.cpp" line="143"/>
|
||||
<source>File Content Search</source>
|
||||
<translation>文本内容搜索</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../libsearch/index/file-search-plugin.cpp" line="148"/>
|
||||
<source>File content search.</source>
|
||||
<translation>文本内容搜索。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../libsearch/index/file-search-plugin.cpp" line="153"/>
|
||||
<source>File content search</source>
|
||||
<translation>文本内容搜索</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Zeeker::FileSearchPlugin</name>
|
||||
<message>
|
||||
<location filename="../../libsearch/index/file-search-plugin.cpp" line="7"/>
|
||||
<source>Open</source>
|
||||
<translation>打开</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../libsearch/index/file-search-plugin.cpp" line="8"/>
|
||||
<source>Open path</source>
|
||||
<translation>打开文件所在路径</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../libsearch/index/file-search-plugin.cpp" line="9"/>
|
||||
<source>Copy Path</source>
|
||||
<translation>复制文件路径</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../libsearch/index/file-search-plugin.cpp" line="17"/>
|
||||
<location filename="../../libsearch/index/file-search-plugin.cpp" line="27"/>
|
||||
<source>File Search</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../libsearch/index/file-search-plugin.cpp" line="22"/>
|
||||
<source>File search.</source>
|
||||
<translation>文件搜索。</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Zeeker::SearchManager</name>
|
||||
<message>
|
||||
<location filename="../../libsearch/index/search-manager.cpp" line="98"/>
|
||||
<source>Path:</source>
|
||||
<translation>路径:</translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
|
@ -4,98 +4,40 @@
|
|||
<context>
|
||||
<name>QObject</name>
|
||||
<message>
|
||||
<location filename="../../src/main.cpp" line="195"/>
|
||||
<location filename="../../frontend/main.cpp" line="182"/>
|
||||
<source>ukui-search is already running!</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Zeeker::ContentWidget</name>
|
||||
<message>
|
||||
<location filename="../../src/content-widget.cpp" line="359"/>
|
||||
<source>Recently Opened</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/content-widget.cpp" line="395"/>
|
||||
<source>Open Quickly</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/content-widget.cpp" line="396"/>
|
||||
<source>Commonly Used</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/content-widget.cpp" line="661"/>
|
||||
<source>Apps</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/content-widget.cpp" line="663"/>
|
||||
<source>Settings</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/content-widget.cpp" line="665"/>
|
||||
<source>Files</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/content-widget.cpp" line="667"/>
|
||||
<source>Dirs</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/content-widget.cpp" line="669"/>
|
||||
<source>File Contents</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/content-widget.cpp" line="671"/>
|
||||
<source>Best Matches</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/content-widget.cpp" line="673"/>
|
||||
<source>Web Pages</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/content-widget.cpp" line="675"/>
|
||||
<source>Unknown</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Zeeker::CreateIndexAskDialog</name>
|
||||
<message>
|
||||
<location filename="../../src/create-index-ask-dialog.cpp" line="28"/>
|
||||
<location filename="../../frontend/control/create-index-ask-dialog.cpp" line="40"/>
|
||||
<source>ukui-search</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/create-index-ask-dialog.cpp" line="49"/>
|
||||
<location filename="../../frontend/control/create-index-ask-dialog.cpp" line="66"/>
|
||||
<source>Search</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/create-index-ask-dialog.cpp" line="74"/>
|
||||
<location filename="../../frontend/control/create-index-ask-dialog.cpp" line="91"/>
|
||||
<source>Creating index can help you getting results quickly, whether to create or not?</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/create-index-ask-dialog.cpp" line="83"/>
|
||||
<location filename="../../frontend/control/create-index-ask-dialog.cpp" line="102"/>
|
||||
<source>Don't remind</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/create-index-ask-dialog.cpp" line="94"/>
|
||||
<location filename="../../frontend/control/create-index-ask-dialog.cpp" line="113"/>
|
||||
<source>No</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/create-index-ask-dialog.cpp" line="96"/>
|
||||
<location filename="../../frontend/control/create-index-ask-dialog.cpp" line="115"/>
|
||||
<source>Yes</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -103,260 +45,212 @@
|
|||
<context>
|
||||
<name>Zeeker::FolderListItem</name>
|
||||
<message>
|
||||
<location filename="../../src/control/folder-list-item.cpp" line="55"/>
|
||||
<location filename="../../frontend/control/settings-widget.cpp" line="538"/>
|
||||
<source>Delete the folder out of blacklist</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Zeeker::HomePage</name>
|
||||
<message>
|
||||
<location filename="../../frontend/control/stack-pages/home-page.cpp" line="118"/>
|
||||
<source>Open Quickly</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../frontend/control/stack-pages/home-page.cpp" line="120"/>
|
||||
<source>Recently Opened</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../frontend/control/stack-pages/home-page.cpp" line="122"/>
|
||||
<source>Commonly Used</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Zeeker::MainWindow</name>
|
||||
<message>
|
||||
<location filename="../../src/mainwindow.cpp" line="66"/>
|
||||
<location filename="../../frontend/mainwindow.cpp" line="69"/>
|
||||
<source>ukui-search</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/mainwindow.cpp" line="120"/>
|
||||
<location filename="../../frontend/mainwindow.cpp" line="90"/>
|
||||
<source>Global Search</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/mainwindow.cpp" line="197"/>
|
||||
<location filename="../../frontend/mainwindow.cpp" line="151"/>
|
||||
<source>Search</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Zeeker::OptionView</name>
|
||||
<message>
|
||||
<location filename="../../src/control/option-view.cpp" line="99"/>
|
||||
<source>Open</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/control/option-view.cpp" line="106"/>
|
||||
<source>Add Shortcut to Desktop</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/control/option-view.cpp" line="113"/>
|
||||
<source>Add Shortcut to Panel</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/control/option-view.cpp" line="120"/>
|
||||
<source>Open path</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/control/option-view.cpp" line="127"/>
|
||||
<source>Copy path</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/control/option-view.cpp" line="134"/>
|
||||
<source>Install</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Zeeker::SearchBarHLayout</name>
|
||||
<message>
|
||||
<location filename="../../src/input-box.cpp" line="117"/>
|
||||
<location filename="../../frontend/control/input-box.cpp" line="115"/>
|
||||
<source>Search</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Zeeker::SearchDetailView</name>
|
||||
<message>
|
||||
<location filename="../../src/control/search-detail-view.cpp" line="211"/>
|
||||
<source>Introduction: %1</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/control/search-detail-view.cpp" line="230"/>
|
||||
<source>Application</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/control/search-detail-view.cpp" line="365"/>
|
||||
<source>Document</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/control/search-detail-view.cpp" line="486"/>
|
||||
<source>Preview is not avaliable</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/control/search-detail-view.cpp" line="536"/>
|
||||
<source>Path</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/control/search-detail-view.cpp" line="544"/>
|
||||
<source>Last time modified</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Zeeker::SettingsWidget</name>
|
||||
<message>
|
||||
<location filename="../../src/settings-widget.cpp" line="36"/>
|
||||
<location filename="../../frontend/control/settings-widget.cpp" line="35"/>
|
||||
<source>ukui-search-settings</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/settings-widget.cpp" line="74"/>
|
||||
<location filename="../../src/settings-widget.cpp" line="289"/>
|
||||
<location filename="../../src/settings-widget.cpp" line="519"/>
|
||||
<location filename="../../frontend/control/settings-widget.cpp" line="81"/>
|
||||
<location filename="../../frontend/control/settings-widget.cpp" line="299"/>
|
||||
<location filename="../../frontend/control/settings-widget.cpp" line="503"/>
|
||||
<source>Search</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/settings-widget.cpp" line="103"/>
|
||||
<location filename="../../frontend/control/settings-widget.cpp" line="108"/>
|
||||
<source><h2>Settings</h2></source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/settings-widget.cpp" line="108"/>
|
||||
<location filename="../../frontend/control/settings-widget.cpp" line="113"/>
|
||||
<source><h3>Index State</h3></source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/settings-widget.cpp" line="110"/>
|
||||
<location filename="../../src/settings-widget.cpp" line="112"/>
|
||||
<location filename="../../frontend/control/settings-widget.cpp" line="115"/>
|
||||
<location filename="../../frontend/control/settings-widget.cpp" line="117"/>
|
||||
<source>...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/settings-widget.cpp" line="120"/>
|
||||
<location filename="../../frontend/control/settings-widget.cpp" line="125"/>
|
||||
<source><h3>File Index Settings</h3></source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/settings-widget.cpp" line="122"/>
|
||||
<location filename="../../frontend/control/settings-widget.cpp" line="127"/>
|
||||
<source>Following folders will not be searched. You can set it by adding and removing folders.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/settings-widget.cpp" line="131"/>
|
||||
<location filename="../../frontend/control/settings-widget.cpp" line="136"/>
|
||||
<source>Add ignored folders</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/settings-widget.cpp" line="152"/>
|
||||
<location filename="../../frontend/control/settings-widget.cpp" line="157"/>
|
||||
<source><h3>Search Engine Settings</h3></source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/settings-widget.cpp" line="154"/>
|
||||
<location filename="../../frontend/control/settings-widget.cpp" line="159"/>
|
||||
<source>Please select search engine you preferred.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/settings-widget.cpp" line="167"/>
|
||||
<location filename="../../frontend/control/settings-widget.cpp" line="172"/>
|
||||
<source>baidu</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/settings-widget.cpp" line="169"/>
|
||||
<location filename="../../frontend/control/settings-widget.cpp" line="174"/>
|
||||
<source>sougou</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/settings-widget.cpp" line="171"/>
|
||||
<location filename="../../frontend/control/settings-widget.cpp" line="176"/>
|
||||
<source>360</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/settings-widget.cpp" line="289"/>
|
||||
<location filename="../../frontend/control/settings-widget.cpp" line="299"/>
|
||||
<source>Whether to delete this directory?</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/settings-widget.cpp" line="290"/>
|
||||
<location filename="../../frontend/control/settings-widget.cpp" line="300"/>
|
||||
<source>Yes</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/settings-widget.cpp" line="291"/>
|
||||
<location filename="../../frontend/control/settings-widget.cpp" line="301"/>
|
||||
<source>No</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/settings-widget.cpp" line="349"/>
|
||||
<location filename="../../frontend/control/settings-widget.cpp" line="359"/>
|
||||
<source>Creating ...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/settings-widget.cpp" line="352"/>
|
||||
<location filename="../../frontend/control/settings-widget.cpp" line="362"/>
|
||||
<source>Done</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/settings-widget.cpp" line="360"/>
|
||||
<location filename="../../frontend/control/settings-widget.cpp" line="370"/>
|
||||
<source>Index Entry: %1</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/settings-widget.cpp" line="404"/>
|
||||
<location filename="../../frontend/control/settings-widget.cpp" line="416"/>
|
||||
<source>Directories</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/settings-widget.cpp" line="405"/>
|
||||
<location filename="../../frontend/control/settings-widget.cpp" line="417"/>
|
||||
<source>select blocked folder</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/settings-widget.cpp" line="406"/>
|
||||
<location filename="../../frontend/control/settings-widget.cpp" line="418"/>
|
||||
<source>Select</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/settings-widget.cpp" line="407"/>
|
||||
<location filename="../../frontend/control/settings-widget.cpp" line="419"/>
|
||||
<source>Position: </source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/settings-widget.cpp" line="408"/>
|
||||
<location filename="../../frontend/control/settings-widget.cpp" line="420"/>
|
||||
<source>FileName: </source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/settings-widget.cpp" line="409"/>
|
||||
<location filename="../../frontend/control/settings-widget.cpp" line="421"/>
|
||||
<source>FileType: </source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/settings-widget.cpp" line="410"/>
|
||||
<location filename="../../frontend/control/settings-widget.cpp" line="422"/>
|
||||
<source>Cancel</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/settings-widget.cpp" line="503"/>
|
||||
<location filename="../../frontend/control/settings-widget.cpp" line="487"/>
|
||||
<source>Choosen path is Empty!</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/settings-widget.cpp" line="507"/>
|
||||
<location filename="../../frontend/control/settings-widget.cpp" line="491"/>
|
||||
<source>Choosen path is not in "home"!</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/settings-widget.cpp" line="511"/>
|
||||
<location filename="../../frontend/control/settings-widget.cpp" line="495"/>
|
||||
<source>Its' parent folder has been blocked!</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/settings-widget.cpp" line="515"/>
|
||||
<location filename="../../frontend/control/settings-widget.cpp" line="499"/>
|
||||
<source>Set blocked folder failed!</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/settings-widget.cpp" line="520"/>
|
||||
<location filename="../../frontend/control/settings-widget.cpp" line="504"/>
|
||||
<source>OK</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -364,36 +258,16 @@
|
|||
<context>
|
||||
<name>Zeeker::ShowMoreLabel</name>
|
||||
<message>
|
||||
<location filename="../../src/control/show-more-label.cpp" line="38"/>
|
||||
<location filename="../../src/control/show-more-label.cpp" line="53"/>
|
||||
<location filename="../../src/control/show-more-label.cpp" line="81"/>
|
||||
<location filename="../../frontend/control/list-labels/show-more-label.cpp" line="33"/>
|
||||
<location filename="../../frontend/control/list-labels/show-more-label.cpp" line="50"/>
|
||||
<location filename="../../frontend/control/list-labels/show-more-label.cpp" line="72"/>
|
||||
<source>Show More...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/control/show-more-label.cpp" line="79"/>
|
||||
<location filename="../../frontend/control/list-labels/show-more-label.cpp" line="68"/>
|
||||
<source>Retract</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/control/show-more-label.cpp" line="89"/>
|
||||
<source>Loading</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/control/show-more-label.cpp" line="94"/>
|
||||
<source>Loading.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/control/show-more-label.cpp" line="99"/>
|
||||
<source>Loading..</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/control/show-more-label.cpp" line="104"/>
|
||||
<source>Loading...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
|
|
|
@ -99,7 +99,7 @@
|
|||
<context>
|
||||
<name>QObject</name>
|
||||
<message>
|
||||
<location filename="../../src/main.cpp" line="195"/>
|
||||
<location filename="../../frontend/main.cpp" line="182"/>
|
||||
<source>ukui-search is already running!</source>
|
||||
<translation>ukui-bul zaten çalışıyor!</translation>
|
||||
</message>
|
||||
|
@ -247,90 +247,75 @@
|
|||
<context>
|
||||
<name>Zeeker::ContentWidget</name>
|
||||
<message>
|
||||
<location filename="../../src/content-widget.cpp" line="359"/>
|
||||
<source>Recently Opened</source>
|
||||
<translation type="unfinished">Yeni Açılan</translation>
|
||||
<translation type="obsolete">Yeni Açılan</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/content-widget.cpp" line="395"/>
|
||||
<source>Open Quickly</source>
|
||||
<translation type="unfinished">Hızlı Aç</translation>
|
||||
<translation type="obsolete">Hızlı Aç</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/content-widget.cpp" line="396"/>
|
||||
<source>Commonly Used</source>
|
||||
<translation type="unfinished">Genel olarak kullanılan</translation>
|
||||
<translation type="obsolete">Genel olarak kullanılan</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/content-widget.cpp" line="661"/>
|
||||
<source>Apps</source>
|
||||
<translation type="unfinished">Uygulamalar</translation>
|
||||
<translation type="obsolete">Uygulamalar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/content-widget.cpp" line="663"/>
|
||||
<source>Settings</source>
|
||||
<translation type="unfinished">Ayarlar</translation>
|
||||
<translation type="obsolete">Ayarlar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/content-widget.cpp" line="665"/>
|
||||
<source>Files</source>
|
||||
<translation type="unfinished">Dosyalar</translation>
|
||||
<translation type="obsolete">Dosyalar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/content-widget.cpp" line="667"/>
|
||||
<source>Dirs</source>
|
||||
<translation type="unfinished">Dizinler</translation>
|
||||
<translation type="obsolete">Dizinler</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/content-widget.cpp" line="669"/>
|
||||
<source>File Contents</source>
|
||||
<translation type="unfinished">Dosya İçeriği</translation>
|
||||
<translation type="obsolete">Dosya İçeriği</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/content-widget.cpp" line="671"/>
|
||||
<source>Best Matches</source>
|
||||
<translation type="unfinished">En İyi Eşleşen</translation>
|
||||
<translation type="obsolete">En İyi Eşleşen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/content-widget.cpp" line="673"/>
|
||||
<source>Web Pages</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/content-widget.cpp" line="675"/>
|
||||
<source>Unknown</source>
|
||||
<translation type="unfinished">Bilinmeyen</translation>
|
||||
<translation type="obsolete">Bilinmeyen</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Zeeker::CreateIndexAskDialog</name>
|
||||
<message>
|
||||
<location filename="../../src/create-index-ask-dialog.cpp" line="28"/>
|
||||
<location filename="../../frontend/control/create-index-ask-dialog.cpp" line="40"/>
|
||||
<source>ukui-search</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/create-index-ask-dialog.cpp" line="49"/>
|
||||
<location filename="../../frontend/control/create-index-ask-dialog.cpp" line="66"/>
|
||||
<source>Search</source>
|
||||
<translation type="unfinished">Ara</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/create-index-ask-dialog.cpp" line="74"/>
|
||||
<location filename="../../frontend/control/create-index-ask-dialog.cpp" line="91"/>
|
||||
<source>Creating index can help you getting results quickly, whether to create or not?</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/create-index-ask-dialog.cpp" line="83"/>
|
||||
<location filename="../../frontend/control/create-index-ask-dialog.cpp" line="102"/>
|
||||
<source>Don't remind</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/create-index-ask-dialog.cpp" line="94"/>
|
||||
<location filename="../../frontend/control/create-index-ask-dialog.cpp" line="113"/>
|
||||
<source>No</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/create-index-ask-dialog.cpp" line="96"/>
|
||||
<location filename="../../frontend/control/create-index-ask-dialog.cpp" line="115"/>
|
||||
<source>Yes</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -338,25 +323,43 @@
|
|||
<context>
|
||||
<name>Zeeker::FolderListItem</name>
|
||||
<message>
|
||||
<location filename="../../src/control/folder-list-item.cpp" line="55"/>
|
||||
<location filename="../../frontend/control/settings-widget.cpp" line="538"/>
|
||||
<source>Delete the folder out of blacklist</source>
|
||||
<translation type="unfinished">Klasörü kara listeden silin</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Zeeker::HomePage</name>
|
||||
<message>
|
||||
<location filename="../../frontend/control/stack-pages/home-page.cpp" line="118"/>
|
||||
<source>Open Quickly</source>
|
||||
<translation type="unfinished">Hızlı Aç</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../frontend/control/stack-pages/home-page.cpp" line="120"/>
|
||||
<source>Recently Opened</source>
|
||||
<translation type="unfinished">Yeni Açılan</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../frontend/control/stack-pages/home-page.cpp" line="122"/>
|
||||
<source>Commonly Used</source>
|
||||
<translation type="unfinished">Genel olarak kullanılan</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Zeeker::MainWindow</name>
|
||||
<message>
|
||||
<location filename="../../src/mainwindow.cpp" line="66"/>
|
||||
<location filename="../../frontend/mainwindow.cpp" line="69"/>
|
||||
<source>ukui-search</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/mainwindow.cpp" line="120"/>
|
||||
<location filename="../../frontend/mainwindow.cpp" line="90"/>
|
||||
<source>Global Search</source>
|
||||
<translation type="unfinished">Genel Arama</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/mainwindow.cpp" line="197"/>
|
||||
<location filename="../../frontend/mainwindow.cpp" line="151"/>
|
||||
<source>Search</source>
|
||||
<translation type="unfinished">Ara</translation>
|
||||
</message>
|
||||
|
@ -364,40 +367,30 @@
|
|||
<context>
|
||||
<name>Zeeker::OptionView</name>
|
||||
<message>
|
||||
<location filename="../../src/control/option-view.cpp" line="99"/>
|
||||
<source>Open</source>
|
||||
<translation type="unfinished">Aç</translation>
|
||||
<translation type="obsolete">Aç</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/control/option-view.cpp" line="106"/>
|
||||
<source>Add Shortcut to Desktop</source>
|
||||
<translation type="unfinished">Masaüstüne Kısayol Ekle</translation>
|
||||
<translation type="obsolete">Masaüstüne Kısayol Ekle</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/control/option-view.cpp" line="113"/>
|
||||
<source>Add Shortcut to Panel</source>
|
||||
<translation type="unfinished">Panele Kısayol Ekle</translation>
|
||||
<translation type="obsolete">Panele Kısayol Ekle</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/control/option-view.cpp" line="120"/>
|
||||
<source>Open path</source>
|
||||
<translation type="unfinished">Yolu aç</translation>
|
||||
<translation type="obsolete">Yolu aç</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/control/option-view.cpp" line="127"/>
|
||||
<source>Copy path</source>
|
||||
<translation type="unfinished">Yolu kopyala</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/control/option-view.cpp" line="134"/>
|
||||
<source>Install</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation type="obsolete">Yolu kopyala</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Zeeker::SearchBarHLayout</name>
|
||||
<message>
|
||||
<location filename="../../src/input-box.cpp" line="117"/>
|
||||
<location filename="../../frontend/control/input-box.cpp" line="115"/>
|
||||
<source>Search</source>
|
||||
<translation type="unfinished">Ara</translation>
|
||||
</message>
|
||||
|
@ -405,193 +398,179 @@
|
|||
<context>
|
||||
<name>Zeeker::SearchDetailView</name>
|
||||
<message>
|
||||
<location filename="../../src/control/search-detail-view.cpp" line="211"/>
|
||||
<source>Introduction: %1</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/control/search-detail-view.cpp" line="230"/>
|
||||
<source>Application</source>
|
||||
<translation type="unfinished">Uygulama</translation>
|
||||
<translation type="obsolete">Uygulama</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/control/search-detail-view.cpp" line="365"/>
|
||||
<source>Document</source>
|
||||
<translation type="unfinished">Belge</translation>
|
||||
<translation type="obsolete">Belge</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/control/search-detail-view.cpp" line="486"/>
|
||||
<source>Preview is not avaliable</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/control/search-detail-view.cpp" line="536"/>
|
||||
<source>Path</source>
|
||||
<translation type="unfinished">Yol</translation>
|
||||
<translation type="obsolete">Yol</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/control/search-detail-view.cpp" line="544"/>
|
||||
<source>Last time modified</source>
|
||||
<translation type="unfinished">Son değiştirilme zamanı</translation>
|
||||
<translation type="obsolete">Son değiştirilme zamanı</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Zeeker::SettingsWidget</name>
|
||||
<message>
|
||||
<location filename="../../src/settings-widget.cpp" line="36"/>
|
||||
<location filename="../../frontend/control/settings-widget.cpp" line="35"/>
|
||||
<source>ukui-search-settings</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/settings-widget.cpp" line="74"/>
|
||||
<location filename="../../src/settings-widget.cpp" line="289"/>
|
||||
<location filename="../../src/settings-widget.cpp" line="519"/>
|
||||
<location filename="../../frontend/control/settings-widget.cpp" line="81"/>
|
||||
<location filename="../../frontend/control/settings-widget.cpp" line="299"/>
|
||||
<location filename="../../frontend/control/settings-widget.cpp" line="503"/>
|
||||
<source>Search</source>
|
||||
<translation type="unfinished">Ara</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/settings-widget.cpp" line="103"/>
|
||||
<location filename="../../frontend/control/settings-widget.cpp" line="108"/>
|
||||
<source><h2>Settings</h2></source>
|
||||
<translation type="unfinished"><h2>Ayarlar</h2></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/settings-widget.cpp" line="108"/>
|
||||
<location filename="../../frontend/control/settings-widget.cpp" line="113"/>
|
||||
<source><h3>Index State</h3></source>
|
||||
<translation type="unfinished"><h3>Dizin Durumu</h3></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/settings-widget.cpp" line="110"/>
|
||||
<location filename="../../src/settings-widget.cpp" line="112"/>
|
||||
<location filename="../../frontend/control/settings-widget.cpp" line="115"/>
|
||||
<location filename="../../frontend/control/settings-widget.cpp" line="117"/>
|
||||
<source>...</source>
|
||||
<translation type="unfinished">...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/settings-widget.cpp" line="120"/>
|
||||
<location filename="../../frontend/control/settings-widget.cpp" line="125"/>
|
||||
<source><h3>File Index Settings</h3></source>
|
||||
<translation type="unfinished"><h3>Dosya Dizini Ayarları</h3></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/settings-widget.cpp" line="122"/>
|
||||
<location filename="../../frontend/control/settings-widget.cpp" line="127"/>
|
||||
<source>Following folders will not be searched. You can set it by adding and removing folders.</source>
|
||||
<translation type="unfinished">Aşağıdaki klasörler aranmayacaktır. Klasör ekleyip kaldırarak ayarlayabilirsiniz.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/settings-widget.cpp" line="131"/>
|
||||
<location filename="../../frontend/control/settings-widget.cpp" line="136"/>
|
||||
<source>Add ignored folders</source>
|
||||
<translation type="unfinished">Göz ardı edilen klasörleri ekleyin</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/settings-widget.cpp" line="152"/>
|
||||
<location filename="../../frontend/control/settings-widget.cpp" line="157"/>
|
||||
<source><h3>Search Engine Settings</h3></source>
|
||||
<translation type="unfinished"><h3>SArama Motoru Ayarları</h3></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/settings-widget.cpp" line="154"/>
|
||||
<location filename="../../frontend/control/settings-widget.cpp" line="159"/>
|
||||
<source>Please select search engine you preferred.</source>
|
||||
<translation type="unfinished">Lütfen tercih ettiğiniz arama motorunu seçin.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/settings-widget.cpp" line="167"/>
|
||||
<location filename="../../frontend/control/settings-widget.cpp" line="172"/>
|
||||
<source>baidu</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/settings-widget.cpp" line="169"/>
|
||||
<location filename="../../frontend/control/settings-widget.cpp" line="174"/>
|
||||
<source>sougou</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/settings-widget.cpp" line="171"/>
|
||||
<location filename="../../frontend/control/settings-widget.cpp" line="176"/>
|
||||
<source>360</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/settings-widget.cpp" line="289"/>
|
||||
<location filename="../../frontend/control/settings-widget.cpp" line="299"/>
|
||||
<source>Whether to delete this directory?</source>
|
||||
<translation type="unfinished">Bu dizini silinsin mi?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/settings-widget.cpp" line="290"/>
|
||||
<location filename="../../frontend/control/settings-widget.cpp" line="300"/>
|
||||
<source>Yes</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/settings-widget.cpp" line="291"/>
|
||||
<location filename="../../frontend/control/settings-widget.cpp" line="301"/>
|
||||
<source>No</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/settings-widget.cpp" line="349"/>
|
||||
<location filename="../../frontend/control/settings-widget.cpp" line="359"/>
|
||||
<source>Creating ...</source>
|
||||
<translation type="unfinished">Oluşturuluyor...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/settings-widget.cpp" line="352"/>
|
||||
<location filename="../../frontend/control/settings-widget.cpp" line="362"/>
|
||||
<source>Done</source>
|
||||
<translation type="unfinished">Tamam</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/settings-widget.cpp" line="360"/>
|
||||
<location filename="../../frontend/control/settings-widget.cpp" line="370"/>
|
||||
<source>Index Entry: %1</source>
|
||||
<translation type="unfinished">Dizin Girişi: %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/settings-widget.cpp" line="404"/>
|
||||
<location filename="../../frontend/control/settings-widget.cpp" line="416"/>
|
||||
<source>Directories</source>
|
||||
<translation type="unfinished">Dizinler</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/settings-widget.cpp" line="405"/>
|
||||
<location filename="../../frontend/control/settings-widget.cpp" line="417"/>
|
||||
<source>select blocked folder</source>
|
||||
<translation type="unfinished">engellenen klasörü seç</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/settings-widget.cpp" line="406"/>
|
||||
<location filename="../../frontend/control/settings-widget.cpp" line="418"/>
|
||||
<source>Select</source>
|
||||
<translation type="unfinished">Seç</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/settings-widget.cpp" line="407"/>
|
||||
<location filename="../../frontend/control/settings-widget.cpp" line="419"/>
|
||||
<source>Position: </source>
|
||||
<translation type="unfinished">Pozisyon: </translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/settings-widget.cpp" line="408"/>
|
||||
<location filename="../../frontend/control/settings-widget.cpp" line="420"/>
|
||||
<source>FileName: </source>
|
||||
<translation type="unfinished">Dosya Adı: </translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/settings-widget.cpp" line="409"/>
|
||||
<location filename="../../frontend/control/settings-widget.cpp" line="421"/>
|
||||
<source>FileType: </source>
|
||||
<translation type="unfinished">Dosya Türü: </translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/settings-widget.cpp" line="410"/>
|
||||
<location filename="../../frontend/control/settings-widget.cpp" line="422"/>
|
||||
<source>Cancel</source>
|
||||
<translation type="unfinished">İptal</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/settings-widget.cpp" line="503"/>
|
||||
<location filename="../../frontend/control/settings-widget.cpp" line="487"/>
|
||||
<source>Choosen path is Empty!</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/settings-widget.cpp" line="507"/>
|
||||
<location filename="../../frontend/control/settings-widget.cpp" line="491"/>
|
||||
<source>Choosen path is not in "home"!</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/settings-widget.cpp" line="511"/>
|
||||
<location filename="../../frontend/control/settings-widget.cpp" line="495"/>
|
||||
<source>Its' parent folder has been blocked!</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/settings-widget.cpp" line="515"/>
|
||||
<location filename="../../frontend/control/settings-widget.cpp" line="499"/>
|
||||
<source>Set blocked folder failed!</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/settings-widget.cpp" line="520"/>
|
||||
<location filename="../../frontend/control/settings-widget.cpp" line="504"/>
|
||||
<source>OK</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -599,36 +578,32 @@
|
|||
<context>
|
||||
<name>Zeeker::ShowMoreLabel</name>
|
||||
<message>
|
||||
<location filename="../../src/control/show-more-label.cpp" line="38"/>
|
||||
<location filename="../../src/control/show-more-label.cpp" line="53"/>
|
||||
<location filename="../../src/control/show-more-label.cpp" line="81"/>
|
||||
<location filename="../../frontend/control/list-labels/show-more-label.cpp" line="33"/>
|
||||
<location filename="../../frontend/control/list-labels/show-more-label.cpp" line="50"/>
|
||||
<location filename="../../frontend/control/list-labels/show-more-label.cpp" line="72"/>
|
||||
<source>Show More...</source>
|
||||
<translation type="unfinished">Daha Fazla Göster...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/control/show-more-label.cpp" line="79"/>
|
||||
<location filename="../../frontend/control/list-labels/show-more-label.cpp" line="68"/>
|
||||
<source>Retract</source>
|
||||
<translation type="unfinished">Geri çek</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/control/show-more-label.cpp" line="89"/>
|
||||
<source>Loading</source>
|
||||
<translation type="unfinished">Yükleniyor</translation>
|
||||
<translation type="obsolete">Yükleniyor</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/control/show-more-label.cpp" line="94"/>
|
||||
<source>Loading.</source>
|
||||
<translation type="unfinished">Yükleniyor.</translation>
|
||||
<translation type="obsolete">Yükleniyor.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/control/show-more-label.cpp" line="99"/>
|
||||
<source>Loading..</source>
|
||||
<translation type="unfinished">Yükleniyor..</translation>
|
||||
<translation type="obsolete">Yükleniyor..</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/control/show-more-label.cpp" line="104"/>
|
||||
<source>Loading...</source>
|
||||
<translation type="unfinished">Yükleniyor...</translation>
|
||||
<translation type="obsolete">Yükleniyor...</translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
<context>
|
||||
<name>QObject</name>
|
||||
<message>
|
||||
<location filename="../../src/main.cpp" line="195"/>
|
||||
<location filename="../../frontend/main.cpp" line="182"/>
|
||||
<source>ukui-search is already running!</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
|
@ -12,90 +12,79 @@
|
|||
<context>
|
||||
<name>Zeeker::ContentWidget</name>
|
||||
<message>
|
||||
<location filename="../../src/content-widget.cpp" line="359"/>
|
||||
<source>Recently Opened</source>
|
||||
<translation>最近</translation>
|
||||
<translation type="vanished">最近</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/content-widget.cpp" line="395"/>
|
||||
<source>Open Quickly</source>
|
||||
<translation>快速入口</translation>
|
||||
<translation type="vanished">快速入口</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/content-widget.cpp" line="396"/>
|
||||
<source>Commonly Used</source>
|
||||
<translation>常用</translation>
|
||||
<translation type="vanished">常用</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/content-widget.cpp" line="661"/>
|
||||
<source>Apps</source>
|
||||
<translation>应用</translation>
|
||||
<translation type="vanished">应用</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/content-widget.cpp" line="663"/>
|
||||
<source>Settings</source>
|
||||
<translation>配置项</translation>
|
||||
<translation type="vanished">配置项</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/content-widget.cpp" line="665"/>
|
||||
<source>Files</source>
|
||||
<translation>文件</translation>
|
||||
<translation type="vanished">文件</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/content-widget.cpp" line="667"/>
|
||||
<source>Dirs</source>
|
||||
<translation>文件夹</translation>
|
||||
<translation type="vanished">文件夹</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/content-widget.cpp" line="669"/>
|
||||
<source>File Contents</source>
|
||||
<translation>文件内容</translation>
|
||||
<translation type="vanished">文件内容</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/content-widget.cpp" line="671"/>
|
||||
<source>Best Matches</source>
|
||||
<translation>最佳匹配</translation>
|
||||
<translation type="vanished">最佳匹配</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/content-widget.cpp" line="673"/>
|
||||
<source>Web Pages</source>
|
||||
<translation>网页</translation>
|
||||
<translation type="vanished">网页</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/content-widget.cpp" line="675"/>
|
||||
<source>Unknown</source>
|
||||
<translation>未知</translation>
|
||||
<translation type="vanished">未知</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Zeeker::CreateIndexAskDialog</name>
|
||||
<message>
|
||||
<location filename="../../src/create-index-ask-dialog.cpp" line="28"/>
|
||||
<location filename="../../frontend/control/create-index-ask-dialog.cpp" line="40"/>
|
||||
<source>ukui-search</source>
|
||||
<translation>搜索</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/create-index-ask-dialog.cpp" line="49"/>
|
||||
<location filename="../../frontend/control/create-index-ask-dialog.cpp" line="66"/>
|
||||
<source>Search</source>
|
||||
<translation>搜索</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/create-index-ask-dialog.cpp" line="74"/>
|
||||
<location filename="../../frontend/control/create-index-ask-dialog.cpp" line="91"/>
|
||||
<source>Creating index can help you getting results quickly, whether to create or not?</source>
|
||||
<translation>创建索引可以快速获取搜索结果,是否创建?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/create-index-ask-dialog.cpp" line="83"/>
|
||||
<location filename="../../frontend/control/create-index-ask-dialog.cpp" line="102"/>
|
||||
<source>Don't remind</source>
|
||||
<translation>不再提醒</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/create-index-ask-dialog.cpp" line="94"/>
|
||||
<location filename="../../frontend/control/create-index-ask-dialog.cpp" line="113"/>
|
||||
<source>No</source>
|
||||
<translation>否(N)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/create-index-ask-dialog.cpp" line="96"/>
|
||||
<location filename="../../frontend/control/create-index-ask-dialog.cpp" line="115"/>
|
||||
<source>Yes</source>
|
||||
<translation>是(Y)</translation>
|
||||
</message>
|
||||
|
@ -103,25 +92,43 @@
|
|||
<context>
|
||||
<name>Zeeker::FolderListItem</name>
|
||||
<message>
|
||||
<location filename="../../src/control/folder-list-item.cpp" line="55"/>
|
||||
<location filename="../../frontend/control/settings-widget.cpp" line="538"/>
|
||||
<source>Delete the folder out of blacklist</source>
|
||||
<translation>删除</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Zeeker::HomePage</name>
|
||||
<message>
|
||||
<location filename="../../frontend/control/stack-pages/home-page.cpp" line="118"/>
|
||||
<source>Open Quickly</source>
|
||||
<translation type="unfinished">快速入口</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../frontend/control/stack-pages/home-page.cpp" line="120"/>
|
||||
<source>Recently Opened</source>
|
||||
<translation type="unfinished">最近</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../frontend/control/stack-pages/home-page.cpp" line="122"/>
|
||||
<source>Commonly Used</source>
|
||||
<translation type="unfinished">常用</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Zeeker::MainWindow</name>
|
||||
<message>
|
||||
<location filename="../../src/mainwindow.cpp" line="66"/>
|
||||
<location filename="../../frontend/mainwindow.cpp" line="69"/>
|
||||
<source>ukui-search</source>
|
||||
<translation>搜索</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/mainwindow.cpp" line="120"/>
|
||||
<location filename="../../frontend/mainwindow.cpp" line="90"/>
|
||||
<source>Global Search</source>
|
||||
<translation>搜索</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/mainwindow.cpp" line="197"/>
|
||||
<location filename="../../frontend/mainwindow.cpp" line="151"/>
|
||||
<source>Search</source>
|
||||
<translation>搜索</translation>
|
||||
</message>
|
||||
|
@ -129,40 +136,34 @@
|
|||
<context>
|
||||
<name>Zeeker::OptionView</name>
|
||||
<message>
|
||||
<location filename="../../src/control/option-view.cpp" line="99"/>
|
||||
<source>Open</source>
|
||||
<translation>打开</translation>
|
||||
<translation type="vanished">打开</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/control/option-view.cpp" line="106"/>
|
||||
<source>Add Shortcut to Desktop</source>
|
||||
<translation>添加到桌面快捷方式</translation>
|
||||
<translation type="vanished">添加到桌面快捷方式</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/control/option-view.cpp" line="113"/>
|
||||
<source>Add Shortcut to Panel</source>
|
||||
<translation>添加到任务栏快捷方式</translation>
|
||||
<translation type="vanished">添加到任务栏快捷方式</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/control/option-view.cpp" line="120"/>
|
||||
<source>Open path</source>
|
||||
<translation>打开文件所在路径</translation>
|
||||
<translation type="vanished">打开文件所在路径</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/control/option-view.cpp" line="127"/>
|
||||
<source>Copy path</source>
|
||||
<translation>复制文件路径</translation>
|
||||
<translation type="vanished">复制文件路径</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/control/option-view.cpp" line="134"/>
|
||||
<source>Install</source>
|
||||
<translation>安装</translation>
|
||||
<translation type="vanished">安装</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Zeeker::SearchBarHLayout</name>
|
||||
<message>
|
||||
<location filename="../../src/input-box.cpp" line="117"/>
|
||||
<location filename="../../frontend/control/input-box.cpp" line="115"/>
|
||||
<source>Search</source>
|
||||
<translation>搜索</translation>
|
||||
</message>
|
||||
|
@ -170,193 +171,187 @@
|
|||
<context>
|
||||
<name>Zeeker::SearchDetailView</name>
|
||||
<message>
|
||||
<location filename="../../src/control/search-detail-view.cpp" line="211"/>
|
||||
<source>Introduction: %1</source>
|
||||
<translation>软件介绍: %1</translation>
|
||||
<translation type="vanished">软件介绍: %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/control/search-detail-view.cpp" line="230"/>
|
||||
<source>Application</source>
|
||||
<translation>应用</translation>
|
||||
<translation type="vanished">应用</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/control/search-detail-view.cpp" line="365"/>
|
||||
<source>Document</source>
|
||||
<translation>文件</translation>
|
||||
<translation type="vanished">文件</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/control/search-detail-view.cpp" line="486"/>
|
||||
<source>Preview is not avaliable</source>
|
||||
<translation>当前预览不可用</translation>
|
||||
<translation type="vanished">当前预览不可用</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/control/search-detail-view.cpp" line="536"/>
|
||||
<source>Path</source>
|
||||
<translation>路径</translation>
|
||||
<translation type="vanished">路径</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/control/search-detail-view.cpp" line="544"/>
|
||||
<source>Last time modified</source>
|
||||
<translation>上次修改时间</translation>
|
||||
<translation type="vanished">上次修改时间</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Zeeker::SettingsWidget</name>
|
||||
<message>
|
||||
<location filename="../../src/settings-widget.cpp" line="36"/>
|
||||
<location filename="../../frontend/control/settings-widget.cpp" line="35"/>
|
||||
<source>ukui-search-settings</source>
|
||||
<translation>搜索</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/settings-widget.cpp" line="74"/>
|
||||
<location filename="../../src/settings-widget.cpp" line="289"/>
|
||||
<location filename="../../src/settings-widget.cpp" line="519"/>
|
||||
<location filename="../../frontend/control/settings-widget.cpp" line="81"/>
|
||||
<location filename="../../frontend/control/settings-widget.cpp" line="299"/>
|
||||
<location filename="../../frontend/control/settings-widget.cpp" line="503"/>
|
||||
<source>Search</source>
|
||||
<translation>搜索</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/settings-widget.cpp" line="103"/>
|
||||
<location filename="../../frontend/control/settings-widget.cpp" line="108"/>
|
||||
<source><h2>Settings</h2></source>
|
||||
<translation><h2>设置</h2></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/settings-widget.cpp" line="108"/>
|
||||
<location filename="../../frontend/control/settings-widget.cpp" line="113"/>
|
||||
<source><h3>Index State</h3></source>
|
||||
<translation><h3>索引状态</h3></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/settings-widget.cpp" line="110"/>
|
||||
<location filename="../../src/settings-widget.cpp" line="112"/>
|
||||
<location filename="../../frontend/control/settings-widget.cpp" line="115"/>
|
||||
<location filename="../../frontend/control/settings-widget.cpp" line="117"/>
|
||||
<source>...</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/settings-widget.cpp" line="120"/>
|
||||
<location filename="../../frontend/control/settings-widget.cpp" line="125"/>
|
||||
<source><h3>File Index Settings</h3></source>
|
||||
<translation><h3>文件索引设置</h3></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/settings-widget.cpp" line="122"/>
|
||||
<location filename="../../frontend/control/settings-widget.cpp" line="127"/>
|
||||
<source>Following folders will not be searched. You can set it by adding and removing folders.</source>
|
||||
<translation>搜索将不再查看以下文件夹。通过增加和删除文件夹可进行文件索引设置。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/settings-widget.cpp" line="131"/>
|
||||
<location filename="../../frontend/control/settings-widget.cpp" line="136"/>
|
||||
<source>Add ignored folders</source>
|
||||
<translation>添加文件夹至黑名单</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/settings-widget.cpp" line="152"/>
|
||||
<location filename="../../frontend/control/settings-widget.cpp" line="157"/>
|
||||
<source><h3>Search Engine Settings</h3></source>
|
||||
<translation><h3>搜索引擎设置</h3></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/settings-widget.cpp" line="154"/>
|
||||
<location filename="../../frontend/control/settings-widget.cpp" line="159"/>
|
||||
<source>Please select search engine you preferred.</source>
|
||||
<translation>设置互联网搜索引擎</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/settings-widget.cpp" line="167"/>
|
||||
<location filename="../../frontend/control/settings-widget.cpp" line="172"/>
|
||||
<source>baidu</source>
|
||||
<translation>百度</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/settings-widget.cpp" line="169"/>
|
||||
<location filename="../../frontend/control/settings-widget.cpp" line="174"/>
|
||||
<source>sougou</source>
|
||||
<translation>搜狗</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/settings-widget.cpp" line="171"/>
|
||||
<location filename="../../frontend/control/settings-widget.cpp" line="176"/>
|
||||
<source>360</source>
|
||||
<translation>360</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/settings-widget.cpp" line="289"/>
|
||||
<location filename="../../frontend/control/settings-widget.cpp" line="299"/>
|
||||
<source>Whether to delete this directory?</source>
|
||||
<translation>是否要删除此目录</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/settings-widget.cpp" line="290"/>
|
||||
<location filename="../../frontend/control/settings-widget.cpp" line="300"/>
|
||||
<source>Yes</source>
|
||||
<translation>是(Y)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/settings-widget.cpp" line="291"/>
|
||||
<location filename="../../frontend/control/settings-widget.cpp" line="301"/>
|
||||
<source>No</source>
|
||||
<translation>否(N)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/settings-widget.cpp" line="349"/>
|
||||
<location filename="../../frontend/control/settings-widget.cpp" line="359"/>
|
||||
<source>Creating ...</source>
|
||||
<translation>正在索引</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/settings-widget.cpp" line="352"/>
|
||||
<location filename="../../frontend/control/settings-widget.cpp" line="362"/>
|
||||
<source>Done</source>
|
||||
<translation>索引完成</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/settings-widget.cpp" line="360"/>
|
||||
<location filename="../../frontend/control/settings-widget.cpp" line="370"/>
|
||||
<source>Index Entry: %1</source>
|
||||
<translation>索引项: %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/settings-widget.cpp" line="404"/>
|
||||
<location filename="../../frontend/control/settings-widget.cpp" line="416"/>
|
||||
<source>Directories</source>
|
||||
<translation>文件夹</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/settings-widget.cpp" line="405"/>
|
||||
<location filename="../../frontend/control/settings-widget.cpp" line="417"/>
|
||||
<source>select blocked folder</source>
|
||||
<translation>选择屏蔽文件夹</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/settings-widget.cpp" line="406"/>
|
||||
<location filename="../../frontend/control/settings-widget.cpp" line="418"/>
|
||||
<source>Select</source>
|
||||
<translation>选择</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/settings-widget.cpp" line="407"/>
|
||||
<location filename="../../frontend/control/settings-widget.cpp" line="419"/>
|
||||
<source>Position: </source>
|
||||
<translation>位置:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/settings-widget.cpp" line="408"/>
|
||||
<location filename="../../frontend/control/settings-widget.cpp" line="420"/>
|
||||
<source>FileName: </source>
|
||||
<translation>名称:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/settings-widget.cpp" line="409"/>
|
||||
<location filename="../../frontend/control/settings-widget.cpp" line="421"/>
|
||||
<source>FileType: </source>
|
||||
<translation>类型:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/settings-widget.cpp" line="410"/>
|
||||
<location filename="../../frontend/control/settings-widget.cpp" line="422"/>
|
||||
<source>Cancel</source>
|
||||
<translation>取消</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/settings-widget.cpp" line="503"/>
|
||||
<location filename="../../frontend/control/settings-widget.cpp" line="487"/>
|
||||
<source>Choosen path is Empty!</source>
|
||||
<translation>选择的路径不存在!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/settings-widget.cpp" line="507"/>
|
||||
<location filename="../../frontend/control/settings-widget.cpp" line="491"/>
|
||||
<source>Choosen path is not in "home"!</source>
|
||||
<translation>请选择家目录下的文件夹!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/settings-widget.cpp" line="511"/>
|
||||
<location filename="../../frontend/control/settings-widget.cpp" line="495"/>
|
||||
<source>Its' parent folder has been blocked!</source>
|
||||
<translation>父文件夹已被屏蔽!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/settings-widget.cpp" line="515"/>
|
||||
<location filename="../../frontend/control/settings-widget.cpp" line="499"/>
|
||||
<source>Set blocked folder failed!</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/settings-widget.cpp" line="520"/>
|
||||
<location filename="../../frontend/control/settings-widget.cpp" line="504"/>
|
||||
<source>OK</source>
|
||||
<translation>好的</translation>
|
||||
</message>
|
||||
|
@ -364,36 +359,32 @@
|
|||
<context>
|
||||
<name>Zeeker::ShowMoreLabel</name>
|
||||
<message>
|
||||
<location filename="../../src/control/show-more-label.cpp" line="38"/>
|
||||
<location filename="../../src/control/show-more-label.cpp" line="53"/>
|
||||
<location filename="../../src/control/show-more-label.cpp" line="81"/>
|
||||
<location filename="../../frontend/control/list-labels/show-more-label.cpp" line="33"/>
|
||||
<location filename="../../frontend/control/list-labels/show-more-label.cpp" line="50"/>
|
||||
<location filename="../../frontend/control/list-labels/show-more-label.cpp" line="72"/>
|
||||
<source>Show More...</source>
|
||||
<translation>显示更多...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/control/show-more-label.cpp" line="79"/>
|
||||
<location filename="../../frontend/control/list-labels/show-more-label.cpp" line="68"/>
|
||||
<source>Retract</source>
|
||||
<translation>收起</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/control/show-more-label.cpp" line="89"/>
|
||||
<source>Loading</source>
|
||||
<translation>加载中</translation>
|
||||
<translation type="vanished">加载中</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/control/show-more-label.cpp" line="94"/>
|
||||
<source>Loading.</source>
|
||||
<translation>加载中.</translation>
|
||||
<translation type="vanished">加载中.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/control/show-more-label.cpp" line="99"/>
|
||||
<source>Loading..</source>
|
||||
<translation>加载中..</translation>
|
||||
<translation type="vanished">加载中..</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/control/show-more-label.cpp" line="104"/>
|
||||
<source>Loading...</source>
|
||||
<translation>加载中...</translation>
|
||||
<translation type="vanished">加载中...</translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
|
|
|
@ -17,9 +17,9 @@ DEFINES += QT_DEPRECATED_WARNINGS
|
|||
|
||||
libsearch.depends += libchinese-segmentation
|
||||
src.depends = libsearch
|
||||
frontend.depends = libsearch
|
||||
|
||||
CONFIG += ordered \
|
||||
qt
|
||||
|
||||
QT += widgets
|
||||
|
||||
|
|
Loading…
Reference in New Issue