Add file search internal plugins.

This commit is contained in:
iaom 2021-05-27 21:10:11 +08:00
parent 8e440ccb02
commit c643518001
31 changed files with 916 additions and 602 deletions

View File

@ -130,10 +130,10 @@ void HomePage::createSection(const QString &section_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!";
// }
});
}

View File

@ -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;

View File

@ -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

View File

@ -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"));

View File

@ -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);
// }
/********************测试用数据********************/
}

View File

@ -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;
}

View File

@ -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!";
}

View File

@ -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

View File

@ -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;
}

View File

@ -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;

View File

@ -0,0 +1,6 @@
#include "data-queue.h"
DataQueue::DataQueue()
{
}

View File

@ -0,0 +1,11 @@
#ifndef DATAQUEUE_H
#define DATAQUEUE_H
class DataQueue
{
public:
DataQueue();
};
#endif // DATAQUEUE_H

View File

@ -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;
}
}

View File

@ -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

View File

@ -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 \

View File

@ -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
dir.setFilter(QDir::Dirs | QDir::Files | QDir::NoDotAndDotDot);
dir.setSorting(QDir::DirsFirst);
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,26 +459,22 @@ 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_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());
}
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();
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) {
m_searchResult->enqueue(ri);
SearchManager::m_mutex1.unlock();
} else {
SearchManager::m_mutex1.unlock();
return;
}
}
}
}
}

View File

@ -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;
};
}

View File

@ -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:

View File

@ -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

View File

@ -0,0 +1,8 @@
INCLUDEPATH += $$PWD
INCLUDEPATH += $$PWD/plugininterface
INCLUDEPATH += $$PWD/index
INCLUDEPATH += $$PWD/parser
INCLUDEPATH += $$PWD/pluginmanage
INCLUDEPATH += $$PWD/settingsearch
INCLUDEPATH += $$PWD/appsearch

View File

@ -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

View File

@ -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

View File

@ -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;
};
}

View File

@ -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();

View File

@ -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

View File

@ -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 \

View File

@ -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>

View File

@ -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&apos;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>&lt;h2&gt;Settings&lt;/h2&gt;</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>&lt;h3&gt;Index State&lt;/h3&gt;</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>&lt;h3&gt;File Index Settings&lt;/h3&gt;</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>&lt;h3&gt;Search Engine Settings&lt;/h3&gt;</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 &quot;home&quot;!</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&apos; 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>

View File

@ -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 ılan</translation>
<translation type="obsolete">Yeni ılan</translation>
</message>
<message>
<location filename="../../src/content-widget.cpp" line="395"/>
<source>Open Quickly</source>
<translation type="unfinished">Hızlı </translation>
<translation type="obsolete">Hızlı </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&apos;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ı </translation>
</message>
<message>
<location filename="../../frontend/control/stack-pages/home-page.cpp" line="120"/>
<source>Recently Opened</source>
<translation type="unfinished">Yeni ı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"></translation>
<translation type="obsolete"></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 </translation>
<translation type="obsolete">Yolu </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>&lt;h2&gt;Settings&lt;/h2&gt;</source>
<translation type="unfinished">&lt;h2&gt;Ayarlar&lt;/h2&gt;</translation>
</message>
<message>
<location filename="../../src/settings-widget.cpp" line="108"/>
<location filename="../../frontend/control/settings-widget.cpp" line="113"/>
<source>&lt;h3&gt;Index State&lt;/h3&gt;</source>
<translation type="unfinished">&lt;h3&gt;Dizin Durumu&lt;/h3&gt;</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>&lt;h3&gt;File Index Settings&lt;/h3&gt;</source>
<translation type="unfinished">&lt;h3&gt;Dosya Dizini Ayarları&lt;/h3&gt;</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>&lt;h3&gt;Search Engine Settings&lt;/h3&gt;</source>
<translation type="unfinished">&lt;h3&gt;SArama Motoru Ayarları&lt;/h3&gt;</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 &quot;home&quot;!</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&apos; 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>

View File

@ -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&apos;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>&lt;h2&gt;Settings&lt;/h2&gt;</source>
<translation>&lt;h2&gt;&lt;/h2&gt;</translation>
</message>
<message>
<location filename="../../src/settings-widget.cpp" line="108"/>
<location filename="../../frontend/control/settings-widget.cpp" line="113"/>
<source>&lt;h3&gt;Index State&lt;/h3&gt;</source>
<translation>&lt;h3&gt;&lt;/h3&gt;</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>&lt;h3&gt;File Index Settings&lt;/h3&gt;</source>
<translation>&lt;h3&gt;&lt;/h3&gt;</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>&lt;h3&gt;Search Engine Settings&lt;/h3&gt;</source>
<translation>&lt;h3&gt;&lt;/h3&gt;</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 &quot;home&quot;!</source>
<translation></translation>
</message>
<message>
<location filename="../../src/settings-widget.cpp" line="511"/>
<location filename="../../frontend/control/settings-widget.cpp" line="495"/>
<source>Its&apos; 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>

View File

@ -17,9 +17,9 @@ DEFINES += QT_DEPRECATED_WARNINGS
libsearch.depends += libchinese-segmentation
src.depends = libsearch
frontend.depends = libsearch
CONFIG += ordered \
qt
QT += widgets