summary refs log tree commit diff
path: root/src/TimelineView.cc
diff options
context:
space:
mode:
authorKonstantinos Sideris <sideris.konstantin@gmail.com>2017-10-27 22:20:33 +0300
committerKonstantinos Sideris <sideris.konstantin@gmail.com>2017-10-27 22:20:33 +0300
commit845228ac6ac549ec9af97ee0da3aaa71168f605e (patch)
treec950a69b9eda9f167444a1db1a1e85a2e0c3c73e /src/TimelineView.cc
parentAdjust scrollbar only after pagination (#94) (diff)
downloadnheko-845228ac6ac549ec9af97ee0da3aaa71168f605e.tar.xz
Add scroll-down button
Diffstat (limited to 'src/TimelineView.cc')
-rw-r--r--src/TimelineView.cc23
1 files changed, 23 insertions, 0 deletions
diff --git a/src/TimelineView.cc b/src/TimelineView.cc

index 2142f546..13209062 100644 --- a/src/TimelineView.cc +++ b/src/TimelineView.cc
@@ -27,6 +27,7 @@ #include "MessageEvent.h" #include "MessageEventContent.h" +#include "FloatingButton.h" #include "ImageItem.h" #include "TimelineItem.h" #include "TimelineView.h" @@ -140,6 +141,16 @@ TimelineView::sliderMoved(int position) if (!scroll_area_->verticalScrollBar()->isVisible()) return; + const int maxScroll = scroll_area_->verticalScrollBar()->maximum(); + const int currentScroll = scroll_area_->verticalScrollBar()->value(); + + if (maxScroll - currentScroll > SCROLL_BAR_GAP) { + scrollDownBtn_->show(); + scrollDownBtn_->raise(); + } else { + scrollDownBtn_->hide(); + } + // The scrollbar is high enough so we can start retrieving old events. if (position < SCROLL_BAR_GAP) { if (isTimelineFinished) @@ -376,6 +387,18 @@ TimelineView::init() QSettings settings; local_user_ = settings.value("auth/user_id").toString(); + QIcon icon; + icon.addFile(":/icons/icons/ui/angle-arrow-down.png"); + scrollDownBtn_ = new FloatingButton(icon, this); + scrollDownBtn_->setBackgroundColor(QColor("#F5F5F5")); + scrollDownBtn_->setForegroundColor(QColor("black")); + scrollDownBtn_->hide(); + + connect(scrollDownBtn_, &QPushButton::clicked, this, [=]() { + const int max = scroll_area_->verticalScrollBar()->maximum(); + scroll_area_->verticalScrollBar()->setValue(max); + }); + top_layout_ = new QVBoxLayout(this); top_layout_->setSpacing(0); top_layout_->setMargin(0);