changed notation
This commit is contained in:
+51
-13
@@ -2,16 +2,25 @@
|
||||
#include "QPainter"
|
||||
#include "colorscheme.h"
|
||||
|
||||
#define MIN_THUMB_HEIGHT 10
|
||||
|
||||
ScrollBar::ScrollBar(QWidget *widget)
|
||||
: QWidget(widget)
|
||||
, mutex()
|
||||
, highlights(NULL)
|
||||
, thumbRect()
|
||||
, maximum()
|
||||
, minimum()
|
||||
, largeChange()
|
||||
, smallChange()
|
||||
, value()
|
||||
{
|
||||
resize(16, 100);
|
||||
}
|
||||
|
||||
ScrollBar::~ScrollBar()
|
||||
{
|
||||
auto highlight = highlights;
|
||||
auto highlight = this->highlights;
|
||||
|
||||
while (highlight != NULL) {
|
||||
auto tmp = highlight->next;
|
||||
@@ -23,15 +32,15 @@ ScrollBar::~ScrollBar()
|
||||
void
|
||||
ScrollBar::removeHighlightsWhere(std::function<bool(ScrollBarHighlight &)> func)
|
||||
{
|
||||
mutex.lock();
|
||||
this->mutex.lock();
|
||||
|
||||
ScrollBarHighlight *last = NULL;
|
||||
ScrollBarHighlight *current = highlights;
|
||||
ScrollBarHighlight *current = this->highlights;
|
||||
|
||||
while (current != NULL) {
|
||||
if (func(*current)) {
|
||||
if (last == NULL) {
|
||||
highlights = current->next;
|
||||
this->highlights = current->next;
|
||||
} else {
|
||||
last->next = current->next;
|
||||
}
|
||||
@@ -45,22 +54,22 @@ ScrollBar::removeHighlightsWhere(std::function<bool(ScrollBarHighlight &)> func)
|
||||
}
|
||||
}
|
||||
|
||||
mutex.unlock();
|
||||
this->mutex.unlock();
|
||||
}
|
||||
|
||||
void
|
||||
ScrollBar::addHighlight(ScrollBarHighlight *highlight)
|
||||
{
|
||||
mutex.lock();
|
||||
this->mutex.lock();
|
||||
|
||||
if (highlights == NULL) {
|
||||
highlights = highlight;
|
||||
if (this->highlights == NULL) {
|
||||
this->highlights = highlight;
|
||||
} else {
|
||||
highlight->next = highlights->next;
|
||||
highlights->next = highlight;
|
||||
highlight->next = this->highlights->next;
|
||||
this->highlights->next = highlight;
|
||||
}
|
||||
|
||||
mutex.unlock();
|
||||
this->mutex.unlock();
|
||||
}
|
||||
|
||||
void
|
||||
@@ -69,7 +78,36 @@ ScrollBar::paintEvent(QPaintEvent *)
|
||||
QPainter painter(this);
|
||||
painter.fillRect(rect(), ColorScheme::instance().ScrollbarBG);
|
||||
|
||||
mutex.lock();
|
||||
painter.fillRect(QRect(0, 0, width(), this->buttonHeight),
|
||||
QColor(255, 0, 0));
|
||||
painter.fillRect(
|
||||
QRect(0, height() - this->buttonHeight, width(), this->buttonHeight),
|
||||
QColor(255, 0, 0));
|
||||
|
||||
mutex.unlock();
|
||||
ScrollBarHighlight *highlight = this->highlights;
|
||||
|
||||
this->mutex.lock();
|
||||
|
||||
// do {
|
||||
// painter.fillRect();
|
||||
// } while ((highlight = highlight->next()) != NULL);
|
||||
|
||||
this->mutex.unlock();
|
||||
}
|
||||
|
||||
void
|
||||
ScrollBar::updateScroll()
|
||||
{
|
||||
this->trackHeight = height() - this->buttonHeight - this->buttonHeight -
|
||||
MIN_THUMB_HEIGHT - 1;
|
||||
|
||||
this->thumbRect =
|
||||
QRect(0,
|
||||
(int)(this->value / this->maximum * this->trackHeight) + 1 +
|
||||
this->buttonHeight,
|
||||
width(),
|
||||
(int)(this->largeChange / this->maximum * this->trackHeight) +
|
||||
MIN_THUMB_HEIGHT);
|
||||
|
||||
repaint();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user