diff options
| -rw-r--r-- | src/kvirc/kernel/kvi_options.cpp | 6 | ||||
| -rw-r--r-- | src/kvirc/ui/kvi_console.cpp | 62 | ||||
| -rw-r--r-- | src/kvirc/ui/kvi_console.h | 3 |
3 files changed, 45 insertions, 26 deletions
diff --git a/src/kvirc/kernel/kvi_options.cpp b/src/kvirc/kernel/kvi_options.cpp index 384c2348e..069409359 100644 --- a/src/kvirc/kernel/kvi_options.cpp +++ b/src/kvirc/kernel/kvi_options.cpp @@ -313,7 +313,7 @@ KviBoolOption g_boolOptionsTable[KVI_NUM_BOOL_OPTIONS]= BOOL_OPTION("UseStartTlsIfAvailable",true,KviOption_sectFlagConnection), BOOL_OPTION("PasteLastLogOnChannelJoin",false,KviOption_sectFlagLogging), BOOL_OPTION("PasteLastLogOnQueryJoin",false,KviOption_sectFlagLogging), - BOOL_OPTION("UseSpecifiedSmartColorForOwnNick",false,KviOption_sectFlagIrcView | KviOption_groupTheme), + BOOL_OPTION("UseSpecifiedSmartColorForOwnNick",false,KviOption_sectFlagIrcView | KviOption_resetUpdateGui | KviOption_groupTheme), BOOL_OPTION("UseFullWordHighlighting",false,KviOption_sectFlagIrcView), BOOL_OPTION("ZshLikeNickCompletion",false,KviOption_sectFlagInput) }; @@ -640,8 +640,8 @@ KviUIntOption g_uintOptionsTable[KVI_NUM_UINT_OPTIONS]= UINT_OPTION("LinesToPasteOnQueryJoin",10,KviOption_sectFlagLogging), UINT_OPTION("DaysIntervalToPasteOnQueryJoin",10,KviOption_sectFlagLogging), UINT_OPTION("SpacesToExpandTabulationInput",4,KviOption_sectFlagInput), - UINT_OPTION("UserIrcViewOwnForeground",4,KviOption_sectFlagIrcView | KviOption_groupTheme), - UINT_OPTION("UserIrcViewOwnBackground",8,KviOption_sectFlagIrcView | KviOption_groupTheme), + UINT_OPTION("UserIrcViewOwnForeground",4,KviOption_sectFlagIrcView | KviOption_resetUpdateGui | KviOption_groupTheme), + UINT_OPTION("UserIrcViewOwnBackground",8,KviOption_sectFlagIrcView | KviOption_resetUpdateGui | KviOption_groupTheme), UINT_OPTION("NotifierPixmapAlign",0,KviOption_sectFlagNotifier | KviOption_groupTheme) }; diff --git a/src/kvirc/ui/kvi_console.cpp b/src/kvirc/ui/kvi_console.cpp index 4a3197333..e829e59ac 100644 --- a/src/kvirc/ui/kvi_console.cpp +++ b/src/kvirc/ui/kvi_console.cpp @@ -151,6 +151,8 @@ KviConsole::KviConsole(KviFrame * lpFrm,int iFlags) m_pTmpHighLightedChannels = new QStringList; if(KVI_OPTION_BOOL(KviOption_boolAutoLogConsole))m_pIrcView->startLogging(); + + applyOptions(); } void KviConsole::recentUrlsChanged(){ @@ -693,6 +695,21 @@ static const char * g_nickColors[KVI_NUM_NICK_COLORS]= "15,1" ,"15,2" ,"15,3" ,"15,6" ,"15,14" //5 }; +inline static int getSmartColorForNick(QString *szNick) +{ + int sum = 0; + int i = szNick->length(); + const QChar * aux = szNick->unicode(); + // FIXME: Shouldn't this be case insensitive ? + while(i > 0) + { + sum += aux->unicode(); + aux++; + i--; + } + return sum; +} + void KviConsole::outputPrivmsg(KviWindow *wnd, int type, const QString &daNick, @@ -769,33 +786,20 @@ void KviConsole::outputPrivmsg(KviWindow *wnd, if(KVI_OPTION_BOOL(KviOption_boolColorNicks)) { - if(KVI_OPTION_BOOL(KviOption_boolUseSpecifiedSmartColorForOwnNick) && \ - (QString::compare(nick,connection()->userInfo()->nickName(),Qt::CaseSensitive)==0)) + if(KVI_OPTION_BOOL(KviOption_boolUseSpecifiedSmartColorForOwnNick)) { - QString szOwnColor; - int back = KVI_OPTION_UINT(KviOption_uintUserIrcViewOwnBackground); - if(back==KVI_TRANSPARENT) + if(QString::compare(nick,connection()->userInfo()->nickName(),Qt::CaseSensitive)==0) { - KviQString::sprintf(szOwnColor,"%d", \ - KVI_OPTION_UINT(KviOption_uintUserIrcViewOwnForeground)); + szNick.prepend(m_szOwnSmartColor); } else { - KviQString::sprintf(szOwnColor,"%d,%d", \ - KVI_OPTION_UINT(KviOption_uintUserIrcViewOwnForeground), \ - back); + int sum=getSmartColorForNick(&nick); + //avoid the use of teh color specifier for own nickname + if(m_szOwnSmartColor==g_nickColors[sum % KVI_NUM_NICK_COLORS]) + sum++; + szNick.prepend(g_nickColors[sum % KVI_NUM_NICK_COLORS]); } - szNick.prepend(szOwnColor); } else { - int sum = 0; - int i = nick.length(); - const QChar * aux = nick.unicode(); - // FIXME: Shouldn't this be case insensitive ? - while(i > 0) - { - sum += aux->unicode(); - aux++; - i--; - } - szNick.prepend(g_nickColors[sum % KVI_NUM_NICK_COLORS]); + szNick.prepend(g_nickColors[getSmartColorForNick(&nick) % KVI_NUM_NICK_COLORS]); } szNick.prepend(KVI_TEXT_COLOR); szNick.append(KVI_TEXT_COLOR); @@ -1082,6 +1086,20 @@ void KviConsole::applyOptions() // trick resize(width() - 1,height() - 1); resize(width() + 1,height() + 1); + + if(KVI_OPTION_BOOL(KviOption_boolUseSpecifiedSmartColorForOwnNick)) + { + int back = KVI_OPTION_UINT(KviOption_uintUserIrcViewOwnBackground); + if(back==KVI_TRANSPARENT) + { + KviQString::sprintf(m_szOwnSmartColor,"%d", \ + KVI_OPTION_UINT(KviOption_uintUserIrcViewOwnForeground)); + } else { + KviQString::sprintf(m_szOwnSmartColor,"%d,%d", \ + KVI_OPTION_UINT(KviOption_uintUserIrcViewOwnForeground), \ + back); + } + } } void KviConsole::resizeEvent(QResizeEvent *) diff --git a/src/kvirc/ui/kvi_console.h b/src/kvirc/ui/kvi_console.h index 21f47736a..642dae76b 100644 --- a/src/kvirc/ui/kvi_console.h +++ b/src/kvirc/ui/kvi_console.h @@ -93,6 +93,7 @@ protected: KviWindowToolPageButton * m_pNotifyViewButton; QComboBox * m_pAddressEdit; QString m_szStatusString; // nick (flags) on server | not connected + QString m_szOwnSmartColor; QStringList * m_pTmpHighLightedChannels; protected: // UI @@ -119,7 +120,7 @@ protected: int triggerOnHighlight(KviWindow *wnd,int type,const QString &nick,const QString &user,const QString &host,const QString &szMsg,const QString &trigger); void showNotifyList(bool bShow); - + static int getSmartColorHashForNick(QString *szNick); public: // UI inline KviUserListView * notifyListView(){ return m_pNotifyListView; }; |
