Browse Source

refactor: remove getInstance from ContentDialog

This UI element probably should never depend on Core, but this is to fix
for a later time.
reviewable/pr6157/r3
sudden6 6 years ago
parent
commit
445340a0e9
No known key found for this signature in database
GPG Key ID: 279509B499E032B9
  1. 5
      src/widget/circlewidget.cpp
  2. 5
      src/widget/circlewidget.h
  3. 4
      src/widget/contentdialog.cpp
  4. 3
      src/widget/contentdialog.h
  5. 5
      src/widget/friendlistwidget.cpp
  6. 4
      src/widget/friendlistwidget.h
  7. 8
      src/widget/widget.cpp

5
src/widget/circlewidget.cpp

@ -40,9 +40,10 @@
QHash<int, CircleWidget*> CircleWidget::circleList; QHash<int, CircleWidget*> CircleWidget::circleList;
CircleWidget::CircleWidget(FriendListWidget* parent, int id) CircleWidget::CircleWidget(const Core &_core, FriendListWidget* parent, int id)
: CategoryWidget(parent) : CategoryWidget(parent)
, id(id) , id(id)
, core{_core}
{ {
setName(Settings::getInstance().getCircleName(id), false); setName(Settings::getInstance().getCircleName(id), false);
circleList[id] = this; circleList[id] = this;
@ -113,7 +114,7 @@ void CircleWidget::contextMenuEvent(QContextMenuEvent* event)
circleList.remove(replacedCircle); circleList.remove(replacedCircle);
} else if (selectedItem == openAction) { } else if (selectedItem == openAction) {
ContentDialog* dialog = new ContentDialog(); ContentDialog* dialog = new ContentDialog(core);
emit newContentDialog(*dialog); emit newContentDialog(*dialog);
for (int i = 0; i < friendOnlineLayout()->count(); ++i) { for (int i = 0; i < friendOnlineLayout()->count(); ++i) {
QWidget* const widget = friendOnlineLayout()->itemAt(i)->widget(); QWidget* const widget = friendOnlineLayout()->itemAt(i)->widget();

5
src/widget/circlewidget.h

@ -22,12 +22,13 @@
#include "categorywidget.h" #include "categorywidget.h"
class ContentDialog; class ContentDialog;
class Core;
class CircleWidget final : public CategoryWidget class CircleWidget final : public CategoryWidget
{ {
Q_OBJECT Q_OBJECT
public: public:
explicit CircleWidget(FriendListWidget* parent, int id); explicit CircleWidget(const Core& _core, FriendListWidget* parent, int id);
~CircleWidget(); ~CircleWidget();
void editName(); void editName();
@ -52,4 +53,6 @@ private:
static QHash<int, CircleWidget*> circleList; static QHash<int, CircleWidget*> circleList;
int id; int id;
const Core& core;
}; };

4
src/widget/contentdialog.cpp

@ -51,7 +51,7 @@ static const int minHeight = 220;
static const QSize minSize(minHeight, minWidget); static const QSize minSize(minHeight, minWidget);
static const QSize defaultSize(720, 400); static const QSize defaultSize(720, 400);
ContentDialog::ContentDialog(QWidget* parent) ContentDialog::ContentDialog(const Core &core, QWidget* parent)
: ActivateDialog(parent, Qt::Window) : ActivateDialog(parent, Qt::Window)
, splitter{new QSplitter(this)} , splitter{new QSplitter(this)}
, friendLayout{new FriendListLayout(this)} , friendLayout{new FriendListLayout(this)}
@ -124,7 +124,7 @@ ContentDialog::ContentDialog(QWidget* parent)
SplitterRestorer restorer(splitter); SplitterRestorer restorer(splitter);
restorer.restore(s.getDialogSplitterState(), size()); restorer.restore(s.getDialogSplitterState(), size());
username = Core::getInstance()->getUsername(); username = core.getUsername();
setAcceptDrops(true); setAcceptDrops(true);

3
src/widget/contentdialog.h

@ -32,6 +32,7 @@ template <typename K, typename V>
class QHash; class QHash;
class ContentLayout; class ContentLayout;
class Core;
class Friend; class Friend;
class FriendChatroom; class FriendChatroom;
class FriendListLayout; class FriendListLayout;
@ -48,7 +49,7 @@ class ContentDialog : public ActivateDialog, public IDialogs
{ {
Q_OBJECT Q_OBJECT
public: public:
explicit ContentDialog(QWidget* parent = nullptr); explicit ContentDialog(const Core& core, QWidget* parent = nullptr);
~ContentDialog() override; ~ContentDialog() override;
FriendWidget* addFriend(std::shared_ptr<FriendChatroom> chatroom, GenericChatForm* form); FriendWidget* addFriend(std::shared_ptr<FriendChatroom> chatroom, GenericChatForm* form);

5
src/widget/friendlistwidget.cpp

@ -97,9 +97,10 @@ qint64 timeUntilTomorrow()
return now.msecsTo(tomorrow); return now.msecsTo(tomorrow);
} }
FriendListWidget::FriendListWidget(Widget* parent, bool groupsOnTop) FriendListWidget::FriendListWidget(const Core &_core, Widget* parent, bool groupsOnTop)
: QWidget(parent) : QWidget(parent)
, groupsOnTop(groupsOnTop) , groupsOnTop(groupsOnTop)
, core{_core}
{ {
listLayout = new FriendListLayout(); listLayout = new FriendListLayout();
setLayout(listLayout); setLayout(listLayout);
@ -671,7 +672,7 @@ CircleWidget* FriendListWidget::createCircleWidget(int id)
assert(circleLayout != nullptr); assert(circleLayout != nullptr);
CircleWidget* circleWidget = new CircleWidget(this, id); CircleWidget* circleWidget = new CircleWidget(core, this, id);
emit connectCircleWidget(*circleWidget); emit connectCircleWidget(*circleWidget);
circleLayout->addSortedWidget(circleWidget); circleLayout->addSortedWidget(circleWidget);
connect(this, &FriendListWidget::onCompactChanged, circleWidget, &CircleWidget::onCompactChanged); connect(this, &FriendListWidget::onCompactChanged, circleWidget, &CircleWidget::onCompactChanged);

4
src/widget/friendlistwidget.h

@ -42,7 +42,7 @@ class FriendListWidget : public QWidget
Q_OBJECT Q_OBJECT
public: public:
using SortingMode = Settings::FriendListSortingMode; using SortingMode = Settings::FriendListSortingMode;
explicit FriendListWidget(Widget* parent, bool groupsOnTop = true); explicit FriendListWidget(const Core& _core, Widget* parent, bool groupsOnTop = true);
~FriendListWidget(); ~FriendListWidget();
void setMode(SortingMode mode); void setMode(SortingMode mode);
SortingMode getMode() const; SortingMode getMode() const;
@ -95,4 +95,6 @@ private:
GenericChatItemLayout groupLayout; GenericChatItemLayout groupLayout;
QVBoxLayout* activityLayout = nullptr; QVBoxLayout* activityLayout = nullptr;
QTimer* dayTimer; QTimer* dayTimer;
const Core& core;
}; };

8
src/widget/widget.cpp

@ -247,7 +247,9 @@ void Widget::init()
ui->searchContactFilterBox->setMenu(filterMenu); ui->searchContactFilterBox->setMenu(filterMenu);
contactListWidget = new FriendListWidget(this, settings.getGroupchatPosition()); core = &profile.getCore();
contactListWidget = new FriendListWidget(*core, this, settings.getGroupchatPosition());
connect(contactListWidget, &FriendListWidget::searchCircle, this, &Widget::searchCircle); connect(contactListWidget, &FriendListWidget::searchCircle, this, &Widget::searchCircle);
connect(contactListWidget, &FriendListWidget::connectCircleWidget, this, connect(contactListWidget, &FriendListWidget::connectCircleWidget, this,
&Widget::connectCircleWidget); &Widget::connectCircleWidget);
@ -278,8 +280,6 @@ void Widget::init()
addFriendForm = new AddFriendForm(core->getSelfId()); addFriendForm = new AddFriendForm(core->getSelfId());
groupInviteForm = new GroupInviteForm; groupInviteForm = new GroupInviteForm;
core = &profile.getCore();
#if UPDATE_CHECK_ENABLED #if UPDATE_CHECK_ENABLED
updateCheck = std::unique_ptr<UpdateCheck>(new UpdateCheck(settings)); updateCheck = std::unique_ptr<UpdateCheck>(new UpdateCheck(settings));
connect(updateCheck.get(), &UpdateCheck::updateAvailable, this, &Widget::onUpdateAvailable); connect(updateCheck.get(), &UpdateCheck::updateAvailable, this, &Widget::onUpdateAvailable);
@ -1803,7 +1803,7 @@ void Widget::onUpdateAvailable()
ContentDialog* Widget::createContentDialog() const ContentDialog* Widget::createContentDialog() const
{ {
ContentDialog* contentDialog = new ContentDialog(); ContentDialog* contentDialog = new ContentDialog(*core);
registerContentDialog(*contentDialog); registerContentDialog(*contentDialog);
return contentDialog; return contentDialog;

Loading…
Cancel
Save