mirror of
https://gitee.com/vnotex/vnote.git
synced 2025-07-05 13:59:52 +08:00
NotebookExplorer: support view mode for notbooks
This commit is contained in:
parent
3d77c29393
commit
89cd40d0cf
@ -186,6 +186,18 @@ namespace vnotex
|
|||||||
// Used for comparison.
|
// Used for comparison.
|
||||||
ComparisonRole = 0x0103
|
ComparisonRole = 0x0103
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum ViewOrder
|
||||||
|
{
|
||||||
|
OrderedByConfiguration = 0,
|
||||||
|
OrderedByName,
|
||||||
|
OrderedByNameReversed,
|
||||||
|
OrderedByCreatedTime,
|
||||||
|
OrderedByCreatedTimeReversed,
|
||||||
|
OrderedByModifiedTime,
|
||||||
|
OrderedByModifiedTimeReversed,
|
||||||
|
ViewOrderMax
|
||||||
|
};
|
||||||
} // ns vnotex
|
} // ns vnotex
|
||||||
|
|
||||||
Q_DECLARE_OPERATORS_FOR_FLAGS(vnotex::FindOptions);
|
Q_DECLARE_OPERATORS_FOR_FLAGS(vnotex::FindOptions);
|
||||||
|
@ -29,6 +29,8 @@ void WidgetConfig::init(const QJsonObject &p_app,
|
|||||||
|
|
||||||
m_findAndReplaceOptions = static_cast<FindOptions>(READINT(QStringLiteral("find_and_replace_options")));
|
m_findAndReplaceOptions = static_cast<FindOptions>(READINT(QStringLiteral("find_and_replace_options")));
|
||||||
|
|
||||||
|
m_notebookSelectorViewOrder = READINT(QStringLiteral("notebook_selector_view_order"));
|
||||||
|
|
||||||
{
|
{
|
||||||
m_nodeExplorerViewOrder = READINT(QStringLiteral("node_explorer_view_order"));
|
m_nodeExplorerViewOrder = READINT(QStringLiteral("node_explorer_view_order"));
|
||||||
m_nodeExplorerExploreMode = READINT(QStringLiteral("node_explorer_explore_mode"));
|
m_nodeExplorerExploreMode = READINT(QStringLiteral("node_explorer_explore_mode"));
|
||||||
@ -58,6 +60,8 @@ QJsonObject WidgetConfig::toJson() const
|
|||||||
|
|
||||||
obj[QStringLiteral("find_and_replace_options")] = static_cast<int>(m_findAndReplaceOptions);
|
obj[QStringLiteral("find_and_replace_options")] = static_cast<int>(m_findAndReplaceOptions);
|
||||||
|
|
||||||
|
obj[QStringLiteral("notebook_selector_view_order")] = m_notebookSelectorViewOrder;
|
||||||
|
|
||||||
obj[QStringLiteral("node_explorer_view_order")] = m_nodeExplorerViewOrder;
|
obj[QStringLiteral("node_explorer_view_order")] = m_nodeExplorerViewOrder;
|
||||||
obj[QStringLiteral("node_explorer_explore_mode")] = m_nodeExplorerExploreMode;
|
obj[QStringLiteral("node_explorer_explore_mode")] = m_nodeExplorerExploreMode;
|
||||||
obj[QStringLiteral("node_explorer_external_files_visible")] = m_nodeExplorerExternalFilesVisible;
|
obj[QStringLiteral("node_explorer_external_files_visible")] = m_nodeExplorerExternalFilesVisible;
|
||||||
@ -114,6 +118,16 @@ void WidgetConfig::setNodeExplorerViewOrder(int p_viewOrder)
|
|||||||
updateConfig(m_nodeExplorerViewOrder, p_viewOrder, this);
|
updateConfig(m_nodeExplorerViewOrder, p_viewOrder, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int WidgetConfig::getNotebookSelectorViewOrder() const
|
||||||
|
{
|
||||||
|
return m_notebookSelectorViewOrder;
|
||||||
|
}
|
||||||
|
|
||||||
|
void WidgetConfig::setNotebookSelectorViewOrder(int p_viewOrder)
|
||||||
|
{
|
||||||
|
updateConfig(m_notebookSelectorViewOrder, p_viewOrder, this);
|
||||||
|
}
|
||||||
|
|
||||||
int WidgetConfig::getNodeExplorerExploreMode() const
|
int WidgetConfig::getNodeExplorerExploreMode() const
|
||||||
{
|
{
|
||||||
return m_nodeExplorerExploreMode;
|
return m_nodeExplorerExploreMode;
|
||||||
|
@ -27,6 +27,9 @@ namespace vnotex
|
|||||||
FindOptions getFindAndReplaceOptions() const;
|
FindOptions getFindAndReplaceOptions() const;
|
||||||
void setFindAndReplaceOptions(FindOptions p_options);
|
void setFindAndReplaceOptions(FindOptions p_options);
|
||||||
|
|
||||||
|
int getNotebookSelectorViewOrder() const;
|
||||||
|
void setNotebookSelectorViewOrder(int p_viewOrder);
|
||||||
|
|
||||||
int getNodeExplorerViewOrder() const;
|
int getNodeExplorerViewOrder() const;
|
||||||
void setNodeExplorerViewOrder(int p_viewOrder);
|
void setNodeExplorerViewOrder(int p_viewOrder);
|
||||||
|
|
||||||
@ -67,6 +70,8 @@ namespace vnotex
|
|||||||
|
|
||||||
FindOptions m_findAndReplaceOptions = FindOption::FindNone;
|
FindOptions m_findAndReplaceOptions = FindOption::FindNone;
|
||||||
|
|
||||||
|
int m_notebookSelectorViewOrder = 0;
|
||||||
|
|
||||||
int m_nodeExplorerViewOrder = 0;
|
int m_nodeExplorerViewOrder = 0;
|
||||||
|
|
||||||
int m_nodeExplorerExploreMode = 1;
|
int m_nodeExplorerExploreMode = 1;
|
||||||
|
@ -487,7 +487,9 @@
|
|||||||
"outline_section_number_enabled" : false,
|
"outline_section_number_enabled" : false,
|
||||||
"//comment" : "Default find options in FindAndReplace",
|
"//comment" : "Default find options in FindAndReplace",
|
||||||
"find_and_replace_options" : 16,
|
"find_and_replace_options" : 16,
|
||||||
"//comment" : "View order of the node explorer (NotebookNodeExplorer::ViewOrder)",
|
"//comment" : "View order of the notebook selector (enum ViewOrder)",
|
||||||
|
"notebook_selector_view_order" : 0,
|
||||||
|
"//comment" : "View order of the node explorer (enum ViewOrder)",
|
||||||
"node_explorer_view_order" : 0,
|
"node_explorer_view_order" : 0,
|
||||||
"node_explorer_external_files_visible" : true,
|
"node_explorer_external_files_visible" : true,
|
||||||
"node_explorer_auto_import_external_files_enabled" : true,
|
"node_explorer_auto_import_external_files_enabled" : true,
|
||||||
|
@ -19,7 +19,6 @@
|
|||||||
#include <core/vnotex.h>
|
#include <core/vnotex.h>
|
||||||
#include "mainwindow.h"
|
#include "mainwindow.h"
|
||||||
#include <notebook/notebook.h>
|
#include <notebook/notebook.h>
|
||||||
#include <core/notebookmgr.h>
|
|
||||||
#include <utils/iconutils.h>
|
#include <utils/iconutils.h>
|
||||||
#include <utils/widgetutils.h>
|
#include <utils/widgetutils.h>
|
||||||
#include <utils/pathutils.h>
|
#include <utils/pathutils.h>
|
||||||
@ -29,6 +28,7 @@
|
|||||||
#include <core/configmgr.h>
|
#include <core/configmgr.h>
|
||||||
#include <core/coreconfig.h>
|
#include <core/coreconfig.h>
|
||||||
#include <core/widgetconfig.h>
|
#include <core/widgetconfig.h>
|
||||||
|
#include <core/sessionconfig.h>
|
||||||
#include <core/events.h>
|
#include <core/events.h>
|
||||||
#include <core/exception.h>
|
#include <core/exception.h>
|
||||||
#include <core/fileopenparameters.h>
|
#include <core/fileopenparameters.h>
|
||||||
@ -65,11 +65,14 @@ void NotebookExplorer::setupUI()
|
|||||||
auto titleBar = setupTitleBar(this);
|
auto titleBar = setupTitleBar(this);
|
||||||
mainLayout->addWidget(titleBar);
|
mainLayout->addWidget(titleBar);
|
||||||
|
|
||||||
|
const auto &widgetConfig = ConfigMgr::getInst().getWidgetConfig();
|
||||||
|
|
||||||
// Selector.
|
// Selector.
|
||||||
m_selector = new NotebookSelector(this);
|
m_selector = new NotebookSelector(this);
|
||||||
m_selector->setWhatsThis(tr("Select one of all the notebooks as current notebook.<br/>"
|
m_selector->setWhatsThis(tr("Select one of all the notebooks as current notebook.<br/>"
|
||||||
"Move mouse on one item to check its details."));
|
"Move mouse on one item to check its details."));
|
||||||
NavigationModeMgr::getInst().registerNavigationTarget(m_selector);
|
NavigationModeMgr::getInst().registerNavigationTarget(m_selector);
|
||||||
|
m_selector->setViewOrder(widgetConfig.getNotebookSelectorViewOrder());
|
||||||
connect(m_selector, QOverload<int>::of(&QComboBox::activated),
|
connect(m_selector, QOverload<int>::of(&QComboBox::activated),
|
||||||
this, [this](int p_idx) {
|
this, [this](int p_idx) {
|
||||||
auto id = static_cast<ID>(m_selector->itemData(p_idx).toULongLong());
|
auto id = static_cast<ID>(m_selector->itemData(p_idx).toULongLong());
|
||||||
@ -79,7 +82,6 @@ void NotebookExplorer::setupUI()
|
|||||||
this, &NotebookExplorer::newNotebook);
|
this, &NotebookExplorer::newNotebook);
|
||||||
mainLayout->addWidget(m_selector);
|
mainLayout->addWidget(m_selector);
|
||||||
|
|
||||||
const auto &widgetConfig = ConfigMgr::getInst().getWidgetConfig();
|
|
||||||
m_nodeExplorer = new NotebookNodeExplorer(this);
|
m_nodeExplorer = new NotebookNodeExplorer(this);
|
||||||
m_nodeExplorer->setViewOrder(widgetConfig.getNodeExplorerViewOrder());
|
m_nodeExplorer->setViewOrder(widgetConfig.getNodeExplorerViewOrder());
|
||||||
m_nodeExplorer->setExploreMode(widgetConfig.getNodeExplorerExploreMode());
|
m_nodeExplorer->setExploreMode(widgetConfig.getNodeExplorerExploreMode());
|
||||||
@ -114,8 +116,13 @@ TitleBar *NotebookExplorer::setupTitleBar(QWidget *p_parent)
|
|||||||
|
|
||||||
{
|
{
|
||||||
auto viewMenu = WidgetsFactory::createMenu(titleBar);
|
auto viewMenu = WidgetsFactory::createMenu(titleBar);
|
||||||
setupViewMenu(viewMenu);
|
|
||||||
titleBar->addActionButton(QStringLiteral("view.svg"), tr("View"), viewMenu);
|
auto notebookMenu = viewMenu->addMenu(tr("Notebooks"));
|
||||||
|
setupViewMenu(notebookMenu, true);
|
||||||
|
auto nodeMenu = viewMenu->addMenu(tr("Notes"));
|
||||||
|
setupViewMenu(nodeMenu, false);
|
||||||
|
|
||||||
|
titleBar->addActionButton(QStringLiteral("view.svg"), tr("View By"), viewMenu);
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
@ -210,9 +217,7 @@ TitleBar *NotebookExplorer::setupTitleBar(QWidget *p_parent)
|
|||||||
|
|
||||||
void NotebookExplorer::loadNotebooks()
|
void NotebookExplorer::loadNotebooks()
|
||||||
{
|
{
|
||||||
auto ¬ebookMgr = VNoteX::getInst().getNotebookMgr();
|
m_selector->loadNotebooks();
|
||||||
const auto ¬ebooks = notebookMgr.getNotebooks();
|
|
||||||
m_selector->setNotebooks(notebooks);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void NotebookExplorer::reloadNotebook(const Notebook *p_notebook)
|
void NotebookExplorer::reloadNotebook(const Notebook *p_notebook)
|
||||||
@ -381,47 +386,50 @@ const QSharedPointer<Notebook> &NotebookExplorer::currentNotebook() const
|
|||||||
return m_currentNotebook;
|
return m_currentNotebook;
|
||||||
}
|
}
|
||||||
|
|
||||||
void NotebookExplorer::setupViewMenu(QMenu *p_menu)
|
void NotebookExplorer::setupViewMenu(QMenu *p_menu, bool p_isNotebookView)
|
||||||
{
|
{
|
||||||
auto ag = new QActionGroup(p_menu);
|
auto ag = new QActionGroup(p_menu);
|
||||||
|
|
||||||
auto act = ag->addAction(tr("View By Configuration"));
|
auto act = ag->addAction(tr("View By Configuration"));
|
||||||
act->setCheckable(true);
|
act->setCheckable(true);
|
||||||
act->setChecked(true);
|
act->setChecked(true);
|
||||||
act->setData(NotebookNodeExplorer::ViewOrder::OrderedByConfiguration);
|
act->setData(ViewOrder::OrderedByConfiguration);
|
||||||
p_menu->addAction(act);
|
p_menu->addAction(act);
|
||||||
|
|
||||||
act = ag->addAction(tr("View By Name"));
|
act = ag->addAction(tr("View By Name"));
|
||||||
act->setCheckable(true);
|
act->setCheckable(true);
|
||||||
act->setData(NotebookNodeExplorer::ViewOrder::OrderedByName);
|
act->setData(ViewOrder::OrderedByName);
|
||||||
p_menu->addAction(act);
|
p_menu->addAction(act);
|
||||||
|
|
||||||
act = ag->addAction(tr("View By Name (Reversed)"));
|
act = ag->addAction(tr("View By Name (Reversed)"));
|
||||||
act->setCheckable(true);
|
act->setCheckable(true);
|
||||||
act->setData(NotebookNodeExplorer::ViewOrder::OrderedByNameReversed);
|
act->setData(ViewOrder::OrderedByNameReversed);
|
||||||
p_menu->addAction(act);
|
p_menu->addAction(act);
|
||||||
|
|
||||||
act = ag->addAction(tr("View By Created Time"));
|
act = ag->addAction(tr("View By Created Time"));
|
||||||
act->setCheckable(true);
|
act->setCheckable(true);
|
||||||
act->setData(NotebookNodeExplorer::ViewOrder::OrderedByCreatedTime);
|
act->setData(ViewOrder::OrderedByCreatedTime);
|
||||||
p_menu->addAction(act);
|
p_menu->addAction(act);
|
||||||
|
|
||||||
act = ag->addAction(tr("View By Created Time (Reversed)"));
|
act = ag->addAction(tr("View By Created Time (Reversed)"));
|
||||||
act->setCheckable(true);
|
act->setCheckable(true);
|
||||||
act->setData(NotebookNodeExplorer::ViewOrder::OrderedByCreatedTimeReversed);
|
act->setData(ViewOrder::OrderedByCreatedTimeReversed);
|
||||||
p_menu->addAction(act);
|
p_menu->addAction(act);
|
||||||
|
|
||||||
act = ag->addAction(tr("View By Modified Time"));
|
if (!p_isNotebookView) {
|
||||||
act->setCheckable(true);
|
act = ag->addAction(tr("View By Modified Time"));
|
||||||
act->setData(NotebookNodeExplorer::ViewOrder::OrderedByModifiedTime);
|
act->setCheckable(true);
|
||||||
p_menu->addAction(act);
|
act->setData(ViewOrder::OrderedByModifiedTime);
|
||||||
|
p_menu->addAction(act);
|
||||||
|
|
||||||
act = ag->addAction(tr("View By Modified Time (Reversed)"));
|
act = ag->addAction(tr("View By Modified Time (Reversed)"));
|
||||||
act->setCheckable(true);
|
act->setCheckable(true);
|
||||||
act->setData(NotebookNodeExplorer::ViewOrder::OrderedByModifiedTimeReversed);
|
act->setData(ViewOrder::OrderedByModifiedTimeReversed);
|
||||||
p_menu->addAction(act);
|
p_menu->addAction(act);
|
||||||
|
}
|
||||||
|
|
||||||
int viewOrder = ConfigMgr::getInst().getWidgetConfig().getNodeExplorerViewOrder();
|
const auto &widgetConfig = ConfigMgr::getInst().getWidgetConfig();
|
||||||
|
int viewOrder = p_isNotebookView ? widgetConfig.getNotebookSelectorViewOrder() : widgetConfig.getNodeExplorerViewOrder();
|
||||||
for (const auto &act : ag->actions()) {
|
for (const auto &act : ag->actions()) {
|
||||||
if (act->data().toInt() == viewOrder) {
|
if (act->data().toInt() == viewOrder) {
|
||||||
act->setChecked(true);
|
act->setChecked(true);
|
||||||
@ -429,10 +437,15 @@ void NotebookExplorer::setupViewMenu(QMenu *p_menu)
|
|||||||
}
|
}
|
||||||
|
|
||||||
connect(ag, &QActionGroup::triggered,
|
connect(ag, &QActionGroup::triggered,
|
||||||
this, [this](QAction *p_action) {
|
this, [this, p_isNotebookView](QAction *p_action) {
|
||||||
int order = p_action->data().toInt();
|
const int order = p_action->data().toInt();
|
||||||
ConfigMgr::getInst().getWidgetConfig().setNodeExplorerViewOrder(order);
|
if (p_isNotebookView) {
|
||||||
m_nodeExplorer->setViewOrder(order);
|
ConfigMgr::getInst().getWidgetConfig().setNotebookSelectorViewOrder(order);
|
||||||
|
m_selector->setViewOrder(order);
|
||||||
|
} else {
|
||||||
|
ConfigMgr::getInst().getWidgetConfig().setNodeExplorerViewOrder(order);
|
||||||
|
m_nodeExplorer->setViewOrder(order);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -71,7 +71,7 @@ namespace vnotex
|
|||||||
|
|
||||||
Node *checkNotebookAndGetCurrentExploredFolderNode() const;
|
Node *checkNotebookAndGetCurrentExploredFolderNode() const;
|
||||||
|
|
||||||
void setupViewMenu(QMenu *p_menu);
|
void setupViewMenu(QMenu *p_menu, bool p_isNotebookView);
|
||||||
|
|
||||||
void setupRecycleBinMenu(QMenu *p_menu);
|
void setupRecycleBinMenu(QMenu *p_menu);
|
||||||
|
|
||||||
|
@ -1852,7 +1852,7 @@ void NotebookNodeExplorer::sortNodes(QVector<QSharedPointer<Node>> &p_nodes, int
|
|||||||
reversed = true;
|
reversed = true;
|
||||||
Q_FALLTHROUGH();
|
Q_FALLTHROUGH();
|
||||||
case ViewOrder::OrderedByName:
|
case ViewOrder::OrderedByName:
|
||||||
std::sort(p_nodes.begin() + p_start, p_nodes.begin() + p_end, [reversed](const QSharedPointer<Node> &p_a, const QSharedPointer<Node> p_b) {
|
std::sort(p_nodes.begin() + p_start, p_nodes.begin() + p_end, [reversed](const QSharedPointer<Node> &p_a, const QSharedPointer<Node> &p_b) {
|
||||||
if (reversed) {
|
if (reversed) {
|
||||||
return p_b->getName().toLower() < p_a->getName().toLower();
|
return p_b->getName().toLower() < p_a->getName().toLower();
|
||||||
} else {
|
} else {
|
||||||
@ -1865,7 +1865,7 @@ void NotebookNodeExplorer::sortNodes(QVector<QSharedPointer<Node>> &p_nodes, int
|
|||||||
reversed = true;
|
reversed = true;
|
||||||
Q_FALLTHROUGH();
|
Q_FALLTHROUGH();
|
||||||
case ViewOrder::OrderedByCreatedTime:
|
case ViewOrder::OrderedByCreatedTime:
|
||||||
std::sort(p_nodes.begin() + p_start, p_nodes.begin() + p_end, [reversed](const QSharedPointer<Node> &p_a, const QSharedPointer<Node> p_b) {
|
std::sort(p_nodes.begin() + p_start, p_nodes.begin() + p_end, [reversed](const QSharedPointer<Node> &p_a, const QSharedPointer<Node> &p_b) {
|
||||||
if (reversed) {
|
if (reversed) {
|
||||||
return p_b->getCreatedTimeUtc() < p_a->getCreatedTimeUtc();
|
return p_b->getCreatedTimeUtc() < p_a->getCreatedTimeUtc();
|
||||||
} else {
|
} else {
|
||||||
@ -1878,7 +1878,7 @@ void NotebookNodeExplorer::sortNodes(QVector<QSharedPointer<Node>> &p_nodes, int
|
|||||||
reversed = true;
|
reversed = true;
|
||||||
Q_FALLTHROUGH();
|
Q_FALLTHROUGH();
|
||||||
case ViewOrder::OrderedByModifiedTime:
|
case ViewOrder::OrderedByModifiedTime:
|
||||||
std::sort(p_nodes.begin() + p_start, p_nodes.begin() + p_end, [reversed](const QSharedPointer<Node> &p_a, const QSharedPointer<Node> p_b) {
|
std::sort(p_nodes.begin() + p_start, p_nodes.begin() + p_end, [reversed](const QSharedPointer<Node> &p_a, const QSharedPointer<Node> &p_b) {
|
||||||
if (reversed) {
|
if (reversed) {
|
||||||
return p_b->getModifiedTimeUtc() < p_a->getModifiedTimeUtc();
|
return p_b->getModifiedTimeUtc() < p_a->getModifiedTimeUtc();
|
||||||
} else {
|
} else {
|
||||||
|
@ -10,6 +10,7 @@
|
|||||||
#include "qtreewidgetstatecache.h"
|
#include "qtreewidgetstatecache.h"
|
||||||
#include "clipboarddata.h"
|
#include "clipboarddata.h"
|
||||||
#include "navigationmodewrapper.h"
|
#include "navigationmodewrapper.h"
|
||||||
|
#include "global.h"
|
||||||
|
|
||||||
class QSplitter;
|
class QSplitter;
|
||||||
class QMenu;
|
class QMenu;
|
||||||
@ -78,18 +79,6 @@ namespace vnotex
|
|||||||
bool m_loaded = false;
|
bool m_loaded = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
enum ViewOrder
|
|
||||||
{
|
|
||||||
OrderedByConfiguration = 0,
|
|
||||||
OrderedByName,
|
|
||||||
OrderedByNameReversed,
|
|
||||||
OrderedByCreatedTime,
|
|
||||||
OrderedByCreatedTimeReversed,
|
|
||||||
OrderedByModifiedTime,
|
|
||||||
OrderedByModifiedTimeReversed,
|
|
||||||
ViewOrderMax
|
|
||||||
};
|
|
||||||
|
|
||||||
enum ExploreMode
|
enum ExploreMode
|
||||||
{
|
{
|
||||||
Combined = 0,
|
Combined = 0,
|
||||||
|
@ -7,8 +7,9 @@
|
|||||||
#include <QListView>
|
#include <QListView>
|
||||||
#include <QScrollBar>
|
#include <QScrollBar>
|
||||||
|
|
||||||
#include "vnotex.h"
|
#include <notebook/notebook.h>
|
||||||
#include "notebook/notebook.h"
|
#include <core/notebookmgr.h>
|
||||||
|
#include <core/vnotex.h>
|
||||||
#include <utils/iconutils.h>
|
#include <utils/iconutils.h>
|
||||||
#include <utils/widgetutils.h>
|
#include <utils/widgetutils.h>
|
||||||
|
|
||||||
@ -26,11 +27,15 @@ NotebookSelector::NotebookSelector(QWidget *p_parent)
|
|||||||
setSizeAdjustPolicy(QComboBox::AdjustToMinimumContentsLengthWithIcon);
|
setSizeAdjustPolicy(QComboBox::AdjustToMinimumContentsLengthWithIcon);
|
||||||
}
|
}
|
||||||
|
|
||||||
void NotebookSelector::setNotebooks(const QVector<QSharedPointer<Notebook>> &p_notebooks)
|
void NotebookSelector::loadNotebooks()
|
||||||
{
|
{
|
||||||
clear();
|
clear();
|
||||||
|
|
||||||
for (auto &nb : p_notebooks) {
|
auto ¬ebookMgr = VNoteX::getInst().getNotebookMgr();
|
||||||
|
auto notebooks = notebookMgr.getNotebooks();
|
||||||
|
sortNotebooks(notebooks);
|
||||||
|
|
||||||
|
for (auto &nb : notebooks) {
|
||||||
addNotebookItem(nb);
|
addNotebookItem(nb);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -39,6 +44,41 @@ void NotebookSelector::setNotebooks(const QVector<QSharedPointer<Notebook>> &p_n
|
|||||||
m_notebooksInitialized = true;
|
m_notebooksInitialized = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void NotebookSelector::sortNotebooks(QVector<QSharedPointer<Notebook>> &p_notebooks) const
|
||||||
|
{
|
||||||
|
bool reversed = false;
|
||||||
|
switch (m_viewOrder) {
|
||||||
|
case ViewOrder::OrderedByNameReversed:
|
||||||
|
reversed = true;
|
||||||
|
Q_FALLTHROUGH();
|
||||||
|
case ViewOrder::OrderedByName:
|
||||||
|
std::sort(p_notebooks.begin(), p_notebooks.end(), [reversed](const QSharedPointer<Notebook> &p_a, const QSharedPointer<Notebook> &p_b) {
|
||||||
|
if (reversed) {
|
||||||
|
return p_b->getName().toLower() < p_a->getName().toLower();
|
||||||
|
} else {
|
||||||
|
return p_a->getName().toLower() < p_b->getName().toLower();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
|
||||||
|
case ViewOrder::OrderedByCreatedTimeReversed:
|
||||||
|
reversed = true;
|
||||||
|
Q_FALLTHROUGH();
|
||||||
|
case ViewOrder::OrderedByCreatedTime:
|
||||||
|
std::sort(p_notebooks.begin(), p_notebooks.end(), [reversed](const QSharedPointer<Notebook> &p_a, const QSharedPointer<Notebook> &p_b) {
|
||||||
|
if (reversed) {
|
||||||
|
return p_b->getCreatedTimeUtc() < p_a->getCreatedTimeUtc();
|
||||||
|
} else {
|
||||||
|
return p_a->getCreatedTimeUtc() < p_b->getCreatedTimeUtc();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void NotebookSelector::reloadNotebook(const Notebook *p_notebook)
|
void NotebookSelector::reloadNotebook(const Notebook *p_notebook)
|
||||||
{
|
{
|
||||||
Q_ASSERT(p_notebook);
|
Q_ASSERT(p_notebook);
|
||||||
@ -216,3 +256,15 @@ void NotebookSelector::mousePressEvent(QMouseEvent *p_event)
|
|||||||
|
|
||||||
ComboBox::mousePressEvent(p_event);
|
ComboBox::mousePressEvent(p_event);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void NotebookSelector::setViewOrder(int p_order)
|
||||||
|
{
|
||||||
|
if (m_viewOrder == p_order) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (p_order >= 0 && p_order < ViewOrder::ViewOrderMax) {
|
||||||
|
m_viewOrder = static_cast<ViewOrder>(p_order);
|
||||||
|
loadNotebooks();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -6,6 +6,7 @@
|
|||||||
#include "global.h"
|
#include "global.h"
|
||||||
#include "navigationmode.h"
|
#include "navigationmode.h"
|
||||||
#include "combobox.h"
|
#include "combobox.h"
|
||||||
|
#include "notebooknodeexplorer.h"
|
||||||
|
|
||||||
namespace vnotex
|
namespace vnotex
|
||||||
{
|
{
|
||||||
@ -17,12 +18,14 @@ namespace vnotex
|
|||||||
public:
|
public:
|
||||||
explicit NotebookSelector(QWidget *p_parent = nullptr);
|
explicit NotebookSelector(QWidget *p_parent = nullptr);
|
||||||
|
|
||||||
void setNotebooks(const QVector<QSharedPointer<Notebook>> &p_notebooks);
|
void loadNotebooks();
|
||||||
|
|
||||||
void reloadNotebook(const Notebook *p_notebook);
|
void reloadNotebook(const Notebook *p_notebook);
|
||||||
|
|
||||||
void setCurrentNotebook(ID p_id);
|
void setCurrentNotebook(ID p_id);
|
||||||
|
|
||||||
|
void setViewOrder(int p_order);
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void newNotebookRequested();
|
void newNotebookRequested();
|
||||||
|
|
||||||
@ -53,11 +56,15 @@ namespace vnotex
|
|||||||
|
|
||||||
int findNotebook(ID p_id) const;
|
int findNotebook(ID p_id) const;
|
||||||
|
|
||||||
|
void sortNotebooks(QVector<QSharedPointer<Notebook>> &p_notebooks) const;
|
||||||
|
|
||||||
static void fetchIconColor(const QString &p_name, QString &p_fg, QString &p_bg);
|
static void fetchIconColor(const QString &p_name, QString &p_fg, QString &p_bg);
|
||||||
|
|
||||||
bool m_notebooksInitialized = false;
|
bool m_notebooksInitialized = false;
|
||||||
|
|
||||||
QVector<QModelIndex> m_navigationIndexes;
|
QVector<QModelIndex> m_navigationIndexes;
|
||||||
|
|
||||||
|
ViewOrder m_viewOrder = ViewOrder::OrderedByConfiguration;
|
||||||
};
|
};
|
||||||
} // ns vnotex
|
} // ns vnotex
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user