diff options
| author | 2008-08-28 08:42:28 +0000 | |
|---|---|---|
| committer | 2008-08-28 08:42:28 +0000 | |
| commit | f34712df41c16e46ad712d097e43ddfcf542b7b4 (patch) | |
| tree | 73955185ff2568d8e147edf70fabc74b4e791164 /src | |
| parent | fix (diff) | |
| download | KVIrc-f34712df41c16e46ad712d097e43ddfcf542b7b4.tar.gz KVIrc-f34712df41c16e46ad712d097e43ddfcf542b7b4.tar.bz2 KVIrc-f34712df41c16e46ad712d097e43ddfcf542b7b4.zip | |
an option to place nicks starting with non-alpha chars (such as _COOL_BOY_) after the normal nicks in userlistview
git-svn-id: https://svn.kvirc.de/svn/trunk/kvirc@2331 17fca916-40b9-46aa-a4ea-0a15b648b75c
Diffstat (limited to 'src')
| -rw-r--r-- | src/kvilib/core/kvi_qstring.cpp | 10 | ||||
| -rw-r--r-- | src/kvilib/core/kvi_qstring.h | 16 | ||||
| -rw-r--r-- | src/kvirc/kernel/kvi_options.cpp | 3 | ||||
| -rw-r--r-- | src/kvirc/kernel/kvi_options.h | 3 | ||||
| -rw-r--r-- | src/kvirc/ui/kvi_userlistview.cpp | 4 | ||||
| -rw-r--r-- | src/modules/options/optw_userlist.cpp | 21 |
6 files changed, 35 insertions, 22 deletions
diff --git a/src/kvilib/core/kvi_qstring.cpp b/src/kvilib/core/kvi_qstring.cpp index b68cfacda..0602398ed 100644 --- a/src/kvilib/core/kvi_qstring.cpp +++ b/src/kvilib/core/kvi_qstring.cpp @@ -293,7 +293,7 @@ namespace KviQString return 0; // never here } - int cmpCI(const QString &sz1,const QString &sz2) + int cmpCI(const QString &sz1,const QString &sz2,bool nonAlphaGreater) { const QChar * c1 = sz1.unicode(); const QChar * c2 = sz2.unicode(); @@ -309,6 +309,14 @@ namespace KviQString for(;;) { + if(nonAlphaGreater) { + if(c1->isLetterOrNumber() && !c2->isLetterOrNumber()) { + return -1; + } else if(!c1->isLetterOrNumber() && c2->isLetterOrNumber()) { + return 1; + } + } + if(c1 >= c1e) { if(c2 < c2e)return /* 0 */ - (c2->toLower().unicode()); diff --git a/src/kvilib/core/kvi_qstring.h b/src/kvilib/core/kvi_qstring.h index b88d73622..9d6034be6 100644 --- a/src/kvilib/core/kvi_qstring.h +++ b/src/kvilib/core/kvi_qstring.h @@ -81,7 +81,7 @@ namespace KviQString // return < 0 ---> str1 < str2 // return = 0 ---> str1 = str2 // return > 0 ---> str1 > str2 - extern KVILIB_API int cmpCI(const QString &sz1,const QString &sz2); + extern KVILIB_API int cmpCI(const QString &sz1,const QString &sz2,bool nonAlphaGreater = false); extern KVILIB_API int cmpCIN(const QString &sz1,const QString &sz2,unsigned int len); extern KVILIB_API int cmpCS(const QString &sz1,const QString &sz2); @@ -113,7 +113,7 @@ namespace KviQString extern KVILIB_API void appendNumber(QString &s,int iInteger); extern KVILIB_API void appendNumber(QString &s,unsigned int uInteger); extern KVILIB_API void appendNumber(QString &s,kvi_u64_t uInteger); - + extern KVILIB_API void cutFromFirst(QString &s,const QChar &c,bool bIncluded = true); extern KVILIB_API void cutFromLast(QString &s,const QChar &c,bool bIncluded = true); extern KVILIB_API void cutToFirst(QString &s,const QChar &c,bool bIncluded = true,bool bClearIfNotFound = false); @@ -122,11 +122,11 @@ namespace KviQString extern KVILIB_API void cutFromLast(QString &s,const QString &c,bool bIncluded = true); extern KVILIB_API void cutToFirst(QString &s,const QString &c,bool bIncluded = true,bool bClearIfNotFound = false); extern KVILIB_API void cutToLast(QString &s,const QString &c,bool bIncluded = true,bool bClearIfNotFound = false); - + extern KVILIB_API QString upperISO88591(const QString &szSrc); extern KVILIB_API QString lowerISO88591(const QString &szSrc); extern KVILIB_API QString getToken(QString &szString,const QChar &sep); - + extern KVILIB_API void transliterate(QString &s,const QString &szToFind,const QString &szReplacement); extern KVILIB_API void bufferToHex(QString &szRetBuffer,const unsigned char * buffer,unsigned int len); @@ -142,7 +142,7 @@ namespace KviQString { return s.toLower(); } - + inline int find(const QString &s,QChar c,int index = 0,bool cs = true) { return s.indexOf(c,index,cs ? Qt::CaseSensitive : Qt::CaseInsensitive); @@ -203,7 +203,7 @@ namespace KviQString // at the end of the instruction and the c pointer gets thus invalidated. // Use // KviQCString tmp = KviQString::toUtf8(something); - // char * c = tmp.data(); + // char * c = tmp.data(); // instead. // Yes, I know that it sucks, but it's the only way to // transit to qt 4.x more or less cleanly... @@ -216,7 +216,7 @@ namespace KviQString { return s.toLocal8Bit(); } - + inline kvi_i64_t toI64(QString &szNumber,bool * bOk) { #if SYSTEM_SIZE_OF_LONG_INT == 8 @@ -225,7 +225,7 @@ namespace KviQString return szNumber.toLongLong(bOk); #endif } - + inline kvi_u64_t toU64(QString &szNumber,bool * bOk) { #if SYSTEM_SIZE_OF_LONG_INT == 8 diff --git a/src/kvirc/kernel/kvi_options.cpp b/src/kvirc/kernel/kvi_options.cpp index 5fb4676c7..44d60bce2 100644 --- a/src/kvirc/kernel/kvi_options.cpp +++ b/src/kvirc/kernel/kvi_options.cpp @@ -309,7 +309,8 @@ KviBoolOption g_boolOptionsTable[KVI_NUM_BOOL_OPTIONS]= BOOL_OPTION("PickRandomIpAddressForRoundRobinServers",true,KviOption_sectFlagConnection), BOOL_OPTION("PrependAvatarInfoToRealname",true,KviOption_sectFlagConnection), BOOL_OPTION("EnableAnimatedAvatars",true,KviOption_sectFlagGui | KviOption_resetUpdateGui), - BOOL_OPTION("EnableAnimatedSmiles",true,KviOption_sectFlagGui | KviOption_resetUpdateGui) + BOOL_OPTION("EnableAnimatedSmiles",true,KviOption_sectFlagGui | KviOption_resetUpdateGui), + BOOL_OPTION("PlaceNickWithNonAlphaCharsAtEnd",true,KviOption_sectFlagGui | KviOption_resetUpdateGui) }; #define STRING_OPTION(_txt,_val,_flags) KviStringOption(KVI_STRING_OPTIONS_PREFIX _txt,_val,_flags) diff --git a/src/kvirc/kernel/kvi_options.h b/src/kvirc/kernel/kvi_options.h index d79d0fac4..75410df35 100644 --- a/src/kvirc/kernel/kvi_options.h +++ b/src/kvirc/kernel/kvi_options.h @@ -317,8 +317,9 @@ DECLARE_OPTION_STRUCT(KviStringListOption,QStringList) #define KviOption_boolPrependAvatarInfoToRealname 223 #define KviOption_boolEnableAnimatedAvatars 224 #define KviOption_boolEnableAnimatedSmiles 225 +#define KviOption_boolPlaceNickWithNonAlphaCharsAtEnd 226 -#define KVI_NUM_BOOL_OPTIONS 226 +#define KVI_NUM_BOOL_OPTIONS 227 diff --git a/src/kvirc/ui/kvi_userlistview.cpp b/src/kvirc/ui/kvi_userlistview.cpp index bec681ec3..f6a11b73d 100644 --- a/src/kvirc/ui/kvi_userlistview.cpp +++ b/src/kvirc/ui/kvi_userlistview.cpp @@ -645,7 +645,9 @@ void KviUserListView::insertUserEntry(const QString &nick,KviUserListEntry * e) } // else it is chan owner, so nothing to skip: the chan owners are first in the list // now strcmp within the current user-flag group... - while(entry && (KviQString::cmpCI(entry->m_szNick,e->m_szNick) < 0) && + while(entry && (KviQString::cmpCI(entry->m_szNick,e->m_szNick, + KVI_OPTION_BOOL(KviOption_boolPlaceNickWithNonAlphaCharsAtEnd) + ) < 0) && ((entry->m_iFlags & flag) || (flag == 0))) { if(entry == m_pTopItem)bGotTopItem = true; diff --git a/src/modules/options/optw_userlist.cpp b/src/modules/options/optw_userlist.cpp index 74c2d93ec..fb308d3ee 100644 --- a/src/modules/options/optw_userlist.cpp +++ b/src/modules/options/optw_userlist.cpp @@ -47,7 +47,7 @@ KviUserListLookForegroundOptionsWidget::KviUserListLookForegroundOptionsWidget(Q createLayout(); addFontSelector(0,0,1,0,__tr2qs_ctx("Font:","options"),KviOption_fontUserListView); - + KviTalGroupBox * g = addGroupBox(0,1,1,1,Qt::Horizontal,__tr2qs_ctx("Nickname Colors","options")); addColorSelector(g,__tr2qs_ctx("Normal:","options"),KviOption_colorUserListViewNormalForeground); addColorSelector(g,__tr2qs_ctx("Selected:","options"),KviOption_colorUserListViewSelectionForeground); @@ -58,7 +58,7 @@ KviUserListLookForegroundOptionsWidget::KviUserListLookForegroundOptionsWidget(Q addColorSelector(g,__tr2qs_ctx("Voice:","options"),KviOption_colorUserListViewVoiceForeground); addColorSelector(g,__tr2qs_ctx("User-op:","options"),KviOption_colorUserListViewUserOpForeground); addColorSelector(g,__tr2qs_ctx("Away:","options"),KviOption_colorUserListViewAwayForeground); - + KviTalHBox * hb = new KviTalHBox(g); hb->setSpacing(4); KviBoolSelector * b = addBoolSelector(hb,__tr2qs_ctx("Use different color for own nick:","options"),KviOption_boolUseDifferentColorForOwnNick); @@ -109,7 +109,7 @@ void KviUserListGridOptionsWidget::commit() KVI_OPTION_UINT(KviOption_uintUserListViewGridType) = m_pGridTypeCombo->currentIndex(); if(KVI_OPTION_UINT(KviOption_uintUserListViewGridType) > KVI_USERLISTVIEW_GRIDTYPE_MAXIMUM) KVI_OPTION_UINT(KviOption_uintUserListViewGridType) = KVI_USERLISTVIEW_GRIDTYPE_DEFAULT; - + } ////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -129,21 +129,21 @@ KviUserListLookBackgroundOptionsWidget::KviUserListLookBackgroundOptionsWidget(Q addLabel(0,2,0,2,__tr2qs_ctx("Horizontal Alignment:","options")); m_pHorizontalAlign=new QComboBox(this); addWidgetToLayout(m_pHorizontalAlign,1,2,1,2); - + addLabel(0,3,0,3,__tr2qs_ctx("Vertical Alignment:","options")); m_pVerticalAlign=new QComboBox(this); addWidgetToLayout(m_pVerticalAlign,1,3,1,3); - + m_pHorizontalAlign->addItem(__tr2qs_ctx("Tile","options")); m_pHorizontalAlign->addItem(__tr2qs_ctx("Left","options")); m_pHorizontalAlign->addItem(__tr2qs_ctx("Right","options")); m_pHorizontalAlign->addItem(__tr2qs_ctx("Center","options")); - + m_pVerticalAlign->addItem(__tr2qs_ctx("Tile","options")); m_pVerticalAlign->addItem(__tr2qs_ctx("Top","options")); m_pVerticalAlign->addItem(__tr2qs_ctx("Bottom","options")); m_pVerticalAlign->addItem(__tr2qs_ctx("Center","options")); - + switch( KVI_OPTION_UINT(KviOption_uintUserListPixmapAlign) & Qt::AlignHorizontal_Mask) { case Qt::AlignLeft: @@ -158,7 +158,7 @@ KviUserListLookBackgroundOptionsWidget::KviUserListLookBackgroundOptionsWidget(Q default: m_pHorizontalAlign->setCurrentIndex(0); } - + switch( KVI_OPTION_UINT(KviOption_uintUserListPixmapAlign) & Qt::AlignVertical_Mask) { case Qt::AlignTop: @@ -213,7 +213,7 @@ void KviUserListLookBackgroundOptionsWidget::commit() iFlags|=Qt::AlignVCenter; break; } - + KVI_OPTION_UINT(KviOption_uintUserListPixmapAlign)=iFlags; } @@ -232,8 +232,9 @@ KviUserListFeaturesOptionsWidget::KviUserListFeaturesOptionsWidget(QWidget * par b = addBoolSelector(0,4,0,4,__tr2qs_ctx("Enable user tooltips","options"),KviOption_boolShowUserListViewToolTips); b = addBoolSelector(0,5,0,5,__tr2qs_ctx("Show avatars in userlist","options"),KviOption_boolShowAvatarsInUserlist); b = addBoolSelector(0,6,0,6,__tr2qs_ctx("Enable animated avatars","options"),KviOption_boolEnableAnimatedAvatars); + b = addBoolSelector(0,7,0,7,__tr2qs_ctx("Place nicks starting with non-alpha chars (such as _COOL_BOY_) after the normal nicks","options"),KviOption_boolPlaceNickWithNonAlphaCharsAtEnd); - addRowSpacer(0,7,0,7); + addRowSpacer(0,8,0,8); } KviUserListFeaturesOptionsWidget::~KviUserListFeaturesOptionsWidget() |
