qtrs 0.5.4

qtrs - A type-safe, builder-pattern-driven Qt6 GUI library for Rust
// src/cpp/slider.h — QSlider
#pragma once

#include <QtCore/QObject>
#include <QtWidgets/QSlider>
#include <QtCore/Qt>

#include "signal.h"

inline QSlider *QSlider_new(int orientation, QWidget *parent) {
    auto *s = new QSlider(static_cast<Qt::Orientation>(orientation), parent);
    s->setRange(0, 100);
    return s;
}
inline int QSlider_value(QSlider *s) { return s->value(); }
inline void QSlider_setValue(QSlider *s, int v) { s->setValue(v); }
inline void QSlider_setRange(QSlider *s, int min, int max) {
    s->setRange(min, max);
}
inline void QSlider_delete(QSlider *s) { delete s; }

inline void QSlider_onValueChanged(QSlider *s, uint64_t ctx) {
    QObject::connect(s, &QSlider::valueChanged,
                     [ctx](int value) {
                         if (g_hasIntTrampoline) g_intTrampoline(ctx, value);
                     });
}
inline void QSlider_setOrientation(QSlider *s, int o) { s->setOrientation(static_cast<Qt::Orientation>(o)); }
inline int QSlider_orientation(QSlider *s) { return static_cast<int>(s->orientation()); }
inline void QSlider_setTickPosition(QSlider *s, int pos) { s->setTickPosition(static_cast<QSlider::TickPosition>(pos)); }
inline void QSlider_setTickInterval(QSlider *s, int interval) { s->setTickInterval(interval); }
inline bool QSlider_invertedAppearance(QSlider *s) { return s->invertedAppearance(); }