Rabbit Remote Control 0.1.0-bate14
Loading...
Searching...
No Matches

Parameter compone. More...

Collaboration diagram for Parameter compone:

Classes

class  CParameterWakeOnLan
 The wake on lan parameters. More...
class  CParameterWakeOnLanUI
 The wake on lan parameters UI. More...
class  CParameterDesktop
 The interface of remote desktop base parameters. More...
class  CParameterGlobal
 Global parameters. More...
class  CParameterNet
 Basic network parameters. More...
class  CParameterNetUI
 The net parameter UI. More...
class  CParameterPlugin
 Global parameters of plugins. More...
class  CParameterProxy
 The proxy parameters. More...
class  CParameterProxyUI
 The proxy parameter UI. More...
class  CParameterUser
 It contains user and password It only valid in plugin. More...
class  CParameterUserUI
 The user parameters UI. More...

Detailed Description

Parameter compone.

  • Write a parameter compone
    • Defined the parameter compone class. eg: CParameterUser
    • Add the parameter compone UI is derived from CParameterUI . eg: CParameterUserUI . and add the follow functions:
      int SetParameter(CParameter* pParameter) override;
      int Accept() override;
      {
      m_pUser = qobject_cast<CParameterUser*>(pParameter);
      if(!m_pUser) {
      Q_ASSERT(m_pUser);
      return -1;
      }
      ui->leUser->setText(m_pUser->GetUser());
      ui->cbType->clear();
      for(auto t: m_pUser->GetType()) {
      ui->cbType->addItem(m_pUser->ConvertTypeToName(t), (int)t);
      }
      int index = ui->cbType->findData((int)m_pUser->GetUsedType());
      if(-1 == index) {
      qDebug(log) << "Forget set use type?";
      } else
      ui->cbType->setCurrentIndex(index);
      ui->cbType->setVisible(1 < m_pUser->GetType().length());
      ui->lbType->setVisible(1 < m_pUser->GetType().length());
      qDebug(log) << "CParameterUserUI::SetParameter:" << index;
      ui->lePassword->setText(m_pUser->GetPassword());
      ui->pbSave->setChecked(m_pUser->GetSavePassword());
      on_pbSave_clicked();
      auto plugPara = m_pUser->GetPluginParameters();
      if(plugPara)
      ui->pbSave->setEnabled(plugPara->GetSavePassword());
      SetPushButtonTooltip(ui->pbSave, tr("Save password"),
      tr("Menu: Tools→Settings→Plugin→Password→Enable Save password"));
      if(plugPara)
      ui->pbShow->setEnabled(plugPara->GetViewPassowrd());
      SetPushButtonTooltip(ui->pbShow, tr("View password"),
      tr("Menu: Tools→Settings→Plugin→Password→Enable view password"));
      ui->lePublicFile->setText(m_pUser->GetPublicKeyFile());
      ui->lePrivateFile->setText(m_pUser->GetPrivateKeyFile());
      ui->lePassphrase->setText(m_pUser->GetPassphrase());
      ui->pbSavePassphrase->setChecked(m_pUser->GetSavePassphrase());
      on_pbSavePassphrase_clicked();
      if(plugPara)
      ui->pbSavePassphrase->setEnabled(plugPara->GetSavePassword());
      SetPushButtonTooltip(ui->pbSavePassphrase, tr("Save password"),
      tr("Menu: Tools→Settings→Plugin→Password→Enable Save password"));
      if(plugPara)
      ui->pbShowPassphrase->setEnabled(plugPara->GetViewPassowrd());
      SetPushButtonTooltip(ui->pbShowPassphrase, tr("View password"),
      tr("Menu: Tools→Settings→Plugin→Password→Enable view password"));
      return 0;
      }
      {
      if(!m_pUser) return -1;
      m_pUser->SetUsedType((CParameterUser::TYPE)ui->cbType->currentData().toInt());
      m_pUser->SetUser(QString());
      m_pUser->SetPassword(QString());
      m_pUser->SetSavePassword(false);
      m_pUser->SetPublicKeyFile(QString());
      m_pUser->SetPrivateKeyFile(QString());
      m_pUser->SetPassphrase(QString());
      m_pUser->SetSavePassphrase(false);
      switch(m_pUser->GetUsedType())
      {
      case CParameterUser::TYPE::None:
      {
      break;
      }
      case CParameterUser::TYPE::OnlyPassword:
      {
      m_pUser->SetPassword(ui->lePassword->text());
      m_pUser->SetSavePassword(ui->pbSave->isChecked());
      break;
      }
      case CParameterUser::TYPE::UserPassword:
      {
      m_pUser->SetUser(ui->leUser->text());
      m_pUser->SetPassword(ui->lePassword->text());
      m_pUser->SetSavePassword(ui->pbSave->isChecked());
      break;
      }
      case CParameterUser::TYPE::PublicKey:
      {
      m_pUser->SetPublicKeyFile(ui->lePublicFile->text());
      m_pUser->SetPrivateKeyFile(ui->lePrivateFile->text());
      m_pUser->SetPassphrase(ui->lePassphrase->text());
      m_pUser->SetSavePassphrase(ui->pbSavePassphrase->isChecked());
      break;
      }
      default:
      m_pUser->SetUser(ui->leUser->text());
      m_pUser->SetPassword(ui->lePassword->text());
      m_pUser->SetSavePassword(ui->pbSave->isChecked());
      m_pUser->SetPublicKeyFile(ui->lePublicFile->text());
      m_pUser->SetPrivateKeyFile(ui->lePrivateFile->text());
      m_pUser->SetPassphrase(ui->lePassphrase->text());
      m_pUser->SetSavePassphrase(ui->pbSavePassphrase->isChecked());
      }
      return 0;
      }
  • Use a parameter compone
    • Instance the parameter compone class. eg: CParameterNet
      CParameterUser m_User;
      CParameterNet::CParameterNet(CParameterOperate* parent, const QString &szPrefix)
      : CParameterOperate(parent, szPrefix)
      , m_nPort(0)
      , m_User(this)
      , m_szPrompt(tr("The host is empty. please set it"))
      , m_ShowUI(SHOW_UI::All)
      , m_EnableUI(SHOW_UI::All)
      {}
    • Call SetParameter and slotAccept
      • CParameterNetUI::SetParameter call CParameterUserUI::SetParameter
        {
        if(!pParameter) return -1;
        m_pNet = qobject_cast<CParameterNet*>(pParameter);
        ui->leHost->setText(m_pNet->GetHost());
        ui->spPort->setValue(m_pNet->GetPort());
        // Call user UI SetParameter
        ui->wUser->SetParameter(&m_pNet->m_User);
        // Show ui
        CParameterNet::SHOW_UIS uis = m_pNet->GetShowUI();
        ui->lbHost->setVisible(uis & CParameterNet::SHOW_UI::Host);
        ui->leHost->setVisible(uis & CParameterNet::SHOW_UI::Host);
        ui->lbPort->setVisible(uis & CParameterNet::SHOW_UI::Port);
        ui->spPort->setVisible(uis & CParameterNet::SHOW_UI::Port);
        ui->wUser->setVisible(uis & CParameterNet::SHOW_UI::User);
        uis = m_pNet->GetEnableUI();
        ui->leHost->setEnabled(uis & CParameterNet::SHOW_UI::Host);
        ui->spPort->setEnabled(uis & CParameterNet::SHOW_UI::Port);
        ui->wUser->setEnabled(uis & CParameterNet::SHOW_UI::User);
        return 0;
        }
      • Check parameter validity: CParameterNetUI::CheckValidity
        bool CParameterNetUI::CheckValidity(bool validity)
        {
        if(validity && ui->leHost->text().isEmpty()) {
        QMessageBox::critical(this, tr("Error"),
        m_pNet->GetPrompt());
        qCritical(log) << "The host is empty" << m_pNet->GetPrompt();
        ui->leHost->setFocus();
        return false;
        }
        return true;
        }
      • CParameterNetUI::Accept call CParameterUserUI::Accept
        {
        int nRet = 0;
        m_pNet->SetHost(ui->leHost->text());
        m_pNet->SetPort(ui->spPort->value());
        // Accept user UI parameters
        nRet = ui->wUser->Accept();
        return nRet;
        }