mirror of
https://gitee.com/vnotex/vnote.git
synced 2025-07-05 22:09:52 +08:00
UniversalEntry
1. Use VListWidget in VListFolderUE; 2. Add j to list history;
This commit is contained in:
parent
f9badfbb55
commit
6212bb48bc
@ -133,7 +133,9 @@ SOURCES += main.cpp\
|
|||||||
vmathjaxwebdocument.cpp \
|
vmathjaxwebdocument.cpp \
|
||||||
vmathjaxinplacepreviewhelper.cpp \
|
vmathjaxinplacepreviewhelper.cpp \
|
||||||
vhistorylist.cpp \
|
vhistorylist.cpp \
|
||||||
vexplorer.cpp
|
vexplorer.cpp \
|
||||||
|
vlistue.cpp \
|
||||||
|
vuetitlecontentpanel.cpp
|
||||||
|
|
||||||
HEADERS += vmainwindow.h \
|
HEADERS += vmainwindow.h \
|
||||||
vdirectorytree.h \
|
vdirectorytree.h \
|
||||||
@ -260,7 +262,9 @@ HEADERS += vmainwindow.h \
|
|||||||
vhistorylist.h \
|
vhistorylist.h \
|
||||||
vhistoryentry.h \
|
vhistoryentry.h \
|
||||||
vexplorer.h \
|
vexplorer.h \
|
||||||
vexplorerentry.h
|
vexplorerentry.h \
|
||||||
|
vlistue.h \
|
||||||
|
vuetitlecontentpanel.h
|
||||||
|
|
||||||
RESOURCES += \
|
RESOURCES += \
|
||||||
vnote.qrc \
|
vnote.qrc \
|
||||||
|
@ -144,7 +144,7 @@ void VHistoryList::pinFolder(const QString &p_folder)
|
|||||||
void VHistoryList::addFilesInternal(const QStringList &p_files, bool p_isPinned)
|
void VHistoryList::addFilesInternal(const QStringList &p_files, bool p_isPinned)
|
||||||
{
|
{
|
||||||
for (auto const & file : p_files) {
|
for (auto const & file : p_files) {
|
||||||
// Find it in existing enries.
|
// Find it in existing entries.
|
||||||
bool pinnedBefore = false;
|
bool pinnedBefore = false;
|
||||||
auto it = findFileInHistory(file);
|
auto it = findFileInHistory(file);
|
||||||
if (it != m_histories.end()) {
|
if (it != m_histories.end()) {
|
||||||
|
@ -23,6 +23,8 @@ public:
|
|||||||
|
|
||||||
void pinFolder(const QString &p_folder);
|
void pinFolder(const QString &p_folder);
|
||||||
|
|
||||||
|
const QLinkedList<VHistoryEntry> &getHistoryEntries() const;
|
||||||
|
|
||||||
// Implementations for VNavigationMode.
|
// Implementations for VNavigationMode.
|
||||||
void showNavigation() Q_DECL_OVERRIDE;
|
void showNavigation() Q_DECL_OVERRIDE;
|
||||||
bool handleKeyNavigation(int p_key, bool &p_succeed) Q_DECL_OVERRIDE;
|
bool handleKeyNavigation(int p_key, bool &p_succeed) Q_DECL_OVERRIDE;
|
||||||
@ -91,4 +93,10 @@ private:
|
|||||||
QDate m_currentDate;
|
QDate m_currentDate;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
inline const QLinkedList<VHistoryEntry> &VHistoryList::getHistoryEntries() const
|
||||||
|
{
|
||||||
|
const_cast<VHistoryList *>(this)->init();
|
||||||
|
|
||||||
|
return m_histories;
|
||||||
|
}
|
||||||
#endif // VHISTORYLIST_H
|
#endif // VHISTORYLIST_H
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
#include <QLabel>
|
#include <QLabel>
|
||||||
#include <QVBoxLayout>
|
#include <QVBoxLayout>
|
||||||
|
|
||||||
#include "vlistwidgetdoublerows.h"
|
#include "vlistwidget.h"
|
||||||
#include "vdirectory.h"
|
#include "vdirectory.h"
|
||||||
#include "vdirectorytree.h"
|
#include "vdirectorytree.h"
|
||||||
#include "vmainwindow.h"
|
#include "vmainwindow.h"
|
||||||
@ -14,40 +14,12 @@
|
|||||||
#include "vsearchue.h"
|
#include "vsearchue.h"
|
||||||
#include "utils/vutils.h"
|
#include "utils/vutils.h"
|
||||||
#include "vnotebook.h"
|
#include "vnotebook.h"
|
||||||
|
#include "vuetitlecontentpanel.h"
|
||||||
|
|
||||||
extern VMainWindow *g_mainWin;
|
extern VMainWindow *g_mainWin;
|
||||||
|
|
||||||
extern VNote *g_vnote;
|
extern VNote *g_vnote;
|
||||||
|
|
||||||
VListFolderPanel::VListFolderPanel(QWidget *p_contentWidget,
|
|
||||||
QWidget *p_parent)
|
|
||||||
: QWidget(p_parent)
|
|
||||||
{
|
|
||||||
m_titleLabel = new QLabel(this);
|
|
||||||
m_titleLabel->setProperty("TitleLabel", true);
|
|
||||||
|
|
||||||
p_contentWidget->setParent(this);
|
|
||||||
|
|
||||||
QVBoxLayout *layout = new QVBoxLayout();
|
|
||||||
layout->addWidget(m_titleLabel);
|
|
||||||
layout->addWidget(p_contentWidget);
|
|
||||||
|
|
||||||
layout->setContentsMargins(0, 0, 0, 0);
|
|
||||||
|
|
||||||
setLayout(layout);
|
|
||||||
}
|
|
||||||
|
|
||||||
void VListFolderPanel::setTitleLabel(const QString &p_title)
|
|
||||||
{
|
|
||||||
m_titleLabel->setText(p_title);
|
|
||||||
}
|
|
||||||
|
|
||||||
void VListFolderPanel::clearTitle()
|
|
||||||
{
|
|
||||||
m_titleLabel->clear();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
VListFolderUE::VListFolderUE(QObject *p_parent)
|
VListFolderUE::VListFolderUE(QObject *p_parent)
|
||||||
: IUniversalEntry(p_parent),
|
: IUniversalEntry(p_parent),
|
||||||
m_listWidget(NULL)
|
m_listWidget(NULL)
|
||||||
@ -72,12 +44,12 @@ void VListFolderUE::init()
|
|||||||
m_noteIcon = VIconUtils::treeViewIcon(":/resources/icons/note_item.svg");
|
m_noteIcon = VIconUtils::treeViewIcon(":/resources/icons/note_item.svg");
|
||||||
m_folderIcon = VIconUtils::treeViewIcon(":/resources/icons/dir_item.svg");
|
m_folderIcon = VIconUtils::treeViewIcon(":/resources/icons/dir_item.svg");
|
||||||
|
|
||||||
m_listWidget = new VListWidgetDoubleRows(m_widgetParent);
|
m_listWidget = new VListWidget(m_widgetParent);
|
||||||
m_listWidget->setFitContent(true);
|
m_listWidget->setFitContent(true);
|
||||||
connect(m_listWidget, SIGNAL(itemActivated(QListWidgetItem *)),
|
connect(m_listWidget, SIGNAL(itemActivated(QListWidgetItem *)),
|
||||||
this, SLOT(activateItem(QListWidgetItem *)));
|
this, SLOT(activateItem(QListWidgetItem *)));
|
||||||
|
|
||||||
m_panel = new VListFolderPanel(m_listWidget, m_widgetParent);
|
m_panel = new VUETitleContentPanel(m_listWidget, m_widgetParent);
|
||||||
m_panel->hide();
|
m_panel->hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -208,12 +180,11 @@ void VListFolderUE::addResultItem(const QSharedPointer<VSearchResultItem> &p_ite
|
|||||||
{
|
{
|
||||||
m_data.append(p_item);
|
m_data.append(p_item);
|
||||||
|
|
||||||
QString first, second;
|
QString text;
|
||||||
if (p_item->m_text.isEmpty()) {
|
if (p_item->m_text.isEmpty()) {
|
||||||
first = p_item->m_path;
|
text = p_item->m_path;
|
||||||
} else {
|
} else {
|
||||||
first = p_item->m_text;
|
text = p_item->m_text;
|
||||||
second = p_item->m_path;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
QIcon *icon = NULL;
|
QIcon *icon = NULL;
|
||||||
@ -230,10 +201,12 @@ void VListFolderUE::addResultItem(const QSharedPointer<VSearchResultItem> &p_ite
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
QListWidgetItem *item = m_listWidget->addDoubleRowsItem(*icon, first, second);
|
QListWidgetItem *item = new QListWidgetItem(*icon, text);
|
||||||
item->setData(Qt::UserRole, m_data.size() - 1);
|
item->setData(Qt::UserRole, m_data.size() - 1);
|
||||||
item->setToolTip(p_item->m_path);
|
item->setToolTip(p_item->m_path);
|
||||||
|
|
||||||
|
m_listWidget->addItem(item);
|
||||||
|
|
||||||
if (m_listWidget->count() == 1) {
|
if (m_listWidget->count() == 1) {
|
||||||
m_listWidget->setCurrentRow(0);
|
m_listWidget->setCurrentRow(0);
|
||||||
}
|
}
|
||||||
@ -282,7 +255,7 @@ bool VListFolderUE::listFolder(const QString &p_path, const QString &p_cmd)
|
|||||||
m_data.clear();
|
m_data.clear();
|
||||||
|
|
||||||
m_currentFolderPath = dir->fetchPath();
|
m_currentFolderPath = dir->fetchPath();
|
||||||
m_panel->setTitleLabel(m_currentFolderPath);
|
m_panel->setTitle(m_currentFolderPath);
|
||||||
|
|
||||||
if (!dir->open()) {
|
if (!dir->open()) {
|
||||||
return true;
|
return true;
|
||||||
|
@ -7,25 +7,10 @@
|
|||||||
|
|
||||||
#include "vsearchconfig.h"
|
#include "vsearchconfig.h"
|
||||||
|
|
||||||
class VListWidgetDoubleRows;
|
class VListWidget;
|
||||||
class QListWidgetItem;
|
class QListWidgetItem;
|
||||||
class QLabel;
|
class QLabel;
|
||||||
|
class VUETitleContentPanel;
|
||||||
class VListFolderPanel : public QWidget
|
|
||||||
{
|
|
||||||
Q_OBJECT
|
|
||||||
public:
|
|
||||||
explicit VListFolderPanel(QWidget *p_contentWidget,
|
|
||||||
QWidget *p_parent = nullptr);
|
|
||||||
|
|
||||||
void setTitleLabel(const QString &p_title);
|
|
||||||
|
|
||||||
void clearTitle();
|
|
||||||
|
|
||||||
private:
|
|
||||||
QLabel *m_titleLabel;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
// Universal Entry to list contents of folder.
|
// Universal Entry to list contents of folder.
|
||||||
class VListFolderUE : public IUniversalEntry
|
class VListFolderUE : public IUniversalEntry
|
||||||
@ -81,9 +66,9 @@ private:
|
|||||||
// Current folder path.
|
// Current folder path.
|
||||||
QString m_currentFolderPath;
|
QString m_currentFolderPath;
|
||||||
|
|
||||||
VListWidgetDoubleRows *m_listWidget;
|
VListWidget *m_listWidget;
|
||||||
|
|
||||||
VListFolderPanel *m_panel;
|
VUETitleContentPanel *m_panel;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // VLISTFOLDERUE_H
|
#endif // VLISTFOLDERUE_H
|
||||||
|
242
src/vlistue.cpp
Normal file
242
src/vlistue.cpp
Normal file
@ -0,0 +1,242 @@
|
|||||||
|
#include "vlistue.h"
|
||||||
|
|
||||||
|
#include <QListWidgetItem>
|
||||||
|
#include <QLabel>
|
||||||
|
#include <QVBoxLayout>
|
||||||
|
|
||||||
|
#include "vlistwidgetdoublerows.h"
|
||||||
|
#include "vdirectory.h"
|
||||||
|
#include "vdirectorytree.h"
|
||||||
|
#include "vmainwindow.h"
|
||||||
|
#include "vnote.h"
|
||||||
|
#include "utils/viconutils.h"
|
||||||
|
#include "vnotefile.h"
|
||||||
|
#include "vsearchue.h"
|
||||||
|
#include "utils/vutils.h"
|
||||||
|
#include "vnotebook.h"
|
||||||
|
#include "vuetitlecontentpanel.h"
|
||||||
|
#include "vhistorylist.h"
|
||||||
|
|
||||||
|
extern VMainWindow *g_mainWin;
|
||||||
|
|
||||||
|
extern VNote *g_vnote;
|
||||||
|
|
||||||
|
VListUE::VListUE(QObject *p_parent)
|
||||||
|
: IUniversalEntry(p_parent),
|
||||||
|
m_listWidget(NULL)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
QString VListUE::description(int p_id) const
|
||||||
|
{
|
||||||
|
switch (p_id) {
|
||||||
|
case ID::History:
|
||||||
|
return tr("List and search history");
|
||||||
|
|
||||||
|
default:
|
||||||
|
Q_ASSERT(false);
|
||||||
|
return tr("Invalid ID %1").arg(p_id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void VListUE::init()
|
||||||
|
{
|
||||||
|
if (m_initialized) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
m_initialized = true;
|
||||||
|
|
||||||
|
m_noteIcon = VIconUtils::treeViewIcon(":/resources/icons/note_item.svg");
|
||||||
|
m_folderIcon = VIconUtils::treeViewIcon(":/resources/icons/dir_item.svg");
|
||||||
|
|
||||||
|
m_listWidget = new VListWidgetDoubleRows(m_widgetParent);
|
||||||
|
m_listWidget->setFitContent(true);
|
||||||
|
connect(m_listWidget, SIGNAL(itemActivated(QListWidgetItem *)),
|
||||||
|
this, SLOT(activateItem(QListWidgetItem *)));
|
||||||
|
|
||||||
|
m_panel = new VUETitleContentPanel(m_listWidget, m_widgetParent);
|
||||||
|
m_panel->hide();
|
||||||
|
}
|
||||||
|
|
||||||
|
QWidget *VListUE::widget(int p_id)
|
||||||
|
{
|
||||||
|
Q_UNUSED(p_id);
|
||||||
|
|
||||||
|
init();
|
||||||
|
|
||||||
|
return m_panel;
|
||||||
|
}
|
||||||
|
|
||||||
|
void VListUE::processCommand(int p_id, const QString &p_cmd)
|
||||||
|
{
|
||||||
|
Q_UNUSED(p_id);
|
||||||
|
|
||||||
|
init();
|
||||||
|
|
||||||
|
clear(-1);
|
||||||
|
|
||||||
|
switch (p_id) {
|
||||||
|
case ID::History:
|
||||||
|
listHistory(p_cmd);
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
m_listWidget->updateGeometry();
|
||||||
|
emit widgetUpdated();
|
||||||
|
emit stateUpdated(State::Success);
|
||||||
|
}
|
||||||
|
|
||||||
|
void VListUE::clear(int p_id)
|
||||||
|
{
|
||||||
|
Q_UNUSED(p_id);
|
||||||
|
|
||||||
|
m_panel->clearTitle();
|
||||||
|
m_listWidget->clearAll();
|
||||||
|
m_data.clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
void VListUE::selectNextItem(int p_id, bool p_forward)
|
||||||
|
{
|
||||||
|
Q_UNUSED(p_id);
|
||||||
|
|
||||||
|
m_listWidget->selectNextItem(p_forward);
|
||||||
|
}
|
||||||
|
|
||||||
|
void VListUE::activate(int p_id)
|
||||||
|
{
|
||||||
|
Q_UNUSED(p_id);
|
||||||
|
activateItem(m_listWidget->currentItem());
|
||||||
|
}
|
||||||
|
|
||||||
|
const QSharedPointer<VSearchResultItem> &VListUE::itemResultData(const QListWidgetItem *p_item) const
|
||||||
|
{
|
||||||
|
Q_ASSERT(p_item);
|
||||||
|
int idx = p_item->data(Qt::UserRole).toInt();
|
||||||
|
Q_ASSERT(idx >= 0 && idx < m_data.size());
|
||||||
|
return m_data[idx];
|
||||||
|
}
|
||||||
|
|
||||||
|
void VListUE::activateItem(QListWidgetItem *p_item)
|
||||||
|
{
|
||||||
|
if (!p_item) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
emit requestHideUniversalEntry();
|
||||||
|
|
||||||
|
VSearchUE::activateItem(itemResultData(p_item));
|
||||||
|
}
|
||||||
|
|
||||||
|
void VListUE::sort(int p_id)
|
||||||
|
{
|
||||||
|
Q_UNUSED(p_id);
|
||||||
|
static bool noteFirst = false;
|
||||||
|
|
||||||
|
int cnt = m_listWidget->count();
|
||||||
|
if (noteFirst) {
|
||||||
|
int idx = cnt - 1;
|
||||||
|
while (true) {
|
||||||
|
if (itemResultData(m_listWidget->item(idx))->m_type != VSearchResultItem::Note) {
|
||||||
|
// Move it to the first row.
|
||||||
|
m_listWidget->moveItem(idx, 0);
|
||||||
|
} else {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
int idx = 0;
|
||||||
|
while (true) {
|
||||||
|
if (itemResultData(m_listWidget->item(idx))->m_type != VSearchResultItem::Note) {
|
||||||
|
// Move it to the last row.
|
||||||
|
m_listWidget->moveItem(idx, cnt - 1);
|
||||||
|
} else {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (cnt) {
|
||||||
|
m_listWidget->setCurrentRow(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
noteFirst = !noteFirst;
|
||||||
|
}
|
||||||
|
|
||||||
|
void VListUE::addResultItem(const QSharedPointer<VSearchResultItem> &p_item)
|
||||||
|
{
|
||||||
|
m_data.append(p_item);
|
||||||
|
|
||||||
|
QString first, second;
|
||||||
|
if (p_item->m_text.isEmpty()) {
|
||||||
|
first = p_item->m_path;
|
||||||
|
} else {
|
||||||
|
first = p_item->m_text;
|
||||||
|
second = p_item->m_path;
|
||||||
|
}
|
||||||
|
|
||||||
|
QIcon *icon = NULL;
|
||||||
|
switch (p_item->m_type) {
|
||||||
|
case VSearchResultItem::Note:
|
||||||
|
icon = &m_noteIcon;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case VSearchResultItem::Folder:
|
||||||
|
icon = &m_folderIcon;
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
QListWidgetItem *item = m_listWidget->addDoubleRowsItem(*icon, first, second);
|
||||||
|
item->setData(Qt::UserRole, m_data.size() - 1);
|
||||||
|
item->setToolTip(p_item->m_path);
|
||||||
|
|
||||||
|
if (m_listWidget->count() == 1) {
|
||||||
|
m_listWidget->setCurrentRow(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void VListUE::listHistory(const QString &p_cmd)
|
||||||
|
{
|
||||||
|
m_panel->setTitle(tr("History"));
|
||||||
|
|
||||||
|
VHistoryList *history = g_mainWin->getHistoryList();
|
||||||
|
const QLinkedList<VHistoryEntry> &entries = history->getHistoryEntries();
|
||||||
|
if (p_cmd.isEmpty()) {
|
||||||
|
// List the content.
|
||||||
|
for (auto it = entries.rbegin(); it != entries.rend(); ++it) {
|
||||||
|
QSharedPointer<VSearchResultItem> item(new VSearchResultItem(it->m_isFolder ? VSearchResultItem::Folder : VSearchResultItem::Note,
|
||||||
|
VSearchResultItem::LineNumber,
|
||||||
|
VUtils::fileNameFromPath(it->m_file),
|
||||||
|
it->m_file));
|
||||||
|
addResultItem(item);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// Search the content.
|
||||||
|
VSearchConfig config(VSearchConfig::CurrentFolder,
|
||||||
|
VSearchConfig::Name,
|
||||||
|
VSearchConfig::Note | VSearchConfig::Folder,
|
||||||
|
VSearchConfig::Internal,
|
||||||
|
VSearchConfig::NoneOption,
|
||||||
|
p_cmd,
|
||||||
|
QString());
|
||||||
|
|
||||||
|
for (auto it = entries.rbegin(); it != entries.rend(); ++it) {
|
||||||
|
QString name = VUtils::fileNameFromPath(it->m_file);
|
||||||
|
if (!config.m_token.matched(name)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
QSharedPointer<VSearchResultItem> item(new VSearchResultItem(it->m_isFolder ? VSearchResultItem::Folder : VSearchResultItem::Note,
|
||||||
|
VSearchResultItem::LineNumber,
|
||||||
|
name,
|
||||||
|
it->m_file));
|
||||||
|
addResultItem(item);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
67
src/vlistue.h
Normal file
67
src/vlistue.h
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
#ifndef VLISTUE_H
|
||||||
|
#define VLISTUE_H
|
||||||
|
|
||||||
|
#include "iuniversalentry.h"
|
||||||
|
|
||||||
|
#include <QWidget>
|
||||||
|
#include <QIcon>
|
||||||
|
#include <functional>
|
||||||
|
#include <QSharedPointer>
|
||||||
|
|
||||||
|
#include "vsearchconfig.h"
|
||||||
|
|
||||||
|
class VListWidgetDoubleRows;
|
||||||
|
class QListWidgetItem;
|
||||||
|
class QLabel;
|
||||||
|
class VUETitleContentPanel;
|
||||||
|
|
||||||
|
class VListUE : public IUniversalEntry
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
enum ID
|
||||||
|
{
|
||||||
|
// List and search the history.
|
||||||
|
History = 0
|
||||||
|
};
|
||||||
|
|
||||||
|
explicit VListUE(QObject *p_parent = nullptr);
|
||||||
|
|
||||||
|
QString description(int p_id) const Q_DECL_OVERRIDE;
|
||||||
|
|
||||||
|
QWidget *widget(int p_id) Q_DECL_OVERRIDE;
|
||||||
|
|
||||||
|
void processCommand(int p_id, const QString &p_cmd) Q_DECL_OVERRIDE;
|
||||||
|
|
||||||
|
void clear(int p_id) Q_DECL_OVERRIDE;
|
||||||
|
|
||||||
|
void selectNextItem(int p_id, bool p_forward) Q_DECL_OVERRIDE;
|
||||||
|
|
||||||
|
void activate(int p_id) Q_DECL_OVERRIDE;
|
||||||
|
|
||||||
|
void sort(int p_id) Q_DECL_OVERRIDE;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
void init() Q_DECL_OVERRIDE;
|
||||||
|
|
||||||
|
private slots:
|
||||||
|
void activateItem(QListWidgetItem *p_item);
|
||||||
|
|
||||||
|
private:
|
||||||
|
void addResultItem(const QSharedPointer<VSearchResultItem> &p_item);
|
||||||
|
|
||||||
|
const QSharedPointer<VSearchResultItem> &itemResultData(const QListWidgetItem *p_item) const;
|
||||||
|
|
||||||
|
void listHistory(const QString &p_cmd);
|
||||||
|
|
||||||
|
QVector<QSharedPointer<VSearchResultItem> > m_data;
|
||||||
|
|
||||||
|
QIcon m_noteIcon;
|
||||||
|
QIcon m_folderIcon;
|
||||||
|
|
||||||
|
VListWidgetDoubleRows *m_listWidget;
|
||||||
|
|
||||||
|
VUETitleContentPanel *m_panel;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // VLISTUE_H
|
@ -230,3 +230,11 @@ bool VListWidget::isSeparatorItem(const QListWidgetItem *p_item)
|
|||||||
{
|
{
|
||||||
return p_item->type() == ItemTypeSeparator;
|
return p_item->type() == ItemTypeSeparator;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void VListWidget::moveItem(int p_srcRow, int p_destRow)
|
||||||
|
{
|
||||||
|
QListWidgetItem *it = takeItem(p_srcRow);
|
||||||
|
if (it) {
|
||||||
|
insertItem(p_destRow, it);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -34,6 +34,8 @@ public:
|
|||||||
|
|
||||||
virtual QSize sizeHint() const Q_DECL_OVERRIDE;
|
virtual QSize sizeHint() const Q_DECL_OVERRIDE;
|
||||||
|
|
||||||
|
virtual void moveItem(int p_srcRow, int p_destRow);
|
||||||
|
|
||||||
void setFitContent(bool p_enabled);
|
void setFitContent(bool p_enabled);
|
||||||
|
|
||||||
// Sort @p_list according to @p_sortedIdx.
|
// Sort @p_list according to @p_sortedIdx.
|
||||||
|
@ -23,7 +23,7 @@ public:
|
|||||||
const QString &p_firstRow,
|
const QString &p_firstRow,
|
||||||
const QString &p_secondRow);
|
const QString &p_secondRow);
|
||||||
|
|
||||||
void moveItem(int p_srcRow, int p_destRow);
|
void moveItem(int p_srcRow, int p_destRow) Q_DECL_OVERRIDE;
|
||||||
|
|
||||||
void clearAll() Q_DECL_OVERRIDE;
|
void clearAll() Q_DECL_OVERRIDE;
|
||||||
};
|
};
|
||||||
|
@ -47,6 +47,7 @@
|
|||||||
#include "dialog/vfixnotebookdialog.h"
|
#include "dialog/vfixnotebookdialog.h"
|
||||||
#include "vhistorylist.h"
|
#include "vhistorylist.h"
|
||||||
#include "vexplorer.h"
|
#include "vexplorer.h"
|
||||||
|
#include "vlistue.h"
|
||||||
|
|
||||||
extern VConfigManager *g_config;
|
extern VConfigManager *g_config;
|
||||||
|
|
||||||
@ -2489,6 +2490,11 @@ QVector<VFile *> VMainWindow::openFiles(const QStringList &p_files,
|
|||||||
vfiles.reserve(p_files.size());
|
vfiles.reserve(p_files.size());
|
||||||
|
|
||||||
for (int i = 0; i < p_files.size(); ++i) {
|
for (int i = 0; i < p_files.size(); ++i) {
|
||||||
|
if (!QFileInfo::exists(p_files[i])) {
|
||||||
|
qWarning() << "file" << p_files[i] << "does not exist";
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
VFile *file = NULL;
|
VFile *file = NULL;
|
||||||
if (!p_forceOrphan) {
|
if (!p_forceOrphan) {
|
||||||
file = vnote->getInternalFile(p_files[i]);
|
file = vnote->getInternalFile(p_files[i]);
|
||||||
@ -3135,6 +3141,7 @@ void VMainWindow::initUniversalEntry()
|
|||||||
m_ue->registerEntry('h', searchUE, VSearchUE::Path_FolderNote_AllNotebook);
|
m_ue->registerEntry('h', searchUE, VSearchUE::Path_FolderNote_AllNotebook);
|
||||||
m_ue->registerEntry('n', searchUE, VSearchUE::Path_FolderNote_CurrentNotebook);
|
m_ue->registerEntry('n', searchUE, VSearchUE::Path_FolderNote_CurrentNotebook);
|
||||||
m_ue->registerEntry('m', new VListFolderUE(this), 0);
|
m_ue->registerEntry('m', new VListFolderUE(this), 0);
|
||||||
|
m_ue->registerEntry('j', new VListUE(this), VListUE::History);
|
||||||
m_ue->registerEntry('?', new VHelpUE(this), 0);
|
m_ue->registerEntry('?', new VHelpUE(this), 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
34
src/vuetitlecontentpanel.cpp
Normal file
34
src/vuetitlecontentpanel.cpp
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
#include "vuetitlecontentpanel.h"
|
||||||
|
|
||||||
|
#include <QLabel>
|
||||||
|
#include <QVBoxLayout>
|
||||||
|
#include <QVariant>
|
||||||
|
#include <QString>
|
||||||
|
|
||||||
|
VUETitleContentPanel::VUETitleContentPanel(QWidget *p_contentWidget,
|
||||||
|
QWidget *p_parent)
|
||||||
|
: QWidget(p_parent)
|
||||||
|
{
|
||||||
|
m_titleLabel = new QLabel(this);
|
||||||
|
m_titleLabel->setProperty("TitleLabel", true);
|
||||||
|
|
||||||
|
p_contentWidget->setParent(this);
|
||||||
|
|
||||||
|
QVBoxLayout *layout = new QVBoxLayout();
|
||||||
|
layout->addWidget(m_titleLabel);
|
||||||
|
layout->addWidget(p_contentWidget);
|
||||||
|
|
||||||
|
layout->setContentsMargins(0, 0, 0, 0);
|
||||||
|
|
||||||
|
setLayout(layout);
|
||||||
|
}
|
||||||
|
|
||||||
|
void VUETitleContentPanel::setTitle(const QString &p_title)
|
||||||
|
{
|
||||||
|
m_titleLabel->setText(p_title);
|
||||||
|
}
|
||||||
|
|
||||||
|
void VUETitleContentPanel::clearTitle()
|
||||||
|
{
|
||||||
|
m_titleLabel->clear();
|
||||||
|
}
|
23
src/vuetitlecontentpanel.h
Normal file
23
src/vuetitlecontentpanel.h
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
#ifndef VUETITLECONTENTPANEL_H
|
||||||
|
#define VUETITLECONTENTPANEL_H
|
||||||
|
|
||||||
|
#include <QWidget>
|
||||||
|
|
||||||
|
class QLabel;
|
||||||
|
|
||||||
|
class VUETitleContentPanel : public QWidget
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
explicit VUETitleContentPanel(QWidget *p_contentWidget,
|
||||||
|
QWidget *p_parent = nullptr);
|
||||||
|
|
||||||
|
void setTitle(const QString &p_title);
|
||||||
|
|
||||||
|
void clearTitle();
|
||||||
|
|
||||||
|
private:
|
||||||
|
QLabel *m_titleLabel;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // VUETITLECONTENTPANEL_H
|
Loading…
x
Reference in New Issue
Block a user