Skip to content

Commit

Permalink
Add import/export feature to predefined filters (#248)
Browse files Browse the repository at this point in the history
One of the features discussed in:
#243
  • Loading branch information
twardakm authored Feb 4, 2021
1 parent 2b27b1f commit 1a13b4b
Show file tree
Hide file tree
Showing 5 changed files with 78 additions and 2 deletions.
1 change: 1 addition & 0 deletions src/ui/include/predefinedfilters.h
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,7 @@ class PredefinedFiltersCollection final : public Persistable<PredefinedFiltersCo

Collection getSyncedFilters();
Collection getFilters() const;
void setFilters( Collection& filters );

void retrieveFromStorage( QSettings& settings );
void saveToStorage( QSettings& settings ) const;
Expand Down
3 changes: 3 additions & 0 deletions src/ui/include/predefinedfiltersdialog.h
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,8 @@ class PredefinedFiltersDialog : public QDialog, public Ui::PredefinedFiltersDial
private slots:
void addFilter() const;
void removeFilter() const;
void exportFilters();
void importFilters();

void resolveStandardButton( QAbstractButton* button );

Expand All @@ -64,6 +66,7 @@ class PredefinedFiltersDialog : public QDialog, public Ui::PredefinedFiltersDial
private:
void populateFiltersTable() const;
void saveSettings();
void readFiltersTable();

private:
PredefinedFiltersCollection::Collection filters_;
Expand Down
20 changes: 20 additions & 0 deletions src/ui/include/predefinedfiltersdialog.ui
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,26 @@
</property>
</spacer>
</item>
<item>
<widget class="QToolButton" name="importFilterButton">
<property name="toolTip">
<string>Import Filters</string>
</property>
<property name="text">
<string>Import</string>
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="exportFilterButton">
<property name="toolTip">
<string>Export Filters</string>
</property>
<property name="text">
<string>Export</string>
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="addFilterButton">
<property name="toolTip">
Expand Down
5 changes: 5 additions & 0 deletions src/ui/src/predefinedfilters.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -104,3 +104,8 @@ PredefinedFiltersCollection::Collection PredefinedFiltersCollection::getSyncedFi
filters_ = this->getSynced().getFilters();
return filters_;
}

void PredefinedFiltersCollection::setFilters( Collection& filters )
{
filters_ = filters;
}
51 changes: 49 additions & 2 deletions src/ui/src/predefinedfiltersdialog.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,9 @@
#include "predefinedfiltersdialog.h"

#include <QDialogButtonBox>
#include <QFileDialog>
#include <QTimer>
#include <qtoolbutton.h>

#include "iconloader.h"
#include "log.h"
Expand All @@ -57,6 +59,10 @@ PredefinedFiltersDialog::PredefinedFiltersDialog( QWidget* parent )
connect( addFilterButton, &QToolButton::clicked, this, &PredefinedFiltersDialog::addFilter );
connect( removeFilterButton, &QToolButton::clicked, this,
&PredefinedFiltersDialog::removeFilter );
connect( importFilterButton, &QToolButton::clicked, this,
&PredefinedFiltersDialog::importFilters );
connect( exportFilterButton, &QToolButton::clicked, this,
&PredefinedFiltersDialog::exportFilters );

connect( buttonBox, &QDialogButtonBox::clicked, this,
&PredefinedFiltersDialog::resolveStandardButton );
Expand Down Expand Up @@ -91,6 +97,13 @@ void PredefinedFiltersDialog::populateFiltersTable() const
}

void PredefinedFiltersDialog::saveSettings()
{
readFiltersTable();

PredefinedFiltersCollection::getSynced().saveToStorage( filters_ );
}

void PredefinedFiltersDialog::readFiltersTable()
{
const auto rows = filtersTableWidget->rowCount();

Expand All @@ -109,8 +122,6 @@ void PredefinedFiltersDialog::saveSettings()
filters_.emplace( key, value );
}
}

PredefinedFiltersCollection::getSynced().saveToStorage( filters_ );
}

void PredefinedFiltersDialog::addFilter() const
Expand All @@ -123,6 +134,42 @@ void PredefinedFiltersDialog::removeFilter() const
filtersTableWidget->removeRow( filtersTableWidget->currentRow() );
}

void PredefinedFiltersDialog::importFilters()
{
const auto file = QFileDialog::getOpenFileName( this, "Select file to import", "",
"Predefined filters (*.conf)" );

if ( file.isEmpty() ) {
return;
}

LOG( logDEBUG ) << "Loading predefined filters from " << file;
QSettings settings{ file, QSettings::IniFormat };

PredefinedFiltersCollection collection;
collection.retrieveFromStorage( settings );

filters_ = collection.getFilters();
populateFiltersTable();
}

void PredefinedFiltersDialog::exportFilters()
{
const auto file = QFileDialog::getSaveFileName( this, "Export predefined filters", "",
tr( "Predefined filters (*.conf)" ) );

if ( file.isEmpty() ) {
return;
}

QSettings settings{ file, QSettings::IniFormat };
readFiltersTable();

PredefinedFiltersCollection collection;
collection.setFilters( filters_ );
collection.saveToStorage( settings );
}

void PredefinedFiltersDialog::resolveStandardButton( QAbstractButton* button )
{
LOG( logDEBUG ) << "PredefinedFiltersDialog::resolveStandardButton";
Expand Down

0 comments on commit 1a13b4b

Please sign in to comment.