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();