mirror of
https://gitee.com/vnotex/vnote.git
synced 2025-07-05 13:59:52 +08:00
MainWindow: add navigation box at the left
This commit is contained in:
parent
f8717465c3
commit
f3302d25e8
@ -1,10 +0,0 @@
|
||||
<svg width="512" height="512" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<!-- Created with SVG-edit - http://svg-edit.googlecode.com/ -->
|
||||
<title>one_panel</title>
|
||||
<g>
|
||||
<title>Layer 1</title>
|
||||
<rect fill="none" stroke="#000000" stroke-width="40" x="58" y="57" width="395" height="395" id="svg_1"/>
|
||||
<line fill="none" stroke="#000000" stroke-width="40" stroke-dasharray="null" stroke-linejoin="null" stroke-linecap="null" x1="193" y1="61" x2="193" y2="455" id="svg_4"/>
|
||||
<line stroke="#000000" transform="rotate(-90 125.49999237060548,220.1999969482422) " id="svg_2" fill="none" stroke-width="40" stroke-dasharray="null" stroke-linejoin="null" stroke-linecap="null" x1="125.49999" y1="169.7" x2="125.49999" y2="270.7"/>
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 780 B |
8
src/resources/icons/notebook.svg
Normal file
8
src/resources/icons/notebook.svg
Normal file
@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
width="512px" height="512px" viewBox="0 0 512 512" enable-background="new 0 0 512 512" xml:space="preserve">
|
||||
<path style="fill:#000000" d="M464,64v416H80c-17.672,0-32-14.313-32-32s14.328-32,32-32h352V0H80C44.656,0,16,28.656,16,64v384c0,35.344,28.656,64,64,64
|
||||
h416V64H464z M80,128V96V32h320v352H80V128z M336,96H144V64h192V96z M272,160H144v-32h128V160z M208,224h-64v-32h64V224z"/>
|
||||
</svg>
|
After Width: | Height: | Size: 748 B |
@ -1,10 +0,0 @@
|
||||
<?xml version="1.0"?>
|
||||
<svg width="512" height="512" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<!-- Created with SVG-edit - http://svg-edit.googlecode.com/ -->
|
||||
<title>one_panel</title>
|
||||
<g>
|
||||
<title>Layer 1</title>
|
||||
<rect id="svg_1" height="395" width="395" y="57" x="58" stroke-width="40" stroke="#000000" fill="none"/>
|
||||
<line id="svg_4" y2="455" x2="193" y1="61" x1="193" stroke-linecap="null" stroke-linejoin="null" stroke-dasharray="null" stroke-width="40" stroke="#000000" fill="none"/>
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 540 B |
@ -1,11 +0,0 @@
|
||||
<?xml version="1.0"?>
|
||||
<svg width="512" height="512" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<!-- Created with SVG-edit - http://svg-edit.googlecode.com/ -->
|
||||
<title>one_panel</title>
|
||||
<g>
|
||||
<title>Layer 1</title>
|
||||
<rect id="svg_1" height="395" width="395" y="57" x="58" stroke-width="40" stroke="#000000" fill="none"/>
|
||||
<line id="svg_4" y2="454" x2="153" y1="60" x1="153" stroke-linecap="null" stroke-linejoin="null" stroke-dasharray="null" stroke-width="40" stroke="#000000" fill="none"/>
|
||||
<line id="svg_5" y2="451.005195" x2="246" y1="66" x1="246" stroke-linecap="null" stroke-linejoin="null" stroke-dasharray="null" stroke-width="40" stroke="#000000" fill="none"/>
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 719 B |
@ -402,7 +402,6 @@ VButtonMenuItem:disabled {
|
||||
/* QComboBox */
|
||||
QComboBox#NotebookSelector {
|
||||
border: none;
|
||||
border-bottom: $2px solid @combobox_notebookselector_border;
|
||||
font-size: 13pt;
|
||||
padding-top: 3px;
|
||||
padding-bottom: 3px;
|
||||
|
@ -402,7 +402,6 @@ VButtonMenuItem:disabled {
|
||||
/* QComboBox */
|
||||
QComboBox#NotebookSelector {
|
||||
border: none;
|
||||
border-bottom: $2px solid @combobox_notebookselector_border;
|
||||
font-size: 13pt;
|
||||
padding-top: 3px;
|
||||
padding-bottom: 3px;
|
||||
|
@ -147,9 +147,6 @@ confirm_reload_folder=true
|
||||
; Whether double click on a tab to close it
|
||||
double_click_close_tab=true
|
||||
|
||||
; Whether put folder and note panel in one vertical column
|
||||
enable_compact_mode=true
|
||||
|
||||
; Whether enable tools dock widget
|
||||
tools_dock_checked=true
|
||||
|
||||
@ -350,8 +347,6 @@ AttachmentList=A
|
||||
LocateCurrentFile=D
|
||||
; Toggle Expand mode
|
||||
ExpandMode=E
|
||||
; Alternate one/two panels view
|
||||
OnePanelView=P
|
||||
; Discard changes and enter read mode
|
||||
DiscardAndRead=Q
|
||||
; Toggle Tools dock widget
|
||||
|
@ -238,9 +238,6 @@ void VConfigManager::initialize()
|
||||
m_doubleClickCloseTab = getConfigFromSettings("global",
|
||||
"double_click_close_tab").toBool();
|
||||
|
||||
m_enableCompactMode = getConfigFromSettings("global",
|
||||
"enable_compact_mode").toBool();
|
||||
|
||||
int tmpStartupPageMode = getConfigFromSettings("global",
|
||||
"startup_page_type").toInt();
|
||||
if (tmpStartupPageMode < (int)StartupPageType::Invalid
|
||||
@ -337,18 +334,6 @@ void VConfigManager::initSettings()
|
||||
void VConfigManager::initFromSessionSettings()
|
||||
{
|
||||
curNotebookIndex = getConfigFromSessionSettings("global", "current_notebook").toInt();
|
||||
|
||||
m_mainWindowGeometry = getConfigFromSessionSettings("geometry",
|
||||
"main_window_geometry").toByteArray();
|
||||
|
||||
m_mainWindowState = getConfigFromSessionSettings("geometry",
|
||||
"main_window_state").toByteArray();
|
||||
|
||||
m_mainSplitterState = getConfigFromSessionSettings("geometry",
|
||||
"main_splitter_state").toByteArray();
|
||||
|
||||
m_naviSplitterState = getConfigFromSessionSettings("geometry",
|
||||
"navi_splitter_state").toByteArray();
|
||||
}
|
||||
|
||||
void VConfigManager::readCustomColors()
|
||||
@ -1478,7 +1463,6 @@ void VConfigManager::resetLayoutConfigurations()
|
||||
resetDefaultConfig("global", "tools_dock_checked");
|
||||
resetDefaultConfig("global", "search_dock_checked");
|
||||
resetDefaultConfig("global", "menu_bar_checked");
|
||||
resetDefaultConfig("global", "enable_compact_mode");
|
||||
|
||||
clearGroupOfSettings(m_sessionSettings, "geometry");
|
||||
|
||||
|
@ -176,17 +176,17 @@ public:
|
||||
bool getSearchDockChecked() const;
|
||||
void setSearchDockChecked(bool p_checked);
|
||||
|
||||
const QByteArray &getMainWindowGeometry() const;
|
||||
const QByteArray getMainWindowGeometry() const;
|
||||
void setMainWindowGeometry(const QByteArray &p_geometry);
|
||||
|
||||
const QByteArray &getMainWindowState() const;
|
||||
const QByteArray getMainWindowState() const;
|
||||
void setMainWindowState(const QByteArray &p_state);
|
||||
|
||||
const QByteArray &getMainSplitterState() const;
|
||||
const QByteArray getMainSplitterState() const;
|
||||
void setMainSplitterState(const QByteArray &p_state);
|
||||
|
||||
const QByteArray &getNaviSplitterState() const;
|
||||
void setNaviSplitterState(const QByteArray &p_state);
|
||||
const QByteArray getNotebookSplitterState() const;
|
||||
void setNotebookSplitterState(const QByteArray &p_state);
|
||||
|
||||
bool getFindCaseSensitive() const;
|
||||
void setFindCaseSensitive(bool p_enabled);
|
||||
@ -344,9 +344,6 @@ public:
|
||||
|
||||
bool getDoubleClickCloseTab() const;
|
||||
|
||||
bool getEnableCompactMode() const;
|
||||
void setEnableCompactMode(bool p_enabled);
|
||||
|
||||
StartupPageType getStartupPageType() const;
|
||||
void setStartupPageType(StartupPageType p_type);
|
||||
|
||||
@ -623,11 +620,6 @@ private:
|
||||
|
||||
QString curRenderBackgroundColor;
|
||||
|
||||
QByteArray m_mainWindowGeometry;
|
||||
QByteArray m_mainWindowState;
|
||||
QByteArray m_mainSplitterState;
|
||||
QByteArray m_naviSplitterState;
|
||||
|
||||
// Find/Replace dialog options
|
||||
bool m_findCaseSensitive;
|
||||
bool m_findWholeWordOnly;
|
||||
@ -815,9 +807,6 @@ private:
|
||||
// Whether double click on a tab to close it.
|
||||
bool m_doubleClickCloseTab;
|
||||
|
||||
// Whether put folder and note panel in one single column.
|
||||
bool m_enableCompactMode;
|
||||
|
||||
// Type of the pages to open on startup.
|
||||
StartupPageType m_startupPageType;
|
||||
|
||||
@ -1204,56 +1193,56 @@ inline void VConfigManager::setSearchDockChecked(bool p_checked)
|
||||
p_checked);
|
||||
}
|
||||
|
||||
inline const QByteArray& VConfigManager::getMainWindowGeometry() const
|
||||
inline const QByteArray VConfigManager::getMainWindowGeometry() const
|
||||
{
|
||||
return m_mainWindowGeometry;
|
||||
return getConfigFromSessionSettings("geometry",
|
||||
"main_window_geometry").toByteArray();
|
||||
}
|
||||
|
||||
inline void VConfigManager::setMainWindowGeometry(const QByteArray &p_geometry)
|
||||
{
|
||||
m_mainWindowGeometry = p_geometry;
|
||||
setConfigToSessionSettings("geometry",
|
||||
"main_window_geometry",
|
||||
m_mainWindowGeometry);
|
||||
p_geometry);
|
||||
}
|
||||
|
||||
inline const QByteArray& VConfigManager::getMainWindowState() const
|
||||
inline const QByteArray VConfigManager::getMainWindowState() const
|
||||
{
|
||||
return m_mainWindowState;
|
||||
return getConfigFromSessionSettings("geometry",
|
||||
"main_window_state").toByteArray();
|
||||
}
|
||||
|
||||
inline void VConfigManager::setMainWindowState(const QByteArray &p_state)
|
||||
{
|
||||
m_mainWindowState = p_state;
|
||||
setConfigToSessionSettings("geometry",
|
||||
"main_window_state",
|
||||
m_mainWindowState);
|
||||
p_state);
|
||||
}
|
||||
|
||||
inline const QByteArray& VConfigManager::getMainSplitterState() const
|
||||
inline const QByteArray VConfigManager::getMainSplitterState() const
|
||||
{
|
||||
return m_mainSplitterState;
|
||||
return getConfigFromSessionSettings("geometry",
|
||||
"main_splitter_state").toByteArray();
|
||||
}
|
||||
|
||||
inline void VConfigManager::setMainSplitterState(const QByteArray &p_state)
|
||||
{
|
||||
m_mainSplitterState = p_state;
|
||||
setConfigToSessionSettings("geometry",
|
||||
"main_splitter_state",
|
||||
m_mainSplitterState);
|
||||
p_state);
|
||||
}
|
||||
|
||||
inline const QByteArray& VConfigManager::getNaviSplitterState() const
|
||||
inline const QByteArray VConfigManager::getNotebookSplitterState() const
|
||||
{
|
||||
return m_naviSplitterState;
|
||||
return getConfigFromSessionSettings("geometry",
|
||||
"notebook_splitter_state").toByteArray();
|
||||
}
|
||||
|
||||
inline void VConfigManager::setNaviSplitterState(const QByteArray &p_state)
|
||||
inline void VConfigManager::setNotebookSplitterState(const QByteArray &p_state)
|
||||
{
|
||||
m_naviSplitterState = p_state;
|
||||
setConfigToSessionSettings("geometry",
|
||||
"navi_splitter_state",
|
||||
m_naviSplitterState);
|
||||
"notebook_splitter_state",
|
||||
p_state);
|
||||
}
|
||||
|
||||
inline bool VConfigManager::getFindCaseSensitive() const
|
||||
@ -1965,21 +1954,6 @@ inline bool VConfigManager::getDoubleClickCloseTab() const
|
||||
return m_doubleClickCloseTab;
|
||||
}
|
||||
|
||||
inline bool VConfigManager::getEnableCompactMode() const
|
||||
{
|
||||
return m_enableCompactMode;
|
||||
}
|
||||
|
||||
inline void VConfigManager::setEnableCompactMode(bool p_enabled)
|
||||
{
|
||||
if (m_enableCompactMode == p_enabled) {
|
||||
return;
|
||||
}
|
||||
|
||||
m_enableCompactMode = p_enabled;
|
||||
setConfigToSettings("global", "enable_compact_mode", m_enableCompactMode);
|
||||
}
|
||||
|
||||
inline StartupPageType VConfigManager::getStartupPageType() const
|
||||
{
|
||||
return m_startupPageType;
|
||||
|
@ -85,18 +85,6 @@ VMainWindow::VMainWindow(VSingleInstanceGuard *p_guard, QWidget *p_parent)
|
||||
m_webUtils.init();
|
||||
g_webUtils = &m_webUtils;
|
||||
|
||||
if (g_config->getEnableCompactMode()) {
|
||||
m_panelViewState = PanelViewState::CompactMode;
|
||||
} else {
|
||||
m_panelViewState = PanelViewState::TwoPanels;
|
||||
}
|
||||
|
||||
m_panelViewTimer = new QTimer(this);
|
||||
m_panelViewTimer->setSingleShot(true);
|
||||
m_panelViewTimer->setInterval(500);
|
||||
connect(m_panelViewTimer, &QTimer::timeout,
|
||||
this, &VMainWindow::postChangePanelView);
|
||||
|
||||
initCaptain();
|
||||
|
||||
setupUI();
|
||||
@ -109,8 +97,6 @@ VMainWindow::VMainWindow(VSingleInstanceGuard *p_guard, QWidget *p_parent)
|
||||
|
||||
initDockWindows();
|
||||
|
||||
changePanelView(m_panelViewState);
|
||||
|
||||
restoreStateAndGeometry();
|
||||
|
||||
setContextMenuPolicy(Qt::NoContextMenu);
|
||||
@ -155,8 +141,9 @@ void VMainWindow::initCaptain()
|
||||
|
||||
void VMainWindow::registerCaptainAndNavigationTargets()
|
||||
{
|
||||
m_captain->registerNavigationTarget(m_naviBox);
|
||||
m_captain->registerNavigationTarget(m_notebookSelector);
|
||||
m_captain->registerNavigationTarget(directoryTree);
|
||||
m_captain->registerNavigationTarget(m_dirTree);
|
||||
m_captain->registerNavigationTarget(m_fileList);
|
||||
m_captain->registerNavigationTarget(m_editArea);
|
||||
m_captain->registerNavigationTarget(m_toolBox);
|
||||
@ -177,10 +164,6 @@ void VMainWindow::registerCaptainAndNavigationTargets()
|
||||
g_config->getCaptainShortcutKeySequence("ExpandMode"),
|
||||
this,
|
||||
toggleExpandModeByCaptain);
|
||||
m_captain->registerCaptainTarget(tr("OnePanelView"),
|
||||
g_config->getCaptainShortcutKeySequence("OnePanelView"),
|
||||
this,
|
||||
toggleOnePanelViewByCaptain);
|
||||
m_captain->registerCaptainTarget(tr("DiscardAndRead"),
|
||||
g_config->getCaptainShortcutKeySequence("DiscardAndRead"),
|
||||
this,
|
||||
@ -213,41 +196,39 @@ void VMainWindow::registerCaptainAndNavigationTargets()
|
||||
|
||||
void VMainWindow::setupUI()
|
||||
{
|
||||
QWidget *directoryPanel = setupDirectoryPanel();
|
||||
m_naviBox = new VToolBox();
|
||||
|
||||
m_fileList = new VFileList();
|
||||
m_fileList->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Expanding);
|
||||
setupNotebookPanel();
|
||||
|
||||
m_naviBox->addItem(m_nbSplitter,
|
||||
":/resources/icons/notebook.svg",
|
||||
tr("Notebooks"),
|
||||
m_dirTree);
|
||||
|
||||
m_editArea = new VEditArea();
|
||||
m_editArea->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
|
||||
m_findReplaceDialog = m_editArea->getFindReplaceDialog();
|
||||
m_fileList->setEditArea(m_editArea);
|
||||
directoryTree->setEditArea(m_editArea);
|
||||
m_dirTree->setEditArea(m_editArea);
|
||||
|
||||
// Main Splitter
|
||||
m_mainSplitter = new QSplitter();
|
||||
m_mainSplitter->setObjectName("MainSplitter");
|
||||
m_mainSplitter->addWidget(directoryPanel);
|
||||
m_mainSplitter->addWidget(m_fileList);
|
||||
setTabOrder(directoryTree, m_fileList->getContentWidget());
|
||||
m_mainSplitter->addWidget(m_naviBox);
|
||||
m_mainSplitter->addWidget(m_editArea);
|
||||
m_mainSplitter->setStretchFactor(0, 0);
|
||||
m_mainSplitter->setStretchFactor(1, 0);
|
||||
m_mainSplitter->setStretchFactor(2, 1);
|
||||
|
||||
// Signals
|
||||
connect(directoryTree, &VDirectoryTree::currentDirectoryChanged,
|
||||
m_fileList, &VFileList::setDirectory);
|
||||
connect(directoryTree, &VDirectoryTree::directoryUpdated,
|
||||
connect(m_dirTree, &VDirectoryTree::directoryUpdated,
|
||||
m_editArea, &VEditArea::handleDirectoryUpdated);
|
||||
|
||||
connect(m_notebookSelector, &VNotebookSelector::notebookUpdated,
|
||||
m_editArea, &VEditArea::handleNotebookUpdated);
|
||||
connect(m_notebookSelector, &VNotebookSelector::notebookCreated,
|
||||
directoryTree, [this](const QString &p_name, bool p_import) {
|
||||
m_dirTree, [this](const QString &p_name, bool p_import) {
|
||||
Q_UNUSED(p_name);
|
||||
if (!p_import) {
|
||||
directoryTree->newRootDirectory();
|
||||
m_dirTree->newRootDirectory();
|
||||
}
|
||||
});
|
||||
|
||||
@ -284,66 +265,53 @@ void VMainWindow::setupUI()
|
||||
initTrayIcon();
|
||||
}
|
||||
|
||||
QWidget *VMainWindow::setupDirectoryPanel()
|
||||
void VMainWindow::setupNotebookPanel()
|
||||
{
|
||||
// Notebook selector.
|
||||
QLabel *notebookLabel = new QLabel(tr("Notebooks"));
|
||||
notebookLabel->setProperty("TitleLabel", true);
|
||||
|
||||
m_notebookSelector = new VNotebookSelector();
|
||||
m_notebookSelector->setObjectName("NotebookSelector");
|
||||
m_notebookSelector->setSizeAdjustPolicy(QComboBox::AdjustToMinimumContentsLengthWithIcon);
|
||||
|
||||
// Navigation panel.
|
||||
// Folders.
|
||||
QLabel *directoryLabel = new QLabel(tr("Folders"));
|
||||
directoryLabel->setProperty("TitleLabel", true);
|
||||
|
||||
directoryTree = new VDirectoryTree;
|
||||
m_dirTree = new VDirectoryTree;
|
||||
|
||||
QVBoxLayout *naviLayout = new QVBoxLayout;
|
||||
naviLayout->addWidget(m_notebookSelector);
|
||||
naviLayout->addWidget(directoryLabel);
|
||||
naviLayout->addWidget(directoryTree);
|
||||
naviLayout->addWidget(m_dirTree);
|
||||
naviLayout->setContentsMargins(0, 0, 0, 0);
|
||||
naviLayout->setSpacing(0);
|
||||
QWidget *naviWidget = new QWidget();
|
||||
naviWidget->setLayout(naviLayout);
|
||||
|
||||
QWidget *tmpWidget = new QWidget();
|
||||
// Notes.
|
||||
m_fileList = new VFileList();
|
||||
m_fileList->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Expanding);
|
||||
|
||||
// Compact splitter.
|
||||
m_naviSplitter = new QSplitter();
|
||||
m_naviSplitter->setOrientation(Qt::Vertical);
|
||||
m_naviSplitter->setObjectName("NaviSplitter");
|
||||
m_naviSplitter->addWidget(naviWidget);
|
||||
m_naviSplitter->addWidget(tmpWidget);
|
||||
m_naviSplitter->setStretchFactor(0, 0);
|
||||
m_naviSplitter->setStretchFactor(1, 1);
|
||||
|
||||
tmpWidget->hide();
|
||||
|
||||
QVBoxLayout *nbLayout = new QVBoxLayout;
|
||||
nbLayout->addWidget(notebookLabel);
|
||||
nbLayout->addWidget(m_notebookSelector);
|
||||
nbLayout->addWidget(m_naviSplitter);
|
||||
nbLayout->setContentsMargins(3, 0, 0, 0);
|
||||
nbLayout->setSpacing(0);
|
||||
QWidget *nbContainer = new QWidget();
|
||||
nbContainer->setLayout(nbLayout);
|
||||
nbContainer->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Expanding);
|
||||
m_nbSplitter = new QSplitter();
|
||||
m_nbSplitter->setOrientation(Qt::Vertical);
|
||||
m_nbSplitter->setObjectName("NotebookSplitter");
|
||||
m_nbSplitter->addWidget(naviWidget);
|
||||
m_nbSplitter->addWidget(m_fileList);
|
||||
m_nbSplitter->setStretchFactor(0, 0);
|
||||
m_nbSplitter->setStretchFactor(1, 1);
|
||||
|
||||
connect(m_notebookSelector, &VNotebookSelector::curNotebookChanged,
|
||||
this, [this](VNotebook *p_notebook) {
|
||||
directoryTree->setNotebook(p_notebook);
|
||||
directoryTree->setFocus();
|
||||
m_dirTree->setNotebook(p_notebook);
|
||||
m_dirTree->setFocus();
|
||||
});
|
||||
|
||||
connect(m_notebookSelector, &VNotebookSelector::curNotebookChanged,
|
||||
this, &VMainWindow::handleCurrentNotebookChanged);
|
||||
|
||||
connect(directoryTree, &VDirectoryTree::currentDirectoryChanged,
|
||||
connect(m_dirTree, &VDirectoryTree::currentDirectoryChanged,
|
||||
this, &VMainWindow::handleCurrentDirectoryChanged);
|
||||
|
||||
return nbContainer;
|
||||
connect(m_dirTree, &VDirectoryTree::currentDirectoryChanged,
|
||||
m_fileList, &VFileList::setDirectory);
|
||||
}
|
||||
|
||||
void VMainWindow::initToolBar()
|
||||
@ -366,92 +334,6 @@ void VMainWindow::initViewToolBar(QSize p_iconSize)
|
||||
viewToolBar->setIconSize(p_iconSize);
|
||||
}
|
||||
|
||||
m_viewActGroup = new QActionGroup(this);
|
||||
QAction *onePanelViewAct = new QAction(VIconUtils::menuIcon(":/resources/icons/one_panel.svg"),
|
||||
tr("Single Panel"),
|
||||
m_viewActGroup);
|
||||
VUtils::fixTextWithCaptainShortcut(onePanelViewAct, "OnePanelView");
|
||||
onePanelViewAct->setStatusTip(tr("Display only the notes list panel"));
|
||||
onePanelViewAct->setCheckable(true);
|
||||
onePanelViewAct->setData((int)PanelViewState::SinglePanel);
|
||||
|
||||
QAction *twoPanelViewAct = new QAction(VIconUtils::menuIcon(":/resources/icons/two_panels.svg"),
|
||||
tr("Two Panels"),
|
||||
m_viewActGroup);
|
||||
VUtils::fixTextWithCaptainShortcut(twoPanelViewAct, "OnePanelView");
|
||||
twoPanelViewAct->setStatusTip(tr("Display both the folders and notes list panel"));
|
||||
twoPanelViewAct->setCheckable(true);
|
||||
twoPanelViewAct->setData((int)PanelViewState::TwoPanels);
|
||||
|
||||
QAction *compactViewAct = new QAction(VIconUtils::menuIcon(":/resources/icons/compact_mode.svg"),
|
||||
tr("Compact Mode"),
|
||||
m_viewActGroup);
|
||||
compactViewAct->setStatusTip(tr("Integrate the folders and notes list panel in one column"));
|
||||
compactViewAct->setCheckable(true);
|
||||
compactViewAct->setData((int)PanelViewState::CompactMode);
|
||||
|
||||
connect(m_viewActGroup, &QActionGroup::triggered,
|
||||
this, [this](QAction *p_action) {
|
||||
if (!p_action) {
|
||||
return;
|
||||
}
|
||||
|
||||
int act = p_action->data().toInt();
|
||||
switch (act) {
|
||||
case (int)PanelViewState::SinglePanel:
|
||||
onePanelView();
|
||||
break;
|
||||
|
||||
case (int)PanelViewState::TwoPanels:
|
||||
twoPanelView();
|
||||
break;
|
||||
|
||||
case (int)PanelViewState::CompactMode:
|
||||
compactModeView();
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
QMenu *panelMenu = new QMenu(this);
|
||||
panelMenu->setToolTipsVisible(true);
|
||||
panelMenu->addAction(onePanelViewAct);
|
||||
panelMenu->addAction(twoPanelViewAct);
|
||||
panelMenu->addAction(compactViewAct);
|
||||
|
||||
expandViewAct = new QAction(VIconUtils::toolButtonIcon(":/resources/icons/expand.svg"),
|
||||
tr("Expand"), this);
|
||||
VUtils::fixTextWithCaptainShortcut(expandViewAct, "ExpandMode");
|
||||
expandViewAct->setStatusTip(tr("Expand the edit area"));
|
||||
expandViewAct->setCheckable(true);
|
||||
expandViewAct->setMenu(panelMenu);
|
||||
connect(expandViewAct, &QAction::triggered,
|
||||
this, [this](bool p_checked) {
|
||||
// Recover m_panelViewState or change to expand mode.
|
||||
changePanelView(p_checked ? PanelViewState::ExpandMode
|
||||
: m_panelViewState);
|
||||
});
|
||||
|
||||
viewToolBar->addAction(expandViewAct);
|
||||
|
||||
QAction *menuBarAct = new QAction(VIconUtils::toolButtonIcon(":/resources/icons/menubar.svg"),
|
||||
tr("Menu Bar"),
|
||||
this);
|
||||
menuBarAct->setStatusTip(tr("Toggle menu bar"));
|
||||
menuBarAct->setCheckable(true);
|
||||
menuBarAct->setChecked(g_config->getMenuBarChecked());
|
||||
connect(menuBarAct, &QAction::triggered,
|
||||
this, [this](bool p_checked) {
|
||||
setMenuBarVisible(p_checked);
|
||||
g_config->setMenuBarChecked(p_checked);
|
||||
});
|
||||
|
||||
QMenu *screenMenu = new QMenu(this);
|
||||
screenMenu->setToolTipsVisible(true);
|
||||
screenMenu->addAction(menuBarAct);
|
||||
|
||||
QAction *fullScreenAct = new QAction(VIconUtils::toolButtonIcon(":/resources/icons/fullscreen.svg"),
|
||||
tr("Full Screen"),
|
||||
this);
|
||||
@ -463,7 +345,6 @@ void VMainWindow::initViewToolBar(QSize p_iconSize)
|
||||
}
|
||||
|
||||
fullScreenAct->setStatusTip(tr("Toggle full screen"));
|
||||
fullScreenAct->setMenu(screenMenu);
|
||||
connect(fullScreenAct, &QAction::triggered,
|
||||
this, [this]() {
|
||||
if (windowState() & Qt::WindowFullScreen) {
|
||||
@ -477,7 +358,37 @@ void VMainWindow::initViewToolBar(QSize p_iconSize)
|
||||
}
|
||||
});
|
||||
|
||||
viewToolBar->addAction(fullScreenAct);
|
||||
QAction *menuBarAct = new QAction(VIconUtils::toolButtonIcon(":/resources/icons/menubar.svg"),
|
||||
tr("Menu Bar"),
|
||||
this);
|
||||
menuBarAct->setStatusTip(tr("Toggle menu bar"));
|
||||
menuBarAct->setCheckable(true);
|
||||
menuBarAct->setChecked(g_config->getMenuBarChecked());
|
||||
connect(menuBarAct, &QAction::triggered,
|
||||
this, [this](bool p_checked) {
|
||||
setMenuBarVisible(p_checked);
|
||||
g_config->setMenuBarChecked(p_checked);
|
||||
});
|
||||
|
||||
QMenu *viewMenu = new QMenu(this);
|
||||
viewMenu->setToolTipsVisible(true);
|
||||
viewMenu->addAction(fullScreenAct);
|
||||
viewMenu->addAction(menuBarAct);
|
||||
|
||||
expandViewAct = new QAction(VIconUtils::toolButtonIcon(":/resources/icons/expand.svg"),
|
||||
tr("Expand"),
|
||||
this);
|
||||
VUtils::fixTextWithCaptainShortcut(expandViewAct, "ExpandMode");
|
||||
expandViewAct->setStatusTip(tr("Expand the edit area"));
|
||||
expandViewAct->setCheckable(true);
|
||||
expandViewAct->setMenu(viewMenu);
|
||||
connect(expandViewAct, &QAction::triggered,
|
||||
this, [this](bool p_checked) {
|
||||
changePanelView(p_checked ? PanelViewState::ExpandMode
|
||||
: PanelViewState::VerticalMode);
|
||||
});
|
||||
|
||||
viewToolBar->addAction(expandViewAct);
|
||||
}
|
||||
|
||||
// Enable/disable all actions of @p_widget.
|
||||
@ -691,7 +602,7 @@ void VMainWindow::initFileToolBar(QSize p_iconSize)
|
||||
this);
|
||||
newRootDirAct->setStatusTip(tr("Create a root folder in current notebook"));
|
||||
connect(newRootDirAct, &QAction::triggered,
|
||||
directoryTree, &VDirectoryTree::newRootDirectory);
|
||||
m_dirTree, &VDirectoryTree::newRootDirectory);
|
||||
|
||||
newNoteAct = new QAction(VIconUtils::toolButtonIcon(":/resources/icons/create_note_tb.svg"),
|
||||
tr("New Note"), this);
|
||||
@ -2050,127 +1961,25 @@ void VMainWindow::handleAreaTabStatusUpdated(const VEditTabInfo &p_info)
|
||||
updateStatusInfo(p_info);
|
||||
}
|
||||
|
||||
void VMainWindow::onePanelView()
|
||||
{
|
||||
m_panelViewState = PanelViewState::SinglePanel;
|
||||
g_config->setEnableCompactMode(false);
|
||||
changePanelView(m_panelViewState, true);
|
||||
}
|
||||
|
||||
void VMainWindow::twoPanelView()
|
||||
{
|
||||
m_panelViewState = PanelViewState::TwoPanels;
|
||||
g_config->setEnableCompactMode(false);
|
||||
changePanelView(m_panelViewState, true);
|
||||
}
|
||||
|
||||
void VMainWindow::compactModeView()
|
||||
{
|
||||
m_panelViewState = PanelViewState::CompactMode;
|
||||
g_config->setEnableCompactMode(true);
|
||||
changePanelView(m_panelViewState, true);
|
||||
}
|
||||
|
||||
void VMainWindow::enableCompactMode(bool p_enabled)
|
||||
{
|
||||
const int fileListIdx = 1;
|
||||
bool isCompactMode = m_naviSplitter->indexOf(m_fileList) != -1;
|
||||
if (p_enabled) {
|
||||
// Change to compact mode.
|
||||
if (isCompactMode) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Take m_fileList out of m_mainSplitter.
|
||||
QWidget *tmpWidget = new QWidget(this);
|
||||
Q_ASSERT(fileListIdx == m_mainSplitter->indexOf(m_fileList));
|
||||
m_fileList->hide();
|
||||
m_mainSplitter->replaceWidget(fileListIdx, tmpWidget);
|
||||
tmpWidget->hide();
|
||||
|
||||
// Insert m_fileList into m_naviSplitter.
|
||||
QWidget *wid = m_naviSplitter->replaceWidget(fileListIdx, m_fileList);
|
||||
delete wid;
|
||||
|
||||
m_fileList->show();
|
||||
} else {
|
||||
// Disable compact mode and go back to two panels view.
|
||||
if (!isCompactMode) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Take m_fileList out of m_naviSplitter.
|
||||
Q_ASSERT(fileListIdx == m_naviSplitter->indexOf(m_fileList));
|
||||
QWidget *tmpWidget = new QWidget(this);
|
||||
m_fileList->hide();
|
||||
m_naviSplitter->replaceWidget(fileListIdx, tmpWidget);
|
||||
tmpWidget->hide();
|
||||
|
||||
// Insert m_fileList into m_mainSplitter.
|
||||
QWidget *wid = m_mainSplitter->replaceWidget(fileListIdx, m_fileList);
|
||||
delete wid;
|
||||
|
||||
m_fileList->show();
|
||||
}
|
||||
|
||||
// Set Tab order.
|
||||
setTabOrder(directoryTree, m_fileList->getContentWidget());
|
||||
}
|
||||
|
||||
void VMainWindow::changePanelView(PanelViewState p_state, bool p_postCheck)
|
||||
void VMainWindow::changePanelView(PanelViewState p_state)
|
||||
{
|
||||
switch (p_state) {
|
||||
case PanelViewState::ExpandMode:
|
||||
m_mainSplitter->widget(0)->hide();
|
||||
m_mainSplitter->widget(1)->hide();
|
||||
m_mainSplitter->widget(2)->show();
|
||||
break;
|
||||
|
||||
case PanelViewState::SinglePanel:
|
||||
enableCompactMode(false);
|
||||
|
||||
m_mainSplitter->widget(0)->hide();
|
||||
m_mainSplitter->widget(1)->show();
|
||||
m_mainSplitter->widget(2)->show();
|
||||
break;
|
||||
|
||||
case PanelViewState::TwoPanels:
|
||||
enableCompactMode(false);
|
||||
|
||||
case PanelViewState::HorizontalMode:
|
||||
case PanelViewState::VerticalMode:
|
||||
m_mainSplitter->widget(0)->show();
|
||||
m_mainSplitter->widget(1)->show();
|
||||
m_mainSplitter->widget(2)->show();
|
||||
break;
|
||||
|
||||
case PanelViewState::CompactMode:
|
||||
m_mainSplitter->widget(0)->show();
|
||||
m_mainSplitter->widget(1)->hide();
|
||||
m_mainSplitter->widget(2)->show();
|
||||
|
||||
enableCompactMode(true);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
// Change the action state.
|
||||
QList<QAction *> acts = m_viewActGroup->actions();
|
||||
for (auto & act : acts) {
|
||||
if (act->data().toInt() == (int)p_state) {
|
||||
act->setChecked(true);
|
||||
} else {
|
||||
act->setChecked(false);
|
||||
}
|
||||
}
|
||||
|
||||
if (p_state != PanelViewState::ExpandMode) {
|
||||
expandViewAct->setChecked(false);
|
||||
}
|
||||
|
||||
if (p_postCheck) {
|
||||
m_panelViewTimer->start();
|
||||
}
|
||||
expandViewAct->setChecked(p_state == PanelViewState::ExpandMode);
|
||||
}
|
||||
|
||||
void VMainWindow::updateWindowTitle(const QString &str)
|
||||
@ -2297,16 +2106,8 @@ void VMainWindow::saveStateAndGeometry()
|
||||
g_config->setMainWindowState(saveState());
|
||||
g_config->setToolsDockChecked(m_toolDock->isVisible());
|
||||
g_config->setSearchDockChecked(m_searchDock->isVisible());
|
||||
|
||||
if (m_panelViewState == PanelViewState::CompactMode) {
|
||||
g_config->setNaviSplitterState(m_naviSplitter->saveState());
|
||||
g_config->setNotebookSplitterState(m_nbSplitter->saveState());
|
||||
g_config->setMainSplitterState(m_mainSplitter->saveState());
|
||||
} else {
|
||||
// In one panel view, it will save the wrong state that the directory tree
|
||||
// panel has a width of zero.
|
||||
changePanelView(PanelViewState::TwoPanels);
|
||||
g_config->setMainSplitterState(m_mainSplitter->saveState());
|
||||
}
|
||||
}
|
||||
|
||||
void VMainWindow::restoreStateAndGeometry()
|
||||
@ -2329,9 +2130,9 @@ void VMainWindow::restoreStateAndGeometry()
|
||||
m_mainSplitter->restoreState(splitterState);
|
||||
}
|
||||
|
||||
const QByteArray &naviSplitterState = g_config->getNaviSplitterState();
|
||||
if (!naviSplitterState.isEmpty()) {
|
||||
m_naviSplitter->restoreState(naviSplitterState);
|
||||
const QByteArray &nbSplitterState = g_config->getNotebookSplitterState();
|
||||
if (!nbSplitterState.isEmpty()) {
|
||||
m_nbSplitter->restoreState(nbSplitterState);
|
||||
}
|
||||
}
|
||||
|
||||
@ -2370,12 +2171,12 @@ bool VMainWindow::locateFile(VFile *p_file)
|
||||
VNoteFile *file = dynamic_cast<VNoteFile *>(p_file);
|
||||
VNotebook *notebook = file->getNotebook();
|
||||
if (m_notebookSelector->locateNotebook(notebook)) {
|
||||
while (directoryTree->currentNotebook() != notebook) {
|
||||
while (m_dirTree->currentNotebook() != notebook) {
|
||||
QCoreApplication::sendPostedEvents();
|
||||
}
|
||||
|
||||
VDirectory *dir = file->getDirectory();
|
||||
if (directoryTree->locateDirectory(dir)) {
|
||||
if (m_dirTree->locateDirectory(dir)) {
|
||||
while (m_fileList->currentDirectory() != dir) {
|
||||
QCoreApplication::sendPostedEvents();
|
||||
}
|
||||
@ -2389,11 +2190,7 @@ bool VMainWindow::locateFile(VFile *p_file)
|
||||
|
||||
// Open the directory and file panels after location.
|
||||
if (ret) {
|
||||
if (m_panelViewState == PanelViewState::CompactMode) {
|
||||
compactModeView();
|
||||
} else {
|
||||
twoPanelView();
|
||||
}
|
||||
showNotebookPanel();
|
||||
}
|
||||
|
||||
return ret;
|
||||
@ -2408,23 +2205,19 @@ bool VMainWindow::locateDirectory(VDirectory *p_directory)
|
||||
|
||||
VNotebook *notebook = p_directory->getNotebook();
|
||||
if (m_notebookSelector->locateNotebook(notebook)) {
|
||||
while (directoryTree->currentNotebook() != notebook) {
|
||||
while (m_dirTree->currentNotebook() != notebook) {
|
||||
QCoreApplication::sendPostedEvents();
|
||||
}
|
||||
|
||||
if (directoryTree->locateDirectory(p_directory)) {
|
||||
if (m_dirTree->locateDirectory(p_directory)) {
|
||||
ret = true;
|
||||
directoryTree->setFocus();
|
||||
m_dirTree->setFocus();
|
||||
}
|
||||
}
|
||||
|
||||
// Open the directory and file panels after location.
|
||||
if (ret) {
|
||||
if (m_panelViewState == PanelViewState::CompactMode) {
|
||||
compactModeView();
|
||||
} else {
|
||||
twoPanelView();
|
||||
}
|
||||
showNotebookPanel();
|
||||
}
|
||||
|
||||
return ret;
|
||||
@ -2439,16 +2232,12 @@ bool VMainWindow::locateNotebook(VNotebook *p_notebook)
|
||||
|
||||
if (m_notebookSelector->locateNotebook(p_notebook)) {
|
||||
ret = true;
|
||||
directoryTree->setFocus();
|
||||
m_dirTree->setFocus();
|
||||
}
|
||||
|
||||
// Open the directory and file panels after location.
|
||||
if (ret) {
|
||||
if (m_panelViewState == PanelViewState::CompactMode) {
|
||||
compactModeView();
|
||||
} else {
|
||||
twoPanelView();
|
||||
}
|
||||
showNotebookPanel();
|
||||
}
|
||||
|
||||
return ret;
|
||||
@ -2826,19 +2615,6 @@ bool VMainWindow::toggleExpandModeByCaptain(void *p_target, void *p_data)
|
||||
return true;
|
||||
}
|
||||
|
||||
bool VMainWindow::toggleOnePanelViewByCaptain(void *p_target, void *p_data)
|
||||
{
|
||||
Q_UNUSED(p_data);
|
||||
VMainWindow *obj = static_cast<VMainWindow *>(p_target);
|
||||
if (obj->m_panelViewState == PanelViewState::TwoPanels) {
|
||||
obj->onePanelView();
|
||||
} else {
|
||||
obj->twoPanelView();
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool VMainWindow::discardAndReadByCaptain(void *p_target, void *p_data)
|
||||
{
|
||||
Q_UNUSED(p_data);
|
||||
@ -3235,7 +3011,7 @@ void VMainWindow::updateEditReadAct(const VEditTab *p_tab)
|
||||
void VMainWindow::handleExportAct()
|
||||
{
|
||||
VExportDialog dialog(m_notebookSelector->currentNotebook(),
|
||||
directoryTree->currentDirectory(),
|
||||
m_dirTree->currentDirectory(),
|
||||
m_curFile,
|
||||
m_cart,
|
||||
g_config->getMdConverterType(),
|
||||
@ -3343,83 +3119,6 @@ void VMainWindow::setMenuBarVisible(bool p_visible)
|
||||
}
|
||||
}
|
||||
|
||||
void VMainWindow::postChangePanelView()
|
||||
{
|
||||
const int minVal = 10;
|
||||
bool needUpdate = false;
|
||||
QList<int> sizes = m_mainSplitter->sizes();
|
||||
switch (m_panelViewState) {
|
||||
case PanelViewState::SinglePanel:
|
||||
if (sizes[1] == 0) {
|
||||
sizes[1] = minVal;
|
||||
needUpdate = true;
|
||||
}
|
||||
|
||||
if (sizes[2] == 0) {
|
||||
sizes[2] = minVal;
|
||||
needUpdate = true;
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case PanelViewState::TwoPanels:
|
||||
if (sizes[0] == 0) {
|
||||
sizes[0] = minVal;
|
||||
needUpdate = true;
|
||||
}
|
||||
|
||||
if (sizes[1] == 0) {
|
||||
sizes[1] = minVal;
|
||||
needUpdate = true;
|
||||
}
|
||||
|
||||
if (sizes[2] == 0) {
|
||||
sizes[2] = minVal;
|
||||
needUpdate = true;
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case PanelViewState::CompactMode:
|
||||
{
|
||||
if (sizes[0] == 0) {
|
||||
sizes[0] = minVal;
|
||||
needUpdate = true;
|
||||
}
|
||||
|
||||
if (sizes[2] == 0) {
|
||||
sizes[2] = minVal;
|
||||
needUpdate = true;
|
||||
}
|
||||
|
||||
bool naviUpdate = false;
|
||||
QList<int> naviSizes = m_naviSplitter->sizes();
|
||||
if (naviSizes[0] == 0) {
|
||||
naviSizes[0] = minVal;
|
||||
naviUpdate = true;
|
||||
}
|
||||
|
||||
if (naviSizes[1] == 0) {
|
||||
naviSizes[1] = minVal;
|
||||
naviUpdate = true;
|
||||
}
|
||||
|
||||
if (naviUpdate) {
|
||||
m_naviSplitter->setSizes(naviSizes);
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (needUpdate) {
|
||||
m_mainSplitter->setSizes(sizes);
|
||||
}
|
||||
}
|
||||
|
||||
void VMainWindow::kickOffStartUpTimer(const QStringList &p_files)
|
||||
{
|
||||
QTimer::singleShot(300, [this, p_files]() {
|
||||
@ -3431,3 +3130,9 @@ void VMainWindow::kickOffStartUpTimer(const QStringList &p_files)
|
||||
openFiles(p_files, false, OpenFileMode::Read, false, true);
|
||||
});
|
||||
}
|
||||
|
||||
void VMainWindow::showNotebookPanel()
|
||||
{
|
||||
changePanelView(PanelViewState::VerticalMode);
|
||||
m_naviBox->setCurrentIndex(0, false);
|
||||
}
|
||||
|
@ -46,9 +46,8 @@ class VUniversalEntry;
|
||||
enum class PanelViewState
|
||||
{
|
||||
ExpandMode,
|
||||
SinglePanel,
|
||||
TwoPanels,
|
||||
CompactMode,
|
||||
HorizontalMode,
|
||||
VerticalMode,
|
||||
Invalid
|
||||
};
|
||||
|
||||
@ -140,9 +139,6 @@ private slots:
|
||||
void changeHighlightSelectedWord(bool p_checked);
|
||||
void changeHighlightSearchedWord(bool p_checked);
|
||||
void changeHighlightTrailingSapce(bool p_checked);
|
||||
void onePanelView();
|
||||
void twoPanelView();
|
||||
void compactModeView();
|
||||
void curEditFileInfo();
|
||||
void deleteCurNote();
|
||||
void handleCurrentDirectoryChanged(const VDirectory *p_dir);
|
||||
@ -164,9 +160,6 @@ private slots:
|
||||
// Open export dialog.
|
||||
void handleExportAct();
|
||||
|
||||
// Set the panel view properly.
|
||||
void enableCompactMode(bool p_enabled);
|
||||
|
||||
// Handle Vim status updated.
|
||||
void handleVimStatusUpdated(const VVim *p_vim);
|
||||
|
||||
@ -196,9 +189,6 @@ private slots:
|
||||
// Activate Universal Entry.
|
||||
void activateUniversalEntry();
|
||||
|
||||
// Make sure width of the panel is not zero after changePanelView().
|
||||
void postChangePanelView();
|
||||
|
||||
protected:
|
||||
void closeEvent(QCloseEvent *event) Q_DECL_OVERRIDE;
|
||||
|
||||
@ -208,7 +198,8 @@ protected:
|
||||
|
||||
private:
|
||||
void setupUI();
|
||||
QWidget *setupDirectoryPanel();
|
||||
|
||||
void setupNotebookPanel();
|
||||
|
||||
void initToolBar();
|
||||
|
||||
@ -280,8 +271,7 @@ private:
|
||||
void initTrayIcon();
|
||||
|
||||
// Change the panel view according to @p_state.
|
||||
// Will not change m_panelViewState.
|
||||
void changePanelView(PanelViewState p_state, bool p_postCheck = false);
|
||||
void changePanelView(PanelViewState p_state);
|
||||
|
||||
// Whether heading sequence is applicable to current tab.
|
||||
// Only available for writable Markdown file.
|
||||
@ -299,6 +289,8 @@ private:
|
||||
|
||||
void setMenuBarVisible(bool p_visible);
|
||||
|
||||
void showNotebookPanel();
|
||||
|
||||
// Captain mode functions.
|
||||
|
||||
// Popup the attachment list if it is enabled.
|
||||
@ -308,8 +300,6 @@ private:
|
||||
|
||||
static bool toggleExpandModeByCaptain(void *p_target, void *p_data);
|
||||
|
||||
static bool toggleOnePanelViewByCaptain(void *p_target, void *p_data);
|
||||
|
||||
static bool discardAndReadByCaptain(void *p_target, void *p_data);
|
||||
|
||||
static bool toggleToolsDockByCaptain(void *p_target, void *p_data);
|
||||
@ -333,15 +323,18 @@ private:
|
||||
VCaptain *m_captain;
|
||||
|
||||
VNotebookSelector *m_notebookSelector;
|
||||
|
||||
VFileList *m_fileList;
|
||||
VDirectoryTree *directoryTree;
|
||||
|
||||
VDirectoryTree *m_dirTree;
|
||||
|
||||
VToolBox *m_naviBox;
|
||||
|
||||
// Splitter for directory | files | edit.
|
||||
QSplitter *m_mainSplitter;
|
||||
|
||||
// Splitter for directory | files.
|
||||
// Move directory and file panel in one compact vertical split.
|
||||
QSplitter *m_naviSplitter;
|
||||
// Splitter for folders/notes.
|
||||
QSplitter *m_nbSplitter;
|
||||
|
||||
VEditArea *m_editArea;
|
||||
|
||||
@ -371,9 +364,6 @@ private:
|
||||
|
||||
VTabIndicator *m_tabIndicator;
|
||||
|
||||
// SinglePanel, TwoPanels, CompactMode.
|
||||
PanelViewState m_panelViewState;
|
||||
|
||||
// Actions
|
||||
QAction *newRootDirAct;
|
||||
QAction *newNoteAct;
|
||||
@ -415,9 +405,6 @@ private:
|
||||
// Act group for code block render styles.
|
||||
QActionGroup *m_codeBlockStyleActs;
|
||||
|
||||
// Act group for panel view actions.
|
||||
QActionGroup *m_viewActGroup;
|
||||
|
||||
// Menus
|
||||
QMenu *m_viewMenu;
|
||||
|
||||
@ -440,9 +427,6 @@ private:
|
||||
// Timer to check the shared memory between instances of VNote.
|
||||
QTimer *m_sharedMemTimer;
|
||||
|
||||
// Timer to check the panel size.
|
||||
QTimer *m_panelViewTimer;
|
||||
|
||||
// Tray icon.
|
||||
QSystemTrayIcon *m_trayIcon;
|
||||
|
||||
@ -499,7 +483,7 @@ inline VCart *VMainWindow::getCart() const
|
||||
|
||||
inline VDirectoryTree *VMainWindow::getDirectoryTree() const
|
||||
{
|
||||
return directoryTree;
|
||||
return m_dirTree;
|
||||
}
|
||||
|
||||
inline VNotebookSelector *VMainWindow::getNotebookSelector() const
|
||||
|
@ -20,8 +20,6 @@
|
||||
<file>resources/icons/dir_info.svg</file>
|
||||
<file>resources/icons/notebook_info.svg</file>
|
||||
<file>resources/icons/expand.svg</file>
|
||||
<file>resources/icons/two_panels.svg</file>
|
||||
<file>resources/icons/one_panel.svg</file>
|
||||
<file>resources/icons/split_window.svg</file>
|
||||
<file>resources/icons/corner_menu.svg</file>
|
||||
<file>resources/icons/remove_split.svg</file>
|
||||
@ -92,7 +90,6 @@
|
||||
<file>resources/icons/delete_attachment.svg</file>
|
||||
<file>resources/icons/sort.svg</file>
|
||||
<file>resources/icons/create_subdir.svg</file>
|
||||
<file>resources/icons/compact_mode.svg</file>
|
||||
<file>resources/icons/heading_sequence.svg</file>
|
||||
<file>resources/icons/link.svg</file>
|
||||
<file>resources/icons/code_block.svg</file>
|
||||
@ -216,5 +213,6 @@
|
||||
<file>utils/markdown-it/markdown-it-front-matter.js</file>
|
||||
<file>utils/markdown-it/markdown-it-imsize.min.js</file>
|
||||
<file>utils/markdown-it/markdown-it-emoji.min.js</file>
|
||||
<file>resources/icons/notebook.svg</file>
|
||||
</qresource>
|
||||
</RCC>
|
||||
|
@ -40,7 +40,10 @@ void VToolBox::setupUI()
|
||||
setLayout(mainLayout);
|
||||
}
|
||||
|
||||
int VToolBox::addItem(QWidget *p_widget, const QString &p_iconFile, const QString &p_text)
|
||||
int VToolBox::addItem(QWidget *p_widget,
|
||||
const QString &p_iconFile,
|
||||
const QString &p_text,
|
||||
QWidget *p_focusWidget)
|
||||
{
|
||||
int idx = m_items.size();
|
||||
|
||||
@ -66,6 +69,7 @@ int VToolBox::addItem(QWidget *p_widget, const QString &p_iconFile, const QStrin
|
||||
m_widgetLayout->insertWidget(idx, p_widget);
|
||||
|
||||
m_items.push_back(ItemInfo(p_widget,
|
||||
p_focusWidget,
|
||||
p_text,
|
||||
btn,
|
||||
icon,
|
||||
@ -78,7 +82,7 @@ int VToolBox::addItem(QWidget *p_widget, const QString &p_iconFile, const QStrin
|
||||
return idx;
|
||||
}
|
||||
|
||||
void VToolBox::setCurrentIndex(int p_idx)
|
||||
void VToolBox::setCurrentIndex(int p_idx, bool p_focus)
|
||||
{
|
||||
if (p_idx < 0 || p_idx >= m_items.size()) {
|
||||
m_currentIndex = -1;
|
||||
@ -91,12 +95,16 @@ void VToolBox::setCurrentIndex(int p_idx)
|
||||
m_widgetLayout->setCurrentIndex(m_currentIndex);
|
||||
|
||||
QWidget *widget = m_widgetLayout->widget(m_currentIndex);
|
||||
if (widget) {
|
||||
if (widget && p_focus) {
|
||||
if (m_items[m_currentIndex].m_focusWidget) {
|
||||
m_items[m_currentIndex].m_focusWidget->setFocus();
|
||||
} else {
|
||||
widget->setFocus();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void VToolBox::setCurrentWidget(QWidget *p_widget)
|
||||
void VToolBox::setCurrentWidget(QWidget *p_widget, bool p_focus)
|
||||
{
|
||||
int idx = -1;
|
||||
for (int i = 0; i < m_items.size(); ++i) {
|
||||
@ -106,7 +114,7 @@ void VToolBox::setCurrentWidget(QWidget *p_widget)
|
||||
}
|
||||
}
|
||||
|
||||
setCurrentIndex(idx);
|
||||
setCurrentIndex(idx, p_focus);
|
||||
}
|
||||
|
||||
void VToolBox::setCurrentButtonIndex(int p_idx)
|
||||
|
@ -18,11 +18,14 @@ class VToolBox : public QWidget, public VNavigationMode
|
||||
public:
|
||||
explicit VToolBox(QWidget *p_parent = nullptr);
|
||||
|
||||
int addItem(QWidget *p_widget, const QString &p_iconFile, const QString &p_text);
|
||||
int addItem(QWidget *p_widget,
|
||||
const QString &p_iconFile,
|
||||
const QString &p_text,
|
||||
QWidget *p_focusWidget = nullptr);
|
||||
|
||||
void setCurrentIndex(int p_idx);
|
||||
void setCurrentIndex(int p_idx, bool p_focus = true);
|
||||
|
||||
void setCurrentWidget(QWidget *p_widget);
|
||||
void setCurrentWidget(QWidget *p_widget, bool p_focus = true);
|
||||
|
||||
// Implementations for VNavigationMode.
|
||||
void showNavigation() Q_DECL_OVERRIDE;
|
||||
@ -32,16 +35,20 @@ private:
|
||||
struct ItemInfo
|
||||
{
|
||||
ItemInfo()
|
||||
: m_widget(nullptr), m_btn(nullptr)
|
||||
: m_widget(nullptr),
|
||||
m_focusWidget(nullptr),
|
||||
m_btn(nullptr)
|
||||
{
|
||||
}
|
||||
|
||||
ItemInfo(QWidget *p_widget,
|
||||
QWidget *p_focusWidget,
|
||||
const QString &p_text,
|
||||
QPushButton *p_btn,
|
||||
const QIcon &p_icon,
|
||||
const QIcon &p_activeIcon)
|
||||
: m_widget(p_widget),
|
||||
m_focusWidget(p_focusWidget),
|
||||
m_text(p_text),
|
||||
m_btn(p_btn),
|
||||
m_icon(p_icon),
|
||||
@ -50,6 +57,7 @@ private:
|
||||
}
|
||||
|
||||
QWidget *m_widget;
|
||||
QWidget *m_focusWidget;
|
||||
QString m_text;
|
||||
|
||||
QPushButton *m_btn;
|
||||
|
Loading…
x
Reference in New Issue
Block a user