Dirk, This is a WIP but it's safe to add. What's missing: The other filters.
But the layout, interaction, etc, is the final one, so I think you guys ( specially you and deivide ) should take a look. ctrl + f or menu item toggle the filtering.
From 595bb5e4b0d38b887fc30cb972d6d10112eb39e7 Mon Sep 17 00:00:00 2001 From: Tomaz Canabrava <[email protected]> Date: Fri, 31 Oct 2014 13:44:21 -0200 Subject: [PATCH 1/9] Move the Filter to a better position This patch moves the filter from the collapsable pannel and puts it in an uncollapsable way above the dive list. Signed-off-by: Tomaz Canabrava <[email protected]> --- qt-ui/mainwindow.ui | 33 +++++++++++---------------------- 1 file changed, 11 insertions(+), 22 deletions(-) diff --git a/qt-ui/mainwindow.ui b/qt-ui/mainwindow.ui index 8434111..4d1f4b4 100644 --- a/qt-ui/mainwindow.ui +++ b/qt-ui/mainwindow.ui @@ -123,29 +123,18 @@ <property name="currentIndex"> <number>0</number> </property> - <widget class="DiveListView" name="ListWidget"> - <property name="alternatingRowColors"> - <bool>true</bool> - </property> - <property name="selectionMode"> - <enum>QAbstractItemView::ExtendedSelection</enum> - </property> - <property name="rootIsDecorated"> - <bool>true</bool> - </property> - <property name="sortingEnabled"> - <bool>false</bool> - </property> - <property name="animated"> - <bool>true</bool> - </property> - <property name="allColumnsShowFocus"> - <bool>true</bool> - </property> + <widget class="QWidget" name="page_3"> + <layout class="QVBoxLayout" name="verticalLayout_4"> + <item> + <widget class="TagFilter" name="tagFilter" native="true"/> + </item> + <item> + <widget class="DiveListView" name="ListWidget"/> + </item> + </layout> </widget> <widget class="PlannerSettingsWidget" name="plannerSettingsWidget"/> </widget> - <widget class="TagFilter" name="tagFilter" native="true"/> <widget class="QStackedWidget" name="globePane"> <property name="currentIndex"> <number>0</number> @@ -256,7 +245,7 @@ p, li { white-space: pre-wrap; } <x>0</x> <y>0</y> <width>1682</width> - <height>22</height> + <height>36</height> </rect> </property> <widget class="QMenu" name="menuFile"> @@ -844,7 +833,7 @@ p, li { white-space: pre-wrap; } </action> <action name="actionFilterTags"> <property name="text"> - <string>Filter by Tags</string> + <string>&Filter by Tags</string> </property> </action> <action name="profTissues"> -- 2.1.3
From 24edb0c0428040ad73e8c8bb308ac96f9ea33050 Mon Sep 17 00:00:00 2001 From: Tomaz Canabrava <[email protected]> Date: Fri, 31 Oct 2014 14:00:52 -0200 Subject: [PATCH 2/9] Do not allow to collapse the pannels of the mainwindow Disable the possibility to collapse the pannel in the mainwindow when seeing everything. Signed-off-by: Tomaz Canabrava <[email protected]> --- qt-ui/mainwindow.cpp | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/qt-ui/mainwindow.cpp b/qt-ui/mainwindow.cpp index 1d4b22a..586be85 100644 --- a/qt-ui/mainwindow.cpp +++ b/qt-ui/mainwindow.cpp @@ -561,8 +561,18 @@ void MainWindow::on_actionYearlyStatistics_triggered() } #define BEHAVIOR QList<int>() + +#define TOGGLE_COLLAPSABLE( X ) \ + ui.mainSplitter->setCollapsible(0, X); \ + ui.mainSplitter->setCollapsible(1, X); \ + ui.infoProfileSplitter->setCollapsible(0, X); \ + ui.infoProfileSplitter->setCollapsible(1, X); \ + ui.listGlobeSplitter->setCollapsible(0, X); \ + ui.listGlobeSplitter->setCollapsible(1, X); + void MainWindow::on_actionViewList_triggered() { + TOGGLE_COLLAPSABLE( true ); beginChangeState(LIST_MAXIMIZED); ui.listGlobeSplitter->setSizes(BEHAVIOR << EXPANDED << COLLAPSED); ui.mainSplitter->setSizes(BEHAVIOR << COLLAPSED << EXPANDED); @@ -570,6 +580,7 @@ void MainWindow::on_actionViewList_triggered() void MainWindow::on_actionViewProfile_triggered() { + TOGGLE_COLLAPSABLE( true ); beginChangeState(PROFILE_MAXIMIZED); ui.infoProfileSplitter->setSizes(BEHAVIOR << COLLAPSED << EXPANDED); ui.mainSplitter->setSizes(BEHAVIOR << EXPANDED << COLLAPSED); @@ -577,6 +588,7 @@ void MainWindow::on_actionViewProfile_triggered() void MainWindow::on_actionViewInfo_triggered() { + TOGGLE_COLLAPSABLE( true ); beginChangeState(INFO_MAXIMIZED); ui.infoProfileSplitter->setSizes(BEHAVIOR << EXPANDED << COLLAPSED); ui.mainSplitter->setSizes(BEHAVIOR << EXPANDED << COLLAPSED); @@ -584,6 +596,7 @@ void MainWindow::on_actionViewInfo_triggered() void MainWindow::on_actionViewGlobe_triggered() { + TOGGLE_COLLAPSABLE( true ); beginChangeState(GLOBE_MAXIMIZED); ui.mainSplitter->setSizes(BEHAVIOR << COLLAPSED << EXPANDED); ui.listGlobeSplitter->setSizes(BEHAVIOR << COLLAPSED << EXPANDED); @@ -592,6 +605,7 @@ void MainWindow::on_actionViewGlobe_triggered() void MainWindow::on_actionViewAll_triggered() { + TOGGLE_COLLAPSABLE( false ); beginChangeState(VIEWALL); static QList<int> mainSizes; const int appH = qApp->desktop()->size().height(); @@ -630,8 +644,16 @@ void MainWindow::on_actionViewAll_triggered() ui.infoProfileSplitter->setSizes(infoProfileSizes); ui.listGlobeSplitter->setSizes(listGlobeSizes); } + ui.mainSplitter->setCollapsible(0, false); + ui.mainSplitter->setCollapsible(1, false); + ui.infoProfileSplitter->setCollapsible(0, false); + ui.infoProfileSplitter->setCollapsible(1, false); + ui.listGlobeSplitter->setCollapsible(0,false); + ui.listGlobeSplitter->setCollapsible(1,false); } +#undef TOGGLE_COLLAPSABLE + void MainWindow::beginChangeState(CurrentState s) { if (state == VIEWALL && state != s) { -- 2.1.3
From fd3814dfc17a9e08e5c009392d75a2801ce6993f Mon Sep 17 00:00:00 2001 From: Tomaz Canabrava <[email protected]> Date: Fri, 31 Oct 2014 14:05:52 -0200 Subject: [PATCH 3/9] Make possible to hide the tag filter. It was impossible to remove the tag filter after opening it. Signed-off-by: Tomaz Canabrava <[email protected]> --- qt-ui/mainwindow.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/qt-ui/mainwindow.cpp b/qt-ui/mainwindow.cpp index 586be85..f5794b6 100644 --- a/qt-ui/mainwindow.cpp +++ b/qt-ui/mainwindow.cpp @@ -1382,5 +1382,5 @@ void MainWindow::on_paste_triggered() void MainWindow::on_actionFilterTags_triggered() { - ui.tagFilter->show(); + ui.tagFilter->setVisible(!ui.tagFilter->isVisible()); } -- 2.1.3
From 684cb2f6f571234b39f62d7299ee33c64cf99923 Mon Sep 17 00:00:00 2001 From: Tomaz Canabrava <[email protected]> Date: Fri, 31 Oct 2014 14:17:01 -0200 Subject: [PATCH 4/9] Ctrl+F now opens the Tag Filter And old code for the old searchbar removed. Signed-off-by: Tomaz Canabrava <[email protected]> --- qt-ui/divelistview.cpp | 28 +--------------------------- qt-ui/divelistview.h | 3 --- qt-ui/mainwindow.cpp | 3 --- qt-ui/mainwindow.ui | 3 +++ 4 files changed, 4 insertions(+), 33 deletions(-) diff --git a/qt-ui/divelistview.cpp b/qt-ui/divelistview.cpp index 474cb06..6963958 100644 --- a/qt-ui/divelistview.cpp +++ b/qt-ui/divelistview.cpp @@ -32,7 +32,7 @@ static int defaultWidth[] = { 70, 140, 90, 50, 50, 50, 50, 70, 50, 50, 70, 50, 50, 500}; DiveListView::DiveListView(QWidget *parent) : QTreeView(parent), mouseClickSelection(false), sortColumn(0), - currentOrder(Qt::DescendingOrder), searchBox(this), dontEmitDiveChangedSignal(false), selectionSaved(false) + currentOrder(Qt::DescendingOrder), dontEmitDiveChangedSignal(false), selectionSaved(false) { setItemDelegate(new DiveListDelegate(this)); setUniformRowHeights(true); @@ -100,15 +100,6 @@ DiveListView::DiveListView(QWidget *parent) : QTreeView(parent), mouseClickSelec header()->setStretchLastSection(true); - QAction *showSearchBox = new QAction(tr("Show search box"), this); - showSearchBox->setShortcut(Qt::CTRL + Qt::Key_F); - showSearchBox->setShortcutContext(Qt::WindowShortcut); - addAction(showSearchBox); - - searchBox.installEventFilter(this); - searchBox.hide(); -// connect(showSearchBox, SIGNAL(triggered(bool)), this, SLOT(showSearchEdit())); -// connect(&searchBox, SIGNAL(textChanged(QString)), model, SLOT(setFilterFixedString(QString))); } DiveListView::~DiveListView() @@ -322,12 +313,6 @@ void DiveListView::selectDives(const QList<int> &newDiveSelection) return; } -void DiveListView::showSearchEdit() -{ - searchBox.show(); - searchBox.setFocus(); -} - bool DiveListView::eventFilter(QObject *, QEvent *event) { if (event->type() != QEvent::KeyPress) @@ -335,11 +320,6 @@ bool DiveListView::eventFilter(QObject *, QEvent *event) QKeyEvent *keyEv = static_cast<QKeyEvent *>(event); if (keyEv->key() != Qt::Key_Escape) return false; - - searchBox.clear(); - searchBox.hide(); - QSortFilterProxyModel *m = qobject_cast<QSortFilterProxyModel *>(model()); - m->setFilterFixedString(QString()); return true; } @@ -882,9 +862,3 @@ void DiveListView::updateLastImageTimeOffset(const int offset) s.beginGroup("MainWindow"); s.setValue("LastImageTimeOffset", offset); } - -void DiveListView::endSearch() -{ - searchBox.clear(); - searchBox.hide(); -} diff --git a/qt-ui/divelistview.h b/qt-ui/divelistview.h index 332c179..a2e33a0 100644 --- a/qt-ui/divelistview.h +++ b/qt-ui/divelistview.h @@ -36,7 +36,6 @@ slots: void toggleColumnVisibilityByIndex(); void reloadHeaderActions(); void headerClicked(int); - void showSearchEdit(); void removeFromTrip(); void deleteDive(); void markDiveInvalid(); @@ -52,7 +51,6 @@ slots: void shiftTimes(); void loadImages(); static QString lastUsedImageDir(); - void endSearch(); signals: void currentDiveChanged(int divenr); @@ -63,7 +61,6 @@ private: int sortColumn; Qt::SortOrder currentOrder; DiveTripModel::Layout currentLayout; - QLineEdit searchBox; QModelIndex contextMenuIndex; bool dontEmitDiveChangedSignal; bool selectionSaved; diff --git a/qt-ui/mainwindow.cpp b/qt-ui/mainwindow.cpp index f5794b6..a86eb8e 100644 --- a/qt-ui/mainwindow.cpp +++ b/qt-ui/mainwindow.cpp @@ -457,7 +457,6 @@ void MainWindow::on_actionReplanDive_triggered() qDebug() << "trying to replan a dive that's not a planned dive:" << current_dive->dc.model; return; } - ui.ListWidget->endSearch(); // put us in PLAN mode DivePlannerPointsModel::instance()->clear(); DivePlannerPointsModel::instance()->setPlanMode(DivePlannerPointsModel::PLAN); @@ -479,7 +478,6 @@ void MainWindow::on_actionDivePlanner_triggered() if (!plannerStateClean()) return; - ui.ListWidget->endSearch(); // put us in PLAN mode DivePlannerPointsModel::instance()->setPlanMode(DivePlannerPointsModel::PLAN); @@ -509,7 +507,6 @@ void MainWindow::on_actionAddDive_triggered() dive_list()->clearSelection(); } - ui.ListWidget->endSearch(); DivePlannerPointsModel::instance()->setPlanMode(DivePlannerPointsModel::ADD); // setup things so we can later create our starting dive diff --git a/qt-ui/mainwindow.ui b/qt-ui/mainwindow.ui index 4d1f4b4..4e9c94a 100644 --- a/qt-ui/mainwindow.ui +++ b/qt-ui/mainwindow.ui @@ -835,6 +835,9 @@ p, li { white-space: pre-wrap; } <property name="text"> <string>&Filter by Tags</string> </property> + <property name="shortcut"> + <string>Ctrl+F</string> + </property> </action> <action name="profTissues"> <property name="checkable"> -- 2.1.3
From af8f1fc8d1cfc0016c6fde62e5c454066709aea4 Mon Sep 17 00:00:00 2001 From: Tomaz Canabrava <[email protected]> Date: Fri, 31 Oct 2014 15:22:21 -0200 Subject: [PATCH 5/9] Added a 'MultiFilter' widget. The multifilter widget is a container with all the filter widgets inside of it. currently there's just one. Signed-off-by: Tomaz Canabrava <[email protected]> --- qt-ui/mainwindow.cpp | 4 ++-- qt-ui/mainwindow.ui | 4 ++-- qt-ui/simplewidgets.cpp | 12 ++++++++++++ qt-ui/simplewidgets.h | 6 ++++++ 4 files changed, 22 insertions(+), 4 deletions(-) diff --git a/qt-ui/mainwindow.cpp b/qt-ui/mainwindow.cpp index a86eb8e..c052867 100644 --- a/qt-ui/mainwindow.cpp +++ b/qt-ui/mainwindow.cpp @@ -69,7 +69,7 @@ MainWindow::MainWindow() : QMainWindow(), Q_ASSERT_X(m_Instance == NULL, "MainWindow", "MainWindow recreated!"); m_Instance = this; ui.setupUi(this); - ui.tagFilter->hide(); + ui.multiFilter->hide(); profileToolbarActions << ui.profCalcAllTissues << ui.profCalcCeiling << ui.profDcCeiling << ui.profEad << ui.profHR << ui.profIncrement3m << ui.profMod << ui.profNdl_tts << ui.profNdl_tts << ui.profPhe << ui.profPn2 << ui.profPO2 << ui.profRuler << ui.profSAC << ui.profScaled << @@ -1379,5 +1379,5 @@ void MainWindow::on_paste_triggered() void MainWindow::on_actionFilterTags_triggered() { - ui.tagFilter->setVisible(!ui.tagFilter->isVisible()); + ui.multiFilter->setVisible(!ui.multiFilter->isVisible()); } diff --git a/qt-ui/mainwindow.ui b/qt-ui/mainwindow.ui index 4e9c94a..926e815 100644 --- a/qt-ui/mainwindow.ui +++ b/qt-ui/mainwindow.ui @@ -126,7 +126,7 @@ <widget class="QWidget" name="page_3"> <layout class="QVBoxLayout" name="verticalLayout_4"> <item> - <widget class="TagFilter" name="tagFilter" native="true"/> + <widget class="MultiFilter" name="multiFilter" native="true"/> </item> <item> <widget class="DiveListView" name="ListWidget"/> @@ -897,7 +897,7 @@ p, li { white-space: pre-wrap; } <container>1</container> </customwidget> <customwidget> - <class>TagFilter</class> + <class>MultiFilter</class> <extends>QWidget</extends> <header>simplewidgets.h</header> <container>1</container> diff --git a/qt-ui/simplewidgets.cpp b/qt-ui/simplewidgets.cpp index b312615..47952c3 100644 --- a/qt-ui/simplewidgets.cpp +++ b/qt-ui/simplewidgets.cpp @@ -476,3 +476,15 @@ void TagFilter::hideEvent(QHideEvent *event) TagFilterSortModel::instance()->removeFilterModel(TagFilterModel::instance()); QWidget::hideEvent(event); } + +MultiFilter::MultiFilter(QWidget *parent): QScrollArea(parent) +{ + QWidget *w = new QWidget(); + QHBoxLayout *l = new QHBoxLayout(); + + l->addWidget(new TagFilter()); + + w->setLayout(l); + w->setMinimumSize(l->count() * 150, 200); + setWidget(w); +} diff --git a/qt-ui/simplewidgets.h b/qt-ui/simplewidgets.h index d3e27c0..48a5749 100644 --- a/qt-ui/simplewidgets.h +++ b/qt-ui/simplewidgets.h @@ -140,6 +140,12 @@ private: Ui::TagFilter ui; }; +class MultiFilter : public QScrollArea { + Q_OBJECT +public: + MultiFilter(QWidget *parent); +}; + bool isGnome3Session(); QImage grayImage(const QImage &coloredImg); -- 2.1.3
From 3a73997a09b110896c835e25d383d84946bc7c15 Mon Sep 17 00:00:00 2001 From: Tomaz Canabrava <[email protected]> Date: Fri, 31 Oct 2014 15:27:33 -0200 Subject: [PATCH 6/9] TagFilter -> MultiFilter Signed-off-by: Tomaz Canabrava <[email protected]> --- qt-ui/divelistview.cpp | 2 +- qt-ui/models.cpp | 14 +++++++------- qt-ui/models.h | 6 +++--- qt-ui/simplewidgets.cpp | 4 ++-- 4 files changed, 13 insertions(+), 13 deletions(-) diff --git a/qt-ui/divelistview.cpp b/qt-ui/divelistview.cpp index 6963958..9868119 100644 --- a/qt-ui/divelistview.cpp +++ b/qt-ui/divelistview.cpp @@ -37,7 +37,7 @@ DiveListView::DiveListView(QWidget *parent) : QTreeView(parent), mouseClickSelec setItemDelegate(new DiveListDelegate(this)); setUniformRowHeights(true); setItemDelegateForColumn(DiveTripModel::RATING, new StarWidgetsDelegate(this)); - TagFilterSortModel *model = TagFilterSortModel::instance(); + MultiFilterSortModel *model = MultiFilterSortModel::instance(); model->setSortRole(DiveTripModel::SORT_ROLE); model->setFilterKeyColumn(-1); // filter all columns model->setFilterCaseSensitivity(Qt::CaseInsensitive); diff --git a/qt-ui/models.cpp b/qt-ui/models.cpp index 4b86605..e4df205 100644 --- a/qt-ui/models.cpp +++ b/qt-ui/models.cpp @@ -2351,17 +2351,17 @@ bool TagFilterModel::filterRow(int source_row, const QModelIndex &source_parent, return false; } -TagFilterSortModel *TagFilterSortModel::instance() +MultiFilterSortModel *MultiFilterSortModel::instance() { - static TagFilterSortModel *self = new TagFilterSortModel(); + static MultiFilterSortModel *self = new MultiFilterSortModel(); return self; } -TagFilterSortModel::TagFilterSortModel(QObject *parent) : QSortFilterProxyModel(parent) +MultiFilterSortModel::MultiFilterSortModel(QObject *parent) : QSortFilterProxyModel(parent) { } -bool TagFilterSortModel::filterAcceptsRow(int source_row, const QModelIndex &source_parent) const +bool MultiFilterSortModel::filterAcceptsRow(int source_row, const QModelIndex &source_parent) const { if (models.isEmpty()) { return true; @@ -2376,12 +2376,12 @@ bool TagFilterSortModel::filterAcceptsRow(int source_row, const QModelIndex &sou return false; } -void TagFilterSortModel::myInvalidate() +void MultiFilterSortModel::myInvalidate() { invalidate(); } -void TagFilterSortModel::addFilterModel(MultiFilterInterface *model) +void MultiFilterSortModel::addFilterModel(MultiFilterInterface *model) { QAbstractItemModel *itemModel = dynamic_cast<QAbstractItemModel *>(model); Q_ASSERT(itemModel); @@ -2389,7 +2389,7 @@ void TagFilterSortModel::addFilterModel(MultiFilterInterface *model) connect(itemModel, SIGNAL(dataChanged(QModelIndex, QModelIndex)), this, SLOT(myInvalidate())); } -void TagFilterSortModel::removeFilterModel(MultiFilterInterface *model) +void MultiFilterSortModel::removeFilterModel(MultiFilterInterface *model) { QAbstractItemModel *itemModel = dynamic_cast<QAbstractItemModel *>(model); Q_ASSERT(itemModel); diff --git a/qt-ui/models.h b/qt-ui/models.h index a0b2565..032edc5 100644 --- a/qt-ui/models.h +++ b/qt-ui/models.h @@ -443,17 +443,17 @@ private: explicit TagFilterModel(QObject *parent = 0); }; -class TagFilterSortModel : public QSortFilterProxyModel { +class MultiFilterSortModel : public QSortFilterProxyModel { Q_OBJECT public: - static TagFilterSortModel *instance(); + static MultiFilterSortModel *instance(); virtual bool filterAcceptsRow(int source_row, const QModelIndex &source_parent) const; void addFilterModel(MultiFilterInterface *model); void removeFilterModel(MultiFilterInterface *model); public slots: void myInvalidate(); private: - TagFilterSortModel(QObject *parent = 0); + MultiFilterSortModel(QObject *parent = 0); QList<MultiFilterInterface*> models; }; #endif // MODELS_H diff --git a/qt-ui/simplewidgets.cpp b/qt-ui/simplewidgets.cpp index 47952c3..d00fab8 100644 --- a/qt-ui/simplewidgets.cpp +++ b/qt-ui/simplewidgets.cpp @@ -467,13 +467,13 @@ TagFilter::TagFilter(QWidget *parent) : QWidget(parent) void TagFilter::showEvent(QShowEvent *event) { - TagFilterSortModel::instance()->addFilterModel(TagFilterModel::instance()); + MultiFilterSortModel::instance()->addFilterModel(TagFilterModel::instance()); QWidget::showEvent(event); } void TagFilter::hideEvent(QHideEvent *event) { - TagFilterSortModel::instance()->removeFilterModel(TagFilterModel::instance()); + MultiFilterSortModel::instance()->removeFilterModel(TagFilterModel::instance()); QWidget::hideEvent(event); } -- 2.1.3
From 04c729f487a0cbf109ad33d8513eb87ce39c1eb3 Mon Sep 17 00:00:00 2001 From: Tomaz Canabrava <[email protected]> Date: Fri, 31 Oct 2014 15:40:57 -0200 Subject: [PATCH 7/9] tagfilter.ui -> filterwidget.ui Signed-off-by: Tomaz Canabrava <[email protected]> --- qt-ui/listfilter.ui | 34 ++++++++++++++++++++++++++++++++++ qt-ui/simplewidgets.cpp | 5 +++-- qt-ui/simplewidgets.h | 2 +- qt-ui/tagfilter.ui | 27 --------------------------- subsurface.pro | 2 +- 5 files changed, 39 insertions(+), 31 deletions(-) create mode 100644 qt-ui/listfilter.ui delete mode 100644 qt-ui/tagfilter.ui diff --git a/qt-ui/listfilter.ui b/qt-ui/listfilter.ui new file mode 100644 index 0000000..41a8dfa --- /dev/null +++ b/qt-ui/listfilter.ui @@ -0,0 +1,34 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>TagFilter</class> + <widget class="QWidget" name="TagFilter"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>400</width> + <height>300</height> + </rect> + </property> + <property name="windowTitle"> + <string>Form</string> + </property> + <layout class="QVBoxLayout" name="verticalLayout"> + <item> + <widget class="QLabel" name="label"> + <property name="text"> + <string>TextLabel</string> + </property> + </widget> + </item> + <item> + <widget class="QLineEdit" name="filterTag"/> + </item> + <item> + <widget class="QListView" name="tagView"/> + </item> + </layout> + </widget> + <resources/> + <connections/> +</ui> diff --git a/qt-ui/simplewidgets.cpp b/qt-ui/simplewidgets.cpp index d00fab8..a5ad499 100644 --- a/qt-ui/simplewidgets.cpp +++ b/qt-ui/simplewidgets.cpp @@ -459,10 +459,11 @@ void DiveComponentSelection::buttonClicked(QAbstractButton *button) TagFilter::TagFilter(QWidget *parent) : QWidget(parent) { ui.setupUi(this); + ui.label->setText(tr("Tags: ")); QSortFilterProxyModel *filter = new QSortFilterProxyModel(); filter->setSourceModel(TagFilterModel::instance()); - connect(ui.filterTag, SIGNAL(textChanged(QString)), filter, SLOT(setFilterFixedString(QString))); - ui.tagView->setModel(filter); + connect(ui.filterInternalList, SIGNAL(textChanged(QString)), filter, SLOT(setFilterFixedString(QString))); + ui.filterList->setModel(filter); } void TagFilter::showEvent(QShowEvent *event) diff --git a/qt-ui/simplewidgets.h b/qt-ui/simplewidgets.h index 48a5749..d4eece8 100644 --- a/qt-ui/simplewidgets.h +++ b/qt-ui/simplewidgets.h @@ -137,7 +137,7 @@ public: virtual void showEvent(QShowEvent *); virtual void hideEvent(QHideEvent *); private: - Ui::TagFilter ui; + Ui::FilterWidget ui; }; class MultiFilter : public QScrollArea { diff --git a/qt-ui/tagfilter.ui b/qt-ui/tagfilter.ui deleted file mode 100644 index 91078ed..0000000 --- a/qt-ui/tagfilter.ui +++ /dev/null @@ -1,27 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<ui version="4.0"> - <class>TagFilter</class> - <widget class="QWidget" name="TagFilter"> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>400</width> - <height>300</height> - </rect> - </property> - <property name="windowTitle"> - <string>Form</string> - </property> - <layout class="QVBoxLayout" name="verticalLayout"> - <item> - <widget class="QLineEdit" name="filterTag"/> - </item> - <item> - <widget class="QListView" name="tagView"/> - </item> - </layout> - </widget> - <resources/> - <connections/> -</ui> diff --git a/subsurface.pro b/subsurface.pro index b7e5ec9..7b38fd6 100644 --- a/subsurface.pro +++ b/subsurface.pro @@ -228,7 +228,7 @@ FORMS = \ qt-ui/usersurvey.ui \ qt-ui/divecomponentselection.ui \ qt-ui/configuredivecomputerdialog.ui \ - qt-ui/tagfilter.ui \ + qt-ui/listfilter.ui \ qt-ui/diveshareexportdialog.ui # Nether usermanual or printing is supported on android right now -- 2.1.3
From 9ffdc1a0f0ddef382132b76ff255a7a92eeac434 Mon Sep 17 00:00:00 2001 From: Tomaz Canabrava <[email protected]> Date: Fri, 31 Oct 2014 15:46:58 -0200 Subject: [PATCH 8/9] Fix spacing in the layout of the MultiFilter default is 8, setted to zero. Signed-off-by: Tomaz Canabrava <[email protected]> --- qt-ui/simplewidgets.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/qt-ui/simplewidgets.cpp b/qt-ui/simplewidgets.cpp index a5ad499..710d0c3 100644 --- a/qt-ui/simplewidgets.cpp +++ b/qt-ui/simplewidgets.cpp @@ -484,7 +484,8 @@ MultiFilter::MultiFilter(QWidget *parent): QScrollArea(parent) QHBoxLayout *l = new QHBoxLayout(); l->addWidget(new TagFilter()); - + l->setContentsMargins(0,0,0,0); + l->setSpacing(1); w->setLayout(l); w->setMinimumSize(l->count() * 150, 200); setWidget(w); -- 2.1.3
From 2d33de7f7df1eb09d6bcf27ca501e537e48543af Mon Sep 17 00:00:00 2001 From: Tomaz Canabrava <[email protected]> Date: Fri, 31 Oct 2014 16:01:28 -0200 Subject: [PATCH 9/9] Better layout for the filtering widget Fix the layout size, moved some stuff around. Signed-off-by: Tomaz Canabrava <[email protected]> --- qt-ui/listfilter.ui | 33 ++++++++++++++++++++++----------- qt-ui/simplewidgets.cpp | 3 +++ qt-ui/simplewidgets.h | 2 +- 3 files changed, 26 insertions(+), 12 deletions(-) diff --git a/qt-ui/listfilter.ui b/qt-ui/listfilter.ui index 41a8dfa..016b776 100644 --- a/qt-ui/listfilter.ui +++ b/qt-ui/listfilter.ui @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <ui version="4.0"> - <class>TagFilter</class> - <widget class="QWidget" name="TagFilter"> + <class>FilterWidget</class> + <widget class="QWidget" name="FilterWidget"> <property name="geometry"> <rect> <x>0</x> @@ -15,17 +15,28 @@ </property> <layout class="QVBoxLayout" name="verticalLayout"> <item> - <widget class="QLabel" name="label"> - <property name="text"> - <string>TextLabel</string> - </property> - </widget> + <layout class="QHBoxLayout" name="horizontalLayout"> + <item> + <widget class="QLabel" name="label"> + <property name="text"> + <string>TextLabel</string> + </property> + </widget> + </item> + <item> + <widget class="QLineEdit" name="filterInternalList"> + <property name="alignment"> + <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set> + </property> + <property name="placeholderText"> + <string>Filter this list</string> + </property> + </widget> + </item> + </layout> </item> <item> - <widget class="QLineEdit" name="filterTag"/> - </item> - <item> - <widget class="QListView" name="tagView"/> + <widget class="QListView" name="filterList"/> </item> </layout> </widget> diff --git a/qt-ui/simplewidgets.cpp b/qt-ui/simplewidgets.cpp index 710d0c3..40f92c8 100644 --- a/qt-ui/simplewidgets.cpp +++ b/qt-ui/simplewidgets.cpp @@ -460,6 +460,9 @@ TagFilter::TagFilter(QWidget *parent) : QWidget(parent) { ui.setupUi(this); ui.label->setText(tr("Tags: ")); + #if QT_VERSION >= 0x050000 + ui.label->setClearButtonEnabled(true); + #endif QSortFilterProxyModel *filter = new QSortFilterProxyModel(); filter->setSourceModel(TagFilterModel::instance()); connect(ui.filterInternalList, SIGNAL(textChanged(QString)), filter, SLOT(setFilterFixedString(QString))); diff --git a/qt-ui/simplewidgets.h b/qt-ui/simplewidgets.h index d4eece8..f90e547 100644 --- a/qt-ui/simplewidgets.h +++ b/qt-ui/simplewidgets.h @@ -12,7 +12,7 @@ class QAbstractButton; #include "ui_shifttimes.h" #include "ui_shiftimagetimes.h" #include "ui_divecomponentselection.h" -#include "ui_tagfilter.h" +#include "ui_listfilter.h" #include "exif.h" class MinMaxAvgWidget : public QWidget { -- 2.1.3
_______________________________________________ subsurface mailing list [email protected] http://lists.subsurface-divelog.org/cgi-bin/mailman/listinfo/subsurface
