summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWinfried Donkers <osc@dci-electronics.nl>2013-02-28 18:05:52 +0100
committerCaolán McNamara <caolanm@redhat.com>2013-03-06 14:45:03 +0000
commit2d66aad26750c47659e3445e18d9a385658e3328 (patch)
tree80feae965f2721ac0bca9c3f869be59f2acfb7be
parenta8ba50d2c0f54aa40977c6da0898814573d6a5e0 (diff)
some refinements on label configurations in writer
Change-Id: I94ad02972b0fae1327f72a41373f34962452b8ef Reviewed-on: https://gerrit.libreoffice.org/2473 Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
-rw-r--r--extras/source/labels/labels.xml6
-rw-r--r--sw/source/ui/envelp/labelcfg.cxx283
-rw-r--r--sw/source/ui/envelp/labfmt.cxx8
-rw-r--r--sw/source/ui/envelp/labfmt.hrc5
-rw-r--r--sw/source/ui/envelp/labfmt.src6
-rw-r--r--sw/source/ui/inc/labelcfg.hxx11
6 files changed, 155 insertions, 164 deletions
diff --git a/extras/source/labels/labels.xml b/extras/source/labels/labels.xml
index a9f81bae1c61..8ed02b906fb1 100644
--- a/extras/source/labels/labels.xml
+++ b/extras/source/labels/labels.xml
@@ -651,7 +651,7 @@ Letter 215.9 x 279.4 mm
<measure>S;4064;2117;3810;2117;467;1090;5;13;21000;29700</measure>
</label>
<label id="L125">
- <name>J8654 Miini Address</name>
+ <name>J8654 Mini Address</name>
<measure>S;4826;2540;4572;2540;975;2143;4;10;21000;29700</measure>
</label>
<label id="L126">
@@ -1199,7 +1199,7 @@ Letter 215.9 x 279.4 mm
<measure>S;4064;2117;3810;2117;467;1090;5;13;21000;29700</measure>
</label>
<label id="L262">
- <name>L7652 Miini Address</name>
+ <name>L7652 Mini Address</name>
<measure>S;4826;1693;4572;1693;975;1299;4;16;21000;29700</measure>
</label>
<label id="L263">
@@ -1207,7 +1207,7 @@ Letter 215.9 x 279.4 mm
<measure>S;4572;1693;2200;1270;2542;4902;4;12;21000;29700</measure>
</label>
<label id="L264">
- <name>L7654 Miini Address</name>
+ <name>L7654 Mini Address</name>
<measure>S;4826;2540;4572;2540;975;2143;4;10;21000;29700</measure>
</label>
<label id="L265">
diff --git a/sw/source/ui/envelp/labelcfg.cxx b/sw/source/ui/envelp/labelcfg.cxx
index 28d407484a80..785eff65d4fc 100644
--- a/sw/source/ui/envelp/labelcfg.cxx
+++ b/sw/source/ui/envelp/labelcfg.cxx
@@ -59,6 +59,18 @@ static inline OUString lcl_getValue(xmlreader::XmlReader& reader,
return sTmp;
}
+static Sequence<OUString> lcl_CreatePropertyNames(const OUString& rPrefix)
+{
+ Sequence<OUString> aProperties(2);
+ OUString* pProperties = aProperties.getArray();
+ for(sal_Int32 nProp = 0; nProp < 2; nProp++)
+ pProperties[nProp] = rPrefix;
+
+ pProperties[ 0] += "Name";
+ pProperties[ 1] += "Measure";
+ return aProperties;
+}
+
SwLabelConfig::SwLabelConfig() :
ConfigItem("Office.Labels/Manufacturer")
{
@@ -72,6 +84,7 @@ SwLabelConfig::SwLabelConfig() :
OUString sName;
OUString sMeasure;
+ // fill m_aLabels and m_aManufacturers with the predefined labels
res = reader.nextItem(
xmlreader::XmlReader::TEXT_NONE, &name, &nsId);
assert(res == xmlreader::XmlReader::RESULT_BEGIN &&
@@ -105,7 +118,10 @@ SwLabelConfig::SwLabelConfig() :
xmlreader::Span(RTL_CONSTASCII_STRINGPARAM("measure")));
// Ending label mark
lcl_assertEndingItem(reader);
- m_aLabels[sManufacturer][sName] = sMeasure;
+ if ( m_aLabels.find( sManufacturer ) == m_aLabels.end() )
+ m_aManufacturers.push_back( sManufacturer );
+ m_aLabels[sManufacturer][sName].m_aMeasure = sMeasure;
+ m_aLabels[sManufacturer][sName].m_bPredefined = true;
}
// Get next manufacturer or end
res = reader.nextItem(
@@ -115,7 +131,35 @@ SwLabelConfig::SwLabelConfig() :
xmlreader::XmlReader::TEXT_NONE, &name, &nsId);
assert(res == xmlreader::XmlReader::RESULT_DONE);
- FillManufacturers();
+ // add to m_aLabels and m_aManufacturers the custom labels
+ const Sequence<rtl::OUString>& rMan = GetNodeNames( OUString() );
+ const rtl::OUString* pMan = rMan.getConstArray();
+ for ( sal_Int32 nMan = 0; nMan < rMan.getLength(); nMan++ )
+ {
+ sManufacturer = pMan[nMan];
+ const Sequence<OUString> aLabels = GetNodeNames( sManufacturer );
+ const OUString* pLabels = aLabels.getConstArray();
+ for( sal_Int32 nLabel = 0; nLabel < aLabels.getLength(); nLabel++ )
+ {
+ OUString sPrefix( sManufacturer );
+ sPrefix += "/";
+ sPrefix += pLabels[nLabel];
+ sPrefix += "/";
+ Sequence<OUString> aPropNames = lcl_CreatePropertyNames( sPrefix );
+ Sequence<Any> aValues = GetProperties( aPropNames );
+ const Any* pValues = aValues.getConstArray();
+ if (aValues.getLength() >= 1)
+ if(pValues[0].hasValue())
+ pValues[0] >>= sName;
+ if (aValues.getLength() >= 2)
+ if(pValues[1].hasValue())
+ pValues[1] >>= sMeasure;
+ if ( m_aLabels.find( sManufacturer ) == m_aLabels.end() )
+ m_aManufacturers.push_back( sManufacturer );
+ m_aLabels[sManufacturer][sName].m_aMeasure = sMeasure;
+ m_aLabels[sManufacturer][sName].m_bPredefined = false;
+ }
+ }
}
SwLabelConfig::~SwLabelConfig()
@@ -127,32 +171,6 @@ void SwLabelConfig::Commit() {}
void SwLabelConfig::Notify( const ::com::sun::star::uno::Sequence< rtl::OUString >& ) {}
-void SwLabelConfig::FillManufacturers()
-{
- m_aManufacturers.clear();
- for (std::map< OUString, std::map<OUString, OUString> >::iterator it =
- m_aLabels.begin(); it != m_aLabels.end(); ++it)
- m_aManufacturers.push_back( it->first );
-
- const com::sun::star::uno::Sequence<rtl::OUString>& rMan = GetNodeNames(OUString());
- const rtl::OUString* pMan = rMan.getConstArray();
- for(sal_Int32 nMan = 0; nMan < rMan.getLength(); nMan++)
- if (m_aLabels.find( pMan[nMan] ) == m_aLabels.end())
- m_aManufacturers.push_back( pMan[nMan] );
-}
-
-static Sequence<OUString> lcl_CreatePropertyNames(const OUString& rPrefix)
-{
- Sequence<OUString> aProperties(2);
- OUString* pProperties = aProperties.getArray();
- for(sal_Int32 nProp = 0; nProp < 2; nProp++)
- pProperties[nProp] = rPrefix;
-
- pProperties[ 0] += "Name";
- pProperties[ 1] += "Measure";
- return aProperties;
-}
-
static SwLabRec* lcl_CreateSwLabRec(const OUString& rType, const OUString& rMeasure, const OUString& rManufacturer)
{
SwLabRec* pNewRec = new SwLabRec;
@@ -161,7 +179,7 @@ static SwLabRec* lcl_CreateSwLabRec(const OUString& rType, const OUString& rMeas
pNewRec->lPHeight = 0;
pNewRec->aType = rType;
//all values are contained as colon-separated 1/100 mm values
- //except for the continuous flag ('C'/'S')
+ //except for the continuous flag ('C'/'S') and nCols, nRows (sal_Int32)
String sMeasure(rMeasure);
sal_uInt16 nTokenCount = comphelper::string::getTokenCount(sMeasure, ';');
for(sal_uInt16 i = 0; i < nTokenCount; i++)
@@ -183,7 +201,7 @@ static SwLabRec* lcl_CreateSwLabRec(const OUString& rType, const OUString& rMeas
case 10 : pNewRec->lPHeight = MM100_TO_TWIP(nVal); break;
}
}
- // lines added for compatibility with custom label defintions saved before patch 44516
+ // lines added for compatibility with custom label definitions saved before patch fdo#44516
if (pNewRec->lPWidth == 0 || pNewRec->lPHeight == 0)
{
// old style definition (no paper dimensions), calculate probable values
@@ -194,7 +212,7 @@ static SwLabRec* lcl_CreateSwLabRec(const OUString& rType, const OUString& rMeas
}
static Sequence<PropertyValue> lcl_CreateProperties(
- Sequence<OUString>& rPropNames, const SwLabRec& rRec)
+ Sequence<OUString>& rPropNames, OUString& rMeasure, const SwLabRec& rRec)
{
const OUString* pNames = rPropNames.getConstArray();
Sequence<PropertyValue> aRet(rPropNames.getLength());
@@ -209,19 +227,19 @@ static Sequence<PropertyValue> lcl_CreateProperties(
case 0: pValues[nProp].Value <<= OUString(rRec.aType); break;
case 1:
{
- OUString sTmp;
- sTmp += rRec.bCont ? OUString("C") : OUString("S"); sTmp += sColon;
- sTmp += OUString::valueOf(TWIP_TO_MM100(rRec.lHDist) ); sTmp += sColon;
- sTmp += OUString::valueOf(TWIP_TO_MM100(rRec.lVDist)); sTmp += sColon;
- sTmp += OUString::valueOf(TWIP_TO_MM100(rRec.lWidth) ); sTmp += sColon;
- sTmp += OUString::valueOf(TWIP_TO_MM100(rRec.lHeight) ); sTmp += sColon;
- sTmp += OUString::valueOf(TWIP_TO_MM100(rRec.lLeft) ); sTmp += sColon;
- sTmp += OUString::valueOf(TWIP_TO_MM100(rRec.lUpper) ); sTmp += sColon;
- sTmp += OUString::valueOf(rRec.nCols ); sTmp += sColon;
- sTmp += OUString::valueOf(rRec.nRows ); sTmp += sColon;
- sTmp += OUString::valueOf(TWIP_TO_MM100(rRec.lPWidth) ); sTmp += sColon;
- sTmp += OUString::valueOf(TWIP_TO_MM100(rRec.lPHeight) );
- pValues[nProp].Value <<= sTmp;
+ rMeasure = "";
+ rMeasure += rRec.bCont ? OUString( "C" ) : OUString( "S" ); rMeasure += sColon;
+ rMeasure += OUString::valueOf( TWIP_TO_MM100( rRec.lHDist ) ); rMeasure += sColon;
+ rMeasure += OUString::valueOf( TWIP_TO_MM100( rRec.lVDist ) ); rMeasure += sColon;
+ rMeasure += OUString::valueOf( TWIP_TO_MM100( rRec.lWidth ) ); rMeasure += sColon;
+ rMeasure += OUString::valueOf( TWIP_TO_MM100( rRec.lHeight ) ); rMeasure += sColon;
+ rMeasure += OUString::valueOf( TWIP_TO_MM100( rRec.lLeft ) ); rMeasure += sColon;
+ rMeasure += OUString::valueOf( TWIP_TO_MM100( rRec.lUpper ) ); rMeasure += sColon;
+ rMeasure += OUString::valueOf( rRec.nCols ); rMeasure += sColon;
+ rMeasure += OUString::valueOf( rRec.nRows ); rMeasure += sColon;
+ rMeasure += OUString::valueOf( TWIP_TO_MM100( rRec.lPWidth ) ); rMeasure += sColon;
+ rMeasure += OUString::valueOf( TWIP_TO_MM100( rRec.lPHeight ) );
+ pValues[nProp].Value <<= rMeasure;
}
break;
}
@@ -229,80 +247,21 @@ static Sequence<PropertyValue> lcl_CreateProperties(
return aRet;
}
+// function fills SwLabDlg with label definitions for manufacturer rManufacturer
void SwLabelConfig::FillLabels(const OUString& rManufacturer, SwLabRecs& rLabArr)
{
OUString sManufacturer(wrapConfigurationElementName(rManufacturer));
- const Sequence<OUString> aLabels = GetNodeNames(sManufacturer);
- const OUString* pLabels = aLabels.getConstArray();
- for(sal_Int32 nLabel = 0; nLabel < aLabels.getLength(); nLabel++)
- {
- OUString sPrefix(sManufacturer);
- sPrefix += "/";
- sPrefix += pLabels[nLabel];
- sPrefix += "/";
- Sequence<OUString> aPropNames = lcl_CreatePropertyNames(sPrefix);
- Sequence<Any> aValues = GetProperties(aPropNames);
- const Any* pValues = aValues.getConstArray();
- OUString sType;
- OUString sMeasure;
- if (aValues.getLength() >= 1)
- if(pValues[0].hasValue())
- pValues[0] >>= sType;
- if (aValues.getLength() >= 2)
- if(pValues[1].hasValue())
- pValues[1] >>= sMeasure;
- // Remove default value if we have one from configuration
- if(m_aLabels.find(rManufacturer) != m_aLabels.end())
- m_aLabels[rManufacturer].erase(sType);
- rLabArr.push_back( lcl_CreateSwLabRec(sType, sMeasure, rManufacturer) );
- }
- // Add default labels
if (m_aLabels.find(rManufacturer) == m_aLabels.end())
return;
- for (std::map<OUString, OUString>::iterator it =
- m_aLabels[rManufacturer].begin();
+ for (std::map<OUString, SwLabelMeasure>::iterator it = m_aLabels[rManufacturer].begin();
it != m_aLabels[rManufacturer].end(); ++it)
- rLabArr.push_back( lcl_CreateSwLabRec(it->first, it->second, rManufacturer) );
+ rLabArr.push_back( lcl_CreateSwLabRec(it->first, it->second.m_aMeasure, rManufacturer) );
}
sal_Bool SwLabelConfig::HasLabel(const rtl::OUString& rManufacturer, const rtl::OUString& rType)
{
- if (m_aLabels.find(rManufacturer) != m_aLabels.end())
- if (m_aLabels[rManufacturer].find(rType) != m_aLabels[rManufacturer].end())
- return true;
-
- bool bFound = false;
- for (size_t nNode = 0; nNode < m_aManufacturers.size() && !bFound; nNode++)
- {
- if (m_aManufacturers[nNode] == rManufacturer)
- bFound = true;
- }
- if(bFound)
- {
- OUString sManufacturer(wrapConfigurationElementName(rManufacturer));
- const Sequence<OUString> aLabels = GetNodeNames(sManufacturer);
- const OUString* pLabels = aLabels.getConstArray();
- for(sal_Int32 nLabel = 0; nLabel < aLabels.getLength(); nLabel++)
- {
- OUString sPrefix(sManufacturer);
- sPrefix += "/";
- sPrefix += pLabels[nLabel];
- sPrefix += "/";
- Sequence<OUString> aProperties(1);
- aProperties.getArray()[0] = sPrefix;
- aProperties.getArray()[0] += "Name";
- Sequence<Any> aValues = GetProperties(aProperties);
- const Any* pValues = aValues.getConstArray();
- if(pValues[0].hasValue())
- {
- OUString sTmp;
- pValues[0] >>= sTmp;
- if(rType == sTmp)
- return sal_True;
- }
- }
- }
- return sal_False;
+ return ( ( m_aLabels.find(rManufacturer) != m_aLabels.end() ) &&
+ ( m_aLabels[rManufacturer].find(rType) != m_aLabels[rManufacturer].end() ) );
}
static bool lcl_Exists(const OUString& rNode, const Sequence<OUString>& rLabels)
@@ -314,75 +273,85 @@ static bool lcl_Exists(const OUString& rNode, const Sequence<OUString>& rLabels)
return false;
}
-void SwLabelConfig::SaveLabel( const rtl::OUString& rManufacturer,
- const rtl::OUString& rType, const SwLabRec& rRec)
+// label is always saved as a custom label
+// predefined labels can NOT be overwritten by custom labels with same manufacturer/name
+void SwLabelConfig::SaveLabel( const rtl::OUString& rManufacturer,
+ const rtl::OUString& rType, const SwLabRec& rRec )
{
- bool bFound = false;
- for (size_t nNode = 0; nNode < m_aManufacturers.size() && !bFound; nNode++)
- {
- if (m_aManufacturers[nNode] == rManufacturer)
- bFound = true;
- }
- if(!bFound)
+ OUString sFoundNode;
+ bool bManufacturerNodeFound;
+ if ( m_aLabels.find( rManufacturer ) == m_aLabels.end() ||
+ GetNodeNames( rManufacturer ).getLength() == 0 )
{
- if(!AddNode(OUString(), rManufacturer))
+ bManufacturerNodeFound = false;
+ // manufacturer node does not exist, add (and also to m_aManufacturers)
+ if ( !AddNode( OUString(), rManufacturer ) )
{
OSL_FAIL("New configuration node could not be created");
return ;
}
- else
- {
- FillManufacturers();
- }
+ m_aManufacturers.push_back( rManufacturer );
}
+ else
+ bManufacturerNodeFound = true;
- OUString sManufacturer(wrapConfigurationElementName(rManufacturer));
- const Sequence<OUString> aLabels = GetNodeNames(sManufacturer);
- const OUString* pLabels = aLabels.getConstArray();
- OUString sFoundNode;
- for(sal_Int32 nLabel = 0; nLabel < aLabels.getLength(); nLabel++)
- {
- OUString sPrefix(sManufacturer);
- sPrefix += "/";
- sPrefix += pLabels[nLabel];
- sPrefix += "/";
- Sequence<OUString> aProperties(1);
- aProperties.getArray()[0] = sPrefix;
- aProperties.getArray()[0] += "Name";
- Sequence<Any> aValues = GetProperties(aProperties);
- const Any* pValues = aValues.getConstArray();
- if(pValues[0].hasValue())
- {
- OUString sTmp;
- pValues[0] >>= sTmp;
- if(rType == sTmp)
- {
- sFoundNode = pLabels[nLabel];
- break;
- }
- }
- }
- // if not found - generate a unique node name
- if(sFoundNode.isEmpty())
+ if ( !bManufacturerNodeFound ||
+ m_aLabels[rManufacturer].find( rType ) == m_aLabels[rManufacturer].end() )
{
+ // type does not yet exist, add to config
+ const Sequence<OUString> aLabels = GetNodeNames( rManufacturer );
sal_Int32 nIndex = aLabels.getLength();
- OUString sPrefix("Label");
+ OUString sPrefix( "Label" );
sFoundNode = sPrefix;
- sFoundNode += OUString::valueOf(nIndex);
- while(lcl_Exists(sFoundNode, aLabels))
+ sFoundNode += OUString::valueOf( nIndex );
+ while ( lcl_Exists( sFoundNode, aLabels ) )
{
sFoundNode = sPrefix;
sFoundNode += OUString::valueOf(nIndex++);
}
}
- OUString sPrefix(wrapConfigurationElementName(rManufacturer));
+ else
+ {
+ // get the appropiate node
+ OUString sManufacturer( wrapConfigurationElementName( rManufacturer ) );
+ const Sequence<OUString> aLabels = GetNodeNames( sManufacturer );
+ const OUString* pLabels = aLabels.getConstArray();
+ for (sal_Int32 nLabel = 0; nLabel < aLabels.getLength(); nLabel++)
+ {
+ OUString sPrefix( sManufacturer );
+ sPrefix += "/";
+ sPrefix += pLabels[nLabel];
+ sPrefix += "/";
+ Sequence<OUString> aProperties(1);
+ aProperties.getArray()[0] = sPrefix;
+ aProperties.getArray()[0] += "Name";
+ Sequence<Any> aValues = GetProperties( aProperties );
+ const Any* pValues = aValues.getConstArray();
+ if ( pValues[0].hasValue() )
+ {
+ OUString sTmp;
+ pValues[0] >>= sTmp;
+ if ( rType == sTmp )
+ {
+ sFoundNode = pLabels[nLabel];
+ break;
+ }
+ }
+ }
+ }
+
+ OUString sPrefix( wrapConfigurationElementName( rManufacturer ) );
sPrefix += "/";
sPrefix += sFoundNode;
sPrefix += "/";
- Sequence<OUString> aPropNames = lcl_CreatePropertyNames(sPrefix);
- Sequence<PropertyValue> aPropValues = lcl_CreateProperties(aPropNames, rRec);
- SetSetProperties(wrapConfigurationElementName(rManufacturer), aPropValues);
+ Sequence<OUString> aPropNames = lcl_CreatePropertyNames( sPrefix );
+ OUString sMeasure;
+ Sequence<PropertyValue> aPropValues = lcl_CreateProperties( aPropNames, sMeasure, rRec );
+ SetSetProperties( wrapConfigurationElementName( rManufacturer ), aPropValues );
+ //update m_aLabels
+ m_aLabels[rManufacturer][rType].m_aMeasure = sMeasure;
+ m_aLabels[rManufacturer][rType].m_bPredefined = false;
}
diff --git a/sw/source/ui/envelp/labfmt.cxx b/sw/source/ui/envelp/labfmt.cxx
index 1b3005673515..23a445337a41 100644
--- a/sw/source/ui/envelp/labfmt.cxx
+++ b/sw/source/ui/envelp/labfmt.cxx
@@ -617,7 +617,9 @@ SwSaveLabelDlg::SwSaveLabelDlg(SwLabFmtPage* pParent, SwLabRec& rRec) :
SwLabelConfig& rCfg = pLabPage->GetParentSwLabDlg()->GetLabelsConfig();
const std::vector<OUString>& rMan = rCfg.GetManufacturers();
for (sal_uInt16 i = 0; i < rMan.size(); i++)
+ {
aMakeCB.InsertEntry(rMan[i]);
+ }
}
IMPL_LINK_NOARG(SwSaveLabelDlg, OkHdl)
@@ -627,6 +629,12 @@ IMPL_LINK_NOARG(SwSaveLabelDlg, OkHdl)
String sType(aTypeED.GetText());
if(rCfg.HasLabel(sMake, sType))
{
+ if ( rCfg.IsPredefinedLabel(sMake, sType) )
+ {
+ SAL_WARN( "IMPL_LINK_NOARG(SwSaveLabelDlg, OkHdl)", "label is predefined and cannot be overwritten" );
+ WarningBox( this, SW_RES( WB_PREDEFINED_LABEL ) ).Execute();
+ return 0;
+ }
String sTmp(aQueryMB.GetMessText());
String sQuery(sTmp);
sQuery.SearchAndReplace(rtl::OUString("%1"), sMake);
diff --git a/sw/source/ui/envelp/labfmt.hrc b/sw/source/ui/envelp/labfmt.hrc
index dd7804b93b22..a7880b7affb8 100644
--- a/sw/source/ui/envelp/labfmt.hrc
+++ b/sw/source/ui/envelp/labfmt.hrc
@@ -71,13 +71,14 @@
#define STR_ROWS (RC_LABFMT_BEGIN + 8)
#define STR_PWIDTH (RC_LABFMT_BEGIN + 9)
#define STR_PHEIGHT (RC_LABFMT_BEGIN + 10)
+#define WB_PREDEFINED_LABEL (RC_LABFMT_BEGIN + 11)
// overflow check ********************************************************
-#define LABFMT_ACT_END STR_PHEIGHT
+#define LABFMT_ACT_END WB_PREDEFINED_LABEL
#if LABFMT_ACT_END > RC_LABFMT_END
-#error Resource-Ueberlauf in #file, #line
+#error Resource overflow in #file, #line
#endif
#endif
diff --git a/sw/source/ui/envelp/labfmt.src b/sw/source/ui/envelp/labfmt.src
index 8bb7bbe53380..4b83f6955890 100644
--- a/sw/source/ui/envelp/labfmt.src
+++ b/sw/source/ui/envelp/labfmt.src
@@ -302,6 +302,12 @@ String STR_PHEIGHT
{
Text [ en-US ] = "Page Height" ;
};
+WarningBox WB_PREDEFINED_LABEL
+{
+ BUTTONS = WB_OK;
+ DEFBUTTON = WB_DEF_OK;
+ Message [ en-US ] = "Predefined labels cannot be overwritten, use another name." ;
+};
ModalDialog DLG_SAVE_LABEL
{
HelpID = HID_SAVE_LABEL_DLG ;
diff --git a/sw/source/ui/inc/labelcfg.hxx b/sw/source/ui/inc/labelcfg.hxx
index 80135fee2eab..216bef4b9ac2 100644
--- a/sw/source/ui/inc/labelcfg.hxx
+++ b/sw/source/ui/inc/labelcfg.hxx
@@ -28,10 +28,16 @@
class SwLabRecs;
class SwLabRec;
+struct SwLabelMeasure
+{
+ OUString m_aMeasure; // string contains the label dimensions
+ bool m_bPredefined; // used to distinguish predefined from user-defined labels
+};
+
class SW_DLLPUBLIC SwLabelConfig : public utl::ConfigItem
{
std::vector<rtl::OUString> m_aManufacturers;
- std::map< OUString, std::map<OUString, OUString> > m_aLabels;
+ std::map< OUString, std::map<OUString, SwLabelMeasure> > m_aLabels;
public:
SwLabelConfig();
@@ -40,11 +46,12 @@ public:
virtual void Commit();
virtual void Notify( const ::com::sun::star::uno::Sequence< rtl::OUString >& aPropertyNames );
- void FillManufacturers();
void FillLabels(const rtl::OUString& rManufacturer, SwLabRecs& rLabArr);
const std::vector<rtl::OUString>& GetManufacturers() const {return m_aManufacturers;}
sal_Bool HasLabel(const rtl::OUString& rManufacturer, const rtl::OUString& rType);
+ bool IsPredefinedLabel(const rtl::OUString& rManufacturer, const rtl::OUString& rType)
+ { return m_aLabels[rManufacturer][rType].m_bPredefined; };
void SaveLabel(const rtl::OUString& rManufacturer, const rtl::OUString& rType,
const SwLabRec& rRec);
};