13 changed files with 623 additions and 10 deletions
			
			
		@ -0,0 +1,131 @@ | 
				
			|||||
 | 
					#include "changeremoteviewmodel_p.h" | 
				
			||||
 | 
					using namespace QtMvvm; | 
				
			||||
 | 
					using namespace QtDataSync; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					std::tuple<RemoteConfig, bool> ChangeRemoteViewModel::result(const QVariant &data) | 
				
			||||
 | 
					{ | 
				
			||||
 | 
						auto map = data.toHash(); | 
				
			||||
 | 
						return std::make_tuple(map.value(QStringLiteral("config")).value<RemoteConfig>(), | 
				
			||||
 | 
											   map.value(QStringLiteral("keepData")).toBool()); | 
				
			||||
 | 
					} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					ChangeRemoteViewModel::ChangeRemoteViewModel(QObject *parent) : | 
				
			||||
 | 
						ViewModel(parent), | 
				
			||||
 | 
						_url(), | 
				
			||||
 | 
						_accessKey(), | 
				
			||||
 | 
						_keepAlive(), | 
				
			||||
 | 
						_keepData(true), | 
				
			||||
 | 
						_headerModel(new QStandardItemModel(0, 2, this)) | 
				
			||||
 | 
					{ | 
				
			||||
 | 
						_headerModel->setHorizontalHeaderLabels({tr("Key"), tr("Value")}); | 
				
			||||
 | 
						_headerModel->setItemRoleNames({ | 
				
			||||
 | 
														   {KeyRole, "key"}, | 
				
			||||
 | 
														   {ValueRole, "value"} | 
				
			||||
 | 
													   }); | 
				
			||||
 | 
					
 | 
				
			||||
 | 
						connect(this, &ChangeRemoteViewModel::urlChanged, | 
				
			||||
 | 
								this, &ChangeRemoteViewModel::validChanged); | 
				
			||||
 | 
					} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					QUrl ChangeRemoteViewModel::url() const | 
				
			||||
 | 
					{ | 
				
			||||
 | 
						return _url; | 
				
			||||
 | 
					} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					QString ChangeRemoteViewModel::accessKey() const | 
				
			||||
 | 
					{ | 
				
			||||
 | 
						return _accessKey; | 
				
			||||
 | 
					} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					int ChangeRemoteViewModel::keepAlive() const | 
				
			||||
 | 
					{ | 
				
			||||
 | 
						return _keepAlive; | 
				
			||||
 | 
					} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					bool ChangeRemoteViewModel::keepData() const | 
				
			||||
 | 
					{ | 
				
			||||
 | 
						return _keepData; | 
				
			||||
 | 
					} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					QStandardItemModel *ChangeRemoteViewModel::headerModel() const | 
				
			||||
 | 
					{ | 
				
			||||
 | 
						return _headerModel; | 
				
			||||
 | 
					} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					bool ChangeRemoteViewModel::isValid() const | 
				
			||||
 | 
					{ | 
				
			||||
 | 
						return _url.isValid(); | 
				
			||||
 | 
					} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					bool ChangeRemoteViewModel::completeSetup() | 
				
			||||
 | 
					{ | 
				
			||||
 | 
						if(!isValid()) | 
				
			||||
 | 
							return false; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
						RemoteConfig::HeaderHash headers; | 
				
			||||
 | 
						for(auto i = 0; i < _headerModel->rowCount(); i++) { | 
				
			||||
 | 
							auto item = _headerModel->item(i); | 
				
			||||
 | 
							headers.insert(item->text().toUtf8(), | 
				
			||||
 | 
										   item->data(ValueRole).toString().toUtf8()); | 
				
			||||
 | 
						} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
						QVariantHash hash; | 
				
			||||
 | 
						hash[QStringLiteral("config")] = QVariant::fromValue<RemoteConfig>({ | 
				
			||||
 | 
																							   _url, | 
				
			||||
 | 
																							   _accessKey, | 
				
			||||
 | 
																							   headers, | 
				
			||||
 | 
																							   _keepAlive | 
				
			||||
 | 
																						   }); | 
				
			||||
 | 
						hash[QStringLiteral("keepData")] = _keepData; | 
				
			||||
 | 
						emit resultReady(hash); | 
				
			||||
 | 
						return true; | 
				
			||||
 | 
					} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					void ChangeRemoteViewModel::setUrl(const QUrl &url) | 
				
			||||
 | 
					{ | 
				
			||||
 | 
						if (_url == url) | 
				
			||||
 | 
							return; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
						_url = url; | 
				
			||||
 | 
						emit urlChanged(_url); | 
				
			||||
 | 
					} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					void ChangeRemoteViewModel::setAccessKey(const QString &accessKey) | 
				
			||||
 | 
					{ | 
				
			||||
 | 
						if (_accessKey == accessKey) | 
				
			||||
 | 
							return; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
						_accessKey = accessKey; | 
				
			||||
 | 
						emit accessKeyChanged(_accessKey); | 
				
			||||
 | 
					} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					void ChangeRemoteViewModel::setKeepAlive(int keepAlive) | 
				
			||||
 | 
					{ | 
				
			||||
 | 
						if (_keepAlive == keepAlive) | 
				
			||||
 | 
							return; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
						_keepAlive = keepAlive; | 
				
			||||
 | 
						emit keepAliveChanged(_keepAlive); | 
				
			||||
 | 
					} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					void ChangeRemoteViewModel::setKeepData(bool keepData) | 
				
			||||
 | 
					{ | 
				
			||||
 | 
						if (_keepData == keepData) | 
				
			||||
 | 
							return; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
						_keepData = keepData; | 
				
			||||
 | 
						emit keepDataChanged(_keepData); | 
				
			||||
 | 
					} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					void ChangeRemoteViewModel::addHeaderConfig(const QString &key, const QString &value) | 
				
			||||
 | 
					{ | 
				
			||||
 | 
						auto item0 = new QStandardItem(key); | 
				
			||||
 | 
						item0->setData(value, ValueRole); | 
				
			||||
 | 
						auto item1 = new QStandardItem(value); | 
				
			||||
 | 
						_headerModel->appendRow({item0, item1}); | 
				
			||||
 | 
					} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					void ChangeRemoteViewModel::removeHeaderConfig(int index) | 
				
			||||
 | 
					{ | 
				
			||||
 | 
						_headerModel->removeRow(index); | 
				
			||||
 | 
					} | 
				
			||||
