From 4ef342acedf6a7a2176165c741e05d88c6a253de Mon Sep 17 00:00:00 2001 From: Manuel Nickschas Date: Thu, 25 Feb 2010 13:01:28 +0100 Subject: [PATCH] Avoid circular #includes to shut up lupdate 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 | 33 +++++++++++++++++++++++++++++ src/qtui/chatitem.h | 29 +++++++------------------ src/qtui/chatscene.cpp | 1 + src/qtui/knotificationbackend.cpp | 1 + src/qtui/mainwin.cpp | 2 ++ src/qtui/qtui.cpp | 8 ++++--- src/qtui/qtui.h | 9 ++++---- src/qtui/qtuiapplication.cpp | 3 ++- src/qtui/statusnotifieritemdbus.cpp | 3 ++- 9 files changed, 58 insertions(+), 31 deletions(-) diff --git a/src/qtui/chatitem.cpp b/src/qtui/chatitem.cpp index d1ec8116..05f09443 100644 --- a/src/qtui/chatitem.cpp +++ b/src/qtui/chatitem.cpp @@ -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()) { diff --git a/src/qtui/chatitem.h b/src/qtui/chatitem.h index 1184740c..b6f4cf41 100644 --- a/src/qtui/chatitem.h +++ b/src/qtui/chatitem.h @@ -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 diff --git a/src/qtui/chatscene.cpp b/src/qtui/chatscene.cpp index 3f0b18de..1c1dd90f 100644 --- a/src/qtui/chatscene.cpp +++ b/src/qtui/chatscene.cpp @@ -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" diff --git a/src/qtui/knotificationbackend.cpp b/src/qtui/knotificationbackend.cpp index 7a8b2b0a..f189f9e1 100644 --- a/src/qtui/knotificationbackend.cpp +++ b/src/qtui/knotificationbackend.cpp @@ -28,6 +28,7 @@ #include "client.h" #include "icon.h" #include "iconloader.h" +#include "mainwin.h" #include "networkmodel.h" #include "qtui.h" diff --git a/src/qtui/mainwin.cpp b/src/qtui/mainwin.cpp index 18e0e9c4..c6d4051e 100644 --- a/src/qtui/mainwin.cpp +++ b/src/qtui/mainwin.cpp @@ -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()) { diff --git a/src/qtui/qtui.cpp b/src/qtui/qtui.cpp index 9dbc60af..0ae5ceea 100644 --- a/src/qtui/qtui.cpp +++ b/src/qtui/qtui.cpp @@ -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 #endif -QPointer QtUi::_instance = 0; -QPointer QtUi::_mainWin = 0; +QtUi *QtUi::_instance = 0; +MainWin *QtUi::_mainWin = 0; QList QtUi::_notificationBackends; QList QtUi::_notifications; @@ -67,6 +67,8 @@ QtUi::QtUi() : GraphicalUi() { QtUi::~QtUi() { unregisterAllNotificationBackends(); delete _mainWin; + _mainWin = 0; + _instance = 0; } void QtUi::init() { diff --git a/src/qtui/qtui.h b/src/qtui/qtui.h index 1eb038f2..44c47411 100644 --- a/src/qtui/qtui.h +++ b/src/qtui/qtui.h @@ -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 _instance; - static QPointer _mainWin; + static QtUi *_instance; + static MainWin *_mainWin; static QList _notificationBackends; static QList _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(uiStyle()); } MainWin *QtUi::mainWindow() { return _mainWin; } diff --git a/src/qtui/qtuiapplication.cpp b/src/qtui/qtuiapplication.cpp index 1d80204f..c2157a05 100644 --- a/src/qtui/qtuiapplication.cpp +++ b/src/qtui/qtuiapplication.cpp @@ -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" diff --git a/src/qtui/statusnotifieritemdbus.cpp b/src/qtui/statusnotifieritemdbus.cpp index 9c0487b9..ac2d7732 100644 --- a/src/qtui/statusnotifieritemdbus.cpp +++ b/src/qtui/statusnotifieritemdbus.cpp @@ -19,9 +19,10 @@ * 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 #include -- 2.20.1