File indexing completed on 2024-05-12 15:42:12

0001 /*
0002     This file is part of the KDE project
0003     SPDX-FileCopyrightText: 2002, 2003 Dawit Alemayehu <adawit@kde.org>
0004     SPDX-FileCopyrightText: 1999 Simon Hausmann <hausmann@kde.org>
0005     SPDX-FileCopyrightText: 1999 Yves Arrouye <yves@realnames.com>
0006 
0007     Advanced web shortcuts
0008     SPDX-FileCopyrightText: 2001 Andreas Hochsteger <e9625392@student.tuwien.ac.at>
0009 
0010     SPDX-License-Identifier: GPL-2.0-or-later
0011 */
0012 
0013 #ifndef KURIIKWSFILTERENG_H
0014 #define KURIIKWSFILTERENG_H
0015 
0016 #include "searchproviderregistry.h"
0017 #include <QMap>
0018 #include <QStringList>
0019 #include <QUrl>
0020 
0021 class QTextCodec;
0022 
0023 class SearchProvider;
0024 
0025 class KURISearchFilterEngine
0026 {
0027 public:
0028     typedef QMap<QString, QString> SubstMap;
0029 
0030     KURISearchFilterEngine();
0031     ~KURISearchFilterEngine();
0032 
0033     QByteArray name() const;
0034     char keywordDelimiter() const;
0035     QString defaultSearchEngine() const;
0036     QStringList favoriteEngineList() const;
0037     SearchProvider *webShortcutQuery(const QString &typedString, QString &searchTerm) const;
0038     SearchProvider *autoWebSearchQuery(const QString &typedString, const QString &defaultShortcut = QString()) const;
0039     QUrl formatResult(const QString &url, const QString &cset1, const QString &cset2, const QString &query, bool isMalformed) const;
0040 
0041     SearchProviderRegistry *registry();
0042 
0043     static KURISearchFilterEngine *self();
0044     void loadConfig();
0045 
0046     static QStringList defaultSearchProviders();
0047 
0048 protected:
0049     QUrl formatResult(const QString &url, const QString &cset1, const QString &cset2, const QString &query, bool isMalformed, SubstMap &map) const;
0050 
0051 private:
0052     KURISearchFilterEngine(const KURISearchFilterEngine &) = delete;
0053     KURISearchFilterEngine &operator=(const KURISearchFilterEngine &) = delete;
0054 
0055     QStringList modifySubstitutionMap(SubstMap &map, const QString &query) const;
0056     QString substituteQuery(const QString &url, SubstMap &map, const QString &userquery, QTextCodec *codec) const;
0057 
0058     SearchProviderRegistry m_registry;
0059     QString m_defaultWebShortcut;
0060     QStringList m_preferredWebShortcuts;
0061     bool m_bWebShortcutsEnabled;
0062     bool m_bUseOnlyPreferredWebShortcuts;
0063     char m_cKeywordDelimiter;
0064 };
0065 
0066 #endif // KURIIKWSFILTERENG_H