mirror of https://github.com/Nheko-Reborn/nheko
parent
675f1be777
commit
3fdfc9b69f
@ -1,59 +0,0 @@ |
||||
/*
|
||||
* 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/>.
|
||||
*/ |
||||
|
||||
#include "ScrollBar.h" |
||||
|
||||
ScrollBar::ScrollBar(QScrollArea *area, QWidget *parent) |
||||
: QScrollBar(parent) |
||||
, area_{area} |
||||
{} |
||||
|
||||
void |
||||
ScrollBar::paintEvent(QPaintEvent *) |
||||
{ |
||||
if (!width() && !height()) { |
||||
hide(); |
||||
return; |
||||
} |
||||
|
||||
QPainter p(this); |
||||
p.setRenderHint(QPainter::TextAntialiasing); |
||||
p.setRenderHint(QPainter::Antialiasing); |
||||
p.setRenderHint(QPainter::SmoothPixmapTransform); |
||||
|
||||
p.setPen(Qt::NoPen); |
||||
|
||||
p.setBrush(backgroundColor()); |
||||
QRect backgroundArea(Padding, 0, handleWidth_, height()); |
||||
p.drawRoundedRect(backgroundArea, roundRadius_, roundRadius_); |
||||
|
||||
int areaHeight = area_->height(); |
||||
int widgetHeight = area_->widget()->height(); |
||||
|
||||
double visiblePercentage = (double)areaHeight / (double)widgetHeight; |
||||
int handleHeight = std::max(visiblePercentage * areaHeight, (double)minHandleHeight_); |
||||
|
||||
if (maximum() == 0) { |
||||
return; |
||||
} |
||||
|
||||
int handle_y = (value() * (areaHeight - handleHeight - roundRadius_ / 2)) / maximum(); |
||||
|
||||
p.setBrush(handleColor()); |
||||
QRect handleArea(Padding, handle_y, handleWidth_, handleHeight); |
||||
p.drawRoundedRect(handleArea, roundRadius_, roundRadius_); |
||||
} |
@ -1,54 +0,0 @@ |
||||
/*
|
||||
* 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 <QPainter> |
||||
#include <QScrollArea> |
||||
#include <QScrollBar> |
||||
|
||||
class ScrollBar : public QScrollBar |
||||
{ |
||||
Q_OBJECT |
||||
Q_PROPERTY(QColor backgroundColor READ backgroundColor WRITE setBackgroundColor) |
||||
Q_PROPERTY(QColor handleColor READ handleColor WRITE setHandleColor) |
||||
|
||||
public: |
||||
ScrollBar(QScrollArea *area, QWidget *parent = nullptr); |
||||
|
||||
QColor backgroundColor() const { return bgColor_; } |
||||
void setBackgroundColor(QColor &color) { bgColor_ = color; } |
||||
|
||||
QColor handleColor() const { return handleColor_; } |
||||
void setHandleColor(QColor &color) { handleColor_ = color; } |
||||
|
||||
protected: |
||||
void paintEvent(QPaintEvent *e) override; |
||||
|
||||
private: |
||||
int roundRadius_ = 4; |
||||
int handleWidth_ = 7; |
||||
int minHandleHeight_ = 20; |
||||
|
||||
const int Padding = 4; |
||||
|
||||
QScrollArea *area_; |
||||
QRect handle_; |
||||
|
||||
QColor bgColor_ = QColor(33, 33, 33, 30); |
||||
QColor handleColor_ = QColor(0, 0, 0, 80); |
||||
}; |
Loading…
Reference in new issue