ui: Added scroll speed setting to preferences

This commit is contained in:
Eberhard Graether
2016-08-18 12:12:19 +02:00
parent 3d40f4ed4e
commit c269493942
20 changed files with 206 additions and 27 deletions
@@ -0,0 +1,35 @@
#include "qt/utility/QtScrollSpeedChangeListener.h"
#include <cmath>
#include <QScrollBar>
#include "settings/ApplicationSettings.h"
QtScrollSpeedChangeListener::QtScrollSpeedChangeListener()
: m_changeScrollSpeedFunctor(std::bind(&QtScrollSpeedChangeListener::doChangeScrollSpeed, this, std::placeholders::_1))
, m_scrollBar(nullptr)
, m_singleStep(1)
{
}
void QtScrollSpeedChangeListener::setScrollBar(QScrollBar* scrollbar)
{
m_scrollBar = scrollbar;
m_singleStep = scrollbar->singleStep();
doChangeScrollSpeed(ApplicationSettings::getInstance()->getScrollSpeed());
}
void QtScrollSpeedChangeListener::handleMessage(MessageScrollSpeedChange* message)
{
m_changeScrollSpeedFunctor(message->scrollSpeed);
}
void QtScrollSpeedChangeListener::doChangeScrollSpeed(float scrollSpeed)
{
if (m_scrollBar)
{
m_scrollBar->setSingleStep(std::ceil(m_singleStep * scrollSpeed));
}
}
@@ -0,0 +1,30 @@
#ifndef QT_SCROLL_SPEED_CHANGE_LISTENER
#define QT_SCROLL_SPEED_CHANGE_LISTENER
#include "utility/messaging/MessageListener.h"
#include "utility/messaging/type/MessageScrollSpeedChange.h"
#include "qt/utility/QtThreadedFunctor.h"
class QScrollBar;
class QtScrollSpeedChangeListener
: public MessageListener<MessageScrollSpeedChange>
{
public:
QtScrollSpeedChangeListener();
void setScrollBar(QScrollBar* scrollbar);
private:
void handleMessage(MessageScrollSpeedChange* message);
void doChangeScrollSpeed(float scrollSpeed);
QtThreadedFunctor<float> m_changeScrollSpeedFunctor;
QScrollBar* m_scrollBar;
int m_singleStep;
};
#endif // QT_SCROLL_SPEED_CHANGE_LISTENER