#pragma once #include #include #include #include "DemodulatorInstance.h" class DataNode; class BookmarkEntry { public: std::mutex busy_lock; std::string type; std::wstring label; std::wstring userLabel; long long frequency; int bandwidth; DataNode *node; }; struct BookmarkEntryCompare : public std::binary_function { bool operator()(const BookmarkEntry *a, BookmarkEntry *b) const { return a->frequency < b->frequency; } }; typedef std::vector BookmarkList; typedef std::map BookmarkMap; typedef std::map BookmarkMapSorted; typedef std::vector BookmarkNames; typedef std::map BookmarkExpandState; class BookmarkMgr { public: void saveToFile(std::string bookmarkFn); void loadFromFile(std::string bookmarkFn); void addBookmark(std::string group, DemodulatorInstance *demod); void addBookmark(std::string group, BookmarkEntry *be); void removeBookmark(std::string group, BookmarkEntry *be); void removeBookmark(BookmarkEntry *be); void moveBookmark(BookmarkEntry *be, std::string group); void addGroup(std::string group); void removeGroup(std::string group); void renameGroup(std::string group, std::string ngroup); BookmarkList getBookmarks(std::string group); void getGroups(BookmarkNames &arr); void getGroups(wxArrayString &arr); void setExpandState(std::string groupName, bool state); bool getExpandState(std::string groupName); void updateActiveList(); void updateBookmarks(); void updateBookmarks(std::string group); void addRecent(DemodulatorInstance *demod); void addRecent(BookmarkEntry *be); void removeRecent(BookmarkEntry *be); BookmarkList getRecents(); void clearRecents(); static std::wstring getBookmarkEntryDisplayName(BookmarkEntry *bmEnt); static std::wstring getActiveDisplayName(DemodulatorInstance *demod); protected: void trimRecents(); BookmarkEntry *demodToBookmarkEntry(DemodulatorInstance *demod); BookmarkEntry *nodeToBookmark(const char *name_in, DataNode *node); BookmarkMap bmData; BookmarkMapSorted bmDataSorted; BookmarkList recents; std::mutex busy_lock; BookmarkExpandState expandState; };