From 1368c72725280654f82671b5d8d00af720965323 Mon Sep 17 00:00:00 2001 From: Mohammed Nafees Date: Sat, 21 Jun 2014 17:55:19 +0530 Subject: [PATCH 1/3] Keep the filter line edit of the Models Browser disabled until the models list has been populated. This fixes interface from crashing in case the user types in the line edit and the list is not populated. --- interface/src/ui/ModelsBrowser.cpp | 16 +++++++++++++--- interface/src/ui/ModelsBrowser.h | 2 ++ 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/interface/src/ui/ModelsBrowser.cpp b/interface/src/ui/ModelsBrowser.cpp index 4296a096a0..8774fa5966 100644 --- a/interface/src/ui/ModelsBrowser.cpp +++ b/interface/src/ui/ModelsBrowser.cpp @@ -89,6 +89,10 @@ ModelsBrowser::ModelsBrowser(ModelType modelsType, QWidget* parent) : _view.setEditTriggers(QAbstractItemView::NoEditTriggers); _view.setRootIsDecorated(false); _view.setModel(_handler->getModel()); + + _searchBar = new QLineEdit; + _searchBar->setDisabled(true); + connect(_handler, SIGNAL(doneDownloading()), SLOT(enableSearchBar())); } void ModelsBrowser::applyFilter(const QString &filter) { @@ -130,6 +134,10 @@ void ModelsBrowser::resizeView() { } } +void ModelsBrowser::enableSearchBar() { + _searchBar->setEnabled(true); +} + void ModelsBrowser::browse() { QDialog dialog; dialog.setWindowTitle("Browse models"); @@ -138,12 +146,14 @@ void ModelsBrowser::browse() { QGridLayout* layout = new QGridLayout(&dialog); dialog.setLayout(layout); - QLineEdit* searchBar = new QLineEdit(&dialog); - layout->addWidget(searchBar, 0, 0); + /*if (!_searchBar) { + _searchBar = new QLineEdit(&dialog); + }*/ + layout->addWidget(_searchBar, 0, 0); layout->addWidget(&_view, 1, 0); dialog.connect(&_view, SIGNAL(doubleClicked(const QModelIndex&)), SLOT(accept())); - connect(searchBar, SIGNAL(textChanged(const QString&)), SLOT(applyFilter(const QString&))); + connect(_searchBar, SIGNAL(textChanged(const QString&)), SLOT(applyFilter(const QString&))); QDialogButtonBox* buttons = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel); layout->addWidget(buttons, 2, 0); diff --git a/interface/src/ui/ModelsBrowser.h b/interface/src/ui/ModelsBrowser.h index ff273a45bc..3e832c9dbe 100644 --- a/interface/src/ui/ModelsBrowser.h +++ b/interface/src/ui/ModelsBrowser.h @@ -74,9 +74,11 @@ public slots: private slots: void applyFilter(const QString& filter); void resizeView(); + void enableSearchBar(); private: ModelHandler* _handler; + QLineEdit* _searchBar; QTreeView _view; }; From 1b186c3b92eab7f4f486d2950e5a706f287f0e41 Mon Sep 17 00:00:00 2001 From: Mohammed Nafees Date: Sat, 21 Jun 2014 17:57:11 +0530 Subject: [PATCH 2/3] Remove unnecessary lines of code. --- interface/src/ui/ModelsBrowser.cpp | 4 ---- 1 file changed, 4 deletions(-) diff --git a/interface/src/ui/ModelsBrowser.cpp b/interface/src/ui/ModelsBrowser.cpp index 8774fa5966..2a7fc13074 100644 --- a/interface/src/ui/ModelsBrowser.cpp +++ b/interface/src/ui/ModelsBrowser.cpp @@ -146,11 +146,7 @@ void ModelsBrowser::browse() { QGridLayout* layout = new QGridLayout(&dialog); dialog.setLayout(layout); - /*if (!_searchBar) { - _searchBar = new QLineEdit(&dialog); - }*/ layout->addWidget(_searchBar, 0, 0); - layout->addWidget(&_view, 1, 0); dialog.connect(&_view, SIGNAL(doubleClicked(const QModelIndex&)), SLOT(accept())); connect(_searchBar, SIGNAL(textChanged(const QString&)), SLOT(applyFilter(const QString&))); From 803ea28f99c9dc0852a3e98aca8de1a702ec9b58 Mon Sep 17 00:00:00 2001 From: Mohammed Nafees Date: Sat, 21 Jun 2014 23:01:22 +0530 Subject: [PATCH 3/3] Do not close the Models Browser if double clicked on the loading message --- interface/src/ui/ModelsBrowser.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/interface/src/ui/ModelsBrowser.cpp b/interface/src/ui/ModelsBrowser.cpp index 2a7fc13074..203c54d97a 100644 --- a/interface/src/ui/ModelsBrowser.cpp +++ b/interface/src/ui/ModelsBrowser.cpp @@ -89,7 +89,9 @@ ModelsBrowser::ModelsBrowser(ModelType modelsType, QWidget* parent) : _view.setEditTriggers(QAbstractItemView::NoEditTriggers); _view.setRootIsDecorated(false); _view.setModel(_handler->getModel()); + _view.blockSignals(true); + // Initialize the search bar _searchBar = new QLineEdit; _searchBar->setDisabled(true); connect(_handler, SIGNAL(doneDownloading()), SLOT(enableSearchBar())); @@ -135,6 +137,7 @@ void ModelsBrowser::resizeView() { } void ModelsBrowser::enableSearchBar() { + _view.blockSignals(false); _searchBar->setEnabled(true); }