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