Pith - whittle
whittle/src/ui/SettingsDialog.h [1.2 kb]
Modified: 20:17:02 158 026 (24 Aug 026)
5 Days Ago
#pragma once
#include "core/FilterSettings.h"
#include <QDialog>
#include <QList>
#include <QPair>
#include <QSet>
#include <QString>
#include <QWidget>

namespace whittle {

using PillItem = QPair<QString, qint64>;

class PillRow : public QWidget {
public:
    PillRow(const QList<PillItem>& items, bool exclusive,
            QWidget* parent = nullptr);

    void check(qint64 v);
    bool isChecked(qint64 v) const;
    qint64 checkedValue(qint64 fallback) const;
    int checkedCount() const;

protected:
    void paintEvent(QPaintEvent*) override;
    void mousePressEvent(QMouseEvent*) override;
    void mouseMoveEvent(QMouseEvent*) override;
    void leaveEvent(QEvent*) override;

private:
    int hitTest(const QPoint& p) const;

    QList<PillItem> m_items;
    QList<int>      m_x;
    QSet<qint64>    m_checked;
    bool m_exclusive;
    int  m_hover = -1;
};

class SettingsDialog : public QDialog {
    Q_OBJECT
public:
    explicit SettingsDialog(const FilterSettings& initial, QWidget* parent = nullptr);
    FilterSettings settings() const;

private:
    PillRow* m_metric    = nullptr;
    PillRow* m_tol       = nullptr;
    PillRow* m_display   = nullptr;
    PillRow* m_recursive = nullptr;
    PillRow* m_loadLast  = nullptr;
};

}
Updates
Stave - Android 158.026
Kerf - Android 157.026
Kiln - Android 157.026
Wedge - Android 156.026
Whittle - Linux 155.026

Menu
Calendar
Project Tin (024/029)
Miter
RSS Feed
User Avatar
@vgmlr
=SUM(parts)
0.00163
260,566 (+980)