From 0280dca7effbbc8c00f38046f2fd5c0733371d84 Mon Sep 17 00:00:00 2001
From: Ming Rui Zhang <mingrui.zhang@savoirfairelinux.com>
Date: Wed, 20 Mar 2019 16:53:29 -0400
Subject: [PATCH] newwizardwidget: add create SIP account Page

Change-Id: I2b29023891075c63e398bd218a980e8d4f7bf71f
---
 newwizardwidget.cpp | 125 +++++--
 newwizardwidget.h   |  11 +-
 newwizardwidget.ui  | 790 +++++++++++++++++++++++++++++++++++++++++++-
 stylesheet.css      |  37 +--
 4 files changed, 893 insertions(+), 70 deletions(-)

diff --git a/newwizardwidget.cpp b/newwizardwidget.cpp
index 76067d2..f969b1d 100644
--- a/newwizardwidget.cpp
+++ b/newwizardwidget.cpp
@@ -169,6 +169,12 @@ NewWizardWidget::on_newAccountButton_clicked()
     changePage(ui->createRingAccountPage);
 }
 
+void
+NewWizardWidget::on_newSIPAccountButton_clicked()
+{
+    changePage(ui->createRingSIPAccountPage);
+}
+
 void NewWizardWidget::changePage(QWidget* toPage)
 {
     if (toPage == ui->spinnerPage) {
@@ -194,6 +200,16 @@ void NewWizardWidget::changePage(QWidget* toPage)
             this, &NewWizardWidget::slotRegisteredNameFound);
         validateWizardProgression();
         ui->setAvatarWidget->startBooth();
+    } else if (toPage == ui->createRingSIPAccountPage) {
+        ui->SIPusernameEdit->clear();
+        ui->SIPpasswordEdit->clear();
+        ui->SIPservernameEdit->clear();
+        ui->SIPproxyEdit->clear();
+        ui->SIPfullNameEdit->setText(QString());
+        ui->SIPusernameEdit->setEnabled(true);
+        setNavBarVisibility(true);
+        ui->nextButton->setEnabled(true);
+        ui->setSIPAvatarWidget->startBooth();
     } else if (toPage == ui->linkRingAccountPage) {
         fileToImport_ = QString("");
         ui->fileImportBtn->setText(tr("(None)"));
@@ -238,9 +254,12 @@ NewWizardWidget::on_nextButton_clicked()
     if (curWidget == ui->createRingAccountPage) {
         wizardMode_ = WizardMode::CREATE;
         processWizardInformations();
-    } if (curWidget == ui->linkRingAccountPage) {
+    } else if (curWidget == ui->linkRingAccountPage) {
         wizardMode_ = WizardMode::IMPORT;
         processWizardInformations();
+    } else if (curWidget == ui->createRingSIPAccountPage) {
+        wizardMode_ = WizardMode::CREATESIP;
+        processWizardInformations();
     }
 }
 
@@ -248,12 +267,13 @@ void
 NewWizardWidget::on_previousButton_clicked()
 {
     const QWidget* curWidget = ui->stackedWidget->currentWidget();
-    ui->setAvatarWidget->stopBooth();
+    if (curWidget == ui->createRingAccountPage) { ui->setAvatarWidget->stopBooth(); }
+    if (curWidget == ui->createRingSIPAccountPage) { ui->setSIPAvatarWidget->stopBooth(); }
     disconnect(registeredNameFoundConnection_);
     lookupStatusLabel_->hide();
     passwordStatusLabel_->hide();
     if (curWidget == ui->createRingAccountPage ||
-        curWidget == ui->linkRingAccountPage) {
+        curWidget == ui->linkRingAccountPage || curWidget == ui->createRingSIPAccountPage) {
         changePage(ui->welcomePage);
     }
 }
@@ -379,66 +399,88 @@ NewWizardWidget::validateWizardProgression()
 void
 NewWizardWidget::processWizardInformations()
 {
-    QString alias, password, archivePin;
-
+    inputPara_.clear();
     switch (wizardMode_) {
     case WizardMode::CREATE:
         ui->progressLabel->setText(tr("Generating your Jami account..."));
-        alias = ui->fullNameEdit->text();
-        password = ui->passwordEdit->text();
+        inputPara_["alias"] = ui->fullNameEdit->text();
+        inputPara_["password"] = ui->passwordEdit->text();
         ui->fullNameEdit->clear();
         ui->passwordEdit->clear();
         ui->confirmPasswordEdit->clear();
         break;
     case WizardMode::IMPORT:
         ui->progressLabel->setText(tr("Importing account archive..."));
-        password = ui->importPasswordEdit->text();
-        archivePin = ui->pinEdit->text();
+        inputPara_["password"] = ui->importPasswordEdit->text();
+        inputPara_["archivePin"] = ui->pinEdit->text();
         ui->pinEdit->clear();
         ui->importPasswordEdit->clear();
         break;
     case WizardMode::MIGRATE:
         ui->progressLabel->setText(tr("Migrating your Jami account..."));
         break;
+    case WizardMode::CREATESIP:
+        ui->progressLabel->setText(tr("Generating your SIP account..."));
+        if (ui->SIPfullNameEdit->text().isEmpty()) { inputPara_["alias"] = "SIP"; }
+        else { inputPara_["alias"] = ui->SIPfullNameEdit->text(); }
+        inputPara_["hostname"] = ui->SIPservernameEdit->text();
+        inputPara_["username"] = ui->SIPusernameEdit->text();
+        inputPara_["password"] = ui->SIPpasswordEdit->text();
+        inputPara_["proxy"] = ui->SIPproxyEdit->text();
+        break;
     }
 
+    inputPara_["archivePath"] = fileToImport_;
+    if (inputPara_.find("archivePin") == inputPara_.end()) { inputPara_["archivePin"] = "";  }
+
     changePage(ui->spinnerPage);
-    createRingAccount(alias, password, archivePin, fileToImport_);
+    createAccount();
 
     Utils::CreateStartupLink();
 }
 
 void
