Dooble
Loading...
Searching...
No Matches
dooble_accepted_or_blocked_domains.h
1/*
2** Copyright (c) 2008 - present, Alexis Megas.
3** All rights reserved.
4**
5** Redistribution and use in source and binary forms, with or without
6** modification, are permitted provided that the following conditions
7** are met:
8** 1. Redistributions of source code must retain the above copyright
9** notice, this list of conditions and the following disclaimer.
10** 2. Redistributions in binary form must reproduce the above copyright
11** notice, this list of conditions and the following disclaimer in the
12** documentation and/or other materials provided with the distribution.
13** 3. The name of the author may not be used to endorse or promote products
14** derived from Dooble without specific prior written permission.
15**
16** DOOBLE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
17** IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
18** OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
19** IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
20** INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
21** NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
22** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
23** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
25** DOOBLE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*/
27
28#ifndef dooble_accepted_or_blocked_domains_h
29#define dooble_accepted_or_blocked_domains_h
30
31#include <QFuture>
32#include <QMessageBox>
33#include <QPointer>
34#include <QSqlDatabase>
35#include <QTableWidgetItem>
36#include <QTimer>
37
38#include "dooble_main_window.h"
39#include "ui_dooble_accepted_or_blocked_domains.h"
40
42{
43 Q_OBJECT
44
45 public:
48 bool contains(const QString &domain) const;
49 bool exception(const QUrl &url) const;
50 void abort(void);
51 void accept_or_block_domain(const QString &domain, bool replace = true);
52 void new_exception(const QString &url);
53 void purge(void);
54 void show_normal(QWidget *parent);
55
56 public slots:
57 void show(void);
58
59 protected:
60 void closeEvent(QCloseEvent *event);
61 void keyPressEvent(QKeyEvent *event);
62 void resizeEvent(QResizeEvent *event);
63
64 private:
65 QFuture<void> m_future;
66 QHash<QString, char> m_domains;
67 QHash<QString, char> m_exceptions;
68 QHash<QString, char> m_session_origin_hosts;
69 QPointer<QMessageBox> m_import_dialog;
70 QTimer m_search_timer;
71 Ui_dooble_accepted_or_blocked_domains m_ui;
72 void create_tables(QSqlDatabase &db);
73 void populate(void);
74 void populate_exceptions(void);
75 void save(const QByteArray &authentication_key,
76 const QByteArray &encryption_key,
77 const QHash<QString, char> &hash);
78 void save_blocked_domain(const QString &domain, bool replace, bool state);
79 void save_exception(const QString &url, bool state);
80 void save_settings(void);
81
82 private slots:
83 void slot_add(void);
84 void slot_add_session_url(const QUrl &first_party_url,
85 const QUrl &origin_url);
86 void slot_delete_all_exceptions(void);
87 void slot_delete_selected(void);
88 void slot_delete_selected_exceptions(void);
89 void slot_exceptions_item_changed(QTableWidgetItem *item);
90 void slot_find(void);
91 void slot_import(void);
92 void slot_imported(const qint64 ct);
93 void slot_item_changed(QTableWidgetItem *item);
94 void slot_maximum_entries_changed(int value);
95 void slot_new_exception(const QString &url);
96 void slot_new_exception(void);
97 void slot_populate(void);
98 void slot_radio_button_toggled(bool state);
99 void slot_save(void);
100 void slot_save_selected(void);
101 void slot_search_timer_timeout(void);
102 void slot_splitter_moved(int pos, int index);
103
104 signals:
105 void add_session_url(const QUrl &first_party_url, const QUrl &origin_url);
106 void imported(const qint64 ct);
107 void populated(void);
108};
109
110class dooble_accepted_or_blocked_domains_item: public QTableWidgetItem
111{
112 public:
113 dooble_accepted_or_blocked_domains_item(const QString &text):
114 QTableWidgetItem(text)
115 {
116 }
117
118 dooble_accepted_or_blocked_domains_item(void):QTableWidgetItem()
119 {
120 }
121
122 bool operator < (const QTableWidgetItem &other) const
123 {
124 if(Qt::ItemIsUserCheckable & flags())
125 return checkState() < other.checkState();
126 else
127 return other.text() > text();
128 }
129};
130
131#endif
Definition dooble_accepted_or_blocked_domains.h:111
Definition dooble_accepted_or_blocked_domains.h:42
Definition dooble_main_window.h:35