#ifndef SEARCHCONTROLLER_H #define SEARCHCONTROLLER_H #include #include #include "data-queue.h" #include "search-result-property.h" //todo: url parser? namespace UkuiSearch { class UkuiSearchTask; class ResultItem; class SearchControllerPrivate; /* *搜索控制,用于传递搜索条件,搜索唯一ID,以及管理队列等。 */ class SearchController { public: SearchController(); SearchController(const SearchController &other); SearchController &operator=(const SearchController &other); SearchController &operator=(SearchController &&other) Q_DECL_NOEXCEPT; ~SearchController(); DataQueue* refreshDataqueue(); size_t refreshSearchId(); DataQueue* 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); void setSearchHiddenFiles(bool searchHiddenFiles); void setMaxResultNum(unsigned int maxResults); void setInformNum(int num = 0); //以上方法插件请不要调用 //以下方法插件可以调用 size_t getCurrentSearchId(); DataQueue* getDataQueue(); SearchResultProperties getResultProperties(SearchProperty::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(); bool searchHiddenFiles(); void clearAllConditions(); void clearKeyWords(); void clearSearchDir(); void clearFileLabel(); unsigned int maxResults() const; int informNum() const; bool setResultProperties(SearchProperty::SearchType searchType, UkuiSearch::SearchResultProperties searchResultProperties); void setCustomResultDataType(QString customSearchType, QStringList dataType); private: std::shared_ptr d; }; } #endif // SEARCHCONTROLLER_H