2016-09-14 19:46:57 -04:00
|
|
|
#include "BookmarkMgr.h"
|
2016-09-14 22:10:27 -04:00
|
|
|
#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) {
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
2016-10-05 19:10:01 -04:00
|
|
|
|
|
|
|
void BookmarkMgr::addBookmark(std::string group, DemodulatorInstance *demod) {
|
2016-09-14 19:46:57 -04:00
|
|
|
std::lock_guard < std::mutex > lock(busy_lock);
|
2016-09-14 22:10:27 -04:00
|
|
|
|
2016-10-05 19:10:01 -04:00
|
|
|
BookmarkEntry *be = demodToBookmarkEntry(demod);
|
2016-09-14 22:10:27 -04:00
|
|
|
|
|
|
|
wxGetApp().getDemodMgr().saveInstance(be->node, demod);
|
|
|
|
|
2016-11-21 20:12:10 -05:00
|
|
|
bmData[group].push_back(be);
|
|
|
|
bmDataSorted[group] = false;
|
2016-09-14 22:10:27 -04:00
|
|
|
}
|
2016-09-14 19:46:57 -04:00
|
|
|
|
2016-10-13 00:41:35 -04:00
|
|
|
void BookmarkMgr::addBookmark(std::string group, BookmarkEntry *be) {
|
|
|
|
std::lock_guard < std::mutex > lock(busy_lock);
|
|
|
|
|
2016-11-21 20:12:10 -05:00
|
|
|
bmData[group].push_back(be);
|
|
|
|
bmDataSorted[group] = false;
|
2016-10-13 00:41:35 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
|
2016-09-14 22:10:27 -04:00
|
|
|
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);
|
2016-11-21 20:12:10 -05:00
|
|
|
|
|
|
|
if (bmData.find(group) == bmData.end()) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
BookmarkList::iterator i = std::find(bmData[group].begin(), bmData[group].end(), be);
|
2016-09-14 22:10:27 -04:00
|
|
|
|
2016-11-21 20:12:10 -05:00
|
|
|
if (i != bmData[group].end()) {
|
2016-11-25 22:19:19 -05:00
|
|
|
delete *i;
|
2016-11-21 20:12:10 -05:00
|
|
|
bmData[group].erase(i);
|
|
|
|
}
|
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) {
|
2016-11-21 20:12:10 -05:00
|
|
|
BookmarkList::iterator i = std::find(bmd_i.second.begin(), bmd_i.second.end(), be);
|
|
|
|
if (i != bmd_i.second.end()) {
|
|
|
|
bmd_i.second.erase(i);
|
2016-11-10 21:48:57 -05:00
|
|
|
}
|
|
|
|
}
|
2016-11-25 22:19:19 -05:00
|
|
|
}
|
2016-11-10 21:48:57 -05:00
|
|
|
|
2016-11-25 22:19:19 -05:00
|
|
|
void BookmarkMgr::moveBookmark(BookmarkEntry *be, std::string group) {
|
|
|
|
std::lock_guard < std::mutex > lockData(busy_lock);
|
|
|
|
std::lock_guard < std::mutex > lockEnt(be->busy_lock);
|
|
|
|
|
|
|
|
for (auto &bmd_i : bmData) {
|
|
|
|
BookmarkList::iterator i = std::find(bmd_i.second.begin(), bmd_i.second.end(), be);
|
|
|
|
if (i != bmd_i.second.end()) {
|
2016-12-12 20:17:47 -05:00
|
|
|
if (bmd_i.first == group) {
|
|
|
|
return;
|
|
|
|
}
|
2016-11-25 22:19:19 -05:00
|
|
|
bmData[group].push_back(*i);
|
|
|
|
bmd_i.second.erase(i);
|
|
|
|
bmDataSorted[group] = false;
|
|
|
|
bmDataSorted[bmd_i.first] = false;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
2016-11-10 21:48:57 -05:00
|
|
|
}
|
2016-09-14 22:10:27 -04:00
|
|
|
|
2016-11-21 20:47:16 -05:00
|
|
|
|
|
|
|
void BookmarkMgr::addGroup(std::string group) {
|
|
|
|
std::lock_guard < std::mutex > lock(busy_lock);
|
|
|
|
|
|
|
|
if (bmData.find(group) == bmData.end()) {
|
|
|
|
BookmarkList dummy = bmData[group];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2016-11-25 22:19:19 -05:00
|
|
|
void BookmarkMgr::removeGroup(std::string group) {
|
|
|
|
std::lock_guard < std::mutex > lock(busy_lock);
|
|
|
|
|
|
|
|
BookmarkMap::iterator i = bmData.find(group);
|
|
|
|
|
|
|
|
if (i != bmData.end()) {
|
|
|
|
for (auto ii : bmData[group]) {
|
|
|
|
delete ii;
|
|
|
|
}
|
|
|
|
bmData.erase(group);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void BookmarkMgr::renameGroup(std::string group, std::string ngroup) {
|
|
|
|
std::lock_guard < std::mutex > lock(busy_lock);
|
|
|
|
|
|
|
|
BookmarkMap::iterator i = bmData.find(group);
|
2016-12-12 20:17:47 -05:00
|
|
|
BookmarkMap::iterator it = bmData.find(ngroup);
|
2016-11-25 22:19:19 -05:00
|
|
|
|
|
|
|
if (i != bmData.end() && it != bmData.end()) {
|
|
|
|
for (auto ii : bmData[group]) {
|
|
|
|
bmData[ngroup].push_back(ii);
|
|
|
|
}
|
|
|
|
bmData.erase(group);
|
|
|
|
} else if (i != bmData.end()) {
|
|
|
|
bmData[ngroup] = bmData[group];
|
|
|
|
bmData.erase(group);
|
|
|
|
}
|
|
|
|
}
|
2016-11-21 20:47:16 -05:00
|
|
|
|
2016-10-05 19:10:01 -04:00
|
|
|
BookmarkList BookmarkMgr::getBookmarks(std::string group) {
|
2016-09-14 19:46:57 -04:00
|
|
|
std::lock_guard < std::mutex > lock(busy_lock);
|
|
|
|
|
2016-11-21 20:12:10 -05:00
|
|
|
if (bmData.find(group) == bmData.end()) {
|
|
|
|
BookmarkList results;
|
|
|
|
return results;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (!bmDataSorted[group]) {
|
|
|
|
std::sort(bmData[group].begin(), bmData[group].end(), BookmarkEntryCompare());
|
|
|
|
bmDataSorted[group] = true;
|
2016-09-14 22:10:27 -04:00
|
|
|
}
|
2016-09-14 19:46:57 -04:00
|
|
|
|
2016-09-29 20:47:38 -04:00
|
|
|
return bmData[group];
|
|
|
|
}
|
|
|
|
|
2016-11-21 20:47:16 -05:00
|
|
|
|
2016-11-21 20:12:10 -05:00
|
|
|
void BookmarkMgr::getGroups(BookmarkNames &arr) {
|
2016-09-29 20:47:38 -04:00
|
|
|
for (BookmarkMap::iterator i = bmData.begin(); i!= bmData.end(); ++i) {
|
2016-11-21 20:12:10 -05:00
|
|
|
arr.push_back(i->first);
|
2016-09-29 20:47:38 -04:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2016-11-20 23:26:38 -05:00
|
|
|
void BookmarkMgr::getGroups(wxArrayString &arr) {
|
|
|
|
for (BookmarkMap::iterator i = bmData.begin(); i!= bmData.end(); ++i) {
|
|
|
|
arr.push_back(i->first);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2016-09-29 20:47:38 -04:00
|
|
|
|
2016-09-22 20:40:07 -04:00
|
|
|
void BookmarkMgr::updateActiveList() {
|
|
|
|
BookmarkView *bmv = wxGetApp().getAppFrame()->getBookmarkView();
|
|
|
|
|
|
|
|
if (bmv) {
|
|
|
|
bmv->updateActiveList();
|
|
|
|
}
|
2016-10-05 19:10:01 -04:00
|
|
|
}
|
|
|
|
|
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);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2016-10-05 19:10:01 -04:00
|
|
|
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);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2016-10-13 00:41:35 -04:00
|
|
|
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);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2016-10-05 19:10:01 -04:00
|
|
|
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();
|
2016-10-05 19:10:01 -04:00
|
|
|
be->frequency = demod->getFrequency();
|
|
|
|
|
|
|
|
be->node = new DataNode;
|
|
|
|
wxGetApp().getDemodMgr().saveInstance(be->node, demod);
|
|
|
|
|
|
|
|
return be;
|
|
|
|
}
|