diff options
Diffstat (limited to 'sw/source/ui/dbui/dbui.cxx')
-rw-r--r-- | sw/source/ui/dbui/dbui.cxx | 151 |
1 files changed, 151 insertions, 0 deletions
diff --git a/sw/source/ui/dbui/dbui.cxx b/sw/source/ui/dbui/dbui.cxx new file mode 100644 index 000000000000..9dc0c899f574 --- /dev/null +++ b/sw/source/ui/dbui/dbui.cxx @@ -0,0 +1,151 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +// MARKER(update_precomp.py): autogen include statement, do not remove +#include "precompiled_sw.hxx" + +// INCLUDE --------------------------------------------------------------- + + +#include <tools/list.hxx> +#include "wrtsh.hxx" + + +#include "dbui.hrc" +#include "dbui.hxx" + +/*--------------------------------------------------------------------- + Beschreibung: +---------------------------------------------------------------------*/ + +PrintMonitor::PrintMonitor( Window *pParent, PrintMonitorType eType ) +: ModelessDialog( pParent, SW_RES(DLG_PRINTMONITOR) ), + aDocName (this, SW_RES( FT_DOCNAME )), + aPrinting (this, SW_RES( + eType == MONITOR_TYPE_MAIL ? + FT_SENDING : eType == MONITOR_TYPE_SAVE ? FT_SAVING : FT_PRINTING )), + aPrinter (this, SW_RES( FT_PRINTER )), + aPrintInfo (this, SW_RES( FT_PRINTINFO )), + aCancel (this, SW_RES( PB_CANCELPRNMON )) +{ + switch (eType) + { + case MONITOR_TYPE_SAVE: SetText(SW_RES(STR_SAVEMON)); break; + case MONITOR_TYPE_MAIL: SetText(SW_RES(STR_EMAILMON)); break; + case MONITOR_TYPE_PRINT: break; + } + FreeResource(); +} +/*--------------------------------------------------------------------- + +---------------------------------------------------------------------*/ +void lcl_ResizeControl( Window* pWin, long nDiff ) +{ + Size aSize( pWin->GetSizePixel() ); + aSize.Width() += nDiff; + pWin->SetSizePixel( aSize ); +} +void lcl_RePosControl( Window* pWin, long nDiff ) +{ + Point aPos( pWin->GetPosPixel() ); + aPos.X() += nDiff; + pWin->SetPosPixel( aPos ); +} + +void PrintMonitor::ResizeControls() +{ + Size aDlgSize( GetSizePixel() ); + Size aPrinterSize( aPrinter.GetSizePixel() ); + long nPrinterTextWidth = aPrinter.GetTextWidth( aPrinter.GetText() ); + if( nPrinterTextWidth > aPrinterSize.Width() ) + { + //increase control and dialog width if printer text is too long + //do not increase dialog width more than three times + long nDiff = nPrinterTextWidth - aPrinterSize.Width(); + if( nDiff > 2 * aDlgSize.Width() ) + { + aPrinter.SetStyle( WB_RIGHT | aPrinter.GetStyle() ); + nDiff = 2 * aDlgSize.Width(); + } + aDlgSize.Width() += nDiff; + SetSizePixel(aDlgSize); + lcl_ResizeControl( &aPrinter, nDiff ); + + nDiff /= 2; + lcl_RePosControl( &aDocName, nDiff ); + lcl_RePosControl( &aPrinting, nDiff ); + lcl_RePosControl( &aPrintInfo, nDiff ); + lcl_RePosControl( &aCancel, nDiff ); + } +} +/*--------------------------------------------------------------------- + Progress Indicator for Creation of personalized Mail Merge documents: +---------------------------------------------------------------------*/ + +CreateMonitor::CreateMonitor( Window *pParent ) +: ModelessDialog( pParent, SW_RES(DLG_MM_CREATIONMONITOR) ), + m_aStatus (this, SW_RES( FT_STATUS )), + m_aProgress (this, SW_RES( FT_PROGRESS )), + m_aCreateDocuments (this, SW_RES( FT_CREATEDOCUMENTS )), + m_aCounting (this, SW_RES( FT_COUNTING )), + m_aCancelButton (this, SW_RES( PB_CANCELPRNMON )), + m_sCountingPattern(), + m_sVariable_Total( String::CreateFromAscii("%Y") ), + m_sVariable_Position( String::CreateFromAscii("%X") ), + m_nTotalCount(0), + m_nCurrentPosition(0) +{ + FreeResource(); + + m_sCountingPattern = m_aCounting.GetText(); + m_aCounting.SetText(String::CreateFromAscii("...")); +} + +void CreateMonitor::UpdateCountingText() +{ + String sText(m_sCountingPattern); + sText.SearchAndReplaceAll( m_sVariable_Total, String::CreateFromInt32( m_nTotalCount ) ); + sText.SearchAndReplaceAll( m_sVariable_Position, String::CreateFromInt32( m_nCurrentPosition ) ); + m_aCounting.SetText(sText); +} + +void CreateMonitor::SetTotalCount( sal_Int32 nTotal ) +{ + m_nTotalCount = nTotal; + UpdateCountingText(); +} + +void CreateMonitor::SetCurrentPosition( sal_Int32 nCurrent ) +{ + m_nCurrentPosition = nCurrent; + UpdateCountingText(); +} + +void CreateMonitor::SetCancelHdl( const Link& rLink ) +{ + m_aCancelButton.SetClickHdl( rLink ); +} |