test: Add build system support and a main function for unit tests
[quassel.git] / src / client / bufferviewoverlay.h
index 483a330..4f3ab46 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-08 by the Quassel Project                          *
+ *   Copyright (C) 2005-2018 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 BUFFERVIEWOVERLAY_H
-#define BUFFERVIEWOVERLAY_H
+#pragma once
+
+#include "client-export.h"
 
 #include <QObject>
 
 class BufferViewConfig;
 class ClientBufferViewConfig;
 
-class BufferViewOverlay : public QObject {
-  Q_OBJECT
+class CLIENT_EXPORT BufferViewOverlay : public QObject
+{
+    Q_OBJECT
 
 public:
-  BufferViewOverlay(QObject *parent = 0);
+    BufferViewOverlay(QObject *parent = nullptr);
+
+    inline const QSet<int> &bufferViewIds() { return _bufferViewIds; }
+    bool allNetworks();
 
-  inline bool allNetworks() const { return _networkIds.contains(NetworkId()); }
+    const QSet<NetworkId> &networkIds();
+    const QSet<BufferId> &bufferIds();
+    const QSet<BufferId> &removedBufferIds();
+    const QSet<BufferId> &tempRemovedBufferIds();
 
-  inline const QSet<NetworkId> &networkIds() const { return _networkIds; }
-  inline const QSet<BufferId> &bufferIds() const { return _buffers; }
-  inline const QSet<BufferId> &removedBufferIds() const { return _removedBuffers; }
-  inline const QSet<BufferId> &tempRemovedBufferIds() const { return _tempRemovedBuffers; }
+    int allowedBufferTypes();
+    int minimumActivity();
 
-  inline bool addBuffersAutomatically() const { return _addBuffersAutomatically; }
-  inline bool hideInactiveBuffers() const { return _hideInactiveBuffers; }
-  inline int allowedBufferTypes() const { return _allowedBufferTypes; }
-  inline int minimumActivity() const { return _minimumActivity; }
+    inline bool isInitialized() { return _uninitializedViewCount == 0; }
 
 public slots:
-  void addView(int viewId);
-  void removeView(int viewId);
+    void addView(int viewId);
+    void removeView(int viewId);
 
-  // updates propagated from the actual views
-  void update();
+    void reset();
+    void save();
+    void restore();
+
+    // updates propagated from the actual views
+    void update();
 
 signals:
-  void hasChanged();
+    void hasChanged();
+    void initDone();
 
 protected:
-  virtual void customEvent(QEvent *event);
+    void customEvent(QEvent *event) override;
 
 private slots:
-  void viewInitialized();
-  void viewInitialized(BufferViewConfig *config);
+    void viewInitialized();
+    void viewInitialized(BufferViewConfig *config);
 
 private:
-  void updateHelper();
-  bool _aboutToUpdate;
+    void updateHelper();
+    QSet<BufferId> filterBuffersByConfig(const QList<BufferId> &buffers, const BufferViewConfig *config);
 
-  QSet<int> _bufferViewIds;
+    bool _aboutToUpdate{false};
 
-  QSet<NetworkId> _networkIds;
+    QSet<int> _bufferViewIds;
+    int _uninitializedViewCount{0};
 
-  bool _addBuffersAutomatically;
-  bool _hideInactiveBuffers;
-  int _allowedBufferTypes;
-  int _minimumActivity;
+    QSet<NetworkId> _networkIds;
+    int _allowedBufferTypes{0};
+    int _minimumActivity{0};
 
-  QSet<BufferId> _buffers;
-  QSet<BufferId> _removedBuffers;
-  QSet<BufferId> _tempRemovedBuffers;
+    QSet<BufferId> _buffers;
+    QSet<BufferId> _removedBuffers;
+    QSet<BufferId> _tempRemovedBuffers;
 
-  static const int _updateEventId;
+    static const int _updateEventId;
 };
-
-#endif //BUFFERVIEWOVERLAY_H