summary refs log tree commit diff
path: root/include
diff options
context:
space:
mode:
authorKonstantinos Sideris <sideris.konstantin@gmail.com>2017-05-24 22:45:13 +0300
committerKonstantinos Sideris <sideris.konstantin@gmail.com>2017-05-24 22:45:13 +0300
commit251f569a5c2306b711e6b24c43c393f169132df4 (patch)
tree78642150f6b22de214e1231a56f0e80f81e39e1a /include
parentDon't show the landing page when there is an active user (diff)
downloadnheko-251f569a5c2306b711e6b24c43c393f169132df4.tar.xz
Add custom scrollbar on the timeline
Diffstat (limited to 'include')
-rw-r--r--include/TimelineView.h2
-rw-r--r--include/ui/ScrollBar.h53
2 files changed, 55 insertions, 0 deletions
diff --git a/include/TimelineView.h b/include/TimelineView.h

index 7aeb4d47..67ea28b2 100644 --- a/include/TimelineView.h +++ b/include/TimelineView.h
@@ -23,6 +23,7 @@ #include <QVBoxLayout> #include <QWidget> +#include "ScrollBar.h" #include "Sync.h" #include "TimelineItem.h" @@ -97,6 +98,7 @@ private: QVBoxLayout *scroll_layout_; QScrollArea *scroll_area_; + ScrollBar *scrollbar_; QWidget *scroll_widget_; QString last_sender_; diff --git a/include/ui/ScrollBar.h b/include/ui/ScrollBar.h new file mode 100644
index 00000000..483a73c4 --- /dev/null +++ b/include/ui/ScrollBar.h
@@ -0,0 +1,53 @@ +/* + * nheko Copyright (C) 2017 Konstantinos Sideris <siderisk@auth.gr> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#pragma once + +#include <QGraphicsOpacityEffect> +#include <QPainter> +#include <QScrollArea> +#include <QScrollBar> +#include <QTimer> + +class ScrollBar : public QScrollBar +{ + Q_OBJECT +public: + ScrollBar(QScrollArea *area, QWidget *parent = nullptr); + + void fadeIn(); + void fadeOut(); + +protected: + void paintEvent(QPaintEvent *e) override; + void sliderChange(SliderChange change) override; + +private: + int roundRadius_ = 4; + int handleWidth_ = 7; + int minHandleHeight_ = 20; + bool isActive; + + const int AnimationDuration = 300; + const int Padding = 4; + + QGraphicsOpacityEffect *eff; + QTimer hideTimer_; + + QScrollArea *area_; + QRect handle_; +};