-NewWizardWidget::createRingAccount(const QString &displayName,
-    const QString &password,
-    const QString &pin,
-    const QString &archivePath)
+NewWizardWidget::createAccount()
 {
+    bool isRing = wizardMode_ == WizardMode::CREATE || wizardMode_ == WizardMode::IMPORT;
     Utils::oneShotConnect(&LRCInstance::accountModel(), &lrc::api::NewAccountModel::accountAdded,
-        [this](const std::string& accountId) {
+        [this, isRing](const std::string& accountId) {
             //set default ringtone
             auto confProps = LRCInstance::accountModel().getAccountConfig(accountId);
             if (confProps.username.empty())
                 return;
             confProps.Ringtone.ringtonePath = Utils::GetRingtonePath().toStdString();
+            if (!isRing) {
+                // set SIP details
+                confProps.hostname = inputPara_["hostname"].toStdString();
+                confProps.username = inputPara_["username"].toStdString();
+                confProps.password = inputPara_["password"].toStdString();
+                confProps.proxyServer = inputPara_["proxy"].toStdString();
+            }
             LRCInstance::accountModel().setAccountConfig(accountId, confProps);
-            connect(LRCInstance::editableAccountModel(),
-                &lrc::api::NewAccountModel::nameRegistrationEnded,
-                [this] {
+            // RING SPECIFIC
+            if (isRing) {
+                connect(LRCInstance::editableAccountModel(),
+                    &lrc::api::NewAccountModel::nameRegistrationEnded,
+                    [this] {
                     lrc::api::account::ConfProperties_t accountProperties = LRCInstance::accountModel().getAccountConfig(LRCInstance::getCurrAccId());
                     LRCInstance::accountModel().setAccountConfig(LRCInstance::getCurrAccId(), accountProperties);
                     emit NavigationRequested(ScreenEnum::CallScreen);
                     emit LRCInstance::instance().accountOnBoarded();
                 });
-            LRCInstance::editableAccountModel()->registerName(
-                LRCInstance::getCurrAccId(),
-                "",
-                registeredName_.toStdString()
-            );
-            if (ui->setAvatarWidget->hasAvatar()) {
+                LRCInstance::editableAccountModel()->registerName(
+                    LRCInstance::getCurrAccId(),
+                    "",
+                    registeredName_.toStdString()
+                );
+            }
+            // END RING SPECIFIC
+            if (ui->setSIPAvatarWidget->hasAvatar() && wizardMode_ == WizardMode::CREATESIP) {
+                LRCInstance::setCurrAccAvatar(ui->setSIPAvatarWidget->getAvatarPixmap());
+            } else if (ui->setAvatarWidget->hasAvatar() && wizardMode_ == WizardMode::CREATE) {
                 LRCInstance::setCurrAccAvatar(ui->setAvatarWidget->getAvatarPixmap());
             }
-        });
+    });
     Utils::oneShotConnect(&LRCInstance::accountModel(), &lrc::api::NewAccountModel::accountRemoved,
         [this](const std::string& accountId) {
             Q_UNUSED(accountId);
@@ -452,15 +494,28 @@ NewWizardWidget::createRingAccount(const QString &displayName,
             reportFailure();
         });
     QtConcurrent::run(
-        [=] {
-            LRCInstance::accountModel().createNewAccount(
-                lrc::api::profile::Type::RING,
-                displayName.toStdString(),
-                archivePath.toStdString(),
-                password.toStdString(),
-                pin.toStdString()
-            );
-        });
+        [this, isRing] {
+            if (isRing) {
+                LRCInstance::accountModel().createNewAccount(
+                    lrc::api::profile::Type::RING,
+                    inputPara_["alias"].toStdString(),
+                    inputPara_["archivePath"].toStdString(),
+                    inputPara_["password"].toStdString(),
+                    inputPara_["archivePin"].toStdString()
+                );
+            } else {
+                LRCInstance::accountModel().createNewAccount(
+                    lrc::api::profile::Type::SIP,
+                    inputPara_["alias"].toStdString(),
+                    inputPara_["archivePath"].toStdString(),
+                    "",
+                    "",
+                    inputPara_["username"].toStdString()
+                );
+                QThread::sleep(2);
+                emit NavigationRequested(ScreenEnum::CallScreen);
+            }
+    });
     changePage(ui->spinnerPage);
     repaint();
 }
@@ -480,4 +535,4 @@ NewWizardWidget::reportFailure()
             ui->progressLabel->setStyleSheet("");
             ui->spinnerLabel->setMovie(creationSpinnerMovie_);
         });
-}
\ No newline at end of file
+}
diff --git a/newwizardwidget.h b/newwizardwidget.h
index a23d755..5c75575 100644
--- a/newwizardwidget.h
+++ b/newwizardwidget.h
@@ -20,6 +20,7 @@
 
 #include <QLabel>
 #include <QtConcurrent/QtConcurrent>
+#include <map>
 
 #include "lrcinstance.h"
 #include "navwidget.h"
@@ -38,7 +39,7 @@ public:
 
     using AccountInfo = Info;
 