@ -0,0 +1,73 @@ | 
				
			|||||
 | 
					#ifndef QTMVVM_CHANGEREMOTEVIEWMODEL_P_H | 
				
			||||
 | 
					#define QTMVVM_CHANGEREMOTEVIEWMODEL_P_H | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					#include <QtMvvmCore/ViewModel> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					#include <QtDataSync/RemoteConfig> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					#include <QtGui/QStandardItemModel> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					#include "qtmvvmdatasynccore_global.h" | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					namespace QtMvvm { | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					class Q_MVVMDATASYNCCORE_EXPORT ChangeRemoteViewModel : public ViewModel | 
				
			||||
 | 
					{ | 
				
			||||
 | 
						Q_OBJECT | 
				
			||||
 | 
					
 | 
				
			||||
 | 
						Q_PROPERTY(QUrl url READ url WRITE setUrl NOTIFY urlChanged) | 
				
			||||
 | 
						Q_PROPERTY(QString accessKey READ accessKey WRITE setAccessKey NOTIFY accessKeyChanged) | 
				
			||||
 | 
						Q_PROPERTY(int keepAlive READ keepAlive WRITE setKeepAlive NOTIFY keepAliveChanged) | 
				
			||||
 | 
						Q_PROPERTY(bool keepData READ keepData WRITE setKeepData NOTIFY keepDataChanged) | 
				
			||||
 | 
						Q_PROPERTY(QStandardItemModel* headerModel READ headerModel CONSTANT) | 
				
			||||
 | 
					
 | 
				
			||||
 | 
						Q_PROPERTY(bool valid READ isValid NOTIFY validChanged) | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					public: | 
				
			||||
 | 
						enum Roles { | 
				
			||||
 | 
							KeyRole = Qt::DisplayRole, | 
				
			||||
 | 
							ValueRole = Qt::UserRole + 1 | 
				
			||||
 | 
						}; | 
				
			||||
 | 
						Q_ENUM(Roles) | 
				
			||||
 | 
					
 | 
				
			||||
 | 
						static std::tuple<QtDataSync::RemoteConfig, bool> result(const QVariant &data); | 
				
			||||
 | 
					
 | 
				
			||||
 | 
						Q_INVOKABLE explicit ChangeRemoteViewModel(QObject *parent = nullptr); | 
				
			||||
 | 
					
 | 
				
			||||
 | 
						QUrl url() const; | 
				
			||||
 | 
						QString accessKey() const; | 
				
			||||
 | 
						int keepAlive() const; | 
				
			||||
 | 
						bool keepData() const; | 
				
			||||
 | 
						QStandardItemModel* headerModel() const; | 
				
			||||
 | 
						bool isValid() const; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					public Q_SLOTS: | 
				
			||||
 | 
						bool completeSetup(); | 
				
			||||
 | 
					
 | 
				
			||||
 | 
						void setUrl(const QUrl &url); | 
				
			||||
 | 
						void setAccessKey(const QString &accessKey); | 
				
			||||
 | 
						void setKeepAlive(int keepAlive); | 
				
			||||
 | 
						void setKeepData(bool keepData); | 
				
			||||
 | 
					
 | 
				
			||||
 | 
						void addHeaderConfig(const QString &key, const QString &value); | 
				
			||||
 | 
						void removeHeaderConfig(int index); | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					Q_SIGNALS: | 
				
			||||
 | 
						void urlChanged(const QUrl &url); | 
				
			||||
 | 
						void accessKeyChanged(const QString &accessKey); | 
				
			||||
 | 
						void keepAliveChanged(int keepAlive); | 
				
			||||
 | 
						void keepDataChanged(bool keepData); | 
				
			||||
 | 
						void validChanged(); | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					private: | 
				
			||||
 | 
						QUrl _url; | 
				
			||||
 | 
						QString _accessKey; | 
				
			||||
 | 
						int _keepAlive; | 
				
			||||
 | 
						bool _keepData; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
						QStandardItemModel *_headerModel; | 
				
			||||
 | 
					}; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					#endif // QTMVVM_CHANGEREMOTEVIEWMODEL_P_H
 | 
				
			||||
