mirror of
https://github.com/sqlitebrowser/sqlitebrowser.git
synced 2026-01-20 11:00:44 -06:00
New option in the context menu for using the value as filter (#1182)
* Added an option in the context menu for using the currently selected cell as filter in this column. This allows quick filtering by selected values. * Changes to pull request #1182 requested by @MKleusberg: get internal cell data and check for the NULL special case.
This commit is contained in:
@@ -84,6 +84,9 @@ ExtendedTableWidget::ExtendedTableWidget(QWidget* parent) :
|
||||
QAction* nullAction = new QAction(tr("Set to NULL"), m_contextMenu);
|
||||
QAction* copyAction = new QAction(QIcon(":/icons/copy"), tr("Copy"), m_contextMenu);
|
||||
QAction* pasteAction = new QAction(QIcon(":/icons/paste"), tr("Paste"), m_contextMenu);
|
||||
QAction* filterAction = new QAction(tr("Use as Filter"), m_contextMenu);
|
||||
m_contextMenu->addAction(filterAction);
|
||||
m_contextMenu->addSeparator();
|
||||
m_contextMenu->addAction(nullAction);
|
||||
m_contextMenu->addSeparator();
|
||||
m_contextMenu->addAction(copyAction);
|
||||
@@ -102,6 +105,9 @@ ExtendedTableWidget::ExtendedTableWidget(QWidget* parent) :
|
||||
// Show menu
|
||||
m_contextMenu->popup(viewport()->mapToGlobal(pos));
|
||||
});
|
||||
connect(filterAction, &QAction::triggered, [&]() {
|
||||
useAsFilter();
|
||||
});
|
||||
connect(nullAction, &QAction::triggered, [&]() {
|
||||
foreach(const QModelIndex& index, selectedIndexes())
|
||||
model()->setData(index, QVariant());
|
||||
@@ -341,6 +347,23 @@ void ExtendedTableWidget::paste()
|
||||
|
||||
}
|
||||
|
||||
void ExtendedTableWidget::useAsFilter()
|
||||
{
|
||||
QModelIndex index = selectionModel()->currentIndex();
|
||||
|
||||
// Abort if there's nothing to filter
|
||||
if (!index.isValid() || !selectionModel()->hasSelection())
|
||||
return;
|
||||
|
||||
QVariant data = model()->data(index, Qt::EditRole);
|
||||
|
||||
if (data.isNull())
|
||||
m_tableHeader->setFilter(index.column(), "=NULL");
|
||||
else
|
||||
m_tableHeader->setFilter(index.column(), "=" + data.toString());
|
||||
|
||||
}
|
||||
|
||||
void ExtendedTableWidget::keyPressEvent(QKeyEvent* event)
|
||||
{
|
||||
// Call a custom copy method when Ctrl-C is pressed
|
||||
|
||||
Reference in New Issue
Block a user