DockBookmarks::DockBookmarks(QWidget *parent) : QDockWidget(parent), ui(new Ui::DockBookmarks) { ui->setupUi(this); bookmarksTableModel = new BookmarksTableModel(); // Frequency List ui->tableViewFrequencyList->setModel(bookmarksTableModel); ui->tableViewFrequencyList->setColumnWidth( BookmarksTableModel::COL_NAME, ui->tableViewFrequencyList->columnWidth(BookmarksTableModel::COL_NAME)*2 ); ui->tableViewFrequencyList->setSelectionBehavior(QAbstractItemView::SelectRows); ui->tableViewFrequencyList->setSelectionMode(QAbstractItemView::SingleSelection); ui->tableViewFrequencyList->installEventFilter(this); // Demod Selection in Frequency List Table. ComboBoxDelegateModulation* delegateModulation = new ComboBoxDelegateModulation(this); ui->tableViewFrequencyList->setItemDelegateForColumn(2, delegateModulation); // Bookmarks Context menu contextmenu = new QMenu(this); // MenuItem Delete { QAction* action = new QAction("Delete Bookmark", this); contextmenu->addAction(action); connect(action, SIGNAL(triggered()), this, SLOT(DeleteSelectedBookmark())); } // MenuItem Add { actionAddBookmark = new QAction("Add Bookmark", this); contextmenu->addAction(actionAddBookmark); } ui->tableViewFrequencyList->setContextMenuPolicy(Qt::CustomContextMenu); connect(ui->tableViewFrequencyList, SIGNAL(customContextMenuRequested(const QPoint&)), this, SLOT(ShowContextMenu(const QPoint&))); // Update GUI Bookmarks::Get().load(); bookmarksTableModel->update(); m_currentFrequency=0; m_updating=false; // TagList updateTags(); connect(ui->tableViewFrequencyList, SIGNAL(activated(const QModelIndex &)), this, SLOT(activated(const QModelIndex &))); connect(ui->tableViewFrequencyList, SIGNAL(doubleClicked(const QModelIndex &)), this, SLOT(doubleClicked(const QModelIndex &))); connect(bookmarksTableModel, SIGNAL(dataChanged(const QModelIndex &, const QModelIndex &)), this, SLOT(onDataChanged(const QModelIndex &, const QModelIndex &))); connect(&Bookmarks::Get(), SIGNAL(TagListChanged()), ui->tableWidgetTagList, SLOT(updateTags())); connect(&Bookmarks::Get(), SIGNAL(BookmarksChanged()), bookmarksTableModel, SLOT(update())); }
bool Bookmarks::setTagChecked(QString tagName, bool bChecked) { int idx = getTagIndex(tagName); if (idx == -1) return false; m_TagList[idx].active = bChecked; emit BookmarksChanged(); emit TagListChanged(); return true; }
TagInfo &Bookmarks::findOrAddTag(QString tagName) { tagName = tagName.trimmed(); if (tagName.isEmpty()) tagName=TagInfo::strUntagged; int idx = getTagIndex(tagName); if (idx != -1) return m_TagList[idx]; TagInfo info; info.name=tagName; m_TagList.append(info); emit TagListChanged(); return m_TagList.last(); }
bool Bookmarks::removeTag(QString tagName) { tagName = tagName.trimmed(); // Do not delete "Untagged" tag. if(tagName.compare(TagInfo::strUntagged, tagName)==0) return false; int idx = getTagIndex(tagName); if (idx == -1) return false; // Delete Tag from all Bookmarks that use it. TagInfo* pTagToDelete = &m_TagList[idx]; for(int i=0; i<m_BookmarkList.size(); ++i) { BookmarkInfo& bmi = m_BookmarkList[i]; for(int t=0; t<bmi.tags.size(); ++t) { TagInfo* pTag = bmi.tags[t]; if(pTag == pTagToDelete) { if(bmi.tags.size()>1) bmi.tags.removeAt(t); else bmi.tags[0] = &findOrAddTag(TagInfo::strUntagged); } } } // Delete Tag. m_TagList.removeAt(idx); emit BookmarksChanged(); emit TagListChanged(); return true; }