|
Aurore
A Switch-like interface for your app, on every screen
|
#include <aurore/cadran/view/scroll_view.hpp>
Public Member Functions | |
| ScrollView () | |
| void | draw (NVGcontext *vg, float x, float y, float width, float height, aurore::Style style, aurore::FrameContext *ctx) override |
| void | willAppear (bool resetState) override |
| void | onChildFocusGained (aurore::View *directChild, aurore::View *focusedView) override |
| aurore::View * | getNextFocus (aurore::FocusDirection direction, aurore::View *currentView) override |
| aurore::View * | getDefaultFocus () override |
| void | onFocusLost () override |
Public Member Functions inherited from aurore::ScrollingFrame | |
| ScrollingFrame () | |
| An empty frame, NATURAL scrolling. | |
| ~ScrollingFrame () | |
| void | onFocusGained () override |
| void | onChildFocusLost (View *directChild, View *focusedView) override |
| void | addView (View *view) override |
| void | removeView (View *view, bool free=true) override |
| void | onLayout () override |
| void | setPadding (float top, float right, float bottom, float left) override |
| void | setPaddingTop (float top) override |
| void | setPaddingRight (float right) override |
| void | setPaddingBottom (float bottom) override |
| void | setPaddingLeft (float left) override |
| View * | getParentNavigationDecision (View *from, View *newFocus, FocusDirection direction) override |
| enum Sound | getFocusSound () override |
| Rect | getVisibleFrame () |
| The part of the content in view: the local frame moved down by the scroll offset. | |
| void | setContentView (View *view) |
| void | setScrollingBehavior (ScrollingBehavior behavior) |
| float | getContentOffsetY () const |
| void | setContentOffsetY (float value, bool animated) |
| void | setScrollingIndicatorAutoHide (bool autoHide) |
| On by default: the indicator shows while scrolling, then fades. | |
| void | setScrollingIndicatorVisible (bool visible) |
| Whether the scroll bar on the right is drawn at all. | |
Public Member Functions inherited from aurore::Box | |
| Box (Axis flexDirection) | |
An empty box laying its children out along flexDirection. | |
| Box () | |
| An empty row. | |
| ~Box () | |
| Deletes the children (those a ptrLock() holds go to the deletion pool). | |
| View * | hitTest (Point point) override |
| void | willDisappear (bool resetState) override |
| void | onWindowSizeChanged () override |
| void | onThemeChanged () override |
| void | onParentFocusGained (View *focusedView) override |
| void | onParentFocusLost (View *focusedView) override |
| bool | applyXMLAttribute (std::string name, std::string value) override |
| virtual void | addView (View *view, size_t position) |
| virtual void | clearViews (bool free=true) |
| virtual void | setPadding (float padding) |
| float | getPaddingTop () |
| float | getPaddingRight () |
| float | getPaddingBottom () |
| float | getPaddingLeft () |
| virtual void | setGap (float gap) |
| float | getGap () |
| void | setRowGap (float gap) |
| float | getRowGap () |
| void | setColumnGap (float gap) |
| float | getColumnGap () |
| void | setJustifyContent (JustifyContent justify) |
| void | setAlignItems (AlignItems alignment) |
| void | setDirection (Direction direction) |
| void | setAxis (Axis axis) |
| The axis the children are laid out along. | |
| Axis | getAxis () const |
| void | setWrap (Wrap wrap) |
| Wrap | getWrap () const |
| std::vector< View * > & | getChildren () |
| The children, in order. The box owns them: it deletes them with itself. | |
| virtual void | getCullingBounds (float *top, float *right, float *bottom, float *left) |
| void | forwardXMLAttribute (std::string attributeName, View *target) |
| void | forwardXMLAttribute (std::string attributeName, View *target, std::string targetAttributeName) |
| View * | getView (std::string id) override |
| void | setLastFocusedView (View *view) |
| The child the focus goes back to when the box gets it again. | |
| void | setDefaultFocusedIndex (int index) |
| The child that takes the focus first (negative values are ignored). | |
| size_t | getDefaultFocusedIndex () const |
| View * | getLastFocusedView () const |
| See setLastFocusedView(). | |
| virtual bool | isChildFocused () |
| Whether the focus is on one of the children, at any depth. | |
Public Member Functions inherited from aurore::View | |
| void | setScale (float scale) |
| void | setScaleX (float scale) |
| void | setScaleY (float scale) |
| float | getScaleX () const |
| float | getScaleY () const |
| View () | |
| virtual | ~View () |
| void | setBackground (ViewBackground background) |
| How the view's background is drawn: none, the sidebar's, the backdrop, a plain colour or a gradient. | |
| void | setBackgroundLinearGradient (NVGcolor start, NVGcolor end, ViewBackground direction=ViewBackground::VERTICAL_LINEAR) |
| void | shakeHighlight (FocusDirection direction) |
Shakes the focus highlight towards direction: there is nothing to go to there. | |
| Rect | getFrame () |
| The view's position and size on the screen, after layout (getX(), getY(), getWidth(), getHeight()). | |
| float | getX () |
| The position on the screen, in layout units: the parents' positions and translations added. | |
| float | getY () |
| Rect | getLocalFrame () |
| The position and size in the parent, as laid out by Yoga. | |
| float | getLocalX () |
| float | getLocalY () |
| float | getWidth () |
The size as laid out by Yoga; the height without the collapse when includeCollapse is false. | |
| float | getHeight (bool includeCollapse=true) |
| virtual void | invalidate () |
| void | setWidth (float width) |
| void | setHeight (float height) |
| void | setSize (Size size) |
| void | setDimensions (float width, float height) |
| void | setWidthPercentage (float percentage) |
| void | setHeightPercentage (float percentage) |
| void | setMinWidth (float minWidth) |
| void | setMinHeight (float minHeight) |
| void | setMinWidthPercentage (float percentage) |
| void | setMinHeightPercentage (float percentage) |
| void | setMaxWidth (float maxWidth) |
| void | setMaxHeight (float maxHeight) |
| void | setMaxWidthPercentage (float percentage) |
| void | setMaxHeightPercentage (float percentage) |
| void | setGrow (float grow) |
| void | setShrink (float shrink) |
| void | setMargins (float top, float right, float bottom, float left) |
| void | setMarginTop (float top) |
| void | setMarginRight (float right) |
| float | getMarginRight () |
| float | getMarginLeft () |
| void | setMarginBottom (float right) |
| void | setMarginLeft (float left) |
| void | setVisibility (Visibility visibility) |
| Visibility | getVisibility () |
| void | setPositionTop (float pos) |
| void | setPositionRight (float pos) |
| void | setPositionBottom (float pos) |
| void | setPositionLeft (float pos) |
| void | setPositionTopPercentage (float percentage) |
| void | setPositionRightPercentage (float percentage) |
| void | setPositionBottomPercentage (float percentage) |
| void | setPositionLeftPercentage (float percentage) |
| void | setPositionType (PositionType type) |
| void | setId (std::string id) |
| const std::string & | getId () const |
| void | setAlignSelf (AlignSelf align) |
| void | setBoxSizing (BoxSizing sizing) |
| void | setLineColor (NVGcolor color) |
| void | setLineTop (float thickness) |
| void | setLineRight (float thickness) |
| void | setLineBottom (float thickness) |
| void | setLineLeft (float thickness) |
| void | setBackgroundColor (NVGcolor color) |
| void | setBorderColor (NVGcolor color) |
| ViewBackground | getBackground () const |
| NVGcolor | getBackgroundColor () const |
| NVGcolor | getBorderColor () const |
| void | setBorderThickness (float thickness) |
| float | getBorderThickness () |
| void | setCornerRadius (float radius) |
| void | setCornerRadius (float topLeft, float topRight, float bottomRight, float bottomLeft) |
| float | getCornerRadius () |
| void | setThemeArea (ThemeArea area) |
| ThemeArea | getThemeArea () const |
| void | setShadowType (ShadowType type) |
| void | setShadowVisibility (bool visible) |
| void | setHideHighlightBackground (bool hide) |
| void | setHideHighlightBorder (bool hide) |
| void | setHideHighlight (bool hide) |
| void | setHideClickAnimation (bool hide) |
| No click animation when the view is clicked. | |
| void | setHighlightPadding (float padding) |
| void | setHighlightCornerRadius (float radius) |
| virtual View * | getNearestView (std::string id) |
| virtual void | applyXMLAttributes (tinyxml2::XMLElement *element) |
| void | registerAutoXMLAttribute (std::string name, AutoAttributeHandler handler) |
| void | registerPercentageXMLAttribute (std::string name, FloatAttributeHandler handler) |
| void | registerFloatXMLAttribute (std::string name, FloatAttributeHandler handler) |
| void | registerStringXMLAttribute (std::string name, StringAttributeHandler handler) |
| void | registerColorXMLAttribute (std::string name, ColorAttributeHandler handler) |
| void | registerBoolXMLAttribute (std::string name, BoolAttributeHandler handler) |
| void | registerFilePathXMLAttribute (std::string name, FilePathAttributeHandler handler) |
| bool | isXMLAttributeValid (std::string attributeName) |
| void | setMaximumAllowedXMLElements (unsigned max) |
| unsigned | getMaximumAllowedXMLElements () |
| void | setInFadeAnimation (bool translucent) |
| void | setFocusable (bool focusable) |
| bool | isFocusable () |
| Whether the view takes the focus: focusable, and visible. | |
| void | removeFromSuperView (bool free=true) |
| void | setFocusSound (enum Sound sound) |
| void | detach () |
| bool | isDetached () |
| See detach(). | |
| void | setDetachedPosition (float x, float y) |
| void | setDetachedPositionX (float x) |
| void | setDetachedPositionY (float y) |
| Point | getDetachedPosition () const |
| void | setParent (Box *parent, void *parentUserdata=nullptr) |
The box this view is in (Box::addView sets it; parentUserdata is the box's own). | |
| Box * | getParent () |
| bool | hasParent () |
| void * | getParentUserData () |
| template<class ButtonType > | |
| ActionIterator | getAction (ButtonType button) |
| ActionIterator | getAction (ActionIdentifier identifier) |
The action registered under identifier, or getActions().end(). | |
| template<class ButtonType , class ActionType > | |
| ActionIdentifier | registerAction (const std::string &hintText, ButtonType button, const ActionListener &actionListener, bool hidden=false, bool allowRepeating=false, enum Sound sound=SOUND_NONE) |
| ActionIdentifier | registerAction (const std::string &hintText, ControllerButton button, const ActionListener &actionListener, bool hidden=false, bool allowRepeating=false, enum Sound sound=SOUND_NONE) |
| The same, on a controller button. | |
| ActionIdentifier | registerAction (AuroreKeyCombination key, const ActionListener &actionListener, bool allowRepeating=false) |
| An action on a keyboard key (a combination with modifiers): no hint, no sound. | |
| void | func (AuroreKeyCombination key) |
| void | unregisterAction (ActionIdentifier identifier) |
| void | registerClickAction (const ActionListener &actionListener) |
| void | updateActionHint (enum ControllerButton button, const std::string &hintText) |
Changes the hint of the action on button. | |
| void | setActionAvailable (enum ControllerButton button, bool available) |
Turns the action on button on or off (an action off runs nothing and shows no hint). | |
| void | setActionsAvailable (bool available) const |
| The same for every action of the view. | |
| void | setActionHidden (enum ControllerButton button, bool hidden) |
| void | resetClickAnimation () |
| void | playClickAnimation (bool reverse=false, bool animateBack=true, bool force=false) |
| Plays the click animation (the flash over the view). | |
| std::string | getClassString () const |
| The view's class name ("Label", "Box"…). | |
| std::string | describe () const |
The class name and the id, for logs: Label (id="title"). | |
| YGNode * | getYGNode () |
| The view's Yoga node. | |
| const std::vector< std::shared_ptr< Action > > & | getActions () |
| The actions registered on the view. | |
| const std::vector< GestureRecognizer * > & | getGestureRecognizers () |
| void | interruptGestures (bool onlyIfUnsureState) |
| void | addGestureRecognizer (GestureRecognizer *recognizer) |
| bool | removeGestureRecognizer (GestureRecognizer *recognizer) |
| Sound | gestureRecognizerRequest (TouchState touch, MouseState mouse, View *firstResponder) |
| virtual void | frame (FrameContext *ctx) |
| void | frameHighlight (FrameContext *ctx) |
| virtual void | onShowAnimationEnd () |
| virtual void | show (std::function< void(void)> cb) |
| virtual void | show (std::function< void(void)> cb, bool animate, float animationDuration) |
| virtual float | getShowAnimationDuration (TransitionAnimation animation) |
| void | collapse (bool animated=true) |
| bool | isCollapsed () |
| Whether collapse() hid the view. | |
| void | setAlpha (float alpha) |
| The view's opacity, 0 to 1 (a transition when its style has one). | |
| void | expand (bool animated=true) |
| virtual void | hide (std::function< void(void)> cb) |
| virtual void | hide (std::function< void(void)> cb, bool animate, float animationDuration) |
| bool | isHidden () |
| Whether hide() hid the view. | |
| virtual bool | isTranslucent () |
| bool | isFocused () |
| Whether the view has the focus. | |
| void | setCustomNavigationRoute (FocusDirection direction, View *target) |
| void | setCustomNavigationRoute (FocusDirection direction, std::string targetId) |
| bool | hasCustomNavigationRouteByPtr (FocusDirection direction) |
| bool | hasCustomNavigationRouteById (FocusDirection direction) |
| View * | getCustomNavigationRoutePtr (FocusDirection direction) |
| std::string | getCustomNavigationRouteId (FocusDirection direction) |
| GenericEvent * | getFocusEvent () |
| Fired with the view when it gains the focus. | |
| GenericEvent * | getFocusLostEvent () |
| Fired with the view when it loses the focus. | |
| virtual float | getAlpha (bool child=false) |
| The opacity drawn: the view's alpha times its parents'. | |
| float | getClickAlpha () |
| void | overrideTheme (Theme *newTheme) |
| void | setCulled (bool culled) |
| bool | isCulled () |
| void | setAspectRatio (float value) |
| The width over the height, kept by the layout (values <= 0 are ignored). | |
| float | getAspectRatio () |
| void | setBackgroundCornerRadii (float topLeft, float topRight, float bottomRight, float bottomLeft) |
| void | setTranslationY (float translateY) |
| void | setTranslationX (float translateX) |
| void | setWireframeEnabled (bool wireframe) |
| bool | isWireframeEnabled () |
| AppletFrameItem * | getAppletFrameItem () |
| void | updateAppletFrameItem () |
| bool | getClipsToBounds () const |
| Whether the children are clipped to the view's frame when drawn. | |
| void | setClipsToBounds (bool value) |
| virtual AppletFrame * | getAppletFrame () |
| The AppletFrame the view is in, or nullptr. | |
| void | present (View *view) |
Pushes view as the content of the view's AppletFrame (a page inside the frame). | |
| virtual void | dismiss (std::function< void(void)> cb=[] {}) |
Pops the AppletFrame's content back to the one before, then runs cb. | |
| std::weak_ptr< void > | aliveToken () |
| void | ptrLock () |
| void | ptrUnlock () |
| bool | isPtrLocked () |
| Whether a ptrLock() holds the view. | |
| void | freeView () |
| Deletes the view at the end of the frame (Application::addToFreeQueue). | |
| Activity * | getParentActivity () |
| The activity the view is in, through its parents; nullptr when none. | |
| void | setParentActivity (Activity *activity) |
| bool | setStateStyle (StyleState state, const std::string &property, const std::string &value) |
| void | setStyleState (StyleState state, bool on) |
| bool | hasStyleState (StyleState state) |
| bool | setTransition (const std::string &spec) |
| virtual bool | getStyleProperty (const std::string &name, StyleValue *value) |
| virtual bool | setStyleProperty (const std::string &name, const StyleValue &value) |
| void | keepSubscription (Subscription &&subscription) |
| bool | bind (const std::string &spec) |
| virtual bool | setBoundText (const std::string &text) |
| void | setAccessibilityRole (AccessibilityRole role) |
| AccessibilityRole | getAccessibilityRole () |
| See setAccessibilityRole(). | |
| void | setAccessibilityLabel (const std::string &label) |
| std::string | getAccessibilityLabel () |
| void | setAccessibilityValue (const std::string &value) |
| std::string | getAccessibilityValue () |
| void | setAccessibilitySelected (bool selected) |
| bool | isAccessibilitySelected () |
| virtual bool | getAccessibilityPosition (int *index, int *count) |
| virtual std::string | getAccessibilityDescription () |
| std::string | getAccessibilityText () |
| void | announceAccessibilityValue () |
| void | resolveBindings (Activity *activity=nullptr) |
| virtual void | onTextScaleChanged () |
| bool | setThemeColor (const std::string &property, const std::string &key) |
| std::string | getThemeColor (const std::string &property) |
Static Public Member Functions | |
| static aurore::View * | create () |
| static void | reveal_focused () |
Static Public Member Functions inherited from aurore::ScrollingFrame | |
| static View * | create () |
Makes a frame for XML (<aurore:ScrollingFrame>, one child: its content). | |
Static Public Member Functions inherited from aurore::Box | |
| static View * | create () |
Static Public Member Functions inherited from aurore::View | |
| static void | setHighlightGlide (bool glide) |
| static View * | createFromXMLString (std::string_view xml) |
| static View * | createFromXMLElement (tinyxml2::XMLElement *element) |
| static View * | createFromXMLFile (std::string path) |
| static View * | createFromXMLResource (std::string name) |
| static std::shared_ptr< tinyxml2::XMLDocument > | getXMLCache (std::string_view path) |
| static void | forgetXMLCache (const std::string &path) |
| static std::string | describeXMLError (tinyxml2::XMLDocument *document, const std::string &source="") |
| static std::string | describeXMLLocation (const tinyxml2::XMLElement *element) |
| static void | fatalXML (const std::string &message) |
| static std::string | closestXMLName (const std::string &name, const std::vector< std::string > &known) |
| template<typename T > | |
| static std::string | listXMLValues (const std::unordered_map< std::string, T > &values) |
| An enumeration's values, sorted, for an error message. | |
| static std::string | getStringXMLAttributeValue (std::string value) |
| static std::string | getFilePathXMLAttributeValue (std::string value) |
Additional Inherited Members | |
Public Types inherited from aurore::View | |
| typedef std::vector< std::shared_ptr< Action > >::iterator | ActionIterator |
Public Attributes inherited from aurore::View | |
| Animatable | alpha = 1.0f |
Static Public Attributes inherited from aurore::View | |
| static constexpr float | AUTO = NAN |
A size or position left to the layout (auto in XML). | |
| static std::string | CUSTOM_RESOURCES_PATH |
| static std::string | currentXMLResource |
Protected Member Functions inherited from aurore::ScrollingFrame | |
| void | prebakeScrolling () |
| bool | updateScrolling (bool animated) |
| void | startScrolling (bool animated, float newScroll) |
| void | animateScrolling (float newScroll, float time) |
| void | scrollAnimationTick () |
| float | getScrollingAreaTopBoundary () |
| float | getScrollingAreaHeight () |
| float | getContentHeight () |
| void | naturalScrollingBehaviour () |
| void | naturalScrollingButtonProcessing (FocusDirection focusDirection, bool *repeat) |
| View * | findTopMostFocusableView () |
| void | setupScrollingIndicator () |
| void | updateScrollingIndicatior () |
Protected Member Functions inherited from aurore::Box | |
| std::string | getDefaultAccessibilityLabel () override |
| A focusable box says the texts shown in it (getAccessibilityText). | |
| void | inflateFromXMLString (std::string_view xml) |
| void | inflateFromXMLElement (tinyxml2::XMLElement *element) |
| void | inflateFromXMLRes (const std::string &res) |
| void | inflateFromXMLFile (const std::string &path) |
| void | handleXMLElement (tinyxml2::XMLElement *element) override |
Protected Member Functions inherited from aurore::View | |
| NVGcolor | a (NVGcolor color) |
| Helper functions to apply this view's alpha to a color. | |
| NVGpaint | a (NVGpaint paint) |
| NVGcolor | RGB (unsigned r, unsigned g, unsigned b) |
| NVGcolor | RGBA (unsigned r, unsigned g, unsigned b, unsigned a) |
| NVGcolor | RGBf (float r, float g, float b) |
| NVGcolor | RGBAf (float r, float g, float b, float a) |
| NVGcolor | shadowColor (NVGcolor color, float opacity) |
| virtual bool | animateHint () |
| virtual AccessibilityRole | getDefaultAccessibilityRole () |
| virtual std::string | getDefaultAccessibilityValue () |
| virtual bool | getDefaultAccessibilitySelected () |
| bool | transitionStyle (const char *name, const StyleValue &to) |
Protected Attributes inherited from aurore::ScrollingFrame | |
| View * | contentView = nullptr |
| Rectangle * | scrollingIndicator = nullptr |
| bool | updateScrollingOnNextFrame = false |
| bool | childFocused = false |
| bool | showScrollingIndicator = true |
| bool | autoHideScrollingIndicator = true |
| float | lastIndicatorOffset = -1 |
| bool | indicatorShowsFocus = false |
| The focus waits on the frame itself: the indicator stands for it. | |
| Time | lastScrollTime = 0 |
| float | middleY = 0 |
| y + height/2 | |
| float | bottomY = 0 |
| y + height | |
| Animatable | contentOffsetY = 0.0f |
| ScrollingBehavior | behavior = ScrollingBehavior::NATURAL |
| bool | naturalScrollingCanScroll = false |
| bool | isRubberBanding = false |
| true while finger is dragging past a scroll boundary | |
| Event< InputType >::Subscription | inputTypeSubscription |
Protected Attributes inherited from aurore::View | |
| Animatable | collapseState = 1.0f |
| bool | focused = false |
| Activity * | parentActivity = nullptr |
| Box * | parent = nullptr |
| GenericEvent | focusEvent |
| GenericEvent | focusLostEvent |
| YGNode * | ygNode |
| std::string | id = "" |
The scrolling frame of Cadran's screens (<ScrollView>): each press moves to the next line and scrolls just enough to show it with its header and notes.
| ScrollView::ScrollView | ( | ) |
|
static |
|
overridevirtual |
Called by frame() to draw the view onscreen. Views should not draw outside of their bounds (they may be clipped if they do so).
Reimplemented from aurore::ScrollingFrame.
|
overridevirtual |
Returns the default view to focus when focusing this view Typically the view itself or one of its children.
Returning nullptr means that the view is not focusable (and neither are its children)
By default, a view is focusable if the flag is set to true with setFocusable() and if the view is visible.
When pressing a key, the flow is :
Reimplemented from aurore::ScrollingFrame.
|
overridevirtual |
Returns the next view to focus given the requested direction and the currently focused view (as parent user data)
Returning nullptr means that there is no next view to focus in that direction - getNextFocus will then be called on our parent if any
Reimplemented from aurore::ScrollingFrame.
|
overridevirtual |
Fired when focus is gained on one of this view's children, or one of the children of the children...
directChild is guaranteed to be one of your children. It may not be the view that has been focused.
If focusedView == directChild, then the child of yours has been focused. Otherwise, focusedView is a child of directChild.
Reimplemented from aurore::ScrollingFrame.
|
overridevirtual |
Fired when focus is lost.
Reimplemented from aurore::Box.
|
static |
The focused line shown again at the next frame, once laid out anew: a layout moved it (the rail's width changed, cadran::apply_rail).
|
overridevirtual |
Called when the view will appear on screen, before or after layout().
Can be called if the view has already appeared, so be careful.
Reimplemented from aurore::ScrollingFrame.