mirror of
https://gitee.com/vnotex/vnote.git
synced 2025-07-05 13:59:52 +08:00
UniversalEntry: Ctrl+S to sort items
This commit is contained in:
parent
31dbdbfe4d
commit
0749ce178e
@ -74,6 +74,11 @@ public:
|
|||||||
Q_UNUSED(p_id);
|
Q_UNUSED(p_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
virtual void sort(int p_id)
|
||||||
|
{
|
||||||
|
Q_UNUSED(p_id);
|
||||||
|
}
|
||||||
|
|
||||||
void setWidgetParent(QWidget *p_parent)
|
void setWidgetParent(QWidget *p_parent)
|
||||||
{
|
{
|
||||||
m_widgetParent = p_parent;
|
m_widgetParent = p_parent;
|
||||||
|
@ -35,3 +35,12 @@ void VDoubleRowItemWidget::setText(const QString &p_firstText,
|
|||||||
m_secondLabel->hide();
|
m_secondLabel->hide();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
VDoubleRowItemWidget *VDoubleRowItemWidget::cloneWidget(VDoubleRowItemWidget *p_widget,
|
||||||
|
QWidget *p_parent)
|
||||||
|
{
|
||||||
|
VDoubleRowItemWidget *widget = new VDoubleRowItemWidget(p_parent);
|
||||||
|
widget->setText(p_widget->m_firstLabel->text(), p_widget->m_secondLabel->text());
|
||||||
|
|
||||||
|
return widget;
|
||||||
|
}
|
||||||
|
@ -13,6 +13,9 @@ public:
|
|||||||
|
|
||||||
void setText(const QString &p_firstText, const QString &p_secondText);
|
void setText(const QString &p_firstText, const QString &p_secondText);
|
||||||
|
|
||||||
|
static VDoubleRowItemWidget *cloneWidget(VDoubleRowItemWidget *p_widget,
|
||||||
|
QWidget *p_parent = nullptr);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QLabel *m_firstLabel;
|
QLabel *m_firstLabel;
|
||||||
QLabel *m_secondLabel;
|
QLabel *m_secondLabel;
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
#include <QListWidgetItem>
|
#include <QListWidgetItem>
|
||||||
#include <QScrollBar>
|
#include <QScrollBar>
|
||||||
|
#include <QDebug>
|
||||||
|
|
||||||
#include "vdoublerowitemwidget.h"
|
#include "vdoublerowitemwidget.h"
|
||||||
|
|
||||||
@ -10,17 +11,10 @@ VListWidgetDoubleRows::VListWidgetDoubleRows(QWidget *p_parent)
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
QListWidgetItem *VListWidgetDoubleRows::addItem(const QIcon &p_icon,
|
QListWidgetItem *VListWidgetDoubleRows::insertDoubleRowsItem(int p_row,
|
||||||
const QString &p_firstRow,
|
const QIcon &p_icon,
|
||||||
const QString &p_secondRow)
|
const QString &p_firstRow,
|
||||||
{
|
const QString &p_secondRow)
|
||||||
return VListWidgetDoubleRows::insertItem(count(), p_icon, p_firstRow, p_secondRow);
|
|
||||||
}
|
|
||||||
|
|
||||||
QListWidgetItem *VListWidgetDoubleRows::insertItem(int p_row,
|
|
||||||
const QIcon &p_icon,
|
|
||||||
const QString &p_firstRow,
|
|
||||||
const QString &p_secondRow)
|
|
||||||
{
|
{
|
||||||
VDoubleRowItemWidget *itemWidget = new VDoubleRowItemWidget(this);
|
VDoubleRowItemWidget *itemWidget = new VDoubleRowItemWidget(this);
|
||||||
itemWidget->setText(p_firstRow, p_secondRow);
|
itemWidget->setText(p_firstRow, p_secondRow);
|
||||||
@ -42,8 +36,8 @@ QListWidgetItem *VListWidgetDoubleRows::insertItem(int p_row,
|
|||||||
|
|
||||||
item->setSizeHint(sz);
|
item->setSizeHint(sz);
|
||||||
|
|
||||||
VListWidget::insertItem(p_row, item);
|
insertItem(p_row, item);
|
||||||
VListWidget::setItemWidget(item, itemWidget);
|
setItemWidget(item, itemWidget);
|
||||||
return item;
|
return item;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -52,8 +46,9 @@ void VListWidgetDoubleRows::clearAll()
|
|||||||
// Delete the item widget for each item.
|
// Delete the item widget for each item.
|
||||||
int cnt = count();
|
int cnt = count();
|
||||||
for (int i = 0; i < cnt; ++i) {
|
for (int i = 0; i < cnt; ++i) {
|
||||||
QWidget *wid = itemWidget(item(i));
|
QListWidgetItem *it = item(i);
|
||||||
removeItemWidget(item(i));
|
QWidget *wid = itemWidget(it);
|
||||||
|
removeItemWidget(it);
|
||||||
delete wid;
|
delete wid;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -61,3 +56,20 @@ void VListWidgetDoubleRows::clearAll()
|
|||||||
|
|
||||||
setIconSize(QSize());
|
setIconSize(QSize());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void VListWidgetDoubleRows::moveItem(int p_srcRow, int p_destRow)
|
||||||
|
{
|
||||||
|
QListWidgetItem *it = item(p_srcRow);
|
||||||
|
QWidget *wid = itemWidget(it);
|
||||||
|
|
||||||
|
takeItem(p_srcRow);
|
||||||
|
insertItem(p_destRow, it);
|
||||||
|
|
||||||
|
if (wid) {
|
||||||
|
QWidget *newWid = VDoubleRowItemWidget::cloneWidget(static_cast<VDoubleRowItemWidget *>(wid), this);
|
||||||
|
removeItemWidget(it);
|
||||||
|
delete wid;
|
||||||
|
|
||||||
|
setItemWidget(it, newWid);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -14,14 +14,12 @@ class VListWidgetDoubleRows : public VListWidget
|
|||||||
public:
|
public:
|
||||||
explicit VListWidgetDoubleRows(QWidget *p_parent = nullptr);
|
explicit VListWidgetDoubleRows(QWidget *p_parent = nullptr);
|
||||||
|
|
||||||
QListWidgetItem *addItem(const QIcon &p_icon,
|
QListWidgetItem *insertDoubleRowsItem(int p_row,
|
||||||
const QString &p_firstRow,
|
const QIcon &p_icon,
|
||||||
const QString &p_secondRow);
|
const QString &p_firstRow,
|
||||||
|
const QString &p_secondRow);
|
||||||
|
|
||||||
QListWidgetItem *insertItem(int p_row,
|
void moveItem(int p_srcRow, int p_destRow);
|
||||||
const QIcon &p_icon,
|
|
||||||
const QString &p_firstRow,
|
|
||||||
const QString &p_secondRow);
|
|
||||||
|
|
||||||
void clearAll() Q_DECL_OVERRIDE;
|
void clearAll() Q_DECL_OVERRIDE;
|
||||||
};
|
};
|
||||||
|
@ -642,7 +642,7 @@ void VSearchUE::appendItemToList(const QSharedPointer<VSearchResultItem> &p_item
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
QListWidgetItem *item = m_listWidget->insertItem(row, *icon, first, second);
|
QListWidgetItem *item = m_listWidget->insertDoubleRowsItem(row, *icon, first, second);
|
||||||
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);
|
||||||
|
|
||||||
@ -932,3 +932,52 @@ void VSearchUE::toggleItemExpanded(int p_id)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void VSearchUE::sort(int p_id)
|
||||||
|
{
|
||||||
|
static bool noteFirst = false;
|
||||||
|
|
||||||
|
switch (p_id) {
|
||||||
|
case ID::Name_Notebook_AllNotebook:
|
||||||
|
case ID::Name_FolderNote_AllNotebook:
|
||||||
|
case ID::Name_FolderNote_CurrentNotebook:
|
||||||
|
case ID::Name_FolderNote_CurrentFolder:
|
||||||
|
case ID::Name_Note_Buffer:
|
||||||
|
case ID::Path_FolderNote_AllNotebook:
|
||||||
|
case ID::Path_FolderNote_CurrentNotebook:
|
||||||
|
{
|
||||||
|
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;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -77,6 +77,8 @@ public:
|
|||||||
|
|
||||||
void toggleItemExpanded(int p_id) Q_DECL_OVERRIDE;
|
void toggleItemExpanded(int p_id) Q_DECL_OVERRIDE;
|
||||||
|
|
||||||
|
void sort(int p_id) Q_DECL_OVERRIDE;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void init() Q_DECL_OVERRIDE;
|
void init() Q_DECL_OVERRIDE;
|
||||||
|
|
||||||
|
@ -353,6 +353,17 @@ void VUniversalEntry::keyPressEvent(QKeyEvent *p_event)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case Qt::Key_S:
|
||||||
|
if (VUtils::isControlModifierForVim(modifiers)) {
|
||||||
|
// Ctrl+S to sort the items.
|
||||||
|
// UE could just alternate among all the sort modes.
|
||||||
|
if (m_lastEntry) {
|
||||||
|
m_lastEntry->m_entry->sort(m_lastEntry->m_id);
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user