CubicSDR/src/BookmarkMgr.cpp

153 lines
3.6 KiB
C++
Raw Normal View History

2016-09-14 19:46:57 -04:00
#include "BookmarkMgr.h"
#include "CubicSDR.h"
#include "DataTree.h"
2016-09-14 19:46:57 -04:00
void BookmarkMgr::saveToFile(std::string bookmarkFn) {
}
void BookmarkMgr::loadFromFile(std::string bookmarkFn) {
}
void BookmarkMgr::addBookmark(std::string group, DemodulatorInstance *demod) {
2016-09-14 19:46:57 -04:00
std::lock_guard < std::mutex > lock(busy_lock);
BookmarkEntry *be = demodToBookmarkEntry(demod);
wxGetApp().getDemodMgr().saveInstance(be->node, demod);
bmData[group].insert(be);
}
2016-09-14 19:46:57 -04:00
void BookmarkMgr::addBookmark(std::string group, BookmarkEntry *be) {
std::lock_guard < std::mutex > lock(busy_lock);
bmData[group].insert(be);
}
void BookmarkMgr::removeBookmark(std::string group, BookmarkEntry *be) {
std::lock_guard < std::mutex > lockData(busy_lock);
std::lock_guard < std::mutex > lockEnt(be->busy_lock);
bmData[group].erase(be);
2016-09-14 19:46:57 -04:00
}
2016-11-10 21:48:57 -05:00
void BookmarkMgr::removeBookmark(BookmarkEntry *be) {
std::lock_guard < std::mutex > lockData(busy_lock);
std::lock_guard < std::mutex > lockEnt(be->busy_lock);
for (auto &bmd_i : bmData) {
if (bmd_i.second.find(be) != bmd_i.second.end()) {
bmd_i.second.erase(be);
}
}
}
BookmarkList BookmarkMgr::getBookmarks(std::string group) {
2016-09-14 19:46:57 -04:00
std::lock_guard < std::mutex > lock(busy_lock);
BookmarkList results;
for (auto be_i : bmData[group]) {
results.push_back(be_i);
}
2016-09-14 19:46:57 -04:00
return results;
}
BookmarkGroup BookmarkMgr::getGroup(std::string group) {
return bmData[group];
}
BookmarkNames BookmarkMgr::getGroups() {
BookmarkNames results;
for (BookmarkMap::iterator i = bmData.begin(); i!= bmData.end(); ++i) {
results.push_back(i->first);
}
return results;
}
void BookmarkMgr::getGroups(wxArrayString &arr) {
for (BookmarkMap::iterator i = bmData.begin(); i!= bmData.end(); ++i) {
arr.push_back(i->first);
}
}
void BookmarkMgr::updateActiveList() {
BookmarkView *bmv = wxGetApp().getAppFrame()->getBookmarkView();
if (bmv) {
bmv->updateActiveList();
}
}
2016-10-06 22:27:12 -04:00
void BookmarkMgr::updateBookmarks() {
BookmarkView *bmv = wxGetApp().getAppFrame()->getBookmarkView();
if (bmv) {
bmv->updateBookmarks();
}
}
void BookmarkMgr::updateBookmarks(std::string group) {
BookmarkView *bmv = wxGetApp().getAppFrame()->getBookmarkView();
if (bmv) {
bmv->updateBookmarks(group);
}
}
void BookmarkMgr::addRecent(DemodulatorInstance *demod) {
std::lock_guard < std::mutex > lock(busy_lock);
recents.push_back(demodToBookmarkEntry(demod));
if (recents.size() > 10) {
delete *(recents.begin());
recents.erase(recents.begin(), recents.begin()+1);
}
}
void BookmarkMgr::removeRecent(BookmarkEntry *be) {
std::lock_guard < std::mutex > lock(busy_lock);
BookmarkList::iterator bm_i = std::find(recents.begin(),recents.end(), be);
if (bm_i != recents.end()) {
recents.erase(bm_i);
}
}
BookmarkList BookmarkMgr::getRecents() {
return recents;
}
BookmarkEntry *BookmarkMgr::demodToBookmarkEntry(DemodulatorInstance *demod) {
BookmarkEntry *be = new BookmarkEntry;
be->bandwidth = demod->getBandwidth();
be->type = demod->getDemodulatorType();
2016-11-14 23:52:50 -05:00
be->label = demod->getDemodulatorUserLabel();
if (be->label == "") {
std::string wstr = demod->getLabel();
be->label = std::wstring(wstr.begin(),wstr.end());
}
be->frequency = demod->getFrequency();
be->node = new DataNode;
wxGetApp().getDemodMgr().saveInstance(be->node, demod);
return be;
}