Merge pull request #97 from Bombe/focus-host-input
[quassel.git] / src / qtui / settingspages / ignorelistsettingspage.h
index 646b95b..99308ed 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-09 by the Quassel Project                          *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
  *   You should have received a copy of the GNU General Public License     *
  *   along with this program; if not, write to the                         *
  *   Free Software Foundation, Inc.,                                       *
- *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
+ *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.         *
  ***************************************************************************/
 
 #ifndef IGNORELISTSETTINGSPAGE_H
 #define IGNORELISTSETTINGSPAGE_H
 
 #include <QStyledItemDelegate>
+#include <QButtonGroup>
 
 #include "settingspage.h"
 #include "ui_ignorelistsettingspage.h"
@@ -34,59 +35,70 @@ class QPainter;
 class QAbstractItemModel;
 
 // the delegate is used to draw the checkbox in column 0
-class IgnoreListDelegate : public QStyledItemDelegate {
-  Q_OBJECT
+class IgnoreListDelegate : public QStyledItemDelegate
+{
+    Q_OBJECT
 
 public:
-  IgnoreListDelegate(QWidget *parent = 0) : QStyledItemDelegate(parent) {}
-  void paint(QPainter *painter, const QStyleOptionViewItem &option,
-             const QModelIndex &index) const;
-  bool editorEvent(QEvent *event, QAbstractItemModel *model, const QStyleOptionViewItem &option,
-                   const QModelIndex &index);
+    IgnoreListDelegate(QWidget *parent = 0) : QStyledItemDelegate(parent) {}
+    void paint(QPainter *painter, const QStyleOptionViewItem &option,
+        const QModelIndex &index) const;
+    bool editorEvent(QEvent *event, QAbstractItemModel *model, const QStyleOptionViewItem &option,
+        const QModelIndex &index);
 };
 
-class IgnoreListEditDlg : public QDialog {
-  Q_OBJECT
+
+class IgnoreListEditDlg : public QDialog
+{
+    Q_OBJECT
 
 public:
-  IgnoreListEditDlg(int row, const IgnoreListManager::IgnoreListItem &item, QWidget *parent = 0);
-  inline IgnoreListManager::IgnoreListItem ignoreListItem() { return _ignoreListItem; }
+    IgnoreListEditDlg(const IgnoreListManager::IgnoreListItem &item, QWidget *parent = 0, bool enabled = false);
+    inline IgnoreListManager::IgnoreListItem ignoreListItem() { return _ignoreListItem; }
+    void enableOkButton(bool state);
 
 private slots:
-  void widgetHasChanged();
-  void aboutToAccept() { _ignoreListItem = _clonedIgnoreListItem; }
+    void widgetHasChanged();
+    void aboutToAccept() { _ignoreListItem = _clonedIgnoreListItem; }
+
 private:
-  int _selectedRow;
-  IgnoreListManager::IgnoreListItem _ignoreListItem;
-  IgnoreListManager::IgnoreListItem _clonedIgnoreListItem;
-  bool _hasChanged;
-  Ui::IgnoreListEditDlg ui;
+    IgnoreListManager::IgnoreListItem _ignoreListItem;
+    IgnoreListManager::IgnoreListItem _clonedIgnoreListItem;
+    bool _hasChanged;
+    Ui::IgnoreListEditDlg ui;
+    QButtonGroup _typeButtonGroup;
+    QButtonGroup _strictnessButtonGroup;
+    QButtonGroup _scopeButtonGroup;
 };
 
-class IgnoreListSettingsPage : public SettingsPage {
-  Q_OBJECT
+
+class IgnoreListSettingsPage : public SettingsPage
+{
+    Q_OBJECT
 
 public:
-  IgnoreListSettingsPage(QWidget *parent = 0);
-  ~IgnoreListSettingsPage();
-  virtual inline bool hasDefaults() const { return true; }
+    IgnoreListSettingsPage(QWidget *parent = 0);
+    ~IgnoreListSettingsPage();
+    virtual inline bool hasDefaults() const { return false; }
+    virtual inline bool needsCoreConnection() const { return true; }
+    void editIgnoreRule(const QString &ignoreRule);
 
 public slots:
-  void save();
-  void load();
-  void defaults();
+    void save();
+    void load();
+    void defaults();
+    void newIgnoreRule(QString rule = QString());
 
 private slots:
-  void enableDialog(bool);
-  void deleteSelectedIgnoreRule();
-  void editSelectedIgnoreRule();
-  void newIgnoreRule();
-  void selectionChanged(const QItemSelection &selection, const QItemSelection &);
+    void enableDialog(bool);
+    void deleteSelectedIgnoreRule();
+    void editSelectedIgnoreRule();
+    void selectionChanged(const QItemSelection &selection, const QItemSelection &);
 
 private:
-  IgnoreListDelegate *_delegate;
-  Ui::IgnoreListSettingsPage ui;
-  IgnoreListModel _ignoreListModel;
+    IgnoreListDelegate *_delegate;
+    Ui::IgnoreListSettingsPage ui;
+    IgnoreListModel _ignoreListModel;
 };