From 5d4b450fabcbfa89a21be6eab5ebdf0b305d7bcf Mon Sep 17 00:00:00 2001 From: Le Tan Date: Wed, 22 Aug 2018 20:08:32 +0800 Subject: [PATCH] UniversalEntry: add parent directory name before item name in the result --- src/utils/vutils.cpp | 9 +++++++++ src/utils/vutils.h | 4 ++++ src/vlistue.cpp | 7 ++++++- src/vsearchue.cpp | 17 +++++++++++++++-- src/vuniversalentry.cpp | 1 - src/vuniversalentry.h | 7 +++++++ 6 files changed, 41 insertions(+), 4 deletions(-) diff --git a/src/utils/vutils.cpp b/src/utils/vutils.cpp index 45e368c8..32898fd0 100644 --- a/src/utils/vutils.cpp +++ b/src/utils/vutils.cpp @@ -1770,3 +1770,12 @@ QUrl VUtils::pathToUrl(const QString &p_path) return url; } + +QString VUtils::parentDirName(const QString &p_path) +{ + if (p_path.isEmpty()) { + return p_path; + } + + return QFileInfo(p_path).dir().dirName(); +} diff --git a/src/utils/vutils.h b/src/utils/vutils.h index 2a64c525..51c957e5 100644 --- a/src/utils/vutils.h +++ b/src/utils/vutils.h @@ -374,6 +374,10 @@ public: static QUrl pathToUrl(const QString &p_path); + // Return the name of the parent directory of @p_path. + // @p_path: file path of file or dir. + static QString parentDirName(const QString &p_path); + // Regular expression for image link. // ![image title]( http://github.com/tamlok/vnote.jpg "alt text" =200x100) // Captured texts (need to be trimmed): diff --git a/src/vlistue.cpp b/src/vlistue.cpp index d50a9e81..9994aa8e 100644 --- a/src/vlistue.cpp +++ b/src/vlistue.cpp @@ -16,6 +16,7 @@ #include "vnotebook.h" #include "vuetitlecontentpanel.h" #include "vhistorylist.h" +#include "vuniversalentry.h" extern VMainWindow *g_mainWin; @@ -174,7 +175,11 @@ void VListUE::addResultItem(const QSharedPointer &p_item) if (p_item->m_text.isEmpty()) { first = p_item->m_path; } else { - first = p_item->m_text; + if (p_item->m_type != VSearchResultItem::Notebook) { + first = VUniversalEntry::fileNameWithDir(p_item->m_text, p_item->m_path); + } else { + first = p_item->m_text; + } second = p_item->m_path; } diff --git a/src/vsearchue.cpp b/src/vsearchue.cpp index f1324476..a8fa1ffa 100644 --- a/src/vsearchue.cpp +++ b/src/vsearchue.cpp @@ -17,6 +17,7 @@ #include "vdirectorytree.h" #include "veditarea.h" #include "vexplorer.h" +#include "vuniversalentry.h" extern VNote *g_vnote; @@ -742,7 +743,11 @@ void VSearchUE::appendItemToList(const QSharedPointer &p_item if (p_item->m_text.isEmpty()) { first = p_item->m_path; } else { - first = p_item->m_text; + if (p_item->m_type != VSearchResultItem::Notebook) { + first = VUniversalEntry::fileNameWithDir(p_item->m_text, p_item->m_path); + } else { + first = p_item->m_text; + } second = p_item->m_path; } @@ -782,7 +787,15 @@ void VSearchUE::appendItemToTree(const QSharedPointer &p_item QTreeWidgetItem *item = new QTreeWidgetItem(m_treeWidget); item->setData(0, Qt::UserRole, m_data.size() - 1); - item->setText(0, p_item->m_text.isEmpty() ? p_item->m_path : p_item->m_text); + QString text; + if (p_item->m_text.isEmpty()) { + text = p_item->m_path; + } else if (p_item->m_type != VSearchResultItem::Notebook) { + text = VUniversalEntry::fileNameWithDir(p_item->m_text, p_item->m_path); + } else { + text = p_item->m_text; + } + item->setText(0, text); item->setToolTip(0, p_item->m_path); switch (p_item->m_type) { diff --git a/src/vuniversalentry.cpp b/src/vuniversalentry.cpp index a280c0ef..25b7b774 100644 --- a/src/vuniversalentry.cpp +++ b/src/vuniversalentry.cpp @@ -14,7 +14,6 @@ #include #include "vmetawordlineedit.h" -#include "utils/vutils.h" #include "vlistwidget.h" #include "vpalette.h" #include "vlistfolderue.h" diff --git a/src/vuniversalentry.h b/src/vuniversalentry.h index 36cc18f2..113ef816 100644 --- a/src/vuniversalentry.h +++ b/src/vuniversalentry.h @@ -7,6 +7,7 @@ #include #include "iuniversalentry.h" +#include "utils/vutils.h" class VMetaWordLineEdit; class QVBoxLayout; @@ -53,6 +54,8 @@ public: // @p_id to distinguish. void registerEntry(QChar p_key, IUniversalEntry *p_entry, int p_id = 0); + static QString fileNameWithDir(const QString &p_name, const QString &p_path); + signals: // Exit Universal Entry. void exited(); @@ -125,4 +128,8 @@ private: bool m_pendingCommand; }; +inline QString VUniversalEntry::fileNameWithDir(const QString &p_name, const QString &p_path) +{ + return VUtils::parentDirName(p_path) + " / " + p_name; +} #endif // VUNIVERSALENTRY_H