File indexing completed on 2024-12-01 04:29:22
0001 /* 0002 * SPDX-FileCopyrightText: 2022 Julius Künzel <jk.kdedev@smartlab.uber.space> 0003 * SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL 0004 */ 0005 0006 #pragma once 0007 0008 #include <QComboBox> 0009 #include <QWidget> 0010 0011 class MarkerListModel; 0012 0013 class MarkerCategoryChooser : public QComboBox 0014 { 0015 Q_OBJECT 0016 Q_PROPERTY(bool allowAll READ allowAll WRITE setAllowAll NOTIFY changed) 0017 Q_PROPERTY(bool onlyUsed READ onlyUsed WRITE setOnlyUsed NOTIFY changed) 0018 0019 public: 0020 MarkerCategoryChooser(QWidget *parent = nullptr); 0021 /** @brief Set currently selected category by its number. */ 0022 void setCurrentCategory(int category); 0023 /** @brief get the number of the currently selected category. */ 0024 int currentCategory(); 0025 /** @brief Set the marker model of the chooser. Only needed if @property onlyUsed is true.*/ 0026 void setMarkerModel(const MarkerListModel *model); 0027 /** @brief Whether the user should be able to select "All Categories" */ 0028 void setAllowAll(bool allowAll); 0029 /** @brief Show only categories that are used by markers in the model. 0030 * If no model is set, all categories will be show. @see setMarkerModel 0031 */ 0032 void setOnlyUsed(bool onlyUsed); 0033 0034 private: 0035 const MarkerListModel *m_markerListModel; 0036 bool m_allowAll; 0037 bool m_onlyUsed; 0038 0039 void refresh(); 0040 bool allowAll() { return m_allowAll; }; 0041 bool onlyUsed() { return m_onlyUsed; }; 0042 0043 Q_SIGNALS: 0044 void changed(); 0045 };