9 changed files with 297 additions and 6 deletions
			
			
		@ -0,0 +1,55 @@ | 
				
			|||||
 | 
					#include "identityeditviewmodel_p.h" | 
				
			||||
 | 
					#include "datasyncviewmodel.h" | 
				
			||||
 | 
					using namespace QtMvvm; | 
				
			||||
 | 
					using namespace QtDataSync; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					IdentityEditViewModel::IdentityEditViewModel(QObject *parent) : | 
				
			||||
 | 
						ViewModel(parent), | 
				
			||||
 | 
						_manager(nullptr) | 
				
			||||
 | 
					{} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					QVariantHash IdentityEditViewModel::params(AccountManager *manager) | 
				
			||||
 | 
					{ | 
				
			||||
 | 
						return { | 
				
			||||
 | 
							{QStringLiteral("manager"), QVariant::fromValue(manager)} | 
				
			||||
 | 
						}; | 
				
			||||
 | 
					} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					QString IdentityEditViewModel::name() const | 
				
			||||
 | 
					{ | 
				
			||||
 | 
						return _nameBuffer; | 
				
			||||
 | 
					} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					QString IdentityEditViewModel::fingerPrint() const | 
				
			||||
 | 
					{ | 
				
			||||
 | 
						return _manager ? | 
				
			||||
 | 
									DataSyncViewModel::formatFingerPrint(_manager->deviceFingerprint()) : | 
				
			||||
 | 
									QString(); | 
				
			||||
 | 
					} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					void IdentityEditViewModel::save() | 
				
			||||
 | 
					{ | 
				
			||||
 | 
						if(_manager) | 
				
			||||
 | 
							_manager->setDeviceName(_nameBuffer); | 
				
			||||
 | 
					} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					void IdentityEditViewModel::setName(const QString &name) | 
				
			||||
 | 
					{ | 
				
			||||
 | 
						if (_nameBuffer == name) | 
				
			||||
 | 
							return; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
						_nameBuffer = name; | 
				
			||||
 | 
						emit nameChanged(_nameBuffer); | 
				
			||||
 | 
					} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					void IdentityEditViewModel::onInit(const QVariantHash ¶ms) | 
				
			||||
 | 
					{ | 
				
			||||
 | 
						_manager = params.value(QStringLiteral("manager")).value<AccountManager*>(); | 
				
			||||
 | 
					
 | 
				
			||||
 | 
						connect(_manager, &AccountManager::deviceFingerprintChanged, | 
				
			||||
 | 
								this, &IdentityEditViewModel::fingerPrintChanged); | 
				
			||||
 | 
						connect(_manager, &AccountManager::deviceNameChanged, | 
				
			||||
 | 
								this, &IdentityEditViewModel::setName); | 
				
			||||
 | 
						setName(_manager->deviceName()); | 
				
			||||
 | 
						emit fingerPrintChanged(); | 
				
			||||
 | 
					} | 
				
			||||
@ -0,0 +1,46 @@ | 
				
			|||||
 | 
					#ifndef QTMVVM_IDENTITYEDITVIEWMODEL_P_H | 
				
			||||
 | 
					#define QTMVVM_IDENTITYEDITVIEWMODEL_P_H | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					#include <QtMvvmCore/ViewModel> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					#include <QtDataSync/AccountManager> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					#include "qtmvvmdatasynccore_global.h" | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					namespace QtMvvm { | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					class Q_MVVMDATASYNCCORE_EXPORT IdentityEditViewModel : public ViewModel | 
				
			||||
 | 
					{ | 
				
			||||
 | 
						Q_OBJECT | 
				
			||||
 | 
					
 | 
				
			||||
 | 
						Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged) | 
				
			||||
 | 
						Q_PROPERTY(QString fingerPrint READ fingerPrint NOTIFY fingerPrintChanged) | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					public: | 
				
			||||
 | 
						Q_INVOKABLE explicit IdentityEditViewModel(QObject *parent = nullptr); | 
				
			||||
 | 
					
 | 
				
			||||
 | 
						static QVariantHash params(QtDataSync::AccountManager *manager); | 
				
			||||
 | 
					
 | 
				
			||||
 | 
						QString name() const; | 
				
			||||
 | 
						QString fingerPrint() const; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					public Q_SLOTS: | 
				
			||||
 | 
						void save(); | 
				
			||||
 | 
					
 | 
				
			||||
 | 
						void setName(const QString &name); | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					Q_SIGNALS: | 
				
			||||
 | 
						void nameChanged(const QString &name); | 
				
			||||
 | 
						void fingerPrintChanged(); | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					protected: | 
				
			||||
 | 
						void onInit(const QVariantHash ¶ms) override; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					private: | 
				
			||||
 | 
						QtDataSync::AccountManager *_manager; | 
				
			||||
 | 
						QString _nameBuffer; | 
				
			||||
 | 
					}; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					#endif // QTMVVM_IDENTITYEDITVIEWMODEL_P_H
 | 
				
			||||
