diff options
author | Eike Rathke <erack@redhat.com> | 2014-04-14 23:19:18 +0200 |
---|---|---|
committer | Eike Rathke <erack@redhat.com> | 2014-04-15 00:35:52 +0200 |
commit | 03e96dd2bea1dba5297a41b5ed1ee3b4d0c3b65b (patch) | |
tree | 678f0f6734a1d5f318e4ae17d0fd0566556e22c2 /cui/source | |
parent | 625c595fc30d2e6153735dc2ed2359ff4f8a1e3a (diff) |
toupper YMD for better input check visibility
Change-Id: I24a01860bd019c3bf6e36c1e9df16e6ae6aa0ace
Diffstat (limited to 'cui/source')
-rw-r--r-- | cui/source/options/optgdlg.cxx | 39 |
1 files changed, 35 insertions, 4 deletions
diff --git a/cui/source/options/optgdlg.cxx b/cui/source/options/optgdlg.cxx index f833d4408161..3e8718b9ff2a 100644 --- a/cui/source/options/optgdlg.cxx +++ b/cui/source/options/optgdlg.cxx @@ -1668,13 +1668,16 @@ IMPL_LINK( OfaLanguagesTabPage, LocaleSettingHdl, SvxLanguageBox*, pBox ) IMPL_LINK( OfaLanguagesTabPage, DatePatternsHdl, Edit*, pEd ) { - OUString aPatterns( pEd->GetText()); + const OUString aPatterns( pEd->GetText()); + OUStringBuffer aBuf( aPatterns); + sal_Int32 nChar = 0; bool bValid = true; + bool bModified = false; if (!aPatterns.isEmpty()) { - for (sal_Int32 nIndex=0; nIndex >= 0 && bValid; /*nop*/) + for (sal_Int32 nIndex=0; nIndex >= 0 && bValid; ++nChar) { - OUString aPat( aPatterns.getToken( 0, ';', nIndex)); + const OUString aPat( aPatterns.getToken( 0, ';', nIndex)); if (aPat.isEmpty() && nIndex < 0) { // Indicating failure when about to append a pattern is too @@ -1691,37 +1694,65 @@ IMPL_LINK( OfaLanguagesTabPage, DatePatternsHdl, Edit*, pEd ) bool bSep = true; for (sal_Int32 i = 0; i < aPat.getLength() && bValid; /*nop*/) { - sal_uInt32 c = aPat.iterateCodePoints( &i); + const sal_Int32 j = i; + const sal_uInt32 c = aPat.iterateCodePoints( &i); // Only one Y,M,D per pattern, separated by any character(s). switch (c) { + case 'y': case 'Y': if (bY || !bSep) bValid = false; + else if (c == 'y') + { + aBuf[nChar] = 'Y'; + bModified = true; + } bY = true; bSep = false; break; + case 'm': case 'M': if (bM || !bSep) bValid = false; + else if (c == 'm') + { + aBuf[nChar] = 'M'; + bModified = true; + } bM = true; bSep = false; break; + case 'd': case 'D': if (bD || !bSep) bValid = false; + else if (c == 'd') + { + aBuf[nChar] = 'D'; + bModified = true; + } bD = true; bSep = false; break; default: bSep = true; } + nChar += i-j; } // At least one of Y,M,D bValid &= (bY || bM || bD); } } } + if (bModified) + { + // Do not use SetText(...,GetSelection()) because internally the + // reference's pointer of the selection is obtained resulting in the + // entire text being selected at the end. + Selection aSelection( pEd->GetSelection()); + pEd->SetText( aBuf.makeStringAndClear(), aSelection); + } if (bValid) { pEd->SetControlForeground(); |