mirror of
https://gitee.com/vnotex/vnote.git
synced 2025-07-05 22:09: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 */
|
||||||
QComboBox#NotebookSelector {
|
QComboBox#NotebookSelector {
|
||||||
border: none;
|
border: none;
|
||||||
border-bottom: $2px solid @combobox_notebookselector_border;
|
|
||||||
font-size: 13pt;
|
font-size: 13pt;
|
||||||
padding-top: 3px;
|
padding-top: 3px;
|
||||||
padding-bottom: 3px;
|
padding-bottom: 3px;
|
||||||
|
@ -402,7 +402,6 @@ VButtonMenuItem:disabled {
|
|||||||
/* QComboBox */
|
/* QComboBox */
|
||||||
QComboBox#NotebookSelector {
|
QComboBox#NotebookSelector {
|
||||||
border: none;
|
border: none;
|
||||||
border-bottom: $2px solid @combobox_notebookselector_border;
|
|
||||||
font-size: 13pt;
|
font-size: 13pt;
|
||||||
padding-top: 3px;
|
padding-top: 3px;
|
||||||
padding-bottom: 3px;
|
padding-bottom: 3px;
|
||||||
|
@ -147,9 +147,6 @@ confirm_reload_folder=true
|
|||||||
; Whether double click on a tab to close it
|
; Whether double click on a tab to close it
|
||||||
double_click_close_tab=true
|
double_click_close_tab=true
|
||||||
|
|
||||||
; Whether put folder and note panel in one vertical column
|
|
||||||
enable_compact_mode=true
|
|
||||||
|
|
||||||
; Whether enable tools dock widget
|
; Whether enable tools dock widget
|
||||||
tools_dock_checked=true
|
tools_dock_checked=true
|
||||||
|
|
||||||
@ -350,8 +347,6 @@ AttachmentList=A
|
|||||||
LocateCurrentFile=D
|
LocateCurrentFile=D
|
||||||
; Toggle Expand mode
|
; Toggle Expand mode
|
||||||
ExpandMode=E
|
ExpandMode=E
|
||||||
; Alternate one/two panels view
|
|
||||||
OnePanelView=P
|
|
||||||
; Discard changes and enter read mode
|
; Discard changes and enter read mode
|
||||||
DiscardAndRead=Q
|
DiscardAndRead=Q
|
||||||
; Toggle Tools dock widget
|
; Toggle Tools dock widget
|
||||||
|
@ -238,9 +238,6 @@ void VConfigManager::initialize()
|
|||||||
m_doubleClickCloseTab = getConfigFromSettings("global",
|
m_doubleClickCloseTab = getConfigFromSettings("global",
|
||||||
"double_click_close_tab").toBool();
|
"double_click_close_tab").toBool();
|
||||||
|
|
||||||
m_enableCompactMode = getConfigFromSettings("global",
|
|
||||||
"enable_compact_mode").toBool();
|
|
||||||
|
|
||||||
int tmpStartupPageMode = getConfigFromSettings("global",
|
int tmpStartupPageMode = getConfigFromSettings("global",
|
||||||
"startup_page_type").toInt();
|
"startup_page_type").toInt();
|
||||||
if (tmpStartupPageMode < (int)StartupPageType::Invalid
|
if (tmpStartupPageMode < (int)StartupPageType::Invalid
|
||||||
@ -337,18 +334,6 @@ void VConfigManager::initSettings()
|
|||||||
void VConfigManager::initFromSessionSettings()
|
void VConfigManager::initFromSessionSettings()
|
||||||
{
|
{
|
||||||
curNotebookIndex = getConfigFromSessionSettings("global", "current_notebook").toInt();
|
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()
|
void VConfigManager::readCustomColors()
|
||||||
@ -1478,7 +1463,6 @@ void VConfigManager::resetLayoutConfigurations()
|
|||||||
resetDefaultConfig("global", "tools_dock_checked");
|
resetDefaultConfig("global", "tools_dock_checked");
|
||||||
resetDefaultConfig("global", "search_dock_checked");
|
resetDefaultConfig("global", "search_dock_checked");
|
||||||
resetDefaultConfig("global", "menu_bar_checked");
|
resetDefaultConfig("global", "menu_bar_checked");
|
||||||
resetDefaultConfig("global", "enable_compact_mode");
|
|
||||||
|
|
||||||
clearGroupOfSettings(m_sessionSettings, "geometry");
|
clearGroupOfSettings(m_sessionSettings, "geometry");
|
||||||
|
|
||||||
|
@ -176,17 +176,17 @@ public:
|
|||||||
bool getSearchDockChecked() const;
|
bool getSearchDockChecked() const;
|
||||||
void setSearchDockChecked(bool p_checked);
|
void setSearchDockChecked(bool p_checked);
|
||||||
|
|
||||||
const QByteArray &getMainWindowGeometry() const;
|
const QByteArray getMainWindowGeometry() const;
|
||||||
void setMainWindowGeometry(const QByteArray &p_geometry);
|
void setMainWindowGeometry(const QByteArray &p_geometry);
|
||||||
|
|
||||||
const QByteArray &getMainWindowState() const;
|
const QByteArray getMainWindowState() const;
|
||||||
void setMainWindowState(const QByteArray &p_state);
|
void setMainWindowState(const QByteArray &p_state);
|
||||||
|
|
||||||
const QByteArray &getMainSplitterState() const;
|
const QByteArray getMainSplitterState() const;
|
||||||
void setMainSplitterState(const QByteArray &p_state);
|
void setMainSplitterState(const QByteArray &p_state);
|
||||||
|
|
||||||
const QByteArray &getNaviSplitterState() const;
|
const QByteArray getNotebookSplitterState() const;
|
||||||
void setNaviSplitterState(const QByteArray &p_state);
|
void setNotebookSplitterState(const QByteArray &p_state);
|
||||||
|
|
||||||
bool getFindCaseSensitive() const;
|
bool getFindCaseSensitive() const;
|
||||||
void setFindCaseSensitive(bool p_enabled);
|
void setFindCaseSensitive(bool p_enabled);
|
||||||
@ -344,9 +344,6 @@ public:
|
|||||||
|
|
||||||
bool getDoubleClickCloseTab() const;
|
bool getDoubleClickCloseTab() const;
|
||||||
|
|
||||||
bool getEnableCompactMode() const;
|
|
||||||
void setEnableCompactMode(bool p_enabled);
|
|
||||||
|
|
||||||
StartupPageType getStartupPageType() const;
|
StartupPageType getStartupPageType() const;
|
||||||
void setStartupPageType(StartupPageType p_type);
|
void setStartupPageType(StartupPageType p_type);
|
||||||
|
|
||||||
@ -623,11 +620,6 @@ private:
|
|||||||
|
|
||||||
QString curRenderBackgroundColor;
|
QString curRenderBackgroundColor;
|
||||||
|
|
||||||
QByteArray m_mainWindowGeometry;
|
|
||||||
QByteArray m_mainWindowState;
|
|
||||||
QByteArray m_mainSplitterState;
|
|
||||||
QByteArray m_naviSplitterState;
|
|
||||||
|
|
||||||
// Find/Replace dialog options
|
// Find/Replace dialog options
|
||||||
bool m_findCaseSensitive;
|
bool m_findCaseSensitive;
|
||||||
bool m_findWholeWordOnly;
|
bool m_findWholeWordOnly;
|
||||||
@ -815,9 +807,6 @@ private:
|
|||||||
// Whether double click on a tab to close it.
|
// Whether double click on a tab to close it.
|
||||||
bool m_doubleClickCloseTab;
|
bool m_doubleClickCloseTab;
|
||||||
|
|
||||||
// Whether put folder and note panel in one single column.
|
|
||||||
bool m_enableCompactMode;
|
|
||||||
|
|
||||||
// Type of the pages to open on startup.
|
// Type of the pages to open on startup.
|
||||||
StartupPageType m_startupPageType;
|
StartupPageType m_startupPageType;
|
||||||
|
|
||||||
@ -1204,56 +1193,56 @@ inline void VConfigManager::setSearchDockChecked(bool p_checked)
|
|||||||
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)
|
inline void VConfigManager::setMainWindowGeometry(const QByteArray &p_geometry)
|
||||||
{
|
{
|
||||||
m_mainWindowGeometry = p_geometry;
|
|
||||||
setConfigToSessionSettings("geometry",
|
setConfigToSessionSettings("geometry",
|
||||||
"main_window_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)
|
inline void VConfigManager::setMainWindowState(const QByteArray &p_state)
|
||||||
{
|
{
|
||||||
m_mainWindowState = p_state;
|
|
||||||
setConfigToSessionSettings("geometry",
|
setConfigToSessionSettings("geometry",
|
||||||
"main_window_state",
|
"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)
|
inline void VConfigManager::setMainSplitterState(const QByteArray &p_state)
|
||||||
{
|
{
|
||||||
m_mainSplitterState = p_state;
|
|
||||||
setConfigToSessionSettings("geometry",
|
setConfigToSessionSettings("geometry",
|
||||||
"main_splitter_state",
|
"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",
|
setConfigToSessionSettings("geometry",
|
||||||
"navi_splitter_state",
|
"notebook_splitter_state",
|
||||||
m_naviSplitterState);
|
p_state);
|
||||||
}
|
}
|
||||||
|
|
||||||
inline bool VConfigManager::getFindCaseSensitive() const
|
inline bool VConfigManager::getFindCaseSensitive() const
|
||||||
@ -1965,21 +1954,6 @@ inline bool VConfigManager::getDoubleClickCloseTab() const
|
|||||||
return m_doubleClickCloseTab;
|
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
|
inline StartupPageType VConfigManager::getStartupPageType() const
|
||||||
{
|
{
|
||||||
return m_startupPageType;
|
return m_startupPageType;
|
||||||
|
@ -85,18 +85,6 @@ VMainWindow::VMainWindow(VSingleInstanceGuard *p_guard, QWidget *p_parent)
|
|||||||
m_webUtils.init();
|
m_webUtils.init();
|
||||||
g_webUtils = &m_webUtils;
|
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();
|
initCaptain();
|
||||||
|
|
||||||
setupUI();
|
setupUI();
|
||||||
@ -109,8 +97,6 @@ VMainWindow::VMainWindow(VSingleInstanceGuard *p_guard, QWidget *p_parent)
|
|||||||
|
|
||||||
initDockWindows();
|
initDockWindows();
|
||||||
|
|
||||||
changePanelView(m_panelViewState);
|
|
||||||
|
|
||||||
restoreStateAndGeometry();
|
restoreStateAndGeometry();
|
||||||
|
|
||||||
setContextMenuPolicy(Qt::NoContextMenu);
|
setContextMenuPolicy(Qt::NoContextMenu);
|
||||||
@ -155,8 +141,9 @@ void VMainWindow::initCaptain()
|
|||||||
|
|
||||||
void VMainWindow::registerCaptainAndNavigationTargets()
|
void VMainWindow::registerCaptainAndNavigationTargets()
|
||||||
{
|
{
|
||||||
|
m_captain->registerNavigationTarget(m_naviBox);
|
||||||
m_captain->registerNavigationTarget(m_notebookSelector);
|
m_captain->registerNavigationTarget(m_notebookSelector);
|
||||||
m_captain->registerNavigationTarget(directoryTree);
|
m_captain->registerNavigationTarget(m_dirTree);
|
||||||
m_captain->registerNavigationTarget(m_fileList);
|
m_captain->registerNavigationTarget(m_fileList);
|
||||||
m_captain->registerNavigationTarget(m_editArea);
|
m_captain->registerNavigationTarget(m_editArea);
|
||||||
m_captain->registerNavigationTarget(m_toolBox);
|
m_captain->registerNavigationTarget(m_toolBox);
|
||||||
@ -177,10 +164,6 @@ void VMainWindow::registerCaptainAndNavigationTargets()
|
|||||||
g_config->getCaptainShortcutKeySequence("ExpandMode"),
|
g_config->getCaptainShortcutKeySequence("ExpandMode"),
|
||||||
this,
|
this,
|
||||||
toggleExpandModeByCaptain);
|
toggleExpandModeByCaptain);
|
||||||
m_captain->registerCaptainTarget(tr("OnePanelView"),
|
|
||||||
g_config->getCaptainShortcutKeySequence("OnePanelView"),
|
|
||||||
this,
|
|
||||||
toggleOnePanelViewByCaptain);
|
|
||||||
m_captain->registerCaptainTarget(tr("DiscardAndRead"),
|
m_captain->registerCaptainTarget(tr("DiscardAndRead"),
|
||||||
g_config->getCaptainShortcutKeySequence("DiscardAndRead"),
|
g_config->getCaptainShortcutKeySequence("DiscardAndRead"),
|
||||||
this,
|
this,
|
||||||
@ -213,41 +196,39 @@ void VMainWindow::registerCaptainAndNavigationTargets()
|
|||||||
|
|
||||||
void VMainWindow::setupUI()
|
void VMainWindow::setupUI()
|
||||||
{
|
{
|
||||||
QWidget *directoryPanel = setupDirectoryPanel();
|
m_naviBox = new VToolBox();
|
||||||
|
|
||||||
m_fileList = new VFileList();
|
setupNotebookPanel();
|
||||||
m_fileList->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Expanding);
|
|
||||||
|
m_naviBox->addItem(m_nbSplitter,
|
||||||
|
":/resources/icons/notebook.svg",
|
||||||
|
tr("Notebooks"),
|
||||||
|
m_dirTree);
|
||||||
|
|
||||||
m_editArea = new VEditArea();
|
m_editArea = new VEditArea();
|
||||||
m_editArea->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
|
m_editArea->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
|
||||||
m_findReplaceDialog = m_editArea->getFindReplaceDialog();
|
m_findReplaceDialog = m_editArea->getFindReplaceDialog();
|
||||||
m_fileList->setEditArea(m_editArea);
|
m_fileList->setEditArea(m_editArea);
|
||||||
directoryTree->setEditArea(m_editArea);
|
m_dirTree->setEditArea(m_editArea);
|
||||||
|
|
||||||
// Main Splitter
|
// Main Splitter
|
||||||
m_mainSplitter = new QSplitter();
|
m_mainSplitter = new QSplitter();
|
||||||
m_mainSplitter->setObjectName("MainSplitter");
|
m_mainSplitter->setObjectName("MainSplitter");
|
||||||
m_mainSplitter->addWidget(directoryPanel);
|
m_mainSplitter->addWidget(m_naviBox);
|
||||||
m_mainSplitter->addWidget(m_fileList);
|
|
||||||
setTabOrder(directoryTree, m_fileList->getContentWidget());
|
|
||||||
m_mainSplitter->addWidget(m_editArea);
|
m_mainSplitter->addWidget(m_editArea);
|
||||||
m_mainSplitter->setStretchFactor(0, 0);
|
m_mainSplitter->setStretchFactor(0, 0);
|
||||||
m_mainSplitter->setStretchFactor(1, 0);
|
m_mainSplitter->setStretchFactor(1, 0);
|
||||||
m_mainSplitter->setStretchFactor(2, 1);
|
|
||||||
|
|
||||||
// Signals
|
connect(m_dirTree, &VDirectoryTree::directoryUpdated,
|
||||||
connect(directoryTree, &VDirectoryTree::currentDirectoryChanged,
|
|
||||||
m_fileList, &VFileList::setDirectory);
|
|
||||||
connect(directoryTree, &VDirectoryTree::directoryUpdated,
|
|
||||||
m_editArea, &VEditArea::handleDirectoryUpdated);
|
m_editArea, &VEditArea::handleDirectoryUpdated);
|
||||||
|
|
||||||
connect(m_notebookSelector, &VNotebookSelector::notebookUpdated,
|
connect(m_notebookSelector, &VNotebookSelector::notebookUpdated,
|
||||||
m_editArea, &VEditArea::handleNotebookUpdated);
|
m_editArea, &VEditArea::handleNotebookUpdated);
|
||||||
connect(m_notebookSelector, &VNotebookSelector::notebookCreated,
|
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);
|
Q_UNUSED(p_name);
|
||||||
if (!p_import) {
|
if (!p_import) {
|
||||||
directoryTree->newRootDirectory();
|
m_dirTree->newRootDirectory();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -284,66 +265,53 @@ void VMainWindow::setupUI()
|
|||||||
initTrayIcon();
|
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 = new VNotebookSelector();
|
||||||
m_notebookSelector->setObjectName("NotebookSelector");
|
m_notebookSelector->setObjectName("NotebookSelector");
|
||||||
m_notebookSelector->setSizeAdjustPolicy(QComboBox::AdjustToMinimumContentsLengthWithIcon);
|
m_notebookSelector->setSizeAdjustPolicy(QComboBox::AdjustToMinimumContentsLengthWithIcon);
|
||||||
|
|
||||||
// Navigation panel.
|
// Folders.
|
||||||
QLabel *directoryLabel = new QLabel(tr("Folders"));
|
QLabel *directoryLabel = new QLabel(tr("Folders"));
|
||||||
directoryLabel->setProperty("TitleLabel", true);
|
directoryLabel->setProperty("TitleLabel", true);
|
||||||
|
|
||||||
directoryTree = new VDirectoryTree;
|
m_dirTree = new VDirectoryTree;
|
||||||
|
|
||||||
QVBoxLayout *naviLayout = new QVBoxLayout;
|
QVBoxLayout *naviLayout = new QVBoxLayout;
|
||||||
|
naviLayout->addWidget(m_notebookSelector);
|
||||||
naviLayout->addWidget(directoryLabel);
|
naviLayout->addWidget(directoryLabel);
|
||||||
naviLayout->addWidget(directoryTree);
|
naviLayout->addWidget(m_dirTree);
|
||||||
naviLayout->setContentsMargins(0, 0, 0, 0);
|
naviLayout->setContentsMargins(0, 0, 0, 0);
|
||||||
naviLayout->setSpacing(0);
|
naviLayout->setSpacing(0);
|
||||||
QWidget *naviWidget = new QWidget();
|
QWidget *naviWidget = new QWidget();
|
||||||
naviWidget->setLayout(naviLayout);
|
naviWidget->setLayout(naviLayout);
|
||||||
|
|
||||||
QWidget *tmpWidget = new QWidget();
|
// Notes.
|
||||||
|
m_fileList = new VFileList();
|
||||||
|
m_fileList->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Expanding);
|
||||||
|
|
||||||
// Compact splitter.
|
m_nbSplitter = new QSplitter();
|
||||||
m_naviSplitter = new QSplitter();
|
m_nbSplitter->setOrientation(Qt::Vertical);
|
||||||
m_naviSplitter->setOrientation(Qt::Vertical);
|
m_nbSplitter->setObjectName("NotebookSplitter");
|
||||||
m_naviSplitter->setObjectName("NaviSplitter");
|
m_nbSplitter->addWidget(naviWidget);
|
||||||
m_naviSplitter->addWidget(naviWidget);
|
m_nbSplitter->addWidget(m_fileList);
|
||||||
m_naviSplitter->addWidget(tmpWidget);
|
m_nbSplitter->setStretchFactor(0, 0);
|
||||||
m_naviSplitter->setStretchFactor(0, 0);
|
m_nbSplitter->setStretchFactor(1, 1);
|
||||||
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);
|
|
||||||
|
|
||||||
connect(m_notebookSelector, &VNotebookSelector::curNotebookChanged,
|
connect(m_notebookSelector, &VNotebookSelector::curNotebookChanged,
|
||||||
this, [this](VNotebook *p_notebook) {
|
this, [this](VNotebook *p_notebook) {
|
||||||
directoryTree->setNotebook(p_notebook);
|
m_dirTree->setNotebook(p_notebook);
|
||||||
directoryTree->setFocus();
|
m_dirTree->setFocus();
|
||||||
});
|
});
|
||||||
|
|
||||||
connect(m_notebookSelector, &VNotebookSelector::curNotebookChanged,
|
connect(m_notebookSelector, &VNotebookSelector::curNotebookChanged,
|
||||||
this, &VMainWindow::handleCurrentNotebookChanged);
|
this, &VMainWindow::handleCurrentNotebookChanged);
|
||||||
|
|
||||||
connect(directoryTree, &VDirectoryTree::currentDirectoryChanged,
|
connect(m_dirTree, &VDirectoryTree::currentDirectoryChanged,
|
||||||
this, &VMainWindow::handleCurrentDirectoryChanged);
|
this, &VMainWindow::handleCurrentDirectoryChanged);
|
||||||
|
|
||||||
return nbContainer;
|
connect(m_dirTree, &VDirectoryTree::currentDirectoryChanged,
|
||||||
|
m_fileList, &VFileList::setDirectory);
|
||||||
}
|
}
|
||||||
|
|
||||||
void VMainWindow::initToolBar()
|
void VMainWindow::initToolBar()
|
||||||
@ -366,92 +334,6 @@ void VMainWindow::initViewToolBar(QSize p_iconSize)
|
|||||||
viewToolBar->setIconSize(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"),
|
QAction *fullScreenAct = new QAction(VIconUtils::toolButtonIcon(":/resources/icons/fullscreen.svg"),
|
||||||
tr("Full Screen"),
|
tr("Full Screen"),
|
||||||
this);
|
this);
|
||||||
@ -463,7 +345,6 @@ void VMainWindow::initViewToolBar(QSize p_iconSize)
|
|||||||
}
|
}
|
||||||
|
|
||||||
fullScreenAct->setStatusTip(tr("Toggle full screen"));
|
fullScreenAct->setStatusTip(tr("Toggle full screen"));
|
||||||
fullScreenAct->setMenu(screenMenu);
|
|
||||||
connect(fullScreenAct, &QAction::triggered,
|
connect(fullScreenAct, &QAction::triggered,
|
||||||
this, [this]() {
|
this, [this]() {
|
||||||
if (windowState() & Qt::WindowFullScreen) {
|
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.
|
// Enable/disable all actions of @p_widget.
|
||||||
@ -691,7 +602,7 @@ void VMainWindow::initFileToolBar(QSize p_iconSize)
|
|||||||
this);
|
this);
|
||||||
newRootDirAct->setStatusTip(tr("Create a root folder in current notebook"));
|
newRootDirAct->setStatusTip(tr("Create a root folder in current notebook"));
|
||||||
connect(newRootDirAct, &QAction::triggered,
|
connect(newRootDirAct, &QAction::triggered,
|
||||||
directoryTree, &VDirectoryTree::newRootDirectory);
|
m_dirTree, &VDirectoryTree::newRootDirectory);
|
||||||
|
|
||||||
newNoteAct = new QAction(VIconUtils::toolButtonIcon(":/resources/icons/create_note_tb.svg"),
|
newNoteAct = new QAction(VIconUtils::toolButtonIcon(":/resources/icons/create_note_tb.svg"),
|
||||||
tr("New Note"), this);
|
tr("New Note"), this);
|
||||||
@ -2050,127 +1961,25 @@ void VMainWindow::handleAreaTabStatusUpdated(const VEditTabInfo &p_info)
|
|||||||
updateStatusInfo(p_info);
|
updateStatusInfo(p_info);
|
||||||
}
|
}
|
||||||
|
|
||||||
void VMainWindow::onePanelView()
|
void VMainWindow::changePanelView(PanelViewState p_state)
|
||||||
{
|
|
||||||
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)
|
|
||||||
{
|
{
|
||||||
switch (p_state) {
|
switch (p_state) {
|
||||||
case PanelViewState::ExpandMode:
|
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(0)->hide();
|
||||||
m_mainSplitter->widget(1)->show();
|
m_mainSplitter->widget(1)->show();
|
||||||
m_mainSplitter->widget(2)->show();
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case PanelViewState::TwoPanels:
|
case PanelViewState::HorizontalMode:
|
||||||
enableCompactMode(false);
|
case PanelViewState::VerticalMode:
|
||||||
|
|
||||||
m_mainSplitter->widget(0)->show();
|
m_mainSplitter->widget(0)->show();
|
||||||
m_mainSplitter->widget(1)->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;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Change the action state.
|
expandViewAct->setChecked(p_state == PanelViewState::ExpandMode);
|
||||||
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();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void VMainWindow::updateWindowTitle(const QString &str)
|
void VMainWindow::updateWindowTitle(const QString &str)
|
||||||
@ -2297,16 +2106,8 @@ void VMainWindow::saveStateAndGeometry()
|
|||||||
g_config->setMainWindowState(saveState());
|
g_config->setMainWindowState(saveState());
|
||||||
g_config->setToolsDockChecked(m_toolDock->isVisible());
|
g_config->setToolsDockChecked(m_toolDock->isVisible());
|
||||||
g_config->setSearchDockChecked(m_searchDock->isVisible());
|
g_config->setSearchDockChecked(m_searchDock->isVisible());
|
||||||
|
g_config->setNotebookSplitterState(m_nbSplitter->saveState());
|
||||||
if (m_panelViewState == PanelViewState::CompactMode) {
|
|
||||||
g_config->setNaviSplitterState(m_naviSplitter->saveState());
|
|
||||||
g_config->setMainSplitterState(m_mainSplitter->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()
|
void VMainWindow::restoreStateAndGeometry()
|
||||||
@ -2329,9 +2130,9 @@ void VMainWindow::restoreStateAndGeometry()
|
|||||||
m_mainSplitter->restoreState(splitterState);
|
m_mainSplitter->restoreState(splitterState);
|
||||||
}
|
}
|
||||||
|
|
||||||
const QByteArray &naviSplitterState = g_config->getNaviSplitterState();
|
const QByteArray &nbSplitterState = g_config->getNotebookSplitterState();
|
||||||
if (!naviSplitterState.isEmpty()) {
|
if (!nbSplitterState.isEmpty()) {
|
||||||
m_naviSplitter->restoreState(naviSplitterState);
|
m_nbSplitter->restoreState(nbSplitterState);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2370,12 +2171,12 @@ bool VMainWindow::locateFile(VFile *p_file)
|
|||||||
VNoteFile *file = dynamic_cast<VNoteFile *>(p_file);
|
VNoteFile *file = dynamic_cast<VNoteFile *>(p_file);
|
||||||
VNotebook *notebook = file->getNotebook();
|
VNotebook *notebook = file->getNotebook();
|
||||||
if (m_notebookSelector->locateNotebook(notebook)) {
|
if (m_notebookSelector->locateNotebook(notebook)) {
|
||||||
while (directoryTree->currentNotebook() != notebook) {
|
while (m_dirTree->currentNotebook() != notebook) {
|
||||||
QCoreApplication::sendPostedEvents();
|
QCoreApplication::sendPostedEvents();
|
||||||
}
|
}
|
||||||
|
|
||||||
VDirectory *dir = file->getDirectory();
|
VDirectory *dir = file->getDirectory();
|
||||||
if (directoryTree->locateDirectory(dir)) {
|
if (m_dirTree->locateDirectory(dir)) {
|
||||||
while (m_fileList->currentDirectory() != dir) {
|
while (m_fileList->currentDirectory() != dir) {
|
||||||
QCoreApplication::sendPostedEvents();
|
QCoreApplication::sendPostedEvents();
|
||||||
}
|
}
|
||||||
@ -2389,11 +2190,7 @@ bool VMainWindow::locateFile(VFile *p_file)
|
|||||||
|
|
||||||
// Open the directory and file panels after location.
|
// Open the directory and file panels after location.
|
||||||
if (ret) {
|
if (ret) {
|
||||||
if (m_panelViewState == PanelViewState::CompactMode) {
|
showNotebookPanel();
|
||||||
compactModeView();
|
|
||||||
} else {
|
|
||||||
twoPanelView();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
@ -2408,23 +2205,19 @@ bool VMainWindow::locateDirectory(VDirectory *p_directory)
|
|||||||
|
|
||||||
VNotebook *notebook = p_directory->getNotebook();
|
VNotebook *notebook = p_directory->getNotebook();
|
||||||
if (m_notebookSelector->locateNotebook(notebook)) {
|
if (m_notebookSelector->locateNotebook(notebook)) {
|
||||||
while (directoryTree->currentNotebook() != notebook) {
|
while (m_dirTree->currentNotebook() != notebook) {
|
||||||
QCoreApplication::sendPostedEvents();
|
QCoreApplication::sendPostedEvents();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (directoryTree->locateDirectory(p_directory)) {
|
if (m_dirTree->locateDirectory(p_directory)) {
|
||||||
ret = true;
|
ret = true;
|
||||||
directoryTree->setFocus();
|
m_dirTree->setFocus();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Open the directory and file panels after location.
|
// Open the directory and file panels after location.
|
||||||
if (ret) {
|
if (ret) {
|
||||||
if (m_panelViewState == PanelViewState::CompactMode) {
|
showNotebookPanel();
|
||||||
compactModeView();
|
|
||||||
} else {
|
|
||||||
twoPanelView();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
@ -2439,16 +2232,12 @@ bool VMainWindow::locateNotebook(VNotebook *p_notebook)
|
|||||||
|
|
||||||
if (m_notebookSelector->locateNotebook(p_notebook)) {
|
if (m_notebookSelector->locateNotebook(p_notebook)) {
|
||||||
ret = true;
|
ret = true;
|
||||||
directoryTree->setFocus();
|
m_dirTree->setFocus();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Open the directory and file panels after location.
|
// Open the directory and file panels after location.
|
||||||
if (ret) {
|
if (ret) {
|
||||||
if (m_panelViewState == PanelViewState::CompactMode) {
|
showNotebookPanel();
|
||||||
compactModeView();
|
|
||||||
} else {
|
|
||||||
twoPanelView();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
@ -2826,19 +2615,6 @@ bool VMainWindow::toggleExpandModeByCaptain(void *p_target, void *p_data)
|
|||||||
return true;
|
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)
|
bool VMainWindow::discardAndReadByCaptain(void *p_target, void *p_data)
|
||||||
{
|
{
|
||||||
Q_UNUSED(p_data);
|
Q_UNUSED(p_data);
|
||||||
@ -3235,7 +3011,7 @@ void VMainWindow::updateEditReadAct(const VEditTab *p_tab)
|
|||||||
void VMainWindow::handleExportAct()
|
void VMainWindow::handleExportAct()
|
||||||
{
|
{
|
||||||
VExportDialog dialog(m_notebookSelector->currentNotebook(),
|
VExportDialog dialog(m_notebookSelector->currentNotebook(),
|
||||||
directoryTree->currentDirectory(),
|
m_dirTree->currentDirectory(),
|
||||||
m_curFile,
|
m_curFile,
|
||||||
m_cart,
|
m_cart,
|
||||||
g_config->getMdConverterType(),
|
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)
|
void VMainWindow::kickOffStartUpTimer(const QStringList &p_files)
|
||||||
{
|
{
|
||||||
QTimer::singleShot(300, [this, 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);
|
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
|
enum class PanelViewState
|
||||||
{
|
{
|
||||||
ExpandMode,
|
ExpandMode,
|
||||||
SinglePanel,
|
HorizontalMode,
|
||||||
TwoPanels,
|
VerticalMode,
|
||||||
CompactMode,
|
|
||||||
Invalid
|
Invalid
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -140,9 +139,6 @@ private slots:
|
|||||||
void changeHighlightSelectedWord(bool p_checked);
|
void changeHighlightSelectedWord(bool p_checked);
|
||||||
void changeHighlightSearchedWord(bool p_checked);
|
void changeHighlightSearchedWord(bool p_checked);
|
||||||
void changeHighlightTrailingSapce(bool p_checked);
|
void changeHighlightTrailingSapce(bool p_checked);
|
||||||
void onePanelView();
|
|
||||||
void twoPanelView();
|
|
||||||
void compactModeView();
|
|
||||||
void curEditFileInfo();
|
void curEditFileInfo();
|
||||||
void deleteCurNote();
|
void deleteCurNote();
|
||||||
void handleCurrentDirectoryChanged(const VDirectory *p_dir);
|
void handleCurrentDirectoryChanged(const VDirectory *p_dir);
|
||||||
@ -164,9 +160,6 @@ private slots:
|
|||||||
// Open export dialog.
|
// Open export dialog.
|
||||||
void handleExportAct();
|
void handleExportAct();
|
||||||
|
|
||||||
// Set the panel view properly.
|
|
||||||
void enableCompactMode(bool p_enabled);
|
|
||||||
|
|
||||||
// Handle Vim status updated.
|
// Handle Vim status updated.
|
||||||
void handleVimStatusUpdated(const VVim *p_vim);
|
void handleVimStatusUpdated(const VVim *p_vim);
|
||||||
|
|
||||||
@ -196,9 +189,6 @@ private slots:
|
|||||||
// Activate Universal Entry.
|
// Activate Universal Entry.
|
||||||
void activateUniversalEntry();
|
void activateUniversalEntry();
|
||||||
|
|
||||||
// Make sure width of the panel is not zero after changePanelView().
|
|
||||||
void postChangePanelView();
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void closeEvent(QCloseEvent *event) Q_DECL_OVERRIDE;
|
void closeEvent(QCloseEvent *event) Q_DECL_OVERRIDE;
|
||||||
|
|
||||||
@ -208,7 +198,8 @@ protected:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
void setupUI();
|
void setupUI();
|
||||||
QWidget *setupDirectoryPanel();
|
|
||||||
|
void setupNotebookPanel();
|
||||||
|
|
||||||
void initToolBar();
|
void initToolBar();
|
||||||
|
|
||||||
@ -280,8 +271,7 @@ private:
|
|||||||
void initTrayIcon();
|
void initTrayIcon();
|
||||||
|
|
||||||
// Change the panel view according to @p_state.
|
// Change the panel view according to @p_state.
|
||||||
// Will not change m_panelViewState.
|
void changePanelView(PanelViewState p_state);
|
||||||
void changePanelView(PanelViewState p_state, bool p_postCheck = false);
|
|
||||||
|
|
||||||
// Whether heading sequence is applicable to current tab.
|
// Whether heading sequence is applicable to current tab.
|
||||||
// Only available for writable Markdown file.
|
// Only available for writable Markdown file.
|
||||||
@ -299,6 +289,8 @@ private:
|
|||||||
|
|
||||||
void setMenuBarVisible(bool p_visible);
|
void setMenuBarVisible(bool p_visible);
|
||||||
|
|
||||||
|
void showNotebookPanel();
|
||||||
|
|
||||||
// Captain mode functions.
|
// Captain mode functions.
|
||||||
|
|
||||||
// Popup the attachment list if it is enabled.
|
// Popup the attachment list if it is enabled.
|
||||||
@ -308,8 +300,6 @@ private:
|
|||||||
|
|
||||||
static bool toggleExpandModeByCaptain(void *p_target, void *p_data);
|
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 discardAndReadByCaptain(void *p_target, void *p_data);
|
||||||
|
|
||||||
static bool toggleToolsDockByCaptain(void *p_target, void *p_data);
|
static bool toggleToolsDockByCaptain(void *p_target, void *p_data);
|
||||||
@ -333,15 +323,18 @@ private:
|
|||||||
VCaptain *m_captain;
|
VCaptain *m_captain;
|
||||||
|
|
||||||
VNotebookSelector *m_notebookSelector;
|
VNotebookSelector *m_notebookSelector;
|
||||||
|
|
||||||
VFileList *m_fileList;
|
VFileList *m_fileList;
|
||||||
VDirectoryTree *directoryTree;
|
|
||||||
|
VDirectoryTree *m_dirTree;
|
||||||
|
|
||||||
|
VToolBox *m_naviBox;
|
||||||
|
|
||||||
// Splitter for directory | files | edit.
|
// Splitter for directory | files | edit.
|
||||||
QSplitter *m_mainSplitter;
|
QSplitter *m_mainSplitter;
|
||||||
|
|
||||||
// Splitter for directory | files.
|
// Splitter for folders/notes.
|
||||||
// Move directory and file panel in one compact vertical split.
|
QSplitter *m_nbSplitter;
|
||||||
QSplitter *m_naviSplitter;
|
|
||||||
|
|
||||||
VEditArea *m_editArea;
|
VEditArea *m_editArea;
|
||||||
|
|
||||||
@ -371,9 +364,6 @@ private:
|
|||||||
|
|
||||||
VTabIndicator *m_tabIndicator;
|
VTabIndicator *m_tabIndicator;
|
||||||
|
|
||||||
// SinglePanel, TwoPanels, CompactMode.
|
|
||||||
PanelViewState m_panelViewState;
|
|
||||||
|
|
||||||
// Actions
|
// Actions
|
||||||
QAction *newRootDirAct;
|
QAction *newRootDirAct;
|
||||||
QAction *newNoteAct;
|
QAction *newNoteAct;
|
||||||
@ -415,9 +405,6 @@ private:
|
|||||||
// Act group for code block render styles.
|
// Act group for code block render styles.
|
||||||
QActionGroup *m_codeBlockStyleActs;
|
QActionGroup *m_codeBlockStyleActs;
|
||||||
|
|
||||||
// Act group for panel view actions.
|
|
||||||
QActionGroup *m_viewActGroup;
|
|
||||||
|
|
||||||
// Menus
|
// Menus
|
||||||
QMenu *m_viewMenu;
|
QMenu *m_viewMenu;
|
||||||
|
|
||||||
@ -440,9 +427,6 @@ private:
|
|||||||
// Timer to check the shared memory between instances of VNote.
|
// Timer to check the shared memory between instances of VNote.
|
||||||
QTimer *m_sharedMemTimer;
|
QTimer *m_sharedMemTimer;
|
||||||
|
|
||||||
// Timer to check the panel size.
|
|
||||||
QTimer *m_panelViewTimer;
|
|
||||||
|
|
||||||
// Tray icon.
|
// Tray icon.
|
||||||
QSystemTrayIcon *m_trayIcon;
|
QSystemTrayIcon *m_trayIcon;
|
||||||
|
|
||||||
@ -499,7 +483,7 @@ inline VCart *VMainWindow::getCart() const
|
|||||||
|
|
||||||
inline VDirectoryTree *VMainWindow::getDirectoryTree() const
|
inline VDirectoryTree *VMainWindow::getDirectoryTree() const
|
||||||
{
|
{
|
||||||
return directoryTree;
|
return m_dirTree;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline VNotebookSelector *VMainWindow::getNotebookSelector() const
|
inline VNotebookSelector *VMainWindow::getNotebookSelector() const
|
||||||
|
@ -20,8 +20,6 @@
|
|||||||
<file>resources/icons/dir_info.svg</file>
|
<file>resources/icons/dir_info.svg</file>
|
||||||
<file>resources/icons/notebook_info.svg</file>
|
<file>resources/icons/notebook_info.svg</file>
|
||||||
<file>resources/icons/expand.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/split_window.svg</file>
|
||||||
<file>resources/icons/corner_menu.svg</file>
|
<file>resources/icons/corner_menu.svg</file>
|
||||||
<file>resources/icons/remove_split.svg</file>
|
<file>resources/icons/remove_split.svg</file>
|
||||||
@ -92,7 +90,6 @@
|
|||||||
<file>resources/icons/delete_attachment.svg</file>
|
<file>resources/icons/delete_attachment.svg</file>
|
||||||
<file>resources/icons/sort.svg</file>
|
<file>resources/icons/sort.svg</file>
|
||||||
<file>resources/icons/create_subdir.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/heading_sequence.svg</file>
|
||||||
<file>resources/icons/link.svg</file>
|
<file>resources/icons/link.svg</file>
|
||||||
<file>resources/icons/code_block.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-front-matter.js</file>
|
||||||
<file>utils/markdown-it/markdown-it-imsize.min.js</file>
|
<file>utils/markdown-it/markdown-it-imsize.min.js</file>
|
||||||
<file>utils/markdown-it/markdown-it-emoji.min.js</file>
|
<file>utils/markdown-it/markdown-it-emoji.min.js</file>
|
||||||
|
<file>resources/icons/notebook.svg</file>
|
||||||
</qresource>
|
</qresource>
|
||||||
</RCC>
|
</RCC>
|
||||||
|
@ -40,7 +40,10 @@ void VToolBox::setupUI()
|
|||||||
setLayout(mainLayout);
|
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();
|
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_widgetLayout->insertWidget(idx, p_widget);
|
||||||
|
|
||||||
m_items.push_back(ItemInfo(p_widget,
|
m_items.push_back(ItemInfo(p_widget,
|
||||||
|
p_focusWidget,
|
||||||
p_text,
|
p_text,
|
||||||
btn,
|
btn,
|
||||||
icon,
|
icon,
|
||||||
@ -78,7 +82,7 @@ int VToolBox::addItem(QWidget *p_widget, const QString &p_iconFile, const QStrin
|
|||||||
return idx;
|
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()) {
|
if (p_idx < 0 || p_idx >= m_items.size()) {
|
||||||
m_currentIndex = -1;
|
m_currentIndex = -1;
|
||||||
@ -91,12 +95,16 @@ void VToolBox::setCurrentIndex(int p_idx)
|
|||||||
m_widgetLayout->setCurrentIndex(m_currentIndex);
|
m_widgetLayout->setCurrentIndex(m_currentIndex);
|
||||||
|
|
||||||
QWidget *widget = m_widgetLayout->widget(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();
|
widget->setFocus();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void VToolBox::setCurrentWidget(QWidget *p_widget)
|
void VToolBox::setCurrentWidget(QWidget *p_widget, bool p_focus)
|
||||||
{
|
{
|
||||||
int idx = -1;
|
int idx = -1;
|
||||||
for (int i = 0; i < m_items.size(); ++i) {
|
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)
|
void VToolBox::setCurrentButtonIndex(int p_idx)
|
||||||
|
@ -18,11 +18,14 @@ class VToolBox : public QWidget, public VNavigationMode
|
|||||||
public:
|
public:
|
||||||
explicit VToolBox(QWidget *p_parent = nullptr);
|
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.
|
// Implementations for VNavigationMode.
|
||||||
void showNavigation() Q_DECL_OVERRIDE;
|
void showNavigation() Q_DECL_OVERRIDE;
|
||||||
@ -32,16 +35,20 @@ private:
|
|||||||
struct ItemInfo
|
struct ItemInfo
|
||||||
{
|
{
|
||||||
ItemInfo()
|
ItemInfo()
|
||||||
: m_widget(nullptr), m_btn(nullptr)
|
: m_widget(nullptr),
|
||||||
|
m_focusWidget(nullptr),
|
||||||
|
m_btn(nullptr)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
ItemInfo(QWidget *p_widget,
|
ItemInfo(QWidget *p_widget,
|
||||||
|
QWidget *p_focusWidget,
|
||||||
const QString &p_text,
|
const QString &p_text,
|
||||||
QPushButton *p_btn,
|
QPushButton *p_btn,
|
||||||
const QIcon &p_icon,
|
const QIcon &p_icon,
|
||||||
const QIcon &p_activeIcon)
|
const QIcon &p_activeIcon)
|
||||||
: m_widget(p_widget),
|
: m_widget(p_widget),
|
||||||
|
m_focusWidget(p_focusWidget),
|
||||||
m_text(p_text),
|
m_text(p_text),
|
||||||
m_btn(p_btn),
|
m_btn(p_btn),
|
||||||
m_icon(p_icon),
|
m_icon(p_icon),
|
||||||
@ -50,6 +57,7 @@ private:
|
|||||||
}
|
}
|
||||||
|
|
||||||
QWidget *m_widget;
|
QWidget *m_widget;
|
||||||
|
QWidget *m_focusWidget;
|
||||||
QString m_text;
|
QString m_text;
|
||||||
|
|
||||||
QPushButton *m_btn;
|
QPushButton *m_btn;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user