-    enum WizardMode { CREATE, IMPORT, MIGRATE };
+    enum WizardMode { CREATE, IMPORT, MIGRATE, CREATESIP };
 
 private:
     enum NameRegistrationUIState { BLANK, INVALID, TAKEN, FREE, SEARCHING };
@@ -55,6 +56,8 @@ public:
 
     //UI Slots
 private slots:
+
+    void on_newSIPAccountButton_clicked();
     void on_existingPushButton_clicked();
     void on_newAccountButton_clicked();
     void on_nextButton_clicked();
@@ -90,15 +93,13 @@ private:
     QMetaObject::Connection registeredNameFoundConnection_;
     QString fileToImport_;
     QLabel* passwordStatusLabel_;
+    std::map<std::string, QString> inputPara_;
 
     void updateNameRegistrationUi(NameRegistrationUIState state);
     void changePage(QWidget* toPage);
     void setNavBarVisibility(bool visible, bool back=false);
     void validateWizardProgression();
-    void createRingAccount(const QString &displayName = QString(),
-                           const QString &password = QString(),
-                           const QString &pin = QString(),
-                           const QString &archivePath = QString());
+    void createAccount();
     void reportFailure();
     void processWizardInformations();
 };
diff --git a/newwizardwidget.ui b/newwizardwidget.ui
index 7544af6..972ed84 100644
--- a/newwizardwidget.ui
+++ b/newwizardwidget.ui
@@ -108,7 +108,7 @@
                 <string notr="true"/>
                </property>
                <property name="currentIndex">
-                <number>1</number>
+                <number>0</number>
                </property>
                <widget class="QWidget" name="welcomePage">
                 <layout class="QVBoxLayout" name="verticalLayout_3">
@@ -122,8 +122,8 @@
                    </property>
                    <property name="sizeHint" stdset="0">
                     <size>
-                     <width>20</width>
-                     <height>60</height>
+                     <width>17</width>
+                     <height>57</height>
                     </size>
                    </property>
                   </spacer>
@@ -167,14 +167,20 @@
                    </property>
                    <property name="sizeHint" stdset="0">
                     <size>
-                     <width>20</width>
-                     <height>20</height>
+                     <width>17</width>
+                     <height>14</height>
                     </size>
                    </property>
                   </spacer>
                  </item>
                  <item>
                   <widget class="QLabel" name="welcomeLogo">
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
                    <property name="accessibleName">
                     <string>Welcome Logo</string>
                    </property>
@@ -189,12 +195,12 @@
                     <enum>Qt::Vertical</enum>
                    </property>
                    <property name="sizeType">
-                    <enum>QSizePolicy::Fixed</enum>
+                    <enum>QSizePolicy::Expanding</enum>
                    </property>
                    <property name="sizeHint" stdset="0">
                     <size>
-                     <width>10</width>
-                     <height>60</height>
+                     <width>13</width>
+                     <height>57</height>
                     </size>
                    </property>
                   </spacer>
@@ -278,6 +284,50 @@
                    </item>
                   </layout>
                  </item>
+                 <item>
+                  <layout class="QHBoxLayout" name="horizontalLayout_11">
+                   <property name="topMargin">
+                    <number>0</number>
+                   </property>
+                   <item>
+                    <widget class="QPushButton" name="newSIPAccountButton">
+                     <property name="sizePolicy">
+                      <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+                       <horstretch>0</horstretch>
+                       <verstretch>0</verstretch>
+                      </sizepolicy>
+                     </property>
+                     <property name="minimumSize">
+                      <size>
+                       <width>220</width>
+                       <height>30</height>
+                      </size>
+                     </property>
+                     <property name="maximumSize">
+                      <size>
+                       <width>220</width>
+                       <height>16777215</height>
+                      </size>
+                     </property>
+                     <property name="toolTip">
+                      <string>Create Jami SIP account button</string>
+                     </property>
+                     <property name="accessibleName">
+                      <string/>
+                     </property>
+                     <property name="accessibleDescription">
+                      <string>Push button for Jami SIP account creation start trigger</string>
+                     </property>
+                     <property name="layoutDirection">
+                      <enum>Qt::LeftToRight</enum>
+                     </property>
+                     <property name="text">
+                      <string>Create a SIP account</string>
+                     </property>
+                    </widget>
+                   </item>
+                  </layout>
+                 </item>
                  <item>
                   <spacer name="verticalSpacer_5">
                    <property name="orientation">
@@ -285,8 +335,8 @@
                    </property>
                    <property name="sizeHint" stdset="0">
                     <size>
-                     <width>20</width>
-                     <height>40</height>
+                     <width>17</width>
+                     <height>65</height>
                     </size>
                    </property>
                   </spacer>
@@ -1416,6 +1466,726 @@ instead of using your ID.</string>
                  </item>
                 </layout>
                </widget>
+               <widget class="QWidget" name="createRingSIPAccountPage">
+                <layout class="QVBoxLayout" name="verticalLayout_8">
+                 <property name="spacing">
+                  <number>0</number>
+                 </property>
+                 <property name="leftMargin">
+                  <number>0</number>
+                 </property>
+                 <property name="topMargin">
+                  <number>0</number>
+                 </property>
+                 <property name="rightMargin">
+                  <number>0</number>
+                 </property>
+                 <property name="bottomMargin">
+                  <number>0</number>
+                 </property>
+                 <item>
+                  <widget class="QWidget" name="SIPprofileSectionOuterWidget" native="true">
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
+                   <property name="minimumSize">
+                    <size>
+                     <width>0</width>
+                     <height>0</height>
+                    </size>
+                   </property>
+                   <property name="maximumSize">
+                    <size>
+                     <width>16777215</width>
+                     <height>16777215</height>
+                    </size>
+                   </property>
+                   <layout class="QVBoxLayout" name="SIPprofileLayout">
+                    <property name="spacing">
+                     <number>0</number>
+                    </property>
+                    <property name="leftMargin">
+                     <number>0</number>
+                    </property>
+                    <property name="topMargin">
+                     <number>0</number>
+                    </property>
+                    <property name="rightMargin">
+                     <number>0</number>
+                    </property>
+                    <property name="bottomMargin">
+                     <number>0</number>
+                    </property>
+                    <item>
+                     <widget class="QLabel" name="SIPprofileSectionLabel">
+                      <property name="sizePolicy">
+                       <sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding">
+                        <horstretch>0</horstretch>
+                        <verstretch>0</verstretch>
+                       </sizepolicy>
+                      </property>
+                      <property name="font">
+                       <font>
+                        <pointsize>15</pointsize>
+                       </font>
+                      </property>
+                      <property name="styleSheet">
+                       <string notr="true">color: rgb(63, 63, 63)</string>
+                      </property>
+                      <property name="text">
+                       <string>Profile</string>
+                      </property>
+                      <property name="alignment">
+                       <set>Qt::AlignCenter</set>
+                      </property>
+                     </widget>
+                    </item>
+                    <item>
+                     <widget class="QWidget" name="SIPprofileSectionInnerWidget" native="true">
+                      <property name="styleSheet">
+                       <string notr="true"/>
+                      </property>
+                      <layout class="QVBoxLayout" name="SIPverticalLayout">
+                       <property name="spacing">
+                        <number>0</number>
+                       </property>
+                       <property name="leftMargin">
+                        <number>0</number>
+                       </property>
+                       <property name="topMargin">
+                        <number>0</number>
+                       </property>
+                       <property name="rightMargin">
+                        <number>0</number>
+                       </property>
+                       <property name="bottomMargin">
+                        <number>0</number>
+                       </property>
+                       <item>
+                        <widget class="QWidget" name="SIPgridWidget" native="true">
+                         <layout class="QVBoxLayout" name="verticalLayout_100">
+                          <property name="spacing">
+                           <number>3</number>
+                          </property>
+                          <property name="leftMargin">
+                           <number>0</number>
+                          </property>
+                          <property name="topMargin">
+                           <number>0</number>
+                          </property>
+                          <property name="rightMargin">
+                           <number>0</number>
+                          </property>
+                          <property name="bottomMargin">
+                           <number>0</number>
+                          </property>
+                          <item>
+                           <layout class="QHBoxLayout" name="horizontalLayout_12">
+                            <property name="topMargin">
+                             <number>0</number>
+                            </property>
+                            <item>
+                             <widget class="PhotoboothWidget" name="setSIPAvatarWidget" native="true">
+                              <property name="sizePolicy">
+                               <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                                <horstretch>0</horstretch>
+                                <verstretch>0</verstretch>
+                               </sizepolicy>
+                              </property>
+                              <property name="minimumSize">
+                               <size>
+                                <width>150</width>
+                                <height>150</height>
+                               </size>
+                              </property>
+                              <property name="styleSheet">
+                               <string notr="true"/>
+                              </property>
+                             </widget>
+                            </item>
+                           </layout>
+                          </item>
+                          <item>
+                           <spacer name="verticalSpacer_16">
+                            <property name="orientation">
+                             <enum>Qt::Vertical</enum>
+                            </property>
+                            <property name="sizeType">
+                             <enum>QSizePolicy::Fixed</enum>
+                            </property>
+                            <property name="sizeHint" stdset="0">
+                             <size>
+                              <width>20</width>
+                              <height>3</height>
+                             </size>
+                            </property>
+                           </spacer>
+                          </item>
+                         </layout>
+                        </widget>
+                       </item>
+                      </layout>
+                     </widget>
+                    </item>
+                   </layout>
+                  </widget>
+                 </item>
+                 <item>
+                  <widget class="QWidget" name="SIPaccountSectionOuterWidget" native="true">
+                   <layout class="QVBoxLayout" name="verticalLayout_12">
+                    <property name="spacing">
+                     <number>3</number>
+                    </property>
+                    <property name="leftMargin">
+                     <number>0</number>
+                    </property>
+                    <property name="topMargin">
+                     <number>0</number>
+                    </property>
+                    <property name="rightMargin">
+                     <number>0</number>
+                    </property>
+                    <property name="bottomMargin">
+                     <number>0</number>
+                    </property>
+                    <item>
+                     <widget class="QWidget" name="SIPfullNameWidget" native="true">
+                      <property name="minimumSize">
+                       <size>
+                        <width>0</width>
+                        <height>30</height>
+                       </size>
+                      </property>
+                      <property name="maximumSize">
+                       <size>
+                        <width>16777215</width>
+                        <height>16777215</height>
+                       </size>
+                      </property>
+                      <layout class="QHBoxLayout" name="horizontalLayout_13">
+                       <property name="spacing">
+                        <number>0</number>
+                       </property>
+                       <property name="leftMargin">
+                        <number>0</number>
+                       </property>
+                       <property name="topMargin">
+                        <number>0</number>
+                       </property>
+                       <property name="rightMargin">
+                        <number>0</number>
+                       </property>
+                       <property name="bottomMargin">
+                        <number>0</number>
+                       </property>
+                       <item>
+                        <spacer name="horizontalSpacer_17">
+                         <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="QLineEdit" name="SIPfullNameEdit">
+                         <property name="minimumSize">
+                          <size>
+                           <width>200</width>
+                           <height>30</height>
+                          </size>
+                         </property>
+                         <property name="maximumSize">
+                          <size>
+                           <width>200</width>
+                           <height>16777215</height>
+                          </size>
+                         </property>
+                         <property name="font">
+                          <font>
+                           <pointsize>9</pointsize>
+                          </font>
+                         </property>
+                         <property name="toolTip">
+                          <string/>
+                         </property>
+                         <property name="placeholderText">
+                          <string>Profile name</string>
+                         </property>
+                        </widget>
+                       </item>
+                       <item>
+                        <spacer name="horizontalSpacer_18">
+                         <property name="orientation">
+                          <enum>Qt::Horizontal</enum>
+                         </property>
+                         <property name="sizeHint" stdset="0">
+                          <size>
+                           <width>40</width>
+                           <height>20</height>
+                          </size>
+                         </property>
+                        </spacer>
+                       </item>
+                      </layout>
+                     </widget>
+                    </item>
+                    <item>
+                     <spacer name="verticalSpacer_17">
+                      <property name="orientation">
+                       <enum>Qt::Vertical</enum>
+                      </property>
+                      <property name="sizeType">
+                       <enum>QSizePolicy::Fixed</enum>
+                      </property>
+                      <property name="sizeHint" stdset="0">
+                       <size>
+                        <width>20</width>
+                        <height>5</height>
+                       </size>
+                      </property>
+                     </spacer>
+                    </item>
+                    <item>
+                     <widget class="QLabel" name="SIPaccountSectionLabel">
+                      <property name="font">
+                       <font>
+                        <pointsize>14</pointsize>
+                       </font>
+                      </property>
+                      <property name="styleSheet">
+                       <string notr="true">color: rgb(63, 63, 63)</string>
+                      </property>
+                      <property name="text">
+                       <string>SIP Account</string>
+                      </property>
+                      <property name="alignment">
+                       <set>Qt::AlignCenter</set>
+                      </property>
+                     </widget>
+                    </item>
+                    <item>
+                     <widget class="QWidget" name="SIPaccountSectionInnerWidget" native="true">
+                      <property name="styleSheet">
+                       <string notr="true"/>
+                      </property>
+                      <layout class="QVBoxLayout" name="verticalLayout_13">
+                       <property name="topMargin">
+                        <number>0</number>
+                       </property>
+                       <item>
+                        <layout class="QGridLayout" name="gridLayout_8">
+                         <property name="topMargin">
+                          <number>0</number>
+                         </property>
+                         <property name="spacing">
+                          <number>7</number>
+                         </property>
+                         <item row="0" column="0">
+                          <widget class="QWidget" name="SIPverticalWidget1" native="true">
+                           <property name="sizePolicy">
+                            <sizepolicy hsizetype="Fixed" vsizetype="MinimumExpanding">
+                             <horstretch>0</horstretch>
+                             <verstretch>0</verstretch>
+                            </sizepolicy>
+                           </property>
+                           <layout class="QVBoxLayout" name="verticalLayout_14">
+                            <property name="spacing">
+                             <number>2</number>
+                            </property>
+                            <property name="leftMargin">
+                             <number>0</number>
+                            </property>
+                            <property name="topMargin">
+                             <number>0</number>
+                            </property>
+                            <property name="rightMargin">
+                             <number>0</number>
+                            </property>
+                            <property name="bottomMargin">
+                             <number>0</number>
+                            </property>
+                            <item>
+                             <widget class="QWidget" name="SIPsignUpWidget" native="true">
+                              <property name="sizePolicy">
+                               <sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding">
+                                <horstretch>0</horstretch>
+                                <verstretch>0</verstretch>
+                               </sizepolicy>
+                              </property>
+                              <property name="minimumSize">
+                               <size>
+                                <width>0</width>
+                                <height>10</height>
+                               </size>
+                              </property>
+                              <property name="maximumSize">
+                               <size>
+                                <width>16777215</width>
+                                <height>16777215</height>
+                               </size>
+                              </property>
+                              <layout class="QHBoxLayout" name="horizontalLayout_15">
+                               <property name="spacing">
+                                <number>0</number>
+                               </property>
+                               <property name="leftMargin">
+                                <number>0</number>
+                               </property>
+                               <property name="topMargin">
+                                <number>0</number>
+                               </property>
+                               <property name="rightMargin">
+                                <number>0</number>
+                               </property>
+                               <property name="bottomMargin">
+                                <number>0</number>
+                               </property>
+                               <item>
+                                <spacer name="horizontalSpacer_21">
+                                 <property name="orientation">
+                                  <enum>Qt::Horizontal</enum>
+                                 </property>
+                                 <property name="sizeType">
+                                  <enum>QSizePolicy::Expanding</enum>
+                                 </property>
+                                 <property name="sizeHint" stdset="0">
+                                  <size>
+                                   <width>40</width>
+                                   <height>5</height>
+                                  </size>
+                                 </property>
+                                </spacer>
+                               </item>
+                              </layout>
+                             </widget>
+                            </item>
+                            <item>
+                             <widget class="QWidget" name="SIPusernameWidget" native="true">
+                              <property name="sizePolicy">
+                               <sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding">
+                                <horstretch>0</horstretch>
+                                <verstretch>0</verstretch>
+                               </sizepolicy>
+                              </property>
+                              <property name="minimumSize">
+                               <size>
+                                <width>0</width>
+                                <height>25</height>
+                               </size>
+                              </property>
+                              <property name="maximumSize">
+                               <size>
+                                <width>16777215</width>
+                                <height>16777215</height>
+                               </size>
+                              </property>
+                              <layout class="QHBoxLayout" name="SIPusernameLayout">
+                               <property name="spacing">
+                                <number>0</number>
+                               </property>
+                               <property name="leftMargin">
+                                <number>0</number>
+                               </property>
+                               <property name="topMargin">
+                                <number>0</number>
+                               </property>
+                               <property name="rightMargin">
+                                <number>0</number>
+                               </property>
+                               <property name="bottomMargin">
+                                <number>0</number>
+                               </property>
+                               <item>
+                                <widget class="QLineEdit" name="SIPservernameEdit">
+                                 <property name="minimumSize">
+                                  <size>
+                                   <width>200</width>
+                                   <height>30</height>
+                                  </size>
+                                 </property>
+                                 <property name="maximumSize">
+                                  <size>
+                                   <width>200</width>
+                                   <height>16777215</height>
+                                  </size>
+                                 </property>
+                                 <property name="font">
+                                  <font>
+                                   <pointsize>9</pointsize>
+                                  </font>
+                                 </property>
+                                 <property name="toolTip">
+                                  <string>SIP Server edit</string>
+                                 </property>
+                                 <property name="accessibleName">
+                                  <string/>
+                                 </property>
+                                 <property name="placeholderText">
+                                  <string>Server</string>
+                                 </property>
+                                 <property name="clearButtonEnabled">
+                                  <bool>true</bool>
+                                 </property>
+                                </widget>
+                               </item>
+                              </layout>
+                             </widget>
+                            </item>
+                            <item>
+                             <widget class="QWidget" name="SIPproxyWidget" native="true">
+                              <property name="sizePolicy">
+                               <sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding">
+                                <horstretch>0</horstretch>
+                                <verstretch>0</verstretch>
+                               </sizepolicy>
+                              </property>
+                              <property name="minimumSize">
+                               <size>
+                                <width>0</width>
+                                <height>25</height>
+                               </size>
+                              </property>
+                              <property name="maximumSize">
+                               <size>
+                                <width>16777215</width>
+                                <height>16777215</height>
+                               </size>
+                              </property>
+                              <layout class="QHBoxLayout" name="SIPproxyLayout">
+                               <property name="spacing">
+                                <number>0</number>
+                               </property>
+                               <property name="leftMargin">
+                                <number>0</number>
+                               </property>
+                               <property name="topMargin">
+                                <number>0</number>
+                               </property>
+                               <property name="rightMargin">
+                                <number>0</number>
+                               </property>
+                               <property name="bottomMargin">
+                                <number>0</number>
+                               </property>
+                               <item>
+                                <widget class="QLineEdit" name="SIPproxyEdit">
+                                 <property name="minimumSize">
+                                  <size>
+                                   <width>200</width>
+                                   <height>30</height>
+                                  </size>
+                                 </property>
+                                 <property name="maximumSize">
+                                  <size>
+                                   <width>200</width>
+                                   <height>16777215</height>
+                                  </size>
+                                 </property>
+                                 <property name="font">
+                                  <font>
+                                   <pointsize>9</pointsize>
+                                  </font>
+                                 </property>
+                                 <property name="toolTip">
+                                  <string>SIP proxy input</string>
+                                 </property>
+                                 <property name="accessibleName">
+                                  <string/>
+                                 </property>
+                                 <property name="accessibleDescription">
+                                  <string>SIP proxy text entry</string>
+                                 </property>
+                                 <property name="echoMode">
+                                  <enum>QLineEdit::Normal</enum>
+                                 </property>
+                                 <property name="placeholderText">
+                                  <string>Proxy</string>
+                                 </property>
+                                 <property name="clearButtonEnabled">
+                                  <bool>false</bool>
+                                 </property>
+                                </widget>
+                               </item>
+                              </layout>
+                             </widget>
+                            </item>
+                            <item>
+                             <widget class="QWidget" name="SIPpassWidget" native="true">
+                              <property name="sizePolicy">
+                               <sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding">
+                                <horstretch>0</horstretch>
+                                <verstretch>0</verstretch>
+                               </sizepolicy>
+                              </property>
+                              <property name="minimumSize">
+                               <size>
+                                <width>0</width>
+                                <height>25</height>
+                               </size>
+                              </property>
+                              <property name="maximumSize">
+                               <size>
+                                <width>16777215</width>
+                                <height>16777215</height>
+                               </size>
+                              </property>
+                              <layout class="QHBoxLayout" name="SIPpassLayout">
+                               <property name="spacing">
+                                <number>0</number>
+                               </property>
+                               <property name="leftMargin">
+                                <number>0</number>
+                               </property>
+                               <property name="topMargin">
+                                <number>0</number>
+                               </property>
+                               <property name="rightMargin">
+                                <number>0</number>
+                               </property>
+                               <property name="bottomMargin">
+                                <number>0</number>
+                               </property>
+                               <item>
+                                <widget class="QLineEdit" name="SIPusernameEdit">
+                                 <property name="minimumSize">
+                                  <size>
+                                   <width>200</width>
+                                   <height>30</height>
+                                  </size>
+                                 </property>
+                                 <property name="maximumSize">
+                                  <size>
+                                   <width>200</width>
+                                   <height>16777215</height>
+                                  </size>
+                                 </property>
+                                 <property name="font">
+                                  <font>
+                                   <pointsize>9</pointsize>
+                                  </font>
+                                 </property>
+                                 <property name="toolTip">
+                                  <string>SIP username input</string>
+                                 </property>
+                                 <property name="accessibleName">
+                                  <string/>
+                                 </property>
+                                 <property name="accessibleDescription">
+                                  <string>SIP Password text entry</string>
+                                 </property>
+                                 <property name="echoMode">
+                                  <enum>QLineEdit::Normal</enum>
+                                 </property>
+                                 <property name="placeholderText">
+                                  <string>Username</string>
+                                 </property>
+                                 <property name="clearButtonEnabled">
+                                  <bool>false</bool>
+                                 </property>
+                                </widget>
+                               </item>
+                              </layout>
+                             </widget>
+                            </item>
+                            <item>
+                             <widget class="QWidget" name="SIPconfPassWidget" native="true">
+                              <property name="sizePolicy">
+                               <sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding">
+                                <horstretch>0</horstretch>
+                                <verstretch>0</verstretch>
+                               </sizepolicy>
+                              </property>
+                              <property name="minimumSize">
+                               <size>
+                                <width>0</width>
+                                <height>25</height>
+                               </size>
+                              </property>
+                              <property name="maximumSize">
+                               <size>
+                                <width>16777215</width>
+                                <height>16777215</height>
+                               </size>
+                              </property>
+                              <layout class="QHBoxLayout" name="SIPconfirmPassLabel">
+                               <property name="spacing">
+                                <number>0</number>
+                               </property>
+                               <property name="leftMargin">
+                                <number>0</number>
+                               </property>
+                               <property name="topMargin">
+                                <number>0</number>
+                               </property>
+                               <property name="rightMargin">
+                                <number>0</number>
+                               </property>
+                               <property name="bottomMargin">
+                                <number>0</number>
+                               </property>
+                               <item>
+                                <widget class="QLineEdit" name="SIPpasswordEdit">
+                                 <property name="minimumSize">
+                                  <size>
+                                   <width>200</width>
+                                   <height>30</height>
+                                  </size>
+                                 </property>
+                                 <property name="maximumSize">
+                                  <size>
+                                   <width>200</width>
+                                   <height>16777215</height>
+                                  </size>
+                                 </property>
+                                 <property name="font">
+                                  <font>
+                                   <pointsize>9</pointsize>
+                                  </font>
+                                 </property>
+                                 <property name="toolTip">
+                                  <string>SIP Password text input</string>
+                                 </property>
+                                 <property name="accessibleName">
+                                  <string/>
+                                 </property>
+                                 <property name="accessibleDescription">
+                                  <string>SIP Password text input</string>
+                                 </property>
+                                 <property name="echoMode">
+                                  <enum>QLineEdit::Password</enum>
+                                 </property>
+                                 <property name="placeholderText">
+                                  <string>Password</string>
+                                 </property>
+                                 <property name="clearButtonEnabled">
+                                  <bool>false</bool>
+                                 </property>
+                                </widget>
+                               </item>
+                              </layout>
+                             </widget>
+                            </item>
+                           </layout>
+                          </widget>
+                         </item>
+                        </layout>
+                       </item>
+                      </layout>
+                     </widget>
+                    </item>
+                   </layout>
+                  </widget>
+                 </item>
+                </layout>
+               </widget>
                <widget class="QWidget" name="spinnerPage">
                 <layout class="QVBoxLayout" name="verticalLayout_4">
                  <item>
