1 /* 2 * Copyright (C) 2020 Rerrah 3 * 4 * Permission is hereby granted, free of charge, to any person 5 * obtaining a copy of this software and associated documentation 6 * files (the "Software"), to deal in the Software without 7 * restriction, including without limitation the rights to use, 8 * copy, modify, merge, publish, distribute, sublicense, and/or sell 9 * copies of the Software, and to permit persons to whom the 10 * Software is furnished to do so, subject to the following 11 * conditions: 12 * 13 * The above copyright notice and this permission notice shall be 14 * included in all copies or substantial portions of the Software. 15 * 16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 17 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 18 * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 19 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 20 * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 21 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 22 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 23 * OTHER DEALINGS IN THE SOFTWARE. 24 */ 25 26 #ifndef BOOKMARK_MANAGER_FORM_HPP 27 #define BOOKMARK_MANAGER_FORM_HPP 28 29 #include <QWidget> 30 #include <QString> 31 #include <QListWidgetItem> 32 #include <QShortcut> 33 #include <memory> 34 #include "bamboo_tracker.hpp" 35 36 namespace Ui { 37 class BookmarkManagerForm; 38 } 39 40 class BookmarkManagerForm : public QWidget 41 { 42 Q_OBJECT 43 44 public: 45 BookmarkManagerForm(std::weak_ptr<BambooTracker> core, bool showHex, 46 QWidget *parent = nullptr); 47 ~BookmarkManagerForm() override; 48 49 signals: 50 void positionJumpRequested(int order, int step); 51 void modified(); 52 53 public slots: 54 void onCurrentSongNumberChanged(); 55 void onConfigurationChanged(bool showHex); 56 void onBookmarkToggleRequested(int order, int step); 57 void onBookmarkJumpRequested(bool toNext, int order, int step); 58 59 private slots: 60 void on_createPushButton_clicked(); 61 void on_removePushButton_clicked(); 62 void on_clearPushButton_clicked(); 63 void on_upToolButton_clicked(); 64 void on_downToolButton_clicked(); 65 void on_positionPushButton_clicked(); 66 void on_namePushButton_clicked(); 67 void on_listWidget_currentRowChanged(int currentRow); 68 void on_updatePushButton_clicked(); 69 void on_listWidget_itemDoubleClicked(QListWidgetItem *item); 70 71 private: 72 Ui::BookmarkManagerForm *ui; 73 std::weak_ptr<BambooTracker> bt_; 74 75 int curSong_; 76 int numWidth_, numBase_; 77 78 std::unique_ptr<QShortcut> insSc_, delSc_, mvUpSc_, mvDnSc_; 79 80 void initList(); 81 setNumberSettings(bool showHex)82 inline void setNumberSettings(bool showHex) 83 { 84 if (showHex) { 85 numWidth_ = 2; 86 numBase_ = 16; 87 } 88 else { 89 numWidth_ = 3; 90 numBase_ = 10; 91 } 92 } 93 94 void addBookmark(QString name, int order, int step, bool onlyUi = false); 95 void removeBookmark(int i); 96 QString createText(QString name, int order, int step); 97 void sortList(bool byPos); 98 }; 99 100 #endif // BOOKMARK_MANAGER_FORM_HPP 101