22 #include <string_view>
24 #include <officecfg/Inet.hxx>
25 #include <officecfg/Office/Common.hxx>
26 #include <officecfg/Office/Security.hxx>
31 #include <com/sun/star/uno/Sequence.hxx>
34 #include <dialmgr.hxx>
36 #include <strings.hrc>
38 #include <com/sun/star/security/DocumentDigitalSignatures.hpp>
39 #include <com/sun/star/task/InteractionHandler.hpp>
42 #include <rtl/ustring.hxx>
43 #include <osl/file.hxx>
44 #include <com/sun/star/configuration/theDefaultProvider.hpp>
45 #include <com/sun/star/beans/NamedValue.hpp>
46 #include <com/sun/star/beans/XPropertySet.hpp>
47 #include <com/sun/star/beans/XPropertyState.hpp>
48 #include <com/sun/star/util/XChangesBatch.hpp>
52 #include <com/sun/star/ui/dialogs/TemplateDescription.hpp>
53 #include <com/sun/star/task/PasswordContainer.hpp>
54 #include <com/sun/star/task/XPasswordContainer2.hpp>
64 using namespace ::
sfx2;
68 bool isValidPort(OUString
const & value) {
72 auto const n = value.toUInt64();
80 return std::u16string_view(value).find_first_not_of(u
'0') == std::u16string_view::npos;
90 VclMessageType::Warning, VclButtonsType::Ok,
91 CuiResId( RID_SVXSTR_OPT_PROXYPORTS)));
107 OUStringBuffer sAllowed;
108 for (sal_Int32
i = 0, nLen = rTest.getLength();
i < nLen; ++
i)
110 if (rTest[
i] >=
'0' && rTest[
i] <=
'9')
111 sAllowed.append(rTest[
i]);
113 rTest = sAllowed.makeStringAndClear();
119 rTest = rTest.replaceAll(
" ",
"");
129 :
SfxTabPage(pPage, pController,
"cui/ui/optproxypage.ui",
"OptProxyPage", &rSet)
130 , m_xProxyModeLB(m_xBuilder->weld_combo_box(
"proxymode"))
131 , m_xHttpProxyFT(m_xBuilder->weld_label(
"httpft"))
132 , m_xHttpProxyED(m_xBuilder->weld_entry(
"http"))
133 , m_xHttpPortFT(m_xBuilder->weld_label(
"httpportft"))
134 , m_xHttpPortED(m_xBuilder->weld_entry(
"httpport"))
135 , m_xHttpsProxyFT(m_xBuilder->weld_label(
"httpsft"))
136 , m_xHttpsProxyED(m_xBuilder->weld_entry(
"https"))
137 , m_xHttpsPortFT(m_xBuilder->weld_label(
"httpsportft"))
138 , m_xHttpsPortED(m_xBuilder->weld_entry(
"httpsport"))
139 , m_xFtpProxyFT(m_xBuilder->weld_label(
"ftpft"))
140 , m_xFtpProxyED(m_xBuilder->weld_entry(
"ftp"))
141 , m_xFtpPortFT(m_xBuilder->weld_label(
"ftpportft"))
142 , m_xFtpPortED(m_xBuilder->weld_entry(
"ftpport"))
143 , m_xNoProxyForFT(m_xBuilder->weld_label(
"noproxyft"))
144 , m_xNoProxyForED(m_xBuilder->weld_entry(
"noproxy"))
145 , m_xNoProxyDescFT(m_xBuilder->weld_label(
"noproxydesc"))
164 Reference< css::lang::XMultiServiceFactory >
165 xConfigurationProvider(
166 configuration::theDefaultProvider::get(
169 beans::NamedValue aProperty;
170 aProperty.Name =
"nodepath";
171 aProperty.Value <<= OUString(
"org.openoffice.Inet/Settings" );
173 Sequence< Any > aArgumentList( 1 );
174 aArgumentList[0] <<= aProperty;
177 "com.sun.star.configuration.ConfigurationUpdateAccess",
187 return std::make_unique<SvxProxyTabPage>(pPage, pController, *rAttrSet);
192 sal_Int32 nIntValue = 0;
194 std::optional<sal_Int32>
x(officecfg::Inet::Settings::ooInetProxyType::get());
201 m_xHttpProxyED->set_text( officecfg::Inet::Settings::ooInetHTTPProxyName::get() );
202 x = officecfg::Inet::Settings::ooInetHTTPProxyPort::get();
209 m_xHttpsProxyED->set_text( officecfg::Inet::Settings::ooInetHTTPSProxyName::get() );
210 x = officecfg::Inet::Settings::ooInetHTTPSProxyPort::get();
217 m_xFtpProxyED->set_text( officecfg::Inet::Settings::ooInetFTPProxyName::get() );
218 x = officecfg::Inet::Settings::ooInetFTPProxyPort::get();
225 m_xNoProxyForED->set_text( officecfg::Inet::Settings::ooInetNoProxy::get() );
234 sal_Int32 nIntValue = 0;
235 OUString aStringValue;
237 if( xPropertyState->getPropertyDefault(g_aHttpProxyPN) >>= aStringValue )
242 if( xPropertyState->getPropertyDefault(g_aHttpPortPN) >>= nIntValue )
247 if( xPropertyState->getPropertyDefault(g_aHttpsProxyPN) >>= aStringValue )
252 if( xPropertyState->getPropertyDefault(g_aHttpsPortPN) >>= nIntValue )
257 if( xPropertyState->getPropertyDefault(g_aFtpProxyPN) >>= aStringValue )
262 if( xPropertyState->getPropertyDefault(g_aFtpPortPN) >>= nIntValue )
267 if( xPropertyState->getPropertyDefault(g_aNoProxyDescPN) >>= aStringValue )
272 catch (
const beans::UnknownPropertyException &)
276 catch (
const css::lang::WrappedTargetException &)
292 xPropertyState->setPropertyToDefault(g_aProxyModePN);
293 xPropertyState->setPropertyToDefault(g_aHttpProxyPN);
294 xPropertyState->setPropertyToDefault(g_aHttpPortPN);
295 xPropertyState->setPropertyToDefault(g_aHttpsProxyPN);
296 xPropertyState->setPropertyToDefault(g_aHttpsPortPN);
297 xPropertyState->setPropertyToDefault(g_aFtpProxyPN);
298 xPropertyState->setPropertyToDefault(g_aFtpPortPN);
299 xPropertyState->setPropertyToDefault(g_aNoProxyDescPN);
302 xChangesBatch->commitChanges();
304 catch (
const beans::UnknownPropertyException &)
308 catch (
const css::lang::WrappedTargetException &)
336 bool bModified =
false;
350 xPropertySet->setPropertyValue(g_aProxyModePN,
Any(nSelPos));
356 xPropertySet->setPropertyValue( g_aHttpProxyPN,
Any(
m_xHttpProxyED->get_text()));
362 xPropertySet->setPropertyValue( g_aHttpPortPN,
Any(
m_xHttpPortED->get_text().toInt32()));
374 xPropertySet->setPropertyValue( g_aHttpsPortPN,
Any(
m_xHttpsPortED->get_text().toInt32()) );
380 xPropertySet->setPropertyValue( g_aFtpProxyPN,
Any(
m_xFtpProxyED->get_text()) );
386 xPropertySet->setPropertyValue( g_aFtpPortPN,
Any(
m_xFtpPortED->get_text().toInt32()));
397 xChangesBatch->commitChanges();
399 catch (
const css::lang::IllegalArgumentException &) {
402 catch (
const beans::UnknownPropertyException &) {
405 catch (
const beans::PropertyVetoException &) {
408 catch (
const css::lang::WrappedTargetException &) {
420 m_xProxyModeLB->set_sensitive(!officecfg::Inet::Settings::ooInetNoProxy::isReadOnly());
424 const bool bHTTPProxyNameEnabled = bManualConfig && !officecfg::Inet::Settings::ooInetHTTPProxyName::isReadOnly();
425 const bool bHTTPProxyPortEnabled = bManualConfig && !officecfg::Inet::Settings::ooInetHTTPProxyPort::isReadOnly();
431 const bool bHTTPSProxyNameEnabled = bManualConfig && !officecfg::Inet::Settings::ooInetHTTPSProxyName::isReadOnly();
432 const bool bHTTPSProxyPortEnabled = bManualConfig && !officecfg::Inet::Settings::ooInetHTTPSProxyPort::isReadOnly();
438 const bool bFTPProxyNameEnabled = bManualConfig && !officecfg::Inet::Settings::ooInetFTPProxyName::isReadOnly();
439 const bool bFTPProxyPortEnabled = bManualConfig && !officecfg::Inet::Settings::ooInetFTPProxyPort::isReadOnly();
445 const bool bInetNoProxyEnabled = bManualConfig && !officecfg::Inet::Settings::ooInetNoProxy::isReadOnly();
453 sal_Int32
nPos = rBox.get_active();
458 ReadConfigDefaults_Impl();
461 EnableControls_Impl();
467 if (pEdit && !isValidPort(pEdit->
get_text()))
477 :
SfxTabPage(pPage, pController,
"cui/ui/optsecuritypage.ui",
"OptSecurityPage", &rSet)
479 , m_xSecurityOptionsPB(m_xBuilder->weld_button(
"options"))
480 , m_xSavePasswordsCB(m_xBuilder->weld_check_button(
"savepassword"))
481 , m_xShowConnectionsPB(m_xBuilder->weld_button(
"connections"))
482 , m_xMasterPasswordCB(m_xBuilder->weld_check_button(
"usemasterpassword"))
483 , m_xMasterPasswordFT(m_xBuilder->weld_label(
"masterpasswordtext"))
484 , m_xMasterPasswordPB(m_xBuilder->weld_button(
"masterpassword"))
485 , m_xMacroSecFrame(m_xBuilder->weld_container(
"macrosecurity"))
486 , m_xMacroSecPB(m_xBuilder->weld_button(
"macro"))
487 , m_xCertFrame(m_xBuilder->weld_container(
"certificatepath"))
488 , m_xCertPathPB(m_xBuilder->weld_button(
"cert"))
489 , m_xTSAURLsFrame(m_xBuilder->weld_container(
"tsaurls"))
490 , m_xTSAURLsPB(m_xBuilder->weld_button(
"tsas"))
491 , m_xNoPasswordSaveFT(m_xBuilder->weld_label(
"nopasswordsave"))
497 if (aPrefSize.Width() > nMaxWidth)
534 Reference< task::XPasswordContainer2 > xMasterPasswd(
537 if ( m_xSavePasswordsCB->get_active() )
539 bool bOldValue = xMasterPasswd->allowPersistentStoring(
true );
540 xMasterPasswd->removeMasterPassword();
543 GetDialogController()->getDialog()->GetXWindow()));
545 if ( xMasterPasswd->changeMasterPassword(xTmpHandler) )
547 m_xMasterPasswordPB->set_sensitive(
true);
548 m_xMasterPasswordCB->set_active(
true);
549 m_xMasterPasswordCB->set_sensitive(
true);
550 m_xMasterPasswordFT->set_sensitive(
true);
551 m_xShowConnectionsPB->set_sensitive(
true);
555 xMasterPasswd->allowPersistentStoring( bOldValue );
556 m_xSavePasswordsCB->set_active(
false );
562 VclMessageType::Question, VclButtonsType::YesNo,
563 m_sPasswordStoringDeactivateStr));
564 xQueryBox->set_default_response(
RET_NO);
566 sal_uInt16 nRet = xQueryBox->run();
570 xMasterPasswd->allowPersistentStoring(
false );
571 m_xMasterPasswordCB->set_active(
true);
572 m_xMasterPasswordPB->set_sensitive(
false );
573 m_xMasterPasswordCB->set_sensitive(
false );
574 m_xMasterPasswordFT->set_sensitive(
false );
575 m_xShowConnectionsPB->set_sensitive(
false );
579 m_xSavePasswordsCB->set_active(
true);
580 m_xMasterPasswordPB->set_sensitive(
true);
581 m_xShowConnectionsPB->set_sensitive(
true);
587 m_xSavePasswordsCB->set_active( !m_xSavePasswordsCB->get_active() );
595 Reference< task::XPasswordContainer2 > xMasterPasswd(
598 if ( xMasterPasswd->isPersistentStoringAllowed() )
601 GetDialogController()->getDialog()->GetXWindow()));
602 xMasterPasswd->changeMasterPassword(xTmpHandler);
613 Reference< task::XPasswordContainer2 > xMasterPasswd(
617 GetDialogController()->getDialog()->GetXWindow()));
619 if ( m_xMasterPasswordCB->get_active() )
621 if (xMasterPasswd->isPersistentStoringAllowed() && xMasterPasswd->changeMasterPassword(xTmpHandler))
623 m_xMasterPasswordPB->set_sensitive(
true);
624 m_xMasterPasswordFT->set_sensitive(
true);
628 m_xMasterPasswordCB->set_active(
false );
629 m_xMasterPasswordPB->set_sensitive(
true);
630 m_xMasterPasswordFT->set_sensitive(
true);
635 if ( xMasterPasswd->isPersistentStoringAllowed() && xMasterPasswd->useDefaultMasterPassword(xTmpHandler) )
637 m_xMasterPasswordPB->set_sensitive(
false );
638 m_xMasterPasswordFT->set_sensitive(
false );
642 m_xMasterPasswordCB->set_active(
true);
643 m_xMasterPasswordPB->set_sensitive(
true);
644 m_xShowConnectionsPB->set_sensitive(
true);
650 m_xSavePasswordsCB->set_active( !m_xSavePasswordsCB->get_active() );
658 Reference< task::XPasswordContainer2 > xMasterPasswd(
662 GetDialogController()->getDialog()->GetXWindow()));
664 if ( xMasterPasswd->isPersistentStoringAllowed() && xMasterPasswd->authorizateWithMasterPassword(xTmpHandler) )
678 mpCertPathDlg->Init();
680 if (mpCertPathDlg->run() ==
RET_OK && !mpCertPathDlg->isActiveServicePath())
684 GetDialogController()->response(
RET_OK);
700 Reference< security::XDocumentDigitalSignatures > xD(
702 xD->setParentWindow(GetDialogController()->getDialog()->GetXWindow());
703 xD->manageTrustedSources();
726 Reference< task::XPasswordContainer2 > xMasterPasswd(
729 if ( xMasterPasswd->isPersistentStoringAllowed() )
735 if ( xMasterPasswd->isDefaultMasterPasswordUsed() )
753 return std::make_unique<SvxSecurityTabPage>(pPage, pController, *rAttrSet);
764 return DeactivateRC::LeavePage;
771 bool bModified =
false;
774 bModified = _rOpt.
IsOptionSet( _eOpt ) != _bIsChecked;
788 bool bModified =
false;
814 sProgram(officecfg::Office::Common::ExternalMailer::Program::
get()),
816 officecfg::Office::Common::ExternalMailer::Program::isReadOnly()),
818 officecfg::Office::
Security::HiddenContent::RemoveHiddenContent::
get()),
820 officecfg::Office::
Security::HiddenContent::RemoveHiddenContent::isReadOnly())
830 :
SfxTabPage( pPage, pController,
"cui/ui/optemailpage.ui",
"OptEmailPage", &rSet)
832 , m_xMailContainer(m_xBuilder->weld_container(
"program"))
833 , m_xMailerURLFI(m_xBuilder->weld_image(
"lockemail"))
834 , m_xMailerURLED(m_xBuilder->weld_entry(
"url"))
835 , m_xMailerURLPB(m_xBuilder->weld_button(
"browse"))
836 , m_xSuppressHiddenContainer(m_xBuilder->weld_container(
"suppressHiddenCont"))
837 , m_xSuppressHiddenFI(m_xBuilder->weld_image(
"lockSuppressHidden"))
838 , m_xSuppressHidden(m_xBuilder->weld_check_button(
"suppressHidden"))
839 , m_xDefaultFilterFT(m_xBuilder->weld_label(
"browsetitle"))
855 return std::make_unique<SvxEMailTabPage>(pPage, pController, *rAttrSet);
862 std::shared_ptr<comphelper::ConfigurationChanges> batch(
867 officecfg::Office::Common::ExternalMailer::Program::set(
868 pImpl->sProgram, batch);
870 if (!
pImpl->bROHideContent
874 officecfg::Office::Security::HiddenContent::RemoveHiddenContent::set(
875 pImpl->bHideContent, batch);
888 if (
pImpl->bROProgram)
896 if (
pImpl->bROHideContent)
908 if (pImpl->bROProgram)
911 FileDialogHelper
aHelper(css::ui::dialogs::TemplateDescription::FILEOPEN_SIMPLE, FileDialogFlags::NONE,
GetFrameWeld());
912 OUString sPath = m_xMailerURLED->get_text();
913 if ( sPath.isEmpty() )
917 osl::FileBase::getFileURLFromSystemPath(sPath, sUrl);
918 aHelper.SetDisplayDirectory(sUrl);
919 aHelper.AddFilter( m_sDefaultFilterName,
"*");
923 sUrl = aHelper.GetPath();
924 if (osl::FileBase::getSystemPathFromFileURL(sUrl, sPath)
925 != osl::FileBase::E_None)
929 m_xMailerURLED->set_text(sPath);
std::unique_ptr< weld::Entry > m_xMailerURLED
bool IsOptionSet(EOption eOption) const
css::uno::Reference< css::linguistic2::XProofreadingIterator > get(css::uno::Reference< css::uno::XComponentContext > const &context)
#define LINK(Instance, Class, Member)
std::unique_ptr< weld::Label > m_xNoPasswordSaveFT
std::unique_ptr< weld::Button > m_xSecurityOptionsPB
std::unique_ptr< weld::Label > m_xHttpProxyFT
virtual ~SvxEMailTabPage() override
virtual DeactivateRC DeactivatePage(SfxItemSet *pSet) override
void ReadConfigData_Impl()
std::unique_ptr< weld::Label > m_xNoProxyForFT
std::unique_ptr< weld::Label > m_xMasterPasswordFT
std::unique_ptr< weld::Entry > m_xFtpPortED
std::unique_ptr< weld::CheckButton > m_xSuppressHidden
std::unique_ptr< SvtSecurityOptions > mpSecOptions
std::unique_ptr< weld::Button > m_xMacroSecPB
SvxEMailTabPage(weld::Container *pPage, weld::DialogController *pController, const SfxItemSet &rSet)
std::unique_ptr< weld::Entry > m_xHttpProxyED
std::unique_ptr< weld::Button > m_xMasterPasswordPB
std::unique_ptr< weld::Entry > m_xFtpProxyED
virtual void ActivatePage(const SfxItemSet &rSet) override
constexpr OUStringLiteral g_aHttpsPortPN
std::unique_ptr< weld::Image > m_xMailerURLFI
std::unique_ptr< weld::Button > m_xCertPathPB
virtual void Reset(const SfxItemSet *rSet) override
constexpr OUStringLiteral g_aFtpProxyPN
std::unique_ptr< weld::Image > m_xSuppressHiddenFI
std::unique_ptr< weld::Label > m_xDefaultFilterFT
virtual void set_text(const OUString &rText)=0
std::unique_ptr< SvxEMailTabPage_Impl > pImpl
std::unique_ptr< weld::Label > m_xNoProxyDescFT
std::unique_ptr< weld::ComboBox > m_xProxyModeLB
constexpr OUStringLiteral g_aHttpProxyPN
static std::unique_ptr< SfxTabPage > Create(weld::Container *pPage, weld::DialogController *pController, const SfxItemSet *rAttrSet)
void EnableControls_Impl()
std::unique_ptr< weld::Label > m_xFtpProxyFT
std::unique_ptr< weld::Button > m_xShowConnectionsPB
std::unique_ptr< weld::CheckButton > m_xMasterPasswordCB
void SetOption(EOption eOption, bool bValue)
std::unique_ptr< weld::Entry > m_xNoProxyForED
static std::shared_ptr< ConfigurationChanges > create(css::uno::Reference< css::uno::XComponentContext > const &context=comphelper::getProcessComponentContext())
static std::unique_ptr< SfxTabPage > Create(weld::Container *pPage, weld::DialogController *pController, const SfxItemSet *rAttrSet)
bool isdigitAsciiString(const OString &rString)
std::unique_ptr< weld::Button > m_xTSAURLsPB
std::unique_ptr< weld::Label > m_xHttpsProxyFT
#define TOOLS_WARN_EXCEPTION(area, stream)
css::uno::Reference< css::uno::XInterface > m_xConfigurationUpdateAccess
SvxProxyTabPage(weld::Container *pPage, weld::DialogController *pController, const SfxItemSet &rSet)
void ReadConfigDefaults_Impl()
std::unique_ptr< weld::CheckButton > m_xSavePasswordsCB
virtual ~SvxProxyTabPage() override
std::unique_ptr< weld::Entry > m_xHttpsPortED
virtual bool FillItemSet(SfxItemSet *rSet) override
OUString CuiResId(const char *pKey)
constexpr OUStringLiteral g_aNoProxyDescPN
virtual OUString get_text() const =0
std::unique_ptr< weld::Container > m_xCertFrame
IMPL_LINK_NOARG(SvxSecurityTabPage, SecurityOptionsHdl, weld::Button &, void)
virtual bool FillItemSet(SfxItemSet *rSet) override
std::unique_ptr< weld::Entry > m_xHttpsProxyED
OUString m_sDefaultFilterName
std::unique_ptr< weld::Container > m_xSuppressHiddenContainer
bool IsOptionEnabled(EOption eOption) const
SvxSecurityTabPage(weld::Container *pPage, weld::DialogController *pController, const SfxItemSet &rSet)
std::unique_ptr< weld::Label > m_xHttpsPortFT
OUString m_sPasswordStoringDeactivateStr
std::unique_ptr< weld::Label > m_xHttpPortFT
IMPL_STATIC_LINK(SvxProxyTabPage, NumberOnlyTextFilterHdl, OUString &, rTest, bool)
std::unique_ptr< weld::Button > m_xMailerURLPB
Reference< XComponentContext > getProcessComponentContext()
std::unique_ptr< weld::Entry > m_xHttpPortED
constexpr OUStringLiteral g_aHttpPortPN
virtual void Reset(const SfxItemSet *rSet) override
std::unique_ptr< svx::SecurityOptionsDialog > m_xSecOptDlg
static std::unique_ptr< SfxTabPage > Create(weld::Container *pPage, weld::DialogController *pController, const SfxItemSet *rAttrSet)
constexpr OUStringLiteral g_aProxyModePN
virtual bool FillItemSet(SfxItemSet *rSet) override
virtual void Reset(const SfxItemSet *rSet) override
virtual ~SvxSecurityTabPage() override
constexpr OUStringLiteral g_aHttpsProxyPN
std::unique_ptr< weld::Label > m_xFtpPortFT
std::unique_ptr< weld::Container > m_xMailContainer
void RestoreConfigDefaults_Impl()
weld::Window * GetFrameWeld(const SfxFrame *pFrame)
static weld::MessageDialog * CreateMessageDialog(weld::Widget *pParent, VclMessageType eMessageType, VclButtonsType eButtonType, const OUString &rPrimaryMessage, bool bMobile=false)
IMPL_LINK(SvxProxyTabPage, PortChangedHdl, weld::Entry &, rEdit, void)
constexpr OUStringLiteral g_aFtpPortPN