Related: tdf#129267 format numbers with the UI locale

Change-Id: I70d8cc48869073596c101eec6a6d3a79db044a78
Reviewed-on: https://gerrit.libreoffice.org/84883
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
diff --git a/sd/inc/pageformatpanel.hrc b/sd/inc/pageformatpanel.hrc
index 732f39e..6d45a79 100644
--- a/sd/inc/pageformatpanel.hrc
+++ b/sd/inc/pageformatpanel.hrc
@@ -16,27 +16,33 @@ namespace sd
{

// To translators: this is a listbox labelled by "Margins:", inch units
const char* RID_PAGEFORMATPANEL_MARGINS_INCH[] =
const std::pair<const char*, int> RID_PAGEFORMATPANEL_MARGINS_INCH[] =
{
    NC_("RID_PAGEFORMATPANEL_MARGINS_INCH", "None"),
    NC_("RID_PAGEFORMATPANEL_MARGINS_INCH", "Narrow"),
    NC_("RID_PAGEFORMATPANEL_MARGINS_INCH", "Moderate"),
    NC_("RID_PAGEFORMATPANEL_MARGINS_INCH", "Normal (0.75″)"),
    NC_("RID_PAGEFORMATPANEL_MARGINS_INCH", "Normal (1)"),
    NC_("RID_PAGEFORMATPANEL_MARGINS_INCH", "Normal (1.25″)"),
    NC_("RID_PAGEFORMATPANEL_MARGINS_INCH", "Wide"),
    { NC_("RID_PAGEFORMATPANEL_MARGINS_INCH", "None"), 0 },
    { NC_("RID_PAGEFORMATPANEL_MARGINS_INCH", "Narrow"), 0 },
    { NC_("RID_PAGEFORMATPANEL_MARGINS_INCH", "Moderate"), 0 },
    // Normal (0.75")
    { NC_("RID_PAGEFORMATPANEL_MARGINS_INCH", "Normal (%1)"),  75 },
    // Normal (1")
    { NC_("RID_PAGEFORMATPANEL_MARGINS_INCH", "Normal (%1)"), 100 },
    // Normal (1.25")
    { NC_("RID_PAGEFORMATPANEL_MARGINS_INCH", "Normal (%1)"), 125 },
    { NC_("RID_PAGEFORMATPANEL_MARGINS_INCH", "Wide"), 0 }
};

// To translators: this is a listbox labelled by "Margins:", cm units
const char* RID_PAGEFORMATPANEL_MARGINS_CM[] =
const std::pair<const char*, int> RID_PAGEFORMATPANEL_MARGINS_CM[] =
{
    NC_("RID_PAGEFORMATPANEL_MARGINS_CM", "None"),
    NC_("RID_PAGEFORMATPANEL_MARGINS_CM", "Narrow"),
    NC_("RID_PAGEFORMATPANEL_MARGINS_CM", "Moderate"),
    NC_("RID_PAGEFORMATPANEL_MARGINS_CM", "Normal (1.9 cm)"),
    NC_("RID_PAGEFORMATPANEL_MARGINS_CM", "Normal (2.54 cm)"),
    NC_("RID_PAGEFORMATPANEL_MARGINS_CM", "Normal (3.18 cm)"),
    NC_("RID_PAGEFORMATPANEL_MARGINS_CM", "Wide"),
    { NC_("RID_PAGEFORMATPANEL_MARGINS_CM", "None"), 0 },
    { NC_("RID_PAGEFORMATPANEL_MARGINS_CM", "Narrow"), 0 },
    { NC_("RID_PAGEFORMATPANEL_MARGINS_CM", "Moderate"), 0 },
    // Normal (1.9 cm)
    { NC_("RID_PAGEFORMATPANEL_MARGINS_CM", "Normal (%1)"), 190 },
    // Normal (2.54 cm)
    { NC_("RID_PAGEFORMATPANEL_MARGINS_CM", "Normal (%1)"), 254 },
    // Normal (3.18 cm)
    { NC_("RID_PAGEFORMATPANEL_MARGINS_CM", "Normal (%1)"), 318 },
    { NC_("RID_PAGEFORMATPANEL_MARGINS_CM", "Wide"), 0 }
};

}
diff --git a/sd/source/ui/sidebar/SlideBackground.cxx b/sd/source/ui/sidebar/SlideBackground.cxx
index c28242b..7a43a4c 100644
--- a/sd/source/ui/sidebar/SlideBackground.cxx
+++ b/sd/source/ui/sidebar/SlideBackground.cxx
@@ -52,6 +52,7 @@
#include <sfx2/dispatch.hxx>
#include <sfx2/sidebar/Panel.hxx>
#include <EventMultiplexer.hxx>
#include <unotools/localedatawrapper.hxx>
#include <vcl/EnumContext.hxx>

#include <editeng/sizeitem.hxx>
@@ -190,15 +191,25 @@ void SlideBackground::SetMarginsFieldUnit()
    auto nSelected = mpMarginSelectBox->GetSelectedEntryPos();
    mpMarginSelectBox->Clear();

    const LocaleDataWrapper& rLocaleData = Application::GetSettings().GetLocaleDataWrapper();

    if (IsInch(meFUnit))
    {
        OUString sSuffix = weld::MetricSpinButton::MetricToString(FieldUnit::INCH);
        for (size_t i = 0; i < SAL_N_ELEMENTS(RID_PAGEFORMATPANEL_MARGINS_INCH); ++i)
            mpMarginSelectBox->InsertEntry(SdResId(RID_PAGEFORMATPANEL_MARGINS_INCH[i]));
        {
            OUString sMeasurement = rLocaleData.getNum(RID_PAGEFORMATPANEL_MARGINS_INCH[i].second, 2, true, false) + sSuffix;
            mpMarginSelectBox->InsertEntry(SdResId(RID_PAGEFORMATPANEL_MARGINS_INCH[i].first).replaceFirst("%1", sMeasurement));
        }
    }
    else
    {
        OUString sSuffix = " " + weld::MetricSpinButton::MetricToString(FieldUnit::CM);
        for (size_t i = 0; i < SAL_N_ELEMENTS(RID_PAGEFORMATPANEL_MARGINS_CM); ++i)
            mpMarginSelectBox->InsertEntry(SdResId(RID_PAGEFORMATPANEL_MARGINS_CM[i]));
        {
            OUString sMeasurement = rLocaleData.getNum(RID_PAGEFORMATPANEL_MARGINS_CM[i].second, 2, true, false) + sSuffix;
            mpMarginSelectBox->InsertEntry(SdResId(RID_PAGEFORMATPANEL_MARGINS_CM[i].first).replaceFirst("%1", sMeasurement));
        }
    }

    mpMarginSelectBox->SelectEntryPos(nSelected);