1 /*************************************************************************** 2 ** ** 3 ** Polyphone, a soundfont editor ** 4 ** Copyright (C) 2013-2020 Davy Triponney ** 5 ** ** 6 ** This program is free software: you can redistribute it and/or modify ** 7 ** it under the terms of the GNU General Public License as published by ** 8 ** the Free Software Foundation, either version 3 of the License, or ** 9 ** (at your option) any later version. ** 10 ** ** 11 ** This program is distributed in the hope that it will be useful, ** 12 ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** 13 ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** 14 ** GNU General Public License for more details. ** 15 ** ** 16 ** You should have received a copy of the GNU General Public License ** 17 ** along with this program. If not, see http://www.gnu.org/licenses/. ** 18 ** ** 19 **************************************************************************** 20 ** Author: Davy Triponney ** 21 ** Website/Contact: https://www.polyphone-soundfonts.com ** 22 ** Date: 01.01.2013 ** 23 ***************************************************************************/ 24 25 #ifndef COMBOBOXLOOPMODE_H 26 #define COMBOBOXLOOPMODE_H 27 28 #include <QComboBox> 29 #include <QListView> 30 31 class ComboBoxLoopMode : public QComboBox 32 { 33 Q_OBJECT 34 35 public: 36 explicit ComboBoxLoopMode(QWidget *parent = nullptr); getIndex()37 int getIndex() { return _currentIndex; } 38 39 protected: 40 void showEvent(QShowEvent * event); 41 void hidePopup(); 42 43 private slots: 44 void onActivated(int index); 45 46 private: 47 bool _ignoreFirstHide; 48 int _currentIndex; 49 }; 50 51 class ComboView : public QListView 52 { 53 Q_OBJECT 54 55 protected: viewOptions()56 QStyleOptionViewItem viewOptions() const 57 { 58 // Set icon on the top and center of combo box item. 59 QStyleOptionViewItem option = QListView::viewOptions(); 60 option.decorationAlignment = Qt::AlignHCenter | Qt::AlignVCenter; 61 option.decorationSize = QSize(37, 14); 62 return option; 63 } 64 }; 65 66 #endif // COMBOBOXLOOPMODE_H 67