[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    [labplot] src/kdefrontend/datasources: Avoid multiple ImportFileDialog::checkOkButton() calls on dia
From:       Alexander Semke <null () kde ! org>
Date:       2018-09-13 6:28:44
Message-ID: E1g0L7M-0007zP-Qw () code ! kde ! org
[Download RAW message or body]

Git commit 1c2d8526d587aab7c22c30414c91a237ba76e250 by Alexander Semke.
Committed on 13/09/2018 at 06:28.
Pushed by asemke into branch 'master'.

Avoid multiple ImportFileDialog::checkOkButton() calls on dialog openning.

M  +2    -2    src/kdefrontend/datasources/ImportFileDialog.cpp
M  +57   -40   src/kdefrontend/datasources/ImportFileWidget.cpp
M  +2    -1    src/kdefrontend/datasources/ImportFileWidget.h

https://commits.kde.org/labplot/1c2d8526d587aab7c22c30414c91a237ba76e250

diff --git a/src/kdefrontend/datasources/ImportFileDialog.cpp \
b/src/kdefrontend/datasources/ImportFileDialog.cpp index 31f2a926..de38ca0f 100644
--- a/src/kdefrontend/datasources/ImportFileDialog.cpp
+++ b/src/kdefrontend/datasources/ImportFileDialog.cpp
@@ -101,10 +101,11 @@ ImportFileDialog::ImportFileDialog(MainWin* parent, bool liveDataSource, const Q
 void ImportFileDialog::loadSettings() {
 	//restore saved settings
 	QApplication::processEvents(QEventLoop::AllEvents, 0);
+	m_importFileWidget->loadSettings();
+
 	KConfigGroup conf(KSharedConfig::openConfig(), "ImportFileDialog");
 	m_showOptions = conf.readEntry("ShowOptions", false);
 	m_showOptions ? m_optionsButton->setText(i18n("Hide Options")) : m_optionsButton->setText(i18n("Show \
                Options"));
-
 	m_importFileWidget->showOptions(m_showOptions);
 
 	//do the signal-slot connections after all settings where loaded in import file widget and check the OK \
button after this @@ -174,7 +175,6 @@ void ImportFileDialog::importToMQTT(MQTTClient* client) const{
 	m_importFileWidget->saveMQTTSettings(client);
 	client->read();
 	client->ready();
-
 }
 #endif
 
diff --git a/src/kdefrontend/datasources/ImportFileWidget.cpp \
b/src/kdefrontend/datasources/ImportFileWidget.cpp index a5bfd204..637a7a8e 100644
--- a/src/kdefrontend/datasources/ImportFileWidget.cpp
+++ b/src/kdefrontend/datasources/ImportFileWidget.cpp
@@ -197,22 +197,6 @@ ImportFileWidget::ImportFileWidget(QWidget* parent, bool liveDataSource, const Q
 	ui.tePreview->setLayout(layout);
 	m_twPreview->hide();
 
-	//SLOTs for the general part of the data source configuration
-	connect( ui.cbSourceType, SIGNAL(currentIndexChanged(int)), this, SLOT(sourceTypeChanged(int)));
-	connect( ui.leFileName, SIGNAL(textChanged(QString)), SLOT(fileNameChanged(QString)) );
-	connect(ui.leHost, SIGNAL(textChanged(QString)), this, SIGNAL(hostChanged()));
-	connect(ui.lePort, SIGNAL(textChanged(QString)), this, SIGNAL(portChanged()));
-	connect( ui.tvJson, SIGNAL(clicked(QModelIndex)), this, SLOT(refreshPreview()));
-	connect( ui.bOpen, SIGNAL(clicked()), this, SLOT (selectFile()) );
-	connect( ui.bFileInfo, SIGNAL(clicked()), this, SLOT (fileInfoDialog()) );
-	connect( ui.bSaveFilter, SIGNAL(clicked()), this, SLOT (saveFilter()) );
-	connect( ui.bManageFilters, SIGNAL(clicked()), this, SLOT (manageFilters()) );
-	connect( ui.cbFileType, SIGNAL(currentIndexChanged(int)), SLOT(fileTypeChanged(int)) );
-	connect( ui.cbUpdateType, SIGNAL(currentIndexChanged(int)), this, SLOT(updateTypeChanged(int)));
-	connect( ui.cbReadingType, SIGNAL(currentIndexChanged(int)), this, SLOT(readingTypeChanged(int)));
-	connect( ui.cbFilter, SIGNAL(activated(int)), SLOT(filterChanged(int)) );
-	connect( ui.bRefreshPreview, SIGNAL(clicked()), SLOT(refreshPreview()) );
-
 #ifdef HAVE_MQTT
 	ui.cbSourceType->addItem(QLatin1String("MQTT"));
 	m_configPath = QStandardPaths::standardLocations(QStandardPaths::AppDataLocation).constFirst() +  \
"MQTT_connections"; @@ -228,22 +212,6 @@ ImportFileWidget::ImportFileWidget(QWidget* parent, bool \
liveDataSource, const Q  m_willSettings.willLastMessage = QString();
 	m_willSettings.willStatistics.fill(false, 15);
 
-	connect(ui.cbConnection, static_cast<void (QComboBox::*) (int)>(&QComboBox::currentIndexChanged), this, \
                &ImportFileWidget::mqttConnectionChanged);
-	connect(m_client, &QMqttClient::connected, this, &ImportFileWidget::onMqttConnect);
-	connect(m_client, &QMqttClient::disconnected, this, &ImportFileWidget::onMqttDisconnect);
-	connect(ui.bSubscribe,  &QPushButton::clicked, this, &ImportFileWidget::mqttSubscribe);
-	connect(ui.bUnsubscribe, &QPushButton::clicked, this,&ImportFileWidget::mqttUnsubscribe);
-	connect(m_client, &QMqttClient::messageReceived, this, &ImportFileWidget::mqttMessageReceived);
-	connect(this, &ImportFileWidget::newTopic, this, &ImportFileWidget::setTopicCompleter);
-	connect(m_searchTimer, &QTimer::timeout, this, &ImportFileWidget::topicTimeout);
-	connect(m_connectTimeoutTimer, &QTimer::timeout, this, &ImportFileWidget::mqttConnectTimeout);
-	connect(m_client, &QMqttClient::errorChanged, this, &ImportFileWidget::mqttErrorChanged);
-	connect(ui.cbFileType, static_cast<void (QComboBox::*) (int)>(&QComboBox::currentIndexChanged), \
                [this]() {emit checkFileType();});
-	connect(ui.leTopics, &QLineEdit::textChanged, this, &ImportFileWidget::scrollToTopicTreeItem);
-	connect(ui.leSubscriptions, &QLineEdit::textChanged, this, \
                &ImportFileWidget::scrollToSubsriptionTreeItem);
-	connect(ui.bManageConnections, &QPushButton::clicked, this, \
                &ImportFileWidget::showMQTTConnectionManager);
-	connect(ui.bWillMessage, &QPushButton::clicked, this, &ImportFileWidget::showWillSettings);
-
 	ui.bSubscribe->setIcon(ui.bSubscribe->style()->standardIcon(QStyle::SP_ArrowRight));
 	ui.bSubscribe->setToolTip(i18n("Subscribe selected topics"));
 	ui.bUnsubscribe->setIcon(ui.bUnsubscribe->style()->standardIcon(QStyle::SP_ArrowLeft));
@@ -258,9 +226,6 @@ ImportFileWidget::ImportFileWidget(QWidget* parent, bool liveDataSource, const Q
 	//TODO: implement save/load of user-defined settings later and activate these buttons again
 	ui.bSaveFilter->hide();
 	ui.bManageFilters->hide();
-
-	//defer the loading of settings a bit in order to show the dialog prior to blocking the GUI in \
                refreshPreview()
-	QTimer::singleShot( 100, this, SLOT(loadSettings()) );
 }
 
 void ImportFileWidget::loadSettings() {
@@ -278,7 +243,15 @@ void ImportFileWidget::loadSettings() {
 	ui.cbSourceType->setCurrentIndex(conf.readEntry("SourceType").toInt());
 
 	//general settings
-	ui.cbFileType->setCurrentIndex(conf.readEntry("Type", 0));
+	AbstractFileFilter::FileType fileType = \
static_cast<AbstractFileFilter::FileType>(conf.readEntry("Type", 0)); +	for (int i = 0; i < \
ui.cbFileType->count(); ++i) { +		AbstractFileFilter::FileType itemFileType = \
static_cast<AbstractFileFilter::FileType>(ui.cbFileType->itemData(i).toInt()); +		if (itemFileType == \
fileType) { +			ui.cbFileType->setCurrentIndex(i);
+			break;
+		}
+	}
+
 	ui.cbFilter->setCurrentIndex(conf.readEntry("Filter", 0));
 	filterChanged(ui.cbFilter->currentIndex());	// needed if filter is not changed
 	if (m_fileName.isEmpty())
@@ -321,10 +294,17 @@ void ImportFileWidget::loadSettings() {
 	m_initialisingMQTT = false;
 #endif
 
-	//update the widgets and refresh the preview for the for current source type
+	//initialize the slots after all settings were set in order to avoid unneeded refreshes
+	initSlots();
+
+	//update the status of the widgets
 	sourceTypeChanged(currentSourceType());
+	fileTypeChanged(fileType);
+	readingTypeChanged(ui.cbReadingType->currentIndex());
+
+	//all set now, refresh the preview
 	m_suppressRefresh = false;
-	fileTypeChanged(currentFileType());
+	QTimer::singleShot(100, this, [=] () { refreshPreview(); });
 }
 
 ImportFileWidget::~ImportFileWidget() {
@@ -382,6 +362,42 @@ ImportFileWidget::~ImportFileWidget() {
 		m_jsonOptionsWidget->saveSettings();
 }
 
+void ImportFileWidget::initSlots() {
+	//SLOTs for the general part of the data source configuration
+	connect( ui.cbSourceType, SIGNAL(currentIndexChanged(int)), this, SLOT(sourceTypeChanged(int)));
+	connect( ui.leFileName, SIGNAL(textChanged(QString)), SLOT(fileNameChanged(QString)) );
+	connect(ui.leHost, SIGNAL(textChanged(QString)), this, SIGNAL(hostChanged()));
+	connect(ui.lePort, SIGNAL(textChanged(QString)), this, SIGNAL(portChanged()));
+	connect( ui.tvJson, SIGNAL(clicked(QModelIndex)), this, SLOT(refreshPreview()));
+	connect( ui.bOpen, SIGNAL(clicked()), this, SLOT (selectFile()) );
+	connect( ui.bFileInfo, SIGNAL(clicked()), this, SLOT (fileInfoDialog()) );
+	connect( ui.bSaveFilter, SIGNAL(clicked()), this, SLOT (saveFilter()) );
+	connect( ui.bManageFilters, SIGNAL(clicked()), this, SLOT (manageFilters()) );
+	connect( ui.cbFileType, SIGNAL(currentIndexChanged(int)), SLOT(fileTypeChanged(int)) );
+	connect( ui.cbUpdateType, SIGNAL(currentIndexChanged(int)), this, SLOT(updateTypeChanged(int)));
+	connect( ui.cbReadingType, SIGNAL(currentIndexChanged(int)), this, SLOT(readingTypeChanged(int)));
+	connect( ui.cbFilter, SIGNAL(activated(int)), SLOT(filterChanged(int)) );
+	connect( ui.bRefreshPreview, SIGNAL(clicked()), SLOT(refreshPreview()) );
+
+#ifdef HAVE_MQTT
+	connect(ui.cbConnection, static_cast<void (QComboBox::*) (int)>(&QComboBox::currentIndexChanged), this, \
&ImportFileWidget::mqttConnectionChanged); +	connect(m_client, &QMqttClient::connected, this, \
&ImportFileWidget::onMqttConnect); +	connect(m_client, &QMqttClient::disconnected, this, \
&ImportFileWidget::onMqttDisconnect); +	connect(ui.bSubscribe,  &QPushButton::clicked, this, \
&ImportFileWidget::mqttSubscribe); +	connect(ui.bUnsubscribe, &QPushButton::clicked, \
this,&ImportFileWidget::mqttUnsubscribe); +	connect(m_client, &QMqttClient::messageReceived, this, \
&ImportFileWidget::mqttMessageReceived); +	connect(this, &ImportFileWidget::newTopic, this, \
&ImportFileWidget::setTopicCompleter); +	connect(m_searchTimer, &QTimer::timeout, this, \
&ImportFileWidget::topicTimeout); +	connect(m_connectTimeoutTimer, &QTimer::timeout, this, \
&ImportFileWidget::mqttConnectTimeout); +	connect(m_client, &QMqttClient::errorChanged, this, \
&ImportFileWidget::mqttErrorChanged); +	connect(ui.cbFileType, static_cast<void (QComboBox::*) \
(int)>(&QComboBox::currentIndexChanged), [this]() {emit checkFileType();}); +	connect(ui.leTopics, \
&QLineEdit::textChanged, this, &ImportFileWidget::scrollToTopicTreeItem); +	connect(ui.leSubscriptions, \
&QLineEdit::textChanged, this, &ImportFileWidget::scrollToSubsriptionTreeItem); \
+	connect(ui.bManageConnections, &QPushButton::clicked, this, \
&ImportFileWidget::showMQTTConnectionManager); +	connect(ui.bWillMessage, &QPushButton::clicked, this, \
&ImportFileWidget::showWillSettings); +#endif
+}
+
 void ImportFileWidget::showAsciiHeaderOptions(bool b) {
 	if (m_asciiOptionsWidget)
 		m_asciiOptionsWidget->showAsciiHeaderOptions(b);
@@ -1439,7 +1455,8 @@ void ImportFileWidget::manageFilters() {
 	and populates the combobox with the available pre-defined fllter settings for the selected type.
 */
 void ImportFileWidget::fileTypeChanged(int index) {
-	AbstractFileFilter::FileType fileType = \
(AbstractFileFilter::FileType)ui.cbFileType->itemData(index).toInt(); +	Q_UNUSED(index);
+	AbstractFileFilter::FileType fileType = \
currentFileType();//(AbstractFileFilter::FileType)ui.cbFileType->itemData(index).toInt();  \
DEBUG("ImportFileWidget::fileTypeChanged " << ENUM_TO_STRING(AbstractFileFilter, FileType, fileType));  \
initOptionsWidget(fileType);  
@@ -2737,7 +2754,7 @@ void ImportFileWidget::mqttErrorChanged(QMqttClient::ClientError clientError) {
 		QMessageBox::critical(this, i18n("Couldn't connect"), i18n("The client ID wasn't accepted"));
 		break;
 	case QMqttClient::ServerUnavailable:
-		QMessageBox::critical(this, i18n("Server unavailable"), i18n("The broker %1 couldn't be reached."));
+		QMessageBox::critical(this, i18n("Server unavailable"), i18n("The broker couldn't be reached."));
 		break;
 	case QMqttClient::NotAuthorized:
 		QMessageBox::critical(this, i18n("Not authorized"), i18n("The client is not authorized to connect."));
diff --git a/src/kdefrontend/datasources/ImportFileWidget.h \
b/src/kdefrontend/datasources/ImportFileWidget.h index 4203fa90..edc70049 100644
--- a/src/kdefrontend/datasources/ImportFileWidget.h
+++ b/src/kdefrontend/datasources/ImportFileWidget.h
@@ -68,6 +68,7 @@ public:
 
 	void showOptions(bool);
 	void saveSettings(LiveDataSource*) const;
+	void loadSettings();
 	AbstractFileFilter::FileType currentFileType() const;
 	LiveDataSource::SourceType currentSourceType() const;
 	AbstractFileFilter* currentFileFilter() const;
@@ -91,6 +92,7 @@ private:
 	void setMQTTVisible(bool);
 	void updateContent(const QString&, AbstractFileFilter::FileType);
 	void initOptionsWidget(AbstractFileFilter::FileType);
+	void initSlots();
 
 	std::unique_ptr<AsciiOptionsWidget> m_asciiOptionsWidget;
 	std::unique_ptr<BinaryOptionsWidget> m_binaryOptionsWidget;
@@ -108,7 +110,6 @@ private:
 	bool m_suppressRefresh;
 
 private slots:
-	void loadSettings();
 	void fileNameChanged(const QString&);
 	void fileTypeChanged(int);
 


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic