From 4e5c4cb678750b0b5c2132c5ff1622a908630e6f Mon Sep 17 00:00:00 2001 From: TheSpiritXIII Date: Mon, 20 Jul 2015 08:13:51 -0400 Subject: [PATCH] Multi-window: Fix circle modified from dialog window, fix groupchat leave warnings, flip dialog window title --- src/widget/circlewidget.cpp | 85 +++++++++++++++++---------------- src/widget/contentdialog.cpp | 10 ++-- src/widget/friendlistwidget.cpp | 5 +- src/widget/friendwidget.cpp | 8 ++-- 4 files changed, 59 insertions(+), 49 deletions(-) diff --git a/src/widget/circlewidget.cpp b/src/widget/circlewidget.cpp index e59290c5e..a0c83701b 100644 --- a/src/widget/circlewidget.cpp +++ b/src/widget/circlewidget.cpp @@ -92,54 +92,57 @@ void CircleWidget::contextMenuEvent(QContextMenuEvent* event) QAction* selectedItem = menu.exec(mapToGlobal(event->pos())); - if (selectedItem == renameAction) + if (selectedItem) { - editName(); - } - else if (selectedItem == removeAction) - { - FriendListWidget* friendList = static_cast(parentWidget()); - moveFriendWidgets(friendList); - - friendList->removeCircleWidget(this); - - int replacedCircle = Settings::getInstance().removeCircle(id); - - auto circleReplace = circleList.find(replacedCircle); - if (circleReplace != circleList.end()) - circleReplace.value()->updateID(id); - else - assert(true); // This should never happen. - - circleList.remove(replacedCircle); - } - else if (selectedItem == openAction) - { - ContentDialog* dialog = Widget::getInstance()->createContentDialog(); - - for (int i = 0; i < friendOnlineLayout()->count(); ++i) + if (selectedItem == renameAction) { - FriendWidget* friendWidget = dynamic_cast(friendOnlineLayout()->itemAt(i)->widget()); - - if (friendWidget != nullptr) - { - Friend* f = friendWidget->getFriend(); - dialog->addFriend(friendWidget->friendId, f->getDisplayedName()); - } + editName(); } - for (int i = 0; i < friendOfflineLayout()->count(); ++i) + else if (selectedItem == removeAction) { - FriendWidget* friendWidget = dynamic_cast(friendOfflineLayout()->itemAt(i)->widget()); + FriendListWidget* friendList = static_cast(parentWidget()); + moveFriendWidgets(friendList); - if (friendWidget != nullptr) - { - Friend* f = friendWidget->getFriend(); - dialog->addFriend(friendWidget->friendId, f->getDisplayedName()); - } + friendList->removeCircleWidget(this); + + int replacedCircle = Settings::getInstance().removeCircle(id); + + auto circleReplace = circleList.find(replacedCircle); + if (circleReplace != circleList.end()) + circleReplace.value()->updateID(id); + else + assert(true); // This should never happen. + + circleList.remove(replacedCircle); } + else if (selectedItem == openAction) + { + ContentDialog* dialog = Widget::getInstance()->createContentDialog(); - dialog->show(); - dialog->ensureSplitterVisible(); + for (int i = 0; i < friendOnlineLayout()->count(); ++i) + { + FriendWidget* friendWidget = dynamic_cast(friendOnlineLayout()->itemAt(i)->widget()); + + if (friendWidget != nullptr) + { + Friend* f = friendWidget->getFriend(); + dialog->addFriend(friendWidget->friendId, f->getDisplayedName()); + } + } + for (int i = 0; i < friendOfflineLayout()->count(); ++i) + { + FriendWidget* friendWidget = dynamic_cast(friendOfflineLayout()->itemAt(i)->widget()); + + if (friendWidget != nullptr) + { + Friend* f = friendWidget->getFriend(); + dialog->addFriend(friendWidget->friendId, f->getDisplayedName()); + } + } + + dialog->show(); + dialog->ensureSplitterVisible(); + } } setContainerAttribute(Qt::WA_UnderMouse, false); diff --git a/src/widget/contentdialog.cpp b/src/widget/contentdialog.cpp index 39dd275e9..7449cfc76 100644 --- a/src/widget/contentdialog.cpp +++ b/src/widget/contentdialog.cpp @@ -241,8 +241,12 @@ void ContentDialog::removeFriend(int friendId) void ContentDialog::removeGroup(int groupId) { Group* group = GroupList::findGroup(groupId); - disconnect(group, &Group::titleChanged, this, &ContentDialog::updateGroupWidget); - disconnect(group, &Group::userListChanged, this, &ContentDialog::updateGroupWidget); + + if (group) + { + disconnect(group, &Group::titleChanged, this, &ContentDialog::updateGroupWidget); + disconnect(group, &Group::userListChanged, this, &ContentDialog::updateGroupWidget); + } auto iter = groupList.find(groupId); @@ -424,7 +428,7 @@ ContentDialog* ContentDialog::getGroupDialog(int groupId) void ContentDialog::updateTitleUsername(const QString& username) { if (displayWidget != nullptr) - setWindowTitle(username + QStringLiteral(" - ") + displayWidget->getTitle()); + setWindowTitle(displayWidget->getTitle() + QStringLiteral(" - ") + username); else setWindowTitle(username); } diff --git a/src/widget/friendlistwidget.cpp b/src/widget/friendlistwidget.cpp index a9d0a2b02..f74fbda18 100644 --- a/src/widget/friendlistwidget.cpp +++ b/src/widget/friendlistwidget.cpp @@ -389,8 +389,11 @@ void FriendListWidget::addCircleWidget(FriendWidget* friendWidget) } Widget::getInstance()->searchCircle(circleWidget); - circleWidget->editName(); + + if (window()->isActiveWindow()) + circleWidget->editName(); } + reDraw(); } void FriendListWidget::removeCircleWidget(CircleWidget* widget) diff --git a/src/widget/friendwidget.cpp b/src/widget/friendwidget.cpp index 9cc13ea64..9459b3ece 100644 --- a/src/widget/friendwidget.cpp +++ b/src/widget/friendwidget.cpp @@ -105,7 +105,7 @@ void FriendWidget::contextMenuEvent(QContextMenuEvent * event) FriendListWidget *friendList; if (circleWidget == nullptr) - friendList = dynamic_cast(parentWidget()); + friendList = dynamic_cast(FriendList::findFriend(friendId)->getFriendWidget()->parentWidget()); else friendList = dynamic_cast(circleWidget->parentWidget()); @@ -214,7 +214,7 @@ void FriendWidget::contextMenuEvent(QContextMenuEvent * event) circleWidget->updateStatus(); if (friendList != nullptr) - friendList->addCircleWidget(this); + friendList->addCircleWidget(FriendList::findFriend(friendId)->getFriendWidget()); else Settings::getInstance().setFriendCircleID(id, Settings::getInstance().addCircle()); } @@ -226,7 +226,7 @@ void FriendWidget::contextMenuEvent(QContextMenuEvent * event) else if (removeCircleAction != nullptr && selectedItem == removeCircleAction) { if (friendList != nullptr) - friendList->moveWidget(this, FriendList::findFriend(friendId)->getStatus(), true); + friendList->moveWidget(FriendList::findFriend(friendId)->getFriendWidget(), FriendList::findFriend(friendId)->getStatus(), true); else Settings::getInstance().setFriendCircleID(id, -1); @@ -242,7 +242,7 @@ void FriendWidget::contextMenuEvent(QContextMenuEvent * event) if (circle != nullptr) { - circle->addFriendWidget(this, FriendList::findFriend(friendId)->getStatus()); + circle->addFriendWidget(FriendList::findFriend(friendId)->getFriendWidget(), FriendList::findFriend(friendId)->getStatus()); circle->setExpanded(true); Widget::getInstance()->searchCircle(circle); Settings::getInstance().savePersonal();