/***************************************************************************
- * Copyright (C) 2005-09 by the Quassel Project *
+ * Copyright (C) 2005-2020 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 CHATVIEWSEARCHCONTROLLER_H
#define CHATVIEWSEARCHCONTROLLER_H
-#include <QObject>
+#include <QGraphicsItem>
#include <QHash>
#include <QPointer>
#include <QString>
class QGraphicsItem;
class ChatLine;
-class ChatScene;
class SearchHighlightItem;
-class ChatViewSearchController : public QObject {
- Q_OBJECT
+class ChatViewSearchController : public QObject
+{
+ Q_OBJECT
public:
- ChatViewSearchController(QObject *parent = 0);
+ ChatViewSearchController(QObject* parent = nullptr);
- inline const QString &searchString() const { return _searchString; }
+ inline const QString& searchString() const { return _searchString; }
- void setScene(ChatScene *scene);
+ void setScene(ChatScene* scene);
public slots:
- void setSearchString(const QString &searchString);
- void setCaseSensitive(bool caseSensitive);
- void setSearchSenders(bool searchSenders);
- void setSearchMsgs(bool searchMsgs);
- void setSearchOnlyRegularMsgs(bool searchOnlyRegularMsgs);
+ void setSearchString(const QString& searchString);
+ void setCaseSensitive(bool caseSensitive);
+ void setSearchSenders(bool searchSenders);
+ void setSearchMsgs(bool searchMsgs);
+ void setSearchOnlyRegularMsgs(bool searchOnlyRegularMsgs);
- void highlightNext();
- void highlightPrev();
+ void highlightNext();
+ void highlightPrev();
private slots:
- void sceneDestroyed();
- void updateHighlights(bool reuse = false);
+ void sceneDestroyed();
+ void updateHighlights(bool reuse = false);
- void repositionHighlights();
- void repositionHighlights(ChatLine *line);
+ void repositionHighlights();
+ void repositionHighlights(ChatLine* line);
signals:
- void newCurrentHighlight(QGraphicsItem *highlightItem);
+ void newCurrentHighlight(QGraphicsItem* highlightItem);
private:
- QString _searchString;
- ChatScene *_scene;
- QList<SearchHighlightItem *> _highlightItems;
- int _currentHighlight;
+ QString _searchString;
+ ChatScene* _scene{nullptr};
+ QList<SearchHighlightItem*> _highlightItems;
+ int _currentHighlight{0};
- bool _caseSensitive;
- bool _searchSenders;
- bool _searchMsgs;
- bool _searchOnlyRegularMsgs;
+ bool _caseSensitive{false};
+ bool _searchSenders{false};
+ bool _searchMsgs{true};
+ bool _searchOnlyRegularMsgs{true};
- inline Qt::CaseSensitivity caseSensitive() const { return _caseSensitive ? Qt::CaseSensitive : Qt::CaseInsensitive; }
+ inline Qt::CaseSensitivity caseSensitive() const { return _caseSensitive ? Qt::CaseSensitive : Qt::CaseInsensitive; }
- inline bool checkType(Message::Type type) const { return type & (Message::Plain | Message::Notice | Message::Action); }
+ inline bool checkType(Message::Type type) const { return type & (Message::Plain | Message::Notice | Message::Action); }
- void checkMessagesForHighlight(int start = 0, int end = -1);
- void highlightLine(ChatLine *line);
- void updateHighlights(ChatLine *line);
+ void checkMessagesForHighlight(int start = 0, int end = -1);
+ void highlightLine(ChatLine* line);
+ void updateHighlights(ChatLine* line);
};
-
// Highlight Items
-#include <QGraphicsItem>
-
-class SearchHighlightItem : public QObject, public QGraphicsItem {
- Q_OBJECT
+class SearchHighlightItem : public QObject, public QGraphicsItem
+{
+ Q_OBJECT
+ Q_INTERFACES(QGraphicsItem)
public:
- SearchHighlightItem(QRectF wordRect, QGraphicsItem *parent = 0);
- virtual inline QRectF boundingRect() const { return _boundingRect; }
- void updateGeometry(qreal width, qreal height);
- virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0);
- enum { Type = ChatScene::SearchHighlightType };
- virtual inline int type() const { return Type; }
+ SearchHighlightItem(QRectF wordRect, QGraphicsItem* parent = nullptr);
+ inline QRectF boundingRect() const override { return _boundingRect; }
+ void updateGeometry(qreal width, qreal height);
+ void paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget = nullptr) override;
+ enum
+ {
+ Type = ChatScene::SearchHighlightType
+ };
+ inline int type() const override { return Type; }
- void setHighlighted(bool highlighted);
+ void setHighlighted(bool highlighted);
- static bool firstInLine(QGraphicsItem *item1, QGraphicsItem *item2);
+ static bool firstInLine(QGraphicsItem* item1, QGraphicsItem* item2);
private slots:
- void updateHighlight(qreal value);
+ void updateHighlight(qreal value);
private:
- QRectF _boundingRect;
- bool _highlighted;
- int _alpha;
- QTimeLine _timeLine;
+ QRectF _boundingRect;
+ bool _highlighted;
+ int _alpha;
+ QTimeLine _timeLine;
};
-#endif //CHATVIEWSEARCHCONTROLLER_H
+#endif // CHATVIEWSEARCHCONTROLLER_H