diff options
author | Kohei Yoshida <kohei.yoshida@collabora.com> | 2013-10-03 12:16:22 -0400 |
---|---|---|
committer | Kohei Yoshida <kohei.yoshida@collabora.com> | 2013-10-04 19:15:24 -0400 |
commit | f6ec66727379fef56f0972e2a6181e39ab6d4ec1 (patch) | |
tree | 63af7afdc956067f1126efbc3d2cd3d1f1d8c3d7 /editeng | |
parent | 4aa411674224edb5eedd8d6170e8b27c491df851 (diff) |
Add methods to extract string IDs from edit text object.
Note that a single edit text object may have multiple string ID's in case
it consists of multiple paragraphs.
Change-Id: Ie90541de38a639c30a010817dada389e9445d08c
Diffstat (limited to 'editeng')
-rw-r--r-- | editeng/source/editeng/editobj.cxx | 58 | ||||
-rw-r--r-- | editeng/source/editeng/editobj2.hxx | 4 |
2 files changed, 62 insertions, 0 deletions
diff --git a/editeng/source/editeng/editobj.cxx b/editeng/source/editeng/editobj.cxx index aaf5e5fa064f..4e6af473b38d 100644 --- a/editeng/source/editeng/editobj.cxx +++ b/editeng/source/editeng/editobj.cxx @@ -154,6 +154,16 @@ void ContentInfo::NormalizeString( svl::StringPool& rPool ) aText = OUString(rPool.intern(aText)); } +sal_uIntPtr ContentInfo::GetStringID( const svl::StringPool& rPool ) const +{ + return rPool.getIdentifier(aText); +} + +sal_uIntPtr ContentInfo::GetStringIDIgnoreCase( const svl::StringPool& rPool ) const +{ + return rPool.getIdentifierIgnoreCase(aText); +} + const WrongList* ContentInfo::GetWrongList() const { return mpWrongs.get(); @@ -327,6 +337,16 @@ void EditTextObject::NormalizeString( svl::StringPool& rPool ) mpImpl->NormalizeString(rPool); } +bool EditTextObject::GetStringIDs( const svl::StringPool& rPool, std::vector<sal_uIntPtr>& rIDs ) const +{ + return mpImpl->GetStringIDs(rPool, rIDs); +} + +bool EditTextObject::GetStringIDsIgnoreCase( const svl::StringPool& rPool, std::vector<sal_uIntPtr>& rIDs ) const +{ + return mpImpl->GetStringIDsIgnoreCase(rPool, rIDs); +} + const SfxItemPool* EditTextObject::GetPool() const { return mpImpl->GetPool(); @@ -623,6 +643,44 @@ void EditTextObjectImpl::NormalizeString( svl::StringPool& rPool ) } } +bool EditTextObjectImpl::GetStringIDs( const svl::StringPool& rPool, std::vector<sal_uIntPtr>& rIDs ) const +{ + std::vector<sal_uIntPtr> aIDs; + aIDs.reserve(aContents.size()); + ContentInfosType::const_iterator it = aContents.begin(), itEnd = aContents.end(); + for (; it != itEnd; ++it) + { + const ContentInfo& rInfo = *it; + sal_uIntPtr nID = rInfo.GetStringID(rPool); + if (!nID) + return false; + + aIDs.push_back(nID); + } + + rIDs.swap(aIDs); + return true; +} + +bool EditTextObjectImpl::GetStringIDsIgnoreCase( const svl::StringPool& rPool, std::vector<sal_uIntPtr>& rIDs ) const +{ + std::vector<sal_uIntPtr> aIDs; + aIDs.reserve(aContents.size()); + ContentInfosType::const_iterator it = aContents.begin(), itEnd = aContents.end(); + for (; it != itEnd; ++it) + { + const ContentInfo& rInfo = *it; + sal_uIntPtr nID = rInfo.GetStringIDIgnoreCase(rPool); + if (!nID) + return false; + + aIDs.push_back(nID); + } + + rIDs.swap(aIDs); + return true; +} + bool EditTextObjectImpl::IsVertical() const { return bVertical; diff --git a/editeng/source/editeng/editobj2.hxx b/editeng/source/editeng/editobj2.hxx index c331134801c9..d2118d79c318 100644 --- a/editeng/source/editeng/editobj2.hxx +++ b/editeng/source/editeng/editobj2.hxx @@ -143,6 +143,8 @@ public: ~ContentInfo(); void NormalizeString( svl::StringPool& rPool ); + sal_uIntPtr GetStringID( const svl::StringPool& rPool ) const; + sal_uIntPtr GetStringIDIgnoreCase( const svl::StringPool& rPool ) const; const XEditAttributesType& GetAttribs() const { return aAttribs; } XEditAttributesType& GetAttribs() { return aAttribs; } @@ -207,6 +209,8 @@ public: void SetUserType( sal_uInt16 n ); void NormalizeString( svl::StringPool& rPool ); + bool GetStringIDs( const svl::StringPool& rPool, std::vector<sal_uIntPtr>& rIDs ) const; + bool GetStringIDsIgnoreCase( const svl::StringPool& rPool, std::vector<sal_uIntPtr>& rIDs ) const; bool IsVertical() const; void SetVertical( bool b ); |