Avoid circular #includes to shut up lupdate
authorManuel Nickschas <sputnick@quassel-irc.org>
Thu, 25 Feb 2010 12:01:28 +0000 (13:01 +0100)
committerManuel Nickschas <sputnick@quassel-irc.org>
Thu, 25 Feb 2010 12:01:28 +0000 (13:01 +0100)
Even though those compiled flawlessly, lupdate complains about circular includes, so avoid
them. Requires un-inlining of some methods, unfortunately. On the upside, we now have a clearly
defined order for deleting gui-related objects on quit :)

src/qtui/chatitem.cpp
src/qtui/chatitem.h
src/qtui/chatscene.cpp
src/qtui/knotificationbackend.cpp
src/qtui/mainwin.cpp
src/qtui/qtui.cpp
src/qtui/qtui.h
src/qtui/qtuiapplication.cpp
src/qtui/statusnotifieritemdbus.cpp

index d1ec811..05f0944 100644 (file)
@@ -48,6 +48,39 @@ ChatItem::ChatItem(const QRectF &boundingRect, ChatLine *parent)
 
 }
 
+ChatLine *ChatItem::chatLine() const {
+  return _parent;
+}
+
+ChatScene *ChatItem::chatScene() const {
+  return chatLine()->chatScene();
+}
+
+const QAbstractItemModel *ChatItem::model() const {
+  return chatLine()->model();
+}
+
+int ChatItem::row() const {
+  return chatLine()->row();
+}
+
+QPointF ChatItem::mapToLine(const QPointF &p) const {
+  return p + pos();
+}
+
+QPointF ChatItem::mapFromLine(const QPointF &p) const {
+  return p - pos();
+}
+
+// relative to the ChatLine
+QPointF ChatItem::mapToScene(const QPointF &p) const {
+  return chatLine()->mapToScene(p /* + pos() */);
+}
+
+QPointF ChatItem::mapFromScene(const QPointF &p) const {
+  return chatLine()->mapFromScene(p) /* - pos() */;
+}
+
 QVariant ChatItem::data(int role) const {
   QModelIndex index = model()->index(row(), column());
   if(!index.isValid()) {
index 1184740..b6f4cf4 100644 (file)
@@ -44,10 +44,10 @@ protected:
   virtual ~ChatItem() {}
 
 public:
-  inline const QAbstractItemModel *model() const;
-  inline ChatLine *chatLine() const;
-  inline ChatScene *chatScene() const;
-  inline int row() const;
+  const QAbstractItemModel *model() const;
+  ChatLine *chatLine() const;
+  ChatScene *chatScene() const;
+  int row() const;
   virtual ChatLineModel::ColumnType column() const = 0;
 
   // The boundingRect() is relative to the parent ChatLine
@@ -58,10 +58,10 @@ public:
   inline qreal x() const;
   inline qreal y() const;
 
-  inline QPointF mapToLine(const QPointF &) const;
-  inline QPointF mapFromLine(const QPointF &) const;
-  inline QPointF mapToScene(const QPointF &) const;
-  inline QPointF mapFromScene(const QPointF &) const;
+  QPointF mapToLine(const QPointF &) const;
+  QPointF mapFromLine(const QPointF &) const;
+  QPointF mapToScene(const QPointF &) const;
+  QPointF mapFromScene(const QPointF &) const;
 
   void initLayoutHelper(QTextLayout *layout, QTextOption::WrapMode, Qt::Alignment = Qt::AlignLeft) const;
   virtual inline void initLayout(QTextLayout *layout) const {
@@ -276,15 +276,8 @@ private:
 
 /*************************************************************************************************/
 
-#include "chatline.h"  /* avoid circular includes */
-
 // Inlines
 
-ChatLine *ChatItem::chatLine() const { return _parent; }
-ChatScene *ChatItem::chatScene() const { return chatLine()->chatScene(); }
-const QAbstractItemModel *ChatItem::model() const { return chatLine()->model(); }
-int ChatItem::row() const { return chatLine()->row(); }
-
 QRectF ChatItem::boundingRect() const { return _boundingRect; }
 qreal ChatItem::width() const { return _boundingRect.width(); }
 qreal ChatItem::height() const { return _boundingRect.height(); }
@@ -292,10 +285,4 @@ QPointF ChatItem::pos() const { return _boundingRect.topLeft(); }
 qreal ChatItem::x() const { return pos().x(); }
 qreal ChatItem::y() const { return pos().y(); }
 
-QPointF ChatItem::mapToLine(const QPointF &p) const { return p + pos(); }
-QPointF ChatItem::mapFromLine(const QPointF &p) const { return p - pos(); }
-// relative to the ChatLine
-QPointF ChatItem::mapToScene(const QPointF &p) const { return chatLine()->mapToScene(p /* + pos() */); }
-QPointF ChatItem::mapFromScene(const QPointF &p) const { return chatLine()->mapFromScene(p) /* - pos() */; }
-
 #endif
index 3f0b18d..1c1dd90 100644 (file)
@@ -46,6 +46,7 @@
 #include "columnhandleitem.h"
 #include "contextmenuactionprovider.h"
 #include "iconloader.h"
+#include "mainwin.h"
 #include "messagefilter.h"
 #include "qtui.h"
 #include "qtuistyle.h"
index 7a8b2b0..f189f9e 100644 (file)
@@ -28,6 +28,7 @@
 #include "client.h"
 #include "icon.h"
 #include "iconloader.h"
+#include "mainwin.h"
 #include "networkmodel.h"
 #include "qtui.h"
 
index 18e0e9c..c6d4051 100644 (file)
@@ -136,6 +136,8 @@ MainWin::MainWin(QWidget *parent)
     _awayLog(0),
     _layoutLoaded(false)
 {
+  setAttribute(Qt::WA_DeleteOnClose, false);  // we delete the mainwin manually
+
   QtUiSettings uiSettings;
   QString style = uiSettings.value("Style", QString()).toString();
   if(!style.isEmpty()) {
index 9dbc60a..0ae5cee 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-09 by the Quassel Project                          *
+ *   Copyright (C) 2005-2010 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
@@ -37,8 +37,8 @@
 #  include <QX11Info>
 #endif
 
-QPointer<QtUi> QtUi::_instance = 0;
-QPointer<MainWin> QtUi::_mainWin = 0;
+QtUi *QtUi::_instance = 0;
+MainWin *QtUi::_mainWin = 0;
 QList<AbstractNotificationBackend *> QtUi::_notificationBackends;
 QList<AbstractNotificationBackend::Notification> QtUi::_notifications;
 
@@ -67,6 +67,8 @@ QtUi::QtUi() : GraphicalUi() {
 QtUi::~QtUi() {
   unregisterAllNotificationBackends();
   delete _mainWin;
+  _mainWin = 0;
+  _instance = 0;
 }
 
 void QtUi::init() {
index 1eb038f..44c4741 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-09 by the Quassel Project                          *
+ *   Copyright (C) 2005-2010 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
@@ -24,7 +24,6 @@
 #include "graphicalui.h"
 
 #include "abstractnotificationbackend.h"
-#include "mainwin.h"
 #include "qtuistyle.h"
 
 class MainWin;
@@ -78,15 +77,15 @@ private slots:
   void useSystemTrayChanged(const QVariant &);
 
 private:
-  static QPointer<QtUi> _instance;
-  static QPointer<MainWin> _mainWin;
+  static QtUi *_instance;
+  static MainWin *_mainWin;
   static QList<AbstractNotificationBackend *> _notificationBackends;
   static QList<AbstractNotificationBackend::Notification> _notifications;
 
   bool _useSystemTray;
 };
 
-QtUi *QtUi::instance() { return _instance ? _instance.data() : new QtUi(); }
+QtUi *QtUi::instance() { return _instance ? _instance : new QtUi(); }
 QtUiStyle *QtUi::style() { return qobject_cast<QtUiStyle*>(uiStyle()); }
 MainWin *QtUi::mainWindow() { return _mainWin; }
 
index 1d80204..c2157a0 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-09 by the Quassel Project                          *
+ *   Copyright (C) 2005-2010 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
@@ -28,6 +28,7 @@
 
 #include "client.h"
 #include "cliparser.h"
+#include "mainwin.h"
 #include "qtui.h"
 #include "qtuisettings.h"
 
index 9c0487b..ac2d773 100644 (file)
  *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
  ***************************************************************************/
 
+#include "mainwin.h"
+#include "qtui.h"
 #include "statusnotifieritemdbus.h"
 #include "statusnotifieritem.h"
-#include "qtui.h"
 
 #include <QDBusConnection>
 #include <QPixmap>