ui: Fixes and improvements for bookmarks
* moved bookmark buttons behind search bar * suggest qualified name when creating, file name for files * fixed bug when updating bookmark category * changed comment toggle arrow * changed edit and delete icons * fixed undo for edge bookmarks * keep categories always alphabetical regardless of subsorting * keep category expansion state when opening and closing browser * removed QtBookmarkBar, moved logic into QtBookmarkView * added bookmarks Menu with shortcuts Ctrl + D: Create Bookmark Ctrl + B: Bookmark Manager
This commit is contained in:
@@ -73,10 +73,10 @@ void QtBookmarkBrowser::setupBookmarkBrowser()
|
||||
orderLabel->setObjectName("order_label");
|
||||
headerLayout->addWidget(orderLabel);
|
||||
|
||||
m_orderNames.push_back("Date des.");
|
||||
m_orderNames.push_back("Date asc.");
|
||||
m_orderNames.push_back("Name des.");
|
||||
m_orderNames.push_back("Name asc.");
|
||||
m_orderNames.push_back("Name des.");
|
||||
m_orderNames.push_back("Date asc.");
|
||||
m_orderNames.push_back("Date des.");
|
||||
|
||||
m_orderComboBox = new QComboBox(this);
|
||||
// m_orderComboBox->setToolTip("Select Bookmark Order");
|
||||
@@ -105,8 +105,6 @@ void QtBookmarkBrowser::setupBookmarkBrowser()
|
||||
m_bookmarkTree->setIndentation(0);
|
||||
m_bookmarkTree->setHeaderLabel("Bookmarks");
|
||||
|
||||
connect(m_bookmarkTree, SIGNAL(itemExpanded(QTreeWidgetItem*)), this, SLOT(categoryExpansionChanged(QTreeWidgetItem*)));
|
||||
connect(m_bookmarkTree, SIGNAL(itemCollapsed(QTreeWidgetItem*)), this, SLOT(categoryExpansionChanged(QTreeWidgetItem*)));
|
||||
connect(m_bookmarkTree, SIGNAL(itemClicked(QTreeWidgetItem*, int)), this, SLOT(treeItemClicked(QTreeWidgetItem*, int)));
|
||||
|
||||
bodyLayout->addWidget(m_bookmarkTree);
|
||||
@@ -124,21 +122,46 @@ void QtBookmarkBrowser::setupBookmarkBrowser()
|
||||
|
||||
void QtBookmarkBrowser::setBookmarks(const std::vector<std::shared_ptr<Bookmark>>& bookmarks)
|
||||
{
|
||||
std::map<QString, bool> wasCategoryExpanded;
|
||||
for (int i = 0; i < m_bookmarkTree->topLevelItemCount(); i++)
|
||||
{
|
||||
QTreeWidgetItem* item = m_bookmarkTree->topLevelItem(i);
|
||||
wasCategoryExpanded.emplace(item->whatsThis(0), item->isExpanded());
|
||||
}
|
||||
|
||||
m_bookmarkTree->clear();
|
||||
|
||||
std::map<std::string, BookmarkCategory> categoryNamesOrdered;
|
||||
for (std::shared_ptr<Bookmark> bookmark: bookmarks)
|
||||
{
|
||||
categoryNamesOrdered.emplace(bookmark->getCategory().getName(), bookmark->getCategory());
|
||||
}
|
||||
|
||||
for (auto p : categoryNamesOrdered)
|
||||
{
|
||||
findOrCreateTreeCategory(p.second);
|
||||
}
|
||||
|
||||
for (std::shared_ptr<Bookmark> bookmark: bookmarks)
|
||||
{
|
||||
QtBookmark* qtBookmark = new QtBookmark();
|
||||
qtBookmark->setBookmark(bookmark);
|
||||
|
||||
QTreeWidgetItem* top = findOrCreateTreeCategory(bookmark->getCategory());
|
||||
QTreeWidgetItem* treeWidgetItem = new QTreeWidgetItem(top);
|
||||
QTreeWidgetItem* categoryItem = findOrCreateTreeCategory(bookmark->getCategory());
|
||||
QTreeWidgetItem* treeWidgetItem = new QTreeWidgetItem(categoryItem);
|
||||
m_bookmarkTree->setItemWidget(treeWidgetItem, 0, qtBookmark);
|
||||
top->addChild(treeWidgetItem);
|
||||
categoryItem->addChild(treeWidgetItem);
|
||||
qtBookmark->setTreeWidgetItem(categoryItem);
|
||||
|
||||
qtBookmark->setTreeWidgetItem(top);
|
||||
bool wasExpanded = true;
|
||||
auto it = wasCategoryExpanded.find(categoryItem->whatsThis(0));
|
||||
if (it != wasCategoryExpanded.end())
|
||||
{
|
||||
wasExpanded = it->second;
|
||||
}
|
||||
|
||||
top->setExpanded(true);
|
||||
categoryItem->setExpanded(!wasExpanded);
|
||||
categoryItem->setExpanded(wasExpanded);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -164,15 +187,6 @@ void QtBookmarkBrowser::filterOrOrderChanged(const QString& text)
|
||||
MessageDisplayBookmarks(getSelectedFilter(), getSelectedOrder()).dispatch();
|
||||
}
|
||||
|
||||
void QtBookmarkBrowser::categoryExpansionChanged(QTreeWidgetItem* item)
|
||||
{
|
||||
QtBookmarkCategory* category = dynamic_cast<QtBookmarkCategory*>(m_bookmarkTree->itemWidget(item, 0));
|
||||
if (category != NULL)
|
||||
{
|
||||
category->updateArrow();
|
||||
}
|
||||
}
|
||||
|
||||
void QtBookmarkBrowser::treeItemClicked(QTreeWidgetItem* item, int column)
|
||||
{
|
||||
QtBookmarkCategory* category = dynamic_cast<QtBookmarkCategory*>(m_bookmarkTree->itemWidget(item, 0));
|
||||
@@ -190,16 +204,6 @@ void QtBookmarkBrowser::treeItemClicked(QTreeWidgetItem* item, int column)
|
||||
}
|
||||
}
|
||||
|
||||
void QtBookmarkBrowser::handleMessage(MessageDeleteBookmark* message)
|
||||
{
|
||||
MessageDisplayBookmarks(getSelectedFilter(), getSelectedOrder()).dispatch();
|
||||
}
|
||||
|
||||
void QtBookmarkBrowser::handleMessage(MessageEditBookmark* message)
|
||||
{
|
||||
MessageDisplayBookmarks(getSelectedFilter(), getSelectedOrder()).dispatch();
|
||||
}
|
||||
|
||||
MessageDisplayBookmarks::BookmarkFilter QtBookmarkBrowser::getSelectedFilter()
|
||||
{
|
||||
std::string text = m_filterComboBox->currentText().toStdString();
|
||||
|
||||
@@ -7,10 +7,7 @@
|
||||
|
||||
#include "qt/window/QtWindow.h"
|
||||
|
||||
#include "utility/messaging/MessageListener.h"
|
||||
#include "utility/messaging/type/MessageDeleteBookmark.h"
|
||||
#include "utility/messaging/type/MessageDisplayBookmarks.h"
|
||||
#include "utility/messaging/type/MessageEditBookmark.h"
|
||||
|
||||
class Bookmark;
|
||||
class BookmarkCategory;
|
||||
@@ -18,8 +15,6 @@ class QtBookmark;
|
||||
|
||||
class QtBookmarkBrowser
|
||||
: public QtWindow
|
||||
, public MessageListener<MessageDeleteBookmark>
|
||||
, public MessageListener<MessageEditBookmark>
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
@@ -38,13 +33,9 @@ protected:
|
||||
|
||||
private slots:
|
||||
void filterOrOrderChanged(const QString& text);
|
||||
void categoryExpansionChanged(QTreeWidgetItem* item);
|
||||
void treeItemClicked(QTreeWidgetItem* item, int column);
|
||||
|
||||
private:
|
||||
virtual void handleMessage(MessageDeleteBookmark* message) override;
|
||||
virtual void handleMessage(MessageEditBookmark* message) override;
|
||||
|
||||
MessageDisplayBookmarks::BookmarkFilter getSelectedFilter();
|
||||
MessageDisplayBookmarks::BookmarkOrder getSelectedOrder();
|
||||
|
||||
|
||||
@@ -29,6 +29,7 @@
|
||||
#include "utility/file/FileSystem.h"
|
||||
#include "utility/logging/logging.h"
|
||||
#include "utility/messaging/type/MessageCodeReference.h"
|
||||
#include "utility/messaging/type/MessageDisplayBookmarkCreator.h"
|
||||
#include "utility/messaging/type/MessageDisplayBookmarks.h"
|
||||
#include "utility/messaging/type/MessageEnteredLicense.h"
|
||||
#include "utility/messaging/type/MessageFind.h"
|
||||
@@ -114,6 +115,7 @@ QtMainWindow::QtMainWindow()
|
||||
setupProjectMenu();
|
||||
setupEditMenu();
|
||||
setupViewMenu();
|
||||
setupBookmarksMenu();
|
||||
setupHelpMenu();
|
||||
|
||||
// Need to call loadLayout here for right DockWidget size on Linux
|
||||
@@ -578,6 +580,16 @@ void QtMainWindow::toggleShowDockWidgetTitleBars()
|
||||
setShowDockWidgetTitleBars(!m_showDockWidgetTitleBars);
|
||||
}
|
||||
|
||||
void QtMainWindow::showBookmarkCreator()
|
||||
{
|
||||
MessageDisplayBookmarkCreator().dispatch();
|
||||
}
|
||||
|
||||
void QtMainWindow::showBookmarkBrowser()
|
||||
{
|
||||
MessageDisplayBookmarks().dispatch();
|
||||
}
|
||||
|
||||
void QtMainWindow::setupProjectMenu()
|
||||
{
|
||||
QMenu *menu = new QMenu(tr("&Project"), this);
|
||||
@@ -677,6 +689,15 @@ void QtMainWindow::setupViewMenu()
|
||||
m_viewMenu = menu;
|
||||
}
|
||||
|
||||
void QtMainWindow::setupBookmarksMenu()
|
||||
{
|
||||
QMenu *menu = new QMenu(tr("&Bookmarks"), this);
|
||||
menuBar()->addMenu(menu);
|
||||
|
||||
menu->addAction(tr("Bookmark Active Symbols..."), this, SLOT(showBookmarkCreator()), QKeySequence(Qt::CTRL + Qt::Key_D));
|
||||
menu->addAction(tr("Bookmark Manager"), this, SLOT(showBookmarkBrowser()), QKeySequence(Qt::CTRL + Qt::Key_B));
|
||||
}
|
||||
|
||||
void QtMainWindow::setupHelpMenu()
|
||||
{
|
||||
QMenu *menu = new QMenu(tr("&Help"), this);
|
||||
|
||||
@@ -123,6 +123,9 @@ public slots:
|
||||
private slots:
|
||||
void toggleShowDockWidgetTitleBars();
|
||||
|
||||
void showBookmarkCreator();
|
||||
void showBookmarkBrowser();
|
||||
|
||||
private:
|
||||
struct DockWidget
|
||||
{
|
||||
@@ -135,6 +138,7 @@ private:
|
||||
void setupEditMenu();
|
||||
void setupProjectMenu();
|
||||
void setupViewMenu();
|
||||
void setupBookmarksMenu();
|
||||
void setupHelpMenu();
|
||||
|
||||
void setTrialActionsEnabled(bool enabled);
|
||||
|
||||
Reference in New Issue
Block a user