summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sw/source/ui/dbui/mmoutputtypepage.cxx44
-rw-r--r--sw/source/ui/dbui/mmresultdialogs.cxx8
-rw-r--r--sw/source/ui/inc/mmresultdialogs.hxx7
-rw-r--r--sw/uiconfig/swriter/ui/mmsendmails.ui4
4 files changed, 35 insertions, 28 deletions
diff --git a/sw/source/ui/dbui/mmoutputtypepage.cxx b/sw/source/ui/dbui/mmoutputtypepage.cxx
index fa01025d3fdd..3adfa2970897 100644
--- a/sw/source/ui/dbui/mmoutputtypepage.cxx
+++ b/sw/source/ui/dbui/mmoutputtypepage.cxx
@@ -240,7 +240,7 @@ SwSendWarningBox_Impl::SwSendWarningBox_Impl(vcl::Window* pParent, const OUStrin
#define ITEMID_STATUS 2
SwSendMailDialog::SwSendMailDialog(vcl::Window *pParent, SwMailMergeConfigItem& rConfigItem) :
- ModelessDialog /*SfxModalDialog*/(pParent, "SendMailsDialog", "modules/swriter/ui/mmsendmails.ui"),
+ Dialog(pParent, "SendMailsDialog", "modules/swriter/ui/mmsendmails.ui"),
m_pTransferStatus(get<FixedText>("transferstatus")),
m_pPaused(get<FixedText>("paused")),
m_pProgressBar(get<ProgressBar>("progress")),
@@ -259,6 +259,7 @@ SwSendMailDialog::SwSendMailDialog(vcl::Window *pParent, SwMailMergeConfigItem&
m_bDestructionEnabled(false),
m_pImpl(new SwSendMailDialog_Impl),
m_pConfigItem(&rConfigItem),
+ m_nExpectedCount(0),
m_nSendCount(0),
m_nErrorCount(0)
{
@@ -289,6 +290,7 @@ SwSendMailDialog::SwSendMailDialog(vcl::Window *pParent, SwMailMergeConfigItem&
m_pStatus->SetTabs(&nTabs[0], MapUnit::MapPixel);
m_pStatus->SetSpaceBetweenEntries(3);
+ m_pPaused->Show(false);
UpdateTransferStatus();
}
@@ -330,7 +332,8 @@ void SwSendMailDialog::dispose()
m_pStatusHB.clear();
m_pStop.clear();
m_pClose.clear();
- ModelessDialog::dispose();
+
+ Dialog::dispose();
}
void SwSendMailDialog::AddDocument( SwMailDescriptor const & rDesc )
@@ -366,7 +369,15 @@ IMPL_LINK( SwSendMailDialog, StopHdl_Impl, Button*, pButton, void )
IMPL_LINK_NOARG(SwSendMailDialog, CloseHdl_Impl, Button*, void)
{
- ModelessDialog::Show( false );
+ Dialog::Show( false );
+
+ if ( m_bDestructionEnabled )
+ disposeOnce();
+ else
+ {
+ m_pImpl->aRemoveIdle.SetInvokeHandler( LINK( this, SwSendMailDialog, RemoveThis ) );
+ m_pImpl->aRemoveIdle.Start();
+ }
}
IMPL_STATIC_LINK( SwSendMailDialog, StartSendMails, void*, pDialog, void )
@@ -512,22 +523,12 @@ void SwSendMailDialog::IterateMails()
UpdateTransferStatus();
}
-void SwSendMailDialog::ShowDialog()
+void SwSendMailDialog::ShowDialog(sal_Int32 nExpectedCount)
{
Application::PostUserEvent( LINK( this, SwSendMailDialog,
StartSendMails ), this, true );
- ModelessDialog::Show();
-}
-
-void SwSendMailDialog::StateChanged( StateChangedType nStateChange )
-{
- ModelessDialog::StateChanged( nStateChange );
- if(StateChangedType::Visible == nStateChange && !IsVisible())
- {
- m_pImpl->aRemoveIdle.SetInvokeHandler( LINK( this, SwSendMailDialog,
- RemoveThis ) );
- m_pImpl->aRemoveIdle.Start();
- }
+ m_nExpectedCount = nExpectedCount > 0 ? nExpectedCount : 1;
+ Dialog::Show();
}
void SwSendMailDialog::DocumentSent( uno::Reference< mail::XMailMessage> const & xMessage,
@@ -565,21 +566,26 @@ void SwSendMailDialog::UpdateTransferStatus()
{
OUString sStatus( m_sTransferStatus );
sStatus = sStatus.replaceFirst("%1", OUString::number(m_nSendCount) );
- sStatus = sStatus.replaceFirst("%2", OUString::number(m_pImpl->aDescriptors.size()));
+ sStatus = sStatus.replaceFirst("%2", OUString::number(m_nExpectedCount));
m_pTransferStatus->SetText(sStatus);
sStatus = m_sErrorStatus.replaceFirst("%1", OUString::number(m_nErrorCount) );
m_pErrorStatus->SetText(sStatus);
if(m_pImpl->aDescriptors.size())
- m_pProgressBar->SetValue(static_cast<sal_uInt16>(m_nSendCount * 100 / m_pImpl->aDescriptors.size()));
+ m_pProgressBar->SetValue(static_cast<sal_uInt16>(m_nSendCount * 100 / m_nExpectedCount));
else
m_pProgressBar->SetValue(0);
}
void SwSendMailDialog::AllMailsSent()
{
- m_pStop->Enable(false);
+ // Leave open if some kind of error occurred
+ if ( m_nSendCount == m_nExpectedCount )
+ {
+ m_pStop->Enable( false );
+ Dialog::Show( false );
+ }
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sw/source/ui/dbui/mmresultdialogs.cxx b/sw/source/ui/dbui/mmresultdialogs.cxx
index 61bd63b3efd1..25af6e39e51b 100644
--- a/sw/source/ui/dbui/mmresultdialogs.cxx
+++ b/sw/source/ui/dbui/mmresultdialogs.cxx
@@ -1080,12 +1080,15 @@ IMPL_LINK(SwMMResultEmailDialog, SendDocumentsHdl_Impl, Button*, pButton, void)
xStore->storeToURL( sTargetTempURL, aValues );
//create the send dialog
- VclPtr<SwSendMailDialog> pDlg = VclPtr<SwSendMailDialog>::Create(pButton, *xConfigItem);
- pDlg->ShowDialog();
+ vcl::Window* pParent = Application::GetDefDialogParent();
+ VclPtr<SwSendMailDialog> pDlg = VclPtr<SwSendMailDialog>::Create(pParent, *xConfigItem);
+
+ pDlg->ShowDialog(nEnd - nBegin);
//help to force painting the dialog
//TODO/CLEANUP
//predetermined breaking point
Application::Reschedule( true );
+ endDialog(pButton);
for(sal_uInt32 nDoc = nBegin; nDoc < nEnd; ++nDoc)
{
SwDocMergeInfo& rInfo = xConfigItem->GetDocumentMergeInfo(nDoc);
@@ -1237,7 +1240,6 @@ IMPL_LINK(SwMMResultEmailDialog, SendDocumentsHdl_Impl, Button*, pButton, void)
pDlg->EnableDestruction();
::osl::File::remove( sTargetTempURL );
- endDialog(pButton);
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sw/source/ui/inc/mmresultdialogs.hxx b/sw/source/ui/inc/mmresultdialogs.hxx
index d892c8a9244a..01e89826372c 100644
--- a/sw/source/ui/inc/mmresultdialogs.hxx
+++ b/sw/source/ui/inc/mmresultdialogs.hxx
@@ -162,7 +162,7 @@ struct SwMailDescriptor
};
struct SwSendMailDialog_Impl;
class SwMailMergeConfigItem;
-class SwSendMailDialog : public ModelessDialog //SfxModalDialog
+class SwSendMailDialog : public Dialog
{
VclPtr<FixedText> m_pTransferStatus;
VclPtr<FixedText> m_pPaused;
@@ -189,6 +189,7 @@ class SwSendMailDialog : public ModelessDialog //SfxModalDialog
SwSendMailDialog_Impl* m_pImpl;
SwMailMergeConfigItem* m_pConfigItem;
+ sal_Int32 m_nExpectedCount;
sal_Int32 m_nSendCount;
sal_Int32 m_nErrorCount;
@@ -202,8 +203,6 @@ class SwSendMailDialog : public ModelessDialog //SfxModalDialog
void SendMails();
void UpdateTransferStatus();
- virtual void StateChanged( StateChangedType nStateChange ) override;
-
public:
SwSendMailDialog( vcl::Window* pParent, SwMailMergeConfigItem& );
virtual ~SwSendMailDialog() override;
@@ -211,7 +210,7 @@ public:
void AddDocument( SwMailDescriptor const & rDesc );
void EnableDestruction() {m_bDestructionEnabled = true;}
- void ShowDialog();
+ void ShowDialog(sal_Int32 nExpectedCount);
void DocumentSent( css::uno::Reference< css::mail::XMailMessage> const & xMessage,
bool bResult,
diff --git a/sw/uiconfig/swriter/ui/mmsendmails.ui b/sw/uiconfig/swriter/ui/mmsendmails.ui
index d53421211188..b4c055f1a71f 100644
--- a/sw/uiconfig/swriter/ui/mmsendmails.ui
+++ b/sw/uiconfig/swriter/ui/mmsendmails.ui
@@ -23,7 +23,7 @@
<property name="layout_style">end</property>
<child>
<object class="GtkButton" id="stop">
- <property name="label" translatable="yes" context="mmsendmails|stop">_Stop</property>
+ <property name="label" translatable="yes" context="mmsendmails|stop">_Pause</property>
<property name="use_action_appearance">False</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
@@ -38,7 +38,7 @@
</child>
<child>
<object class="GtkButton" id="close">
- <property name="label">gtk-close</property>
+ <property name="label">gtk-cancel</property>
<property name="use_action_appearance">False</property>
<property name="visible">True</property>
<property name="can_focus">True</property>