diff --git a/CMakeLists.txt b/CMakeLists.txt index e2337fed..e45c3560 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -149,10 +149,7 @@ include_directories(include/ui) include_directories(include/events) include_directories(include/events/messages) -qt5_wrap_ui (UI_HEADERS - forms/ChatPage.ui - forms/RoomList.ui -) +qt5_wrap_ui (UI_HEADERS forms/ChatPage.ui) qt5_wrap_cpp(MOC_HEADERS include/ChatPage.h diff --git a/forms/RoomList.ui b/forms/RoomList.ui deleted file mode 100644 index b56a75ab..00000000 --- a/forms/RoomList.ui +++ /dev/null @@ -1,157 +0,0 @@ - - - RoomList - - - - 0 - 0 - 423 - 500 - - - - - 0 - 0 - - - - - 0 - 500 - - - - Form - - - QWidget { -background-color: #f8fbfe; -color: #ebebeb; -} - -QScrollBar:vertical { - background-color: #f8fbfe; - width: 8px; - border-radius: 20px; - margin: 0px 2px 0 2px; -} - -QScrollBar::handle:vertical { - border-radius: 50px; - background-color: #d6dde3; -} - -QScrollBar::add-line:vertical { - border: none; - background: none; -} - -QScrollBar::sub-line:vertical { - border: none; - background: none; -} - - - - 0 - - - 0 - - - 0 - - - 0 - - - 0 - - - - - 0 - - - - - - 0 - 0 - - - - - 0 - 0 - - - - - 16777215 - 16777215 - - - - Qt::ScrollBarAlwaysOff - - - QAbstractScrollArea::AdjustToContents - - - true - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter - - - - - 0 - 0 - 419 - 496 - - - - - 0 - 0 - - - - - 0 - - - 0 - - - 0 - - - 0 - - - 0 - - - - - 0 - - - - - - - - - - - - - - diff --git a/include/RoomList.h b/include/RoomList.h index 34067430..489083d1 100644 --- a/include/RoomList.h +++ b/include/RoomList.h @@ -17,9 +17,9 @@ #pragma once -#include +#include #include -#include +#include #include #include "MatrixClient.h" @@ -27,11 +27,6 @@ #include "RoomState.h" #include "Sync.h" -namespace Ui -{ -class RoomList; -} - class RoomList : public QWidget { Q_OBJECT @@ -57,7 +52,10 @@ public slots: private: void calculateUnreadMessageCount(); - Ui::RoomList *ui; + QVBoxLayout *topLayout_; + QVBoxLayout *contentsLayout_; + QScrollArea *scrollArea_; + QWidget *scrollAreaContents_; QMap> rooms_; diff --git a/src/RoomList.cc b/src/RoomList.cc index 58053bbd..c3fe16a2 100644 --- a/src/RoomList.cc +++ b/src/RoomList.cc @@ -15,11 +15,8 @@ * along with this program. If not, see . */ -#include "ui_RoomList.h" - #include #include -#include #include #include "RoomInfoListItem.h" @@ -28,16 +25,39 @@ RoomList::RoomList(QSharedPointer client, QWidget *parent) : QWidget(parent) - , ui(new Ui::RoomList) , client_(client) { - ui->setupUi(this); - ui->scrollVerticalLayout->addStretch(1); - setStyleSheet( "QWidget { border: none; }" "QScrollBar:vertical { width: 4px; margin: 2px 0; }"); + QSizePolicy sizePolicy(QSizePolicy::Preferred, QSizePolicy::Expanding); + sizePolicy.setHorizontalStretch(0); + sizePolicy.setVerticalStretch(0); + setSizePolicy(sizePolicy); + + setMinimumSize(QSize(0, 500)); + + topLayout_ = new QVBoxLayout(this); + topLayout_->setSpacing(0); + topLayout_->setMargin(0); + + scrollArea_ = new QScrollArea(this); + scrollArea_->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + scrollArea_->setSizeAdjustPolicy(QAbstractScrollArea::AdjustToContents); + scrollArea_->setWidgetResizable(true); + scrollArea_->setAlignment(Qt::AlignLeading | Qt::AlignLeft | Qt::AlignVCenter); + + scrollAreaContents_ = new QWidget(); + + contentsLayout_ = new QVBoxLayout(scrollAreaContents_); + contentsLayout_->setSpacing(0); + contentsLayout_->setMargin(0); + contentsLayout_->addStretch(1); + + scrollArea_->setWidget(scrollAreaContents_); + topLayout_->addWidget(scrollArea_); + connect(client_.data(), SIGNAL(roomAvatarRetrieved(const QString &, const QPixmap &)), this, @@ -46,7 +66,6 @@ RoomList::RoomList(QSharedPointer client, QWidget *parent) RoomList::~RoomList() { - delete ui; } void RoomList::clear() @@ -87,13 +106,13 @@ void RoomList::setInitialRooms(const QMap &states) if (!state.avatar.content().url().toString().isEmpty()) client_->fetchRoomAvatar(room_id, state.avatar.content().url()); - RoomInfoListItem *room_item = new RoomInfoListItem(state, room_id, ui->scrollArea); + RoomInfoListItem *room_item = new RoomInfoListItem(state, room_id, scrollArea_); connect(room_item, &RoomInfoListItem::clicked, this, &RoomList::highlightSelectedRoom); rooms_.insert(room_id, QSharedPointer(room_item)); - int pos = ui->scrollVerticalLayout->count() - 1; - ui->scrollVerticalLayout->insertWidget(pos, room_item); + int pos = contentsLayout_->count() - 1; + contentsLayout_->insertWidget(pos, room_item); } if (rooms_.isEmpty())