Commit 8c2697a7 authored by Klas Lindfors's avatar Klas Lindfors

Imported Upstream version 3.1.2

parent 1b447198
2012-11-07 Klas Lindfors <klas@yubico.com>
* NEWS: release 3.1.2
2012-11-06 Klas Lindfors <klas@yubico.com>
* src/ui/settingpage.ui: put ... to show that update leads to a new
page
2012-10-31 Klas Lindfors <klas@yubico.com>
* src/ui/settingpage.ui: some wording on versions and box sizes.
2012-10-31 Klas Lindfors <klas@yubico.com>
* src/ui/settingpage.cpp, src/ui/settingpage.ui: remove save button
and write out that we autosave
2012-10-26 Klas Lindfors <klas@yubico.com>
* NEWS: news for 3.1.2
2012-10-26 Klas Lindfors <klas@yubico.com>
* installer/win-nsis/ykpers.nsi: create all start menu items in the
same place and make sure they're removed when uninstalled
2012-10-26 Klas Lindfors <klas@yubico.com>
* installer/win-nsis/ykpers.nsi: set a default startmenu folder
under Yubico
2012-10-23 Klas Lindfors <klas@yubico.com>
* src/ui/otppage.cpp: set new parameters on key insertion, not
removal
2012-10-23 Klas Lindfors <klas@yubico.com>
* src/ui/mainwindow.cpp: remove the movie field if it's set before
setting a new one
2012-10-23 Klas Lindfors <klas@yubico.com>
* src/ui/chalresppage.cpp, src/ui/chalresppage.h,
src/ui/oathpage.cpp, src/ui/oathpage.h, src/ui/otppage.cpp,
src/ui/otppage.h, src/ui/staticpage.cpp, src/ui/staticpage.h: keep
track of the keys state when writing multiple keys otherwise we'll trigger on the keyFound event after it's written
2012-10-19 Klas Lindfors <klas@yubico.com>
* src/ui/toolpage.cpp, src/ui/toolpage.h, src/yubikeywriter.cpp: add
message on successful config deletion
2012-10-19 Klas Lindfors <klas@yubico.com>
* src/ui/toolpage.cpp, src/ui/toolpage.h, src/ui/toolpage.ui,
src/yubikeywriter.cpp, src/yubikeywriter.h: add access code entry
for ndef programming
2012-10-19 Klas Lindfors <klas@yubico.com>
* src/ui/toolpage.cpp, src/ui/toolpage.h, src/ui/toolpage.ui: add
access code entry for delete
2012-10-18 Klas Lindfors <klas@yubico.com>
* src/ui/toolpage.cpp: call deleteConfig()
2012-10-18 Klas Lindfors <klas@yubico.com>
* src/yubikeywriter.cpp, src/yubikeywriter.h: deleteConfig() slot
2012-10-18 Klas Lindfors <klas@yubico.com>
* src/yubikeyfinder.cpp: clear the finder object when starting, so
it re-reads key
2012-10-18 Klas Lindfors <klas@yubico.com>
* src/yubikeywriter.cpp, src/yubikeywriter.h: break out accesscode
formatting into it's own function
2012-10-18 Klas Lindfors <klas@yubico.com>
* src/ui/toolpage.cpp, src/ui/toolpage.h, src/ui/toolpage.ui: start
with ui for deleting configuration
2012-10-18 Klas Lindfors <klas@yubico.com>
* src/ui/mainwindow.ui: make the serial numbers selectable and
copyable
2012-10-17 Klas Lindfors <klas@yubico.com>
* NEWS, YKPersonalization.pro, src/version.h: bump versions after
release
2012-10-17 Klas Lindfors <klas@yubico.com>
* NEWS: add NEWS and release date for 3.1.1
......
yubikey-personalization-gui NEWS -- History of user-visible changes. -*- outline -*-
* Version 3.1.2 (released 2012-11-07)
** Support for deleting YubiKey configurations.
** Re-read key after writing it, so we can see it changed.
** Add Access-code entry for NDEF programming.
** Fix bug which wrote same key multiple times in multi-write mode.
** Small windows installer fixes.
* Version 3.1.1 (released 2012-10-17)
** For native mac builds, sign and use pkgbuilder to create pkg installer.
......
#
# global definitions
#
VERSION = "3.1.1"
VERSION = "3.1.2"
APP_NAME = $$quote(YubiKey Personalization Tool)
#
......
......@@ -41,7 +41,8 @@ FunctionEnd
!insertmacro MUI_PAGE_LICENSE "../../COPYING"
!insertmacro MUI_PAGE_DIRECTORY
;Start Menu Folder Page Configuration
!define MUI_STARTMENUPAGE_REGISTRY_ROOT "HKCU"
!define MUI_STARTMENUPAGE_DEFAULTFOLDER "Yubico\YubiKey Personalization Tool"
!define MUI_STARTMENUPAGE_REGISTRY_ROOT "HKCU"
!define MUI_STARTMENUPAGE_REGISTRY_KEY "Software\Yubico\YubiKey Personalization Tool"
!define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "Start Menu Folder"
!insertmacro MUI_PAGE_STARTMENU Application $STARTMENU_FOLDER
......@@ -93,9 +94,10 @@ Section
!insertmacro MUI_STARTMENU_WRITE_BEGIN Application
;Create shortcuts
CreateDirectory "$SMPROGRAMS\$STARTMENU_FOLDER"
CreateShortCut "$SMPROGRAMS\$STARTMENU_FOLDER\YubiKey Personalization Tool.lnk" "$INSTDIR\yubikey-personalization-gui.exe" "" "$INSTDIR\yubikey-personalization-gui.exe" 0
CreateShortCut "$SMPROGRAMS\$STARTMENU_FOLDER\Uninstall.lnk" "$INSTDIR\uninstall.exe" "" "$INSTDIR\uninstall.exe" 1
SetShellVarContext all
SetOutPath "$SMPROGRAMS\$STARTMENU_FOLDER"
CreateShortCut "YubiKey Personalization Tool.lnk" "$INSTDIR\yubikey-personalization-gui.exe" "" "$INSTDIR\yubikey-personalization-gui.exe" 0
CreateShortCut "Uninstall.lnk" "$INSTDIR\uninstall.exe" "" "$INSTDIR\uninstall.exe" 1
WriteINIStr "$SMPROGRAMS\$STARTMENU_FOLDER\Yubico Web page.url" \
"InternetShortcut" "URL" "http://www.yubico.com/"
!insertmacro MUI_STARTMENU_WRITE_END
......@@ -128,9 +130,11 @@ Section "Uninstall"
; Remove shortcuts, if any
!insertmacro MUI_STARTMENU_GETFOLDER Application $MUI_TEMP
SetShellVarContext all
Delete "$SMPROGRAMS\$MUI_TEMP\Uninstall.lnk"
Delete "$SMPROGRAMS\$MUI_TEMP\Yubico Web page.url"
Delete "$SMPROGRAMS\$MUI_TEMP\YubiKey Personalization Tool.lnk"
;Delete empty start menu parent diretories
StrCpy $MUI_TEMP "$SMPROGRAMS\$MUI_TEMP"
......
......@@ -40,6 +40,7 @@ ChalRespPage::ChalRespPage(QWidget *parent) :
ui->setupUi(this);
m_ykConfig = 0;
m_keyPresent = false;
clearState();
//Connect pages
......@@ -197,7 +198,7 @@ void ChalRespPage::keyFound(bool found, bool* featuresMatrix) {
if(!featuresMatrix[YubiKeyFinder::Feature_ChallengeResponse]) {
this->setEnabled(false);
}
} else if(m_state >= State_Programming_Multiple) {
} else if(m_state >= State_Programming_Multiple && m_keyPresent == false) {
if(this->currentIndex() == Page_Quick) {
if(m_state == State_Programming_Multiple) {
ui->quickWriteConfigBtn->setEnabled(true);
......@@ -213,10 +214,12 @@ void ChalRespPage::keyFound(bool found, bool* featuresMatrix) {
}
}
}
m_keyPresent = true;
} else {
ui->quickWriteConfigBtn->setEnabled(false);
ui->advWriteConfigBtn->setEnabled(false);
ui->advHmacFixedInputRadio->setEnabled(true);
m_keyPresent = false;
if(m_state == State_Initial) {
ui->quickConfigSlot2Radio->setEnabled(true);
......
......@@ -64,6 +64,8 @@ private:
unsigned int m_keysProgrammedCtr;
bool m_ready;
bool m_keyPresent;
private slots:
void connectPages();
void connectHelpButtons();
......
......@@ -275,6 +275,11 @@ void MainWindow::keyFound(bool found, bool* featuresMatrix) {
resetDeviceInfo();
if(ui->deviceImage->movie()) {
delete(ui->deviceImage->movie());
ui->deviceImage->setMovie(NULL);
}
if(found) {
YubiKeyFinder *finder = YubiKeyFinder::getInstance();
int touchLevel = finder->touchLevel();
......@@ -429,10 +434,6 @@ void MainWindow::keyFound(bool found, bool* featuresMatrix) {
} else {
ui->programLbl->clear();
ui->deviceImage->setHidden(true);
if(ui->deviceImage->movie()) {
delete(ui->deviceImage->movie());
ui->deviceImage->setMovie(NULL);
}
if(ui->deviceImage->pixmap()) {
ui->deviceImage->setPixmap(NULL);
}
......
......@@ -612,6 +612,9 @@ border-radius: 2px;</string>
<property name="text">
<string/>
</property>
<property name="textInteractionFlags">
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse</set>
</property>
</widget>
<widget class="QLabel" name="serialNoDecLbl">
<property name="geometry">
......@@ -628,6 +631,9 @@ border-radius: 2px;</string>
<property name="text">
<string/>
</property>
<property name="textInteractionFlags">
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse</set>
</property>
</widget>
<widget class="QPushButton" name="serialNoDecCopyBtn">
<property name="geometry">
......@@ -691,6 +697,9 @@ border-radius: 2px;</string>
<property name="text">
<string/>
</property>
<property name="textInteractionFlags">
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse</set>
</property>
</widget>
<widget class="QPushButton" name="serialNoModhexCopyBtn">
<property name="geometry">
......
......@@ -50,6 +50,7 @@ OathPage::OathPage(QWidget *parent) :
memset(&m_pubId, 0, sizeof(m_pubId));
m_pubIdFormat = 0;
m_ykConfig = 0;
m_keyPresent = false;
clearState();
//Connect pages
......@@ -212,18 +213,22 @@ void OathPage::keyFound(bool found, bool* featuresMatrix) {
resetQuickPrefix();
}
} else if(this->currentIndex() == Page_Advanced &&
m_state >= State_Programming_Multiple) {
m_state >= State_Programming_Multiple &&
m_keyPresent == false) {
if(m_state == State_Programming_Multiple) {
ui->advWriteConfigBtn->setEnabled(true);
} else {
writeAdvConfig();
}
}
m_keyPresent = true;
} else {
ui->quickWriteConfigBtn->setEnabled(false);
ui->advWriteConfigBtn->setEnabled(false);
m_keyPresent = false;
if(m_state == State_Initial) {
ui->quickConfigSlot2Radio->setEnabled(true);
ui->advConfigSlot2Radio->setEnabled(true);
......
......@@ -70,6 +70,8 @@ private:
bool m_ready;
bool m_serialNumberSupported;
bool m_keyPresent;
public slots:
void loadSettings();
......
......@@ -42,6 +42,7 @@ OtpPage::OtpPage(QWidget *parent) :
m_customerPrefix = -1;
m_ykConfig = 0;
m_keyPresent = false;
clearState();
//Connect pages
......@@ -190,25 +191,27 @@ void OtpPage::keyFound(bool found, bool* featuresMatrix) {
ui->advConfigSlot2Radio->setEnabled(true);
}
} else if(this->currentIndex() == Page_Advanced &&
m_state >= State_Programming_Multiple) {
m_state >= State_Programming_Multiple &&
m_keyPresent == false) {
if(m_keysProgrammedCtr > 0 && !m_ready) {
changeAdvConfigParams();
}
if(m_state == State_Programming_Multiple) {
ui->advWriteConfigBtn->setEnabled(true);
} else {
writeAdvConfig();
}
}
m_keyPresent = true;
} else {
ui->quickWriteConfigBtn->setEnabled(false);
ui->advWriteConfigBtn->setEnabled(false);
m_keyPresent = false;
if(m_state == State_Initial) {
ui->quickConfigSlot2Radio->setEnabled(true);
ui->advConfigSlot2Radio->setEnabled(true);
} else if(this->currentIndex() == Page_Advanced &&
m_state >= State_Programming_Multiple) {
if(m_keysProgrammedCtr > 0 && !m_ready) {
changeAdvConfigParams();
}
}
}
}
......
......@@ -68,6 +68,9 @@ private:
unsigned int m_keysProgrammedCtr;
bool m_ready;
// remember the last state of the key.
bool m_keyPresent;
QString m_uploadUrl;
public slots:
......
......@@ -58,8 +58,6 @@ SettingPage::SettingPage(QWidget *parent) :
setCurrentIndex(Page_Base);
//Connect other signals and slots
connect(ui->saveBtn, SIGNAL(clicked()),
this, SLOT(save()));
connect(ui->restoreBtn, SIGNAL(clicked()),
this, SLOT(restore()));
......
......@@ -77,9 +77,9 @@ color: rgb(140, 192, 65);</string>
<property name="geometry">
<rect>
<x>10</x>
<y>40</y>
<y>35</y>
<width>711</width>
<height>55</height>
<height>60</height>
</rect>
</property>
<property name="styleSheet">
......@@ -397,38 +397,12 @@ font-weight: bold;</string>
<property name="title">
<string>Actions</string>
</property>
<widget class="QPushButton" name="saveBtn">
<property name="geometry">
<rect>
<x>10</x>
<y>45</y>
<width>85</width>
<height>25</height>
</rect>
</property>
<property name="styleSheet">
<string notr="true">font: 12px;
font-weight: bold;</string>
</property>
<property name="text">
<string>Save</string>
</property>
<property name="autoExclusive">
<bool>false</bool>
</property>
<property name="default">
<bool>false</bool>
</property>
<property name="flat">
<bool>false</bool>
</property>
</widget>
<widget class="QLabel" name="actionsDescLbl">
<property name="geometry">
<rect>
<x>10</x>
<y>25</y>
<width>691</width>
<width>200</width>
<height>16</height>
</rect>
</property>
......@@ -438,7 +412,7 @@ color: rgb(118, 116, 108)
</string>
</property>
<property name="text">
<string>Press Save to save your settings</string>
<string>Settings are saved automatically</string>
</property>
</widget>
<widget class="QPushButton" name="restoreBtn">
......@@ -447,7 +421,7 @@ color: rgb(118, 116, 108)
</property>
<property name="geometry">
<rect>
<x>110</x>
<x>10</x>
<y>45</y>
<width>171</width>
<height>25</height>
......@@ -486,7 +460,25 @@ font-weight: bold;</string>
</rect>
</property>
<property name="text">
<string>Update</string>
<string>Update...</string>
</property>
</widget>
<widget class="QLabel" name="updateDescLbl">
<property name="geometry">
<rect>
<x>405</x>
<y>25</y>
<width>250</width>
<height>16</height>
</rect>
</property>
<property name="styleSheet">
<string notr="true">font-weight: normal;
color: rgb(118, 116, 108)
</string>
</property>
<property name="text">
<string>Update is available for YubiKey 2.3 and later</string>
</property>
</widget>
</widget>
......@@ -882,7 +874,7 @@ border-radius: 10px;
</string>
</property>
<property name="title">
<string>Serial # Visibility Settings (YubiKey 2.2)</string>
<string>Serial # Visibility Settings (YubiKey 2.2+)</string>
</property>
<widget class="QCheckBox" name="srBtnVisibleCheck">
<property name="geometry">
......@@ -1066,7 +1058,7 @@ border-radius: 10px;
</string>
</property>
<property name="title">
<string>Update Settings (YubiKey 2.3)</string>
<string>Update Settings (YubiKey 2.3+)</string>
</property>
<widget class="QCheckBox" name="updateCheck">
<property name="geometry">
......@@ -1142,7 +1134,7 @@ border-radius: 10px;
</string>
</property>
<property name="title">
<string>Extended Settings (YubiKey 2.3)</string>
<string>Extended Settings (YubiKey 2.3+)</string>
</property>
<widget class="QCheckBox" name="useNumericKeypadCheck">
<property name="geometry">
......@@ -1677,7 +1669,6 @@ border-radius: 10px;
<tabstop>logOutputCheck</tabstop>
<tabstop>logFileTxt</tabstop>
<tabstop>browseBtn</tabstop>
<tabstop>saveBtn</tabstop>
<tabstop>restoreBtn</tabstop>
<tabstop>outFormatHelpBtn</tabstop>
<tabstop>outSpeedHelpBtn</tabstop>
......
......@@ -42,6 +42,7 @@ StaticPage::StaticPage(QWidget *parent) :
ui->setupUi(this);
m_ykConfig = 0;
m_keyPresent = false;
clearState();
//Connect pages
......@@ -212,7 +213,7 @@ void StaticPage::keyFound(bool found, bool* featuresMatrix) {
if(!featuresMatrix[YubiKeyFinder::Feature_StaticPassword]) {
this->setEnabled(false);
}
} else if(m_state >= State_Programming_Multiple) {
} else if(m_state >= State_Programming_Multiple && m_keyPresent == false) {
if(this->currentIndex() == Page_Quick) {
if(m_state == State_Programming_Multiple) {
ui->quickWriteConfigBtn->setEnabled(true);
......@@ -227,11 +228,14 @@ void StaticPage::keyFound(bool found, bool* featuresMatrix) {
}
}
}
m_keyPresent = true;
} else {
ui->quickBtn->setEnabled(true);
ui->quickWriteConfigBtn->setEnabled(false);
ui->advWriteConfigBtn->setEnabled(false);
m_keyPresent = false;
if(m_state == State_Initial) {
ui->quickConfigSlot2Radio->setEnabled(true);
ui->advConfigSlot2Radio->setEnabled(true);
......
......@@ -65,6 +65,8 @@ private:
unsigned int m_keysProgrammedCtr;
bool m_ready;
bool m_keyPresent;
private slots:
void connectPages();
void connectHelpButtons();
......
......@@ -60,6 +60,9 @@ ToolPage::ToolPage(QWidget *parent) :
connect(YubiKeyFinder::getInstance(), SIGNAL(keyFound(bool, bool*)),
this, SLOT(keyFound(bool, bool*)));
ui->zapAccCodeEdit->setEnabled(false);
ui->ndefAccCodeEdit->setEnabled(false);
}
ToolPage::~ToolPage() {
......@@ -87,6 +90,9 @@ void ToolPage::connectPages() {
connect(ui->ndefBtn, SIGNAL(clicked()), mapper, SLOT(map()));
connect(ui->ndefBackBtn, SIGNAL(clicked()), mapper, SLOT(map()));
connect(ui->zapBtn, SIGNAL(clicked()), mapper, SLOT(map()));
connect(ui->zapBackBtn, SIGNAL(clicked()), mapper, SLOT(map()));
//Set a value for each button
mapper->setMapping(ui->converterBtn, Page_Converter);
mapper->setMapping(ui->converterBackBtn, Page_Base);
......@@ -97,6 +103,9 @@ void ToolPage::connectPages() {
mapper->setMapping(ui->ndefBtn, Page_Ndef);
mapper->setMapping(ui->ndefBackBtn, Page_Base);
mapper->setMapping(ui->zapBtn, Page_Zap);
mapper->setMapping(ui->zapBackBtn, Page_Base);
//Connect the mapper to the widget
//The mapper will set a value to each button and
//set that value to the widget
......@@ -324,7 +333,7 @@ void ToolPage::programNdef() {
connect(writer, SIGNAL(configWritten(bool, const QString &)),
this, SLOT(ndefWritten(bool, const QString &)));
writer->writeNdef(uri, language, payload);
writer->writeNdef(uri, language, payload, ui->ndefAccCodeEdit->text().remove(" "));
}
void ToolPage::ndefWritten(bool written, const QString &msg) {
......@@ -344,6 +353,41 @@ void ToolPage::on_ndefTextRadio_toggled(bool checked) {
}
}
void ToolPage::on_ndefAccCodeCheckbox_toggled(bool checked) {
ui->ndefAccCodeEdit->setText("00 00 00 00 00 00");
ui->ndefAccCodeEdit->setEnabled(checked);
}
void ToolPage::on_zapPerformBtn_clicked() {
int slot;
if(ui->zapSlot1Radio->isChecked()) {
slot = 1;
} else if(ui->zapSlot2Radio->isChecked()) {
slot = 2;
} else {
emit showStatusMessage(ERR_CONF_SLOT_NOT_SELECTED, 1);
return;
}
YubiKeyWriter *writer = YubiKeyWriter::getInstance();
connect(writer, SIGNAL(configWritten(bool, const QString &)),
this, SLOT(zapDone(bool, const QString &)));
writer->deleteConfig(slot, ui->zapAccCodeEdit->text().remove(" "));
}
void ToolPage::zapDone(bool written, const QString &msg) {
disconnect(YubiKeyWriter::getInstance(), SIGNAL(configWritten(bool, const QString &)),
this, SLOT(zapDone(bool, const QString &)));
if(written) {
showStatusMessage(tr("Configuration successfully deleted."));
}
}
void ToolPage::on_zapAccCodeCheckbox_toggled(bool checked) {
ui->zapAccCodeEdit->setText("00 00 00 00 00 00");
ui->zapAccCodeEdit->setEnabled(checked);
}
void ToolPage::keyFound(bool found, bool* featuresMatrix) {
if(found && featuresMatrix[YubiKeyFinder::Feature_ChallengeResponse]) {
ui->chalRespPerformBtn->setEnabled(true);
......@@ -355,4 +399,5 @@ void ToolPage::keyFound(bool found, bool* featuresMatrix) {
} else {
ui->ndefProgramBtn->setEnabled(false);
}
ui->zapPerformBtn->setEnabled(found);
}
......@@ -50,6 +50,7 @@ private:
Page_Converter,
Page_ChalResp,
Page_Ndef,
Page_Zap,
};
int m_currentPage;
......@@ -82,6 +83,12 @@ private slots:
void programNdef();
void on_ndefTextRadio_toggled(bool checked);
void ndefWritten(bool written, const QString &msg);
void on_ndefAccCodeCheckbox_toggled(bool checkd);
// zap page
void on_zapPerformBtn_clicked();
void on_zapAccCodeCheckbox_toggled(bool checked);
void zapDone(bool written, const QString &msg);
void keyFound(bool found, bool* featuresMatrix);
signals:
......
......@@ -30,7 +30,7 @@
color: rgb(0, 0, 0);</string>
</property>
<property name="currentIndex">
<number>2</number>
<number>3</number>
</property>
<widget class="QWidget" name="basePage">
<widget class="QLabel" name="baseHeadingLbl">
......@@ -60,7 +60,7 @@ color: rgb(140, 192, 65);</string>
<x>10</x>
<y>50</y>
<width>711</width>
<height>240</height>
<height>320</height>
</rect>
</property>
<property name="styleSheet">
......@@ -188,7 +188,7 @@ font-weight: bold;</string>
font-weight: bold;</string>
</property>
<property name="text">
<string>NDEF programming</string>
<string>NDEF Programming</string>
</property>
<property name="autoExclusive">
<bool>false</bool>
......@@ -216,6 +216,54 @@ font-weight: bold;</string>
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
</property>
</widget>
<widget class="QPushButton" name="zapBtn">
<property name="geometry">
<rect>
<x>20</x>
<y>260</y>
<width>191</width>
<height>25</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="styleSheet">
<string notr="true">font: 12px;
font-weight: bold;</string>
</property>
<property name="text">
<string>Delete Configuration</string>
</property>
<property name="autoExclusive">
<bool>false</bool>
</property>
<property name="default">
<bool>false</bool>
</property>
<property name="flat">
<bool>false</bool>
</property>
</widget>
<widget class="QLabel" name="zapDescLbl">
<property name="geometry">
<rect>
<x>20</x>
<y>285</y>
<width>671</width>
<height>20</height>
</rect>
</property>
<property name="text">
<string>Delete the configuration stored in the YubiKey</string>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
</property>
</widget>
</widget>
</widget>
<widget class="QWidget" name="converterPage">
......@@ -1129,6 +1177,211 @@ color: rgb(118, 116, 108);</string>
<string>NDEF payload, OTP will be appended on the end</string>
</property>
</widget>
<widget class="QWidget" name="ndefAccCodeWidget" native="true">
<property name="geometry">
<rect>
<x>530</x>
<y>10</y>
<width>150</width>
<height>75</height>
</rect>
</property>
<widget class="QCheckBox" name="ndefAccCodeCheckbox">
<property name="geometry">
<rect>
<x>10</x>
<y>10</y>
<width>125</width>
<height>23</height>
</rect>
</property>
<property name="text">
<string>Use Access Code</string>
</property>
</widget>
<widget class="QLineEdit" name="ndefAccCodeEdit">
<property name="geometry">
<rect>
<x>10</x>
<y>40</y>
<width>125</width>
<height>20</height>
</rect>
</property>
<property name="inputMask">
<string>hh hh hh hh hh hh; </string>
</property>
<property name="text">
<string>00 00 00 00 00 00</string>