Remove Scrollbar

remotes/origin/HEAD
Konstantinos Sideris 6 years ago
parent 675f1be777
commit 3fdfc9b69f
  1. 2
      CMakeLists.txt
  2. 3
      src/timeline/TimelineView.h
  3. 59
      src/ui/ScrollBar.cpp
  4. 54
      src/ui/ScrollBar.h

@ -200,7 +200,6 @@ set(SRC_FILES
src/ui/FloatingButton.cpp
src/ui/Label.cpp
src/ui/OverlayModal.cpp
src/ui/ScrollBar.cpp
src/ui/SnackBar.cpp
src/ui/RaisedButton.cpp
src/ui/Ripple.cpp
@ -328,7 +327,6 @@ qt5_wrap_cpp(MOC_HEADERS
src/ui/FloatingButton.h
src/ui/Menu.h
src/ui/OverlayWidget.h
src/ui/ScrollBar.h
src/ui/SnackBar.h
src/ui/RaisedButton.h
src/ui/Ripple.h

@ -22,6 +22,7 @@
#include <QList>
#include <QQueue>
#include <QScrollArea>
#include <QScrollBar>
#include <QStyle>
#include <QStyleOption>
#include <QTimer>
@ -31,7 +32,6 @@
#include "MatrixClient.h"
#include "timeline/TimelineItem.h"
#include "ui/ScrollBar.h"
class StateKeeper
{
@ -291,7 +291,6 @@ private:
QVBoxLayout *scroll_layout_;
QScrollArea *scroll_area_;
ScrollBar *scrollbar_;
QWidget *scroll_widget_;
QString firstSender_;

@ -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…
Cancel
Save