27 #include <com/sun/star/i18n/Calendar2.hpp>
35 const OUString& mrName;
38 FindByName(
const OUString& rName,
bool bUpper) : mrName(rName), mbUpper(bUpper) {}
48 maReal(rReal), maUpper(rUpper) {}
58 for (sal_Int32
i = 0,
n =
aStr.getLength();
i <
n; ++
i, ++p, ++nLen)
71 OUString aSub(p0, nLen);
81 OUString aSub(p0, nLen);
117 SubStringsType::const_iterator itr = ::std::find_if(
128 itr = ::std::find_if(
150 sal_uInt16 nIndex1, nIndex2;
152 bool bFound1 =
GetSubIndex(rSubStr1, nIndex1, bMatchCase);
153 bool bFound2 =
GetSubIndex(rSubStr2, nIndex2, bMatchCase);
158 if (nIndex1 < nIndex2)
160 else if (nIndex1 > nIndex2)
176 sal_uInt16 nIndex1, nIndex2;
178 bool bFound1 =
GetSubIndex(rSubStr1, nIndex1, bMatchCase);
179 bool bFound2 =
GetSubIndex(rSubStr2, nIndex2, bMatchCase);
184 if (nIndex1 < nIndex2)
186 else if (nIndex1 > nIndex2)
205 uno::Sequence< i18n::CalendarItem2 > xCal;
207 const uno::Sequence< i18n::Calendar2 > xCalendars(
210 for (
const auto& rCalendar : xCalendars )
212 xCal = rCalendar.Days;
213 if ( xCal.hasElements() )
215 OUStringBuffer aDayShortBuf(32), aDayLongBuf(64);
217 sal_Int32 nLen = xCal.getLength();
218 sal_Int16 nStart = sal::static_int_cast<sal_Int16>(nLen);
221 if (xCal[--nStart].
ID == rCalendar.StartOfWeek)
224 sal_Int16 nLast = sal::static_int_cast<sal_Int16>( (nStart + nLen - 1) % nLen );
225 for (i = nStart; i != nLast; i = (i+1) % nLen)
227 aDayShortBuf.append(xCal[i].AbbrevName);
228 aDayShortBuf.append(cDelimiter);
229 aDayLongBuf.append(xCal[i].
FullName);
230 aDayLongBuf.append(cDelimiter);
232 aDayShortBuf.append(xCal[i].AbbrevName);
233 aDayLongBuf.append(xCal[i].
FullName);
235 OUString aDayShort = aDayShortBuf.makeStringAndClear();
236 OUString aDayLong = aDayLongBuf.makeStringAndClear();
239 maData.push_back( std::make_unique<ScUserListData>( aDayShort ));
241 maData.push_back( std::make_unique<ScUserListData>( aDayLong ));
244 xCal = rCalendar.Months;
245 if ( xCal.hasElements() )
247 OUStringBuffer aMonthShortBuf(128), aMonthLongBuf(128);
249 sal_Int32 nLen = xCal.getLength() - 1;
250 for (i = 0; i < nLen; i++)
252 aMonthShortBuf.append(xCal[i].AbbrevName);
253 aMonthShortBuf.append(cDelimiter);
254 aMonthLongBuf.append(xCal[i].
FullName);
255 aMonthLongBuf.append(cDelimiter);
257 aMonthShortBuf.append(xCal[i].AbbrevName);
258 aMonthLongBuf.append(xCal[i].
FullName);
260 OUString aMonthShort = aMonthShortBuf.makeStringAndClear();
261 OUString aMonthLong = aMonthLongBuf.makeStringAndClear();
264 maData.push_back( std::make_unique<ScUserListData>( aMonthShort ));
266 maData.push_back( std::make_unique<ScUserListData>( aMonthLong ));
273 for (
const std::unique_ptr<ScUserListData>&
rData : rOther.
maData)
274 maData.push_back(std::make_unique<ScUserListData>(*rData));
281 bool bMatchCase =
false;
283 for (
const auto& rxItem :
maData)
285 if (rxItem->GetSubIndex(rSubStr, nIndex, bMatchCase))
289 if (!pFirstCaseInsensitive)
290 pFirstCaseInsensitive = rxItem.get();
294 return pFirstCaseInsensitive;
310 for (
const std::unique_ptr<ScUserListData>&
rData : rOther.
maData)
311 maData.push_back(std::make_unique<ScUserListData>(*rData));
318 [](
const std::unique_ptr<ScUserListData>& lhs,
const std::unique_ptr<ScUserListData>& rhs) {
319 return (lhs->GetString() == rhs->GetString()) && (lhs->GetSubCount() == rhs->GetSubCount());
331 [&] (std::unique_ptr<ScUserListData>
const&
pData)
332 {
return pData->GetString() == rStr; } );
352 maData.push_back(std::unique_ptr<ScUserListData>(p));
::utl::TransliterationWrapper & GetCaseTransliteration()
Collection of user-defined sort lists.
sal_Int32 Compare(const OUString &rSubStr1, const OUString &rSubStr2) const
sal_Int32 compareString(const OUString &rStr1, const OUString &rStr2) const
SubStr(const OUString &rReal, const OUString &rUpper)
std::unique_ptr< sal_Int32[]> pData
const ContentProperties & rData
const sal_Unicode cDelimiter
sal_Int32 ICompare(const OUString &rSubStr1, const OUString &rSubStr2) const
bool GetSubIndex(const OUString &rSubStr, sal_uInt16 &rIndex, bool &bMatchCase) const
static SC_DLLPUBLIC const LocaleDataWrapper & getLocaleData()
void push_back(ScUserListData *p)
Stores individual user-defined sort list.
void erase(const iterator &itr)
static constexpr sal_Unicode cListDelimiter
size_t GetSubCount() const
bool operator==(const ScUserList &r) const
static SC_DLLPUBLIC const CharClass & getCharClass()
OUString uppercase(const OUString &rStr, sal_Int32 nPos, sal_Int32 nCount) const
DataType::iterator iterator
bool HasEntry(std::u16string_view rStr) const
If the list in rStr is already inserted.
ScUserList & operator=(const ScUserList &r)
SubStringsType maSubStrings
const ScUserListData & operator[](size_t nIndex) const
bool operator!=(const ScUserList &r) const
static SC_DLLPUBLIC::utl::TransliterationWrapper & GetTransliteration()
ScUserListData(const OUString &rStr)
SAL_DLLPRIVATE void InitTokens()
void SetString(const OUString &rStr)
OUString GetSubStr(sal_uInt16 nIndex) const
const ScUserListData * GetData(const OUString &rSubStr) const