From 00022355e8dc68f22fcbee72c8dc3f9efc2fbb24 Mon Sep 17 00:00:00 2001 From: Daniel Hrabovcak Date: Mon, 1 Jun 2015 16:17:39 -0400 Subject: [PATCH] Fixed circle compact mode and sort bugs, inline text editing stylesheet --- src/widget/circlewidget.cpp | 7 ++++--- src/widget/friendlistwidget.cpp | 5 +++-- src/widget/friendlistwidget.h | 6 ++++-- src/widget/friendwidget.cpp | 6 ++++-- src/widget/sortingboxlayout.h | 7 ++++--- src/widget/widget.cpp | 4 ++-- ui/chatroomWidgets/circleWidget.css | 5 +++++ 7 files changed, 26 insertions(+), 14 deletions(-) diff --git a/src/widget/circlewidget.cpp b/src/widget/circlewidget.cpp index a5186fbc0..4f469f19f 100644 --- a/src/widget/circlewidget.cpp +++ b/src/widget/circlewidget.cpp @@ -76,9 +76,7 @@ CircleWidget::CircleWidget(FriendListWidget *parent) lineFrame->setObjectName("line"); lineFrame->setFrameShape(QFrame::HLine); lineFrame->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Minimum); - qDebug() << lineFrame->sizeHint(); lineFrame->resize(0, 0); - qDebug() << QSpacerItem(0, 0).sizeHint(); listLayout = new FriendListLayout(); @@ -148,7 +146,10 @@ void CircleWidget::renameCircle() bool CircleWidget::operator<(const CircleWidget& other) const { - return nameLabel->text().localeAwareCompare(other.nameLabel->text()) < 0; + int compareValue = nameLabel->text().localeAwareCompare(other.nameLabel->text()); + if (compareValue == 0) + return this < &other; // Consistent ordering. + return compareValue > 0; } void CircleWidget::onCompactChanged(bool _compact) diff --git a/src/widget/friendlistwidget.cpp b/src/widget/friendlistwidget.cpp index 7872a60fc..68e71c813 100644 --- a/src/widget/friendlistwidget.cpp +++ b/src/widget/friendlistwidget.cpp @@ -75,14 +75,16 @@ void FriendListWidget::addCircleWidget(const QString &name) CircleWidget *circleWidget = new CircleWidget(this); circleWidget->setName(name); circleLayout2.addSortedWidget(circleWidget); + connect(this, &FriendListWidget::onCompactChanged, circleWidget, &CircleWidget::onCompactChanged); connect(circleWidget, &CircleWidget::renameRequested, this, &FriendListWidget::renameCircleWidget); //circleLayout->addWidget(circleWidget); } -CircleWidget* FriendListWidget::addCircleWidget(FriendWidget *friendWidget) +void FriendListWidget::addCircleWidget(FriendWidget *friendWidget) { CircleWidget *circleWidget = new CircleWidget(this); circleLayout2.addSortedWidget(circleWidget); + connect(this, &FriendListWidget::onCompactChanged, circleWidget, &CircleWidget::onCompactChanged); connect(circleWidget, &CircleWidget::renameRequested, this, &FriendListWidget::renameCircleWidget); //circleLayout->addWidget(circleWidget); if (friendWidget != nullptr) @@ -91,7 +93,6 @@ CircleWidget* FriendListWidget::addCircleWidget(FriendWidget *friendWidget) circleWidget->toggle(); } circleWidget->show(); // Avoid flickering. - return circleWidget; } void FriendListWidget::removeCircleWidget(CircleWidget *widget) diff --git a/src/widget/friendlistwidget.h b/src/widget/friendlistwidget.h index 8aced4948..2939c0819 100644 --- a/src/widget/friendlistwidget.h +++ b/src/widget/friendlistwidget.h @@ -49,7 +49,7 @@ public: void addGroupWidget(GroupWidget *widget); void addFriendWidget(FriendWidget *w, Status s, int circleIndex); void addCircleWidget(const QString &name); - CircleWidget *addCircleWidget(FriendWidget *widget = nullptr); + void addCircleWidget(FriendWidget *widget = nullptr); void removeCircleWidget(CircleWidget *widget); void searchChatrooms(const QString &searchString, bool hideOnline = false, bool hideOffline = false, bool hideGroups = false); @@ -60,9 +60,11 @@ public: void reDraw(); +signals: + void onCompactChanged(bool compact); + public slots: void renameCircleWidget(const QString &newName); - //void onCompactChanged(bool compact); void onGroupchatPositionChanged(bool top); void moveWidget(FriendWidget *w, Status s, bool add = false); diff --git a/src/widget/friendwidget.cpp b/src/widget/friendwidget.cpp index dc88d672c..5e946866d 100644 --- a/src/widget/friendwidget.cpp +++ b/src/widget/friendwidget.cpp @@ -150,8 +150,7 @@ void FriendWidget::contextMenuEvent(QContextMenuEvent * event) else if (selectedItem == newCircleAction) { qDebug() << friendList->parentWidget(); - CircleWidget *newcircle = friendList->addCircleWidget(this); - //connect(settingsWidget, &SettingsWidget::compactToggled, newcircle, &CircleWidget::onCompactChanged); + friendList->addCircleWidget(this); } else if (groupActions.contains(selectedItem)) { @@ -164,6 +163,9 @@ void FriendWidget::contextMenuEvent(QContextMenuEvent * event) } else if (circleActions.contains(selectedItem)) { + if (circleWidget != nullptr) + circleWidget->updateStatus(); + CircleWidget* circle = circleActions[selectedItem]; circle->addFriendWidget(this, FriendList::findFriend(friendId)->getStatus()); circle->expand(); diff --git a/src/widget/sortingboxlayout.h b/src/widget/sortingboxlayout.h index 9e4a2b820..1a51c0e4b 100644 --- a/src/widget/sortingboxlayout.h +++ b/src/widget/sortingboxlayout.h @@ -56,6 +56,7 @@ template void SortingBoxLayout::addSortedWidget(T* widget) { int closest = indexOfClosestSortedWidget(widget); + qDebug() << closest; layout->insertWidget(closest, widget); } @@ -97,7 +98,7 @@ QLayout* SortingBoxLayout::getLayout() const template int SortingBoxLayout::indexOfClosestSortedWidget(T* widget) { - int min = 0, max = layout->count() - 1, mid; + int min = 0, max = layout->count(), mid; while (min < max) { mid = (max - min) / 2 + min; @@ -105,9 +106,9 @@ int SortingBoxLayout::indexOfClosestSortedWidget(T* widget) assert(atMid != nullptr); if (*widget < *atMid) - max = mid; - else min = mid + 1; + else + max = mid; } return min; } diff --git a/src/widget/widget.cpp b/src/widget/widget.cpp index f3186be5a..de323af6f 100644 --- a/src/widget/widget.cpp +++ b/src/widget/widget.cpp @@ -222,6 +222,7 @@ void Widget::init() ui->settingsButton->setCheckable(true); setActiveToolMenuButton(Widget::AddButton); + connect(settingsWidget, &SettingsWidget::compactToggled, contactListWidget, &FriendListWidget::onCompactChanged); connect(settingsWidget, &SettingsWidget::groupchatPositionToggled, contactListWidget, &FriendListWidget::onGroupchatPositionChanged); #if (AUTOUPDATE_ENABLED) if (Settings::getInstance().getCheckUpdates()) @@ -1419,8 +1420,7 @@ void Widget::friendListContextMenu(const QPoint &pos) if (chosenAction == addCircleAction) { - CircleWidget *newcircle = contactListWidget->addCircleWidget(); - connect(settingsWidget, &SettingsWidget::compactToggled, newcircle, &CircleWidget::onCompactChanged); + contactListWidget->addCircleWidget(); } } diff --git a/ui/chatroomWidgets/circleWidget.css b/ui/chatroomWidgets/circleWidget.css index d41ccded6..100211dcc 100644 --- a/ui/chatroomWidgets/circleWidget.css +++ b/ui/chatroomWidgets/circleWidget.css @@ -13,6 +13,11 @@ QWidget#circleWidgetContainer:hover background-color: @themeLight; } +QWidget#circleWidgetContainer QLineEdit +{ + background-color: @themeLight; +} + QWidget#circleWidgetContainer > QLabel#status { font: @small;