sw/inc/strings.hrc | 22 ++++++++-------- sw/source/uibase/dbui/dbmgr.cxx | 54 +++++++++++++++++++++------------------- 2 files changed, 40 insertions(+), 36 deletions(-)
New commits: commit faa88099d842b83365fa86a661dc56f0031a9b29 Author: Mike Kaganski <mike.kagan...@collabora.com> AuthorDate: Mon Jul 11 13:59:16 2022 +0300 Commit: Mike Kaganski <mike.kagan...@collabora.com> CommitDate: Tue Jul 12 07:22:32 2022 +0200 tdf#149947: simplify filter list creation Change-Id: Ic44d217a5593cc8694bc2f2f2e19e0c66d3ae9a5 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/136957 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kagan...@collabora.com> diff --git a/sw/inc/strings.hrc b/sw/inc/strings.hrc index 130004c6f338..ed06d5b39d42 100644 --- a/sw/inc/strings.hrc +++ b/sw/inc/strings.hrc @@ -861,17 +861,17 @@ #define STR_NOTASSIGNED NC_("STR_NOTASSIGNED", " not yet matched ") #define STR_FILTER_ALL NC_("STR_FILTER_ALL", "All files") -#define STR_FILTER_ALL_DATA NC_("STR_FILTER_ALL_DATA", "Address lists(*.*)") -#define STR_FILTER_SXB NC_("STR_FILTER_SXB", "%PRODUCTNAME Base (*.odb)") -#define STR_FILTER_SXC NC_("STR_FILTER_SXC", "%PRODUCTNAME Calc (*.ods;*.sxc)") -#define STR_FILTER_SXW NC_("STR_FILTER_SXW", "%PRODUCTNAME Writer (*.odt;*.sxw)") -#define STR_FILTER_DBF NC_("STR_FILTER_DBF", "dBase (*.dbf)") -#define STR_FILTER_XLS NC_("STR_FILTER_XLS", "Microsoft Excel (*.xls;*.xlsx)") -#define STR_FILTER_DOC NC_("STR_FILTER_DOC", "Microsoft Word (*.doc;*.docx)") -#define STR_FILTER_TXT NC_("STR_FILTER_TXT", "Plain text (*.txt)") -#define STR_FILTER_CSV NC_("STR_FILTER_CSV", "Text Comma Separated (*.csv)") -#define STR_FILTER_MDB NC_("STR_FILTER_MDB", "Microsoft Access (*.mdb;*.mde)") -#define STR_FILTER_ACCDB NC_("STR_FILTER_ACCDB", "Microsoft Access 2007 (*.accdb,*.accde)") +#define STR_FILTER_ALL_DATA NC_("STR_FILTER_ALL_DATA", "Address lists") +#define STR_FILTER_SXB NC_("STR_FILTER_SXB", "%PRODUCTNAME Base") +#define STR_FILTER_SXC NC_("STR_FILTER_SXC", "%PRODUCTNAME Calc") +#define STR_FILTER_SXW NC_("STR_FILTER_SXW", "%PRODUCTNAME Writer") +#define STR_FILTER_DBF NC_("STR_FILTER_DBF", "dBase") +#define STR_FILTER_XLS NC_("STR_FILTER_XLS", "Microsoft Excel") +#define STR_FILTER_DOC NC_("STR_FILTER_DOC", "Microsoft Word") +#define STR_FILTER_TXT NC_("STR_FILTER_TXT", "Plain text") +#define STR_FILTER_CSV NC_("STR_FILTER_CSV", "Text Comma Separated") +#define STR_FILTER_MDB NC_("STR_FILTER_MDB", "Microsoft Access") +#define STR_FILTER_ACCDB NC_("STR_FILTER_ACCDB", "Microsoft Access 2007") #define ST_CONFIGUREMAIL NC_("ST_CONFIGUREMAIL", "In order to be able to send mail merge documents by email, %PRODUCTNAME requires information about the email account to be used.\n\nDo you want to enter email account information now?") #define ST_FILTERNAME NC_("ST_FILTERNAME", "%PRODUCTNAME Address List (.csv)") diff --git a/sw/source/uibase/dbui/dbmgr.cxx b/sw/source/uibase/dbui/dbmgr.cxx index 0d526bab42c3..15a1105e47b5 100644 --- a/sw/source/uibase/dbui/dbmgr.cxx +++ b/sw/source/uibase/dbui/dbmgr.cxx @@ -2784,40 +2784,44 @@ OUString SwDBManager::LoadAndRegisterDataSource(weld::Window* pParent, SwDocShel OUString sFilterAll(SwResId(STR_FILTER_ALL)); OUString sFilterAllData(SwResId(STR_FILTER_ALL_DATA)); - OUString sFilterSXB(SwResId(STR_FILTER_SXB)); - OUString sFilterSXC(SwResId(STR_FILTER_SXC)); - OUString sFilterSXW(SwResId(STR_FILTER_SXW)); - OUString sFilterDBF(SwResId(STR_FILTER_DBF)); - OUString sFilterXLS(SwResId(STR_FILTER_XLS)); - OUString sFilterDOC(SwResId(STR_FILTER_DOC)); - OUString sFilterTXT(SwResId(STR_FILTER_TXT)); - OUString sFilterCSV(SwResId(STR_FILTER_CSV)); + + const std::vector<std::pair<OUString, OUString>> filters{ + { SwResId(STR_FILTER_SXB), "*.odb" }, + { SwResId(STR_FILTER_SXC), "*.ods;*.sxc" }, + { SwResId(STR_FILTER_SXW), "*.odt;*.sxw" }, + { SwResId(STR_FILTER_DBF), "*.dbf" }, + { SwResId(STR_FILTER_XLS), "*.xls;*.xlsx" }, + { SwResId(STR_FILTER_DOC), "*.doc;*.docx" }, + { SwResId(STR_FILTER_TXT), "*.txt" }, + { SwResId(STR_FILTER_CSV), "*.csv" }, #ifdef _WIN32 - OUString sFilterMDB(SwResId(STR_FILTER_MDB)); - OUString sFilterACCDB(SwResId(STR_FILTER_ACCDB)); + { SwResId(STR_FILTER_MDB), "*.mdb;*.mde" }, + { SwResId(STR_FILTER_ACCDB), "*.accdb;*.accde" }, #endif + }; + + OUStringBuffer sAllDataFilter; + for (const auto& [name, filter] : filters) + { + (void)name; + if (!sAllDataFilter.isEmpty()) + sAllDataFilter.append(';'); + sAllDataFilter.append(filter); + } + xFP->appendFilter( sFilterAll, "*" ); - xFP->appendFilter( sFilterAllData, "*.ods;*.sxc;*.odt;*.sxw;*.dbf;*.xls;*.xlsx;*.doc;*.docx;*.txt;*.csv"); - - xFP->appendFilter( sFilterSXB, "*.odb" ); - xFP->appendFilter( sFilterSXC, "*.ods;*.sxc" ); - xFP->appendFilter( sFilterSXW, "*.odt;*.sxw" ); - xFP->appendFilter( sFilterDBF, "*.dbf" ); - xFP->appendFilter( sFilterXLS, "*.xls;*.xlsx" ); - xFP->appendFilter( sFilterDOC, "*.doc;*.docx" ); - xFP->appendFilter( sFilterTXT, "*.txt" ); - xFP->appendFilter( sFilterCSV, "*.csv" ); -#ifdef _WIN32 - xFP->appendFilter(sFilterMDB, "*.mdb;*.mde"); - xFP->appendFilter(sFilterACCDB, "*.accdb;*.accde"); -#endif + xFP->appendFilter( sFilterAllData, sAllDataFilter.makeStringAndClear()); + + // Similar to sfx2::addExtension from sfx2/source/dialog/filtergrouping.cxx + for (const auto& [name, filter] : filters) + xFP->appendFilter(name + " (" + filter + ")", filter); xFP->setCurrentFilter( sFilterAll ) ; OUString sFind; if( ERRCODE_NONE == aDlgHelper.Execute() ) { uno::Reference< beans::XPropertySet > aSettings; - const INetURLObject aURL( xFP->getSelectedFiles().getConstArray()[0] ); + const INetURLObject aURL( xFP->getSelectedFiles()[0] ); const DBConnURIType type = GetDBunoType( aURL ); if( DBConnURIType::FLAT == type )