12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- /*
- * Scrollable.h, part of VCMI engine
- *
- * Authors: listed in file AUTHORS in main folder
- *
- * License: GNU General Public License v2.0 or later
- * Full text of license available in license.txt file, in main folder
- *
- */
- #pragma once
- #include "../gui/CIntObject.h"
- enum class Orientation
- {
- HORIZONTAL,
- VERTICAL
- };
- /// Simple class that provides scrolling functionality via either mouse wheel or touchscreen gesture
- class Scrollable : public CIntObject
- {
- /// how many elements will be scrolled via one wheel action, default = 1
- int scrollStep;
- /// How far player must move finger/mouse to move slider by 1 via gesture
- int panningDistanceSingle;
- /// How far have player moved finger/mouse via gesture so far.
- int panningDistanceAccumulated;
- Orientation orientation;
- protected:
- Scrollable(int used, Point position, Orientation orientation);
- void gesture(bool on, const Point & initialPosition, const Point & finalPosition) override;
- void wheelScrolled(int distance) override;
- void gesturePanning(const Point & initialPosition, const Point & currentPosition, const Point & lastUpdateDistance) override;
- int getScrollStep() const;
- Orientation getOrientation() const;
- public:
- /// Scrolls view by specified number of items
- virtual void scrollBy(int distance) = 0;
- /// Scrolls view by 1 item, identical to scrollBy(+1)
- virtual void scrollNext();
- /// Scrolls view by 1 item, identical to scrollBy(-1)
- virtual void scrollPrev();
- /// Controls how many items wil be scrolled via one click
- void setScrollStep(int to);
- /// Controls size of panning step needed to move list by 1 item
- void setPanningStep(int to);
- /// Enables or disabled scrolling
- void setScrollingEnabled(bool on);
- };
|