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:
Eberhard Graether
2017-04-26 00:33:34 +02:00
parent 4ac41de61e
commit 0468168d61
32 changed files with 398 additions and 563 deletions
+33 -29
View File
@@ -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();
+21
View File
@@ -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);
+4
View File
@@ -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);