File indexing completed on 2024-05-19 05:00:54

0001 /*
0002     kcookiesmanagement.h - Cookies manager
0003 
0004     SPDX-FileCopyrightText: 2000-2001 Marco Pinelli <pinmc@orion.it>
0005     SPDX-FileCopyrightText: 2000-2001 Dawit Alemayehu <adawit@kde.org>
0006 
0007     SPDX-License-Identifier: GPL-2.0-or-later
0008 */
0009 
0010 #ifndef KCOOKIESMANAGEMENT_H
0011 #define KCOOKIESMANAGEMENT_H
0012 
0013 #include <QHash>
0014 #include <QList>
0015 #include <QStringList>
0016 #include <QTreeWidget>
0017 #include <QNetworkCookie>
0018 
0019 #include "ui_kcookiesmanagement.h"
0020 #include <KCModule>
0021 
0022 struct CookieProp;
0023 
0024 class CookieListViewItem : public QTreeWidgetItem
0025 {
0026 public:
0027     CookieListViewItem(QTreeWidget *parent, const QString &dom);
0028     CookieListViewItem(QTreeWidgetItem *parent, CookieProp *cookie);
0029     ~CookieListViewItem() override;
0030 
0031     QString domain() const
0032     {
0033         return mDomain;
0034     }
0035     CookieProp *cookie() const
0036     {
0037         return mCookie;
0038     }
0039     CookieProp *leaveCookie();
0040     void setCookiesLoaded()
0041     {
0042         mCookiesLoaded = true;
0043     }
0044     bool cookiesLoaded() const
0045     {
0046         return mCookiesLoaded;
0047     }
0048 
0049 private:
0050     void init(CookieProp *cookie, const QString &domain = QString(), bool cookieLoaded = false);
0051     CookieProp *mCookie;
0052     QString mDomain;
0053     bool mCookiesLoaded;
0054 };
0055 
0056 class KCookiesManagement : public KCModule
0057 {
0058     Q_OBJECT
0059 
0060 public:
0061     //TODO KF6: when dropping compatibility with KF5, remove QVariantList argument
0062     explicit KCookiesManagement(QObject *parent, const KPluginMetaData &md={}, const QVariantList &args={});
0063     ~KCookiesManagement() override;
0064 
0065     void load() override;
0066     void save() override;
0067     void defaults() override;
0068 
0069 #if QT_VERSION_MAJOR < 6
0070     void setNeedsSave(bool needs) {
0071         m_needsSave = needs;
0072         emit changed(needs);
0073     }
0074     bool needsSave() const {return m_needsSave;}
0075 #endif
0076 
0077 private Q_SLOTS:
0078     void deleteCurrent();
0079     void deleteAll();
0080     void reload();
0081     void listCookiesForDomain(QTreeWidgetItem *);
0082     void updateForItem(QTreeWidgetItem *);
0083     void showConfigPolicyDialog();
0084 
0085 private:
0086     void reset(bool deleteAll = false);
0087     bool cookieDetails(CookieProp *cookie);
0088     void clearCookieDetails();
0089 
0090     typedef QSet<QNetworkCookie> CookieSet;
0091     static CookieSet getCookies();
0092 
0093     bool mDeleteAllFlag;
0094     QWidget *mMainWidget;
0095     Ui::KCookiesManagementUI mUi;
0096 
0097     QStringList mDeletedDomains;
0098     typedef QList<CookieProp *> CookiePropList;
0099     QHash<QString, CookiePropList> mDeletedCookies;
0100 #if QT_VERSION_MAJOR < 6
0101     bool m_needsSave = false;
0102 #endif
0103 };
0104 
0105 #endif // KCOOKIESMANAGEMENT_H