diff --git a/src/resources/icons/corner_menu.svg b/src/resources/icons/corner_menu.svg index c1a71c81..f7202eaa 100644 --- a/src/resources/icons/corner_menu.svg +++ b/src/resources/icons/corner_menu.svg @@ -3,7 +3,7 @@ - diff --git a/src/resources/icons/corner_menu_cur.svg b/src/resources/icons/corner_menu_cur.svg index 77a129bf..e290311b 100644 --- a/src/resources/icons/corner_menu_cur.svg +++ b/src/resources/icons/corner_menu_cur.svg @@ -3,7 +3,7 @@ - diff --git a/src/resources/icons/corner_tablist.svg b/src/resources/icons/corner_tablist.svg index edf92f3d..b20efa2c 100644 --- a/src/resources/icons/corner_tablist.svg +++ b/src/resources/icons/corner_tablist.svg @@ -5,7 +5,7 @@ width="512px" height="512px" viewBox="0 0 512 512" enable-background="new 0 0 512 512" xml:space="preserve"> - + diff --git a/src/resources/icons/corner_tablist_cur.svg b/src/resources/icons/corner_tablist_cur.svg index 1007853e..4a2770b2 100644 --- a/src/resources/icons/corner_tablist_cur.svg +++ b/src/resources/icons/corner_tablist_cur.svg @@ -5,7 +5,7 @@ width="512px" height="512px" viewBox="0 0 512 512" enable-background="new 0 0 512 512" xml:space="preserve"> - + diff --git a/src/resources/icons/editing_modified.svg b/src/resources/icons/editing_modified.svg new file mode 100644 index 00000000..9ae66550 --- /dev/null +++ b/src/resources/icons/editing_modified.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + diff --git a/src/veditwindow.cpp b/src/veditwindow.cpp index 1bf25137..3d92abaf 100644 --- a/src/veditwindow.cpp +++ b/src/veditwindow.cpp @@ -26,6 +26,7 @@ VEditWindow::VEditWindow(VNote *vnote, VEditArea *editArea, QWidget *parent) // Explicit speficy in macOS. setUsesScrollButtons(true); + setElideMode(Qt::ElideRight); setTabsClosable(true); setMovable(true); setContextMenuPolicy(Qt::CustomContextMenu); @@ -150,18 +151,18 @@ void VEditWindow::initTabActions() void VEditWindow::setupCornerWidget() { - // Left corner button + // Left button leftBtn = new QPushButton(QIcon(":/resources/icons/corner_tablist.svg"), "", this); leftBtn->setProperty("CornerBtn", true); + leftBtn->setToolTip(tr("Opened Notes List")); VOpenedListMenu *leftMenu = new VOpenedListMenu(this); leftMenu->setToolTipsVisible(true); connect(leftMenu, &VOpenedListMenu::fileTriggered, this, &VEditWindow::tabListJump); leftBtn->setMenu(leftMenu); - setCornerWidget(leftBtn, Qt::TopLeftCorner); - // Right corner button + // Right button // Actions splitAct = new QAction(QIcon(":/resources/icons/split_window.svg"), tr("Split"), this); @@ -180,14 +181,25 @@ void VEditWindow::setupCornerWidget() rightBtn = new QPushButton(QIcon(":/resources/icons/corner_menu.svg"), "", this); rightBtn->setProperty("CornerBtn", true); + rightBtn->setToolTip(tr("Menu")); QMenu *rightMenu = new QMenu(this); rightMenu->setToolTipsVisible(true); rightMenu->addAction(splitAct); rightMenu->addAction(removeSplitAct); rightBtn->setMenu(rightMenu); - setCornerWidget(rightBtn, Qt::TopRightCorner); connect(rightMenu, &QMenu::aboutToShow, this, &VEditWindow::updateSplitMenu); + + // Move all buttons to the right corner. + QWidget *widget = new QWidget(this); + QHBoxLayout *layout = new QHBoxLayout(); + layout->addWidget(leftBtn); + layout->addWidget(rightBtn); + layout->setContentsMargins(0, 0, 0, 0); + layout->setSpacing(0); + widget->setLayout(layout); + + setCornerWidget(widget, Qt::TopRightCorner); } void VEditWindow::splitWindow(bool p_right) @@ -438,8 +450,14 @@ void VEditWindow::updateTabInfo(int p_index) setTabText(p_index, generateTabText(p_index, file->getName(), file->isModified(), file->isModifiable())); setTabToolTip(p_index, generateTooltip(file)); - setTabIcon(p_index, editMode ? QIcon(":/resources/icons/editing.svg") : - QIcon(":/resources/icons/reading.svg")); + + QString iconUrl(":/resources/icons/reading.svg"); + if (editMode) { + iconUrl = file->isModified() ? ":/resources/icons/editing_modified.svg" + : ":/resources/icons/editing.svg"; + } + + setTabIcon(p_index, QIcon(iconUrl)); } void VEditWindow::updateAllTabsSequence() diff --git a/src/vmainwindow.cpp b/src/vmainwindow.cpp index 459c2a79..a6593ddc 100644 --- a/src/vmainwindow.cpp +++ b/src/vmainwindow.cpp @@ -661,8 +661,8 @@ void VMainWindow::initFileMenu() // Import notes from files. m_importNoteAct = newAction(QIcon(":/resources/icons/import_note.svg"), - tr("&Import Notes From Files"), this); - m_importNoteAct->setToolTip(tr("Import notes from external files into current folder by copy")); + tr("&New Notes From Files"), this); + m_importNoteAct->setToolTip(tr("Create notes from external files in current folder by copy")); connect(m_importNoteAct, &QAction::triggered, this, &VMainWindow::importNoteFromFile); m_importNoteAct->setEnabled(false); @@ -716,7 +716,12 @@ void VMainWindow::initFileMenu() this); if (ret == QMessageBox::Ok) { +#if defined(Q_OS_MACOS) || defined(Q_OS_MAC) + // On macOS, it seems that we could not open that ini file directly. + QUrl url = QUrl::fromLocalFile(vconfig.getConfigFolder()); +#else QUrl url = QUrl::fromLocalFile(vconfig.getConfigFilePath()); +#endif QDesktopServices::openUrl(url); } }); @@ -996,7 +1001,7 @@ void VMainWindow::importNoteFromFile() { static QString lastPath = QDir::homePath(); QStringList files = QFileDialog::getOpenFileNames(this, - tr("Select Files (HTML or Markdown) To Import"), + tr("Select Files (HTML or Markdown) To Create Notes"), lastPath); if (files.isEmpty()) { return; @@ -1012,13 +1017,15 @@ void VMainWindow::importNoteFromFile() ++failedFiles; } } - QMessageBox msgBox(QMessageBox::Information, tr("Import Notes From File"), - tr("Imported notes: %1 succeed, %2 failed.") + + QMessageBox msgBox(QMessageBox::Information, tr("New Notes From Files"), + tr("Created notes: %1 succeed, %2 failed.") .arg(files.size() - failedFiles).arg(failedFiles), QMessageBox::Ok, this); if (failedFiles > 0) { - msgBox.setInformativeText(tr("Fail to import files maybe due to name conflicts.")); + msgBox.setInformativeText(tr("Fail to create notes from files maybe due to name conflicts.")); } + msgBox.exec(); } @@ -1555,11 +1562,12 @@ void VMainWindow::closeEvent(QCloseEvent *event) vconfig.setMinimizeToSystemTray(0); isExit = true; } else { + event->ignore(); return; } } - if (isExit) { + if (isExit || !m_trayIcon->isVisible()) { if (!editArea->closeAllFiles(false)) { // Fail to close all the opened files, cancel closing app event->ignore(); diff --git a/src/vnote.qrc b/src/vnote.qrc index 1d0d8a67..50e0b0b8 100644 --- a/src/vnote.qrc +++ b/src/vnote.qrc @@ -117,5 +117,6 @@ resources/icons/inline_code.svg resources/icons/close_note_tb.svg resources/icons/32x32/vnote.png + resources/icons/editing_modified.svg diff --git a/src/vnotebookselector.cpp b/src/vnotebookselector.cpp index b81420e0..f18115c7 100644 --- a/src/vnotebookselector.cpp +++ b/src/vnotebookselector.cpp @@ -165,8 +165,11 @@ bool VNotebookSelector::newNotebook() QString info(tr("Please type the name of the notebook and " "choose a folder as the Root Folder of the notebook.")); info += "\n"; - info += tr("The root folder should be used EXCLUSIVELY by VNote and " + info += tr("* The root folder should be used EXCLUSIVELY by VNote and " "it is recommended to be EMPTY."); + info += "\n"; + info += tr("* A previously created notebook could be imported into VNote " + "by choosing its root folder."); QString defaultName; QString defaultPath; diff --git a/src/vopenedlistmenu.cpp b/src/vopenedlistmenu.cpp index 0f91860e..2f2b3b29 100644 --- a/src/vopenedlistmenu.cpp +++ b/src/vopenedlistmenu.cpp @@ -25,9 +25,17 @@ static bool fileComp(const VOpenedListMenu::ItemInfo &a, } else if (notebooka > notebookb) { return false; } else { - QString patha = a.file->retriveRelativePath().toLower(); - QString pathb = b.file->retriveRelativePath().toLower(); - return patha < pathb; + QString patha = a.file->retriveBasePath(); + QString pathb = b.file->retriveBasePath(); +#if defined(Q_OS_WIN) + patha = patha.toLower(); + pathb = pathb.toLower(); +#endif + if (patha == pathb) { + return a.index < b.index; + } else { + return patha < pathb; + } } }