feat(settings-widget): Use interface provided by backend.

Description: 调用黑名单和搜索的接口

Log: 调用黑名单和搜索的接口
This commit is contained in:
zhangjiaping 2021-01-08 20:48:20 +08:00
parent 0e2cd05935
commit 1827b8335e
7 changed files with 59 additions and 52 deletions

View File

@ -83,16 +83,17 @@ bool GlobalSettings::setBlockDirs(const QString &path, QString &returnMessage)
QStringList blockDirs = m_block_dirs_settings->allKeys();
for(QString i:blockDirs)
{
if(path.startsWith(i))
// qWarning()<<i;
if(path.right(path.length()-1).startsWith(i))
{
returnMessage = QString(tr("Parent folder has been blocked!"));
return false;
}
if(i.startsWith(path))
if(i.startsWith(path.right(path.length()-1)))
m_block_dirs_settings->remove(i);
}
m_block_dirs_settings->setValue(path,"0");
m_block_dirs_settings->setValue(path.right(path.length()-1),"0");
return true;
}

View File

@ -12,6 +12,9 @@ FileSearcher::FileSearcher(QObject *parent) : QObject(parent)
void FileSearcher::onKeywordSearch(QString keyword)
{
m_search_result_file = new QQueue<QString>;
m_search_result_dir = new QQueue<QString>;
m_search_result_content = new QQueue<QPair<QString,QStringList>>;
//file
QtConcurrent::run([=](){
int begin = 0;

View File

@ -43,9 +43,9 @@ private:
QMap<QString,QStringList> getContentResult(Xapian::MSet &result,std::string &keyWord);
bool isBlocked(QString &path);
QQueue<QString> *m_search_result_file;
QQueue<QString> *m_search_result_dir;
QQueue<QPair<QString,QStringList>> *m_search_result_content;
QQueue<QString> *m_search_result_file = nullptr;
QQueue<QString> *m_search_result_dir = nullptr;
QQueue<QPair<QString,QStringList>> *m_search_result_content = nullptr;
};

View File

@ -233,28 +233,36 @@ void MainWindow::primaryScreenChangedSlot(QScreen *screen)
* @param searchcontent
*/
void MainWindow::searchContent(QString searchcontent){
// QVector<int> types;
// QVector<QStringList> lists;
m_lists.clear();
m_types.clear();
AppMatch * appMatchor = new AppMatch(this);
SettingsMatch * settingMatchor = new SettingsMatch(this);
//测试用数据
//应用与设置搜索
QStringList list;
list = appMatchor->startMatchApp(searchcontent);
// list<<"/usr/share/applications/peony.desktop"<<"/usr/share/applications/ukui-control-center.desktop"<<"/usr/share/applications/wps-office-pdf.desktop";
QStringList list3;
list3 = settingMatchor->startMatchApp(searchcontent);
// list3<<"About/关于/计算机属性"<<"Area/语言和地区/货币单位"<<"Datetime/时间和日期/手动更改时间"<<"Theme/主题/图标主题";
m_types.append(SearchItem::SearchType::Apps);
m_types.append(SearchItem::SearchType::Settings);
m_lists.append(list);
m_lists.append(list3);
//内容搜索测试用数据,每个文件(路径)对应一段文本内容
//文件、文件夹、内容搜索
FileSearcher *search = new FileSearcher();
connect(search, &FileSearcher::resultDir, this, [ = ](QQueue<QString> * dirQueue) {
qWarning()<<"dirFile---";
});
connect(search, &FileSearcher::resultFile, this, [ = ](QQueue<QString> * fileQueue) {
qWarning()<<"resultFile---";
});
connect(search, &FileSearcher::resultContent, this, [ = ](QQueue<QPair<QString,QStringList>> * contentQueue) {
qWarning()<<"resultContent---";
});
search->onKeywordSearch(searchcontent);
//将搜索结果加入列表
m_contentFrame->refreshSearchList(m_types, m_lists, searchcontent);
//iaom--------this part shall be rewrite
// connect(search, &FileSearcher::contentResult, this, [ = ](QMap<QString,QStringList> map) {
// m_types.append(SearchItem::SearchType::Contents);
@ -271,24 +279,9 @@ void MainWindow::searchContent(QString searchcontent){
// m_lists.append(pathlist);
// m_contentFrame->setContentList(contentList);
// });
QTime t1 = QTime::currentTime();
// search->onKeywordSearch(searchcontent);
QTime t2 = QTime::currentTime();
qDebug() << t1;
qDebug() << t2;
// m_types.append(SearchItem::SearchType::Contents);
// QStringList pathlist;
// pathlist<<"/home/zjp/下载/搜索结果.png"<<"/home/zjp/下载/显示不全.mp4"<<"/home/zjp/下载/dmesg.log"<<"/home/zjp/下载/WiFi_AP选择.docx";
// m_lists.append(pathlist);
// QStringList contentList;
// contentList<<"这是搜索结果.png的文件内容"<<"这是显示不全.mp4的文件内容"<<"这是dmesg.log的文件内容"<<"这是WiFi_AP选择.docx的文件内容";
// m_contentFrame->setContentList(contentList);
// m_contentFrame->refreshSearchList(m_types, m_lists);
//文件搜索
FileSearcher *searcher = new FileSearcher();
//iaom--------this part shall be rewrite
// connect(searcher,&FileSearcher::result,[=](QVector<QStringList> resultV){
@ -307,26 +300,12 @@ void MainWindow::searchContent(QString searchcontent){
// QStringList res = IndexGenerator::IndexSearch(searchcontent);
// types.append(SearchItem::SearchType::Files);
// lists.append(res);
//将搜索结果加入列表
// m_contentFrame->refreshSearchList(types, lists);
}
//使用GSetting获取当前窗口应该使用的透明度
double MainWindow::getTransparentData()
{
return GlobalSettings::getInstance()->getValue(TRANSPARENCY_KEY).toDouble();
// if (!m_transparency_gsettings) {
// return 0.7;
// }
// QStringList keys = m_transparency_gsettings->keys();
// if (keys.contains("transparency")) {
// double tp = m_transparency_gsettings->get("transparency").toDouble();
// return tp;
// } else {
// return 0.7;
// }
}
/**

View File

@ -79,6 +79,7 @@ private:
QVector<int> m_types;
QVector<QStringList> m_lists;
QStringList m_dirList;
protected:
void paintEvent(QPaintEvent *);
void initUi();

View File

@ -5,6 +5,7 @@
#include <QDir>
#include <QDebug>
#include "folder-list-item.h"
#include "global-settings.h"
extern void qt_blurImage(QImage &blurImage, qreal radius, bool quality, int transposed);
SettingsWidget::SettingsWidget(QWidget *parent) : QWidget(parent)
@ -12,12 +13,7 @@ SettingsWidget::SettingsWidget(QWidget *parent) : QWidget(parent)
this->setWindowFlags(Qt::CustomizeWindowHint | Qt::FramelessWindowHint);
this->setAttribute(Qt::WA_TranslucentBackground);
initUi();
QStringList list;
list<<"/usr/share/applications"<<"/usr/share/icons"<<
"/usr/libs"<<"/home/zjp/UKUI/SEARCH"<<
"/home/zjp/UKUI/UKCC"<<"/home/zjp/UKUI/SD/intel/ukui-settings-daemon"<<
"/home/zjp/下载"<<"/home/zjp/code";
setupBlackList(list);
setupBlackList(GlobalSettings::getInstance()->getBlockDirs());
}
SettingsWidget::~SettingsWidget()
@ -178,6 +174,7 @@ void SettingsWidget::initUi() {
* @param list
*/
void SettingsWidget::setupBlackList(const QStringList& list) {
clearLayout(m_dirListLyt);
Q_FOREACH(QString path, list) {
FolderListItem * item = new FolderListItem(m_dirListWidget, path);
m_dirListLyt->addWidget(item);
@ -188,6 +185,23 @@ void SettingsWidget::setupBlackList(const QStringList& list) {
m_dirListLyt->addStretch();
}
/**
* @brief SettingsWidget::clearLayout
* @param layout
*/
void SettingsWidget::clearLayout(QLayout * layout) {
if (! layout) return;
QLayoutItem * child;
while ((child = layout->takeAt(0)) != 0) {
if(child->widget())
{
child->widget()->setParent(NULL);
}
delete child;
}
child = NULL;
}
/**
* @brief SettingsWidget::onBtnDelClicked
* @param path
@ -251,9 +265,17 @@ void SettingsWidget::onBtnAddClicked() {
fileDialog->deleteLater();
return;
}
QString selectedDir;
QString selectedDir = 0;
QString returnMessage = 0;
selectedDir = fileDialog->selectedFiles().first();
qDebug()<<selectedDir;
qDebug()<<"Selected a folder in onBtnAddClicked(): "<<selectedDir<<". ->settings-widget.cpp #238";
if (GlobalSettings::getInstance()->setBlockDirs(selectedDir, returnMessage)) {
setupBlackList(GlobalSettings::getInstance()->getBlockDirs());
qDebug()<<"Add block dir in onBtnAddClicked() successed. ->settings-widget.cpp #238";
} else {
qWarning()<<returnMessage;
qDebug()<<"Add block dir in onBtnAddClicked() failed. Message: "<<returnMessage<<" ->settings-widget.cpp #238";
}
}
/**

View File

@ -23,8 +23,9 @@ public:
private:
void initUi();
void setupBlackList(const QStringList&);
void paintEvent(QPaintEvent *event);
void setupBlackList(const QStringList &);
void clearLayout(QLayout *);
void paintEvent(QPaintEvent *);
//标题栏
QVBoxLayout * m_mainLyt = nullptr;
QFrame * m_titleFrame = nullptr;