KviTalWizard::KviTalWizard(QWidget * pParent) : QDialog(pParent) { m_p = new KviTalWizardPrivate; m_p->pPageList = new KviPointerList<KviTalWizardPageData>; m_p->pPageList->setAutoDelete(true); m_p->pCurrentPage = NULL; m_p->iEnabledPageCount = 0; m_p->pLayout = new QGridLayout(this); m_p->pTitleLabel = new QLabel(this); m_p->pLayout->addWidget(m_p->pTitleLabel,0,0,1,3); m_p->pStepsLabel = new QLabel(this); m_p->pStepsLabel->setMinimumWidth(80); m_p->pStepsLabel->setAlignment(Qt::AlignRight); m_p->pLayout->addWidget(m_p->pStepsLabel,0,4,1,3); QFrame * f1 = new QFrame(this); f1->setFrameStyle(QFrame::Sunken | QFrame::HLine); m_p->pLayout->addWidget(f1,1,0,1,7); m_p->pWidgetStack = new QStackedWidget(this); m_p->pLayout->addWidget(m_p->pWidgetStack,2,0,1,7); QFrame * f2 = new QFrame(this); f2->setFrameStyle(QFrame::Sunken | QFrame::HLine); m_p->pLayout->addWidget(f2,3,0,1,7); KviTalHBox * pButtonBox = new KviTalHBox(this); m_p->pLayout->addWidget(pButtonBox,4,0,1,7); pButtonBox->setMargin(0); pButtonBox->setSpacing(0); m_p->pCancelButton = new QPushButton(__tr("Cancel"),pButtonBox); m_p->pCancelButton->setMinimumWidth(80); QObject::connect( m_p->pCancelButton, SIGNAL(clicked()), this, SLOT(cancelButtonClicked()) ); QWidget * pSpacer = new QWidget(pButtonBox); pSpacer->setFixedWidth(4); m_p->pHelpButton = new QPushButton(__tr("Help"),pButtonBox); m_p->pHelpButton->setMinimumWidth(80); QObject::connect( m_p->pHelpButton, SIGNAL(clicked()), this, SLOT(helpButtonClicked()) ); QWidget * pLargeSpacer = new QWidget(pButtonBox); pLargeSpacer->setMinimumWidth(50); pButtonBox->setStretchFactor(pLargeSpacer,100); QString szText = "< "; szText += __tr("Back"); m_p->pBackButton = new QPushButton(szText,pButtonBox); m_p->pBackButton->setMinimumWidth(80); QObject::connect( m_p->pBackButton, SIGNAL(clicked()), this, SLOT(backButtonClicked()) ); m_p->pNextSpacer = new QWidget(pButtonBox); m_p->pNextSpacer->setFixedWidth(4); szText = __tr("Next"); szText += " >"; m_p->pNextButton = new QPushButton(szText,pButtonBox); m_p->pNextButton->setMinimumWidth(80); QObject::connect( m_p->pNextButton, SIGNAL(clicked()), this, SLOT(nextButtonClicked()) ); m_p->pFinishSpacer = new QWidget(pButtonBox); m_p->pFinishSpacer->setFixedWidth(4); m_p->pFinishButton = new QPushButton(__tr("Finish"),pButtonBox); m_p->pFinishButton->setMinimumWidth(80); QObject::connect( m_p->pFinishButton, SIGNAL(clicked()), this, SLOT(finishButtonClicked()) ); m_p->pLayout->setMargin(8); m_p->pLayout->setSpacing(4); m_p->pLayout->setRowStretch(2,1); m_p->pLayout->setColumnStretch(0,1); }
KviIdentityGeneralOptionsWidget::KviIdentityGeneralOptionsWidget(QWidget * parent) : KviOptionsWidget(parent) { m_szAltNicknames[0] = KVI_OPTION_STRING(KviOption_stringNickname2); m_szAltNicknames[1] = KVI_OPTION_STRING(KviOption_stringNickname3); m_szAltNicknames[2] = KVI_OPTION_STRING(KviOption_stringNickname4); createLayout(); layout()->setMargin(10); KviTalGroupBox * gbox = addGroupBox(0,0,0,0,Qt::Horizontal,__tr2qs_ctx("Basic Properties","options")); KviTalHBox * hb = new KviTalHBox(gbox); hb->setSpacing(0); hb->setMargin(0); KviStringSelector * sel = addStringSelector(hb,__tr2qs_ctx("Nickname:","options"),KviOption_stringNickname1); sel->setMinimumLabelWidth(120); mergeTip(sel,__tr2qs_ctx("<center>Your <b>nickname</b> is your primary form of identification on IRC.<br>" \ "Since servers cannot accept multiple users sharing the same nickname " \ "(case insensitive), you can provide alternative nicknames to be used in case"\ "the server refuses to accept the default one.</center>","options")); QValidator * v = new QRegExpValidator(QRegExp("[^-0-9 ][^ ]*"),hb); sel->setValidator(v); QPushButton * pb = new QPushButton(__tr2qs_ctx("Alternatives...","options"),hb); connect(pb,SIGNAL(clicked()),this,SLOT(setNickAlternatives())); sel = addStringSelector(gbox,__tr2qs_ctx("Username:"******"options"),KviOption_stringUsername); sel->setMinimumLabelWidth(120); mergeTip(sel,__tr2qs_ctx("<center>This is the <b>username</b> that you will use to connect to the server.<br>" \ "In the past, it was used as a form of authentication, but it normally has no special use now.<br>" \ "In addition to your nickname, you are identified on IRC by your <b>username@hostname</b>.</br>" \ "Basically, you can enter any word you like here. :D</center>","options")); sel = addStringSelector(gbox,__tr2qs_ctx("Real name:","options"),KviOption_stringRealname); sel->setMinimumLabelWidth(120); mergeTip(sel,__tr2qs_ctx("<center>This text will appear when someone does a /WHOIS on you.<br>" \ "It is intended to be your real name, but people tend to put random quotes and phrases here too.</center>","options")); QString szOptionalCtcpUserInfo = __tr2qs_ctx("This field is optional and will appear as part of the CTCP USERINFO reply.","options"); QString szCenterBegin("<center>"); QString szCenterEnd("</center>"); QString szTrailing = "<br><br>" + szOptionalCtcpUserInfo + szCenterEnd; gbox = addGroupBox(0,1,0,1,Qt::Horizontal,__tr2qs_ctx("Profile","options")); hb = new KviTalHBox(gbox); hb->setSpacing(4); QLabel * l = new QLabel(__tr2qs_ctx("Age:","options"),hb); l->setMinimumWidth(120); m_pAgeCombo = new QComboBox(hb); QString szTip1 = szCenterBegin + __tr2qs_ctx("Here you can specify your age.","options") + szTrailing; KviTalToolTip::add(l,szTip1); KviTalToolTip::add(m_pAgeCombo,szTip1); m_pAgeCombo->addItem(__tr2qs_ctx("Unspecified","options")); unsigned int i; for(i=1;i<120;i++) { QString tmp; tmp.setNum(i); m_pAgeCombo->insertItem(m_pAgeCombo->count(),tmp); } bool bOk; i = KVI_OPTION_STRING(KviOption_stringCtcpUserInfoAge).toUInt(&bOk); if(!bOk)i = 0; if(i > 120)i = 120; m_pAgeCombo->setCurrentIndex(i); hb->setStretchFactor(m_pAgeCombo,1); hb = new KviTalHBox(gbox); hb->setSpacing(4); l = new QLabel(__tr2qs_ctx("Gender:","options"),hb); l->setMinimumWidth(120); m_pGenderCombo = new QComboBox(hb); QString szTip2 = szCenterBegin + __tr2qs_ctx("Here you can specify your gender.","options") + szTrailing; KviTalToolTip::add(l,szTip2); KviTalToolTip::add(m_pGenderCombo,szTip2); m_pGenderCombo->addItem(__tr2qs_ctx("Unspecified","options")); m_pGenderCombo->addItem(__tr2qs_ctx("Female","options")); m_pGenderCombo->addItem(__tr2qs_ctx("Male","options")); if(KviQString::equalCI(KVI_OPTION_STRING(KviOption_stringCtcpUserInfoGender),"Male")) m_pGenderCombo->setCurrentIndex(2); else if(KviQString::equalCI(KVI_OPTION_STRING(KviOption_stringCtcpUserInfoGender),"Female")) m_pGenderCombo->setCurrentIndex(1); else m_pGenderCombo->setCurrentIndex(0); hb->setStretchFactor(m_pGenderCombo,1); sel = addStringSelector(gbox,__tr2qs_ctx("Location:","options"),KviOption_stringCtcpUserInfoLocation); sel->setMinimumLabelWidth(120); mergeTip(sel,szCenterBegin + __tr2qs_ctx("You can describe here your approximate physical location. " \ "Something like \"Region, Country\" will be ok. Please note that this information will be viewable " \ "by anyone so putting more data (like the exact address), generally, <b>is not a good idea</b>.","options") + szTrailing); sel = addStringSelector(gbox,__tr2qs_ctx("Languages:","options"),KviOption_stringCtcpUserInfoLanguages); sel->setMinimumLabelWidth(120); mergeTip(sel,szCenterBegin + __tr2qs_ctx("You can put here the short names of the languages you can speak. " \ "An example might be \"EN,IT\" that would mean that you speak both Italian and English.","options") + szTrailing); sel = addStringSelector(gbox,__tr2qs_ctx("Other:","options"),KviOption_stringCtcpUserInfoOther); sel->setMinimumLabelWidth(120); mergeTip(sel,szCenterBegin + __tr2qs_ctx("You can put here some additional personal data. " \ "It might be a funny quote or your homepage url... " \ "Please note that this information will be viewable " \ "by anyone so <b>don't put any sensible data</b> (passwords, telephone or credit card numbers).","options") + szTrailing); addRowSpacer(0,2,0,2); }