diff options
author | Matt K <mattkse@gmail.com> | 2021-03-25 00:40:33 -0500 |
---|---|---|
committer | Mike Kaganski <mike.kaganski@collabora.com> | 2021-04-01 06:30:36 +0200 |
commit | 6a6cd129f34220fadf5d134a2dc2c1e368acbc4f (patch) | |
tree | 4a7793b504a34875969f72b6f9f2997ec6712170 /cui/source/options/optgdlg.cxx | |
parent | d10a49d64469411a23b3660a82106405808da028 (diff) |
tdf#45735 New UI dialog at app startup to check default file formats
On Windows only, and only on a non-admin installation, check on application
startup whether the file formats ".ods", ".odt", and ".odp" are registered
to be opened by LibreOffice by default. If any of the formats are not
default, show a UI dialog informing the user which formats are not default
and ask the user to set the defaults. If the user selects "OK" to set
defaults then the Windows UI corresponding to the user's Windows version is
opened for selecting defaults per program. There is also a checkbox on the
dialog to select whether checking is performed on application startup.
Also, in Tools -> Options -> General, add a UI checkbox for performing this
check on application startup, and refactor the existing button "Windows
Default apps" to use the same Windows UI Launch APIs.
Change-Id: I5e7258d111ff7da8f68805e60405aec064ddcf7c
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/112370
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
Diffstat (limited to 'cui/source/options/optgdlg.cxx')
-rw-r--r-- | cui/source/options/optgdlg.cxx | 43 |
1 files changed, 18 insertions, 25 deletions
diff --git a/cui/source/options/optgdlg.cxx b/cui/source/options/optgdlg.cxx index 673815bb60ab..7ec04487d5c0 100644 --- a/cui/source/options/optgdlg.cxx +++ b/cui/source/options/optgdlg.cxx @@ -86,11 +86,7 @@ #include <svtools/imgdef.hxx> #if defined(_WIN32) -#include <o3tl/char16_t2wchar_t.hxx> -#include <prewin.h> -#include <shobjidl.h> -#include <systools/win32/comtools.hxx> -#include <postwin.h> +#include <vcl/fileregistration.hxx> #endif using namespace ::com::sun::star::uno; using namespace ::com::sun::star::lang; @@ -177,6 +173,7 @@ OfaMiscTabPage::OfaMiscTabPage(weld::Container* pPage, weld::DialogController* p #endif #if defined(_WIN32) , m_xFileAssocFrame(m_xBuilder->weld_widget("fileassoc")) + , m_xPerformFileExtCheck(m_xBuilder->weld_check_button("cbPerformFileExtCheck")) , m_xFileAssocBtn(m_xBuilder->weld_button("assocfiles")) #endif { @@ -288,6 +285,15 @@ bool OfaMiscTabPage::FillItemSet( SfxItemSet* rSet ) } #endif +#if defined(_WIN32) + if (m_xPerformFileExtCheck->get_state_changed_from_saved()) + { + officecfg::Office::Common::Misc::PerformFileExtCheck::set( + m_xPerformFileExtCheck->get_active(), batch); + bModified = true; + } +#endif + batch->commit(); if( m_xQuickLaunchCB->get_state_changed_from_saved()) @@ -347,6 +353,12 @@ void OfaMiscTabPage::Reset( const SfxItemSet* rSet ) } m_xQuickLaunchCB->save_state(); + +#if defined(_WIN32) + m_xPerformFileExtCheck->set_active( + officecfg::Office::Common::Misc::PerformFileExtCheck::get()); + m_xPerformFileExtCheck->save_state(); +#endif } IMPL_LINK_NOARG( OfaMiscTabPage, TwoFigureHdl, weld::SpinButton&, void ) @@ -367,26 +379,7 @@ IMPL_LINK_NOARG( OfaMiscTabPage, TwoFigureHdl, weld::SpinButton&, void ) #if defined(_WIN32) IMPL_STATIC_LINK_NOARG(OfaMiscTabPage, FileAssocClick, weld::Button&, void) { - const bool bUninit = SUCCEEDED(CoInitializeEx(nullptr, COINIT_APARTMENTTHREADED)); - try - { - auto pIf - = sal::systools::COMReference<IApplicationAssociationRegistrationUI>().CoCreateInstance( - CLSID_ApplicationAssociationRegistrationUI, nullptr, CLSCTX_INPROC_SERVER); - - // LaunchAdvancedAssociationUI only works for applications registered under - // Software\RegisteredApplications. See scp2/source/ooo/registryitem_ooo.scp - const OUString expanded = Translate::ExpandVariables("%PRODUCTNAME %PRODUCTVERSION"); - // This will only show "To change your default apps, go to Settings > Apps > Default apps" - // on Win10; this is expected. At least this will self-document it to users. - pIf->LaunchAdvancedAssociationUI(o3tl::toW(expanded.getStr())); - } - catch (...) - { - // Just ignore any error here: this is not something we need to make sure to succeed - } - if (bUninit) - CoUninitialize(); + vcl::fileregistration::LaunchRegistrationUI(); } #endif |