ukui-search/libsearch/searchinterface/search-controller.h

74 lines
2.3 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#ifndef SEARCHCONTROLLER_H
#define SEARCHCONTROLLER_H
#include <QStringList>
#include <memory>
#include "data-queue.h"
#include "common-defines.h"
//todo: url parser?
namespace UkuiSearch {
class UkuiSearchTask;
class ResultItem;
class SearchControllerPrivate;
/*
*搜索控制用于传递搜索条件搜索唯一ID以及管理队列等。
*/
class SearchController
{
friend class SearchControllerPrivate;
public:
explicit SearchController(std::shared_ptr<SearchController> parent = nullptr);
SearchController(SearchController &) = delete;
SearchController &operator =(const SearchController &) = delete;
~SearchController();
DataQueue<ResultItem>* refreshDataqueue();
size_t refreshSearchId();
DataQueue<ResultItem>* initDataQueue();
void stop();
void addSearchDir(const QString &path);
void setRecurse(bool recurse = true);
void addKeyword(const QString &keyword);
void setActiveKeywordSegmentation(bool active);
void addFileLabel(const QString &label);
void setOnlySearchFile(bool onlySearchFile);
void setOnlySearchDir(bool onlySearchDir);
void setSearchOnlineApps(bool searchOnlineApps);
//以上方法插件请不要调用
//以下方法插件可以调用
size_t getCurrentSearchId();
DataQueue<ResultItem>* getDataQueue();
ResultDataTypes getResultDataType(SearchType searchType);
QStringList getCustomResultDataType(QString customSearchType);
bool beginSearchIdCheck(size_t searchId);
void finishSearchIdCheck();
QStringList getSearchDir();
bool isRecurse();
QStringList getKeyword();
bool isKeywordSegmentationActived();
QStringList getFileLabel();
bool isSearchFileOnly();
bool isSearchDirOnly();
bool isSearchOnlineApps();
void clearAllConditions();
void clearKeyWords();
void clearSearchDir();
void clearFileLabel();
void setPagination(unsigned int first, unsigned int maxResults);
unsigned int first() const;
unsigned int maxResults() const;
bool setResultDataType(SearchType searchType, ResultDataTypes dataType);
bool setCustomResultDataType(QString customSearchType, QStringList dataType);
private:
std::shared_ptr<SearchController> m_parent = nullptr;
SearchControllerPrivate *d = nullptr;
};
}
#endif // SEARCHCONTROLLER_H