aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/kvirc/kernel/kvi_options.cpp6
-rw-r--r--src/kvirc/ui/kvi_console.cpp62
-rw-r--r--src/kvirc/ui/kvi_console.h3
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; };