OptionsWidget_away::OptionsWidget_away(QWidget * parent) : KviOptionsWidget(parent) { setObjectName("away_options_widget"); createLayout(); m_pEnableAwayMessage = addBoolSelector(0,0,0,0, __tr2qs_ctx("Enable default away message","options"), KviOption_boolUseAwayMessage); connect(m_pEnableAwayMessage,SIGNAL(toggled(bool)),this,SLOT(enableAwayMessage(bool))); m_pAwayMessage = addStringSelector(0,1,0,1, __tr2qs_ctx("Default away message:","options"), KviOption_stringAwayMessage, KVI_OPTION_BOOL(KviOption_boolUseAwayMessage)); addBoolSelector(0,2,0,2, __tr2qs_ctx("User input exits away mode","options"), KviOption_boolExitAwayOnInput); KviTalGroupBox *g = addGroupBox(0,3,0,3,Qt::Horizontal,__tr2qs_ctx("Away Nickname","options")); m_pEnableAwayNick = addBoolSelector(g,__tr2qs_ctx("Change nickname on away","options"),KviOption_boolChangeNickAway); connect(m_pEnableAwayNick,SIGNAL(toggled(bool)),this,SLOT(enableCustomAwayText(bool))); m_pEnableCustomAwayNick = addBoolSelector(g,__tr2qs_ctx("Use automatic nickname ([5 letters]AWAY)","options"),KviOption_boolAutoGeneratedAwayNick,KVI_OPTION_BOOL(KviOption_boolChangeNickAway)); connect(m_pEnableAwayNick,SIGNAL(toggled(bool)),m_pEnableCustomAwayNick,SLOT(setEnabled(bool))); connect(m_pEnableCustomAwayNick,SIGNAL(toggled(bool)),this,SLOT(enableCustomAwayText(bool))); m_pCustomAwayNick = addStringSelector(g,__tr2qs_ctx("Custom nickname (%nick% means a current nick):","options"),KviOption_stringCustomAwayNick,KVI_OPTION_BOOL(KviOption_boolChangeNickAway) && !(KVI_OPTION_BOOL(KviOption_boolAutoGeneratedAwayNick))); addRowSpacer(0,4,0,4); }
OptionsWidget_identityAdvanced::OptionsWidget_identityAdvanced(QWidget * parent) : KviOptionsWidget(parent) { m_pISelector=0; m_pWSelector=0; m_pSSelector=0; m_sModeStr = KVI_OPTION_STRING(KviOption_stringDefaultUserMode); m_bI = m_sModeStr.contains('i'); m_bW = m_sModeStr.contains('w'); m_bS = m_sModeStr.contains('s'); createLayout(); layout()->setMargin(10); KviTalGroupBox * gbox = addGroupBox(0,0,0,0,Qt::Horizontal,__tr2qs_ctx("User Mode","options")); m_pISelector = addBoolSelector(gbox,__tr2qs_ctx("Invisible (+i)","options"),&m_bI); m_pSSelector = addBoolSelector(gbox,__tr2qs_ctx("Server notices (+s)","options"),&m_bS); m_pWSelector = addBoolSelector(gbox,__tr2qs_ctx("Wallops (+w)","options"),&m_bW); gbox = addGroupBox(0,1,0,1,Qt::Horizontal,__tr2qs_ctx("Default Messages","options")); KviStringSelector * sel = addStringSelector(gbox, __tr2qs_ctx("Part message:","options"),KviOption_stringPartMessage); sel->setMinimumLabelWidth(120); mergeTip(sel,__tr2qs_ctx("<center>This is the default part message that will be used when you<br>" \ "leave a channel by closing a channel window.</center>","options")); sel = addStringSelector(gbox, __tr2qs_ctx("Quit message:","options"),KviOption_stringQuitMessage); sel->setMinimumLabelWidth(120); mergeTip(sel,__tr2qs_ctx("<center>This is the default quit message that will be used when you<br>" \ "quit your IRC session by closing the console window or disconnecting by pressing the disconnect button.</center>","options")); addRowSpacer(0,2,0,2); }
OptionsWidget_connectionSocket::OptionsWidget_connectionSocket(QWidget * parent) : KviOptionsWidget(parent) { setObjectName("transport_options_widget"); createLayout(); KviUIntSelector * u; KviTalGroupBox * g; KviBoolSelector * b; KviStringSelector * s; g = addGroupBox(0, 0, 0, 0, Qt::Horizontal, __tr2qs_ctx("Timeout Values", "options")); u = addUIntSelector(g, __tr2qs_ctx("Connect timeout:", "options"), KviOption_uintIrcSocketTimeout, 5, 6000, 60); u->setSuffix(__tr2qs_ctx(" sec", "options")); u = addUIntSelector(g, __tr2qs_ctx("Outgoing data queue flush timeout:", "options"), KviOption_uintSocketQueueFlushTimeout, 100, 2000, 500); u->setSuffix(__tr2qs_ctx(" msec", "options")); b = addBoolSelector(0, 1, 0, 1, __tr2qs_ctx("Limit outgoing traffic per connection", "options"), KviOption_boolLimitOutgoingTraffic); u = addUIntSelector(0, 2, 0, 2, __tr2qs_ctx("Limit to 1 message every:", "options"), KviOption_uintOutgoingTrafficLimitUSeconds, 10000, 2000000, 10000001, KVI_OPTION_BOOL(KviOption_boolLimitOutgoingTraffic)); u->setSuffix(__tr2qs_ctx(" usec", "options")); mergeTip(u, __tr2qs_ctx("Minimum value: <b>10000 usec</b><br>Maximum value: <b>10000000 usec</b>", "options")); connect(b, SIGNAL(toggled(bool)), u, SLOT(setEnabled(bool))); g = addGroupBox(0, 3, 0, 3, Qt::Horizontal, __tr2qs_ctx("Network Interfaces", "options")); b = addBoolSelector(g, __tr2qs_ctx("Bind IPv4 connections to:", "options"), KviOption_boolBindIrcIPv4ConnectionsToSpecifiedAddress); s = addStringSelector(g, "", KviOption_stringIPv4ConnectionBindAddress, KVI_OPTION_BOOL(KviOption_boolBindIrcIPv4ConnectionsToSpecifiedAddress)); connect(b, SIGNAL(toggled(bool)), s, SLOT(setEnabled(bool))); #ifdef COMPILE_IPV6_SUPPORT b = addBoolSelector(g, __tr2qs_ctx("Bind IPv6 connections to:", "options"), KviOption_boolBindIrcIPv6ConnectionsToSpecifiedAddress); s = addStringSelector(g, "", KviOption_stringIPv6ConnectionBindAddress, KVI_OPTION_BOOL(KviOption_boolBindIrcIPv6ConnectionsToSpecifiedAddress)); connect(b, SIGNAL(toggled(bool)), s, SLOT(setEnabled(bool))); #endif //!COMPILE_IPV6_SUPPORT b = addBoolSelector(0, 4, 0, 4, __tr2qs_ctx("Pick random IP address for round-robin servers", "options"), KviOption_boolPickRandomIpAddressForRoundRobinServers); mergeTip(b, __tr2qs_ctx("This option will cause the KVIrc networking stack to pick up " "a random entry when multiple IP address are retrieved for a server " "DNS lookup. This is harmless and can fix some problems with caching " "DNS servers that do not properly rotate the records as the authoritative " "ones would do. On the other hand, you might want to disable it if " "you want to rely on the DNS server to provide the best choice.", "options")); b = addBoolSelector(0, 5, 0, 5, __tr2qs_ctx("Drop connection on SASL authentication failure", "options"), KviOption_boolDropConnectionOnSaslFailure); mergeTip(b, __tr2qs_ctx("This option will close the socket if no SASL authentication or any SASL fallback had succeeded.", "options")); addRowSpacer(0, 6, 0, 6); }
OptionsWidget_inputFeatures::OptionsWidget_inputFeatures(QWidget * parent) : KviOptionsWidget(parent) { setObjectName("ircviewfeatures_options_widget"); createLayout(); addBoolSelector(0,0,0,0,__tr2qs_ctx("Warp cursor at the end of line when browsing history","options"),KviOption_boolInputHistoryCursorAtEnd); addBoolSelector(0,1,0,1,__tr2qs_ctx("Enable the input history logging","options"),KviOption_boolEnableInputHistory); //G&N 2005 addBoolSelector(0,2,0,2,__tr2qs_ctx("Hide input toolbuttons by default","options"),KviOption_boolHideInputToolButtons); addBoolSelector(0,3,0,3,__tr2qs_ctx("Commandline in user-friendly mode by default","options"),KviOption_boolCommandlineInUserFriendlyModeByDefault); addUIntSelector(0,4,0,4,__tr2qs_ctx("Expand tabulations in input using this amount of spaces:","options"),KviOption_uintSpacesToExpandTabulationInput,1,24,8,true); KviTalGroupBox * g = addGroupBox(0,5,0,5,Qt::Horizontal,__tr2qs_ctx("Nick Completion","options")); KviBoolSelector * b, *c; b = addBoolSelector(g,__tr2qs_ctx("Use bash-like nick completion","options"),KviOption_boolBashLikeNickCompletion,!KVI_OPTION_BOOL(KviOption_boolZshLikeNickCompletion)); c = addBoolSelector(g,__tr2qs_ctx("Use zsh-like nick completion","options"),KviOption_boolZshLikeNickCompletion,!KVI_OPTION_BOOL(KviOption_boolBashLikeNickCompletion)); connect(b,SIGNAL(toggled(bool)),c,SLOT(setDisabled(bool))); connect(c,SIGNAL(toggled(bool)),b,SLOT(setDisabled(bool))); addStringSelector(g,__tr2qs_ctx("Nick completion postfix string","options"),KviOption_stringNickCompletionPostfix); addBoolSelector(g,__tr2qs_ctx("Use the completion postfix string for the first word only","options"),KviOption_boolUseNickCompletionPostfixForFirstWordOnly); KviBoolSelector *d = addBoolSelector(0,6,0,6,__tr2qs_ctx("Use a custom cursor width","options"),KviOption_boolEnableCustomCursorWidth); KviUIntSelector *f = addUIntSelector(0,7,0,7,__tr2qs_ctx("Custom cursor width:","options"),KviOption_uintCustomCursorWidth,1,24,8,KVI_OPTION_BOOL(KviOption_boolEnableCustomCursorWidth)); f->setSuffix(__tr2qs_ctx(" px","options")); connect(d,SIGNAL(toggled(bool)),f,SLOT(setEnabled(bool))); addRowSpacer(0,8,0,8); }
OptionsWidget_timestamp::OptionsWidget_timestamp(QWidget * pParent) : KviOptionsWidget(pParent) { createLayout(); m_pUseTimestampSelector = addBoolSelector(0,0,0,0,__tr2qs_ctx("Show timestamp","options"),KviOption_boolIrcViewTimestamp); connect(m_pUseTimestampSelector,SIGNAL(toggled(bool)),this,SLOT(enableDisableTimestampSelector(bool))); KviBoolSelector* b = addBoolSelector(0,1,0,1,__tr2qs_ctx("Use UTC time for timestamp","options"),KviOption_boolIrcViewTimestampUTC,KVI_OPTION_BOOL(KviOption_boolIrcViewTimestamp)); connect(m_pUseTimestampSelector,SIGNAL(toggled(bool)),b,SLOT(setEnabled(bool))); KviTalHBox *hb = new KviTalHBox(this); addWidgetToLayout(hb,0,2,0,2); m_pSpecialTimestampColorSelector = addBoolSelector(hb,__tr2qs_ctx("Use special color for timestamps","options"),KviOption_boolUseSpecialColorForTimestamp,KVI_OPTION_BOOL(KviOption_boolIrcViewTimestamp)); connect(m_pSpecialTimestampColorSelector,SIGNAL(toggled(bool)),this,SLOT(enableDisableTimestampSelector(bool))); connect(m_pUseTimestampSelector,SIGNAL(toggled(bool)),m_pSpecialTimestampColorSelector,SLOT(setEnabled(bool))); m_pTimestampColorSelector = addMircTextColorSelector(hb,"",KviOption_uintTimeStampForeground,KviOption_uintTimeStampBackground,KVI_OPTION_BOOL(KviOption_boolIrcViewTimestamp) && KVI_OPTION_BOOL(KviOption_boolUseSpecialColorForTimestamp)); KviStringSelector * st=addStringSelector(0,3,0,3,__tr2qs_ctx("Timestamp format:","options"),KviOption_stringIrcViewTimestampFormat); connect(m_pUseTimestampSelector,SIGNAL(toggled(bool)),st,SLOT(setEnabled(bool))); connect(m_pUseTimestampSelector,SIGNAL(toggled(bool)),m_pSpecialTimestampColorSelector,SLOT(setEnabled(bool))); addRowSpacer(0,4,0,4); }
KviStringSelector * KviOptionsWidget::addStringSelector(QWidget * pParent,const QString & txt,int optId,bool bEnabled) { m_iResetFlags |= (g_stringOptionsTable[optId].flags & KviOption_resetMask); KviStringSelector * d = addStringSelector(pParent,txt,&(KVI_OPTION_STRING(optId)),bEnabled); QString tmp = m_szBasicTipStart; tmp += g_stringOptionsTable[optId].name; tmp += m_szBasicTipEnd; KviTalToolTip::add(d,tmp); return d; }
OptionsWidget_urlHandlers::OptionsWidget_urlHandlers(QWidget * parent) : KviOptionsWidget(parent) { #if defined(COMPILE_ON_WINDOWS) || defined(COMPILE_ON_MINGW) #define START_ROW 2 #else #define START_ROW 1 #endif setObjectName("urlhandlers_options_widget"); createLayout(); KviTalGroupBox * gbox = addGroupBox(0,0,0,0,Qt::Horizontal,__tr2qs_ctx("Mouse handler","options")); addLabel(gbox,__tr2qs_ctx("How many click to open links?","options")); m_pClickRadio = new QRadioButton(__tr2qs_ctx("Single click","options"),gbox); m_pDoubleClickRadio = new QRadioButton(__tr2qs_ctx("Double click","options"),gbox); switch(KVI_OPTION_UINT(KviOption_uintUrlMouseClickNum)) { case 1: m_pClickRadio->setChecked(true); break; case 2: m_pDoubleClickRadio->setChecked(true); break; } gbox = addGroupBox(0,1,0,1,Qt::Horizontal,__tr2qs_ctx("Protocol handler","options")); #if defined(COMPILE_ON_WINDOWS) || defined(COMPILE_ON_MINGW) KviBoolSelector *b = addBoolSelector(gbox,__tr2qs_ctx("Use system URL handlers","options"),KviOption_boolUseSystemUrlHandlers); #endif m_pHttpHandler=addStringSelector(gbox,__tr2qs_ctx("<b>http://</b> handler command:","options"),KviOption_stringUrlHttpCommand); m_pHttpHandler->setMinimumLabelWidth(225); m_pHttpsHandler=addStringSelector(gbox,__tr2qs_ctx("<b>https://</b> handler command:","options"),KviOption_stringUrlHttpsCommand); m_pHttpsHandler->setMinimumLabelWidth(225); m_pFtpHandler=addStringSelector(gbox,__tr2qs_ctx("<b>ftp://</b> handler command:","options"),KviOption_stringUrlFtpCommand); m_pFtpHandler->setMinimumLabelWidth(225); m_pMailtoHandler=addStringSelector(gbox,__tr2qs_ctx("<b>mailto:</b> handler command:","options"),KviOption_stringUrlMailtoCommand); m_pMailtoHandler->setMinimumLabelWidth(225); m_pFileHandler=addStringSelector(gbox,__tr2qs_ctx("<b>file://</b> handler command:","options"),KviOption_stringUrlFileCommand); m_pFileHandler->setMinimumLabelWidth(225); m_pOtherHandler=addStringSelector(gbox,__tr2qs_ctx("Unknown protocol handler command:","options"),KviOption_stringUrlUnknownCommand); m_pOtherHandler->setMinimumLabelWidth(225); #if defined(COMPILE_ON_WINDOWS) || defined(COMPILE_ON_MINGW) m_pHttpHandler->setEnabled(!KVI_OPTION_BOOL(KviOption_boolUseSystemUrlHandlers)); m_pHttpsHandler->setEnabled(!KVI_OPTION_BOOL(KviOption_boolUseSystemUrlHandlers)); m_pFtpHandler->setEnabled(!KVI_OPTION_BOOL(KviOption_boolUseSystemUrlHandlers)); m_pFileHandler->setEnabled(!KVI_OPTION_BOOL(KviOption_boolUseSystemUrlHandlers)); m_pMailtoHandler->setEnabled(!KVI_OPTION_BOOL(KviOption_boolUseSystemUrlHandlers)); m_pOtherHandler->setEnabled(!KVI_OPTION_BOOL(KviOption_boolUseSystemUrlHandlers)); connect(b,SIGNAL(toggled(bool)),this,SLOT(toggleEditors(bool))); #endif addRowSpacer(0,START_ROW+6,0,START_ROW+6); }
OptionsWidget_dccVoice::OptionsWidget_dccVoice(QWidget *p):KviOptionsWidget(p) { createLayout(); KviBoolSelector * b1 = addBoolSelector(0,0,0,0,__tr2qs_ctx("Open all minimized","options"),KviOption_boolCreateMinimizedDccVoice); KviTalGroupBox * g = addGroupBox(0,1,0,1,Qt::Horizontal,__tr2qs_ctx("On Voice Request","options")); KviBoolSelector * b = addBoolSelector(g,__tr2qs_ctx("Automatically accept","options"),KviOption_boolAutoAcceptDccVoice); b = addBoolSelector(g,__tr2qs_ctx("Open minimized when auto-accepted","options"),KviOption_boolCreateMinimizedDccVoiceWhenAutoAccepted,!KVI_OPTION_BOOL(KviOption_boolCreateMinimizedDccVoice)); connect(b1,SIGNAL(toggled(bool)),b,SLOT(setNotEnabled(bool))); addBoolSelector(0,2,0,2,__tr2qs_ctx("Force half-duplex mode on sound device","options"), KviOption_boolDccVoiceForceHalfDuplex); addBoolSelector(0,3,0,3,__tr2qs_ctx("Volume slider controls PCM, not Master","options"), KviOption_boolDccVoiceVolumeSliderControlsPCM); addStringSelector(0,4,0,4,__tr2qs_ctx("Sound device:","options"), KviOption_stringDccVoiceSoundDevice)->setMinimumLabelWidth(150); addStringSelector(0,5,0,5,__tr2qs_ctx("Mixer device:","options"), KviOption_stringDccVoiceMixerDevice)->setMinimumLabelWidth(150); KviUIntSelector * u = addUIntSelector(0,6,0,6,__tr2qs_ctx("Pre-buffer size:","options"), KviOption_uintDccVoicePreBufferSize, 2048, 65536, 32000); u->setSuffix(" bytes"); addRowSpacer(0,7,0,7); }
OptionsWidget_dccAdvanced::OptionsWidget_dccAdvanced(QWidget * parent) : KviOptionsWidget(parent) { setObjectName("dccgeneral_options_widget"); createLayout(); KviTalGroupBox * g = addGroupBox(0,0,0,0,Qt::Horizontal,__tr2qs_ctx("Network Properties","options")); KviBoolSelector * b = addBoolSelector(g,__tr2qs_ctx("Use user-defined address or network interface","options"),KviOption_boolDccListenOnSpecifiedInterfaceByDefault); mergeTip(b,__tr2qs_ctx("<center>Enable this option if you are on a multihost machine and want " \ "to force one of the available IP addresses to be used for outgoing DCCs.<br>This is especially useful " \ "when you use IPv6 and IPv4 addresses.<br>You can force KVIrc to always choose the IPv4 interface.</center>","options")); KviStringSelector * s = addStringSelector(g,__tr2qs_ctx("Listen on address/interface:","options"),KviOption_stringDccListenDefaultInterface,KVI_OPTION_BOOL(KviOption_boolDccListenOnSpecifiedInterfaceByDefault)); mergeTip(s,__tr2qs_ctx("<center>This is the IP address or name of the interface to use by default for outgoing DCC transfers.<br>" \ "On UNIX systems that support it, you can also specify IPv4 interface names (such as <b>ppp0</b>).<br>" \ "If you set it to <b>0.0.0.0</b>, KVIrc will try to use the first available IPv4 interface</center>","options")); connect(b,SIGNAL(toggled(bool)),s,SLOT(setEnabled(bool))); b = addBoolSelector(g,__tr2qs_ctx("Use user-defined port range","options"),KviOption_boolUserDefinedPortRange); mergeTip(b,__tr2qs_ctx("<center>Enable this option if you want specify a local port range for DCC.</center>","options")); KviTalHBox * hb = new KviTalHBox(g); hb->setSpacing(4); KviUIntSelector * u = addUIntSelector(hb,__tr2qs_ctx("Lowest port:","options"),KviOption_uintDccMinPort,1,65535,5000,KVI_OPTION_BOOL(KviOption_boolUserDefinedPortRange)); connect(b,SIGNAL(toggled(bool)),u,SLOT(setEnabled(bool))); u = addUIntSelector(hb,__tr2qs_ctx("Highest port:","options"),KviOption_uintDccMaxPort,1,65535,30000,KVI_OPTION_BOOL(KviOption_boolUserDefinedPortRange)); connect(b,SIGNAL(toggled(bool)),u,SLOT(setEnabled(bool))); b = addBoolSelector(g,__tr2qs_ctx("Send a fixed address in requests","options"),KviOption_boolDccSendFakeAddressByDefault); mergeTip(b,__tr2qs_ctx("<center>Enable this option if you want to always send a fake IP address in your DCC requests.<br>" \ "This might be useful if you're behind a router with a static address that does network address translation (NAT) and forwards all or a range of ports.</center>","options")); s = addStringSelector(g,__tr2qs_ctx("Send address/interface:","options"),KviOption_stringDefaultDccFakeAddress,KVI_OPTION_BOOL(KviOption_boolDccSendFakeAddressByDefault)); connect(b,SIGNAL(toggled(bool)),s,SLOT(setEnabled(bool))); mergeTip(s,__tr2qs_ctx("<center>This is the fixed address that will be sent with all DCC requests if you enable the option above.</center>","options")); KviBoolSelector * b2; b2 = addBoolSelector(g,__tr2qs_ctx("Guess address from IRC server if unroutable","options"),KviOption_boolDccGuessIpFromServerWhenLocalIsUnroutable,!KVI_OPTION_BOOL(KviOption_boolDccSendFakeAddressByDefault)); connect(b,SIGNAL(toggled(bool)),b2,SLOT(setNotEnabled(bool))); mergeTip(b2,__tr2qs_ctx("<center>You can enable this option if you are behind a router that forwards all or a range of ports.<br>" \ "KVIrc will try to guess the IP address to use for DCC by looking up the local hostname as seen " \ "by the IRC server you're connected to.<br>This method is an exclusive alternative to the \"fixed address\" above.<br>" \ "It might guess the correct address automatically if certain conditions are met (e.g. the IRC server does not mask hostnames).</center>","options")); b = addBoolSelector(g,__tr2qs_ctx("Use \"broken bouncer hack\" to detect address","options"),KviOption_boolDccBrokenBouncerHack,KVI_OPTION_BOOL(KviOption_boolDccGuessIpFromServerWhenLocalIsUnroutable)); mergeTip(b,__tr2qs_ctx("<center>When you're behind a dialup router and also tunneling through a psyBNC bouncer, " \ "you can use a bug in the bouncer to force KVIrc to bind the DCC connections to the dialup router's address.<br>" \ "It's an ugly hack - use it only if nothing else works.</center>","options")); connect(b2,SIGNAL(toggled(bool)),b,SLOT(setEnabled(bool))); b = addBoolSelector(0,1,1,1,__tr2qs_ctx("Notify failed DCC handshakes to the remote end","options"),KviOption_boolNotifyFailedDccHandshakes); mergeTip(b,__tr2qs_ctx("<center>If you enable this option, when a DCC request from a remote " \ "user can't be satisfied KVIrc will notify him by a CTCP ERRMSG. This is " \ "a nice feature so it is a good idea to leave it on unless for some reason " \ "you have deactivated the antiflood system: in this case turning off this option " \ "might help if you often get attacked by CTCP floods.</center>","options")); u = addUIntSelector(0,2,1,2,__tr2qs_ctx("Maximum number of DCC sessions","options"),KviOption_uintMaxDccSlots,0,1000,64); mergeTip(u,__tr2qs_ctx("<center>This is the maximum number of concurrent DCC sessions " \ "and it includes all the DCC types (send,chat,recv...). " \ "KVIrc will refuse the requests when this limit is reached.</center>","options")); u = addUIntSelector(0,3,1,3,__tr2qs_ctx("DCC socket timeout:","options"),KviOption_uintDccSocketTimeout,10,65536,180); u->setSuffix(__tr2qs_ctx(" sec","options")); mergeTip(u,__tr2qs_ctx("<center>This is the amount of time that KVIrc will wait for a response before assuming that a DCC has failed " \ "because the remote client was unable to connect to our listening socket.</center>","options")); addRowSpacer(0,4,1,4); }
OptionsWidget_identService::OptionsWidget_identService(QWidget * parent) : KviOptionsWidget(parent) { setObjectName("ident_options_widget"); createLayout(); #if defined(COMPILE_ON_WINDOWS) || defined(COMPILE_ON_MINGW) m_pEnableIdent = addBoolSelector(0,0,0,0,__tr2qs_ctx("Enable Ident service","options"),KviOption_boolUseIdentService); #else m_pEnableIdent = addBoolSelector(0,0,0,0,__tr2qs_ctx("Enable Ident service (bad practice on UNIX!)","options"),KviOption_boolUseIdentService); #endif connect(m_pEnableIdent,SIGNAL(toggled(bool)),this,SLOT(enableIpv4InIpv6(bool))); KviTalGroupBox * gbox = addGroupBox(0,1,0,1,Qt::Horizontal,__tr2qs_ctx("Output Verbosity","options"),KVI_OPTION_BOOL(KviOption_boolUseIdentService)); connect(m_pEnableIdent,SIGNAL(toggled(bool)),gbox,SLOT(setEnabled(bool))); addLabel(gbox,__tr2qs_ctx("Output Ident service messages to:","options")); m_pActiveRadio = new QRadioButton(__tr2qs_ctx("Active window","options"),gbox); m_pConsoleRadio = new QRadioButton(__tr2qs_ctx("Console","options"),gbox); m_pQuietRadio = new QRadioButton(__tr2qs_ctx("Do not show any Ident service messages","options"),gbox); switch(KVI_OPTION_UINT(KviOption_uintIdentdOutputMode)) { case KviIdentdOutputMode::Quiet : m_pQuietRadio->setChecked(true); break; case KviIdentdOutputMode::ToConsole : m_pConsoleRadio->setChecked(true); break; case KviIdentdOutputMode::ToActiveWindow : m_pActiveRadio->setChecked(true); break; } gbox = addGroupBox(0,2,0,2,Qt::Horizontal,__tr2qs_ctx("Configuration","options"),KVI_OPTION_BOOL(KviOption_boolUseIdentService)); KviBoolSelector *b = addBoolSelector(gbox,__tr2qs_ctx("Enable Ident service only while connecting to server","options"),KviOption_boolUseIdentServiceOnlyOnConnect); connect(m_pEnableIdent,SIGNAL(toggled(bool)),b,SLOT(setEnabled(bool))); KviStringSelector * s = addStringSelector(gbox,__tr2qs_ctx("Ident username:"******"options"), KviOption_stringIdentdUser,KVI_OPTION_BOOL(KviOption_boolUseIdentService)); connect(m_pEnableIdent,SIGNAL(toggled(bool)),s,SLOT(setEnabled(bool))); KviUIntSelector * u = addUIntSelector(gbox,__tr2qs_ctx("Service port:","options"), KviOption_uintIdentdPort,0,65535,113,KVI_OPTION_BOOL(KviOption_boolUseIdentService)); connect(m_pEnableIdent,SIGNAL(toggled(bool)),u,SLOT(setEnabled(bool))); connect(m_pEnableIdent,SIGNAL(toggled(bool)),gbox,SLOT(setEnabled(bool))); gbox = addGroupBox(0,3,0,3,Qt::Horizontal,__tr2qs_ctx("IPv6 Settings","options"),KVI_OPTION_BOOL(KviOption_boolUseIdentService)); m_pEnableIpv6 = addBoolSelector(gbox,__tr2qs_ctx("Enable service for IPv6","options"), KviOption_boolIdentdEnableIPv6, KVI_OPTION_BOOL(KviOption_boolUseIdentService)); #ifdef COMPILE_IPV6_SUPPORT connect(m_pEnableIdent,SIGNAL(toggled(bool)),m_pEnableIpv6,SLOT(setEnabled(bool))); connect(m_pEnableIpv6,SIGNAL(toggled(bool)),this,SLOT(enableIpv4InIpv6(bool))); #else m_pEnableIpv6->setEnabled(false); #endif m_pIpv4InIpv6 = addBoolSelector(gbox,__tr2qs_ctx("IP stack treats IPv4 as part of IPv6 namespace","options"), KviOption_boolIdentdIPv6ContainsIPv4, KVI_OPTION_BOOL(KviOption_boolUseIdentService) && KVI_OPTION_BOOL(KviOption_boolIdentdEnableIPv6)); connect(m_pEnableIdent,SIGNAL(toggled(bool)),gbox,SLOT(setEnabled(bool))); addLabel(0,4,0,4, #if defined(COMPILE_ON_WINDOWS) || defined(COMPILE_ON_MINGW) __tr2qs_ctx("<p><b>Warning:</b><br>" \ "This is a <b>non RFC 1413 compliant</b> Ident daemon that implements " \ "only a limited subset of the Identification Protocol specifications. If it is possible, install a " \ "real Ident daemon.</p>","options") #else __tr2qs_ctx("<p><b>Warning:</b><br>" \ "This is a <b>non RFC 1413 compliant</b> Ident daemon that implements " \ "only a limited subset of the <b>Identification Protocol</b> specifications.<br>" \ "On UNIX, you may also need root privileges to bind to the auth port (113).<br>" \ "It is <b>highly recommended</b> that a <b>real</b> system-wide Ident daemon be used instead, "\ "or none at all if Ident is not required.</p>","options") #endif ); addRowSpacer(0,5,0,5); }
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); }