Skip to content
Projeler
Gruplar
Parçacıklar
Yardım
Yükleniyor...
Oturum aç / Kaydol
Gezinmeyi değiştir
C
core
Proje
Proje
Ayrıntılar
Etkinlik
Cycle Analytics
Depo (repository)
Depo (repository)
Dosyalar
Kayıtlar (commit)
Dallar (branch)
Etiketler
Katkıda bulunanlar
Grafik
Karşılaştır
Grafikler
Konular (issue)
0
Konular (issue)
0
Liste
Pano
Etiketler
Kilometre Taşları
Birleştirme (merge) Talepleri
0
Birleştirme (merge) Talepleri
0
CI / CD
CI / CD
İş akışları (pipeline)
İşler
Zamanlamalar
Grafikler
Paketler
Paketler
Wiki
Wiki
Parçacıklar
Parçacıklar
Üyeler
Üyeler
Collapse sidebar
Close sidebar
Etkinlik
Grafik
Grafikler
Yeni bir konu (issue) oluştur
İşler
Kayıtlar (commit)
Konu (issue) Panoları
Kenar çubuğunu aç
LibreOffice
core
Commits
344edada
Kaydet (Commit)
344edada
authored
May 29, 2011
tarafından
Kohei Yoshida
Dosyalara gözat
Seçenekler
Dosyalara Gözat
İndir
Eposta Yamaları
Sade Fark
String to rtl::OUString & sal_Bool to bool in ScUserList et. al.
üst
6882d598
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
144 additions
and
97 deletions
+144
-97
userlist.hxx
sc/inc/userlist.hxx
+39
-36
userlist.cxx
sc/source/core/tool/userlist.cxx
+104
-60
tpusrlst.cxx
sc/source/ui/optdlg/tpusrlst.cxx
+1
-1
No files found.
sc/inc/userlist.hxx
Dosyayı görüntüle @
344edada
...
@@ -33,34 +33,46 @@
...
@@ -33,34 +33,46 @@
#include "scdllapi.h"
#include "scdllapi.h"
#include "collect.hxx"
#include "collect.hxx"
//------------------------------------------------------------------------
#include <boost/ptr_container/ptr_vector.hpp>
/**
* Stores individual user-defined sort list.
*/
class
SC_DLLPUBLIC
ScUserListData
:
public
ScDataObject
class
SC_DLLPUBLIC
ScUserListData
:
public
ScDataObject
{
{
friend
class
ScUserList
;
public
:
String
aStr
;
struct
SubStr
sal_uInt16
nTokenCount
;
{
String
*
pSubStrings
;
::
rtl
::
OUString
maReal
;
String
*
pUpperSub
;
::
rtl
::
OUString
maUpper
;
SubStr
(
const
::
rtl
::
OUString
&
rReal
,
const
::
rtl
::
OUString
&
rUpper
);
};
private
:
typedef
::
boost
::
ptr_vector
<
SubStr
>
SubStringsType
;
SubStringsType
maSubStrings
;
::
rtl
::
OUString
aStr
;
SC_DLLPRIVATE
void
InitTokens
();
SC_DLLPRIVATE
void
InitTokens
();
public
:
public
:
ScUserListData
(
const
String
&
rStr
);
ScUserListData
(
const
::
rtl
::
OU
String
&
rStr
);
ScUserListData
(
const
ScUserListData
&
rData
);
ScUserListData
(
const
ScUserListData
&
rData
);
virtual
~
ScUserListData
();
virtual
~
ScUserListData
();
virtual
ScDataObject
*
Clone
()
const
{
return
new
ScUserListData
(
*
this
);
}
virtual
ScDataObject
*
Clone
()
const
{
return
new
ScUserListData
(
*
this
);
}
const
String
&
GetString
()
const
{
return
aStr
;
}
const
::
rtl
::
OUString
&
GetString
()
const
{
return
aStr
;
}
void
SetString
(
const
String
&
rStr
);
void
SetString
(
const
::
rtl
::
OU
String
&
rStr
);
sal_uInt16
GetSubCount
()
const
;
size_t
GetSubCount
()
const
;
sal_Bool
GetSubIndex
(
const
String
&
rSubStr
,
sal_uInt16
&
rIndex
)
const
;
bool
GetSubIndex
(
const
::
rtl
::
OU
String
&
rSubStr
,
sal_uInt16
&
rIndex
)
const
;
String
GetSubStr
(
sal_uInt16
nIndex
)
const
;
::
rtl
::
OUString
GetSubStr
(
sal_uInt16
nIndex
)
const
;
StringCompare
Compare
(
const
String
&
rSubStr1
,
const
String
&
rSubStr2
)
const
;
StringCompare
Compare
(
const
::
rtl
::
OUString
&
rSubStr1
,
const
::
rtl
::
OU
String
&
rSubStr2
)
const
;
StringCompare
ICompare
(
const
String
&
rSubStr1
,
const
String
&
rSubStr2
)
const
;
StringCompare
ICompare
(
const
::
rtl
::
OUString
&
rSubStr1
,
const
::
rtl
::
OU
String
&
rSubStr2
)
const
;
};
};
//------------------------------------------------------------------------
/**
* Collection of user-defined sort lists.
*/
class
SC_DLLPUBLIC
ScUserList
:
public
ScCollection
class
SC_DLLPUBLIC
ScUserList
:
public
ScCollection
{
{
public
:
public
:
...
@@ -69,25 +81,16 @@ public:
...
@@ -69,25 +81,16 @@ public:
virtual
ScDataObject
*
Clone
()
const
;
virtual
ScDataObject
*
Clone
()
const
;
ScUserListData
*
GetData
(
const
String
&
rSubStr
)
const
;
ScUserListData
*
GetData
(
const
::
rtl
::
OU
String
&
rSubStr
)
const
;
/// If the list in rStr is already inserted
/// If the list in rStr is already inserted
sal_Bool
HasEntry
(
const
String
&
rStr
)
const
;
bool
HasEntry
(
const
::
rtl
::
OU
String
&
rStr
)
const
;
inline
ScUserListData
*
operator
[](
const
sal_uInt16
nIndex
)
const
;
ScUserListData
*
operator
[](
const
sal_uInt16
nIndex
)
const
;
inline
ScUserList
&
operator
=
(
const
ScUserList
&
r
);
ScUserList
&
operator
=
(
const
ScUserList
&
r
);
sal_B
ool
operator
==
(
const
ScUserList
&
r
)
const
;
b
ool
operator
==
(
const
ScUserList
&
r
)
const
;
inline
sal_B
ool
operator
!=
(
const
ScUserList
&
r
)
const
;
b
ool
operator
!=
(
const
ScUserList
&
r
)
const
;
};
};
inline
ScUserList
&
ScUserList
::
operator
=
(
const
ScUserList
&
r
)
{
return
(
ScUserList
&
)
ScCollection
::
operator
=
(
r
);
}
inline
ScUserListData
*
ScUserList
::
operator
[](
const
sal_uInt16
nIndex
)
const
{
return
(
ScUserListData
*
)
At
(
nIndex
);
}
inline
sal_Bool
ScUserList
::
operator
!=
(
const
ScUserList
&
r
)
const
{
return
!
operator
==
(
r
);
}
#endif
#endif
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
sc/source/core/tool/userlist.cxx
Dosyayı görüntüle @
344edada
...
@@ -34,7 +34,6 @@
...
@@ -34,7 +34,6 @@
//------------------------------------------------------------------------
//------------------------------------------------------------------------
#include <unotools/charclass.hxx>
#include <unotools/charclass.hxx>
#include <string.h>
#include "global.hxx"
#include "global.hxx"
#include "userlist.hxx"
#include "userlist.hxx"
...
@@ -42,30 +41,64 @@
...
@@ -42,30 +41,64 @@
#include <unotools/calendarwrapper.hxx>
#include <unotools/calendarwrapper.hxx>
#include <unotools/transliterationwrapper.hxx>
#include <unotools/transliterationwrapper.hxx>
// STATIC DATA -----------------------------------------------------------
using
::
rtl
::
OUString
;
namespace
{
//------------------------------------------------------------------------
class
FindByName
:
public
::
std
::
unary_function
<
ScUserListData
::
SubStr
,
bool
>
{
const
OUString
&
mrName
;
bool
mbUpper
;
public
:
FindByName
(
const
OUString
&
rName
,
bool
bUpper
)
:
mrName
(
rName
),
mbUpper
(
bUpper
)
{}
bool
operator
()
(
const
ScUserListData
::
SubStr
&
r
)
const
{
return
mbUpper
?
r
.
maUpper
.
equals
(
mrName
)
:
r
.
maReal
.
equals
(
mrName
);
}
};
}
ScUserListData
::
SubStr
::
SubStr
(
const
OUString
&
rReal
,
const
OUString
&
rUpper
)
:
maReal
(
rReal
),
maUpper
(
rUpper
)
{}
void
ScUserListData
::
InitTokens
()
void
ScUserListData
::
InitTokens
()
{
{
sal_Unicode
cSep
=
ScGlobal
::
cListDelimiter
;
sal_Unicode
cSep
=
ScGlobal
::
cListDelimiter
;
nTokenCount
=
(
sal_uInt16
)
aStr
.
GetTokenCount
(
cSep
);
maSubStrings
.
clear
();
if
(
nTokenCount
)
const
sal_Unicode
*
p
=
aStr
.
getStr
();
const
sal_Unicode
*
p0
=
p
;
sal_Int32
nLen
=
0
;
bool
bFirst
=
true
;
for
(
sal_Int32
i
=
0
,
n
=
aStr
.
getLength
();
i
<
n
;
++
i
,
++
p
,
++
nLen
)
{
{
pSubStrings
=
new
String
[
nTokenCount
];
if
(
bFirst
)
pUpperSub
=
new
String
[
nTokenCount
];
{
for
(
sal_uInt16
i
=
0
;
i
<
nTokenCount
;
i
++
)
// very first character, or the first character after a separator.
p0
=
p
;
nLen
=
0
;
bFirst
=
false
;
}
if
(
*
p
==
cSep
&&
nLen
)
{
{
pUpperSub
[
i
]
=
pSubStrings
[
i
]
=
aStr
.
GetToken
((
xub_StrLen
)
i
,
cSep
);
OUString
aSub
(
p0
,
nLen
);
ScGlobal
::
pCharClass
->
toUpper
(
pUpperSub
[
i
]);
String
aUpStr
=
aSub
;
ScGlobal
::
pCharClass
->
toUpper
(
aUpStr
);
maSubStrings
.
push_back
(
new
SubStr
(
aSub
,
aUpStr
));
bFirst
=
true
;
}
}
}
}
else
pSubStrings
=
pUpperSub
=
NULL
;
if
(
nLen
)
{
OUString
aSub
(
p0
,
nLen
);
String
aUpStr
=
aSub
;
ScGlobal
::
pCharClass
->
toUpper
(
aUpStr
);
maSubStrings
.
push_back
(
new
SubStr
(
aSub
,
aUpStr
));
}
}
}
ScUserListData
::
ScUserListData
(
const
String
&
rStr
)
:
ScUserListData
::
ScUserListData
(
const
OU
String
&
rStr
)
:
aStr
(
rStr
)
aStr
(
rStr
)
{
{
InitTokens
();
InitTokens
();
...
@@ -80,60 +113,57 @@ ScUserListData::ScUserListData(const ScUserListData& rData) :
...
@@ -80,60 +113,57 @@ ScUserListData::ScUserListData(const ScUserListData& rData) :
ScUserListData
::~
ScUserListData
()
ScUserListData
::~
ScUserListData
()
{
{
delete
[]
pSubStrings
;
delete
[]
pUpperSub
;
}
}
void
ScUserListData
::
SetString
(
const
String
&
rStr
)
void
ScUserListData
::
SetString
(
const
OU
String
&
rStr
)
{
{
delete
[]
pSubStrings
;
delete
[]
pUpperSub
;
aStr
=
rStr
;
aStr
=
rStr
;
InitTokens
();
InitTokens
();
}
}
s
al_uInt16
ScUserListData
::
GetSubCount
()
const
s
ize_t
ScUserListData
::
GetSubCount
()
const
{
{
return
nTokenCount
;
return
maSubStrings
.
size
()
;
}
}
sal_Bool
ScUserListData
::
GetSubIndex
(
const
String
&
rSubStr
,
sal_uInt16
&
rIndex
)
const
bool
ScUserListData
::
GetSubIndex
(
const
OU
String
&
rSubStr
,
sal_uInt16
&
rIndex
)
const
{
{
sal_uInt16
i
;
// First, case sensitive search.
for
(
i
=
0
;
i
<
nTokenCount
;
i
++
)
SubStringsType
::
const_iterator
itr
=
::
std
::
find_if
(
if
(
rSubStr
==
pSubStrings
[
i
])
maSubStrings
.
begin
(),
maSubStrings
.
end
(),
FindByName
(
rSubStr
,
false
));
{
if
(
itr
!=
maSubStrings
.
end
())
rIndex
=
i
;
{
return
sal_True
;
rIndex
=
::
std
::
distance
(
maSubStrings
.
begin
(),
itr
);
}
return
true
;
}
String
aUpStr
=
rSubStr
;
ScGlobal
::
pCharClass
->
toUpper
(
aUpStr
);
for
(
i
=
0
;
i
<
nTokenCount
;
i
++
)
if
(
aUpStr
==
pUpperSub
[
i
])
{
rIndex
=
i
;
return
sal_True
;
}
// When that fails, do a case insensitive search.
String
aTmp
=
rSubStr
;
ScGlobal
::
pCharClass
->
toUpper
(
aTmp
);
OUString
aUpStr
=
aTmp
;
itr
=
::
std
::
find_if
(
maSubStrings
.
begin
(),
maSubStrings
.
end
(),
FindByName
(
aUpStr
,
true
));
if
(
itr
!=
maSubStrings
.
end
())
{
rIndex
=
::
std
::
distance
(
maSubStrings
.
begin
(),
itr
);
return
true
;
}
return
false
;
return
false
;
}
}
String
ScUserListData
::
GetSubStr
(
sal_uInt16
nIndex
)
const
OU
String
ScUserListData
::
GetSubStr
(
sal_uInt16
nIndex
)
const
{
{
if
(
nIndex
<
nTokenCount
)
if
(
nIndex
<
maSubStrings
.
size
()
)
return
pSubStrings
[
nIndex
]
;
return
maSubStrings
[
nIndex
].
maReal
;
else
else
return
EMPTY_STRING
;
return
OUString
()
;
}
}
StringCompare
ScUserListData
::
Compare
(
const
String
&
rSubStr1
,
const
String
&
rSubStr2
)
const
StringCompare
ScUserListData
::
Compare
(
const
OUString
&
rSubStr1
,
const
OU
String
&
rSubStr2
)
const
{
{
sal_uInt16
nIndex1
;
sal_uInt16
nIndex1
,
nIndex2
;
sal_uInt16
nIndex2
;
bool
bFound1
=
GetSubIndex
(
rSubStr1
,
nIndex1
);
sal_Bool
bFound1
=
GetSubIndex
(
rSubStr1
,
nIndex1
);
bool
bFound2
=
GetSubIndex
(
rSubStr2
,
nIndex2
);
sal_Bool
bFound2
=
GetSubIndex
(
rSubStr2
,
nIndex2
);
if
(
bFound1
)
if
(
bFound1
)
{
{
if
(
bFound2
)
if
(
bFound2
)
...
@@ -154,12 +184,11 @@ StringCompare ScUserListData::Compare(const String& rSubStr1, const String& rSub
...
@@ -154,12 +184,11 @@ StringCompare ScUserListData::Compare(const String& rSubStr1, const String& rSub
return
(
StringCompare
)
ScGlobal
::
GetCaseTransliteration
()
->
compareString
(
rSubStr1
,
rSubStr2
);
return
(
StringCompare
)
ScGlobal
::
GetCaseTransliteration
()
->
compareString
(
rSubStr1
,
rSubStr2
);
}
}
StringCompare
ScUserListData
::
ICompare
(
const
String
&
rSubStr1
,
const
String
&
rSubStr2
)
const
StringCompare
ScUserListData
::
ICompare
(
const
OUString
&
rSubStr1
,
const
OU
String
&
rSubStr2
)
const
{
{
sal_uInt16
nIndex1
;
sal_uInt16
nIndex1
,
nIndex2
;
sal_uInt16
nIndex2
;
bool
bFound1
=
GetSubIndex
(
rSubStr1
,
nIndex1
);
sal_Bool
bFound1
=
GetSubIndex
(
rSubStr1
,
nIndex1
);
bool
bFound2
=
GetSubIndex
(
rSubStr2
,
nIndex2
);
sal_Bool
bFound2
=
GetSubIndex
(
rSubStr2
,
nIndex2
);
if
(
bFound1
)
if
(
bFound1
)
{
{
if
(
bFound2
)
if
(
bFound2
)
...
@@ -252,7 +281,7 @@ ScDataObject* ScUserList::Clone() const
...
@@ -252,7 +281,7 @@ ScDataObject* ScUserList::Clone() const
return
(
new
ScUserList
(
*
this
)
);
return
(
new
ScUserList
(
*
this
)
);
}
}
ScUserListData
*
ScUserList
::
GetData
(
const
String
&
rSubStr
)
const
ScUserListData
*
ScUserList
::
GetData
(
const
OU
String
&
rSubStr
)
const
{
{
sal_uInt16
nIndex
;
sal_uInt16
nIndex
;
sal_uInt16
i
=
0
;
sal_uInt16
i
=
0
;
...
@@ -262,9 +291,19 @@ ScUserListData* ScUserList::GetData(const String& rSubStr) const
...
@@ -262,9 +291,19 @@ ScUserListData* ScUserList::GetData(const String& rSubStr) const
return
NULL
;
return
NULL
;
}
}
sal_Bool
ScUserList
::
operator
==
(
const
ScUserList
&
r
)
const
ScUserListData
*
ScUserList
::
operator
[](
const
sal_uInt16
nIndex
)
const
{
return
(
ScUserListData
*
)
At
(
nIndex
);
}
ScUserList
&
ScUserList
::
operator
=
(
const
ScUserList
&
r
)
{
return
(
ScUserList
&
)
ScCollection
::
operator
=
(
r
);
}
bool
ScUserList
::
operator
==
(
const
ScUserList
&
r
)
const
{
{
sal_B
ool
bEqual
=
(
nCount
==
r
.
nCount
);
b
ool
bEqual
=
(
nCount
==
r
.
nCount
);
if
(
bEqual
)
if
(
bEqual
)
{
{
...
@@ -276,22 +315,27 @@ sal_Bool ScUserList::operator==( const ScUserList& r ) const
...
@@ -276,22 +315,27 @@ sal_Bool ScUserList::operator==( const ScUserList& r ) const
pMyData
=
(
ScUserListData
*
)
At
(
i
);
pMyData
=
(
ScUserListData
*
)
At
(
i
);
pOtherData
=
(
ScUserListData
*
)
r
.
At
(
i
);
pOtherData
=
(
ScUserListData
*
)
r
.
At
(
i
);
bEqual
=
(
(
pMyData
->
nTokenCount
==
pOtherData
->
nTokenCount
)
bEqual
=
((
pMyData
->
GetSubCount
()
==
pOtherData
->
GetSubCount
()
)
&&
(
pMyData
->
aStr
==
pOtherData
->
aStr
)
);
&&
(
pMyData
->
GetString
()
==
pOtherData
->
GetString
()
)
);
}
}
}
}
return
bEqual
;
return
bEqual
;
}
}
bool
ScUserList
::
operator
!=
(
const
ScUserList
&
r
)
const
{
return
!
operator
==
(
r
);
}
sal_Bool
ScUserList
::
HasEntry
(
const
String
&
rStr
)
const
bool
ScUserList
::
HasEntry
(
const
OU
String
&
rStr
)
const
{
{
for
(
sal_uInt16
i
=
0
;
i
<
nCount
;
i
++
)
for
(
sal_uInt16
i
=
0
;
i
<
nCount
;
i
++
)
{
{
const
ScUserListData
*
pMyData
=
(
ScUserListData
*
)
At
(
i
);
const
ScUserListData
*
pMyData
=
(
ScUserListData
*
)
At
(
i
);
if
(
pMyData
->
aStr
==
rStr
)
if
(
pMyData
->
GetString
()
==
rStr
)
return
sal_T
rue
;
return
t
rue
;
}
}
return
false
;
return
false
;
}
}
...
...
sc/source/ui/optdlg/tpusrlst.cxx
Dosyayı görüntüle @
344edada
...
@@ -323,7 +323,7 @@ void ScTpUserLists::UpdateEntries( sal_uInt16 nList )
...
@@ -323,7 +323,7 @@ void ScTpUserLists::UpdateEntries( sal_uInt16 nList )
{
{
if
(
i
!=
0
)
if
(
i
!=
0
)
aEntryListStr
+=
CR
;
aEntryListStr
+=
CR
;
aEntryListStr
+=
pList
->
GetSubStr
(
i
);
aEntryListStr
+=
String
(
pList
->
GetSubStr
(
i
)
);
}
}
aEntryListStr
.
ConvertLineEnd
();
aEntryListStr
.
ConvertLineEnd
();
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment