svx/inc/spacing.hrc | 101 ++++++++++++++++----------- svx/source/dialog/spacinglistbox.cxx | 21 ++++- sw/inc/pageformatpanel.hrc | 42 ++++++----- sw/source/uibase/sidebar/PageFormatPanel.cxx | 17 ++++ 4 files changed, 117 insertions(+), 64 deletions(-)
New commits: commit 137c9e826cdce429a004f05bde40d274437d7554 Author: Caolán McNamara <[email protected]> AuthorDate: Tue Dec 10 09:44:39 2019 +0000 Commit: Caolán McNamara <[email protected]> CommitDate: Tue Dec 10 21:28:13 2019 +0100 Related: tdf#129267 format numbers with the UI locale Change-Id: Ib7712f56140e5ef9a67700c8ea86383adbf2a4fc Reviewed-on: https://gerrit.libreoffice.org/84800 Tested-by: Jenkins Reviewed-by: Caolán McNamara <[email protected]> Tested-by: Caolán McNamara <[email protected]> diff --git a/svx/inc/spacing.hrc b/svx/inc/spacing.hrc index 82f107fc67db..b8ca2661c528 100644 --- a/svx/inc/spacing.hrc +++ b/svx/inc/spacing.hrc @@ -13,60 +13,81 @@ #define NC_(Context, String) reinterpret_cast<char const *>(Context "\004" u8##String) +struct measurement +{ + const char* key; + int twips; + int human; +}; + // To translators: this is a listbox labelled by "Spacing:", inch units -const std::pair<const char*, int> RID_SVXSTRARY_SPACING_INCH[] = +const measurement RID_SVXSTRARY_SPACING_INCH[] = { - { NC_("RID_SVXSTRARY_SPACING_INCH", "None"), 0 }, - { NC_("RID_SVXSTRARY_SPACING_INCH", "Extra Small (1/16″)"), 91 }, - { NC_("RID_SVXSTRARY_SPACING_INCH", "Small (1/8″)"), 181 }, - { NC_("RID_SVXSTRARY_SPACING_INCH", "Small Medium (1/4″)"), 363 }, - { NC_("RID_SVXSTRARY_SPACING_INCH", "Medium (3/8″)"), 539 }, - { NC_("RID_SVXSTRARY_SPACING_INCH", "Medium Large (1/2″)"), 720 }, - { NC_("RID_SVXSTRARY_SPACING_INCH", "Large (3/4″)"), 1077 }, - { NC_("RID_SVXSTRARY_SPACING_INCH", "Extra Large (1″)"), 1440 }, - { nullptr, 0 } + { NC_("RID_SVXSTRARY_SPACING_INCH", "None"), 0, 0 }, + { NC_("RID_SVXSTRARY_SPACING_INCH", "Extra Small (1/16″)"), 91, 0 }, + { NC_("RID_SVXSTRARY_SPACING_INCH", "Small (1/8″)"), 181, 0 }, + { NC_("RID_SVXSTRARY_SPACING_INCH", "Small Medium (1/4″)"), 363, 0 }, + { NC_("RID_SVXSTRARY_SPACING_INCH", "Medium (3/8″)"), 539, 0 }, + { NC_("RID_SVXSTRARY_SPACING_INCH", "Medium Large (1/2″)"), 720, 0 }, + { NC_("RID_SVXSTRARY_SPACING_INCH", "Large (3/4″)"), 1077, 0 }, + { NC_("RID_SVXSTRARY_SPACING_INCH", "Extra Large (1″)"), 1440, 0 }, + { nullptr, 0, 0 } }; // To translators: this is a listbox labelled by "Spacing:", cm units -const std::pair<const char*, int> RID_SVXSTRARY_SPACING_CM[] = +const measurement RID_SVXSTRARY_SPACING_CM[] = { - { NC_("RID_SVXSTRARY_SPACING_CM", "None"), 0 }, - { NC_("RID_SVXSTRARY_SPACING_CM", "Extra Small (0.16 cm)"), 91 }, - { NC_("RID_SVXSTRARY_SPACING_CM", "Small (0.32 cm)"), 181 }, - { NC_("RID_SVXSTRARY_SPACING_CM", "Small Medium (0.64 cm)"), 363 }, - { NC_("RID_SVXSTRARY_SPACING_CM", "Medium (0.95 cm)"), 539 }, - { NC_("RID_SVXSTRARY_SPACING_CM", "Medium Large (1.27 cm)"), 720 }, - { NC_("RID_SVXSTRARY_SPACING_CM", "Large (1.9 cm)"), 1077 }, - { NC_("RID_SVXSTRARY_SPACING_CM", "Extra Large (2.54 cm)"), 1440 }, - { nullptr, 0 } + { NC_("RID_SVXSTRARY_SPACING_CM", "None"), 0, 0 }, + // Extra Small (0.16 cm) + { NC_("RID_SVXSTRARY_SPACING_CM", "Extra Small (%1)"), 91, 16 }, + // Small (0.32 cm) + { NC_("RID_SVXSTRARY_SPACING_CM", "Small (%1)"), 181, 32 }, + // Small Medium (0.64 cm) + { NC_("RID_SVXSTRARY_SPACING_CM", "Small Medium (%1)"), 363, 64 }, + // Medium (0.95 cm) + { NC_("RID_SVXSTRARY_SPACING_CM", "Medium (%1)"), 539, 95 }, + // Medium Large (1.27 cm) + { NC_("RID_SVXSTRARY_SPACING_CM", "Medium Large (%1)"), 720, 127 }, + // Large (1.9 cm) + { NC_("RID_SVXSTRARY_SPACING_CM", "Large (%1)"), 1077, 190 }, + // Extra Large (2.54 cm) + { NC_("RID_SVXSTRARY_SPACING_CM", "Extra Large (%1)"), 1440, 254 }, + { nullptr, 0, 0 } }; // To translators: this is a listbox labelled by "Margins:", inch units -const std::pair<const char*, int> RID_SVXSTRARY_MARGINS_INCH[] = +const measurement RID_SVXSTRARY_MARGINS_INCH[] = { - { NC_("RID_SVXSTRARY_MARGINS_INCH", "None"), 0 }, - { NC_("RID_SVXSTRARY_MARGINS_INCH", "Extra Small (1/16″)"), 91 }, - { NC_("RID_SVXSTRARY_MARGINS_INCH", "Small (1/8″)"), 181 }, - { NC_("RID_SVXSTRARY_MARGINS_INCH", "Small Medium (1/4″)"), 363 }, - { NC_("RID_SVXSTRARY_MARGINS_INCH", "Medium (3/8″)"), 539 }, - { NC_("RID_SVXSTRARY_MARGINS_INCH", "Medium Large (1/2″)"), 720 }, - { NC_("RID_SVXSTRARY_MARGINS_INCH", "Large (3/4″)"), 1077 }, - { NC_("RID_SVXSTRARY_MARGINS_INCH", "Extra Large (1″)"), 1440 }, - { nullptr, 0 } + { NC_("RID_SVXSTRARY_MARGINS_INCH", "None"), 0, 0 }, + { NC_("RID_SVXSTRARY_MARGINS_INCH", "Extra Small (1/16″)"), 91, 0 }, + { NC_("RID_SVXSTRARY_MARGINS_INCH", "Small (1/8″)"), 181, 0 }, + { NC_("RID_SVXSTRARY_MARGINS_INCH", "Small Medium (1/4″)"), 363, 0 }, + { NC_("RID_SVXSTRARY_MARGINS_INCH", "Medium (3/8″)"), 539, 0 }, + { NC_("RID_SVXSTRARY_MARGINS_INCH", "Medium Large (1/2″)"), 720, 0 }, + { NC_("RID_SVXSTRARY_MARGINS_INCH", "Large (3/4″)"), 1077, 0 }, + { NC_("RID_SVXSTRARY_MARGINS_INCH", "Extra Large (1″)"), 1440, 0 }, + { nullptr, 0, 0 } }; // To translators: this is a listbox labelled by "Margins:", cm units -const std::pair<const char*, int> RID_SVXSTRARY_MARGINS_CM[] = +const measurement RID_SVXSTRARY_MARGINS_CM[] = { - { NC_("RID_SVXSTRARY_MARGINS_CM", "None"), 0 }, - { NC_("RID_SVXSTRARY_MARGINS_CM", "Extra Small (0.16 cm)"), 91 }, - { NC_("RID_SVXSTRARY_MARGINS_CM", "Small (0.32 cm)"), 181 }, - { NC_("RID_SVXSTRARY_MARGINS_CM", "Small Medium (0.64 cm)"), 363 }, - { NC_("RID_SVXSTRARY_MARGINS_CM", "Medium (0.95 cm)"), 539 }, - { NC_("RID_SVXSTRARY_MARGINS_CM", "Medium Large (1.27 cm)"), 720 }, - { NC_("RID_SVXSTRARY_MARGINS_CM", "Large (1.9 cm)"), 1077 }, - { NC_("RID_SVXSTRARY_MARGINS_CM", "Extra Large (2.54 cm)"), 1440 }, - { nullptr, 0 } + { NC_("RID_SVXSTRARY_MARGINS_CM", "None"), 0, 0 }, + // Extra Small (0.16 cm) + { NC_("RID_SVXSTRARY_MARGINS_CM", "Extra Small (%1)"), 91, 16 }, + // Small (0.32 cm) + { NC_("RID_SVXSTRARY_MARGINS_CM", "Small (%1)"), 181, 32 }, + // Small Medium (0.64 cm) + { NC_("RID_SVXSTRARY_MARGINS_CM", "Small Medium (%1)"), 363, 64 }, + // Medium (0.95 cm) + { NC_("RID_SVXSTRARY_MARGINS_CM", "Medium (%1)"), 539, 95 }, + // Medium Large (1.27 cm) + { NC_("RID_SVXSTRARY_MARGINS_CM", "Medium Large (%1)"), 720, 127 }, + // Large (1.9 cm) + { NC_("RID_SVXSTRARY_MARGINS_CM", "Large (%1)"), 1077, 190 }, + // Extra Large (2.54 cm) + { NC_("RID_SVXSTRARY_MARGINS_CM", "Extra Large (%1)"), 1440, 254 }, + { nullptr, 0, 0 } }; #endif diff --git a/svx/source/dialog/spacinglistbox.cxx b/svx/source/dialog/spacinglistbox.cxx index 85ebc624931c..90654618f994 100644 --- a/svx/source/dialog/spacinglistbox.cxx +++ b/svx/source/dialog/spacinglistbox.cxx @@ -19,7 +19,11 @@ #include <svx/strings.hrc> #include <svx/dialmgr.hxx> #include <svx/spacinglistbox.hxx> +#include <unotools/localedatawrapper.hxx> #include <vcl/builderfactory.hxx> +#include <vcl/settings.hxx> +#include <vcl/svapp.hxx> +#include <vcl/weld.hxx> #include <spacing.hrc> SpacingListBox::SpacingListBox(vcl::Window* pParent) @@ -34,29 +38,38 @@ void SpacingListBox::Init(SpacingType eType) nSelected = 0; Clear(); - const std::pair<const char*, int>* pResources; + const LocaleDataWrapper& rLocaleData = Application::GetSettings().GetLocaleDataWrapper(); + OUString sSuffix; + + const measurement* pResources; switch (eType) { case SpacingType::SPACING_INCH: pResources = RID_SVXSTRARY_SPACING_INCH; + sSuffix = weld::MetricSpinButton::MetricToString(FieldUnit::INCH); break; case SpacingType::MARGINS_INCH: pResources = RID_SVXSTRARY_MARGINS_INCH; + sSuffix = weld::MetricSpinButton::MetricToString(FieldUnit::INCH); break; case SpacingType::SPACING_CM: pResources = RID_SVXSTRARY_SPACING_CM; + sSuffix = " " + weld::MetricSpinButton::MetricToString(FieldUnit::CM); break; default: case SpacingType::MARGINS_CM: + sSuffix = " " + weld::MetricSpinButton::MetricToString(FieldUnit::CM); pResources = RID_SVXSTRARY_MARGINS_CM; break; } - while (pResources->first) + while (pResources->key) { - OUString aStr = SvxResId(pResources->first); - sal_uInt16 nData = pResources->second; + OUString sMeasurement = rLocaleData.getNum(pResources->human, 2, true, false) + sSuffix; + OUString aStr = SvxResId(pResources->key).replaceFirst("%1", sMeasurement); + sal_uInt16 nData = pResources->twips; sal_Int32 nPos = InsertEntry( aStr ); + SetEntryData( nPos, reinterpret_cast<void*>(static_cast<sal_uLong>(nData)) ); ++pResources; } diff --git a/sw/inc/pageformatpanel.hrc b/sw/inc/pageformatpanel.hrc index ddc82ed620d3..70a8bbbc1930 100644 --- a/sw/inc/pageformatpanel.hrc +++ b/sw/inc/pageformatpanel.hrc @@ -16,29 +16,35 @@ namespace sw { // 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", "Mirrored") + { 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 }, + { NC_("RID_PAGEFORMATPANEL_MARGINS_INCH", "Mirrored"), 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", "Mirrored") + { 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 }, + { NC_("RID_PAGEFORMATPANEL_MARGINS_CM", "Mirrored"), 0 } }; } diff --git a/sw/source/uibase/sidebar/PageFormatPanel.cxx b/sw/source/uibase/sidebar/PageFormatPanel.cxx index ecc8ff01b5c6..ad2fbc21c26a 100644 --- a/sw/source/uibase/sidebar/PageFormatPanel.cxx +++ b/sw/source/uibase/sidebar/PageFormatPanel.cxx @@ -40,6 +40,9 @@ #include <uitool.hxx> #include <svtools/unitconv.hxx> #include <svtools/optionsdrawinglayer.hxx> +#include <unotools/localedatawrapper.hxx> +#include <vcl/settings.hxx> +#include <vcl/svapp.hxx> #include <com/sun/star/lang/IllegalArgumentException.hpp> @@ -62,15 +65,25 @@ void PageFormatPanel::SetMarginFieldUnit() { 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(SwResId(RID_PAGEFORMATPANEL_MARGINS_INCH[i])); + { + OUString sStr = rLocaleData.getNum(RID_PAGEFORMATPANEL_MARGINS_INCH[i].second, 2, true, false) + sSuffix; + mpMarginSelectBox->InsertEntry(SwResId(RID_PAGEFORMATPANEL_MARGINS_INCH[i].first).replaceFirst("%1", sStr)); + } } else { + OUString sSuffix = weld::MetricSpinButton::MetricToString(FieldUnit::CM); for (size_t i = 0; i < SAL_N_ELEMENTS(RID_PAGEFORMATPANEL_MARGINS_CM); ++i) - mpMarginSelectBox->InsertEntry(SwResId(RID_PAGEFORMATPANEL_MARGINS_CM[i])); + { + OUString sStr = rLocaleData.getNum(RID_PAGEFORMATPANEL_MARGINS_CM[i].second, 2, true, false) + " " + sSuffix; + mpMarginSelectBox->InsertEntry(SwResId(RID_PAGEFORMATPANEL_MARGINS_CM[i].first).replaceFirst("%1", sStr)); + } } mpMarginSelectBox->SelectEntryPos(nSelected); } _______________________________________________ Libreoffice-commits mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
