#ifndef AUTOTEST_FAKE_UKUI_SEARCH_TASK_H
#define AUTOTEST_FAKE_UKUI_SEARCH_TASK_H

#include <QObject>
#include <QStringList>

#include "ukui-search/data-queue.h"
#include "ukui-search/result-item.h"
#include <ukui-search/search-result-property.h>

namespace UkuiSearch {

namespace FakeSearchStore {
extern QStringList g_resultIds;
extern QString g_lastKeyword;
extern bool g_stopCalled;
void reset();
}

class UkuiSearchTask : public QObject
{
public:
    explicit UkuiSearchTask(QObject *parent = nullptr);
    ~UkuiSearchTask() override;

    DataQueue<ResultItem> *init();
    void initSearchPlugin(SearchProperty::SearchType searchType, const QString &customSearchType = QString());
    bool setResultProperties(SearchProperty::SearchType searchType, SearchResultProperties searchResultProperties);
    void setSearchOnlineApps(bool searchOnlineApps);
    void clearKeyWords();
    void addKeyword(const QString &keyword);
    size_t startSearch(SearchProperty::SearchType searchtype, QString customSearchType = QString());
    void stop();

private:
    DataQueue<ResultItem> m_queue;
};

}

#endif