diff --git a/stylesheet.css b/stylesheet.css
index 314c40a..607b00e 100644
--- a/stylesheet.css
+++ b/stylesheet.css
@@ -309,12 +309,11 @@ QDialog#DeleteAccountDialog {
 
 QPushButton#nextButton, QPushButton#playButton, QPushButton#clearHistoryButton, QPushButton#doTransferButton,
 QPushButton#photoButton,
-QPushButton#existingPushButton, QPushButton#newAccountButton, QPushButton#previousButton, QPushButton#exportButton,
+QPushButton#existingPushButton, QPushButton#newAccountButton, QPushButton#previousButton, QPushButton#exportButton, QPushButton#newSIPAccountButton,
 QPushButton#cancelAddButton, QPushButton#exportOnRingButton, QPushButton#addDeviceButton, QPushButton#exportEndedOkButton,
 QPushButton#errorPushButton, QPushButton#registerButton, QPushButton#acceptCRButton, QPushButton#discardCRButton, QPushButton#deleteCancelBtn,
 QPushButton#dhtImportBtn, QPushButton#fileImportBtn, QPushButton#changePassBtn, QPushButton#confirmChangeBtn, QPushButton#backButton {
-    background: qlineargradient(x1: 0, y1: 0, x2: 1, y2: 0,
-                                stop: 0 #109ede, stop: 1.0 #2b5084);
+    background: qlineargradient(x1: 0, y1: 0, x2: 1, y2: 0, stop: 0 #109ede, stop: 1.0 #2b5084);
     border: 0px;
     border-radius: 15px;
     height: 30px;
@@ -322,17 +321,17 @@ QPushButton#dhtImportBtn, QPushButton#fileImportBtn, QPushButton#changePassBtn,
     font: 14px;
 }
 
-QPushButton#nextButton:disabled, QPushButton#playButton:disabled, QPushButton#clearHistoryButton:disabled,
-QPushButton#doTransferButton:disabled, QPushButton#photoButton:disabled,
-QPushButton#existingPushButton:disabled, QPushButton#newAccountButton:disabled, QPushButton#previousButton:disabled,
-QPushButton#exportButton:disabled, QPushButton#cancelAddButton:disabled, QPushButton#exportOnRingButton:disabled,
-QPushButton#addDeviceButton:disabled, QPushButton#exportEndedOkButton:disabled, QPushButton#errorPushButton:disabled,
-QPushButton#registerButton:disabled, QPushButton#acceptCRButton:disabled, QPushButton#discardCRButton:disabled,
-QPushButton#deleteCancelBtn:disabled, QPushButton#dhtImportBtn:disabled, QPushButton#fileImportBtn:disabled,
-QPushButton#changePassBtn:disabled, QPushButton#confirmChangeBtn:disabled, QPushButton#backButton:disabled {
-    background: rgba(242, 242, 242, 0.8);
-    color: grey;
-}
+    QPushButton#nextButton:disabled, QPushButton#playButton:disabled, QPushButton#clearHistoryButton:disabled,
+    QPushButton#doTransferButton:disabled, QPushButton#photoButton:disabled,
+    QPushButton#existingPushButton:disabled, QPushButton#newAccountButton:disabled, QPushButton#previousButton:disabled, QPushButton#newSIPAccountButton:disabled,
+    QPushButton#exportButton:disabled, QPushButton#cancelAddButton:disabled, QPushButton#exportOnRingButton:disabled,
+    QPushButton#addDeviceButton:disabled, QPushButton#exportEndedOkButton:disabled, QPushButton#errorPushButton:disabled,
+    QPushButton#registerButton:disabled, QPushButton#acceptCRButton:disabled, QPushButton#discardCRButton:disabled,
+    QPushButton#deleteCancelBtn:disabled, QPushButton#dhtImportBtn:disabled, QPushButton#fileImportBtn:disabled,
+    QPushButton#changePassBtn:disabled, QPushButton#confirmChangeBtn:disabled, QPushButton#backButton:disabled {
+        background: rgba(242, 242, 242, 0.8);
+        color: grey;
+    }
 
 QPushButton#blockCRButton, QPushButton#debanButton, QPushButton#deleteBanBtn,
 QPushButton#cancelChangeBtn {