@ -0,0 +1,74 @@ | 
				
			|||||
 | 
					#include "changeremotedialog_p.h" | 
				
			||||
 | 
					#include "ui_changeremotedialog.h" | 
				
			||||
 | 
					#include <QtMvvmCore/Binding> | 
				
			||||
 | 
					#include <QtMvvmWidgets/private/widgetspresenter_p.h> | 
				
			||||
 | 
					using namespace QtMvvm; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					ChangeRemoteDialog::ChangeRemoteDialog(ViewModel *viewModel, QWidget *parent) : | 
				
			||||
 | 
						QDialog(parent), | 
				
			||||
 | 
						_viewModel(static_cast<ChangeRemoteViewModel*>(viewModel)), | 
				
			||||
 | 
						ui(new Ui::ChangeRemoteDialog) | 
				
			||||
 | 
					{ | 
				
			||||
 | 
						ui->setupUi(this); | 
				
			||||
 | 
						if(parentWidget()) { | 
				
			||||
 | 
							setWindowModality(Qt::WindowModal); | 
				
			||||
 | 
							setWindowFlags(Qt::Sheet | Qt::WindowCloseButtonHint | Qt::WindowMinimizeButtonHint); | 
				
			||||
 | 
						} else { | 
				
			||||
 | 
							setWindowModality(Qt::ApplicationModal); | 
				
			||||
 | 
							setWindowFlags(Qt::Dialog | Qt::WindowCloseButtonHint | Qt::WindowMinimizeButtonHint); | 
				
			||||
 | 
						} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
						ui->addHeaderButton->setDefaultAction(ui->actionA_dd_Header); | 
				
			||||
 | 
						ui->removeHeaderButton->setDefaultAction(ui->action_Remove_Header); | 
				
			||||
 | 
						ui->treeView->addActions({ | 
				
			||||
 | 
													 ui->actionA_dd_Header, | 
				
			||||
 | 
													 ui->action_Remove_Header | 
				
			||||
 | 
												 }); | 
				
			||||
 | 
						ui->urlLineEdit->setValidator(createUrlValidator({QStringLiteral("ws"), QStringLiteral("wss")}, ui->urlLineEdit)); | 
				
			||||
 | 
					
 | 
				
			||||
 | 
						bind(_viewModel, "url", | 
				
			||||
 | 
							 ui->urlLineEdit, "text", | 
				
			||||
 | 
							 Binding::OneWayToViewModel); | 
				
			||||
 | 
						bind(_viewModel, "accessKey", | 
				
			||||
 | 
							 ui->accessKeyLineEdit, "text", | 
				
			||||
 | 
							 Binding::OneWayToViewModel); | 
				
			||||
 | 
						bind(_viewModel, "keepAlive", | 
				
			||||
 | 
							 ui->keepAliveTimeoutSpinBox, "value"); | 
				
			||||
 | 
						bind(_viewModel, "keepData", | 
				
			||||
 | 
							 ui->keepDataCheckBox, "checked"); | 
				
			||||
 | 
						bind(_viewModel, "valid", | 
				
			||||
 | 
							 ui->buttonBox->button(QDialogButtonBox::Ok), "enabled", | 
				
			||||
 | 
							 Binding::OneWayToView); | 
				
			||||
 | 
					
 | 
				
			||||
 | 
						connect(ui->actionA_dd_Header, &QAction::triggered, | 
				
			||||
 | 
								this, &ChangeRemoteDialog::addHeader); | 
				
			||||
 | 
						connect(ui->action_Remove_Header, &QAction::triggered, | 
				
			||||
 | 
								this, &ChangeRemoteDialog::removeHeader); | 
				
			||||
 | 
					
 | 
				
			||||
 | 
						ui->treeView->setModel(_viewModel->headerModel()); | 
				
			||||
 | 
						ui->treeView->header()->setSectionResizeMode(0, QHeaderView::ResizeToContents); | 
				
			||||
 | 
					} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					ChangeRemoteDialog::~ChangeRemoteDialog() {} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					void ChangeRemoteDialog::accept() | 
				
			||||
 | 
					{ | 
				
			||||
 | 
						if(_viewModel->completeSetup()) | 
				
			||||
 | 
							QDialog::accept(); | 
				
			||||
 | 
					} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					void ChangeRemoteDialog::addHeader() | 
				
			||||
 | 
					{ | 
				
			||||
 | 
						if(ui->keyEdit->text().isEmpty()) | 
				
			||||
 | 
							return; | 
				
			||||
 | 
						_viewModel->addHeaderConfig(ui->keyEdit->text(), ui->valueEdit->text()); | 
				
			||||
 | 
						ui->keyEdit->clear(); | 
				
			||||
 | 
						ui->valueEdit->clear(); | 
				
			||||
 | 
					} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					void ChangeRemoteDialog::removeHeader() | 
				
			||||
 | 
					{ | 
				
			||||
 | 
						auto index = ui->treeView->currentIndex(); | 
				
			||||
 | 
						if(index.isValid()) | 
				
			||||
 | 
							_viewModel->removeHeaderConfig(index.row()); | 
				
			||||
 | 
					} | 
				
			||||
