576 lines
24 KiB
C++
576 lines
24 KiB
C++
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
|
/*
|
|
* This file is part of the LibreOffice project.
|
|
*
|
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
*
|
|
* This file incorporates work covered by the following license notice:
|
|
*
|
|
* Licensed to the Apache Software Foundation (ASF) under one or more
|
|
* contributor license agreements. See the NOTICE file distributed
|
|
* with this work for additional information regarding copyright
|
|
* ownership. The ASF licenses this file to you under the Apache
|
|
* License, Version 2.0 (the "License"); you may not use this file
|
|
* except in compliance with the License. You may obtain a copy of
|
|
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
|
|
*/
|
|
|
|
#include <swtypes.hxx>
|
|
#include <mailconfigpage.hxx>
|
|
#include <mmconfigitem.hxx>
|
|
#include <mailmergehelper.hxx>
|
|
#include <officecfg/Office/Writer.hxx>
|
|
#include <vcl/svapp.hxx>
|
|
#include <vcl/weld.hxx>
|
|
#include <comphelper/processfactory.hxx>
|
|
#include <com/sun/star/mail/MailServiceType.hpp>
|
|
#include <com/sun/star/mail/XMailService.hpp>
|
|
#include <com/sun/star/mail/MailServiceProvider.hpp>
|
|
#include <strings.hrc>
|
|
|
|
using namespace ::com::sun::star;
|
|
using namespace ::com::sun::star::mail;
|
|
|
|
class SwTestAccountSettingsDialog : public SfxDialogController
|
|
{
|
|
ImplSVEvent* m_pPostedEvent;
|
|
OUString m_sCompleted;
|
|
OUString m_sFailed;
|
|
OUString m_sErrorServer;
|
|
bool m_bStop;
|
|
|
|
SwMailConfigPage* m_pParent;
|
|
|
|
std::unique_ptr<weld::Button> m_xStopPB;
|
|
std::unique_ptr<weld::TextView> m_xErrorsED;
|
|
std::unique_ptr<weld::Label> m_xResult1;
|
|
std::unique_ptr<weld::Label> m_xResult2;
|
|
std::unique_ptr<weld::Image> m_xImage1;
|
|
std::unique_ptr<weld::Image> m_xImage2;
|
|
std::unique_ptr<weld::Image> m_xImage3;
|
|
std::unique_ptr<weld::Image> m_xImage4;
|
|
|
|
void Test();
|
|
DECL_LINK(StopHdl, weld::Button&, void);
|
|
DECL_LINK(TestHdl, void*, void);
|
|
public:
|
|
explicit SwTestAccountSettingsDialog(SwMailConfigPage* pParent);
|
|
virtual ~SwTestAccountSettingsDialog() override;
|
|
};
|
|
|
|
namespace {
|
|
|
|
class SwAuthenticationSettingsDialog : public SfxDialogController
|
|
{
|
|
SwMailMergeConfigItem& m_rConfigItem;
|
|
|
|
std::unique_ptr<weld::CheckButton> m_xAuthenticationCB;
|
|
std::unique_ptr<weld::Widget> m_xAuthenticationImg;
|
|
std::unique_ptr<weld::RadioButton> m_xSeparateAuthenticationRB;
|
|
std::unique_ptr<weld::Widget> m_xSeparateAuthenticationImg;
|
|
std::unique_ptr<weld::RadioButton> m_xSMTPAfterPOPRB;
|
|
std::unique_ptr<weld::Widget> m_xSMTPAfterPOPImg;
|
|
std::unique_ptr<weld::Label> m_xOutgoingServerFT;
|
|
std::unique_ptr<weld::Label> m_xUserNameFT;
|
|
std::unique_ptr<weld::Entry> m_xUserNameED;
|
|
std::unique_ptr<weld::Widget> m_xUserNameImg;
|
|
std::unique_ptr<weld::Label> m_xOutPasswordFT;
|
|
std::unique_ptr<weld::Entry> m_xOutPasswordED;
|
|
std::unique_ptr<weld::Label> m_xIncomingServerFT;
|
|
std::unique_ptr<weld::Label> m_xServerFT;
|
|
std::unique_ptr<weld::Entry> m_xServerED;
|
|
std::unique_ptr<weld::Widget> m_xServerImg;
|
|
std::unique_ptr<weld::Label> m_xPortFT;
|
|
std::unique_ptr<weld::SpinButton> m_xPortNF;
|
|
std::unique_ptr<weld::Widget> m_xPortImg;
|
|
std::unique_ptr<weld::Label> m_xProtocolFT;
|
|
std::unique_ptr<weld::RadioButton> m_xPOP3RB;
|
|
std::unique_ptr<weld::Widget> m_xPOP3Img;
|
|
std::unique_ptr<weld::RadioButton> m_xIMAPRB;
|
|
std::unique_ptr<weld::Label> m_xInUsernameFT;
|
|
std::unique_ptr<weld::Entry> m_xInUsernameED;
|
|
std::unique_ptr<weld::Widget> m_xInUsernameImg;
|
|
std::unique_ptr<weld::Label> m_xInPasswordFT;
|
|
std::unique_ptr<weld::Entry> m_xInPasswordED;
|
|
std::unique_ptr<weld::Button> m_xOKPB;
|
|
|
|
DECL_LINK(OKHdl_Impl, weld::Button&, void);
|
|
DECL_LINK(CheckBoxHdl_Impl, weld::Toggleable&, void);
|
|
DECL_LINK(RadioButtonHdl_Impl, weld::Toggleable&, void);
|
|
DECL_LINK(InServerHdl_Impl, weld::Toggleable&, void);
|
|
|
|
public:
|
|
SwAuthenticationSettingsDialog(weld::Window* pParent, SwMailMergeConfigItem& rItem);
|
|
};
|
|
|
|
}
|
|
|
|
SwMailConfigPage::SwMailConfigPage(weld::Container* pPage, weld::DialogController* pController, const SfxItemSet& rSet)
|
|
: SfxTabPage(pPage, pController, u"modules/swriter/ui/mailconfigpage.ui"_ustr, u"MailConfigPage"_ustr, &rSet)
|
|
, m_pConfigItem(new SwMailMergeConfigItem)
|
|
, m_xDisplayNameED(m_xBuilder->weld_entry(u"displayname"_ustr))
|
|
, m_xDisplayNameImg(m_xBuilder->weld_widget(u"lockdisplayname"_ustr))
|
|
, m_xAddressED(m_xBuilder->weld_entry(u"address"_ustr))
|
|
, m_xAddressImg(m_xBuilder->weld_widget(u"lockaddress"_ustr))
|
|
, m_xReplyToCB(m_xBuilder->weld_check_button(u"replytocb"_ustr))
|
|
, m_xReplyToCBImg(m_xBuilder->weld_widget(u"lockreplytocb"_ustr))
|
|
, m_xReplyToFT(m_xBuilder->weld_label(u"replyto_label"_ustr))
|
|
, m_xReplyToED(m_xBuilder->weld_entry(u"replyto"_ustr))
|
|
, m_xReplyToImg(m_xBuilder->weld_widget(u"lockreplyto"_ustr))
|
|
, m_xServerED(m_xBuilder->weld_entry(u"server"_ustr))
|
|
, m_xServerImg(m_xBuilder->weld_widget(u"lockserver"_ustr))
|
|
, m_xPortNF(m_xBuilder->weld_spin_button(u"port"_ustr))
|
|
, m_xPortImg(m_xBuilder->weld_widget(u"lockport"_ustr))
|
|
, m_xSecureCB(m_xBuilder->weld_check_button(u"secure"_ustr))
|
|
, m_xSecureImg(m_xBuilder->weld_widget(u"locksecure"_ustr))
|
|
, m_xServerAuthenticationPB(m_xBuilder->weld_button(u"serverauthentication"_ustr))
|
|
, m_xTestPB(m_xBuilder->weld_button(u"test"_ustr))
|
|
{
|
|
m_xReplyToCB->connect_toggled(LINK(this, SwMailConfigPage, ReplyToHdl));
|
|
m_xServerAuthenticationPB->connect_clicked(LINK(this, SwMailConfigPage, AuthenticationHdl));
|
|
m_xTestPB->connect_clicked(LINK(this, SwMailConfigPage, TestHdl));
|
|
m_xSecureCB->connect_toggled(LINK(this, SwMailConfigPage, SecureHdl));
|
|
}
|
|
|
|
SwMailConfigPage::~SwMailConfigPage()
|
|
{
|
|
m_pConfigItem.reset();
|
|
}
|
|
|
|
std::unique_ptr<SfxTabPage> SwMailConfigPage::Create(weld::Container* pPage, weld::DialogController* pController, const SfxItemSet* rAttrSet)
|
|
{
|
|
return std::make_unique<SwMailConfigPage>(pPage, pController, *rAttrSet);
|
|
}
|
|
|
|
OUString SwMailConfigPage::GetAllStrings()
|
|
{
|
|
OUString sAllStrings;
|
|
OUString labels[] = { u"label1"_ustr, u"displayname_label"_ustr, u"address_label"_ustr, u"replyto_label"_ustr,
|
|
u"label2"_ustr, u"server_label"_ustr, u"port_label"_ustr };
|
|
|
|
for (const auto& label : labels)
|
|
{
|
|
if (const auto pString = m_xBuilder->weld_label(label))
|
|
sAllStrings += pString->get_label() + " ";
|
|
}
|
|
|
|
OUString checkButton[] = { u"replytocb"_ustr, u"secure"_ustr };
|
|
|
|
for (const auto& check : checkButton)
|
|
{
|
|
if (const auto pString = m_xBuilder->weld_check_button(check))
|
|
sAllStrings += pString->get_label() + " ";
|
|
}
|
|
|
|
OUString buttons[] = { u"serverauthentication"_ustr, u"test"_ustr };
|
|
|
|
for (const auto& btn : buttons)
|
|
{
|
|
if (const auto pString = m_xBuilder->weld_button(btn))
|
|
sAllStrings += pString->get_label() + " ";
|
|
}
|
|
|
|
return sAllStrings.replaceAll("_", "");
|
|
}
|
|
|
|
bool SwMailConfigPage::FillItemSet( SfxItemSet* /*rSet*/ )
|
|
{
|
|
if (m_xDisplayNameED->get_value_changed_from_saved())
|
|
m_pConfigItem->SetMailDisplayName(m_xDisplayNameED->get_text());
|
|
if (m_xAddressED->get_value_changed_from_saved())
|
|
m_pConfigItem->SetMailAddress(m_xAddressED->get_text());
|
|
if (m_xReplyToCB->get_state_changed_from_saved() )
|
|
m_pConfigItem->SetMailReplyTo(m_xReplyToCB->get_active());
|
|
if (m_xReplyToED->get_value_changed_from_saved())
|
|
m_pConfigItem->SetMailReplyTo(m_xReplyToED->get_text());
|
|
if (m_xServerED->get_value_changed_from_saved())
|
|
m_pConfigItem->SetMailServer(m_xServerED->get_text());
|
|
|
|
m_pConfigItem->SetMailPort(m_xPortNF->get_value());
|
|
m_pConfigItem->SetSecureConnection(m_xSecureCB->get_active());
|
|
|
|
m_pConfigItem->Commit();
|
|
return true;
|
|
}
|
|
|
|
void SwMailConfigPage::Reset( const SfxItemSet* /*rSet*/ )
|
|
{
|
|
m_xDisplayNameED->set_text(m_pConfigItem->GetMailDisplayName());
|
|
m_xDisplayNameED->set_sensitive(!officecfg::Office::Writer::MailMergeWizard::MailDisplayName::isReadOnly());
|
|
m_xDisplayNameImg->set_visible(officecfg::Office::Writer::MailMergeWizard::MailDisplayName::isReadOnly());
|
|
|
|
m_xAddressED->set_text(m_pConfigItem->GetMailAddress());
|
|
m_xAddressED->set_sensitive(!officecfg::Office::Writer::MailMergeWizard::MailAddress::isReadOnly());
|
|
m_xAddressImg->set_visible(officecfg::Office::Writer::MailMergeWizard::MailAddress::isReadOnly());
|
|
|
|
m_xReplyToED->set_text(m_pConfigItem->GetMailReplyTo());
|
|
m_xReplyToED->set_sensitive(!officecfg::Office::Writer::MailMergeWizard::MailReplyTo::isReadOnly());
|
|
m_xReplyToImg->set_visible(officecfg::Office::Writer::MailMergeWizard::MailReplyTo::isReadOnly());
|
|
|
|
m_xReplyToCB->set_active(m_pConfigItem->IsMailReplyTo());
|
|
m_xReplyToCB->set_sensitive(!officecfg::Office::Writer::MailMergeWizard::IsMailReplyTo::isReadOnly());
|
|
m_xReplyToCBImg->set_visible(officecfg::Office::Writer::MailMergeWizard::IsMailReplyTo::isReadOnly());
|
|
|
|
ReplyToHdl(*m_xReplyToCB);
|
|
|
|
m_xServerED->set_text(m_pConfigItem->GetMailServer());
|
|
m_xServerED->set_sensitive(!officecfg::Office::Writer::MailMergeWizard::MailServer::isReadOnly());
|
|
m_xServerImg->set_visible(officecfg::Office::Writer::MailMergeWizard::MailServer::isReadOnly());
|
|
|
|
m_xPortNF->set_value(m_pConfigItem->GetMailPort());
|
|
m_xPortNF->set_sensitive(!officecfg::Office::Writer::MailMergeWizard::MailPort::isReadOnly());
|
|
m_xPortImg->set_visible(officecfg::Office::Writer::MailMergeWizard::MailPort::isReadOnly());
|
|
|
|
m_xSecureCB->set_active(m_pConfigItem->IsSecureConnection());
|
|
m_xSecureCB->set_sensitive(!officecfg::Office::Writer::MailMergeWizard::IsSecureConnection::isReadOnly());
|
|
m_xSecureImg->set_visible(officecfg::Office::Writer::MailMergeWizard::IsSecureConnection::isReadOnly());
|
|
|
|
m_xDisplayNameED->save_value();
|
|
m_xAddressED->save_value();
|
|
m_xReplyToCB->save_state();
|
|
m_xReplyToED->save_value();
|
|
m_xServerED->save_value();
|
|
m_xPortNF->save_value();
|
|
m_xSecureCB->save_state();
|
|
}
|
|
|
|
IMPL_LINK(SwMailConfigPage, ReplyToHdl, weld::Toggleable&, rBox, void)
|
|
{
|
|
bool bEnable = rBox.get_active() && !m_xReplyToImg->get_visible();
|
|
m_xReplyToFT->set_sensitive(bEnable);
|
|
m_xReplyToED->set_sensitive(bEnable);
|
|
}
|
|
|
|
IMPL_LINK_NOARG(SwMailConfigPage, AuthenticationHdl, weld::Button&, void)
|
|
{
|
|
m_pConfigItem->SetMailAddress(m_xAddressED->get_text());
|
|
|
|
SwAuthenticationSettingsDialog aDlg(GetFrameWeld(), *m_pConfigItem);
|
|
aDlg.run();
|
|
}
|
|
|
|
IMPL_LINK_NOARG(SwMailConfigPage, TestHdl, weld::Button&, void)
|
|
{
|
|
SwTestAccountSettingsDialog aDlg(this);
|
|
aDlg.run();
|
|
}
|
|
|
|
IMPL_LINK(SwMailConfigPage, SecureHdl, weld::Toggleable&, rBox, void)
|
|
{
|
|
bool bEnable = rBox.get_active();
|
|
m_pConfigItem->SetSecureConnection(bEnable);
|
|
m_pConfigItem->SetMailPort(m_xPortNF->get_value());
|
|
m_xPortNF->set_value(m_pConfigItem->GetMailPort());
|
|
}
|
|
|
|
SwTestAccountSettingsDialog::SwTestAccountSettingsDialog(SwMailConfigPage* pParent)
|
|
: SfxDialogController(pParent->GetFrameWeld(), u"modules/swriter/ui/testmailsettings.ui"_ustr, u"TestMailSettings"_ustr)
|
|
, m_bStop(false)
|
|
, m_pParent(pParent)
|
|
, m_xStopPB(m_xBuilder->weld_button(u"stop"_ustr))
|
|
, m_xErrorsED(m_xBuilder->weld_text_view(u"errors"_ustr))
|
|
, m_xResult1(m_xBuilder->weld_label(u"result1"_ustr))
|
|
, m_xResult2(m_xBuilder->weld_label(u"result2"_ustr))
|
|
, m_xImage1(m_xBuilder->weld_image(u"image1"_ustr))
|
|
, m_xImage2(m_xBuilder->weld_image(u"image2"_ustr))
|
|
, m_xImage3(m_xBuilder->weld_image(u"image3"_ustr))
|
|
, m_xImage4(m_xBuilder->weld_image(u"image4"_ustr))
|
|
{
|
|
m_xErrorsED->set_size_request(m_xErrorsED->get_approximate_digit_width() * 72,
|
|
m_xErrorsED->get_height_rows(8));
|
|
m_sErrorServer = m_xErrorsED->get_text();
|
|
m_xErrorsED->set_text(u""_ustr);
|
|
m_sCompleted = m_xResult1->get_label();
|
|
m_sFailed = m_xResult2->get_label();
|
|
|
|
m_xStopPB->connect_clicked(LINK(this, SwTestAccountSettingsDialog, StopHdl));
|
|
|
|
m_pPostedEvent = Application::PostUserEvent(LINK(this, SwTestAccountSettingsDialog, TestHdl));
|
|
}
|
|
|
|
SwTestAccountSettingsDialog::~SwTestAccountSettingsDialog()
|
|
{
|
|
if (m_pPostedEvent)
|
|
{
|
|
Application::RemoveUserEvent(m_pPostedEvent);
|
|
}
|
|
}
|
|
|
|
IMPL_LINK_NOARG(SwTestAccountSettingsDialog, StopHdl, weld::Button&, void)
|
|
{
|
|
m_bStop = true;
|
|
}
|
|
|
|
IMPL_LINK_NOARG(SwTestAccountSettingsDialog, TestHdl, void*, void)
|
|
{
|
|
m_pPostedEvent = nullptr;
|
|
weld::WaitObject aWait(m_xDialog.get());
|
|
Test();
|
|
}
|
|
|
|
void SwTestAccountSettingsDialog::Test()
|
|
{
|
|
const uno::Reference<uno::XComponentContext>& xContext = ::comphelper::getProcessComponentContext();
|
|
|
|
OUString sException;
|
|
|
|
bool bIsLoggedIn = false;
|
|
bool bIsServer = false;
|
|
try
|
|
{
|
|
uno::Reference< mail::XMailService > xInMailService;
|
|
uno::Reference< mail::XMailServiceProvider > xMailServiceProvider(
|
|
mail::MailServiceProvider::create(xContext) );
|
|
uno::Reference< mail::XMailService > xMailService =
|
|
xMailServiceProvider->create(
|
|
mail::MailServiceType_SMTP);
|
|
if(m_bStop)
|
|
return;
|
|
uno::Reference<XConnectionListener> xConnectionListener(new SwConnectionListener);
|
|
|
|
if(m_pParent->m_pConfigItem->IsAuthentication() &&
|
|
m_pParent->m_pConfigItem->IsSMTPAfterPOP())
|
|
{
|
|
xInMailService = xMailServiceProvider->create(
|
|
m_pParent->m_pConfigItem->IsInServerPOP() ?
|
|
mail::MailServiceType_POP3 : mail::MailServiceType_IMAP);
|
|
if(m_bStop)
|
|
return;
|
|
//authenticate at the POP or IMAP server first
|
|
uno::Reference<XAuthenticator> xAuthenticator =
|
|
new SwAuthenticator(
|
|
m_pParent->m_pConfigItem->GetInServerUserName(),
|
|
m_pParent->m_pConfigItem->GetInServerPassword(),
|
|
m_xDialog.get());
|
|
|
|
xInMailService->addConnectionListener(xConnectionListener);
|
|
//check connection
|
|
uno::Reference< uno::XCurrentContext> xConnectionContext =
|
|
new SwConnectionContext(
|
|
m_pParent->m_pConfigItem->GetInServerName(),
|
|
m_pParent->m_pConfigItem->GetInServerPort(),
|
|
u"Insecure"_ustr);
|
|
xInMailService->connect(xConnectionContext, xAuthenticator);
|
|
}
|
|
if(m_bStop)
|
|
return;
|
|
uno::Reference<XAuthenticator> xAuthenticator;
|
|
if(m_pParent->m_pConfigItem->IsAuthentication() &&
|
|
!m_pParent->m_pConfigItem->IsSMTPAfterPOP() &&
|
|
!m_pParent->m_pConfigItem->GetMailUserName().isEmpty())
|
|
xAuthenticator =
|
|
new SwAuthenticator(
|
|
m_pParent->m_pConfigItem->GetMailUserName(),
|
|
m_pParent->m_pConfigItem->GetMailPassword(),
|
|
m_xDialog.get());
|
|
else
|
|
xAuthenticator = new SwAuthenticator();
|
|
|
|
xMailService->addConnectionListener(xConnectionListener);
|
|
if(m_bStop)
|
|
return;
|
|
//just to check if the server exists
|
|
xMailService->getSupportedConnectionTypes();
|
|
if(m_bStop)
|
|
return;
|
|
bIsServer = true;
|
|
//check connection
|
|
uno::Reference< uno::XCurrentContext> xConnectionContext =
|
|
new SwConnectionContext(
|
|
m_pParent->m_xServerED->get_text(),
|
|
m_pParent->m_xPortNF->get_value(),
|
|
m_pParent->m_xSecureCB->get_active() ? u"Ssl"_ustr : u"Insecure"_ustr);
|
|
xMailService->connect(xConnectionContext, xAuthenticator);
|
|
bIsLoggedIn = xMailService->isConnected();
|
|
if( xInMailService.is() )
|
|
xInMailService->disconnect();
|
|
if( xMailService->isConnected())
|
|
xMailService->disconnect();
|
|
}
|
|
catch (const uno::Exception& e)
|
|
{
|
|
sException = e.Message;
|
|
}
|
|
|
|
m_xResult1->set_label(bIsServer ? m_sCompleted : m_sFailed);
|
|
m_xImage1->set_visible(!bIsServer);
|
|
m_xImage3->set_visible(bIsServer);
|
|
|
|
m_xResult2->set_label(bIsLoggedIn ? m_sCompleted : m_sFailed);
|
|
m_xImage2->set_visible(!bIsLoggedIn);
|
|
m_xImage4->set_visible(bIsLoggedIn);
|
|
|
|
if (!bIsServer || !bIsLoggedIn)
|
|
{
|
|
OUString aErrorMessage(m_sErrorServer);
|
|
if (!sException.isEmpty())
|
|
aErrorMessage += "\n--\n" + sException;
|
|
m_xErrorsED->set_text(aErrorMessage);
|
|
}
|
|
}
|
|
|
|
SwMailConfigDlg::SwMailConfigDlg(weld::Window* pParent, const SfxItemSet& rSet)
|
|
: SfxSingleTabDialogController(pParent, &rSet)
|
|
{
|
|
// create TabPage
|
|
SetTabPage(SwMailConfigPage::Create(get_content_area(), this, &rSet));
|
|
m_xDialog->set_title(SwResId(STR_MAILCONFIG_DLG_TITLE));
|
|
}
|
|
|
|
SwAuthenticationSettingsDialog::SwAuthenticationSettingsDialog(
|
|
weld::Window* pParent, SwMailMergeConfigItem& rItem)
|
|
: SfxDialogController(pParent, u"modules/swriter/ui/authenticationsettingsdialog.ui"_ustr, u"AuthenticationSettingsDialog"_ustr)
|
|
, m_rConfigItem(rItem)
|
|
, m_xAuthenticationCB(m_xBuilder->weld_check_button(u"authentication"_ustr))
|
|
, m_xAuthenticationImg(m_xBuilder->weld_widget(u"lockauthentication"_ustr))
|
|
, m_xSeparateAuthenticationRB(m_xBuilder->weld_radio_button(u"separateauthentication"_ustr))
|
|
, m_xSeparateAuthenticationImg(m_xBuilder->weld_widget(u"lockseparaauth"_ustr))
|
|
, m_xSMTPAfterPOPRB(m_xBuilder->weld_radio_button(u"smtpafterpop"_ustr))
|
|
, m_xSMTPAfterPOPImg(m_xBuilder->weld_widget(u"locksmtpafterpop"_ustr))
|
|
, m_xOutgoingServerFT(m_xBuilder->weld_label(u"label1"_ustr))
|
|
, m_xUserNameFT(m_xBuilder->weld_label(u"username_label"_ustr))
|
|
, m_xUserNameED(m_xBuilder->weld_entry(u"username"_ustr))
|
|
, m_xUserNameImg(m_xBuilder->weld_widget(u"lockusername"_ustr))
|
|
, m_xOutPasswordFT(m_xBuilder->weld_label(u"outpassword_label"_ustr))
|
|
, m_xOutPasswordED(m_xBuilder->weld_entry(u"outpassword"_ustr))
|
|
, m_xIncomingServerFT(m_xBuilder->weld_label(u"label2"_ustr))
|
|
, m_xServerFT(m_xBuilder->weld_label(u"server_label"_ustr))
|
|
, m_xServerED(m_xBuilder->weld_entry(u"server"_ustr))
|
|
, m_xServerImg(m_xBuilder->weld_widget(u"lockserver"_ustr))
|
|
, m_xPortFT(m_xBuilder->weld_label(u"port_label"_ustr))
|
|
, m_xPortNF(m_xBuilder->weld_spin_button(u"port"_ustr))
|
|
, m_xPortImg(m_xBuilder->weld_widget(u"lockport"_ustr))
|
|
, m_xProtocolFT(m_xBuilder->weld_label(u"label3"_ustr))
|
|
, m_xPOP3RB(m_xBuilder->weld_radio_button(u"pop3"_ustr))
|
|
, m_xPOP3Img(m_xBuilder->weld_widget(u"lockpop3"_ustr))
|
|
, m_xIMAPRB(m_xBuilder->weld_radio_button(u"imap"_ustr))
|
|
, m_xInUsernameFT(m_xBuilder->weld_label(u"inusername_label"_ustr))
|
|
, m_xInUsernameED(m_xBuilder->weld_entry(u"inusername"_ustr))
|
|
, m_xInUsernameImg(m_xBuilder->weld_widget(u"lockinusername"_ustr))
|
|
, m_xInPasswordFT(m_xBuilder->weld_label(u"inpassword_label"_ustr))
|
|
, m_xInPasswordED(m_xBuilder->weld_entry(u"inpassword"_ustr))
|
|
, m_xOKPB(m_xBuilder->weld_button(u"ok"_ustr))
|
|
{
|
|
m_xAuthenticationCB->connect_toggled( LINK( this, SwAuthenticationSettingsDialog, CheckBoxHdl_Impl));
|
|
Link<weld::Toggleable&,void> aRBLink = LINK( this, SwAuthenticationSettingsDialog, RadioButtonHdl_Impl );
|
|
m_xSeparateAuthenticationRB->connect_toggled( aRBLink );
|
|
m_xSMTPAfterPOPRB->connect_toggled( aRBLink );
|
|
m_xOKPB->connect_clicked( LINK( this, SwAuthenticationSettingsDialog, OKHdl_Impl));
|
|
m_xPOP3RB->connect_toggled(LINK(this, SwAuthenticationSettingsDialog, InServerHdl_Impl));
|
|
|
|
m_xAuthenticationCB->set_active(m_rConfigItem.IsAuthentication());
|
|
m_xAuthenticationCB->set_sensitive(!officecfg::Office::Writer::MailMergeWizard::IsAuthentication::isReadOnly());
|
|
m_xAuthenticationImg->set_visible(officecfg::Office::Writer::MailMergeWizard::IsAuthentication::isReadOnly());
|
|
if (m_rConfigItem.IsSMTPAfterPOP())
|
|
m_xSMTPAfterPOPRB->set_active(true);
|
|
else
|
|
m_xSeparateAuthenticationRB->set_active(true);
|
|
m_xUserNameED->set_text(m_rConfigItem.GetMailUserName());
|
|
m_xOutPasswordED->set_text(m_rConfigItem.GetMailPassword());
|
|
|
|
m_xServerED->set_text(m_rConfigItem.GetInServerName());
|
|
m_xPortNF->set_value(m_rConfigItem.GetInServerPort());
|
|
if (m_rConfigItem.IsInServerPOP())
|
|
m_xPOP3RB->set_active(true);
|
|
else
|
|
m_xIMAPRB->set_active(true);
|
|
m_xInUsernameED->set_text(m_rConfigItem.GetInServerUserName());
|
|
m_xInPasswordED->set_text(m_rConfigItem.GetInServerPassword());
|
|
|
|
CheckBoxHdl_Impl(*m_xAuthenticationCB);
|
|
}
|
|
|
|
IMPL_LINK_NOARG(SwAuthenticationSettingsDialog, OKHdl_Impl, weld::Button&, void)
|
|
{
|
|
m_rConfigItem.SetAuthentication( m_xAuthenticationCB->get_active() );
|
|
m_rConfigItem.SetSMTPAfterPOP(m_xSMTPAfterPOPRB->get_active());
|
|
m_rConfigItem.SetMailUserName(m_xUserNameED->get_text());
|
|
m_rConfigItem.SetMailPassword(m_xOutPasswordED->get_text());
|
|
m_rConfigItem.SetInServerName(m_xServerED->get_text());
|
|
m_rConfigItem.SetInServerPort(m_xPortNF->get_value());
|
|
m_rConfigItem.SetInServerPOP(m_xPOP3RB->get_active());
|
|
m_rConfigItem.SetInServerUserName(m_xInUsernameED->get_text());
|
|
m_rConfigItem.SetInServerPassword(m_xInPasswordED->get_text());
|
|
m_xDialog->response(RET_OK);
|
|
}
|
|
|
|
IMPL_LINK( SwAuthenticationSettingsDialog, CheckBoxHdl_Impl, weld::Toggleable&, rBox, void)
|
|
{
|
|
bool bChecked = rBox.get_active();
|
|
m_xSeparateAuthenticationRB->set_sensitive(bChecked);
|
|
m_xSMTPAfterPOPRB->set_sensitive(bChecked);
|
|
RadioButtonHdl_Impl(*m_xSeparateAuthenticationRB);
|
|
}
|
|
|
|
IMPL_LINK_NOARG(SwAuthenticationSettingsDialog, RadioButtonHdl_Impl, weld::Toggleable&, void)
|
|
{
|
|
bool bSeparate = m_xSeparateAuthenticationRB->get_active();
|
|
bool bIsEnabled = m_xSeparateAuthenticationRB->get_sensitive();
|
|
bool bNotSeparate = !bSeparate && bIsEnabled;
|
|
bSeparate &= bIsEnabled;
|
|
|
|
bool bReadOnly = officecfg::Office::Writer::MailMergeWizard::IsSMPTAfterPOP::isReadOnly();
|
|
if (bSeparate || bNotSeparate)
|
|
{
|
|
m_xSeparateAuthenticationRB->set_sensitive(!bReadOnly);
|
|
m_xSeparateAuthenticationImg->set_visible(bReadOnly);
|
|
m_xSMTPAfterPOPRB->set_sensitive(!bReadOnly);
|
|
m_xSMTPAfterPOPImg->set_visible(bReadOnly);
|
|
}
|
|
if (bSeparate && m_xUserNameED->get_text().isEmpty())
|
|
m_xUserNameED->set_text(m_rConfigItem.GetMailAddress());
|
|
else if (!bSeparate && m_xUserNameED->get_text() == m_rConfigItem.GetMailAddress())
|
|
m_xUserNameED->set_text(u""_ustr);
|
|
|
|
if (bNotSeparate && m_xInUsernameED->get_text().isEmpty())
|
|
m_xInUsernameED->set_text(m_rConfigItem.GetMailAddress());
|
|
else if (!bNotSeparate && m_xInUsernameED->get_text() == m_rConfigItem.GetMailAddress())
|
|
m_xInUsernameED->set_text(u""_ustr);
|
|
|
|
m_xOutgoingServerFT->set_sensitive(bSeparate);
|
|
m_xUserNameFT->set_sensitive(bSeparate);
|
|
|
|
bReadOnly = officecfg::Office::Writer::MailMergeWizard::MailUserName::isReadOnly();
|
|
m_xUserNameED->set_sensitive(bSeparate && !bReadOnly);
|
|
m_xUserNameImg->set_visible(bReadOnly);
|
|
|
|
m_xOutPasswordFT->set_sensitive(bSeparate);
|
|
m_xOutPasswordED->set_sensitive(bSeparate);
|
|
|
|
m_xIncomingServerFT->set_sensitive(bNotSeparate);
|
|
m_xServerFT->set_sensitive(bNotSeparate);
|
|
|
|
bReadOnly = officecfg::Office::Writer::MailMergeWizard::InServerName::isReadOnly();
|
|
m_xServerED->set_sensitive(bNotSeparate && !bReadOnly);
|
|
m_xServerImg->set_visible(bReadOnly);
|
|
|
|
m_xPortFT->set_sensitive(bNotSeparate);
|
|
bReadOnly = officecfg::Office::Writer::MailMergeWizard::InServerPort::isReadOnly();
|
|
m_xPortNF->set_sensitive(bNotSeparate && !bReadOnly);
|
|
m_xPortImg->set_visible(bReadOnly);
|
|
|
|
m_xInUsernameFT->set_sensitive(bNotSeparate);
|
|
bReadOnly = officecfg::Office::Writer::MailMergeWizard::InServerUserName::isReadOnly();
|
|
m_xInUsernameED->set_sensitive(bNotSeparate && !bReadOnly);
|
|
m_xInUsernameImg->set_visible(bReadOnly);
|
|
m_xProtocolFT->set_sensitive(bNotSeparate);
|
|
|
|
bReadOnly = officecfg::Office::Writer::MailMergeWizard::InServerIsPOP::isReadOnly();
|
|
m_xPOP3RB->set_sensitive(bNotSeparate && !bReadOnly);
|
|
m_xIMAPRB->set_sensitive(bNotSeparate && !bReadOnly);
|
|
m_xPOP3Img->set_visible(bReadOnly);
|
|
|
|
m_xInPasswordFT->set_sensitive(bNotSeparate);
|
|
m_xInPasswordED->set_sensitive(bNotSeparate);
|
|
}
|
|
|
|
IMPL_LINK_NOARG( SwAuthenticationSettingsDialog, InServerHdl_Impl, weld::Toggleable&, void)
|
|
{
|
|
bool bPOP = m_xPOP3RB->get_active();
|
|
m_rConfigItem.SetInServerPOP(bPOP);
|
|
m_xPortNF->set_value(m_rConfigItem.GetInServerPort());
|
|
}
|
|
|
|
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|