@@ -344,14 +343,13 @@ QPushButton#cancelChangeBtn {
 
 QPushButton#nextButton:hover, QPushButton#playButton:hover, QPushButton#clearHistoryButton:hover,
 QPushButton#doTransferButton:hover, QPushButton#photoButton:hover,
-QPushButton#existingPushButton:hover, QPushButton#newAccountButton:hover, QPushButton#previousButton:hover,
+QPushButton#existingPushButton:hover, QPushButton#newAccountButton:hover, QPushButton#previousButton:hover, QPushButton#newSIPAccountButton:hover,
 QPushButton#exportButton:hover, QPushButton#cancelAddButton:hover, QPushButton#exportOnRingButton:hover,
 QPushButton#addDeviceButton:hover, QPushButton#exportEndedOkButton:hover, QPushButton#errorPushButton:hover,
 QPushButton#registerButton:hover, QPushButton#acceptCRButton:hover, QPushButton#discardCRButton:hover,
 QPushButton#deleteCancelBtn:hover, QPushButton#dhtImportBtn:hover, QPushButton#fileImportBtn:hover,
 QPushButton#changePassBtn:hover, QPushButton#confirmChangeBtn:hover, QPushButton#backButton:hover {
-    background: qlineargradient(x1: 0, y1: 0, x2: 1, y2: 0,
-                                stop: 0 #2b4b7e, stop: 1.0 #001d4d);
+    background: qlineargradient(x1: 0, y1: 0, x2: 1, y2: 0, stop: 0 #2b4b7e, stop: 1.0 #001d4d);
     color: white;
 }
 
@@ -362,14 +360,13 @@ QPushButton#deleteButton:hover, QPushButton#deleteBanBtn:hover, QPushButton#canc
 
 QPushButton#nextButton:pressed, QPushButton#playButton:pressed, QPushButton#clearHistoryButton:pressed,
 QPushButton#doTransferButton:pressed, QPushButton#photoButton:pressed,
-QPushButton#existingPushButton:pressed, QPushButton#newAccountButton:pressed, QPushButton#previousButton:pressed,
+QPushButton#existingPushButton:pressed, QPushButton#newAccountButton:pressed, QPushButton#previousButton:pressed, QPushButton#newSIPAccountButton:pressed,
 QPushButton#exportButton:pressed, QPushButton#cancelAddButton:pressed, QPushButton#exportOnRingButton:pressed,
 QPushButton#addDeviceButton:pressed, QPushButton#exportEndedOkButton:pressed, QPushButton#errorPushButton:pressed,
 QPushButton#registerButton:pressed, QPushButton#acceptCRButton:pressed, QPushButton#discardCRButton:pressed,
 QPushButton#deleteCancelBtn:pressed, QPushButton#dhtImportBtn:pressed, QPushButton#fileImportBtn:pressed,
 QPushButton#changePassBtn:pressed, QPushButton#confirmChangeBtn:pressed, QPushButton#backButton:pressed {
-    background: qlineargradient(x1: 0, y1: 0, x2: 1, y2: 0,
-                                stop: 0 #043161, stop: 1.0 #00113f);
+    background: qlineargradient(x1: 0, y1: 0, x2: 1, y2: 0, stop: 0 #043161, stop: 1.0 #00113f);
     color: white;
 }
 
-- 
GitLab