@ -0,0 +1,35 @@ | 
				
			|||||
 | 
					#include "identityeditdialog_p.h" | 
				
			||||
 | 
					#include "ui_identityeditdialog.h" | 
				
			||||
 | 
					#include <QtMvvmCore/Binding> | 
				
			||||
 | 
					using namespace QtMvvm; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					IdentityEditDialog::IdentityEditDialog(ViewModel *viewModel, QWidget *parent) : | 
				
			||||
 | 
						QDialog(parent), | 
				
			||||
 | 
						_viewModel(static_cast<IdentityEditViewModel*>(viewModel)), | 
				
			||||
 | 
						ui(new Ui::IdentityEditDialog) | 
				
			||||
 | 
					{ | 
				
			||||
 | 
						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); | 
				
			||||
 | 
						} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
						bind(_viewModel, "name", | 
				
			||||
 | 
							 ui->deviceNameLineEdit, "text", | 
				
			||||
 | 
							 Binding::TwoWay, | 
				
			||||
 | 
							 nullptr, "editingFinished()"); | 
				
			||||
 | 
						bind(_viewModel, "fingerPrint", | 
				
			||||
 | 
							 ui->fingerPrintDisplayLabel, "text", | 
				
			||||
 | 
							 Binding::OneWayToView); | 
				
			||||
 | 
					} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					IdentityEditDialog::~IdentityEditDialog() {} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					void IdentityEditDialog::accept() | 
				
			||||
 | 
					{ | 
				
			||||
 | 
						_viewModel->save(); | 
				
			||||
 | 
						QDialog::accept(); | 
				
			||||
 | 
					} | 
				
			||||
@ -0,0 +1,109 @@ | 
				
			|||||
 | 
					<?xml version="1.0" encoding="UTF-8"?> | 
				
			||||
 | 
					<ui version="4.0"> | 
				
			||||
 | 
					 <class>IdentityEditDialog</class> | 
				
			||||
 | 
					 <widget class="QDialog" name="IdentityEditDialog"> | 
				
			||||
 | 
					  <property name="geometry"> | 
				
			||||
 | 
					   <rect> | 
				
			||||
 | 
					    <x>0</x> | 
				
			||||
 | 
					    <y>0</y> | 
				
			||||
 | 
					    <width>397</width> | 
				
			||||
 | 
					    <height>172</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="QGridLayout" name="gridLayout" rowstretch="0,0,1,0"> | 
				
			||||
 | 
					   <item row="0" column="0"> | 
				
			||||
 | 
					    <widget class="QLabel" name="deviceNameLabel"> | 
				
			||||
 | 
					     <property name="text"> | 
				
			||||
 | 
					      <string>Device &Name:</string> | 
				
			||||
 | 
					     </property> | 
				
			||||
 | 
					     <property name="buddy"> | 
				
			||||
 | 
					      <cstring>deviceNameLineEdit</cstring> | 
				
			||||
 | 
					     </property> | 
				
			||||
 | 
					    </widget> | 
				
			||||
 | 
					   </item> | 
				
			||||
 | 
					   <item row="0" column="1"> | 
				
			||||
 | 
					    <widget class="QLineEdit" name="deviceNameLineEdit"/> | 
				
			||||
 | 
					   </item> | 
				
			||||
 | 
					   <item row="3" column="0" colspan="2"> | 
				
			||||
 | 
					    <widget class="QDialogButtonBox" name="buttonBox"> | 
				
			||||
 | 
					     <property name="orientation"> | 
				
			||||
 | 
					      <enum>Qt::Horizontal</enum> | 
				
			||||
 | 
					     </property> | 
				
			||||
 | 
					     <property name="standardButtons"> | 
				
			||||
 | 
					      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Save</set> | 
				
			||||
 | 
					     </property> | 
				
			||||
 | 
					    </widget> | 
				
			||||
 | 
					   </item> | 
				
			||||
 | 
					   <item row="2" column="0" colspan="2"> | 
				
			||||
 | 
					    <widget class="QLabel" name="fingerPrintDisplayLabel"> | 
				
			||||
 | 
					     <property name="text"> | 
				
			||||
 | 
					      <string notr="true"><fingerprint></string> | 
				
			||||
 | 
					     </property> | 
				
			||||
 | 
					     <property name="textFormat"> | 
				
			||||
 | 
					      <enum>Qt::PlainText</enum> | 
				
			||||
 | 
					     </property> | 
				
			||||
 | 
					     <property name="alignment"> | 
				
			||||
 | 
					      <set>Qt::AlignCenter</set> | 
				
			||||
 | 
					     </property> | 
				
			||||
 | 
					     <property name="wordWrap"> | 
				
			||||
 | 
					      <bool>true</bool> | 
				
			||||
 | 
					     </property> | 
				
			||||
 | 
					     <property name="textInteractionFlags"> | 
				
			||||
 | 
					      <set>Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set> | 
				
			||||
 | 
					     </property> | 
				
			||||
 | 
					    </widget> | 
				
			||||
 | 
					   </item> | 
				
			||||
 | 
					   <item row="1" column="0" colspan="2"> | 
				
			||||
 | 
					    <widget class="QLabel" name="fingerprintLabel"> | 
				
			||||
 | 
					     <property name="text"> | 
				
			||||
 | 
					      <string>Device Fingerprint:</string> | 
				
			||||
 | 
					     </property> | 
				
			||||
 | 
					    </widget> | 
				
			||||
 | 
					   </item> | 
				
			||||
 | 
					  </layout> | 
				
			||||
 | 
					 </widget> | 
				
			||||
 | 
					 <resources/> | 
				
			||||
 | 
					 <connections> | 
				
			||||
 | 
					  <connection> | 
				
			||||
 | 
					   <sender>buttonBox</sender> | 
				
			||||
 | 
					   <signal>accepted()</signal> | 
				
			||||
 | 
					   <receiver>IdentityEditDialog</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>IdentityEditDialog</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,36 @@ | 
				
			|||||
 | 
					#ifndef QTMVVM_IDENTITYEDITDIALOG_P_H | 
				
			||||
 | 
					#define QTMVVM_IDENTITYEDITDIALOG_P_H | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					#include <QtCore/QScopedPointer> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					#include <QtWidgets/QDialog> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					#include <QtMvvmDataSyncCore/private/identityeditviewmodel_p.h> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					#include "qtmvvmdatasyncwidgets_global.h" | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					namespace Ui { | 
				
			||||
 | 
					class IdentityEditDialog; | 
				
			||||
 | 
					} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					namespace QtMvvm { | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					class Q_MVVMDATASYNCWIDGETS_EXPORT IdentityEditDialog : public QDialog | 
				
			||||
 | 
					{ | 
				
			||||
 | 
						Q_OBJECT | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					public: | 
				
			||||
 | 
						Q_INVOKABLE explicit IdentityEditDialog(QtMvvm::ViewModel *viewModel, QWidget *parent = nullptr); | 
				
			||||
 | 
						~IdentityEditDialog(); | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					public Q_SLOTS: | 
				
			||||
 | 
						void accept() override; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					private: | 
				
			||||
 | 
						IdentityEditViewModel *_viewModel; | 
				
			||||
 | 
						QScopedPointer<Ui::IdentityEditDialog> ui; | 
				
			||||
 | 
					}; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					#endif // QTMVVM_IDENTITYEDITDIALOG_P_H
 | 
				
			||||
					Loading…
					
					
				
		Reference in new issue