forked from amazingfate/loongoffice
TSCP: support abbreviated classification names
Change-Id: Ib7edc491d2f8a69c48f1515ba29d79e09c88c3b7 Reviewed-on: https://gerrit.libreoffice.org/43627 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
This commit is contained in:
committed by
Ashod Nakashian
parent
e4c912f6b0
commit
db61ca5b3a
@ -63,6 +63,10 @@ public:
|
||||
const OUString& GetBACName(SfxClassificationPolicyType eType);
|
||||
/// Return all possible valid category names, based on the policy.
|
||||
std::vector<OUString> GetBACNames();
|
||||
/// Get the currently selected category abbreviation for eType. Returns full name if no abbreviation defined.
|
||||
const OUString& GetAbbreviatedBACName(SfxClassificationPolicyType eType);
|
||||
/// Return all possible valid abbreviated category names, based on the policy.
|
||||
std::vector<OUString> GetAbbreviatedBACNames();
|
||||
/// Setting this sets all the other properties, based on the policy.
|
||||
void SetBACName(const OUString& rName, SfxClassificationPolicyType eType);
|
||||
/// If GetImpactScale() and GetImpactLevel*() will return something meaningful.
|
||||
|
||||
@ -68,6 +68,7 @@
|
||||
</xs:sequence>
|
||||
<xs:attribute name="Identifier" type="xs:anyURI" use="required"/>
|
||||
<xs:attribute name="Name" type="xs:string" use="optional"/>
|
||||
<xs:attribute name="loextAbbreviatedName" type="xs:string" use="optional"/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<!-- Impact Level -->
|
||||
|
||||
@ -9,7 +9,7 @@
|
||||
</baf:AdministrativeData>
|
||||
<baf:Included>
|
||||
<!-- Translators: the Name attribute in this string can be localized -->
|
||||
<baf:BusinessAuthorizationCategory Identifier="urn:example:tscp:1:non-business" Name="Non-Business">
|
||||
<baf:BusinessAuthorizationCategory Identifier="urn:example:tscp:1:non-business" Name="Non-Business" loextAbbreviatedName="NB">
|
||||
<baf:LabelingRules/>
|
||||
<baf:ImpactLevel>
|
||||
<baf:Scale>UK-Cabinet</baf:Scale>
|
||||
@ -17,7 +17,7 @@
|
||||
</baf:ImpactLevel>
|
||||
</baf:BusinessAuthorizationCategory>
|
||||
<!-- Translators: the Name attribute in this string can be localized -->
|
||||
<baf:BusinessAuthorizationCategory Identifier="urn:example:tscp:1:general-business" Name="General Business">
|
||||
<baf:BusinessAuthorizationCategory Identifier="urn:example:tscp:1:general-business" Name="General Business" loextAbbreviatedName="GB">
|
||||
<baf:LabelingRules>
|
||||
<baf:VisualMarkingPart>
|
||||
<baf:Identifier>Document: Header</baf:Identifier>
|
||||
@ -31,7 +31,7 @@
|
||||
</baf:ImpactLevel>
|
||||
</baf:BusinessAuthorizationCategory>
|
||||
<!-- Translators: the Name attribute in this string can be localized -->
|
||||
<baf:BusinessAuthorizationCategory Identifier="urn:example:tscp:1:confidential" Name="Confidential">
|
||||
<baf:BusinessAuthorizationCategory Identifier="urn:example:tscp:1:confidential" Name="Confidential" loextAbbreviatedName="Conf">
|
||||
<baf:LabelingRules>
|
||||
<baf:VisualMarkingPart>
|
||||
<baf:Identifier>Document: Header</baf:Identifier>
|
||||
@ -55,7 +55,7 @@
|
||||
</baf:ImpactLevel>
|
||||
</baf:BusinessAuthorizationCategory>
|
||||
<!-- Translators: the Name attribute in this string can be localized -->
|
||||
<baf:BusinessAuthorizationCategory Identifier="urn:example:tscp:1:internal-only" Name="Internal Only">
|
||||
<baf:BusinessAuthorizationCategory Identifier="urn:example:tscp:1:internal-only" Name="Internal Only" loextAbbreviatedName="IO">
|
||||
<baf:LabelingRules>
|
||||
<baf:VisualMarkingPart>
|
||||
<baf:Identifier>Document: Header</baf:Identifier>
|
||||
|
||||
@ -92,6 +92,7 @@ class SfxClassificationCategory
|
||||
public:
|
||||
/// PROP_BACNAME() is stored separately for easier lookup.
|
||||
OUString m_aName;
|
||||
OUString m_aAbbreviatedName;
|
||||
std::map<OUString, OUString> m_aLabels;
|
||||
};
|
||||
|
||||
@ -170,7 +171,8 @@ void SAL_CALL SfxClassificationParser::startElement(const OUString& rName, const
|
||||
}
|
||||
else if (rName == "baf:BusinessAuthorizationCategory")
|
||||
{
|
||||
OUString aName = xAttribs->getValueByName("Name");
|
||||
const OUString aName = xAttribs->getValueByName("Name");
|
||||
const OUString aAbbreviatedName = xAttribs->getValueByName("loextAbbreviatedName");
|
||||
if (!m_pCategory && !aName.isEmpty())
|
||||
{
|
||||
OUString aIdentifier = xAttribs->getValueByName("Identifier");
|
||||
@ -179,6 +181,8 @@ void SAL_CALL SfxClassificationParser::startElement(const OUString& rName, const
|
||||
m_aCategories.emplace_back(SfxClassificationCategory());
|
||||
SfxClassificationCategory& rCategory = m_aCategories.back();
|
||||
rCategory.m_aName = aName;
|
||||
// Set the abbreviated name, if any, otherwise fallback on the full name.
|
||||
rCategory.m_aAbbreviatedName = !aAbbreviatedName.isEmpty() ? aAbbreviatedName : aName;
|
||||
rCategory.m_aLabels["PolicyAuthority:Name"] = m_aPolicyAuthorityName;
|
||||
rCategory.m_aLabels["Policy:Name"] = m_aPolicyName;
|
||||
rCategory.m_aLabels["BusinessAuthorization:Identifier"] = m_aProgramID;
|
||||
@ -587,6 +591,11 @@ const OUString& SfxClassificationHelper::GetBACName(SfxClassificationPolicyType
|
||||
return m_pImpl->m_aCategory[eType].m_aName;
|
||||
}
|
||||
|
||||
const OUString& SfxClassificationHelper::GetAbbreviatedBACName(SfxClassificationPolicyType eType)
|
||||
{
|
||||
return m_pImpl->m_aCategory[eType].m_aAbbreviatedName;
|
||||
}
|
||||
|
||||
bool SfxClassificationHelper::HasImpactLevel()
|
||||
{
|
||||
auto itCategory = m_pImpl->m_aCategory.find(SfxClassificationPolicyType::IntellectualProperty);
|
||||
@ -754,6 +763,19 @@ std::vector<OUString> SfxClassificationHelper::GetBACNames()
|
||||
return aRet;
|
||||
}
|
||||
|
||||
std::vector<OUString> SfxClassificationHelper::GetAbbreviatedBACNames()
|
||||
{
|
||||
if (m_pImpl->m_aCategories.empty())
|
||||
m_pImpl->parsePolicy();
|
||||
|
||||
std::vector<OUString> aRet;
|
||||
std::transform(m_pImpl->m_aCategories.begin(), m_pImpl->m_aCategories.end(), std::back_inserter(aRet), [](const SfxClassificationCategory& rCategory)
|
||||
{
|
||||
return rCategory.m_aAbbreviatedName;
|
||||
});
|
||||
return aRet;
|
||||
}
|
||||
|
||||
void SfxClassificationHelper::SetBACName(const OUString& rName, SfxClassificationPolicyType eType)
|
||||
{
|
||||
if (m_pImpl->m_aCategories.empty())
|
||||
|
||||
@ -178,7 +178,7 @@ std::vector<ClassificationResult> ClassificationDialog::getResult()
|
||||
|
||||
IMPL_LINK(ClassificationDialog, SelectClassificationHdl, ListBox&, rBox, void)
|
||||
{
|
||||
sal_Int32 nSelected = rBox.GetSelectedEntryPos();
|
||||
const sal_Int32 nSelected = rBox.GetSelectedEntryPos();
|
||||
if (nSelected >= 0)
|
||||
{
|
||||
std::unique_ptr<EditTextObject> pEditText(m_pEditWindow->pEdEngine->CreateTextObject());
|
||||
@ -198,7 +198,7 @@ IMPL_LINK(ClassificationDialog, SelectClassificationHdl, ListBox&, rBox, void)
|
||||
}
|
||||
}
|
||||
|
||||
OUString aString = maHelper.GetBACNames()[nSelected];
|
||||
const OUString aString = maHelper.GetAbbreviatedBACNames()[nSelected];
|
||||
insertField(ClassificationType::CATEGORY, aString);
|
||||
|
||||
m_pInternationalClassificationListBox->SelectEntryPos(nSelected);
|
||||
@ -228,7 +228,7 @@ IMPL_LINK(ClassificationDialog, SelectMarkingHdl, ListBox&, rBox, void)
|
||||
}
|
||||
}
|
||||
|
||||
OUString aString = maHelper.GetMarkings()[nSelected];
|
||||
const OUString aString = maHelper.GetMarkings()[nSelected];
|
||||
insertField(ClassificationType::MARKING, aString);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user