File indexing completed on 2024-04-28 03:55:43

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 "kuriikwsfiltereng_private_export.h"
0017 #include "searchproviderregistry_p.h"
0018 #include <QMap>
0019 #include <QObject>
0020 #include <QStringList>
0021 #include <QUrl>
0022 
0023 class QStringEncoder;
0024 class SearchProvider;
0025 
0026 namespace KIO
0027 {
0028 class KURIIKWSFILTERENG_PRIVATE_EXPORT KURISearchFilterEngine : public QObject
0029 {
0030     Q_OBJECT
0031 public:
0032     typedef QMap<QString, QString> SubstMap;
0033 
0034     QByteArray name() const;
0035     char keywordDelimiter() const;
0036     QString defaultSearchEngine() const;
0037     QStringList favoriteEngineList() const;
0038     SearchProvider *webShortcutQuery(const QString &typedString, QString &searchTerm) const;
0039     SearchProvider *autoWebSearchQuery(const QString &typedString, const QString &defaultShortcut = QString()) const;
0040     QUrl formatResult(const QString &url, const QString &cset1, const QString &cset2, const QString &query, bool isMalformed) const;
0041 
0042     SearchProviderRegistry *registry();
0043 
0044     static KURISearchFilterEngine *self();
0045     static QStringList defaultSearchProviders();
0046 
0047 protected:
0048     QUrl formatResult(const QString &url, const QString &cset1, const QString &cset2, const QString &query, bool isMalformed, SubstMap &map) const;
0049 
0050 private:
0051     KURISearchFilterEngine();
0052     ~KURISearchFilterEngine();
0053 
0054     Q_SLOT void configure();
0055     Q_DISABLE_COPY_MOVE(KURISearchFilterEngine)
0056 
0057     QStringList modifySubstitutionMap(SubstMap &map, const QString &query) const;
0058     QString substituteQuery(const QString &url, SubstMap &map, const QString &userquery, QStringEncoder &codec) const;
0059 
0060     SearchProviderRegistry m_registry;
0061     QString m_defaultWebShortcut;
0062     QStringList m_preferredWebShortcuts;
0063     bool m_bWebShortcutsEnabled;
0064     bool m_bUseOnlyPreferredWebShortcuts;
0065     char m_cKeywordDelimiter;
0066     bool m_reloadRegistry = false; // We would load it twice otherwise
0067 };
0068 }
0069 
0070 #endif // KURIIKWSFILTERENG_H