aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorGravatar Alexey Uzhva2008-08-28 08:42:28 +0000
committerGravatar Alexey Uzhva2008-08-28 08:42:28 +0000
commitf34712df41c16e46ad712d097e43ddfcf542b7b4 (patch)
tree73955185ff2568d8e147edf70fabc74b4e791164 /src
parentfix (diff)
downloadKVIrc-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.cpp10
-rw-r--r--src/kvilib/core/kvi_qstring.h16
-rw-r--r--src/kvirc/kernel/kvi_options.cpp3
-rw-r--r--src/kvirc/kernel/kvi_options.h3
-rw-r--r--src/kvirc/ui/kvi_userlistview.cpp4
-rw-r--r--src/modules/options/optw_userlist.cpp21
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()