sw/source/uibase/docvw/edtwin.cxx | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+)
New commits: commit 483d0e85fad6f8f787ada28bc16242c43f7496b4 Author: László Németh <laszlo.nem...@collabora.com> Date: Sat Jan 30 17:17:42 2016 +0100 Autocompletion: complete year (part) to current date to check or insert it during typing. For example, typing "201" or "2016-0", Writer will suggest "2016-01-30" - the current date in ISO 8601 format - in a tooltip, and it's possible to insert it pressing enter. There is no autocompletion for single years (e.g. "2016") to avoid unintentional text insertion at line ending, e.g. typing "30 January 2016" in a letter header. Change-Id: I230a449b0e19d5316b8369d780d7c7fda57fea37 Reviewed-on: https://gerrit.libreoffice.org/21928 Tested-by: Jenkins <c...@libreoffice.org> Reviewed-by: Andras Timar <andras.ti...@collabora.com> diff --git a/sw/source/uibase/docvw/edtwin.cxx b/sw/source/uibase/docvw/edtwin.cxx index 72b03f3..bfb3a40 100644 --- a/sw/source/uibase/docvw/edtwin.cxx +++ b/sw/source/uibase/docvw/edtwin.cxx @@ -29,6 +29,7 @@ #include <com/sun/star/i18n/InputSequenceCheckMode.hpp> #include <com/sun/star/i18n/UnicodeScript.hpp> +#include <com/sun/star/i18n/CalendarFieldIndex.hpp> #include <vcl/help.hxx> #include <vcl/graph.hxx> @@ -6022,6 +6023,29 @@ void QuickHelpData::FillStrArr( SwWrtShell& rSh, const OUString& rWord ) aNames = (*pCalendar)->getDays(); } + // Add matching current date in ISO 8601 format, for example 2016-01-30 + OUString rStrToday; + + if (rWord[0] == '2') + { + OUStringBuffer rStr(""); + rStr.append(sal::static_int_cast< sal_Int32 >((*pCalendar)->getValue(i18n::CalendarFieldIndex::YEAR))).append("-"); + sal_Int32 nMonth = sal::static_int_cast< sal_Int32 >((*pCalendar)->getValue(i18n::CalendarFieldIndex::MONTH)+1); + sal_Int32 nDay = sal::static_int_cast< sal_Int32 > ((*pCalendar)->getValue(i18n::CalendarFieldIndex::DAY_OF_MONTH)); + if (nMonth < 10) + rStr.append("0"); + rStr.append(nMonth).append("-"); + if (nDay < 10) + rStr.append("0"); + rStrToday = rStr.append(nDay).toString(); + + // do not suggest for single years, for example for "2016", + // only for "201" or "2016-..." (to avoid unintentional text + // insertion at line ending, for example typing "30 January 2016") + if (rWord.getLength() != 4 && rStrToday.startsWith(rWord)) + m_aHelpStrings.push_back(rStrToday); + } + // Add matching words from AutoCompleteWord list const SwAutoCompleteWord& rACList = SwEditShell::GetAutoCompleteWords(); std::vector<OUString> strings; @@ -6031,6 +6055,13 @@ void QuickHelpData::FillStrArr( SwWrtShell& rSh, const OUString& rWord ) for (size_t i= 0; i<strings.size(); i++) { OUString aCompletedString = strings[i]; + + // when we have a matching current date, avoid to suggest + // other words with the same matching starting characters, + // for example 2016-01-3 instead of 2016-01-30 + if (!rStrToday.isEmpty() && aCompletedString.startsWith(rWord)) + continue; + //fdo#61251 if it's an exact match, ensure unchanged replacement //exists as a candidate if (aCompletedString.startsWith(rWord))
_______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits