summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKohei Yoshida <kohei.yoshida@collabora.com>2013-10-03 12:16:22 -0400
committerKohei Yoshida <kohei.yoshida@collabora.com>2013-10-04 19:15:24 -0400
commitf6ec66727379fef56f0972e2a6181e39ab6d4ec1 (patch)
tree63af7afdc956067f1126efbc3d2cd3d1f1d8c3d7
parent4aa411674224edb5eedd8d6170e8b27c491df851 (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
-rw-r--r--editeng/source/editeng/editobj.cxx58
-rw-r--r--editeng/source/editeng/editobj2.hxx4
-rw-r--r--include/editeng/editobj.hxx3
3 files changed, 65 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 );
diff --git a/include/editeng/editobj.hxx b/include/editeng/editobj.hxx
index 36392e213e6c..4751469c68ec 100644
--- a/include/editeng/editobj.hxx
+++ b/include/editeng/editobj.hxx
@@ -85,6 +85,9 @@ public:
*/
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;
+
const SfxItemPool* GetPool() const;
sal_uInt16 GetUserType() const; // For OutlinerMode, it can however not save in compatible format
void SetUserType( sal_uInt16 n );