@ -0,0 +1,263 @@ | 
				
			|||||
 | 
					<?xml version="1.0" encoding="UTF-8"?> | 
				
			||||
 | 
					<ui version="4.0"> | 
				
			||||
 | 
					 <class>ChangeRemoteDialog</class> | 
				
			||||
 | 
					 <widget class="QDialog" name="ChangeRemoteDialog"> | 
				
			||||
 | 
					  <property name="geometry"> | 
				
			||||
 | 
					   <rect> | 
				
			||||
 | 
					    <x>0</x> | 
				
			||||
 | 
					    <y>0</y> | 
				
			||||
 | 
					    <width>487</width> | 
				
			||||
 | 
					    <height>376</height> | 
				
			||||
 | 
					   </rect> | 
				
			||||
 | 
					  </property> | 
				
			||||
 | 
					  <property name="windowTitle"> | 
				
			||||
 | 
					   <string>Dialog</string> | 
				
			||||
 | 
					  </property> | 
				
			||||
 | 
					  <property name="sizeGripEnabled"> | 
				
			||||
 | 
					   <bool>true</bool> | 
				
			||||
 | 
					  </property> | 
				
			||||
 | 
					  <property name="modal"> | 
				
			||||
 | 
					   <bool>true</bool> | 
				
			||||
 | 
					  </property> | 
				
			||||
 | 
					  <layout class="QFormLayout" name="formLayout"> | 
				
			||||
 | 
					   <item row="0" column="0"> | 
				
			||||
 | 
					    <widget class="QLabel" name="urlLabel"> | 
				
			||||
 | 
					     <property name="text"> | 
				
			||||
 | 
					      <string>&Url:</string> | 
				
			||||
 | 
					     </property> | 
				
			||||
 | 
					     <property name="buddy"> | 
				
			||||
 | 
					      <cstring>urlLineEdit</cstring> | 
				
			||||
 | 
					     </property> | 
				
			||||
 | 
					    </widget> | 
				
			||||
 | 
					   </item> | 
				
			||||
 | 
					   <item row="0" column="1"> | 
				
			||||
 | 
					    <widget class="QLineEdit" name="urlLineEdit"> | 
				
			||||
 | 
					     <property name="placeholderText"> | 
				
			||||
 | 
					      <string>wss://example.org/qdsapp/</string> | 
				
			||||
 | 
					     </property> | 
				
			||||
 | 
					    </widget> | 
				
			||||
 | 
					   </item> | 
				
			||||
 | 
					   <item row="1" column="0"> | 
				
			||||
 | 
					    <widget class="QLabel" name="accessKeyLabel"> | 
				
			||||
 | 
					     <property name="text"> | 
				
			||||
 | 
					      <string>&Access Key:</string> | 
				
			||||
 | 
					     </property> | 
				
			||||
 | 
					     <property name="buddy"> | 
				
			||||
 | 
					      <cstring>accessKeyLineEdit</cstring> | 
				
			||||
 | 
					     </property> | 
				
			||||
 | 
					    </widget> | 
				
			||||
 | 
					   </item> | 
				
			||||
 | 
					   <item row="1" column="1"> | 
				
			||||
 | 
					    <widget class="QLineEdit" name="accessKeyLineEdit"> | 
				
			||||
 | 
					     <property name="echoMode"> | 
				
			||||
 | 
					      <enum>QLineEdit::Password</enum> | 
				
			||||
 | 
					     </property> | 
				
			||||
 | 
					     <property name="placeholderText"> | 
				
			||||
 | 
					      <string>Optional access secret</string> | 
				
			||||
 | 
					     </property> | 
				
			||||
 | 
					    </widget> | 
				
			||||
 | 
					   </item> | 
				
			||||
 | 
					   <item row="2" column="0"> | 
				
			||||
 | 
					    <widget class="QLabel" name="keepAliveTimeoutLabel"> | 
				
			||||
 | 
					     <property name="text"> | 
				
			||||
 | 
					      <string>Keep-&Alive Timeout:</string> | 
				
			||||
 | 
					     </property> | 
				
			||||
 | 
					     <property name="buddy"> | 
				
			||||
 | 
					      <cstring>keepAliveTimeoutSpinBox</cstring> | 
				
			||||
 | 
					     </property> | 
				
			||||
 | 
					    </widget> | 
				
			||||
 | 
					   </item> | 
				
			||||
 | 
					   <item row="2" column="1"> | 
				
			||||
 | 
					    <widget class="QSpinBox" name="keepAliveTimeoutSpinBox"> | 
				
			||||
 | 
					     <property name="buttonSymbols"> | 
				
			||||
 | 
					      <enum>QAbstractSpinBox::PlusMinus</enum> | 
				
			||||
 | 
					     </property> | 
				
			||||
 | 
					     <property name="accelerated"> | 
				
			||||
 | 
					      <bool>true</bool> | 
				
			||||
 | 
					     </property> | 
				
			||||
 | 
					     <property name="correctionMode"> | 
				
			||||
 | 
					      <enum>QAbstractSpinBox::CorrectToNearestValue</enum> | 
				
			||||
 | 
					     </property> | 
				
			||||
 | 
					     <property name="showGroupSeparator" stdset="0"> | 
				
			||||
 | 
					      <bool>true</bool> | 
				
			||||
 | 
					     </property> | 
				
			||||
 | 
					     <property name="suffix"> | 
				
			||||
 | 
					      <string> min</string> | 
				
			||||
 | 
					     </property> | 
				
			||||
 | 
					     <property name="minimum"> | 
				
			||||
 | 
					      <number>1</number> | 
				
			||||
 | 
					     </property> | 
				
			||||
 | 
					     <property name="maximum"> | 
				
			||||
 | 
					      <number>1440</number> | 
				
			||||
 | 
					     </property> | 
				
			||||
 | 
					    </widget> | 
				
			||||
 | 
					   </item> | 
				
			||||
 | 
					   <item row="3" column="0"> | 
				
			||||
 | 
					    <widget class="QLabel" name="keepDataLabel"> | 
				
			||||
 | 
					     <property name="text"> | 
				
			||||
 | 
					      <string>&Keep data:</string> | 
				
			||||
 | 
					     </property> | 
				
			||||
 | 
					     <property name="buddy"> | 
				
			||||
 | 
					      <cstring>keepDataCheckBox</cstring> | 
				
			||||
 | 
					     </property> | 
				
			||||
 | 
					    </widget> | 
				
			||||
 | 
					   </item> | 
				
			||||
 | 
					   <item row="3" column="1"> | 
				
			||||
 | 
					    <widget class="QCheckBox" name="keepDataCheckBox"> | 
				
			||||
 | 
					     <property name="checked"> | 
				
			||||
 | 
					      <bool>true</bool> | 
				
			||||
 | 
					     </property> | 
				
			||||
 | 
					    </widget> | 
				
			||||
 | 
					   </item> | 
				
			||||
 | 
					   <item row="5" column="0" colspan="2"> | 
				
			||||
 | 
					    <widget class="QTreeView" name="treeView"> | 
				
			||||
 | 
					     <property name="contextMenuPolicy"> | 
				
			||||
 | 
					      <enum>Qt::ActionsContextMenu</enum> | 
				
			||||
 | 
					     </property> | 
				
			||||
 | 
					     <property name="alternatingRowColors"> | 
				
			||||
 | 
					      <bool>true</bool> | 
				
			||||
 | 
					     </property> | 
				
			||||
 | 
					     <property name="rootIsDecorated"> | 
				
			||||
 | 
					      <bool>false</bool> | 
				
			||||
 | 
					     </property> | 
				
			||||
 | 
					     <property name="itemsExpandable"> | 
				
			||||
 | 
					      <bool>false</bool> | 
				
			||||
 | 
					     </property> | 
				
			||||
 | 
					     <property name="sortingEnabled"> | 
				
			||||
 | 
					      <bool>true</bool> | 
				
			||||
 | 
					     </property> | 
				
			||||
 | 
					     <property name="animated"> | 
				
			||||
 | 
					      <bool>true</bool> | 
				
			||||
 | 
					     </property> | 
				
			||||
 | 
					     <property name="expandsOnDoubleClick"> | 
				
			||||
 | 
					      <bool>false</bool> | 
				
			||||
 | 
					     </property> | 
				
			||||
 | 
					    </widget> | 
				
			||||
 | 
					   </item> | 
				
			||||
 | 
					   <item row="4" column="0" colspan="2"> | 
				
			||||
 | 
					    <widget class="QLabel" name="extraHeadersLabel"> | 
				
			||||
 | 
					     <property name="text"> | 
				
			||||
 | 
					      <string>Extra &Headers:</string> | 
				
			||||
 | 
					     </property> | 
				
			||||
 | 
					     <property name="buddy"> | 
				
			||||
 | 
					      <cstring>treeView</cstring> | 
				
			||||
 | 
					     </property> | 
				
			||||
 | 
					    </widget> | 
				
			||||
 | 
					   </item> | 
				
			||||
 | 
					   <item row="6" column="0" colspan="2"> | 
				
			||||
 | 
					    <layout class="QHBoxLayout" name="horizontalLayout" stretch="0,0,0,0,0"> | 
				
			||||
 | 
					     <item> | 
				
			||||
 | 
					      <widget class="QLineEdit" name="keyEdit"> | 
				
			||||
 | 
					       <property name="placeholderText"> | 
				
			||||
 | 
					        <string>Header Key</string> | 
				
			||||
 | 
					       </property> | 
				
			||||
 | 
					      </widget> | 
				
			||||
 | 
					     </item> | 
				
			||||
 | 
					     <item> | 
				
			||||
 | 
					      <widget class="QLineEdit" name="valueEdit"> | 
				
			||||
 | 
					       <property name="placeholderText"> | 
				
			||||
 | 
					        <string>Header Value</string> | 
				
			||||
 | 
					       </property> | 
				
			||||
 | 
					      </widget> | 
				
			||||
 | 
					     </item> | 
				
			||||
 | 
					     <item> | 
				
			||||
 | 
					      <widget class="QToolButton" name="addHeaderButton"> | 
				
			||||
 | 
					       <property name="toolButtonStyle"> | 
				
			||||
 | 
					        <enum>Qt::ToolButtonFollowStyle</enum> | 
				
			||||
 | 
					       </property> | 
				
			||||
 | 
					      </widget> | 
				
			||||
 | 
					     </item> | 
				
			||||
 | 
					     <item> | 
				
			||||
 | 
					      <spacer name="horizontalSpacer"> | 
				
			||||
 | 
					       <property name="orientation"> | 
				
			||||
 | 
					        <enum>Qt::Horizontal</enum> | 
				
			||||
 | 
					       </property> | 
				
			||||
 | 
					       <property name="sizeHint" stdset="0"> | 
				
			||||
 | 
					        <size> | 
				
			||||
 | 
					         <width>40</width> | 
				
			||||
 | 
					         <height>20</height> | 
				
			||||
 | 
					        </size> | 
				
			||||
 | 
					       </property> | 
				
			||||
 | 
					      </spacer> | 
				
			||||
 | 
					     </item> | 
				
			||||
 | 
					     <item> | 
				
			||||
 | 
					      <widget class="QToolButton" name="removeHeaderButton"> | 
				
			||||
 | 
					       <property name="toolButtonStyle"> | 
				
			||||
 | 
					        <enum>Qt::ToolButtonFollowStyle</enum> | 
				
			||||
 | 
					       </property> | 
				
			||||
 | 
					      </widget> | 
				
			||||
 | 
					     </item> | 
				
			||||
 | 
					    </layout> | 
				
			||||
 | 
					   </item> | 
				
			||||
 | 
					   <item row="7" column="0" colspan="2"> | 
				
			||||
 | 
					    <widget class="QDialogButtonBox" name="buttonBox"> | 
				
			||||
 | 
					     <property name="orientation"> | 
				
			||||
 | 
					      <enum>Qt::Horizontal</enum> | 
				
			||||
 | 
					     </property> | 
				
			||||
 | 
					     <property name="standardButtons"> | 
				
			||||
 | 
					      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> | 
				
			||||
 | 
					     </property> | 
				
			||||
 | 
					    </widget> | 
				
			||||
 | 
					   </item> | 
				
			||||
 | 
					  </layout> | 
				
			||||
 | 
					  <action name="actionA_dd_Header"> | 
				
			||||
 | 
					   <property name="icon"> | 
				
			||||
 | 
					    <iconset theme="list-add"> | 
				
			||||
 | 
					     <normaloff>.</normaloff>.</iconset> | 
				
			||||
 | 
					   </property> | 
				
			||||
 | 
					   <property name="text"> | 
				
			||||
 | 
					    <string>A&dd Header</string> | 
				
			||||
 | 
					   </property> | 
				
			||||
 | 
					   <property name="shortcut"> | 
				
			||||
 | 
					    <string>Ctrl+Ins</string> | 
				
			||||
 | 
					   </property> | 
				
			||||
 | 
					  </action> | 
				
			||||
 | 
					  <action name="action_Remove_Header"> | 
				
			||||
 | 
					   <property name="icon"> | 
				
			||||
 | 
					    <iconset theme="list-remove"> | 
				
			||||
 | 
					     <normaloff>.</normaloff>.</iconset> | 
				
			||||
 | 
					   </property> | 
				
			||||
 | 
					   <property name="text"> | 
				
			||||
 | 
					    <string>&Remove Selected Header</string> | 
				
			||||
 | 
					   </property> | 
				
			||||
 | 
					   <property name="shortcut"> | 
				
			||||
 | 
					    <string>Del</string> | 
				
			||||
 | 
					   </property> | 
				
			||||
 | 
					  </action> | 
				
			||||
 | 
					 </widget> | 
				
			||||
 | 
					 <resources/> | 
				
			||||
 | 
					 <connections> | 
				
			||||
 | 
					  <connection> | 
				
			||||
 | 
					   <sender>buttonBox</sender> | 
				
			||||
 | 
					   <signal>accepted()</signal> | 
				
			||||
 | 
					   <receiver>ChangeRemoteDialog</receiver> | 
				
			||||
 | 
					   <slot>accept()</slot> | 
				
			||||
 | 
					   <hints> | 
				
			||||
 | 
					    <hint type="sourcelabel"> | 
				
			||||
 | 
					     <x>227</x> | 
				
			||||
 | 
					     <y>279</y> | 
				
			||||
 | 
					    </hint> | 
				
			||||
 | 
					    <hint type="destinationlabel"> | 
				
			||||
 | 
					     <x>157</x> | 
				
			||||
 | 
					     <y>274</y> | 
				
			||||
 | 
					    </hint> | 
				
			||||
 | 
					   </hints> | 
				
			||||
 | 
					  </connection> | 
				
			||||
 | 
					  <connection> | 
				
			||||
 | 
					   <sender>buttonBox</sender> | 
				
			||||
 | 
					   <signal>rejected()</signal> | 
				
			||||
 | 
					   <receiver>ChangeRemoteDialog</receiver> | 
				
			||||
 | 
					   <slot>reject()</slot> | 
				
			||||
 | 
					   <hints> | 
				
			||||
 | 
					    <hint type="sourcelabel"> | 
				
			||||
 | 
					     <x>295</x> | 
				
			||||
 | 
					     <y>285</y> | 
				
			||||
 | 
					    </hint> | 
				
			||||
 | 
					    <hint type="destinationlabel"> | 
				
			||||
 | 
					     <x>286</x> | 
				
			||||
 | 
					     <y>274</y> | 
				
			||||
 | 
					    </hint> | 
				
			||||
 | 
					   </hints> | 
				
			||||
 | 
					  </connection> | 
				
			||||
 | 
					 </connections> | 
				
			||||
 | 
					</ui> | 
				
			||||
@ -0,0 +1,40 @@ | 
				
			|||||
 | 
					#ifndef QTMVVM_CHANGEREMOTEDIALOG_P_H | 
				
			||||
 | 
					#define QTMVVM_CHANGEREMOTEDIALOG_P_H | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					#include <QtCore/QScopedPointer> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					#include <QtWidgets/QDialog> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					#include <QtMvvmDataSyncCore/private/changeremoteviewmodel_p.h> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					#include "qtmvvmdatasyncwidgets_global.h" | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					namespace Ui { | 
				
			||||
 | 
					class ChangeRemoteDialog; | 
				
			||||
 | 
					} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					namespace QtMvvm { | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					class Q_MVVMDATASYNCWIDGETS_EXPORT ChangeRemoteDialog : public QDialog | 
				
			||||
 | 
					{ | 
				
			||||
 | 
						Q_OBJECT | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					public: | 
				
			||||
 | 
						Q_INVOKABLE explicit ChangeRemoteDialog(QtMvvm::ViewModel *viewModel, QWidget *parent = nullptr); | 
				
			||||
 | 
						~ChangeRemoteDialog(); | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					public Q_SLOTS: | 
				
			||||
 | 
						void accept() override; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					private Q_SLOTS: | 
				
			||||
 | 
						void addHeader(); | 
				
			||||
 | 
						void removeHeader(); | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					private: | 
				
			||||
 | 
						ChangeRemoteViewModel *_viewModel; | 
				
			||||
 | 
						QScopedPointer<Ui::ChangeRemoteDialog> ui; | 
				
			||||
 | 
					}; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					#endif // QTMVVM_CHANGEREMOTEDIALOG_P_H
 | 
				
			||||
					Loading…
					
					
				
		Reference in new issue