diff options
Diffstat (limited to 'reportdesign/source/ui/dlg')
22 files changed, 0 insertions, 7317 deletions
diff --git a/reportdesign/source/ui/dlg/AddField.cxx b/reportdesign/source/ui/dlg/AddField.cxx deleted file mode 100644 index ad98ff4ff..000000000 --- a/reportdesign/source/ui/dlg/AddField.cxx +++ /dev/null @@ -1,568 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * 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. - * - ************************************************************************/ -#include "precompiled_rptui.hxx" -#include "AddField.hxx" -#include "UITools.hxx" -#include <svx/dbaexchange.hxx> -#include <svx/svdpagv.hxx> -#include <com/sun/star/sdb/CommandType.hpp> -#include <com/sun/star/util/URL.hpp> -#include <com/sun/star/sdb/XDocumentDataSource.hpp> -#include <com/sun/star/util/URL.hpp> -#include <com/sun/star/i18n/XCollator.hpp> - -#include <vcl/waitobj.hxx> -#include <vcl/svapp.hxx> -#include <tools/diagnose_ex.h> -#include <comphelper/stl_types.hxx> -#include "rptui_slotid.hrc" - -#include <connectivity/dbtools.hxx> -#include "helpids.hrc" -#include "RptResId.hrc" -#include "CondFormat.hrc" -#include "ModuleHelper.hxx" -#include "uistrings.hrc" -#include "ColumnInfo.hxx" - -#include <comphelper/property.hxx> -#include <svtools/imgdef.hxx> - -namespace rptui -{ -const long STD_WIN_SIZE_X = 180; -const long STD_WIN_SIZE_Y = 320; - -const long LISTBOX_BORDER = 2; - -using namespace ::com::sun::star; -using namespace sdbc; -using namespace sdb; -using namespace uno; -using namespace datatransfer; -using namespace beans; -using namespace lang; -using namespace container; -using namespace ::svx; - -class OAddFieldWindowListBox : public SvTreeListBox -{ - OAddFieldWindow* m_pTabWin; - - OAddFieldWindowListBox(const OAddFieldWindowListBox&); - void operator =(const OAddFieldWindowListBox&); - -public: - OAddFieldWindowListBox( OAddFieldWindow* _pParent ); - virtual ~OAddFieldWindowListBox(); - - sal_Int8 AcceptDrop( const AcceptDropEvent& rEvt ); - sal_Int8 ExecuteDrop( const ExecuteDropEvent& rEvt ); - - uno::Sequence< beans::PropertyValue > getSelectedFieldDescriptors(); - -protected: - // DragSourceHelper - virtual void StartDrag( sal_Int8 nAction, const Point& rPosPixel ); - -private: - using SvTreeListBox::ExecuteDrop; -}; -// ----------------------------------------------------------------------------- -uno::Sequence< beans::PropertyValue > OAddFieldWindowListBox::getSelectedFieldDescriptors() -{ - uno::Sequence< beans::PropertyValue > aArgs(GetSelectionCount()); - sal_Int32 i = 0; - SvLBoxEntry* pSelected = FirstSelected(); - while( pSelected ) - { - // build a descriptor for the currently selected field - ::svx::ODataAccessDescriptor aDescriptor; - m_pTabWin->fillDescriptor(pSelected,aDescriptor); - aArgs[i++].Value <<= aDescriptor.createPropertyValueSequence(); - pSelected = NextSelected(pSelected); - } - return aArgs; -} -//================================================================== -// class OAddFieldWindowListBox -//================================================================== -DBG_NAME( rpt_OAddFieldWindowListBox ); -//------------------------------------------------------------------------------ -OAddFieldWindowListBox::OAddFieldWindowListBox( OAddFieldWindow* _pParent ) - :SvTreeListBox( _pParent, WB_TABSTOP|WB_BORDER|WB_SORT ) - ,m_pTabWin( _pParent ) -{ - DBG_CTOR( rpt_OAddFieldWindowListBox,NULL); - SetHelpId( HID_RPT_FIELD_SEL ); - SetSelectionMode(MULTIPLE_SELECTION); - SetDragDropMode( 0xFFFF ); - SetHighlightRange( ); -} - -//------------------------------------------------------------------------------ -OAddFieldWindowListBox::~OAddFieldWindowListBox() -{ - DBG_DTOR( rpt_OAddFieldWindowListBox,NULL); -} - -//------------------------------------------------------------------------------ -sal_Int8 OAddFieldWindowListBox::AcceptDrop( const AcceptDropEvent& /*rEvt*/ ) -{ - return DND_ACTION_NONE; -} - -//------------------------------------------------------------------------------ -sal_Int8 OAddFieldWindowListBox::ExecuteDrop( const ExecuteDropEvent& /*rEvt*/ ) -{ - return DND_ACTION_NONE; -} - -//------------------------------------------------------------------------------ -void OAddFieldWindowListBox::StartDrag( sal_Int8 /*_nAction*/, const Point& /*_rPosPixel*/ ) -{ - if ( GetSelectionCount() < 1 ) - // no drag without a field - return; - - OMultiColumnTransferable* pDataContainer = new OMultiColumnTransferable(getSelectedFieldDescriptors()); - Reference< XTransferable> xEnsureDelete = pDataContainer; - - EndSelection(); - pDataContainer->StartDrag( this, DND_ACTION_COPYMOVE | DND_ACTION_LINK ); -} -//======================================================================== -// class OAddFieldWindow -//======================================================================== -DBG_NAME( rpt_OAddFieldWindow ); -//----------------------------------------------------------------------- -OAddFieldWindow::OAddFieldWindow(Window* pParent - ,const uno::Reference< beans::XPropertySet >& _xRowSet - ) - :FloatingWindow(pParent, WinBits(WB_STDMODELESS|WB_SIZEABLE)) - ,::comphelper::OPropertyChangeListener(m_aMutex) - ,::comphelper::OContainerListener(m_aMutex) - ,m_xRowSet(_xRowSet) - ,m_aActions(this,ModuleRes(RID_TB_SORTING)) - ,m_pListBox(new OAddFieldWindowListBox( this )) - ,m_aFixedLine(this, ModuleRes(ADDFIELD_FL_HELP_SEPARATOR) ) - ,m_aHelpText(this, ModuleRes(ADDFIELD_HELP_FIELD) ) - ,m_aInsertButton(this, WB_TABSTOP|WB_CENTER) - ,m_nCommandType(0) - ,m_bEscapeProcessing(sal_False) - ,m_pChangeListener(NULL) - ,m_pContainerListener(NULL) -{ - DBG_CTOR( rpt_OAddFieldWindow,NULL); - SetHelpId( HID_RPT_FIELD_SEL_WIN ); - SetBackground( Wallpaper( Application::GetSettings().GetStyleSettings().GetFaceColor()) ); - SetMinOutputSizePixel(Size(STD_WIN_SIZE_X,STD_WIN_SIZE_Y)); - - m_aActions.SetStyle(m_aActions.GetStyle()|WB_LINESPACING); - m_aActions.SetBackground( Wallpaper( Application::GetSettings().GetStyleSettings().GetFaceColor()) ); - - m_aActions.SetSelectHdl(LINK(this, OAddFieldWindow, OnSortAction)); - setToolBox(&m_aActions); - m_aActions.CheckItem(SID_FM_SORTUP); - m_aActions.EnableItem(SID_ADD_CONTROL_PAIR, sal_False); - - m_pListBox->SetDoubleClickHdl(LINK( this, OAddFieldWindow, OnDoubleClickHdl ) ); - m_pListBox->SetSelectHdl(LINK( this, OAddFieldWindow, OnSelectHdl ) ); - m_pListBox->SetDeselectHdl(LINK( this, OAddFieldWindow, OnSelectHdl ) ); - m_pListBox->SetDoubleClickHdl(LINK( this, OAddFieldWindow, OnDoubleClickHdl ) ); - m_pListBox->Show(); - const String sTitle(ModuleRes(RID_STR_INSERT)); - m_aInsertButton.SetText(sTitle); - m_aInsertButton.SetClickHdl(LINK( this, OAddFieldWindow, OnDoubleClickHdl ) ); - m_aInsertButton.Show(); - - m_aFixedLine.SetControlBackground( GetSettings().GetStyleSettings().GetFaceColor() ); - m_aHelpText.SetControlBackground( GetSettings().GetStyleSettings().GetFaceColor() ); - - SetSizePixel(Size(STD_WIN_SIZE_X,STD_WIN_SIZE_Y)); - - if ( m_xRowSet.is() ) - { - try - { - // be notified when the settings of report definition change - m_pChangeListener = new ::comphelper::OPropertyChangeMultiplexer( this, m_xRowSet ); - m_pChangeListener->addProperty( PROPERTY_COMMAND ); - m_pChangeListener->addProperty( PROPERTY_COMMANDTYPE ); - m_pChangeListener->addProperty( PROPERTY_ESCAPEPROCESSING ); - m_pChangeListener->addProperty( PROPERTY_FILTER ); - } - catch( const Exception& ) - { - DBG_UNHANDLED_EXCEPTION(); - } - } -} - -//----------------------------------------------------------------------- -OAddFieldWindow::~OAddFieldWindow() -{ - if ( m_pListBox.get() ) - { - SvLBoxTreeList* pModel = m_pListBox->GetModel(); - sal_uLong nCount = pModel->GetEntryCount(); - for(sal_uLong i = 0; i< nCount;++i) - { - delete static_cast<ColumnInfo*>(pModel->GetEntry(i)->GetUserData()); - } - } - if (m_pChangeListener.is()) - m_pChangeListener->dispose(); - if ( m_pContainerListener.is() ) - m_pContainerListener->dispose(); - DBG_DTOR( rpt_OAddFieldWindow,NULL); -} - -//----------------------------------------------------------------------- -void OAddFieldWindow::GetFocus() -{ - if ( m_pListBox.get() ) - m_pListBox->GrabFocus(); - else - FloatingWindow::GetFocus(); -} -//----------------------------------------------------------------------- -uno::Sequence< beans::PropertyValue > OAddFieldWindow::getSelectedFieldDescriptors() -{ - return m_pListBox->getSelectedFieldDescriptors(); -} - -//----------------------------------------------------------------------- -long OAddFieldWindow::PreNotify( NotifyEvent& _rNEvt ) -{ - if ( EVENT_KEYINPUT == _rNEvt.GetType() ) - { - const KeyCode& rKeyCode = _rNEvt.GetKeyEvent()->GetKeyCode(); - if ( ( 0 == rKeyCode.GetModifier() ) && ( KEY_RETURN == rKeyCode.GetCode() ) ) - { - if ( m_aCreateLink.IsSet() ) - { - m_aCreateLink.Call(this); - return 1; - } - } - } - - return FloatingWindow::PreNotify( _rNEvt ); -} -//----------------------------------------------------------------------- -void OAddFieldWindow::_propertyChanged( const beans::PropertyChangeEvent& _evt ) throw( uno::RuntimeException ) -{ - OSL_ENSURE( _evt.Source == m_xRowSet, "OAddFieldWindow::_propertyChanged: where did this come from?" ); - (void)_evt; - Update(); -} - -//----------------------------------------------------------------------- -namespace -{ - void lcl_addToList( OAddFieldWindowListBox& _rListBox, const uno::Sequence< ::rtl::OUString >& _rEntries ) - { - const ::rtl::OUString* pEntries = _rEntries.getConstArray(); - sal_Int32 nEntries = _rEntries.getLength(); - for ( sal_Int32 i = 0; i < nEntries; ++i, ++pEntries ) - _rListBox.InsertEntry( *pEntries,NULL,sal_False,LIST_APPEND,new ColumnInfo(*pEntries) ); - } - void lcl_addToList( OAddFieldWindowListBox& _rListBox, const uno::Reference< container::XNameAccess>& i_xColumns ) - { - uno::Sequence< ::rtl::OUString > aEntries = i_xColumns->getElementNames(); - const ::rtl::OUString* pEntries = aEntries.getConstArray(); - sal_Int32 nEntries = aEntries.getLength(); - for ( sal_Int32 i = 0; i < nEntries; ++i, ++pEntries ) - { - uno::Reference< beans::XPropertySet> xColumn(i_xColumns->getByName(*pEntries),UNO_QUERY_THROW); - ::rtl::OUString sLabel; - if ( xColumn->getPropertySetInfo()->hasPropertyByName(PROPERTY_LABEL) ) - xColumn->getPropertyValue(PROPERTY_LABEL) >>= sLabel; - if ( sLabel.getLength() ) - _rListBox.InsertEntry( sLabel,NULL,sal_False,LIST_APPEND,new ColumnInfo(*pEntries,sLabel) ); - else - _rListBox.InsertEntry( *pEntries,NULL,sal_False,LIST_APPEND,new ColumnInfo(*pEntries,sLabel) ); - } - } -} - -//----------------------------------------------------------------------- -void OAddFieldWindow::Update() -{ - if ( m_pContainerListener.is() ) - m_pContainerListener->dispose(); - m_pContainerListener = NULL; - m_xColumns.clear(); - - try - { - // ListBox loeschen - m_pListBox->Clear(); - const sal_uInt16 nItemCount = m_aActions.GetItemCount(); - for (sal_uInt16 j = 0; j< nItemCount; ++j) - { - m_aActions.EnableItem(m_aActions.GetItemId(j),sal_False); - } - - String aTitle(ModuleRes(RID_STR_FIELDSELECTION)); - SetText(aTitle); - if ( m_xRowSet.is() ) - { - ::rtl::OUString sCommand( m_aCommandName ); - sal_Int32 nCommandType( m_nCommandType ); - sal_Bool bEscapeProcessing( m_bEscapeProcessing ); - ::rtl::OUString sFilter( m_sFilter ); - - OSL_VERIFY( m_xRowSet->getPropertyValue( PROPERTY_COMMAND ) >>= sCommand ); - OSL_VERIFY( m_xRowSet->getPropertyValue( PROPERTY_COMMANDTYPE ) >>= nCommandType ); - OSL_VERIFY( m_xRowSet->getPropertyValue( PROPERTY_ESCAPEPROCESSING ) >>= bEscapeProcessing ); - OSL_VERIFY( m_xRowSet->getPropertyValue( PROPERTY_FILTER ) >>= sFilter ); - - m_aCommandName = sCommand; - m_nCommandType = nCommandType; - m_bEscapeProcessing = bEscapeProcessing; - m_sFilter = sFilter; - - // add the columns to the list - uno::Reference< sdbc::XConnection> xCon = getConnection(); - if ( xCon.is() && m_aCommandName.getLength() ) - m_xColumns = dbtools::getFieldsByCommandDescriptor( xCon, GetCommandType(), GetCommand(), m_xHoldAlive ); - if ( m_xColumns.is() ) - { - lcl_addToList( *m_pListBox, m_xColumns ); - uno::Reference< container::XContainer> xContainer(m_xColumns,uno::UNO_QUERY); - if ( xContainer.is() ) - m_pContainerListener = new ::comphelper::OContainerListenerAdapter(this,xContainer); - } - - // add the parameter columns to the list - uno::Reference< ::com::sun::star::sdbc::XRowSet > xRowSet(m_xRowSet,uno::UNO_QUERY); - Sequence< ::rtl::OUString > aParamNames( getParameterNames( xRowSet ) ); - lcl_addToList( *m_pListBox, aParamNames ); - - // set title - aTitle.AppendAscii(" "); - aTitle += m_aCommandName.getStr(); - SetText( aTitle ); - if ( m_aCommandName.getLength() ) - { - for (sal_uInt16 i = 0; i < nItemCount; ++i) - { - m_aActions.EnableItem(m_aActions.GetItemId(i)); - } - } - OnSelectHdl(NULL); - } - } - catch( const Exception& ) - { - DBG_UNHANDLED_EXCEPTION(); - } -} - -//----------------------------------------------------------------------- -void OAddFieldWindow::Resize() -{ - FloatingWindow::Resize(); - - const Size aWindowSize( GetOutputSizePixel() ); - - - const Size aRelated(LogicToPixel( Size( RELATED_CONTROLS, RELATED_CONTROLS ), MAP_APPFONT )); - const Size aFixedTextSize(LogicToPixel( Size( FIXEDTEXT_WIDTH, FIXEDTEXT_HEIGHT ), MAP_APPFONT )); - - // ToolBar - Size aToolbarSize( m_aActions.GetSizePixel() ); - Point aToolbarPos( aRelated.Width(), aRelated.Height()); - m_aActions.SetPosPixel(Point(aToolbarPos.X(), aToolbarPos.Y())); - - Size aLBSize( aWindowSize ); - aLBSize.Width() -= ( 2 * aRelated.Width() ); - - // help text - const Size aHelpTextSize = m_aHelpText.CalcMinimumSize(aLBSize.Width()); - - // ListBox - Point aLBPos( aRelated.Width(), aRelated.Height() + aToolbarSize.Height() + aRelated.Height() ); - - aLBSize.Height() -= aToolbarSize.Height(); // Toolbar - aLBSize.Height() -= (6*aRelated.Height()); // 6 * gap - aLBSize.Height() -= aFixedTextSize.Height(); // fixed line - aLBSize.Height() -= aHelpTextSize.Height(); // help text - m_pListBox->SetPosSizePixel( aLBPos, aLBSize ); - - // FixedLine - Size aFLSize( aLBSize.Width(),aFixedTextSize.Height() ); - Point aFLPos( aRelated.Width(), aLBPos.Y() + aLBSize.Height() + aRelated.Height()); - m_aFixedLine.SetPosSizePixel( aFLPos, aFLSize ); - - // Help text - Point aFTPos( aRelated.Width(), aFLPos.Y() + aFLSize.Height() + aRelated.Height() ); - m_aHelpText.SetPosSizePixel( aFTPos, aHelpTextSize ); -} -// ----------------------------------------------------------------------------- -uno::Reference< sdbc::XConnection> OAddFieldWindow::getConnection() const -{ - return uno::Reference< sdbc::XConnection>(m_xRowSet->getPropertyValue( PROPERTY_ACTIVECONNECTION ),uno::UNO_QUERY); -} -// ----------------------------------------------------------------------------- -void OAddFieldWindow::fillDescriptor(SvLBoxEntry* _pSelected,::svx::ODataAccessDescriptor& _rDescriptor) -{ - if ( _pSelected && m_xColumns.is() ) - { - uno::Reference<container::XChild> xChild(getConnection(),uno::UNO_QUERY); - if ( xChild.is( ) ) - { - uno::Reference<sdb::XDocumentDataSource> xDocument( xChild->getParent(), uno::UNO_QUERY ); - if ( xDocument.is() ) - { - uno::Reference<frame::XModel> xModel(xDocument->getDatabaseDocument(),uno::UNO_QUERY); - if ( xModel.is() ) - _rDescriptor[ daDatabaseLocation ] <<= xModel->getURL(); - } - } - - _rDescriptor[ ::svx::daCommand ] <<= GetCommand(); - _rDescriptor[ ::svx::daCommandType ] <<= GetCommandType(); - _rDescriptor[ ::svx::daEscapeProcessing ] <<= GetEscapeProcessing(); - _rDescriptor[ ::svx::daConnection ] <<= getConnection(); - - ColumnInfo* pInfo = static_cast<ColumnInfo*>(_pSelected->GetUserData()); - _rDescriptor[ ::svx::daColumnName ] <<= pInfo->sColumnName; - if ( m_xColumns->hasByName( pInfo->sColumnName ) ) - _rDescriptor[ ::svx::daColumnObject ] <<= m_xColumns->getByName(pInfo->sColumnName); - } -} -// ----------------------------------------------------------------------------- -void OAddFieldWindow::_elementInserted( const container::ContainerEvent& _rEvent ) throw(::com::sun::star::uno::RuntimeException) -{ - if ( m_pListBox.get() ) - { - ::rtl::OUString sName; - if ( (_rEvent.Accessor >>= sName) && m_xColumns->hasByName(sName) ) - { - uno::Reference< beans::XPropertySet> xColumn(m_xColumns->getByName(sName),UNO_QUERY_THROW); - ::rtl::OUString sLabel; - if ( xColumn->getPropertySetInfo()->hasPropertyByName(PROPERTY_LABEL) ) - xColumn->getPropertyValue(PROPERTY_LABEL) >>= sLabel; - if ( sLabel.getLength() ) - m_pListBox->InsertEntry( sLabel,NULL,sal_False,LIST_APPEND,new ColumnInfo(sName,sLabel) ); - else - m_pListBox->InsertEntry( sName,NULL,sal_False,LIST_APPEND,new ColumnInfo(sName,sLabel) ); - } - } -} -// ----------------------------------------------------------------------------- -void OAddFieldWindow::_elementRemoved( const container::ContainerEvent& /*_rEvent*/ ) throw(::com::sun::star::uno::RuntimeException) -{ - if ( m_pListBox.get() ) - { - m_pListBox->Clear(); - if ( m_xColumns.is() ) - lcl_addToList( *m_pListBox, m_xColumns ); - } -} -// ----------------------------------------------------------------------------- -void OAddFieldWindow::_elementReplaced( const container::ContainerEvent& /*_rEvent*/ ) throw(::com::sun::star::uno::RuntimeException) -{ -} -// ----------------------------------------------------------------------------- -IMPL_LINK( OAddFieldWindow, OnSelectHdl, void* ,/*_pAddFieldDlg*/) -{ - m_aActions.EnableItem(SID_ADD_CONTROL_PAIR, ( m_pListBox.get() && m_pListBox->GetSelectionCount() > 0 )); - - return 0L; -} -// ----------------------------------------------------------------------------- -IMPL_LINK( OAddFieldWindow, OnDoubleClickHdl, void* ,/*_pAddFieldDlg*/) -{ - if ( m_aCreateLink.IsSet() ) - m_aCreateLink.Call(this); - - return 0L; -} -//------------------------------------------------------------------------------ -ImageList OAddFieldWindow::getImageList(sal_Int16 _eBitmapSet) const -{ - sal_Int16 nN = IMG_ADDFIELD_DLG_SC; - if ( _eBitmapSet == SFX_SYMBOLS_SIZE_LARGE ) - nN = IMG_ADDFIELD_DLG_LC; - return ImageList(ModuleRes(nN)); -} -//------------------------------------------------------------------ -void OAddFieldWindow::resizeControls(const Size& _rDiff) -{ - // we use large images so we must change them - if ( _rDiff.Width() || _rDiff.Height() ) - { - Invalidate(); - } -} -//------------------------------------------------------------------ -IMPL_LINK( OAddFieldWindow, OnSortAction, ToolBox*, /*NOTINTERESTEDIN*/ ) -{ - const sal_uInt16 nCurItem = m_aActions.GetCurItemId(); - if ( SID_ADD_CONTROL_PAIR == nCurItem ) - OnDoubleClickHdl(NULL); - else - { - if ( SID_FM_REMOVE_FILTER_SORT == nCurItem || !m_aActions.IsItemChecked(nCurItem) ) - { - const sal_uInt16 nItemCount = m_aActions.GetItemCount(); - for (sal_uInt16 j = 0; j< nItemCount; ++j) - { - const sal_uInt16 nItemId = m_aActions.GetItemId(j); - if ( nCurItem != nItemId ) - m_aActions.CheckItem(nItemId,sal_False); - } - SvSortMode eSortMode = SortNone; - if ( SID_FM_REMOVE_FILTER_SORT != nCurItem ) - { - m_aActions.CheckItem(nCurItem,!m_aActions.IsItemChecked(nCurItem)); - if ( m_aActions.IsItemChecked(SID_FM_SORTUP) ) - eSortMode = SortAscending; - else if ( m_aActions.IsItemChecked(SID_FM_SORTDOWN) ) - eSortMode = SortDescending; - } - - m_pListBox->GetModel()->SetSortMode(eSortMode); - if ( SID_FM_REMOVE_FILTER_SORT == nCurItem ) - Update(); - - m_pListBox->GetModel()->Resort(); - } - } - return 0L; -} -// ----------------------------------------------------------------------------- -// ============================================================================= -} // namespace rptui -// ============================================================================= - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/reportdesign/source/ui/dlg/CondFormat.cxx b/reportdesign/source/ui/dlg/CondFormat.cxx deleted file mode 100644 index cbb4895f8..000000000 --- a/reportdesign/source/ui/dlg/CondFormat.cxx +++ /dev/null @@ -1,628 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * 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. - * - ************************************************************************/ -#include "precompiled_rptui.hxx" - -#include "CondFormat.hxx" -#include "CondFormat.hrc" - -#include "uistrings.hrc" -#include "RptResId.hrc" -#include "rptui_slotid.hrc" -#include "ModuleHelper.hxx" -#include "helpids.hrc" -#include "UITools.hxx" -#include "uistrings.hrc" -#include "ReportController.hxx" -#include "Condition.hxx" - -/** === begin UNO includes === **/ -#include <com/sun/star/beans/XPropertySet.hpp> -#include <com/sun/star/lang/IllegalArgumentException.hpp> -/** === end UNO includes === **/ - -#include <svx/globlmn.hrc> -#include <svx/svxids.hrc> - -#include <toolkit/helper/vclunohelper.hxx> - -#include <vcl/msgbox.hxx> - -#include <tools/debug.hxx> -#include <tools/diagnose_ex.h> - -#include <comphelper/property.hxx> - -#include <algorithm> -#include "UndoActions.hxx" - -// ............................................................................. -namespace rptui -{ -// ............................................................................. - - /** === begin UNO using === **/ - using ::com::sun::star::uno::Reference; - using ::com::sun::star::uno::UNO_QUERY_THROW; - using ::com::sun::star::uno::UNO_QUERY; - using ::com::sun::star::uno::Exception; - using ::com::sun::star::lang::IllegalArgumentException; - using ::com::sun::star::uno::Sequence; - using ::com::sun::star::beans::PropertyValue; - using ::com::sun::star::uno::Any; - /** === end UNO using === **/ - using namespace ::com::sun::star::report; - - //======================================================================== - // UpdateLocker - //======================================================================== - class UpdateLocker - { - Window& m_rWindow; - - public: - UpdateLocker( Window& _rWindow ) - :m_rWindow( _rWindow ) - { - _rWindow.SetUpdateMode( sal_False ); - } - ~UpdateLocker() - { - m_rWindow.SetUpdateMode( sal_True ); - } - }; - - //======================================================================== - // class ConditionalFormattingDialog - //======================================================================== - DBG_NAME(rpt_ConditionalFormattingDialog) - ConditionalFormattingDialog::ConditionalFormattingDialog( - Window* _pParent, const Reference< XReportControlModel >& _rxFormatConditions, ::rptui::OReportController& _rController ) - :ModalDialog( _pParent, ModuleRes(RID_CONDFORMAT) ) - ,m_aConditionPlayground( this, ModuleRes( WND_COND_PLAYGROUND ) ) - ,m_aSeparator(this, ModuleRes(FL_SEPARATOR1)) - ,m_aPB_OK(this, ModuleRes(PB_OK)) - ,m_aPB_CANCEL(this, ModuleRes(PB_CANCEL)) - ,m_aPB_Help(this, ModuleRes(PB_HELP)) - ,m_aCondScroll( this, ModuleRes( SB_ALL_CONDITIONS ) ) - ,m_rController( _rController ) - ,m_xFormatConditions( _rxFormatConditions ) - ,m_bDeletingCondition( false ) - { - DBG_CTOR(rpt_ConditionalFormattingDialog,NULL); - OSL_ENSURE( m_xFormatConditions.is(), "ConditionalFormattingDialog::ConditionalFormattingDialog: ReportControlModel is NULL -> Prepare for GPF!" ); - - m_xCopy.set( m_xFormatConditions->createClone(), UNO_QUERY_THROW ); - - m_aCondScroll.SetScrollHdl( LINK( this, ConditionalFormattingDialog, OnScroll ) ); - - impl_initializeConditions(); - - FreeResource(); - } - - //------------------------------------------------------------------------ - ConditionalFormattingDialog::~ConditionalFormattingDialog() - { - m_aConditions.clear(); - DBG_DTOR(rpt_ConditionalFormattingDialog,NULL); - } - - // ----------------------------------------------------------------------------- - void ConditionalFormattingDialog::impl_updateConditionIndicies() - { - sal_Int32 nIndex = 0; - for ( Conditions::const_iterator cond = m_aConditions.begin(); - cond != m_aConditions.end(); - ++cond, ++nIndex - ) - { - (*cond)->setConditionIndex( nIndex, impl_getConditionCount() ); - } - } - - // ----------------------------------------------------------------------------- - void ConditionalFormattingDialog::impl_conditionCountChanged() - { - if ( m_aConditions.empty() ) - impl_addCondition_nothrow( 0 ); - - impl_updateScrollBarRange(); - impl_updateConditionIndicies(); - impl_layoutAll(); - } - - // ----------------------------------------------------------------------------- - void ConditionalFormattingDialog::addCondition( size_t _nAddAfterIndex ) - { - OSL_PRECOND( _nAddAfterIndex < impl_getConditionCount(), "ConditionalFormattingDialog::addCondition: illegal condition index!" ); - impl_addCondition_nothrow( _nAddAfterIndex + 1 ); - } - - // ----------------------------------------------------------------------------- - void ConditionalFormattingDialog::deleteCondition( size_t _nCondIndex ) - { - impl_deleteCondition_nothrow( _nCondIndex ); - } - - // ----------------------------------------------------------------------------- - void ConditionalFormattingDialog::impl_addCondition_nothrow( size_t _nNewCondIndex ) - { - UpdateLocker aLockUpdates( *this ); - - try - { - if ( _nNewCondIndex > (size_t)m_xCopy->getCount() ) - throw IllegalArgumentException(); - - Reference< XFormatCondition > xCond = m_xCopy->createFormatCondition(); - ::comphelper::copyProperties(m_xCopy.get(),xCond.get()); - m_xCopy->insertByIndex( _nNewCondIndex, makeAny( xCond ) ); - - ConditionPtr pCon( new Condition( &m_aConditionPlayground, *this, m_rController ) ); - pCon->setCondition( xCond ); - m_aConditions.insert( m_aConditions.begin() + _nNewCondIndex, pCon ); - - pCon->SetPosSizePixel( 0, 0, impl_getConditionWidth(), 0, WINDOW_POSSIZE_WIDTH ); - } - catch( const Exception& ) - { - DBG_UNHANDLED_EXCEPTION(); - } - - impl_conditionCountChanged(); - - impl_ensureConditionVisible( _nNewCondIndex ); - } - - // ----------------------------------------------------------------------------- - void ConditionalFormattingDialog::impl_focusCondition( size_t _nCondIndex ) - { - OSL_PRECOND( _nCondIndex < impl_getConditionCount(), - "ConditionalFormattingDialog::impl_focusCondition: illegal index!" ); - - impl_ensureConditionVisible( _nCondIndex ); - m_aConditions[ _nCondIndex ]->GrabFocus(); - } - - // ----------------------------------------------------------------------------- - void ConditionalFormattingDialog::impl_deleteCondition_nothrow( size_t _nCondIndex ) - { - UpdateLocker aLockUpdates( *this ); - - OSL_PRECOND( _nCondIndex < impl_getConditionCount(), - "ConditionalFormattingDialog::impl_deleteCondition_nothrow: illegal index!" ); - - bool bLastCondition = ( impl_getConditionCount() == 1 ); - - bool bSetNewFocus = false; - size_t nNewFocusIndex( _nCondIndex ); - try - { - if ( !bLastCondition ) - m_xCopy->removeByIndex( _nCondIndex ); - - Conditions::iterator pos = m_aConditions.begin() + _nCondIndex; - if ( bLastCondition ) - { - Reference< XFormatCondition > xFormatCondition( m_xCopy->getByIndex( 0 ), UNO_QUERY_THROW ); - xFormatCondition->setFormula( ::rtl::OUString() ); - (*pos)->setCondition( xFormatCondition ); - } - else - { - bSetNewFocus = (*pos)->HasChildPathFocus(); - m_bDeletingCondition = true; - m_aConditions.erase( pos ); - m_bDeletingCondition = false; - } - - if ( bSetNewFocus ) - { - if ( nNewFocusIndex >= impl_getConditionCount() ) - nNewFocusIndex = impl_getConditionCount() - 1; - } - } - catch( const Exception& ) - { - DBG_UNHANDLED_EXCEPTION(); - } - - impl_conditionCountChanged(); - if ( bSetNewFocus ) - impl_focusCondition( nNewFocusIndex ); - } - - // ----------------------------------------------------------------------------- - void ConditionalFormattingDialog::impl_moveCondition_nothrow( size_t _nCondIndex, bool _bMoveUp ) - { - size_t nOldConditionIndex( _nCondIndex ); - size_t nNewConditionIndex( _bMoveUp ? _nCondIndex - 1 : _nCondIndex + 1 ); - - // do this in two steps, so we don't become inconsistent if any of the UNO actions fails - Any aMovedCondition; - ConditionPtr pMovedCondition; - try - { - aMovedCondition = m_xCopy->getByIndex( (sal_Int32)nOldConditionIndex ); - m_xCopy->removeByIndex( (sal_Int32)nOldConditionIndex ); - - Conditions::iterator aRemovePos( m_aConditions.begin() + nOldConditionIndex ); - pMovedCondition = *aRemovePos; - m_aConditions.erase( aRemovePos ); - } - catch( const Exception& ) - { - DBG_UNHANDLED_EXCEPTION(); - return; - } - - try - { - m_xCopy->insertByIndex( (sal_Int32)nNewConditionIndex, aMovedCondition ); - m_aConditions.insert( m_aConditions.begin() + nNewConditionIndex, pMovedCondition ); - } - catch( const Exception& ) - { - DBG_UNHANDLED_EXCEPTION(); - } - - // at least the two swapped conditions need to know their new index - impl_updateConditionIndicies(); - - // re-layout all conditions - Point aDummy; - impl_layoutConditions( aDummy ); - - // ensure the moved condition is visible - impl_ensureConditionVisible( nNewConditionIndex ); - } - - // ----------------------------------------------------------------------------- - long ConditionalFormattingDialog::impl_getConditionWidth() const - { - const Size aDialogSize( GetOutputSizePixel() ); - const Size aScrollBarWidth( LogicToPixel( Size( SCROLLBAR_WIDTH + UNRELATED_CONTROLS, 0 ), MAP_APPFONT ) ); - return aDialogSize.Width() - aScrollBarWidth.Width(); - } - - // ----------------------------------------------------------------------------- - IMPL_LINK( ConditionalFormattingDialog, OnScroll, ScrollBar*, /*_pNotInterestedIn*/ ) - { - size_t nFirstCondIndex( impl_getFirstVisibleConditionIndex() ); - size_t nFocusCondIndex = impl_getFocusedConditionIndex( nFirstCondIndex ); - - Point aDummy; - impl_layoutConditions( aDummy ); - - if ( nFocusCondIndex < nFirstCondIndex ) - impl_focusCondition( nFirstCondIndex ); - else if ( nFocusCondIndex >= nFirstCondIndex + MAX_CONDITIONS ) - impl_focusCondition( nFirstCondIndex + MAX_CONDITIONS - 1 ); - - return 0; - } - - // ----------------------------------------------------------------------------- - void ConditionalFormattingDialog::impl_layoutConditions( Point& _out_rBelowLastVisible ) - { - // position the condition's playground - long nConditionWidth = impl_getConditionWidth(); - long nConditionHeight = LogicToPixel( Size( 0, CONDITION_HEIGHT ), MAP_APPFONT ).Height(); - size_t nVisibleConditions = ::std::min( impl_getConditionCount(), MAX_CONDITIONS ); - Size aPlaygroundSize( nConditionWidth, nVisibleConditions * nConditionHeight ); - m_aConditionPlayground.SetSizePixel( aPlaygroundSize ); - _out_rBelowLastVisible = Point( 0, aPlaygroundSize.Height() ); - - // position the single conditions - Point aConditionPos( 0, -1 * nConditionHeight * impl_getFirstVisibleConditionIndex() ); - for ( Conditions::const_iterator cond = m_aConditions.begin(); - cond != m_aConditions.end(); - ++cond - ) - { - (*cond)->SetPosSizePixel( aConditionPos.X(), aConditionPos.Y(), nConditionWidth, nConditionHeight ); - aConditionPos.Move( 0, nConditionHeight ); - } - } - - // ----------------------------------------------------------------------------- - void ConditionalFormattingDialog::impl_layoutAll() - { - // condition's positions - Point aPos; - impl_layoutConditions( aPos ); - - // scrollbar size and visibility - m_aCondScroll.SetPosSizePixel( 0, 0, 0, aPos.Y(), WINDOW_POSSIZE_HEIGHT ); - if ( !impl_needScrollBar() ) - // normalize the position, so it can, in all situations, be used as top index - m_aCondScroll.SetThumbPos( 0 ); - - // the separator and the buttons below it - aPos += LogicToPixel( Point( 0 , RELATED_CONTROLS ), MAP_APPFONT ); - m_aSeparator.SetPosSizePixel( 0, aPos.Y(), 0, 0, WINDOW_POSSIZE_Y ); - - aPos += LogicToPixel( Point( 0 , UNRELATED_CONTROLS ), MAP_APPFONT ); - Window* pWindows[] = { &m_aPB_OK, &m_aPB_CANCEL, &m_aPB_Help }; - for ( size_t i= 0; i < SAL_N_ELEMENTS(pWindows); ++i ) - { - pWindows[i]->SetPosSizePixel( 0, aPos.Y(), 0, 0, WINDOW_POSSIZE_Y ); - } - - aPos += LogicToPixel( Point( 0, BUTTON_HEIGHT + RELATED_CONTROLS ), MAP_APPFONT ); - SetPosSizePixel( 0, 0, 0, aPos.Y(), WINDOW_POSSIZE_HEIGHT ); - } - // ----------------------------------------------------------------------------- - void ConditionalFormattingDialog::impl_initializeConditions() - { - try - { - sal_Int32 nCount = m_xCopy->getCount(); - for ( sal_Int32 i = 0; i < nCount ; ++i ) - { - ConditionPtr pCon( new Condition( &m_aConditionPlayground, *this, m_rController ) ); - Reference< XFormatCondition > xCond( m_xCopy->getByIndex(i), UNO_QUERY ); - pCon->setCondition( xCond ); - pCon->updateToolbar( xCond.get() ); - m_aConditions.push_back( pCon ); - } - } - catch(Exception&) - { - OSL_FAIL("Can not access format condition!"); - } - - impl_conditionCountChanged(); - } - - // ----------------------------------------------------------------------------- - void ConditionalFormattingDialog::applyCommand( size_t _nCondIndex, sal_uInt16 _nCommandId, const ::Color _aColor ) - { - OSL_PRECOND( _nCommandId, "ConditionalFormattingDialog::applyCommand: illegal command id!" ); - try - { - Reference< XReportControlFormat > xReportControlFormat( m_xCopy->getByIndex( _nCondIndex ), UNO_QUERY_THROW ); - - Sequence< PropertyValue > aArgs(3); - - aArgs[0].Name = REPORTCONTROLFORMAT; - aArgs[0].Value <<= xReportControlFormat; - - aArgs[1].Name = CURRENT_WINDOW; - aArgs[1].Value <<= VCLUnoHelper::GetInterface(this); - - aArgs[2].Name = PROPERTY_FONTCOLOR; - aArgs[2].Value <<= (sal_uInt32)_aColor.GetColor(); - - // we use this way to create undo actions - m_rController.executeUnChecked(_nCommandId,aArgs); - m_aConditions[ _nCondIndex ]->updateToolbar(xReportControlFormat); - } - catch( Exception& ) - { - DBG_UNHANDLED_EXCEPTION(); - } - } - - // ----------------------------------------------------------------------------- - void ConditionalFormattingDialog::moveConditionUp( size_t _nCondIndex ) - { - OSL_PRECOND( _nCondIndex > 0, "ConditionalFormattingDialog::moveConditionUp: cannot move up the first condition!" ); - if ( _nCondIndex > 0 ) - impl_moveCondition_nothrow( _nCondIndex, true ); - } - - // ----------------------------------------------------------------------------- - void ConditionalFormattingDialog::moveConditionDown( size_t _nCondIndex ) - { - OSL_PRECOND( _nCondIndex < impl_getConditionCount(), "ConditionalFormattingDialog::moveConditionDown: cannot move down the last condition!" ); - if ( _nCondIndex < impl_getConditionCount() ) - impl_moveCondition_nothrow( _nCondIndex, false ); - } - - // ----------------------------------------------------------------------------- - ::rtl::OUString ConditionalFormattingDialog::getDataField() const - { - ::rtl::OUString sDataField; - try - { - sDataField = m_xFormatConditions->getDataField(); - } - catch( const Exception& ) - { - DBG_UNHANDLED_EXCEPTION(); - } - return sDataField; - } - - // ----------------------------------------------------------------------------- - short ConditionalFormattingDialog::Execute() - { - short nRet = ModalDialog::Execute(); - if ( nRet == RET_OK ) - { - const String sUndoAction( ModuleRes( RID_STR_UNDO_CONDITIONAL_FORMATTING ) ); - const UndoContext aUndoContext( m_rController.getUndoManager(), sUndoAction ); - try - { - sal_Int32 j(0), i(0);; - for ( Conditions::const_iterator cond = m_aConditions.begin(); - cond != m_aConditions.end(); - ++cond, ++i - ) - { - Reference< XFormatCondition > xCond( m_xCopy->getByIndex(i), UNO_QUERY_THROW ); - (*cond)->fillFormatCondition( xCond ); - - if ( (*cond)->isEmpty() ) - continue; - - Reference< XFormatCondition > xNewCond; - sal_Bool bAppend = j >= m_xFormatConditions->getCount(); - if ( bAppend ) - { - xNewCond = m_xFormatConditions->createFormatCondition(); - m_xFormatConditions->insertByIndex( i, makeAny( xNewCond ) ); - } - else - xNewCond.set( m_xFormatConditions->getByIndex(j), UNO_QUERY ); - ++j; - - ::comphelper::copyProperties(xCond.get(),xNewCond.get()); - } - - for ( sal_Int32 k = m_xFormatConditions->getCount()-1; k >= j; --k ) - m_xFormatConditions->removeByIndex(k); - - ::comphelper::copyProperties( m_xCopy.get(), m_xFormatConditions.get() ); - } - catch ( const Exception& ) - { - DBG_UNHANDLED_EXCEPTION(); - nRet = RET_NO; - } - } - return nRet; - } - - // ----------------------------------------------------------------------------- - long ConditionalFormattingDialog::PreNotify( NotifyEvent& _rNEvt ) - { - switch ( _rNEvt.GetType() ) - { - case EVENT_KEYINPUT: - { - const KeyEvent* pKeyEvent( _rNEvt.GetKeyEvent() ); - const KeyCode& rKeyCode = pKeyEvent->GetKeyCode(); - if ( rKeyCode.IsMod1() && rKeyCode.IsMod2() ) - { - if ( rKeyCode.GetCode() == 0x0508 ) // - - { - impl_deleteCondition_nothrow( impl_getFocusedConditionIndex( 0 ) ); - return 1; - } - if ( rKeyCode.GetCode() == 0x0507 ) // + - { - impl_addCondition_nothrow( impl_getFocusedConditionIndex( impl_getConditionCount() - 1 ) + 1 ); - return 1; - } - } - } - break; - case EVENT_GETFOCUS: - { - if ( m_bDeletingCondition ) - break; - - const Window* pGetFocusWindow( _rNEvt.GetWindow() ); - - // determine whether the new focus window is part of an (currently invisible) condition - const Window* pConditionCandidate = pGetFocusWindow->GetParent(); - const Window* pPlaygroundCandidate = pConditionCandidate ? pConditionCandidate->GetParent() : NULL; - while ( ( pPlaygroundCandidate ) - && ( pPlaygroundCandidate != this ) - && ( pPlaygroundCandidate != &m_aConditionPlayground ) - ) - { - pConditionCandidate = pConditionCandidate->GetParent(); - pPlaygroundCandidate = pConditionCandidate ? pConditionCandidate->GetParent() : NULL; - } - if ( pPlaygroundCandidate == &m_aConditionPlayground ) - { - impl_ensureConditionVisible( dynamic_cast< const Condition& >( *pConditionCandidate ).getConditionIndex() ); - } - } - break; - } - - return ModalDialog::PreNotify( _rNEvt ); - } - - // ----------------------------------------------------------------------------- - size_t ConditionalFormattingDialog::impl_getFirstVisibleConditionIndex() const - { - return (size_t)m_aCondScroll.GetThumbPos(); - } - - // ----------------------------------------------------------------------------- - size_t ConditionalFormattingDialog::impl_getLastVisibleConditionIndex() const - { - return ::std::min( impl_getFirstVisibleConditionIndex() + MAX_CONDITIONS, impl_getConditionCount() ) - 1; - } - - // ----------------------------------------------------------------------------- - size_t ConditionalFormattingDialog::impl_getFocusedConditionIndex( sal_Int32 _nFallBackIfNone ) const - { - size_t nIndex( 0 ); - for ( Conditions::const_iterator cond = m_aConditions.begin(); - cond != m_aConditions.end(); - ++cond, ++nIndex - ) - { - if ( (*cond)->HasChildPathFocus() ) - return nIndex; - } - return _nFallBackIfNone; - } - - // ----------------------------------------------------------------------------- - void ConditionalFormattingDialog::impl_updateScrollBarRange() - { - long nMax = ( impl_getConditionCount() > MAX_CONDITIONS ) ? impl_getConditionCount() - MAX_CONDITIONS + 1 : 0; - - m_aCondScroll.SetRangeMin( 0 ); - m_aCondScroll.SetRangeMax( nMax ); - m_aCondScroll.SetVisibleSize( 1 ); - } - - // ----------------------------------------------------------------------------- - void ConditionalFormattingDialog::impl_scrollTo( size_t _nTopCondIndex ) - { - OSL_PRECOND( _nTopCondIndex + MAX_CONDITIONS <= impl_getConditionCount(), - "ConditionalFormattingDialog::impl_scrollTo: illegal index!" ); - m_aCondScroll.SetThumbPos( _nTopCondIndex ); - OnScroll( &m_aCondScroll ); - } - - // ----------------------------------------------------------------------------- - void ConditionalFormattingDialog::impl_ensureConditionVisible( size_t _nCondIndex ) - { - OSL_PRECOND( _nCondIndex < impl_getConditionCount(), - "ConditionalFormattingDialog::impl_ensureConditionVisible: illegal index!" ); - - if ( _nCondIndex < impl_getFirstVisibleConditionIndex() ) - impl_scrollTo( _nCondIndex ); - else if ( _nCondIndex > impl_getLastVisibleConditionIndex() ) - impl_scrollTo( _nCondIndex - MAX_CONDITIONS + 1 ); - } - -// ............................................................................. -} // rptui -// ............................................................................. - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/reportdesign/source/ui/dlg/CondFormat.hrc b/reportdesign/source/ui/dlg/CondFormat.hrc deleted file mode 100644 index 1f3eac2b0..000000000 --- a/reportdesign/source/ui/dlg/CondFormat.hrc +++ /dev/null @@ -1,85 +0,0 @@ -/************************************************************************* - * - * 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. - * - ************************************************************************/ -#ifndef RPTUI_CONDFORMAT_HRC -#define RPTUI_CONDFORMAT_HRC - -#define CHECKBOX_HEIGHT 8 -#define FIXEDTEXT_WIDTH 60 -#define FIXEDTEXT_HEIGHT 8 -#define EDIT_WIDTH 75 -#define RELATED_CONTROLS 4 -#define UNRELATED_CONTROLS 7 -#define EDIT_HEIGHT 12 -#define BUTTON_HEIGHT 14 -#define BUTTON_WIDTH 50 -#define COND_TYPE_WIDTH 50 -#define COND_OP_WIDTH 75 -#define OPERATOR_SEP_WIDTH 15 -#define SCROLLBAR_WIDTH 8 -#define IMAGE_BUTTON_WIDTH 12 -#define IMAGE_BUTTON_HEIGHT 14 - - -#define FL_FORMAT 1 -#define FL_CONDITION_HEADER 2 -#define CRTL_FORMAT_PREVIEW 3 -#define TB_FORMAT 4 -#define LB_COND_TYPE 5 -#define LB_OP 6 -#define ED_CONDITION_LHS 7 -#define FT_AND 8 -#define PB_OK 9 -#define PB_CANCEL 10 -#define PB_HELP 11 -#define FL_SEPARATOR1 12 -#define ED_CONDITION_RHS 13 -#define CT_CONDITION 14 -#define CT_DEFAULT 15 -#define CT_CONDITION_1 16 -#define CT_CONDITION_2 17 -#define SB_ALL_CONDITIONS 18 -#define WND_COND_PLAYGROUND 19 -#define BTN_MOVE_UP 20 -#define BTN_MOVE_DOWN 21 -#define BTN_ADD_CONDITION 22 -#define BTN_REMOVE_CONDITION 23 - -#define ROW_0_POS ( RELATED_CONTROLS ) -#define ROW_0_HEIGTH ( FIXEDTEXT_HEIGHT ) -#define ROW_1_POS ( ROW_0_POS + ROW_0_HEIGTH + UNRELATED_CONTROLS ) -#define ROW_1_HEIGTH ( EDIT_HEIGHT ) -#define ROW_2_POS ( ROW_1_POS + ROW_1_HEIGTH + UNRELATED_CONTROLS ) -#define ROW_2_HEIGHT ( 3 * FIXEDTEXT_HEIGHT ) -#define ROW_3_POS ( ROW_2_POS + ROW_2_HEIGHT + RELATED_CONTROLS ) -#define ROW_3_HEIGHT ( IMAGE_BUTTON_HEIGHT ) - -#define CONDITION_WIDTH ( 6*UNRELATED_CONTROLS + COND_TYPE_WIDTH + COND_OP_WIDTH + 2*EDIT_WIDTH + OPERATOR_SEP_WIDTH ) -#define COND_DLG_WIDTH ( CONDITION_WIDTH + SCROLLBAR_WIDTH + UNRELATED_CONTROLS ) -#define CONDITION_HEIGHT ( ROW_3_POS + ROW_3_HEIGHT ) -#define COND_DLG_HEIGHT ( CONDITION_HEIGHT + 3*RELATED_CONTROLS + BUTTON_HEIGHT + 1 ) - -#endif // RPTUI_PAGENUMBER_HRC diff --git a/reportdesign/source/ui/dlg/CondFormat.src b/reportdesign/source/ui/dlg/CondFormat.src deleted file mode 100644 index 5e3c9929b..000000000 --- a/reportdesign/source/ui/dlg/CondFormat.src +++ /dev/null @@ -1,385 +0,0 @@ -/************************************************************************* - * - * 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. - * - ************************************************************************/ -#include "CondFormat.hrc" -#include "RptResId.hrc" -#include "helpids.hrc" -#ifndef _GLOBLMN_HRC -#include <svx/globlmn.hrc> -#endif -#include "rptui_slotid.hrc" - -Control WIN_CONDITION -{ - Size = MAP_APPFONT ( CONDITION_WIDTH , CONDITION_HEIGHT ) ; - HelpId = HID_RPT_COND_DLG; - DialogControl = TRUE; - Hide = TRUE; - - FixedLine FL_CONDITION_HEADER - { - Pos = MAP_APPFONT ( RELATED_CONTROLS, ROW_0_POS ) ; - Size = MAP_APPFONT ( CONDITION_WIDTH - 2 * RELATED_CONTROLS, ROW_0_HEIGTH ) ; - }; - - ListBox LB_COND_TYPE - { - Pos = MAP_APPFONT ( UNRELATED_CONTROLS, ROW_1_POS ) ; - Size = MAP_APPFONT( COND_TYPE_WIDTH, 60 ); - Border = TRUE; - DropDown = TRUE; - TabStop = TRUE; - Sort = FALSE; - StringList [ en-US ] = - { - < "Field Value Is" ; Default ; > ; - < "Expression Is" ; Default ; > ; - }; - }; - - ListBox LB_OP - { - Pos = MAP_APPFONT ( UNRELATED_CONTROLS + COND_TYPE_WIDTH + UNRELATED_CONTROLS, ROW_1_POS ) ; - Size = MAP_APPFONT( COND_OP_WIDTH, 60 ); - Border = TRUE; - DropDown = TRUE; - TabStop = TRUE; - Sort = FALSE; - StringList [ en-US ] = - { - < "between" ; 0; > ; - < "not between" ; 1; > ; - < "equal to" ; 2; > ; - < "not equal to" ; 3; > ; - < "greater than" ; 4; > ; - < "less than" ; 5; > ; - < "greater than or equal to" ; 6; > ; - < "less than or equal to" ; 7; > ; - }; - }; - - Edit ED_CONDITION_LHS - { - Pos = MAP_APPFONT ( 3*UNRELATED_CONTROLS + COND_TYPE_WIDTH + COND_OP_WIDTH, ROW_1_POS ) ; - Size = MAP_APPFONT( EDIT_WIDTH, EDIT_HEIGHT ); - Border = TRUE; - TabStop = TRUE; - }; - - FixedText FT_AND - { - Pos = MAP_APPFONT ( 4*UNRELATED_CONTROLS + COND_TYPE_WIDTH + COND_OP_WIDTH + EDIT_WIDTH, - ROW_1_POS + ( FIXEDTEXT_HEIGHT - EDIT_HEIGHT ) / 2 ); - Size = MAP_APPFONT( OPERATOR_SEP_WIDTH , FIXEDTEXT_HEIGHT ); - Text [ en-US ] = "and"; - }; - - Edit ED_CONDITION_RHS - { - Pos = MAP_APPFONT ( 5*UNRELATED_CONTROLS + COND_TYPE_WIDTH + COND_OP_WIDTH + EDIT_WIDTH + OPERATOR_SEP_WIDTH, - ROW_1_POS ); - Size = MAP_APPFONT( EDIT_WIDTH, EDIT_HEIGHT ); - Border = TRUE; - TabStop = TRUE; - }; - - ImageButton BTN_MOVE_UP - { - Pos = MAP_APPFONT ( CONDITION_WIDTH - UNRELATED_CONTROLS - IMAGE_BUTTON_WIDTH, ROW_1_POS ) ; - Size = MAP_APPFONT ( IMAGE_BUTTON_WIDTH, IMAGE_BUTTON_HEIGHT ) ; - TabStop = TRUE ; - Symbol = IMAGEBUTTON_ARROW_UP ; - }; - - ImageButton BTN_MOVE_DOWN - { - Pos = MAP_APPFONT ( CONDITION_WIDTH - UNRELATED_CONTROLS - IMAGE_BUTTON_WIDTH, ROW_1_POS + IMAGE_BUTTON_HEIGHT + RELATED_CONTROLS ) ; - Size = MAP_APPFONT ( IMAGE_BUTTON_WIDTH, IMAGE_BUTTON_HEIGHT ) ; - TabStop = TRUE ; - Symbol = IMAGEBUTTON_ARROW_DOWN ; - }; - - ToolBox TB_FORMAT - { - Pos = MAP_APPFONT ( UNRELATED_CONTROLS + RELATED_CONTROLS, ROW_2_POS ) ; - ButtonType = BUTTON_SYMBOL; - Align = BOXALIGN_TOP; - HelpId = HID_RPT_CONDFORMAT_TB; - Customize = FALSE; - ItemList = - { - ToolBoxItem - { - ITEM_FORMAT_ATTR_CHAR_WEIGHT - Checkable = TRUE; - }; - ToolBoxItem - { - ITEM_FORMAT_ATTR_CHAR_POSTURE - Checkable = TRUE; - }; - ToolBoxItem - { - ITEM_FORMAT_ATTR_CHAR_UNDERLINE - Checkable = TRUE; - }; - ToolBoxItem - { - Type = TOOLBOXITEM_SEPARATOR; - }; - ToolBoxItem - { - ITEM_TOOLBAR_BACKGROUND_COLOR - DropDown = TRUE; - }; - ToolBoxItem - { - ITEM_TOOLBAR_ATTR_CHAR_COLOR - Identifier = SID_ATTR_CHAR_COLOR2; - Command = ".uno:FontColor"; - }; - ToolBoxItem - { - ITEM_FORMAT_CHAR_DLG - }; - }; - }; - - Window CRTL_FORMAT_PREVIEW - { - Pos = MAP_APPFONT ( 2*UNRELATED_CONTROLS, ROW_2_POS ) ; - Size = MAP_APPFONT ( CONDITION_WIDTH - UNRELATED_CONTROLS, ROW_2_HEIGHT ) ; - Border = TRUE ; - HelpId = HID_RPT_CRTL_FORMAT_PREVIEW; - Text [ en-US ] = "Example"; - }; - - PushButton BTN_ADD_CONDITION - { - Pos = MAP_APPFONT( CONDITION_WIDTH - 2*UNRELATED_CONTROLS - 2*IMAGE_BUTTON_WIDTH - RELATED_CONTROLS, ROW_3_POS ); - Size = MAP_APPFONT( IMAGE_BUTTON_WIDTH, IMAGE_BUTTON_HEIGHT ); - Text = "+"; - }; - - PushButton BTN_REMOVE_CONDITION - { - Pos = MAP_APPFONT( CONDITION_WIDTH - 2*UNRELATED_CONTROLS - 2*IMAGE_BUTTON_WIDTH - RELATED_CONTROLS, ROW_3_POS ); - Size = MAP_APPFONT( IMAGE_BUTTON_WIDTH, IMAGE_BUTTON_HEIGHT ); - Text = "-"; - }; -}; - -ModalDialog RID_CONDFORMAT -{ - OutputSize = TRUE ; - SVLook = TRUE ; - Size = MAP_APPFONT ( COND_DLG_WIDTH, COND_DLG_HEIGHT ) ; - Text [ en-US ] = "Conditional Formatting" ; - HelpId = HID_RPT_CONDFORMAT_DLG; - Moveable = TRUE ; - Closeable = TRUE ; - - Window WND_COND_PLAYGROUND - { - Pos = MAP_APPFONT ( 0, 0 ) ; - Size = MAP_APPFONT ( CONDITION_WIDTH, CONDITION_HEIGHT ) ; - DialogControl = TRUE; - Hide = FALSE; - }; - - FixedLine FL_SEPARATOR1 - { - Pos = MAP_APPFONT ( RELATED_CONTROLS, CONDITION_HEIGHT + RELATED_CONTROLS ) ; - Size = MAP_APPFONT ( CONDITION_WIDTH - 2*RELATED_CONTROLS , 1 ) ; - }; - - OKButton PB_OK - { - Pos = MAP_APPFONT ( CONDITION_WIDTH - 3*BUTTON_WIDTH - 2*UNRELATED_CONTROLS - RELATED_CONTROLS, CONDITION_HEIGHT + 2*RELATED_CONTROLS + 1) ; - Size = MAP_APPFONT ( BUTTON_WIDTH , BUTTON_HEIGHT ) ; - TabStop = TRUE ; - DefButton = TRUE ; - }; - - CancelButton PB_CANCEL - { - Pos = MAP_APPFONT ( CONDITION_WIDTH - 2*BUTTON_WIDTH - 2*UNRELATED_CONTROLS , CONDITION_HEIGHT + 2*RELATED_CONTROLS + 1) ; - Size = MAP_APPFONT ( BUTTON_WIDTH , BUTTON_HEIGHT ) ; - TabStop = TRUE ; - }; - - HelpButton PB_HELP - { - TabStop = TRUE ; - Pos = MAP_APPFONT ( CONDITION_WIDTH - BUTTON_WIDTH - UNRELATED_CONTROLS, CONDITION_HEIGHT + 2*RELATED_CONTROLS + 1) ; - Size = MAP_APPFONT ( BUTTON_WIDTH , BUTTON_HEIGHT ) ; - Text [ en-US ] = "~Help"; - }; - - ScrollBar SB_ALL_CONDITIONS - { - Pos = MAP_APPFONT ( CONDITION_WIDTH, RELATED_CONTROLS ) ; - Size = MAP_APPFONT ( SCROLLBAR_WIDTH, CONDITION_HEIGHT + RELATED_CONTROLS ) ; - }; -}; - -String STR_NUMBERED_CONDITION -{ - Text [ en-US ] = "Condition $number$"; -}; - -String STR_COLOR_WHITE -{ - Text [ en-US ] = "White" ; -}; -String STR_CHARCOLOR -{ - Text [ en-US ] = "Font color" ; -}; -String STR_CHARBACKGROUND -{ - Text [ en-US ] = "Background"; -}; -String STR_TRANSPARENT -{ - Text [ en-US ] = "No Fill" ; -}; - -#define MASKCOLOR MaskColor = Color { Red = 0xFFFF; Green = 0x0000; Blue = 0xFFFF; } - -//------------------------------------------------------------------------- -ImageList IMG_CONDFORMAT_DLG_SC -{ - MASKCOLOR; - FileList = - { - < "cmd/sc_bold.png" ; SID_ATTR_CHAR_WEIGHT ; > ; - < "cmd/sc_italic.png" ; SID_ATTR_CHAR_POSTURE ; > ; - < "cmd/sc_underline.png" ; SID_ATTR_CHAR_UNDERLINE ; > ; - < "cmd/sc_backgroundcolor.png" ; SID_BACKGROUND_COLOR ; > ; - < "cmd/sc_fontcolor.png" ; SID_ATTR_CHAR_COLOR2 ; > ; - < "cmd/sc_fontdialog.png" ; SID_CHAR_DLG ; > ; - }; -}; - -ImageList IMG_CONDFORMAT_DLG_LC -{ - MASKCOLOR; - FileList = - { - < "cmd/lc_bold.png" ; SID_ATTR_CHAR_WEIGHT ; > ; - < "cmd/lc_italic.png" ; SID_ATTR_CHAR_POSTURE ; > ; - < "cmd/lc_underline.png" ; SID_ATTR_CHAR_UNDERLINE ; > ; - < "cmd/lc_backgroundcolor.png" ; SID_BACKGROUND_COLOR ; > ; - < "cmd/lc_fontcolor.png" ; SID_ATTR_CHAR_COLOR2 ; > ; - < "cmd/lc_fontdialog.png" ; SID_CHAR_DLG ; > ; - }; -}; - -ImageList 31000 -{ - MASKCOLOR; - prefix = "sc"; - IdList = {05500;}; - IdCount = 1; - -}; - -ToolBox RID_TB_SORTING -{ - Pos = MAP_APPFONT ( 0,0 ) ; - ButtonType = BUTTON_SYMBOL; - Align = BOXALIGN_TOP; - Customize = FALSE; - ItemList = - { - ToolBoxItem - { - Identifier = SID_FM_SORTUP; - Text [ en-US ] = "Sort Ascending" ; - Checkable = TRUE; - }; - ToolBoxItem - { - Identifier = SID_FM_SORTDOWN; - Text [ en-US ] = "Sort Descending" ; - Checkable = TRUE; - }; - ToolBoxItem - { - Identifier = SID_FM_REMOVE_FILTER_SORT; - Text [ en-US ] = "Remove sorting" ; - }; - ToolBoxItem - { - Type = TOOLBOXITEM_SEPARATOR; - }; - ToolBoxItem - { - Identifier = SID_ADD_CONTROL_PAIR; - Text [ en-US ] = "Insert" ; - }; - }; -}; - -ImageList IMG_ADDFIELD_DLG_SC -{ - MASKCOLOR; - FileList = - { - < "cmd/sc_sortup.png" ; SID_FM_SORTUP ; > ; - < "cmd/sc_sortdown.png" ; SID_FM_SORTDOWN ; > ; - < "cmd/sc_removefiltersort.png" ; SID_FM_REMOVE_FILTER_SORT ; > ; - }; -}; - -ImageList IMG_ADDFIELD_DLG_LC -{ - MASKCOLOR; - FileList = - { - < "cmd/lc_sortup.png" ; SID_FM_SORTUP ; > ; - < "cmd/lc_sortdown.png" ; SID_FM_SORTDOWN ; > ; - < "cmd/lc_removefiltersort.png" ; SID_FM_REMOVE_FILTER_SORT ; > ; - }; -}; - -FixedLine ADDFIELD_FL_HELP_SEPARATOR -{ - SVLook = TRUE ; - Pos = MAP_APPFONT ( RELATED_CONTROLS , RELATED_CONTROLS ) ; - Size = MAP_APPFONT ( RELATED_CONTROLS , RELATED_CONTROLS ) ; - Text [ en-US ] = "Help"; -}; - -FixedText ADDFIELD_HELP_FIELD -{ - SVLook = TRUE ; - Pos = MAP_APPFONT ( RELATED_CONTROLS , RELATED_CONTROLS ) ; - Size = MAP_APPFONT ( RELATED_CONTROLS , RELATED_CONTROLS ) ; - WordBreak = TRUE; - Text [ en-US ] = "Highlight the fields to insert into the selected section of the template, then click Insert or press Enter."; -}; diff --git a/reportdesign/source/ui/dlg/Condition.cxx b/reportdesign/source/ui/dlg/Condition.cxx deleted file mode 100644 index 2825cba14..000000000 --- a/reportdesign/source/ui/dlg/Condition.cxx +++ /dev/null @@ -1,733 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * 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. - * - ************************************************************************/ -#include "precompiled_rptui.hxx" - -#include "Condition.hxx" -#include "UITools.hxx" -#include "CondFormat.hxx" -#include "CondFormat.hrc" -#include "RptResId.hrc" -#include "ReportController.hxx" -#include "ModuleHelper.hxx" -#include "ColorChanger.hxx" -#include "RptResId.hrc" -#include "helpids.hrc" -#include "reportformula.hxx" -#include <com/sun/star/util/URL.hpp> -#include <com/sun/star/beans/PropertyValue.hpp> -#include <com/sun/star/ui/XUIConfigurationManager.hpp> -#include <com/sun/star/ui/XModuleUIConfigurationManagerSupplier.hpp> -#include <com/sun/star/ui/XImageManager.hpp> -#include <com/sun/star/awt/FontDescriptor.hpp> -#include <com/sun/star/ui/ImageType.hpp> - -#define ITEMID_COLOR -#define ITEMID_BRUSH -#include <svx/tbcontrl.hxx> -#include <svx/svxids.hrc> -#include <svx/xtable.hxx> -#include <svx/tbxcolorupdate.hxx> -#include <toolkit/helper/vclunohelper.hxx> -#include <svtools/imgdef.hxx> -#include <unotools/pathoptions.hxx> -#include <vcl/svapp.hxx> -#include <vcl/bmpacc.hxx> -#include <tools/diagnose_ex.h> -#include <rtl/ustrbuf.hxx> - -namespace rptui -{ -using namespace ::com::sun::star; -using namespace ::com::sun::star::uno; -using namespace ::com::sun::star::beans; - -ConditionField::ConditionField( Condition* _pParent, const ResId& _rResId ) : Edit(_pParent,_rResId) -,m_pParent(_pParent) -,m_aFormula(this) -{ - m_pSubEdit = new Edit(this,0); - SetSubEdit(m_pSubEdit); - m_pSubEdit->EnableRTL( sal_False ); - m_pSubEdit->SetPosPixel( Point() ); - - m_aFormula.SetText(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("..."))); - m_aFormula.SetClickHdl( LINK( this, ConditionField, OnFormula ) ); - m_aFormula.Show(); - m_pSubEdit->Show(); - Resize(); -} -// ----------------------------------------------------------------------------- -ConditionField::~ConditionField() -{ - SetSubEdit(NULL); - delete m_pSubEdit; -} -// ----------------------------------------------------------------------------- -void ConditionField::Resize() -{ - Edit::Resize(); - const Size aSize = GetOutputSizePixel(); - const Size aButtonSize( LogicToPixel( Size( 12, 0 ), MAP_APPFONT ).Width(),aSize.Height()); - const Point aButtonPos(aSize.Width() - aButtonSize.Width(), 0); - m_aFormula.SetPosSizePixel(aButtonPos,aButtonSize); - m_pSubEdit->SetPosSizePixel(Point(0,0),Size(aButtonPos.X() ,aSize.Height())); -} -// ----------------------------------------------------------------------------- -IMPL_LINK( ConditionField, OnFormula, Button*, /*_pClickedButton*/ ) -{ - ::rtl::OUString sFormula(m_pSubEdit->GetText()); - const sal_Int32 nLen = sFormula.getLength(); - if ( nLen ) - { - ReportFormula aFormula( sFormula ); - sFormula = aFormula.getCompleteFormula(); - } - uno::Reference< awt::XWindow> xInspectorWindow = VCLUnoHelper::GetInterface(this); - uno::Reference< beans::XPropertySet> xProp(m_pParent->getController().getRowSet(),uno::UNO_QUERY); - if ( rptui::openDialogFormula_nothrow( sFormula, m_pParent->getController().getContext(),xInspectorWindow,xProp ) ) - { - ReportFormula aFormula( sFormula ); - m_pSubEdit->SetText(aFormula.getUndecoratedContent()); - } - return 0L; -} -//======================================================================== -// class SvxColorWindow_Impl -------------------------------------------------- -//======================================================================== -#ifndef WB_NO_DIRECTSELECT -#define WB_NO_DIRECTSELECT ((WinBits)0x04000000) -#endif - -#define PALETTE_X 10 -#define PALETTE_Y 10 -#define PALETTE_SIZE (PALETTE_X * PALETTE_Y) -class OColorPopup : public FloatingWindow -{ - DECL_LINK( SelectHdl, void * ); - Condition* m_pCondition; - sal_uInt16 m_nSlotId; -public: - OColorPopup(Window* _pParent,Condition* _pCondition); - ValueSet m_aColorSet; - - virtual void KeyInput( const KeyEvent& rKEvt ); - virtual void Resize(); - - void StartSelection(); - void SetSlotId(sal_uInt16 _nSlotId); -}; -// ----------------------------------------------------------------------------- -OColorPopup::OColorPopup(Window* _pParent,Condition* _pCondition) -:FloatingWindow(_pParent, WinBits( WB_BORDER | WB_STDFLOATWIN | WB_3DLOOK|WB_DIALOGCONTROL )) -,m_pCondition(_pCondition) -,m_nSlotId(0) -,m_aColorSet( this, WinBits( WB_ITEMBORDER | WB_NAMEFIELD | WB_3DLOOK | WB_NO_DIRECTSELECT) ) -{ - m_aColorSet.SetHelpId( HID_RPT_POPUP_COLOR_CTRL ); - SetHelpId( HID_RPT_POPUP_COLOR ); - const Size aSize12( 13, 13 ); - ::std::auto_ptr<XColorTable> pColorTable(new XColorTable( SvtPathOptions().GetPalettePath() )); - short i = 0; - long nCount = pColorTable->Count(); - XColorEntry* pEntry = NULL; - Color aColWhite( COL_WHITE ); - String aStrWhite( ModuleRes(STR_COLOR_WHITE) ); - - if ( nCount > PALETTE_SIZE ) - // Show scrollbar if more than PALLETTE_SIZE colors are available - m_aColorSet.SetStyle( m_aColorSet.GetStyle() | WB_VSCROLL ); - - for ( i = 0; i < nCount; i++ ) - { - pEntry = pColorTable->GetColor(i); - m_aColorSet.InsertItem( i+1, pEntry->GetColor(), pEntry->GetName() ); - } - - while ( i < PALETTE_SIZE ) - { - // fill empty elements if less then PALLETTE_SIZE colors are available - m_aColorSet.InsertItem( i+1, aColWhite, aStrWhite ); - i++; - } - - m_aColorSet.SetSelectHdl( LINK( this, OColorPopup, SelectHdl ) ); - m_aColorSet.SetColCount( PALETTE_X ); - m_aColorSet.SetLineCount( PALETTE_Y ); - Size aSize = m_aColorSet.CalcWindowSizePixel( aSize12 ); - aSize.Width() += 4; - aSize.Height() += 4; - SetOutputSizePixel( aSize ); - m_aColorSet.Show(); -} -// ----------------------------------------------------------------------------- -void OColorPopup::KeyInput( const KeyEvent& rKEvt ) -{ - m_aColorSet.KeyInput(rKEvt); -} - -// ----------------------------------------------------------------------------- -void OColorPopup::Resize() -{ - Size aSize = GetOutputSizePixel(); - aSize.Width() -= 4; - aSize.Height() -= 4; - m_aColorSet.SetPosSizePixel( Point(2,2), aSize ); -} - -// ----------------------------------------------------------------------------- -void OColorPopup::StartSelection() -{ - m_aColorSet.StartSelection(); -} -// ----------------------------------------------------------------------------- -void OColorPopup::SetSlotId(sal_uInt16 _nSlotId) -{ - m_nSlotId = _nSlotId; - if ( SID_ATTR_CHAR_COLOR_BACKGROUND == _nSlotId || SID_BACKGROUND_COLOR == _nSlotId ) - { - m_aColorSet.SetStyle( m_aColorSet.GetStyle() | WB_NONEFIELD ); - m_aColorSet.SetText( String(ModuleRes( STR_TRANSPARENT )) ); - } -} -// ----------------------------------------------------------------------------- -IMPL_LINK( OColorPopup, SelectHdl, void *, EMPTYARG ) -{ - sal_uInt16 nItemId = m_aColorSet.GetSelectItemId(); - Color aColor( nItemId == 0 ? Color( COL_TRANSPARENT ) : m_aColorSet.GetItemColor( nItemId ) ); - - /* #i33380# Moved the following line above the Dispatch() calls. - This instance may be deleted in the meantime (i.e. when a dialog is opened - while in Dispatch()), accessing members will crash in this case. */ - m_aColorSet.SetNoSelection(); - - if ( IsInPopupMode() ) - EndPopupMode(); - - m_pCondition->ApplyCommand( m_nSlotId, aColor ); - return 0; -} - -// ============================================================================= -// = Condition -// ============================================================================= -// ----------------------------------------------------------------------------- -Condition::Condition( Window* _pParent, IConditionalFormatAction& _rAction, ::rptui::OReportController& _rController ) - :Control(_pParent, ModuleRes(WIN_CONDITION)) - ,m_rController( _rController ) - ,m_rAction( _rAction ) - ,m_aHeader(this, ModuleRes(FL_CONDITION_HEADER)) - ,m_aConditionType(this, ModuleRes(LB_COND_TYPE)) - ,m_aOperationList( this, ModuleRes(LB_OP)) - ,m_aCondLHS(this, ModuleRes(ED_CONDITION_LHS)) - ,m_aOperandGlue(this, ModuleRes(FT_AND)) - ,m_aCondRHS(this, ModuleRes(ED_CONDITION_RHS)) - ,m_aActions(this, ModuleRes(TB_FORMAT)) - ,m_aPreview(this, ModuleRes(CRTL_FORMAT_PREVIEW)) - ,m_aMoveUp( this, ModuleRes( BTN_MOVE_UP ) ) - ,m_aMoveDown( this, ModuleRes( BTN_MOVE_DOWN ) ) - ,m_aAddCondition( this, ModuleRes( BTN_ADD_CONDITION ) ) - ,m_aRemoveCondition( this, ModuleRes( BTN_REMOVE_CONDITION ) ) - ,m_pColorFloat(NULL) - ,m_pBtnUpdaterFontColor(NULL) - ,m_pBtnUpdaterBackgroundColor(NULL) - ,m_nCondIndex( 0 ) - ,m_nLastKnownWindowWidth( -1 ) - ,m_bInDestruction( false ) -{ - FreeResource(); - m_aActions.SetStyle(m_aActions.GetStyle()|WB_LINESPACING); - m_aCondLHS.GrabFocus(); - - m_aConditionType.SetSelectHdl( LINK( this, Condition, OnTypeSelected ) ); - - m_aOperationList.SetDropDownLineCount( 10 ); - m_aOperationList.SetSelectHdl( LINK( this, Condition, OnOperationSelected ) ); - - m_aActions.SetSelectHdl(LINK(this, Condition, OnFormatAction)); - m_aActions.SetDropdownClickHdl( LINK( this, Condition, DropdownClick ) ); - setToolBox(&m_aActions); - - m_aMoveUp.SetClickHdl( LINK( this, Condition, OnConditionAction ) ); - m_aMoveDown.SetClickHdl( LINK( this, Condition, OnConditionAction ) ); - m_aAddCondition.SetClickHdl( LINK( this, Condition, OnConditionAction ) ); - m_aRemoveCondition.SetClickHdl( LINK( this, Condition, OnConditionAction ) ); - - m_aMoveUp.SetStyle( m_aMoveUp.GetStyle() | WB_NOPOINTERFOCUS ); - m_aMoveDown.SetStyle( m_aMoveDown.GetStyle() | WB_NOPOINTERFOCUS ); - m_aAddCondition.SetStyle( m_aMoveUp.GetStyle() | WB_NOPOINTERFOCUS | WB_CENTER | WB_VCENTER ); - m_aRemoveCondition.SetStyle( m_aMoveDown.GetStyle() | WB_NOPOINTERFOCUS | WB_CENTER | WB_VCENTER ); - - Font aFont( m_aAddCondition.GetFont() ); - aFont.SetWeight( WEIGHT_BOLD ); - m_aAddCondition.SetFont( aFont ); - m_aRemoveCondition.SetFont( aFont ); - - m_aOperandGlue.SetStyle( m_aOperandGlue.GetStyle() | WB_VCENTER ); - - m_aConditionType.SelectEntryPos( 0 ); - m_aOperationList.SelectEntryPos( 0 ); - - // the toolbar got its site automatically, ensure that the preview is positioned - // right of it - Size aRelatedControls( LogicToPixel( Size( RELATED_CONTROLS, 0 ), MAP_APPFONT ) ); - Point aToolbarPos( m_aActions.GetPosPixel() ); - Size aToolbarSize( m_aActions.GetSizePixel() ); - m_aPreview.SetPosSizePixel( aToolbarPos.X() + aToolbarSize.Width() + 2 * aRelatedControls.Width(), - 0, 0, 0, WINDOW_POSSIZE_X ); - - // ensure the toolbar is vertically centered, relative to the preview - Size aPreviewSize( m_aPreview.GetSizePixel() ); - m_aActions.SetPosSizePixel( 0, aToolbarPos.Y() + ( aPreviewSize.Height() - aToolbarSize.Height() ) / 2, 0, 0, WINDOW_POSSIZE_Y ); - - m_pBtnUpdaterBackgroundColor = new ::svx::ToolboxButtonColorUpdater( - SID_BACKGROUND_COLOR, SID_BACKGROUND_COLOR, &m_aActions ); - m_pBtnUpdaterFontColor = new ::svx::ToolboxButtonColorUpdater( - SID_ATTR_CHAR_COLOR2, SID_ATTR_CHAR_COLOR2, &m_aActions, TBX_UPDATER_MODE_CHAR_COLOR_NEW ); - - Show(); - - impl_layoutAll(); - - ConditionalExpressionFactory::getKnownConditionalExpressions( m_aConditionalExpressions ); -} - -// ----------------------------------------------------------------------------- -Condition::~Condition() -{ - m_bInDestruction = true; - - delete m_pColorFloat; - delete m_pBtnUpdaterFontColor; - delete m_pBtnUpdaterBackgroundColor; -} -// ----------------------------------------------------------------------------- -IMPL_LINK( Condition, DropdownClick, ToolBox*, /*pToolBar*/ ) -{ - sal_uInt16 nId( m_aActions.GetCurItemId() ); - if ( !m_pColorFloat ) - m_pColorFloat = new OColorPopup(&m_aActions,this); - - sal_uInt16 nTextId = 0; - switch(nId) - { - case SID_ATTR_CHAR_COLOR2: - nTextId = STR_CHARCOLOR; - break; - case SID_BACKGROUND_COLOR: - nTextId = STR_CHARBACKGROUND; - break; - default: - break; - } - if ( nTextId ) - m_pColorFloat->SetText(String(ModuleRes(nTextId))); - m_pColorFloat->SetSlotId(nId); - m_pColorFloat->SetPosPixel(m_aActions.GetItemPopupPosition(nId,m_pColorFloat->GetSizePixel())); - m_pColorFloat->StartPopupMode(&m_aActions); - m_pColorFloat->StartSelection(); - - return 1; -} -//------------------------------------------------------------------ -IMPL_LINK( Condition, OnFormatAction, ToolBox*, /*NOTINTERESTEDIN*/ ) -{ - Color aCol(COL_AUTO); - ApplyCommand(m_aActions.GetCurItemId(),aCol); - return 0L; -} - -//------------------------------------------------------------------ -IMPL_LINK( Condition, OnConditionAction, Button*, _pClickedButton ) -{ - if ( _pClickedButton == &m_aMoveUp ) - m_rAction.moveConditionUp( getConditionIndex() ); - else if ( _pClickedButton == &m_aMoveDown ) - m_rAction.moveConditionDown( getConditionIndex() ); - else if ( _pClickedButton == &m_aAddCondition ) - m_rAction.addCondition( getConditionIndex() ); - else if ( _pClickedButton == &m_aRemoveCondition ) - m_rAction.deleteCondition( getConditionIndex() ); - return 0L; -} - -//------------------------------------------------------------------------------ -void Condition::ApplyCommand( sal_uInt16 _nCommandId, const ::Color& _rColor) -{ - if ( _nCommandId == SID_ATTR_CHAR_COLOR2 ) - m_pBtnUpdaterFontColor->Update( _rColor ); - else if ( _nCommandId == SID_BACKGROUND_COLOR ) - m_pBtnUpdaterBackgroundColor->Update( _rColor ); - - m_rAction.applyCommand( m_nCondIndex, _nCommandId, _rColor ); -} -//------------------------------------------------------------------------------ -ImageList Condition::getImageList(sal_Int16 _eBitmapSet) const -{ - sal_Int16 nN = IMG_CONDFORMAT_DLG_SC; - if ( _eBitmapSet == SFX_SYMBOLS_SIZE_LARGE ) - nN = IMG_CONDFORMAT_DLG_LC; - return ImageList(ModuleRes(nN)); -} -//------------------------------------------------------------------ -void Condition::resizeControls(const Size& _rDiff) -{ - // we use large images so we must change them - if ( _rDiff.Width() || _rDiff.Height() ) - { - Invalidate(); - } -} -// ----------------------------------------------------------------------------- -void Condition::Paint( const Rectangle& rRect ) -{ - Control::Paint(rRect); - - // draw border - const StyleSettings& rStyleSettings = GetSettings().GetStyleSettings(); - ColorChanger aColors( this, rStyleSettings.GetShadowColor(), rStyleSettings.GetDialogColor() ); - DrawRect( impl_getToolBarBorderRect() ); -} -// ----------------------------------------------------------------------------- -void Condition::StateChanged( StateChangedType nType ) -{ - Control::StateChanged( nType ); - - if ( nType == STATE_CHANGE_CONTROLBACKGROUND ) - { - // Check if we need to get new images for normal/high contrast mode - checkImageList(); - } - else if ( nType == STATE_CHANGE_TEXT ) - { - // The physical toolbar changed its outlook and shows another logical toolbar! - // We have to set the correct high contrast mode on the new tbx manager. - checkImageList(); - } -} -// ----------------------------------------------------------------------------- -void Condition::DataChanged( const DataChangedEvent& rDCEvt ) -{ - Control::DataChanged( rDCEvt ); - - if ((( rDCEvt.GetType() == DATACHANGED_SETTINGS ) || - ( rDCEvt.GetType() == DATACHANGED_DISPLAY )) && - ( rDCEvt.GetFlags() & SETTINGS_STYLE )) - { - // Check if we need to get new images for normal/high contrast mode - checkImageList(); - } -} - -// ----------------------------------------------------------------------------- -void Condition::GetFocus() -{ - Control::GetFocus(); - if ( !m_bInDestruction ) - m_aCondLHS.GrabFocus(); -} - -// ----------------------------------------------------------------------------- -void Condition::Resize() -{ - Control::Resize(); - impl_layoutAll(); -} - -// ----------------------------------------------------------------------------- -Rectangle Condition::impl_getToolBarBorderRect() const -{ - const Point aToolbarPos( m_aActions.GetPosPixel() ); - const Size aToolbarSize( m_aActions.GetSizePixel() ); - const Size aRelatedControls = LogicToPixel( Size( RELATED_CONTROLS, RELATED_CONTROLS ), MAP_APPFONT ); - - Rectangle aBorderRect( aToolbarPos, aToolbarSize ); - aBorderRect.Left() -= aRelatedControls.Width(); - aBorderRect.Top() -= aRelatedControls.Height(); - aBorderRect.Right() += aRelatedControls.Width(); - aBorderRect.Bottom() += aRelatedControls.Height(); - - return aBorderRect; -} - -// ----------------------------------------------------------------------------- -void Condition::impl_layoutAll() -{ - // if our width changed, resize/-position some controls - const Size aSize( GetOutputSizePixel() ); - if ( aSize.Width() == m_nLastKnownWindowWidth ) - return; - - m_nLastKnownWindowWidth = aSize.Width(); - - const Size aRelatedControls( LogicToPixel( Size( RELATED_CONTROLS, RELATED_CONTROLS ), MAP_APPFONT ) ); - const Size aUnrelatedControls( LogicToPixel( Size( UNRELATED_CONTROLS, 0 ), MAP_APPFONT ) ); - const Point aRow1( LogicToPixel( Point( 0, ROW_1_POS ), MAP_APPFONT ) ); - const Point aRow3( LogicToPixel( Point( 0, ROW_3_POS ), MAP_APPFONT ) ); - - // resize the header line - m_aHeader.SetPosSizePixel( 0, 0, aSize.Width() - 2 * aRelatedControls.Width(), 0, WINDOW_POSSIZE_WIDTH ); - - // position the up/down buttons - const Size aButtonSize( LogicToPixel( Size( IMAGE_BUTTON_WIDTH, IMAGE_BUTTON_HEIGHT ), MAP_APPFONT ) ); - Point aButtonPos( aSize.Width() - aUnrelatedControls.Width() - aButtonSize.Width(), aRow1.Y() ); - m_aMoveUp.SetPosSizePixel( aButtonPos.X(), aButtonPos.Y(), aButtonSize.Width(), aButtonSize.Height() ); - aButtonPos.Move( 0, aButtonSize.Height() + aRelatedControls.Height() ); - m_aMoveDown.SetPosSizePixel( aButtonPos.X(), aButtonPos.Y(), aButtonSize.Width(), aButtonSize.Height() ); - - // resize the preview - const long nNewPreviewRight = aButtonPos.X() - aRelatedControls.Width(); - - const Point aPreviewPos( m_aPreview.GetPosPixel() ); - OSL_ENSURE( aPreviewPos.X() < nNewPreviewRight, "Condition::impl_layoutAll: being *that* small should not be allowed!" ); - m_aPreview.SetPosSizePixel( 0, 0, nNewPreviewRight - aPreviewPos.X(), 0, WINDOW_POSSIZE_WIDTH ); - - // position the add/remove buttons - aButtonPos = Point( nNewPreviewRight - aButtonSize.Width(), aRow3.Y() ); - m_aRemoveCondition.SetPosSizePixel( aButtonPos.X(), aButtonPos.Y(), aButtonSize.Width(), aButtonSize.Height() ); - aButtonPos.Move( -( aButtonSize.Width() + aRelatedControls.Width() ), 0 ); - m_aAddCondition.SetPosSizePixel( aButtonPos.X(), aButtonPos.Y(), aButtonSize.Width(), aButtonSize.Height() ); - - // layout the operands input controls - impl_layoutOperands(); -} - -// ----------------------------------------------------------------------------- -IMPL_LINK( Condition, OnTypeSelected, ListBox*, /*_pNotInterestedIn*/ ) -{ - impl_layoutOperands(); - return 0L; -} - -// ----------------------------------------------------------------------------- -IMPL_LINK( Condition, OnOperationSelected, ListBox*, /*_pNotInterestedIn*/ ) -{ - impl_layoutOperands(); - return 0L; -} - -// ----------------------------------------------------------------------------- -void Condition::impl_layoutOperands() -{ - const ConditionType eType( impl_getCurrentConditionType() ); - const ComparisonOperation eOperation( impl_getCurrentComparisonOperation() ); - - const bool bIsExpression = ( eType == eExpression ); - const bool bHaveRHS = - ( ( eType == eFieldValueComparison ) - && ( ( eOperation == eBetween ) - || ( eOperation == eNotBetween ) - ) - ); - - const Size aRelatedControls( LogicToPixel( Size( RELATED_CONTROLS, 0 ), MAP_APPFONT ) ); - const Rectangle aPreviewRect( m_aPreview.GetPosPixel(), m_aPreview.GetSizePixel() ); - - // the "condition type" list box - const Rectangle aCondTypeRect( m_aConditionType.GetPosPixel(), m_aConditionType.GetSizePixel() ); - const Point aOpListPos( aCondTypeRect.Right() + aRelatedControls.Width(), aCondTypeRect.Top() ); - const Size aOpListSize( LogicToPixel( Size( COND_OP_WIDTH, 60 ), MAP_APPFONT ) ); - m_aOperationList.SetPosSizePixel( aOpListPos.X(), aOpListPos.Y(),aOpListSize.Width(), aOpListSize.Height() ); - m_aOperationList.Show( !bIsExpression ); - - // the LHS input field - Point aLHSPos( aOpListPos.X() + aOpListSize.Width() + aRelatedControls.Width(), aOpListPos.Y() ); - if ( bIsExpression ) - aLHSPos.X() = aOpListPos.X(); - Size aLHSSize( LogicToPixel( Size( EDIT_WIDTH, EDIT_HEIGHT ), MAP_APPFONT ) ); - if ( !bHaveRHS ) - aLHSSize.Width() = aPreviewRect.Right() - aLHSPos.X(); - m_aCondLHS.SetPosSizePixel( aLHSPos.X(), aLHSPos.Y(), aLHSSize.Width(), aLHSSize.Height() ); - - if ( bHaveRHS ) - { - // the "and" text being the glue between LHS and RHS - const Point aOpGluePos( aLHSPos.X() + aLHSSize.Width() + aRelatedControls.Width(), aLHSPos.Y() ); - const Size aOpGlueSize( m_aOperandGlue.GetTextWidth( m_aOperandGlue.GetText() ) + aRelatedControls.Width(), aLHSSize.Height() ); - m_aOperandGlue.SetPosSizePixel( aOpGluePos.X(), aOpGluePos.Y(), aOpGlueSize.Width(), aOpGlueSize.Height() ); - - // the RHS input field - const Point aRHSPos( aOpGluePos.X() + aOpGlueSize.Width() + aRelatedControls.Width(), aOpGluePos.Y() ); - const Size aRHSSize( aPreviewRect.Right() - aRHSPos.X(), aLHSSize.Height() ); - m_aCondRHS.SetPosSizePixel( aRHSPos.X(), aRHSPos.Y(), aRHSSize.Width(), aRHSSize.Height() ); - } - - m_aOperandGlue.Show( bHaveRHS ); - m_aCondRHS.Show( bHaveRHS ); -} - -// ----------------------------------------------------------------------------- -void Condition::impl_setCondition( const ::rtl::OUString& _rConditionFormula ) -{ - // determine the condition's type and comparison operation - ConditionType eType( eFieldValueComparison ); - ComparisonOperation eOperation( eBetween ); - - // LHS and RHS, matched below - ::rtl::OUString sLHS, sRHS; - - if ( _rConditionFormula.getLength() ) - { - // the unprefixed expression which forms the condition - ReportFormula aFormula( _rConditionFormula ); - OSL_ENSURE( aFormula.getType() == ReportFormula::Expression, "Condition::setCondition: illegal formula!" ); - ::rtl::OUString sExpression; - if ( aFormula.getType() == ReportFormula::Expression ) - sExpression = aFormula.getExpression(); - // as fallback, if the below matching does not succeed, assume - // the whole expression is the LHS - eType = eExpression; - sLHS = sExpression; - - // the data field (or expression) to which our control is bound - const ReportFormula aFieldContentFormula( m_rAction.getDataField() ); - const ::rtl::OUString sUnprefixedFieldContent( aFieldContentFormula.getBracketedFieldOrExpression() ); - - // check whether one of the Field Value Expression Factories recognizes the expression - for ( ConditionalExpressions::const_iterator exp = m_aConditionalExpressions.begin(); - exp != m_aConditionalExpressions.end(); - ++exp - ) - { - if ( exp->second->matchExpression( sExpression, sUnprefixedFieldContent, sLHS, sRHS ) ) - { - eType = eFieldValueComparison; - eOperation = exp->first; - break; - } - } - } - - // update UI - m_aConditionType.SelectEntryPos( (sal_uInt16)eType ); - m_aOperationList.SelectEntryPos( (sal_uInt16)eOperation ); - m_aCondLHS.SetText( sLHS ); - m_aCondRHS.SetText( sRHS ); - - // re-layout - impl_layoutOperands(); -} - -// ----------------------------------------------------------------------------- -void Condition::setCondition( const uno::Reference< report::XFormatCondition >& _rxCondition ) -{ - OSL_PRECOND( _rxCondition.is(), "Condition::setCondition: empty condition object!" ); - if ( !_rxCondition.is() ) - return; - - ::rtl::OUString sConditionFormula; - try - { - if ( _rxCondition.is() ) - sConditionFormula = _rxCondition->getFormula(); - } - catch( const Exception& ) - { - DBG_UNHANDLED_EXCEPTION(); - } - impl_setCondition( sConditionFormula ); - updateToolbar( _rxCondition.get() ); -} - -// ----------------------------------------------------------------------------- -void Condition::updateToolbar(const uno::Reference< report::XReportControlFormat >& _xReportControlFormat) -{ - OSL_ENSURE(_xReportControlFormat.is(),"XReportControlFormat is NULL!"); - if ( _xReportControlFormat.is() ) - { - sal_uInt16 nItemCount = m_aActions.GetItemCount(); - for (sal_uInt16 j = 0; j< nItemCount; ++j) - { - sal_uInt16 nItemId = m_aActions.GetItemId(j); - m_aActions.CheckItem( nItemId, m_rController.isFormatCommandEnabled( nItemId, _xReportControlFormat ) ); - } - - try - { - Font aBaseFont( Application::GetDefaultDevice()->GetSettings().GetStyleSettings().GetAppFont() ); - SvxFont aFont( VCLUnoHelper::CreateFont( _xReportControlFormat->getFontDescriptor(), aBaseFont ) ); - aFont.SetHeight( OutputDevice::LogicToLogic( Size( 0, (sal_Int32)aFont.GetHeight() ), MAP_POINT, MAP_TWIP ).Height()); - aFont.SetEmphasisMark( static_cast< FontEmphasisMark >( _xReportControlFormat->getControlTextEmphasis() ) ); - aFont.SetRelief( static_cast< FontRelief >( _xReportControlFormat->getCharRelief() ) ); - aFont.SetColor( _xReportControlFormat->getCharColor() ); - m_aPreview.SetFont( aFont ); - m_aPreview.SetBackColor( _xReportControlFormat->getControlBackground() ); - m_aPreview.SetTextLineColor( Color( _xReportControlFormat->getCharUnderlineColor() ) ); - } - catch( const Exception& ) - { - DBG_UNHANDLED_EXCEPTION(); - } - } -} -// ----------------------------------------------------------------------------- -void Condition::fillFormatCondition(const uno::Reference< report::XFormatCondition >& _xCondition) -{ - const ConditionType eType( impl_getCurrentConditionType() ); - const ComparisonOperation eOperation( impl_getCurrentComparisonOperation() ); - - const ::rtl::OUString sLHS( m_aCondLHS.GetText() ); - const ::rtl::OUString sRHS( m_aCondRHS.GetText() ); - - ::rtl::OUString sUndecoratedFormula( sLHS ); - - if ( eType == eFieldValueComparison ) - { - ReportFormula aFieldContentFormula( m_rAction.getDataField() ); - ::rtl::OUString sUnprefixedFieldContent( aFieldContentFormula.getBracketedFieldOrExpression() ); - - PConditionalExpression pFactory( m_aConditionalExpressions[ eOperation ] ); - sUndecoratedFormula = pFactory->assembleExpression( sUnprefixedFieldContent, sLHS, sRHS ); - } - - ReportFormula aFormula( ReportFormula::Expression, sUndecoratedFormula ); - _xCondition->setFormula( aFormula.getCompleteFormula() ); -} -// ----------------------------------------------------------------------------- -void Condition::setConditionIndex( size_t _nCondIndex, size_t _nCondCount ) -{ - m_nCondIndex = _nCondIndex; - String sHeader( ModuleRes( STR_NUMBERED_CONDITION ) ); - sHeader.SearchAndReplaceAscii( "$number$", String::CreateFromInt32( _nCondIndex + 1 ) ); - m_aHeader.SetText( sHeader ); - - m_aMoveUp.Enable( _nCondIndex > 0 ); - OSL_PRECOND( _nCondCount > 0, "Condition::setConditionIndex: having no conditions at all is nonsense!" ); - m_aMoveDown.Enable( _nCondIndex < _nCondCount - 1 ); -} - -// ----------------------------------------------------------------------------- -bool Condition::isEmpty() const -{ - return m_aCondLHS.GetText().Len() == 0; -} - -// ============================================================================= -} // rptui -// ============================================================================= - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/reportdesign/source/ui/dlg/Condition.hxx b/reportdesign/source/ui/dlg/Condition.hxx deleted file mode 100644 index f35e8ade3..000000000 --- a/reportdesign/source/ui/dlg/Condition.hxx +++ /dev/null @@ -1,198 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * 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. - * - ************************************************************************/ - -#ifndef RPTUI_CONDITION_HXX -#define RPTUI_CONDITION_HXX - -#include "conditionalexpression.hxx" - -#include <com/sun/star/report/XFormatCondition.hpp> - -#include <dbaccess/ToolBoxHelper.hxx> - -#include <svx/fntctrl.hxx> - -#include <svtools/valueset.hxx> - -#include <vcl/fixed.hxx> -#include <vcl/lstbox.hxx> -#include <vcl/field.hxx> -#include <vcl/button.hxx> -#include <vcl/toolbox.hxx> - -#include <memory> - -namespace svx { class ToolboxButtonColorUpdater; } - -namespace rptui -{ - class ConditionalFormattingDialog; - class OColorPopup; - class OReportController; - class IConditionalFormatAction; - class Condition; - - class ConditionField : public Edit - { - Condition* m_pParent; - Edit* m_pSubEdit; - PushButton m_aFormula; - - DECL_LINK( OnFormula, Button* ); - public: - ConditionField( Condition* pParent, const ResId& rResId ); - virtual ~ConditionField(); - virtual void Resize(); - }; - - //======================================================================== - //= Condition - //======================================================================== - class Condition :public Control - ,public dbaui::OToolBoxHelper - { - ::rptui::OReportController& m_rController; - IConditionalFormatAction& m_rAction; - FixedLine m_aHeader; - ListBox m_aConditionType; - ListBox m_aOperationList; - ConditionField m_aCondLHS; - FixedText m_aOperandGlue; - ConditionField m_aCondRHS; - ToolBox m_aActions; - SvxFontPrevWindow m_aPreview; - ImageButton m_aMoveUp; - ImageButton m_aMoveDown; - PushButton m_aAddCondition; - PushButton m_aRemoveCondition; - OColorPopup* m_pColorFloat; - - ::svx::ToolboxButtonColorUpdater* m_pBtnUpdaterFontColor; // updates the color below the toolbar icon - ::svx::ToolboxButtonColorUpdater* m_pBtnUpdaterBackgroundColor; - - - size_t m_nCondIndex; - long m_nLastKnownWindowWidth; - bool m_bInDestruction; - - ConditionalExpressions m_aConditionalExpressions; - - DECL_LINK( OnFormatAction, ToolBox* ); - DECL_LINK( DropdownClick, ToolBox* ); - DECL_LINK( OnConditionAction, Button* ); - - public: - Condition( Window* _pParent, IConditionalFormatAction& _rAction, ::rptui::OReportController& _rController ); - virtual ~Condition(); - - /** will be called when the id of the image list is needed. - @param _eBitmapSet - <svtools/imgdef.hxx> - */ - virtual ImageList getImageList(sal_Int16 _eBitmapSet) const; - - /** will be called when the controls need to be resized. - */ - virtual void resizeControls(const Size& _rDiff); - - /** sets the props at the control - @param _xCondition the source - */ - void setCondition(const com::sun::star::uno::Reference< com::sun::star::report::XFormatCondition >& _xCondition); - - /** fills from the control - _xCondition the destination - */ - void fillFormatCondition(const com::sun::star::uno::Reference< com::sun::star::report::XFormatCondition >& _xCondition); - - /** updates the toolbar - _xCondition the destination - */ - void updateToolbar(const ::com::sun::star::uno::Reference< ::com::sun::star::report::XReportControlFormat >& _xCondition); - - /// tells the condition its new index within the dialog's condition array - void setConditionIndex( size_t _nCondIndex, size_t _nCondCount ); - - /// returns the condition's index within the dialog's condition array - size_t getConditionIndex() const { return m_nCondIndex; } - - /** determines whether the condition is actually empty - */ - bool isEmpty() const; - - /** forward to the parent class - */ - void ApplyCommand(sal_uInt16 _nCommandId, const ::Color& _aColor ); - - inline ::rptui::OReportController& getController() const { return m_rController; } - - protected: - virtual void StateChanged( StateChangedType nStateChange ); - virtual void DataChanged( const DataChangedEvent& rDCEvt ); - virtual void Paint( const Rectangle& rRect ); - virtual void Resize(); - virtual void GetFocus(); - - private: - void impl_layoutAll(); - void impl_layoutOperands(); - - /// determines the rectangle to be occupied by the toolbar, including the border drawn around it - Rectangle impl_getToolBarBorderRect() const; - - inline ConditionType - impl_getCurrentConditionType() const; - - inline ComparisonOperation - impl_getCurrentComparisonOperation() const; - - void impl_setCondition( const ::rtl::OUString& _rConditionFormula ); - - private: - DECL_LINK( OnTypeSelected, ListBox* ); - DECL_LINK( OnOperationSelected, ListBox* ); - }; - - // ------------------------------------------------------------------------- - inline ConditionType Condition::impl_getCurrentConditionType() const - { - return sal::static_int_cast< ConditionType >( m_aConditionType.GetSelectEntryPos() ); - } - - // ------------------------------------------------------------------------- - inline ComparisonOperation Condition::impl_getCurrentComparisonOperation() const - { - return sal::static_int_cast< ComparisonOperation >( m_aOperationList.GetSelectEntryPos() ); - } - -// ============================================================================= -} // namespace rptui -// ============================================================================= -#endif // RPTUI_CONDITION_HXX - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/reportdesign/source/ui/dlg/DateTime.cxx b/reportdesign/source/ui/dlg/DateTime.cxx deleted file mode 100644 index 0712a413f..000000000 --- a/reportdesign/source/ui/dlg/DateTime.cxx +++ /dev/null @@ -1,256 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * 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. - * - ************************************************************************/ -#include "precompiled_rptui.hxx" -#include "DateTime.hxx" -#include "DateTime.hrc" -#include <com/sun/star/beans/XPropertySet.hpp> -#include <tools/debug.hxx> -#include "RptResId.hrc" -#include "rptui_slotid.hrc" -#include "ModuleHelper.hxx" -#include "helpids.hrc" -#include <vcl/msgbox.hxx> -#include <svx/globlmn.hrc> -#include <svx/svxids.hrc> -#include <connectivity/dbconversion.hxx> -#include <unotools/syslocale.hxx> -#include "UITools.hxx" -#include "RptDef.hxx" -#include "uistrings.hrc" -#include "ReportController.hxx" -#include <com/sun/star/report/XFormattedField.hpp> -#include <com/sun/star/util/Time.hpp> -#include <com/sun/star/util/NumberFormat.hpp> -#include <com/sun/star/util/XNumberFormatPreviewer.hpp> -#include <com/sun/star/util/XNumberFormatTypes.hpp> -#include <com/sun/star/i18n/NumberFormatIndex.hpp> -#include <comphelper/numbers.hxx> -#include <algorithm> - -namespace rptui -{ -using namespace ::com::sun::star; -using namespace ::comphelper; - -DBG_NAME( rpt_ODateTimeDialog ) -//======================================================================== -// class ODateTimeDialog -//======================================================================== -ODateTimeDialog::ODateTimeDialog( Window* _pParent - ,const uno::Reference< report::XSection >& _xHoldAlive - ,OReportController* _pController) - : ModalDialog( _pParent, ModuleRes(RID_DATETIME_DLG) ) - ,m_aDate(this, ModuleRes(CB_DATE ) ) - ,m_aFTDateFormat(this, ModuleRes(FT_DATE_FORMAT ) ) - ,m_aDateListBox(this, ModuleRes(LB_DATE_TYPE ) ) - ,m_aFL0(this, ModuleRes(FL_SEPARATOR0 ) ) - ,m_aTime(this, ModuleRes(CB_TIME ) ) - ,m_aFTTimeFormat(this, ModuleRes(FT_TIME_FORMAT ) ) - ,m_aTimeListBox(this, ModuleRes(LB_TIME_TYPE ) ) - ,m_aFL1(this, ModuleRes(FL_SEPARATOR1) ) - ,m_aPB_OK(this, ModuleRes(PB_OK)) - ,m_aPB_CANCEL(this, ModuleRes(PB_CANCEL)) - ,m_aPB_Help(this, ModuleRes(PB_HELP)) - ,m_aDateControlling() - ,m_aTimeControlling() - ,m_pController(_pController) - ,m_xHoldAlive(_xHoldAlive) -{ - DBG_CTOR( rpt_ODateTimeDialog,NULL); - - try - { - SvtSysLocale aSysLocale; - m_nLocale = aSysLocale.GetLocaleData().getLocale(); - // Fill listbox with all well known date types - InsertEntry(util::NumberFormat::DATE); - InsertEntry(util::NumberFormat::TIME); - } - catch(uno::Exception&) - { - } - - m_aDateListBox.SetDropDownLineCount(20); - m_aDateListBox.SelectEntryPos(0); - - m_aTimeListBox.SetDropDownLineCount(20); - m_aTimeListBox.SelectEntryPos(0); - - // use nice enhancement, to toggle enable/disable if a checkbox is checked or not - m_aDateControlling.enableOnCheckMark( m_aDate, m_aFTDateFormat, m_aDateListBox); - m_aTimeControlling.enableOnCheckMark( m_aTime, m_aFTTimeFormat, m_aTimeListBox); - - CheckBox* pCheckBoxes[] = { &m_aDate,&m_aTime}; - for ( size_t i = 0 ; i < SAL_N_ELEMENTS(pCheckBoxes); ++i) - pCheckBoxes[i]->SetClickHdl(LINK(this,ODateTimeDialog,CBClickHdl)); - - FreeResource(); -} -// ----------------------------------------------------------------------------- - void ODateTimeDialog::InsertEntry(sal_Int16 _nNumberFormatId) - { - const bool bTime = util::NumberFormat::TIME == _nNumberFormatId; - ListBox* pListBox = &m_aDateListBox; - if ( bTime ) - pListBox = &m_aTimeListBox; - - const uno::Reference< util::XNumberFormatter> xNumberFormatter = m_pController->getReportNumberFormatter(); - const uno::Reference< util::XNumberFormats> xFormats = xNumberFormatter->getNumberFormatsSupplier()->getNumberFormats(); - const uno::Sequence<sal_Int32> aFormatKeys = xFormats->queryKeys(_nNumberFormatId,m_nLocale,sal_True); - const sal_Int32* pIter = aFormatKeys.getConstArray(); - const sal_Int32* pEnd = pIter + aFormatKeys.getLength(); - for(;pIter != pEnd;++pIter) - { - const sal_Int16 nPos = pListBox->InsertEntry(getFormatStringByKey(*pIter,xFormats,bTime)); - pListBox->SetEntryData(nPos, reinterpret_cast<void*>(*pIter)); - } - } -//------------------------------------------------------------------------ -ODateTimeDialog::~ODateTimeDialog() -{ - DBG_DTOR( rpt_ODateTimeDialog,NULL); -} -// ----------------------------------------------------------------------------- -short ODateTimeDialog::Execute() -{ - DBG_CHKTHIS( rpt_ODateTimeDialog,NULL); - short nRet = ModalDialog::Execute(); - if ( nRet == RET_OK && (m_aDate.IsChecked() || m_aTime.IsChecked()) ) - { - try - { - sal_Int32 nLength = 0; - uno::Sequence<beans::PropertyValue> aValues( 6 ); - aValues[nLength].Name = PROPERTY_SECTION; - aValues[nLength++].Value <<= m_xHoldAlive; - - aValues[nLength].Name = PROPERTY_TIME_STATE; - aValues[nLength++].Value <<= m_aTime.IsChecked(); - - aValues[nLength].Name = PROPERTY_DATE_STATE; - aValues[nLength++].Value <<= m_aDate.IsChecked(); - - aValues[nLength].Name = PROPERTY_FORMATKEYDATE; - aValues[nLength++].Value <<= getFormatKey(sal_True); - - aValues[nLength].Name = PROPERTY_FORMATKEYTIME; - aValues[nLength++].Value <<= getFormatKey(sal_False); - - sal_Int32 nWidth = 0; - if ( m_aDate.IsChecked() ) - { - String sDateFormat = m_aDateListBox.GetEntry( m_aDateListBox.GetSelectEntryPos() ); - nWidth = LogicToLogic(PixelToLogic(Size(GetCtrlTextWidth(sDateFormat),0)).Width(),GetMapMode().GetMapUnit(),MAP_100TH_MM); - } - if ( m_aTime.IsChecked() ) - { - String sDateFormat = m_aTimeListBox.GetEntry( m_aTimeListBox.GetSelectEntryPos() ); - nWidth = ::std::max<sal_Int32>(LogicToLogic(PixelToLogic(Size(GetCtrlTextWidth(sDateFormat),0)).Width(),GetMapMode().GetMapUnit(),MAP_100TH_MM),nWidth); - } - - if ( nWidth > 4000 ) - { - aValues[nLength].Name = PROPERTY_WIDTH; - aValues[nLength++].Value <<= nWidth; - } - - m_pController->executeChecked(SID_DATETIME,aValues); - } - catch(uno::Exception&) - { - nRet = RET_NO; - } - } - return nRet; -} -// ----------------------------------------------------------------------------- -::rtl::OUString ODateTimeDialog::getFormatStringByKey(::sal_Int32 _nNumberFormatKey,const uno::Reference< util::XNumberFormats>& _xFormats,bool _bTime) -{ - uno::Reference< beans::XPropertySet> xFormSet = _xFormats->getByKey(_nNumberFormatKey); - OSL_ENSURE(xFormSet.is(),"XPropertySet is null!"); - ::rtl::OUString sFormat; - xFormSet->getPropertyValue(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("FormatString"))) >>= sFormat; - - double nValue = 0; - if ( _bTime ) - { - Time aCurrentTime; - nValue = ::dbtools::DBTypeConversion::toDouble(::dbtools::DBTypeConversion::toTime(aCurrentTime.GetTime())); - } - else - { - Date aCurrentDate; - static ::com::sun::star::util::Date STANDARD_DB_DATE(30,12,1899); - nValue = ::dbtools::DBTypeConversion::toDouble(::dbtools::DBTypeConversion::toDate(static_cast<sal_Int32>(aCurrentDate.GetDate())),STANDARD_DB_DATE); - } - - uno::Reference< util::XNumberFormatPreviewer> xPreViewer(m_pController->getReportNumberFormatter(),uno::UNO_QUERY); - OSL_ENSURE(xPreViewer.is(),"XNumberFormatPreviewer is null!"); - return xPreViewer->convertNumberToPreviewString(sFormat,nValue,m_nLocale,sal_True); -} -// ----------------------------------------------------------------------------- -IMPL_LINK( ODateTimeDialog, CBClickHdl, CheckBox*, _pBox ) -{ - (void)_pBox; - DBG_CHKTHIS( rpt_ODateTimeDialog,NULL); - - if ( _pBox == &m_aDate || _pBox == &m_aTime) - { - sal_Bool bDate = m_aDate.IsChecked(); - sal_Bool bTime = m_aTime.IsChecked(); - if (!bDate && !bTime) - { - m_aPB_OK.Disable(); - } - else - { - m_aPB_OK.Enable(); - } - } - return 1L; -} -// ----------------------------------------------------------------------------- -sal_Int32 ODateTimeDialog::getFormatKey(sal_Bool _bDate) const -{ - DBG_CHKTHIS( rpt_ODateTimeDialog,NULL); - sal_Int32 nFormatKey; - if ( _bDate ) - { - nFormatKey = static_cast<sal_Int32>(reinterpret_cast<sal_IntPtr>(m_aDateListBox.GetEntryData( m_aDateListBox.GetSelectEntryPos() ))); - } - else - { - nFormatKey = static_cast<sal_Int32>(reinterpret_cast<sal_IntPtr>(m_aTimeListBox.GetEntryData( m_aTimeListBox.GetSelectEntryPos() ))); - } - return nFormatKey; -} -// ============================================================================= -} // rptui -// ============================================================================= - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/reportdesign/source/ui/dlg/DateTime.hrc b/reportdesign/source/ui/dlg/DateTime.hrc deleted file mode 100644 index 44d6eb6fe..000000000 --- a/reportdesign/source/ui/dlg/DateTime.hrc +++ /dev/null @@ -1,55 +0,0 @@ -/************************************************************************* - * - * 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. - * - ************************************************************************/ -#ifndef RPTUI_DATETIME_HRC -#define RPTUI_DATETIME_HRC - -#define CB_DATE (1) -#define FT_DATE_FORMAT (2) -#define LB_DATE_TYPE (3) -#define FL_SEPARATOR0 (4) -#define CB_TIME (5) -#define FT_TIME_FORMAT (6) -#define LB_TIME_TYPE (7) -#define FL_SEPARATOR1 (8) -#define PB_OK (9) -#define PB_CANCEL (10) -#define PB_HELP (11) - -#define CHECKBOX_HEIGHT 8 -#define FIXEDTEXT_HEIGHT 8 -#define RELATED_CONTROLS 4 -#define UNRELATED_CONTROLS 7 -#define EDIT_HEIGHT 12 -#define LISTBOX_HEIGHT 12 -#define BUTTON_HEIGHT 14 -#define BUTTON_WIDTH 50 -#define BROWSER_HEIGHT 75 -#define PAGE_WIDTH (RELATED_CONTROLS + 3*UNRELATED_CONTROLS + 3*BUTTON_WIDTH) -#define PAGE_HEIGHT (2*RELATED_CONTROLS + 6*UNRELATED_CONTROLS + 2*CHECKBOX_HEIGHT + 2*LISTBOX_HEIGHT + BUTTON_HEIGHT) -#define LISTBOX_WIDTH PAGE_WIDTH - 3*UNRELATED_CONTROLS - FIXEDTEXT_WIDTH - -#endif // RPTUI_DATETIME_HRC diff --git a/reportdesign/source/ui/dlg/DateTime.src b/reportdesign/source/ui/dlg/DateTime.src deleted file mode 100644 index 227aad173..000000000 --- a/reportdesign/source/ui/dlg/DateTime.src +++ /dev/null @@ -1,136 +0,0 @@ -/************************************************************************* - * - * 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. - * - ************************************************************************/ -#include "DateTime.hrc" -#include "RptResId.hrc" -#include "helpids.hrc" -#ifndef _GLOBLMN_HRC -#include <svx/globlmn.hrc> -#endif -#ifndef _SBASLTID_HRC -#include <svx/svxids.hrc> -#endif - - -ModalDialog RID_DATETIME_DLG -{ - OutputSize = TRUE ; - SVLook = TRUE ; - Size = MAP_APPFONT ( PAGE_WIDTH , PAGE_HEIGHT ) ; - Text [ en-US ] = "Date and Time" ; - HelpId = HID_RPT_DATETIME_DLG; - Moveable = TRUE ; - Closeable = TRUE ; - - CheckBox CB_DATE - { - HelpID = "reportdesign:CheckBox:RID_DATETIME_DLG:CB_DATE"; - Pos = MAP_APPFONT ( UNRELATED_CONTROLS , RELATED_CONTROLS /* + UNRELATED_CONTROLS + FIXEDTEXT_HEIGHT */) ; - Size = MAP_APPFONT ( PAGE_WIDTH - 2*UNRELATED_CONTROLS, FIXEDTEXT_HEIGHT ) ; - Check = TRUE; - Text [ en-US ] = "Include Date"; - }; - - FixedText FT_DATE_FORMAT - { - Pos = MAP_APPFONT ( RELATED_CONTROLS + 2*UNRELATED_CONTROLS, RELATED_CONTROLS + UNRELATED_CONTROLS + CHECKBOX_HEIGHT ); - Size = MAP_APPFONT( BUTTON_WIDTH - RELATED_CONTROLS, FIXEDTEXT_HEIGHT ); - Text [ en-US ] = "Format"; - }; - - ListBox LB_DATE_TYPE - { - HelpID = "reportdesign:ListBox:RID_DATETIME_DLG:LB_DATE_TYPE"; - Pos = MAP_APPFONT ( 2 * UNRELATED_CONTROLS + BUTTON_WIDTH, RELATED_CONTROLS + UNRELATED_CONTROLS + CHECKBOX_HEIGHT) ; - Size = MAP_APPFONT( PAGE_WIDTH - 3*UNRELATED_CONTROLS - BUTTON_WIDTH, 60 ); - Border = TRUE; - DropDown = TRUE; - TabStop = TRUE; - Sort = FALSE; - }; - - FixedLine FL_SEPARATOR0 - { - Pos = MAP_APPFONT ( RELATED_CONTROLS , RELATED_CONTROLS + 2*UNRELATED_CONTROLS + CHECKBOX_HEIGHT + LISTBOX_HEIGHT) ; - Size = MAP_APPFONT ( PAGE_WIDTH - 2*RELATED_CONTROLS , 1 ) ; - }; - - CheckBox CB_TIME - { - HelpID = "reportdesign:CheckBox:RID_DATETIME_DLG:CB_TIME"; - Pos = MAP_APPFONT ( UNRELATED_CONTROLS, RELATED_CONTROLS + 3*UNRELATED_CONTROLS + CHECKBOX_HEIGHT + LISTBOX_HEIGHT) ; - Size = MAP_APPFONT ( PAGE_WIDTH - 2*UNRELATED_CONTROLS, FIXEDTEXT_HEIGHT ) ; - Check = TRUE; - Text [ en-US ] = "Include Time"; - }; - - FixedText FT_TIME_FORMAT - { - Pos = MAP_APPFONT ( RELATED_CONTROLS + 2*UNRELATED_CONTROLS, RELATED_CONTROLS + 4*UNRELATED_CONTROLS + 2*CHECKBOX_HEIGHT + LISTBOX_HEIGHT); - Size = MAP_APPFONT( BUTTON_WIDTH - RELATED_CONTROLS, FIXEDTEXT_HEIGHT ); - Text [ en-US ] = "Format"; - }; - - ListBox LB_TIME_TYPE - { - HelpID = "reportdesign:ListBox:RID_DATETIME_DLG:LB_TIME_TYPE"; - Pos = MAP_APPFONT ( 2 * UNRELATED_CONTROLS + BUTTON_WIDTH, RELATED_CONTROLS + 4*UNRELATED_CONTROLS + 2*CHECKBOX_HEIGHT + LISTBOX_HEIGHT) ; - Size = MAP_APPFONT( PAGE_WIDTH - 3*UNRELATED_CONTROLS - BUTTON_WIDTH, 60 ); - Border = TRUE; - DropDown = TRUE; - TabStop = TRUE; - Sort = FALSE; - }; - - FixedLine FL_SEPARATOR1 - { - Pos = MAP_APPFONT ( RELATED_CONTROLS , RELATED_CONTROLS + 5*UNRELATED_CONTROLS + 2*CHECKBOX_HEIGHT + 2*LISTBOX_HEIGHT) ; - Size = MAP_APPFONT ( PAGE_WIDTH - 2*RELATED_CONTROLS , 1 ) ; - }; - - OKButton PB_OK - { - Pos = MAP_APPFONT ( UNRELATED_CONTROLS, RELATED_CONTROLS + 6*UNRELATED_CONTROLS + 2*CHECKBOX_HEIGHT + 2*LISTBOX_HEIGHT +1) ; - Size = MAP_APPFONT ( BUTTON_WIDTH , BUTTON_HEIGHT ) ; - TabStop = TRUE ; - DefButton = TRUE ; - }; - - CancelButton PB_CANCEL - { - Pos = MAP_APPFONT ( RELATED_CONTROLS + UNRELATED_CONTROLS + BUTTON_WIDTH , RELATED_CONTROLS + 6*UNRELATED_CONTROLS + 2*CHECKBOX_HEIGHT + 2*LISTBOX_HEIGHT +1) ; - Size = MAP_APPFONT ( BUTTON_WIDTH , BUTTON_HEIGHT ) ; - TabStop = TRUE ; - }; - - HelpButton PB_HELP - { - TabStop = TRUE ; - Pos = MAP_APPFONT ( RELATED_CONTROLS + 2*UNRELATED_CONTROLS + 2*BUTTON_WIDTH , RELATED_CONTROLS + 6*UNRELATED_CONTROLS + 2*CHECKBOX_HEIGHT + 2*LISTBOX_HEIGHT +1) ; - Size = MAP_APPFONT ( BUTTON_WIDTH , BUTTON_HEIGHT ) ; - Text [ en-US ] = "~Help"; - }; -}; diff --git a/reportdesign/source/ui/dlg/Formula.cxx b/reportdesign/source/ui/dlg/Formula.cxx deleted file mode 100644 index cb065fe92..000000000 --- a/reportdesign/source/ui/dlg/Formula.cxx +++ /dev/null @@ -1,276 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * 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_rptui.hxx" - - -//---------------------------------------------------------------------------- - -#include <vcl/svapp.hxx> -#include <vcl/mnemonic.hxx> -#include <vcl/msgbox.hxx> -#include <unotools/charclass.hxx> -#include <unotools/viewoptions.hxx> -#include <tools/urlobj.hxx> -#include <formula/formdata.hxx> -#include <formula/funcutl.hxx> -#include <formula/tokenarray.hxx> - -#include "Formula.hxx" -#include "AddField.hxx" -#include "helpids.hrc" - -//============================================================================ -namespace rptui -{ - using namespace formula; - using namespace ::com::sun::star; - -// -------------------------------------------------------------------------- -// Initialisierung / gemeinsame Funktionen fuer Dialog -// -------------------------------------------------------------------------- - -FormulaDialog::FormulaDialog(Window* pParent - , const uno::Reference<lang::XMultiServiceFactory>& _xServiceFactory - , const ::boost::shared_ptr< IFunctionManager >& _pFunctionMgr - , const ::rtl::OUString& _sFormula - , const ::com::sun::star::uno::Reference < ::com::sun::star::beans::XPropertySet >& _xRowSet) - : FormulaModalDialog( pParent, false,false,false,this,_pFunctionMgr.get(),this) - ,m_aFunctionManager(_pFunctionMgr) - ,m_pFormulaData(new FormEditData()) - ,m_pAddField(NULL) - ,m_xRowSet(_xRowSet) - ,m_pEdit(NULL) - ,m_sFormula(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("="))) - ,m_nStart(0) - ,m_nEnd(1) -{ - if ( _sFormula.getLength() > 0 ) - { - if ( _sFormula.getStr()[0] != '=' ) - m_sFormula += String(_sFormula); - else - m_sFormula = _sFormula; - } - m_xParser.set(_xServiceFactory->createInstance(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.report.pentaho.SOFormulaParser"))),uno::UNO_QUERY); - if ( m_xParser.is() ) - m_xOpCodeMapper = m_xParser->getFormulaOpCodeMapper(); - fill(); -} - -void FormulaDialog::notifyChange() -{ -} -// ----------------------------------------------------------------------------- -void FormulaDialog::fill() -{ - SetMeText(m_sFormula); - Update(m_sFormula); - CheckMatrix(m_sFormula); - Update(); -} - -FormulaDialog::~FormulaDialog() -{ - if ( m_pAddField ) - { - SvtViewOptions aDlgOpt( E_WINDOW, String::CreateFromAscii( HID_RPT_FIELD_SEL_WIN ) ); - aDlgOpt.SetWindowState(::rtl::OStringToOUString(m_pAddField->GetWindowState((WINDOWSTATE_MASK_X | WINDOWSTATE_MASK_Y | WINDOWSTATE_MASK_STATE | WINDOWSTATE_MASK_MINIMIZED)), RTL_TEXTENCODING_ASCII_US)); - - ::std::auto_ptr<Window> aTemp2(m_pAddField); - m_pAddField = NULL; - } -} - -// -------------------------------------------------------------------------- -// Funktionen fuer rechte Seite -// -------------------------------------------------------------------------- -bool FormulaDialog::calculateValue( const String& rStrExp, String& rStrResult ) -{ - rStrResult = rStrExp; - return false; -} -void FormulaDialog::doClose(sal_Bool _bOk) -{ - EndDialog(_bOk ? RET_OK : RET_CANCEL); -} -void FormulaDialog::insertEntryToLRUList(const IFunctionDescription* /*_pDesc*/) -{ -} -void FormulaDialog::showReference(const String& /*_sFormula*/) -{ -} -void FormulaDialog::dispatch(sal_Bool /*_bOK*/,sal_Bool /*_bMartixChecked*/) -{ -} -void FormulaDialog::setDispatcherLock( sal_Bool /*bLock*/ ) -{ -} -void FormulaDialog::setReferenceInput(const FormEditData* /*_pData*/) -{ -} -void FormulaDialog::deleteFormData() -{ -} -void FormulaDialog::clear() -{ -} -void FormulaDialog::switchBack() -{ -} -FormEditData* FormulaDialog::getFormEditData() const -{ - return m_pFormulaData; -} -void FormulaDialog::setCurrentFormula(const String& _sReplacement) -{ - const xub_StrLen nOldLen = m_nEnd - m_nStart; - const xub_StrLen nNewLen = _sReplacement.Len(); - if (nOldLen) - m_sFormula.Erase( m_nStart, nOldLen ); - if (nNewLen) - m_sFormula.Insert( _sReplacement, m_nStart ); - m_nEnd = m_nStart + nNewLen; -} -void FormulaDialog::setSelection(xub_StrLen _nStart,xub_StrLen _nEnd) -{ - if ( _nStart <= _nEnd ) - { - m_nStart = _nStart; - m_nEnd = _nEnd; - } - else - { - m_nEnd = _nStart; - m_nStart = _nEnd; - } -} -void FormulaDialog::getSelection(xub_StrLen& _nStart,xub_StrLen& _nEnd) const -{ - _nStart = m_nStart; - _nEnd = m_nEnd; -} -String FormulaDialog::getCurrentFormula() const -{ - return m_sFormula; -} -IFunctionManager* FormulaDialog::getFunctionManager() -{ - return m_aFunctionManager.get(); -} -// ----------------------------------------------------------------------------- -void FormulaDialog::ShowReference(const String& /*_sRef*/) -{ -} -// ----------------------------------------------------------------------------- -void FormulaDialog::HideReference( sal_Bool /*bDoneRefMode*/) -{ -} -// ----------------------------------------------------------------------------- -void FormulaDialog::ReleaseFocus( RefEdit* /*pEdit*/, RefButton* /*pButton*/) -{ -} -// ----------------------------------------------------------------------------- -void FormulaDialog::ToggleCollapsed( RefEdit* _pEdit, RefButton* _pButton) -{ - ::std::pair<RefButton*,RefEdit*> aPair = RefInputStartBefore( _pEdit, _pButton ); - m_pEdit = aPair.second; - if ( m_pEdit ) - m_pEdit->Hide(); - if ( aPair.first ) - aPair.first->Hide(); - - if ( !m_pAddField ) - { - m_pAddField = new OAddFieldWindow(this,m_xRowSet); - m_pAddField->SetCreateHdl(LINK( this, FormulaDialog, OnClickHdl ) ); - SvtViewOptions aDlgOpt( E_WINDOW, String::CreateFromAscii( HID_RPT_FIELD_SEL_WIN ) ); - if ( aDlgOpt.Exists() ) - { - m_pAddField->SetWindowState( ByteString( aDlgOpt.GetWindowState().getStr(), RTL_TEXTENCODING_ASCII_US ) ); - - } - - m_pAddField->Update(); - } - RefInputStartAfter( aPair.second, aPair.first ); - m_pAddField->Show(); - -} -// ----------------------------------------------------------------------------- -IMPL_LINK( FormulaDialog, OnClickHdl, OAddFieldWindow* ,_pAddFieldDlg) -{ - const uno::Sequence< beans::PropertyValue > aArgs = _pAddFieldDlg->getSelectedFieldDescriptors(); - // we use this way to create undo actions - if ( m_pEdit && aArgs.getLength() == 1) - { - uno::Sequence< beans::PropertyValue > aValue; - aArgs[0].Value >>= aValue; - ::svx::ODataAccessDescriptor aDescriptor(aValue); - ::rtl::OUString sName; - aDescriptor[ ::svx::daColumnName ] >>= sName; - if ( sName.getLength() ) - { - sName = ::rtl::OUString (RTL_CONSTASCII_USTRINGPARAM("[")) + sName + ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("]")); - m_pEdit->SetText(sName); - } - } - m_pEdit = NULL; - _pAddFieldDlg->Hide(); - RefInputDoneAfter( sal_True ); - - return 0L; -} -// ----------------------------------------------------------------------------- -uno::Reference< sheet::XFormulaParser> FormulaDialog::getFormulaParser() const -{ - return m_xParser.get(); -} -// ----------------------------------------------------------------------------- -uno::Reference< sheet::XFormulaOpCodeMapper> FormulaDialog::getFormulaOpCodeMapper() const -{ - return m_xOpCodeMapper; -} -// ----------------------------------------------------------------------------- -table::CellAddress FormulaDialog::getReferencePosition() const -{ - return table::CellAddress(); -} -// ----------------------------------------------------------------------------- -::std::auto_ptr<formula::FormulaTokenArray> FormulaDialog::convertToTokenArray(const uno::Sequence< sheet::FormulaToken >& _aTokenList) -{ - ::std::auto_ptr<formula::FormulaTokenArray> pArray(new FormulaTokenArray()); - pArray->Fill(_aTokenList, NULL); - return pArray; -} -// ============================================================================= -} // rptui -// ============================================================================= - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/reportdesign/source/ui/dlg/GroupExchange.cxx b/reportdesign/source/ui/dlg/GroupExchange.cxx deleted file mode 100644 index 1a829cdb6..000000000 --- a/reportdesign/source/ui/dlg/GroupExchange.cxx +++ /dev/null @@ -1,79 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * 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. - * - ************************************************************************/ -#include "precompiled_rptui.hxx" -#include "GroupExchange.hxx" -#include <sot/formats.hxx> -#include <sot/storage.hxx> - -namespace rptui -{ - using namespace ::com::sun::star; - using namespace ::com::sun::star::uno; - using namespace ::com::sun::star::beans; - - sal_uInt32 OGroupExchange::getReportGroupId() - { - static sal_uInt32 s_nReportFormat = (sal_uInt32)-1; - if ( (sal_uInt32)-1 == s_nReportFormat ) - { - s_nReportFormat = SotExchange::RegisterFormatName(String::CreateFromAscii("application/x-openoffice;windows_formatname=\"reportdesign.GroupFormat\"" )); - OSL_ENSURE((sal_uInt32)-1 != s_nReportFormat, "Bad exchange id!"); - } - return s_nReportFormat; - } - OGroupExchange::OGroupExchange(const uno::Sequence< uno::Any >& _aGroupRow) - : m_aGroupRow(_aGroupRow) - { - } - // ----------------------------------------------------------------------------- - void OGroupExchange::AddSupportedFormats() - { - if ( m_aGroupRow.getLength() ) - { - AddFormat(OGroupExchange::getReportGroupId()); - } - } - // ----------------------------------------------------------------------------- - sal_Bool OGroupExchange::GetData( const ::com::sun::star::datatransfer::DataFlavor& rFlavor ) - { - sal_uLong nFormat = SotExchange::GetFormat(rFlavor); - if(nFormat == OGroupExchange::getReportGroupId() ) - { - return SetAny(uno::makeAny(m_aGroupRow),rFlavor); - } - return sal_False; - } - // ----------------------------------------------------------------------------- - void OGroupExchange::ObjectReleased() - { - m_aGroupRow.realloc(0); - } - // ----------------------------------------------------------------------------- -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/reportdesign/source/ui/dlg/GroupExchange.hxx b/reportdesign/source/ui/dlg/GroupExchange.hxx deleted file mode 100644 index 5b0863822..000000000 --- a/reportdesign/source/ui/dlg/GroupExchange.hxx +++ /dev/null @@ -1,55 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * 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. - * - ************************************************************************/ -#ifndef RPTUI_GROUP_EXCHANGE_HXX -#define RPTUI_GROUP_EXCHANGE_HXX - -#include <com/sun/star/beans/PropertyValue.hpp> -#include <cppuhelper/implbase2.hxx> -#include <svtools/transfer.hxx> -#include "GroupsSorting.hxx" - -namespace rptui -{ - /** clipboard class for group rows in the groups and sorting dialog - */ - class OGroupExchange : public TransferableHelper - { - ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any> m_aGroupRow; - public: - OGroupExchange(const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any>& _aGroupRow); - - static sal_uInt32 getReportGroupId(); - protected: - virtual void AddSupportedFormats(); - virtual sal_Bool GetData( const ::com::sun::star::datatransfer::DataFlavor& rFlavor ); - virtual void ObjectReleased(); - }; -} -#endif // RPTUI_GROUP_EXCHANGE_HXX - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/reportdesign/source/ui/dlg/GroupsSorting.cxx b/reportdesign/source/ui/dlg/GroupsSorting.cxx deleted file mode 100644 index 3d942b309..000000000 --- a/reportdesign/source/ui/dlg/GroupsSorting.cxx +++ /dev/null @@ -1,1494 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * 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. - * - ************************************************************************/ -#include "precompiled_rptui.hxx" -#include "GroupsSorting.hxx" -#include "GroupsSorting.hrc" -#include <connectivity/dbtools.hxx> -#include <svtools/editbrowsebox.hxx> -#include <com/sun/star/beans/XPropertySet.hpp> -#include <com/sun/star/container/XContainerListener.hpp> -#include <com/sun/star/report/GroupOn.hpp> -#include <com/sun/star/sdbc/DataType.hpp> - -#include <sal/macros.h> -#include <tools/debug.hxx> -#include "RptResId.hrc" -#include "rptui_slotid.hrc" -#include "ModuleHelper.hxx" -#include "helpids.hrc" - -#include <svx/globlmn.hrc> -#include <svx/svxids.hrc> -#include <svtools/imgdef.hxx> - -#include "GroupExchange.hxx" -#include "UITools.hxx" -#include "UndoActions.hxx" -#include "uistrings.hrc" -#include "ReportController.hxx" -#include "ColumnInfo.hxx" - -#include <cppuhelper/implbase1.hxx> -#include <comphelper/property.hxx> -#include <vcl/mnemonic.hxx> -#include <vcl/msgbox.hxx> -#include <algorithm> -#include <boost/bind.hpp> - -#include <cppuhelper/bootstrap.hxx> - -#define HANDLE_ID 0 -#define FIELD_EXPRESSION 1 -#define GROUPS_START_LEN 5 -#define NO_GROUP -1 - -namespace rptui -{ -using namespace ::com::sun::star; -using namespace svt; -using namespace ::comphelper; - - void lcl_addToList_throw( ComboBoxControl& _rListBox, ::std::vector<ColumnInfo>& o_aColumnList,const uno::Reference< container::XNameAccess>& i_xColumns ) - { - uno::Sequence< ::rtl::OUString > aEntries = i_xColumns->getElementNames(); - const ::rtl::OUString* pEntries = aEntries.getConstArray(); - sal_Int32 nEntries = aEntries.getLength(); - for ( sal_Int32 i = 0; i < nEntries; ++i, ++pEntries ) - { - uno::Reference< beans::XPropertySet> xColumn(i_xColumns->getByName(*pEntries),uno::UNO_QUERY_THROW); - ::rtl::OUString sLabel; - if ( xColumn->getPropertySetInfo()->hasPropertyByName(PROPERTY_LABEL) ) - xColumn->getPropertyValue(PROPERTY_LABEL) >>= sLabel; - o_aColumnList.push_back( ColumnInfo(*pEntries,sLabel) ); - if ( sLabel.getLength() ) - _rListBox.InsertEntry( sLabel ); - else - _rListBox.InsertEntry( *pEntries ); - } - } - -typedef ::svt::EditBrowseBox OFieldExpressionControl_Base; -typedef ::cppu::WeakImplHelper1< container::XContainerListener > TContainerListenerBase; -class OFieldExpressionControl : public TContainerListenerBase - ,public OFieldExpressionControl_Base -{ - ::osl::Mutex m_aMutex; - ::std::vector<sal_Int32> m_aGroupPositions; - ::std::vector<ColumnInfo> m_aColumnInfo; - ::svt::ComboBoxControl* m_pComboCell; - sal_Int32 m_nDataPos; - sal_Int32 m_nCurrentPos; - sal_uLong m_nPasteEvent; - sal_uLong m_nDeleteEvent; - OGroupsSortingDialog* m_pParent; - bool m_bIgnoreEvent; - - void fillListBox(const uno::Reference< beans::XPropertySet>& _xDest,long nRow,sal_uInt16 nColumnId); - sal_Bool SaveModified(bool _bAppend); - - OFieldExpressionControl(const OFieldExpressionControl&); // NO COPY - void operator =(const OFieldExpressionControl&); // NO ASSIGN -public: - OFieldExpressionControl( OGroupsSortingDialog* _pParent,const ResId& _rResId); - virtual ~OFieldExpressionControl(); - - // XEventListener - virtual void SAL_CALL disposing(const ::com::sun::star::lang::EventObject& Source) throw( ::com::sun::star::uno::RuntimeException ); - // XContainerListener - virtual void SAL_CALL elementInserted(const ::com::sun::star::container::ContainerEvent& rEvent) throw(::com::sun::star::uno::RuntimeException); - virtual void SAL_CALL elementReplaced(const ::com::sun::star::container::ContainerEvent& rEvent) throw(::com::sun::star::uno::RuntimeException); - virtual void SAL_CALL elementRemoved(const ::com::sun::star::container::ContainerEvent& rEvent) throw(::com::sun::star::uno::RuntimeException); - - void fillColumns(const uno::Reference< container::XNameAccess>& _xColumns); - void lateInit(); - sal_Bool IsDeleteAllowed( ); - void DeleteRows(); - void cut(); - void copy(); - void paste(); - - inline sal_Int32 getGroupPosition(sal_Int32 _nRow) const { return _nRow != BROWSER_ENDOFSELECTION ? m_aGroupPositions[_nRow] : sal_Int32(NO_GROUP); } - - inline ::svt::ComboBoxControl* getExpressionControl() const { return m_pComboCell; } - - /** returns the sequence with the selected groups - */ - uno::Sequence<uno::Any> fillSelectedGroups(); - - /** move groups given by _aGroups - */ - void moveGroups(const uno::Sequence<uno::Any>& _aGroups,sal_Int32 _nRow,sal_Bool _bSelect = sal_True); - - virtual sal_Bool CursorMoving(long nNewRow, sal_uInt16 nNewCol); - using OFieldExpressionControl_Base::GetRowCount; -protected: - virtual sal_Bool IsTabAllowed(sal_Bool bForward) const; - - virtual void InitController( ::svt::CellControllerRef& rController, long nRow, sal_uInt16 nCol ); - virtual ::svt::CellController* GetController( long nRow, sal_uInt16 nCol ); - virtual void PaintCell( OutputDevice& rDev, const Rectangle& rRect, sal_uInt16 nColId ) const; - virtual sal_Bool SeekRow( long nRow ); - virtual sal_Bool SaveModified(); - virtual String GetCellText( long nRow, sal_uInt16 nColId ) const; - virtual RowStatus GetRowStatus(long nRow) const; - - virtual void KeyInput(const KeyEvent& rEvt); - virtual void Command( const CommandEvent& rEvt ); - - // D&D - virtual void StartDrag( sal_Int8 nAction, const Point& rPosPixel ); - virtual sal_Int8 AcceptDrop( const BrowserAcceptDropEvent& rEvt ); - virtual sal_Int8 ExecuteDrop( const BrowserExecuteDropEvent& rEvt ); - - using BrowseBox::AcceptDrop; - using BrowseBox::ExecuteDrop; - -private: - - DECL_LINK( AsynchActivate, void* ); - DECL_LINK( AsynchDeactivate, void* ); - DECL_LINK( DelayedPaste, void* ); - DECL_LINK( CBChangeHdl,ComboBox*); - - void InsertRows( long nRow ); - -public: - DECL_LINK( DelayedDelete, void* ); - -}; -//======================================================================== -// class OFieldExpressionControl -//======================================================================== -DBG_NAME( rpt_OFieldExpressionControl ) -//------------------------------------------------------------------------ -OFieldExpressionControl::OFieldExpressionControl( OGroupsSortingDialog* _pParent,const ResId& _rResId ) - :EditBrowseBox( _pParent, _rResId,EBBF_NONE, WB_TABSTOP | BROWSER_COLUMNSELECTION | BROWSER_MULTISELECTION | BROWSER_AUTOSIZE_LASTCOL | - BROWSER_KEEPSELECTION | BROWSER_HLINESFULL | BROWSER_VLINESFULL) - ,m_aGroupPositions(GROUPS_START_LEN,-1) - ,m_pComboCell(NULL) - ,m_nDataPos(-1) - ,m_nCurrentPos(-1) - ,m_nPasteEvent(0) - ,m_nDeleteEvent(0) - ,m_pParent(_pParent) - ,m_bIgnoreEvent(false) -{ - DBG_CTOR( rpt_OFieldExpressionControl,NULL); - SetBorderStyle(WINDOW_BORDER_MONO); -} - -//------------------------------------------------------------------------ -OFieldExpressionControl::~OFieldExpressionControl() -{ - acquire(); - uno::Reference< report::XGroups > xGroups = m_pParent->getGroups(); - xGroups->removeContainerListener(this); - ////////////////////////////////////////////////////////////////////// - // delete events from queue - if( m_nPasteEvent ) - Application::RemoveUserEvent( m_nPasteEvent ); - if( m_nDeleteEvent ) - Application::RemoveUserEvent( m_nDeleteEvent ); - - delete m_pComboCell; - DBG_DTOR( rpt_OFieldExpressionControl,NULL); -} -//------------------------------------------------------------------------------ -uno::Sequence<uno::Any> OFieldExpressionControl::fillSelectedGroups() -{ - uno::Sequence<uno::Any> aList; - ::std::vector<uno::Any> vClipboardList; - vClipboardList.reserve(GetSelectRowCount()); - - uno::Reference<report::XGroups> xGroups = m_pParent->getGroups(); - sal_Int32 nCount = xGroups->getCount(); - if ( nCount >= 1 ) - { - for( long nIndex=FirstSelectedRow(); nIndex >= 0 ; nIndex=NextSelectedRow() ) - { - try - { - if ( m_aGroupPositions[nIndex] != NO_GROUP ) - { - uno::Reference< report::XGroup> xOrgGroup(xGroups->getByIndex(m_aGroupPositions[nIndex]),uno::UNO_QUERY); - /*uno::Reference< report::XGroup> xCopy = xGroups->createGroup(); - ::comphelper::copyProperties(xOrgGroup.get(),xCopy.get());*/ - vClipboardList.push_back( uno::makeAny(xOrgGroup) ); - } - } - catch(uno::Exception&) - { - OSL_FAIL("Can not access group!"); - } - } - if ( !vClipboardList.empty() ) - aList = uno::Sequence< uno::Any >(&vClipboardList[0], vClipboardList.size()); - } - return aList; -} -//------------------------------------------------------------------------------ -void OFieldExpressionControl::StartDrag( sal_Int8 /*_nAction*/ , const Point& /*_rPosPixel*/ ) -{ - DBG_CHKTHIS( rpt_OFieldExpressionControl,NULL); - if ( m_pParent && !m_pParent->isReadOnly( ) ) - { - uno::Sequence<uno::Any> aClipboardList = fillSelectedGroups(); - - if( aClipboardList.getLength() ) - { - OGroupExchange* pData = new OGroupExchange(aClipboardList); - uno::Reference< ::com::sun::star::datatransfer::XTransferable> xRef = pData; - pData->StartDrag(this, DND_ACTION_MOVE ); - } - } -} -//------------------------------------------------------------------------------ -sal_Int8 OFieldExpressionControl::AcceptDrop( const BrowserAcceptDropEvent& rEvt ) -{ - DBG_CHKTHIS( rpt_OFieldExpressionControl,NULL); - sal_Int8 nAction = DND_ACTION_NONE; - if ( IsEditing() ) - { - sal_uInt16 nPos = m_pComboCell->GetSelectEntryPos(); - if ( COMBOBOX_ENTRY_NOTFOUND != nPos || m_pComboCell->GetText().Len() ) - SaveModified(); - DeactivateCell(); - } - if ( IsDropFormatSupported( OGroupExchange::getReportGroupId() ) && m_pParent->getGroups()->getCount() > 1 && rEvt.GetWindow() == &GetDataWindow() ) - { - nAction = DND_ACTION_MOVE; - } - return nAction; -} -//------------------------------------------------------------------------------ -sal_Int8 OFieldExpressionControl::ExecuteDrop( const BrowserExecuteDropEvent& rEvt ) -{ - DBG_CHKTHIS( rpt_OFieldExpressionControl,NULL); - sal_Int8 nAction = DND_ACTION_NONE; - if ( IsDropFormatSupported( OGroupExchange::getReportGroupId() ) ) - { - sal_Int32 nRow = GetRowAtYPosPixel(rEvt.maPosPixel.Y(), sal_False); - SetNoSelection(); - - TransferableDataHelper aDropped( rEvt.maDropEvent.Transferable ); - uno::Any aDrop = aDropped.GetAny(OGroupExchange::getReportGroupId()); - uno::Sequence< uno::Any > aGroups; - aDrop >>= aGroups; - if ( aGroups.getLength() ) - { - moveGroups(aGroups,nRow); - nAction = DND_ACTION_MOVE; - } - } - return nAction; -} -//------------------------------------------------------------------------------ -void OFieldExpressionControl::moveGroups(const uno::Sequence<uno::Any>& _aGroups,sal_Int32 _nRow,sal_Bool _bSelect) -{ - if ( _aGroups.getLength() ) - { - m_bIgnoreEvent = true; - { - sal_Int32 nRow = _nRow; - const String sUndoAction(ModuleRes(RID_STR_UNDO_MOVE_GROUP)); - const UndoContext aUndoContext( m_pParent->m_pController->getUndoManager(), sUndoAction ); - - uno::Reference< report::XGroups> xGroups = m_pParent->getGroups(); - const uno::Any* pIter = _aGroups.getConstArray(); - const uno::Any* pEnd = pIter + _aGroups.getLength(); - for(;pIter != pEnd;++pIter) - { - uno::Reference< report::XGroup> xGroup(*pIter,uno::UNO_QUERY); - if ( xGroup.is() ) - { - uno::Sequence< beans::PropertyValue > aArgs(1); - aArgs[0].Name = PROPERTY_GROUP; - aArgs[0].Value <<= xGroup; - // we use this way to create undo actions - m_pParent->m_pController->executeChecked(SID_GROUP_REMOVE,aArgs); - aArgs.realloc(2); - if ( nRow > xGroups->getCount() ) - nRow = xGroups->getCount(); - if ( _bSelect ) - SelectRow(nRow); - aArgs[1].Name = PROPERTY_POSITIONY; - aArgs[1].Value <<= nRow; - m_pParent->m_pController->executeChecked(SID_GROUP_APPEND,aArgs); - ++nRow; - } - } - } - m_bIgnoreEvent = false; - Invalidate(); - } -} -// ----------------------------------------------------------------------------- -void OFieldExpressionControl::fillColumns(const uno::Reference< container::XNameAccess>& _xColumns) -{ - m_pComboCell->Clear(); - if ( _xColumns.is() ) - lcl_addToList_throw(*m_pComboCell,m_aColumnInfo,_xColumns); -} -//------------------------------------------------------------------------------ -void OFieldExpressionControl::lateInit() -{ - uno::Reference< report::XGroups > xGroups = m_pParent->getGroups(); - sal_Int32 nGroupsCount = xGroups->getCount(); - m_aGroupPositions.resize(::std::max<sal_Int32>(nGroupsCount,sal_Int32(GROUPS_START_LEN)),NO_GROUP); - ::std::vector<sal_Int32>::iterator aIter = m_aGroupPositions.begin(); - for (sal_Int32 i = 0; i < nGroupsCount; ++i,++aIter) - *aIter = i; - - if ( ColCount() == 0 ) - { - Font aFont( GetDataWindow().GetFont() ); - aFont.SetWeight( WEIGHT_NORMAL ); - GetDataWindow().SetFont( aFont ); - - // Font fuer die Ueberschriften auf Light setzen - aFont = GetFont(); - aFont.SetWeight( WEIGHT_LIGHT ); - SetFont(aFont); - - InsertHandleColumn(static_cast<sal_uInt16>(GetTextWidth('0') * 4)/*, sal_True */); - InsertDataColumn( FIELD_EXPRESSION, String(ModuleRes(STR_RPT_EXPRESSION)), 100); - - m_pComboCell = new ComboBoxControl( &GetDataWindow() ); - m_pComboCell->SetSelectHdl(LINK(this,OFieldExpressionControl,CBChangeHdl)); - m_pComboCell->SetHelpId(HID_RPT_FIELDEXPRESSION); - - Control* pControls[] = {m_pComboCell}; - for (size_t i = 0; i < SAL_N_ELEMENTS(pControls); ++i) - { - pControls[i]->SetGetFocusHdl(LINK(m_pParent, OGroupsSortingDialog, OnControlFocusGot)); - pControls[i]->SetLoseFocusHdl(LINK(m_pParent, OGroupsSortingDialog, OnControlFocusLost)); - } - - ////////////////////////////////////////////////////////////////////// - // set browse mode - BrowserMode nMode(BROWSER_COLUMNSELECTION | BROWSER_MULTISELECTION | BROWSER_KEEPSELECTION | - BROWSER_HLINESFULL | BROWSER_VLINESFULL | BROWSER_AUTOSIZE_LASTCOL | BROWSER_AUTO_VSCROLL | BROWSER_AUTO_HSCROLL); - if( m_pParent->isReadOnly() ) - nMode |= BROWSER_HIDECURSOR; - SetMode(nMode); - xGroups->addContainerListener(this); - } - else - // not the first call - RowRemoved(0, GetRowCount()); - - RowInserted(0, m_aGroupPositions.size(), sal_True); -} -// ----------------------------------------------------------------------------- -// ----------------------------------------------------------------------------- -IMPL_LINK( OFieldExpressionControl, CBChangeHdl, ComboBox*, /*pComboBox*/ ) -{ - DBG_CHKTHIS( rpt_OFieldExpressionControl,NULL); - - SaveModified(); - return 0L; -} -//------------------------------------------------------------------------------ -IMPL_LINK(OFieldExpressionControl, AsynchActivate, void*, EMPTYARG) -{ - ActivateCell(); - return 0L; -} - -//------------------------------------------------------------------------------ -IMPL_LINK(OFieldExpressionControl, AsynchDeactivate, void*, EMPTYARG) -{ - DeactivateCell(); - return 0L; -} - -//------------------------------------------------------------------------------ -sal_Bool OFieldExpressionControl::IsTabAllowed(sal_Bool /*bForward*/) const -{ - DBG_CHKTHIS( rpt_OFieldExpressionControl,NULL); - return sal_False; -} - -//------------------------------------------------------------------------------ -sal_Bool OFieldExpressionControl::SaveModified() -{ - return SaveModified(true); -} -//------------------------------------------------------------------------------ -sal_Bool OFieldExpressionControl::SaveModified(bool _bAppendRow) -{ - DBG_CHKTHIS( rpt_OFieldExpressionControl,NULL); - sal_Int32 nRow = GetCurRow(); - if ( nRow != BROWSER_ENDOFSELECTION ) - { - sal_Bool bAppend = sal_False; - try - { - uno::Reference< report::XGroup> xGroup; - if ( m_aGroupPositions[nRow] == NO_GROUP ) - { - bAppend = sal_True; - String sUndoAction(ModuleRes(RID_STR_UNDO_APPEND_GROUP)); - m_pParent->m_pController->getUndoManager().EnterListAction( sUndoAction, String() ); - xGroup = m_pParent->getGroups()->createGroup(); - xGroup->setHeaderOn(sal_True); - - uno::Sequence< beans::PropertyValue > aArgs(2); - aArgs[0].Name = PROPERTY_GROUP; - aArgs[0].Value <<= xGroup; - // find position where to insert the new group - sal_Int32 nGroupPos = 0; - ::std::vector<sal_Int32>::iterator aIter = m_aGroupPositions.begin(); - ::std::vector<sal_Int32>::iterator aEnd = m_aGroupPositions.begin() + nRow; - for(;aIter != aEnd;++aIter) - if ( *aIter != NO_GROUP ) - nGroupPos = *aIter + 1; - aArgs[1].Name = PROPERTY_POSITIONY; - aArgs[1].Value <<= nGroupPos; - m_bIgnoreEvent = true; - m_pParent->m_pController->executeChecked(SID_GROUP_APPEND,aArgs); - m_bIgnoreEvent = false; - OSL_ENSURE(*aIter == NO_GROUP ,"Illegal iterator!"); - *aIter++ = nGroupPos; - - aEnd = m_aGroupPositions.end(); - for(;aIter != aEnd;++aIter) - if ( *aIter != NO_GROUP ) - ++*aIter; - } - else - xGroup = m_pParent->getGroup(m_aGroupPositions[nRow]); - if ( xGroup.is() ) - { - sal_uInt16 nPos = m_pComboCell->GetSelectEntryPos(); - ::rtl::OUString sExpression; - if ( COMBOBOX_ENTRY_NOTFOUND == nPos ) - sExpression = m_pComboCell->GetText(); - else - { - sExpression = m_aColumnInfo[nPos].sColumnName; - } - xGroup->setExpression( sExpression ); - - ::rptui::adjustSectionName(xGroup,nPos); - - if ( bAppend ) - m_pParent->m_pController->getUndoManager().LeaveListAction(); - } - - if ( Controller() ) - Controller()->ClearModified(); - if ( _bAppendRow && GetRowCount() == m_pParent->getGroups()->getCount() ) - { - RowInserted( GetRowCount()-1); - m_aGroupPositions.push_back(NO_GROUP); - } - - GoToRow(nRow); - m_pParent->DisplayData(nRow); - } - catch(uno::Exception&) - { - OSL_FAIL("OFieldExpressionControl::SaveModified: Exception caught!"); - } - } - - return sal_True; -} -//------------------------------------------------------------------------------ -String OFieldExpressionControl::GetCellText( long nRow, sal_uInt16 /*nColId*/ ) const -{ - DBG_CHKTHIS( rpt_OFieldExpressionControl,NULL); - String sText; - if ( nRow != BROWSER_ENDOFSELECTION && m_aGroupPositions[nRow] != NO_GROUP ) - { - try - { - uno::Reference< report::XGroup> xGroup = m_pParent->getGroup(m_aGroupPositions[nRow]); - ::rtl::OUString sExpression = xGroup->getExpression(); - - for(::std::vector<ColumnInfo>::const_iterator aIter = m_aColumnInfo.begin(); aIter != m_aColumnInfo.end();++aIter) - { - if ( aIter->sColumnName == sExpression ) - { - if ( aIter->sLabel.getLength() ) - sExpression = aIter->sLabel; - break; - } - } - sText = sExpression; - } - catch(uno::Exception&) - { - OSL_FAIL("Exception caught while getting expression value from the group"); - } - } - return sText; -} - -//------------------------------------------------------------------------------ -void OFieldExpressionControl::InitController( CellControllerRef& /*rController*/, long nRow, sal_uInt16 nColumnId ) -{ - DBG_CHKTHIS( rpt_OFieldExpressionControl,NULL); - - m_pComboCell->SetText( GetCellText( nRow, nColumnId ) ); -} -//------------------------------------------------------------------------------ -sal_Bool OFieldExpressionControl::CursorMoving(long nNewRow, sal_uInt16 nNewCol) -{ - DBG_CHKTHIS( rpt_OFieldExpressionControl,NULL); - - if (!EditBrowseBox::CursorMoving(nNewRow, nNewCol)) - return sal_False; - m_nDataPos = nNewRow; - long nOldDataPos = GetCurRow(); - InvalidateStatusCell( m_nDataPos ); - InvalidateStatusCell( nOldDataPos ); - - m_pParent->SaveData( nOldDataPos ); - m_pParent->DisplayData( m_nDataPos ); - return sal_True; -} -//------------------------------------------------------------------------------ -CellController* OFieldExpressionControl::GetController( long /*nRow*/, sal_uInt16 /*nColumnId*/ ) -{ - DBG_CHKTHIS( rpt_OFieldExpressionControl,NULL); - ComboBoxCellController* pCellController = new ComboBoxCellController( m_pComboCell ); - pCellController->GetComboBox().SetReadOnly(!m_pParent->m_pController->isEditable()); - return pCellController; -} - -//------------------------------------------------------------------------------ -sal_Bool OFieldExpressionControl::SeekRow( long _nRow ) -{ - DBG_CHKTHIS( rpt_OFieldExpressionControl,NULL); - // die Basisklasse braucht den Aufruf, da sie sich dort merkt, welche Zeile gepainted wird - EditBrowseBox::SeekRow(_nRow); - m_nCurrentPos = _nRow; - return sal_True; -} - -//------------------------------------------------------------------------------ -void OFieldExpressionControl::PaintCell( OutputDevice& rDev, const Rectangle& rRect, sal_uInt16 nColumnId ) const -{ - DBG_CHKTHIS( rpt_OFieldExpressionControl,NULL); - String aText =const_cast< OFieldExpressionControl*>(this)->GetCellText( m_nCurrentPos, nColumnId ); - - Point aPos( rRect.TopLeft() ); - Size aTextSize( GetDataWindow().GetTextHeight(),GetDataWindow().GetTextWidth( aText )); - - if( aPos.X() < rRect.Right() || aPos.X() + aTextSize.Width() > rRect.Right() || - aPos.Y() < rRect.Top() || aPos.Y() + aTextSize.Height() > rRect.Bottom() ) - rDev.SetClipRegion( rRect ); - - rDev.DrawText( aPos, aText ); - - if( rDev.IsClipRegion() ) - rDev.SetClipRegion(); -} -//------------------------------------------------------------------------------ -EditBrowseBox::RowStatus OFieldExpressionControl::GetRowStatus(long nRow) const -{ - DBG_CHKTHIS( rpt_OFieldExpressionControl,NULL); - if (nRow >= 0 && nRow == m_nDataPos) - return EditBrowseBox::CURRENT; - if ( nRow != BROWSER_ENDOFSELECTION && nRow < static_cast<long>(m_aGroupPositions.size()) && m_aGroupPositions[nRow] != NO_GROUP ) - { - try - { - uno::Reference< report::XGroup> xGroup = m_pParent->getGroup(m_aGroupPositions[nRow]); - return (xGroup->getHeaderOn() || xGroup->getFooterOn())? EditBrowseBox::HEADERFOOTER : EditBrowseBox::CLEAN; - } - catch(uno::Exception&) - { - OSL_FAIL("Exception cathced while try to get a group!"); - } - } - return EditBrowseBox::CLEAN; -} -// XEventListener -//------------------------------------------------------------------------------ -void SAL_CALL OFieldExpressionControl::disposing(const lang::EventObject& /*e*/) throw( uno::RuntimeException ) -{ -} -//------------------------------------------------------------------------------ -// XContainerListener -//------------------------------------------------------------------------------ -void SAL_CALL OFieldExpressionControl::elementInserted(const container::ContainerEvent& evt) throw(uno::RuntimeException) -{ - if ( m_bIgnoreEvent ) - return; - SolarMutexGuard aSolarGuard; - ::osl::MutexGuard aGuard( m_aMutex ); - sal_Int32 nGroupPos = 0; - if ( evt.Accessor >>= nGroupPos ) - { - if ( nGroupPos >= GetRowCount() ) - { - sal_Int32 nAddedRows = nGroupPos - GetRowCount(); - RowInserted(nAddedRows); - for (sal_Int32 i = 0; i < nAddedRows; ++i) - m_aGroupPositions.push_back(NO_GROUP); - m_aGroupPositions[nGroupPos] = nGroupPos; - } - else - { - ::std::vector<sal_Int32>::iterator aFind = m_aGroupPositions.begin()+ nGroupPos; - if ( aFind == m_aGroupPositions.end() ) - aFind = ::std::find(m_aGroupPositions.begin(),m_aGroupPositions.end(),NO_GROUP); - - if ( aFind != m_aGroupPositions.end() ) - { - if ( *aFind != NO_GROUP ) - aFind = m_aGroupPositions.insert(aFind,nGroupPos); - else - *aFind = nGroupPos; - - ::std::vector<sal_Int32>::iterator aEnd = m_aGroupPositions.end(); - for(++aFind;aFind != aEnd;++aFind) - if ( *aFind != NO_GROUP ) - ++*aFind; - } - } - Invalidate(); - } -} -//------------------------------------------------------------------------------ -void SAL_CALL OFieldExpressionControl::elementReplaced(const container::ContainerEvent& /*evt*/) throw(uno::RuntimeException) -{ -} -//------------------------------------------------------------------------------ -void SAL_CALL OFieldExpressionControl::elementRemoved(const container::ContainerEvent& evt) throw(uno::RuntimeException) -{ - SolarMutexGuard aSolarGuard; - ::osl::MutexGuard aGuard( m_aMutex ); - - if ( m_bIgnoreEvent ) - return; - - sal_Int32 nGroupPos = 0; - if ( evt.Accessor >>= nGroupPos ) - { - ::std::vector<sal_Int32>::iterator aFind = ::std::find(m_aGroupPositions.begin(),m_aGroupPositions.end(),nGroupPos); - if ( aFind != m_aGroupPositions.end() ) - { - *aFind = NO_GROUP; - ::std::vector<sal_Int32>::iterator aEnd = m_aGroupPositions.end(); - for(++aFind;aFind != aEnd;++aFind) - if ( *aFind != NO_GROUP ) - --*aFind; - Invalidate(); - } - } -} -//------------------------------------------------------------------------------ -sal_Bool OFieldExpressionControl::IsDeleteAllowed( ) -{ - return !m_pParent->isReadOnly() && GetSelectRowCount() > 0; -} -//------------------------------------------------------------------------ -void OFieldExpressionControl::KeyInput( const KeyEvent& rEvt ) -{ - if (IsDeleteAllowed()) - { - if (rEvt.GetKeyCode().GetCode() == KEY_DELETE && // Delete rows - !rEvt.GetKeyCode().IsShift() && - !rEvt.GetKeyCode().IsMod1()) - { - DeleteRows(); - return; - } - } - EditBrowseBox::KeyInput(rEvt); -} -//------------------------------------------------------------------------ -void OFieldExpressionControl::Command(const CommandEvent& rEvt) -{ - switch (rEvt.GetCommand()) - { - case COMMAND_CONTEXTMENU: - { - if (!rEvt.IsMouseEvent()) - { - EditBrowseBox::Command(rEvt); - return; - } - - sal_uInt16 nColId = GetColumnAtXPosPixel(rEvt.GetMousePosPixel().X()); - - if ( nColId == HANDLE_ID ) - { - PopupMenu aContextMenu(ModuleRes(RID_GROUPSROWPOPUPMENU)); - sal_Bool bEnable = sal_False; - long nIndex = FirstSelectedRow(); - while( nIndex >= 0 && !bEnable ) - { - if ( m_aGroupPositions[nIndex] != NO_GROUP ) - bEnable = sal_True; - nIndex = NextSelectedRow(); - } - aContextMenu.EnableItem( SID_DELETE, IsDeleteAllowed() && bEnable ); - switch (aContextMenu.Execute(this, rEvt.GetMousePosPixel())) - { - case SID_CUT: - cut(); - break; - case SID_COPY: - copy(); - break; - case SID_PASTE: - paste(); - break; - - case SID_DELETE: - if( m_nDeleteEvent ) - Application::RemoveUserEvent( m_nDeleteEvent ); - m_nDeleteEvent = Application::PostUserEvent( LINK(this, OFieldExpressionControl, DelayedDelete) ); - break; - default: - break; - } - } - // run through - } - default: - EditBrowseBox::Command(rEvt); - } - -} -//------------------------------------------------------------------------------ -void OFieldExpressionControl::DeleteRows() -{ - DBG_CHKTHIS( rpt_OFieldExpressionControl,NULL); - - sal_Bool bIsEditing = IsEditing(); - if (bIsEditing) - { - DeactivateCell(); - } - long nIndex = FirstSelectedRow(); - if (nIndex == -1) - { - nIndex = GetCurRow(); - } - bool bFirstTime = true; - - long nOldDataPos = nIndex; - uno::Sequence< beans::PropertyValue > aArgs(1); - aArgs[0].Name = PROPERTY_GROUP; - m_bIgnoreEvent = true; - while( nIndex >= 0 ) - { - if ( m_aGroupPositions[nIndex] != NO_GROUP ) - { - if ( bFirstTime ) - { - bFirstTime = false; - String sUndoAction(ModuleRes(RID_STR_UNDO_REMOVE_SELECTION)); - m_pParent->m_pController->getUndoManager().EnterListAction( sUndoAction, String() ); - } - - sal_Int32 nGroupPos = m_aGroupPositions[nIndex]; - uno::Reference< report::XGroup> xGroup = m_pParent->getGroup(nGroupPos); - aArgs[0].Value <<= xGroup; - // we use this way to create undo actions - m_pParent->m_pController->executeChecked(SID_GROUP_REMOVE,aArgs); - - ::std::vector<sal_Int32>::iterator aFind = ::std::find(m_aGroupPositions.begin(),m_aGroupPositions.end(),nGroupPos); - *aFind = NO_GROUP; - ::std::vector<sal_Int32>::iterator aEnd = m_aGroupPositions.end(); - for(++aFind;aFind != aEnd;++aFind) - if ( *aFind != NO_GROUP ) - --*aFind; - } - nIndex = NextSelectedRow(); - } - - if ( !bFirstTime ) - m_pParent->m_pController->getUndoManager().LeaveListAction(); - - m_nDataPos = GetCurRow(); - InvalidateStatusCell( nOldDataPos ); - InvalidateStatusCell( m_nDataPos ); - ActivateCell(); - m_pParent->DisplayData( m_nDataPos ); - m_bIgnoreEvent = false; - Invalidate(); -} -//------------------------------------------------------------------------------ -//------------------------------------------------------------------------------ -void OFieldExpressionControl::cut() -{ - copy(); - DeleteRows(); -} - -//------------------------------------------------------------------------------ -void OFieldExpressionControl::copy() -{ - DBG_CHKTHIS( rpt_OFieldExpressionControl,NULL); - ////////////////////////////////////////////////////////////////////// - // set to the right row and save it - m_pParent->SaveData( m_nDataPos ); - - uno::Sequence<uno::Any> aClipboardList = fillSelectedGroups(); - - if( aClipboardList.getLength() ) - { - OGroupExchange* pData = new OGroupExchange(aClipboardList); - uno::Reference< ::com::sun::star::datatransfer::XTransferable> xRef = pData; - pData->CopyToClipboard(GetParent()); - } -} - -//------------------------------------------------------------------------------ -void OFieldExpressionControl::paste() -{ - TransferableDataHelper aTransferData(TransferableDataHelper::CreateFromSystemClipboard(GetParent())); - if(aTransferData.HasFormat(OGroupExchange::getReportGroupId())) - { - if( m_nPasteEvent ) - Application::RemoveUserEvent( m_nPasteEvent ); - m_nPasteEvent = Application::PostUserEvent( LINK(this, OFieldExpressionControl, DelayedPaste) ); - } -} -//------------------------------------------------------------------------------ -IMPL_LINK( OFieldExpressionControl, DelayedPaste, void*, ) -{ - m_nPasteEvent = 0; - - sal_Int32 nPastePosition = GetSelectRowCount() ? FirstSelectedRow() : GetCurRow(); - - InsertRows( nPastePosition ); - SetNoSelection(); - GoToRow( nPastePosition ); - - return 0; -} -//------------------------------------------------------------------------------ -IMPL_LINK( OFieldExpressionControl, DelayedDelete, void*, ) -{ - m_nDeleteEvent = 0; - DeleteRows(); - return 0; -} -//------------------------------------------------------------------------------ -void OFieldExpressionControl::InsertRows( long nRow ) -{ - DBG_CHKTHIS( rpt_OFieldExpressionControl,NULL); - - sal_Int32 nSize = 0; - ////////////////////////////////////////////////////////////////////// - // get rows from clipboard - TransferableDataHelper aTransferData(TransferableDataHelper::CreateFromSystemClipboard(GetParent())); - if(aTransferData.HasFormat(OGroupExchange::getReportGroupId())) - { - datatransfer::DataFlavor aFlavor; - SotExchange::GetFormatDataFlavor(OGroupExchange::getReportGroupId(), aFlavor); - uno::Sequence< uno::Any > aGroups; - - if( (aTransferData.GetAny(aFlavor) >>= aGroups) && aGroups.getLength() ) - { - m_bIgnoreEvent = false; - { - const String sUndoAction(ModuleRes(RID_STR_UNDO_APPEND_GROUP)); - const UndoContext aUndoContext( m_pParent->m_pController->getUndoManager(), sUndoAction ); - - uno::Reference<report::XGroups> xGroups = m_pParent->getGroups(); - sal_Int32 nGroupPos = 0; - ::std::vector<sal_Int32>::iterator aIter = m_aGroupPositions.begin(); - ::std::vector<sal_Int32>::size_type nRowPos = static_cast< ::std::vector<sal_Int32>::size_type >(nRow); - if ( nRowPos < m_aGroupPositions.size() ) - { - ::std::vector<sal_Int32>::iterator aEnd = m_aGroupPositions.begin() + nRowPos; - for(;aIter != aEnd;++aIter) - { - if ( *aIter != NO_GROUP ) - nGroupPos = *aIter; - } - } - for(sal_Int32 i=0;i < aGroups.getLength();++i,++nSize) - { - uno::Sequence< beans::PropertyValue > aArgs(2); - aArgs[0].Name = PROPERTY_GROUP; - aArgs[0].Value = aGroups[i]; - aArgs[1].Name = PROPERTY_POSITIONY; - aArgs[1].Value <<= nGroupPos; - m_pParent->m_pController->executeChecked(SID_GROUP_APPEND,aArgs); - - ::std::vector<sal_Int32>::iterator aInsertPos = m_aGroupPositions.insert(aIter,nGroupPos); - ++aInsertPos; - aIter = aInsertPos; - ::std::vector<sal_Int32>::iterator aEnd = m_aGroupPositions.end(); - for(;aInsertPos != aEnd;++aInsertPos) - if ( *aInsertPos != NO_GROUP ) - ++*aInsertPos; - } - } - m_bIgnoreEvent = true; - } - } - - RowInserted( nRow,nSize,sal_True ); -} -//------------------------------------------------------------------------------ - -DBG_NAME( rpt_OGroupsSortingDialog ) -//======================================================================== -// class OGroupsSortingDialog -//======================================================================== -OGroupsSortingDialog::OGroupsSortingDialog( Window* _pParent - ,sal_Bool _bReadOnly - ,OReportController* _pController) - : FloatingWindow( _pParent, ModuleRes(RID_GROUPS_SORTING) ) - ,OPropertyChangeListener(m_aMutex) - ,m_aFL2(this, ModuleRes(FL_SEPARATOR2) ) - ,m_aMove(this, ModuleRes(FT_MOVELABEL) ) - ,m_aToolBox(this, ModuleRes(TB_TOOLBOX) ) - - ,m_aFL3(this, ModuleRes(FL_SEPARATOR3) ) - ,m_aOrder(this, ModuleRes(FT_ORDER) ) - ,m_aOrderLst(this, ModuleRes(LST_ORDER) ) - ,m_aHeader(this, ModuleRes(FT_HEADER) ) - ,m_aHeaderLst(this, ModuleRes(LST_HEADERLST) ) - ,m_aFooter(this, ModuleRes(FT_FOOTER) ) - ,m_aFooterLst(this, ModuleRes(LST_FOOTERLST) ) - ,m_aGroupOn(this, ModuleRes(FT_GROUPON) ) - ,m_aGroupOnLst(this, ModuleRes(LST_GROUPONLST) ) - ,m_aGroupInterval(this, ModuleRes(FT_GROUPINTERVAL) ) - ,m_aGroupIntervalEd(this, ModuleRes(ED_GROUPINTERVALLST) ) - ,m_aKeepTogether(this, ModuleRes(FT_KEEPTOGETHER) ) - ,m_aKeepTogetherLst(this, ModuleRes(LST_KEEPTOGETHERLST) ) - ,m_aFL(this, ModuleRes(FL_SEPARATOR1) ) - ,m_aHelpWindow(this, ModuleRes(HELP_FIELD) ) - ,m_pFieldExpression( new OFieldExpressionControl(this,ModuleRes(WND_CONTROL))) - ,m_pController(_pController) - ,m_pCurrentGroupListener(NULL) - ,m_xGroups(m_pController->getReportDefinition()->getGroups()) - ,m_bReadOnly(_bReadOnly) -{ - DBG_CTOR( rpt_OGroupsSortingDialog,NULL); - - Control* pControlsLst[] = { &m_aHeaderLst, &m_aFooterLst, &m_aGroupOnLst, &m_aKeepTogetherLst, &m_aOrderLst, &m_aGroupIntervalEd}; - for (size_t i = 0; i < SAL_N_ELEMENTS(pControlsLst); ++i) - { - pControlsLst[i]->SetGetFocusHdl(LINK(this, OGroupsSortingDialog, OnControlFocusGot)); - pControlsLst[i]->SetLoseFocusHdl(LINK(this, OGroupsSortingDialog, OnControlFocusLost)); - pControlsLst[i]->Show(sal_True); - } - - for (size_t i = 0; i < (SAL_N_ELEMENTS(pControlsLst))-1; ++i) - static_cast<ListBox*>(pControlsLst[i])->SetSelectHdl(LINK(this,OGroupsSortingDialog,LBChangeHdl)); - - Control* pControls[] = { &m_aHeader, &m_aFooter, &m_aGroupOn, &m_aGroupInterval, &m_aKeepTogether, &m_aOrder - , &m_aMove,&m_aFL2}; - sal_Int32 nMaxTextWidth = 0; - MnemonicGenerator aMnemonicGenerator; - for (size_t i = 0; i < SAL_N_ELEMENTS(pControls); ++i) - aMnemonicGenerator.RegisterMnemonic( pControls[i]->GetText() ); - - for (size_t i = 0; i < SAL_N_ELEMENTS(pControls); ++i) - { - pControls[i]->Show(sal_True); - String sText = pControls[i]->GetText(); - if ( aMnemonicGenerator.CreateMnemonic(sText) ) - pControls[i]->SetText(sText); - sal_Int32 nTextWidth = GetTextWidth(sText); - nMaxTextWidth = ::std::max<sal_Int32>(nTextWidth,nMaxTextWidth); - } - - Size aSize(UNRELATED_CONTROLS, PAGE_HEIGHT); - Size aSpace = LogicToPixel( aSize, MAP_APPFONT ); - Size aOutSize(nMaxTextWidth + m_aHeader.GetSizePixel().Width() + 3*aSpace.Width(),aSpace.Height()); - SetMinOutputSizePixel(aOutSize); - SetOutputSizePixel(aOutSize); - - m_pReportListener = new OPropertyChangeMultiplexer(this,m_pController->getReportDefinition().get()); - m_pReportListener->addProperty(PROPERTY_COMMAND); - m_pReportListener->addProperty(PROPERTY_COMMANDTYPE); - - m_pFieldExpression->lateInit(); - fillColumns(); - m_pFieldExpression->Show(); - - m_aHelpWindow.SetControlBackground( GetSettings().GetStyleSettings().GetFaceColor() ); - - m_pFieldExpression->SetZOrder(&m_aFL2, WINDOW_ZORDER_BEHIND); - - m_aMove.SetZOrder(m_pFieldExpression, WINDOW_ZORDER_BEHIND); - m_aToolBox.SetStyle(m_aToolBox.GetStyle()|WB_LINESPACING); - m_aToolBox.SetSelectHdl(LINK(this, OGroupsSortingDialog, OnFormatAction)); - m_aToolBox.SetImageListProvider(this); - setToolBox(&m_aToolBox); - - checkButtons(0); - Resize(); - - FreeResource(); -} - -//------------------------------------------------------------------------ -OGroupsSortingDialog::~OGroupsSortingDialog() -{ - DBG_DTOR( rpt_OGroupsSortingDialog,NULL); - delete m_pFieldExpression; - m_xColumns.clear(); - m_pReportListener->dispose(); - if ( m_pCurrentGroupListener.is() ) - m_pCurrentGroupListener->dispose(); -} -// ----------------------------------------------------------------------------- -sal_Bool OGroupsSortingDialog::isReadOnly( ) const -{ - return m_bReadOnly; -} -//------------------------------------------------------------------------------ -void OGroupsSortingDialog::UpdateData( ) -{ - m_pFieldExpression->Invalidate(); - long nCurRow = m_pFieldExpression->GetCurRow(); - m_pFieldExpression->DeactivateCell(); - m_pFieldExpression->ActivateCell(nCurRow, m_pFieldExpression->GetCurColumnId()); - DisplayData(nCurRow); -} -//------------------------------------------------------------------------------ -void OGroupsSortingDialog::DisplayData( sal_Int32 _nRow ) -{ - DBG_CHKTHIS( rpt_OGroupsSortingDialog,NULL); - sal_Int32 nGroupPos = m_pFieldExpression->getGroupPosition(_nRow); - sal_Bool bEmpty = nGroupPos == NO_GROUP; - m_aHeaderLst.Enable(!bEmpty); - m_aFooterLst.Enable(!bEmpty); - m_aGroupOnLst.Enable(!bEmpty); - m_aGroupIntervalEd.Enable(!bEmpty); - m_aKeepTogetherLst.Enable(!bEmpty); - m_aOrderLst.Enable(!bEmpty); - - m_aFL3.Enable(!bEmpty); - m_aHeader.Enable(!bEmpty); - m_aFooter.Enable(!bEmpty); - m_aGroupOn.Enable(!bEmpty); - m_aGroupInterval.Enable(!bEmpty); - m_aKeepTogether.Enable(!bEmpty); - m_aOrder.Enable(!bEmpty); - - checkButtons(_nRow); - - if ( m_pCurrentGroupListener.is() ) - m_pCurrentGroupListener->dispose(); - m_pCurrentGroupListener = NULL; - if ( !bEmpty && nGroupPos != NO_GROUP ) - { - uno::Reference< report::XGroup> xGroup = getGroup(nGroupPos); - - m_pCurrentGroupListener = new OPropertyChangeMultiplexer(this,xGroup.get()); - m_pCurrentGroupListener->addProperty(PROPERTY_HEADERON); - m_pCurrentGroupListener->addProperty(PROPERTY_FOOTERON); - - displayGroup(xGroup); - } -} -//------------------------------------------------------------------------------ -void OGroupsSortingDialog::SaveData( sal_Int32 _nRow) -{ - DBG_CHKTHIS( rpt_OGroupsSortingDialog,NULL); - sal_Int32 nGroupPos = m_pFieldExpression->getGroupPosition(_nRow); - if ( nGroupPos == NO_GROUP ) - return; - - uno::Reference< report::XGroup> xGroup = getGroup(nGroupPos); - if ( m_aHeaderLst.GetSavedValue() != m_aHeaderLst.GetSelectEntryPos() ) - xGroup->setHeaderOn( m_aHeaderLst.GetSelectEntryPos() == 0 ); - if ( m_aFooterLst.GetSavedValue() != m_aFooterLst.GetSelectEntryPos() ) - xGroup->setFooterOn( m_aFooterLst.GetSelectEntryPos() == 0 ); - if ( m_aKeepTogetherLst.GetSavedValue() != m_aKeepTogetherLst.GetSelectEntryPos() ) - xGroup->setKeepTogether( m_aKeepTogetherLst.GetSelectEntryPos() ); - if ( m_aGroupOnLst.GetSavedValue() != m_aGroupOnLst.GetSelectEntryPos() ) - { - sal_Int16 nGroupOn = static_cast<sal_Int16>(reinterpret_cast<sal_IntPtr>(m_aGroupOnLst.GetEntryData(m_aGroupOnLst.GetSelectEntryPos()))); - xGroup->setGroupOn( nGroupOn ); - } - if ( m_aGroupIntervalEd.GetSavedValue().ToInt32() != m_aGroupIntervalEd.GetValue() ) - { - xGroup->setGroupInterval( static_cast<sal_Int32>(m_aGroupIntervalEd.GetValue()) ); - m_aGroupIntervalEd.SaveValue(); - } - if ( m_aOrderLst.GetSavedValue() != m_aOrderLst.GetSelectEntryPos() ) - xGroup->setSortAscending( m_aOrderLst.GetSelectEntryPos() == 0 ); - - ListBox* pControls[] = { &m_aHeaderLst,&m_aFooterLst,&m_aGroupOnLst,&m_aKeepTogetherLst,&m_aOrderLst}; - for (size_t i = 0; i < SAL_N_ELEMENTS(pControls); ++i) - pControls[i]->SaveValue(); -} - -// ----------------------------------------------------------------------------- -sal_Int32 OGroupsSortingDialog::getColumnDataType(const ::rtl::OUString& _sColumnName) -{ - sal_Int32 nDataType = sdbc::DataType::VARCHAR; - try - { - if ( !m_xColumns.is() ) - fillColumns(); - if ( m_xColumns.is() && m_xColumns->hasByName(_sColumnName) ) - { - uno::Reference< beans::XPropertySet> xColumn(m_xColumns->getByName(_sColumnName),uno::UNO_QUERY); - if ( xColumn.is() ) - xColumn->getPropertyValue(PROPERTY_TYPE) >>= nDataType; - } - } - catch(uno::Exception&) - { - OSL_FAIL("Eception caught while getting the type of a column"); - } - - return nDataType; -} -//------------------------------------------------------------------------------ -IMPL_LINK(OGroupsSortingDialog, OnControlFocusGot, Control*, pControl ) -{ - if ( m_pFieldExpression && m_pFieldExpression->getExpressionControl() ) - { - Control* pControls[] = { m_pFieldExpression->getExpressionControl(),&m_aHeaderLst,&m_aFooterLst,&m_aGroupOnLst,&m_aGroupIntervalEd,&m_aKeepTogetherLst,&m_aOrderLst}; - for (size_t i = 0; i < SAL_N_ELEMENTS(pControls); ++i) - { - if ( pControl == pControls[i] ) - { - ListBox* pListBox = dynamic_cast< ListBox* >( pControl ); - if ( pListBox ) - pListBox->SaveValue(); - NumericField* pNumericField = dynamic_cast< NumericField* >( pControl ); - if ( pNumericField ) - pNumericField->SaveValue(); - showHelpText(static_cast<sal_uInt16>(i+STR_RPT_HELP_FIELD)); - break; - } - } - } - return 0L; -} -//------------------------------------------------------------------------------ -IMPL_LINK(OGroupsSortingDialog, OnControlFocusLost, Control*, pControl ) -{ - if ( m_pFieldExpression && pControl == &m_aGroupIntervalEd ) - { - if ( m_aGroupIntervalEd.IsModified() ) - SaveData(m_pFieldExpression->GetCurRow()); - } - return 0L; -} -// ----------------------------------------------------------------------------- -IMPL_LINK( OGroupsSortingDialog, OnFormatAction, ToolBox*, /*NOTINTERESTEDIN*/ ) -{ - DBG_CHKTHIS( rpt_OGroupsSortingDialog,NULL); - - sal_uInt16 nCommand = m_aToolBox.GetCurItemId(); - - if ( m_pFieldExpression ) - { - long nIndex = m_pFieldExpression->GetCurrRow(); - sal_Int32 nGroupPos = m_pFieldExpression->getGroupPosition(nIndex); - uno::Sequence<uno::Any> aClipboardList; - if ( nIndex >= 0 && nGroupPos != NO_GROUP ) - { - aClipboardList.realloc(1); - aClipboardList[0] = m_xGroups->getByIndex(nGroupPos); - } - if ( nCommand == SID_RPT_GROUPSORT_MOVE_UP ) - { - --nIndex; - } - if ( nCommand == SID_RPT_GROUPSORT_MOVE_DOWN ) - { - ++nIndex; - } - if ( nCommand == SID_RPT_GROUPSORT_DELETE ) - { - Application::PostUserEvent( LINK(m_pFieldExpression, OFieldExpressionControl, DelayedDelete) ); - } - else - { - if ( nIndex >= 0 && aClipboardList.getLength() ) - { - m_pFieldExpression->SetNoSelection(); - m_pFieldExpression->moveGroups(aClipboardList,nIndex,sal_False); - m_pFieldExpression->DeactivateCell(); - m_pFieldExpression->GoToRow(nIndex); - m_pFieldExpression->ActivateCell(nIndex, m_pFieldExpression->GetCurColumnId()); - DisplayData(nIndex); - } - } - } - return 1L; -} -// ----------------------------------------------------------------------------- -IMPL_LINK( OGroupsSortingDialog, LBChangeHdl, ListBox*, pListBox ) -{ - DBG_CHKTHIS( rpt_OGroupsSortingDialog,NULL); - if ( pListBox->GetSavedValue() != pListBox->GetSelectEntryPos() ) - { - sal_Int32 nRow = m_pFieldExpression->GetCurRow(); - sal_Int32 nGroupPos = m_pFieldExpression->getGroupPosition(nRow); - if ( pListBox != &m_aHeaderLst && pListBox != &m_aFooterLst) - { - if ( pListBox && pListBox->GetSavedValue() != pListBox->GetSelectEntryPos() ) - SaveData(nRow); - if ( pListBox == &m_aGroupOnLst ) - m_aGroupIntervalEd.Enable( pListBox->GetSelectEntryPos() != 0 ); - } - else if ( nGroupPos != NO_GROUP ) - { - uno::Reference< report::XGroup> xGroup = getGroup(nGroupPos); - uno::Sequence< beans::PropertyValue > aArgs(2); - aArgs[1].Name = PROPERTY_GROUP; - aArgs[1].Value <<= xGroup; - - if ( &m_aHeaderLst == pListBox ) - aArgs[0].Name = PROPERTY_HEADERON; - else - aArgs[0].Name = PROPERTY_FOOTERON; - - aArgs[0].Value <<= pListBox->GetSelectEntryPos() == 0; - m_pController->executeChecked(&m_aHeaderLst == pListBox ? SID_GROUPHEADER : SID_GROUPFOOTER,aArgs); - if ( m_pFieldExpression ) - m_pFieldExpression->InvalidateHandleColumn(); - } - } - return 1L; -} -// ----------------------------------------------------------------------------- -void OGroupsSortingDialog::showHelpText(sal_uInt16 _nResId) -{ - m_aHelpWindow.SetText(String(ModuleRes(_nResId))); -} -// ----------------------------------------------------------------------------- -void OGroupsSortingDialog::_propertyChanged(const beans::PropertyChangeEvent& _rEvent) throw( uno::RuntimeException) -{ - uno::Reference< report::XGroup > xGroup(_rEvent.Source,uno::UNO_QUERY); - if ( xGroup.is() ) - displayGroup(xGroup); - else - fillColumns(); -} -// ----------------------------------------------------------------------------- -void OGroupsSortingDialog::fillColumns() -{ - m_xColumns = m_pController->getColumns(); - m_pFieldExpression->fillColumns(m_xColumns); -} -// ----------------------------------------------------------------------------- -void OGroupsSortingDialog::displayGroup(const uno::Reference<report::XGroup>& _xGroup) -{ - m_aHeaderLst.SelectEntryPos(_xGroup->getHeaderOn() ? 0 : 1 ); - m_aFooterLst.SelectEntryPos(_xGroup->getFooterOn() ? 0 : 1 ); - sal_Int32 nDataType = getColumnDataType(_xGroup->getExpression()); - - // first clear whole group on list - while(m_aGroupOnLst.GetEntryCount() > 1 ) - { - m_aGroupOnLst.RemoveEntry(1); - } - - switch(nDataType) - { - case sdbc::DataType::LONGVARCHAR: - case sdbc::DataType::VARCHAR: - case sdbc::DataType::CHAR: - m_aGroupOnLst.InsertEntry(String(ModuleRes(STR_RPT_PREFIXCHARS))); - m_aGroupOnLst.SetEntryData(1,reinterpret_cast<void*>(report::GroupOn::PREFIX_CHARACTERS)); - break; - case sdbc::DataType::DATE: - case sdbc::DataType::TIME: - case sdbc::DataType::TIMESTAMP: - { - sal_uInt16 nIds[] = { STR_RPT_YEAR, STR_RPT_QUARTER,STR_RPT_MONTH,STR_RPT_WEEK,STR_RPT_DAY,STR_RPT_HOUR,STR_RPT_MINUTE }; - for (sal_uInt16 i = 0; i < SAL_N_ELEMENTS(nIds); ++i) - { - m_aGroupOnLst.InsertEntry(String(ModuleRes(nIds[i]))); - m_aGroupOnLst.SetEntryData(i+1,reinterpret_cast<void*>(i+2)); - } - } - break; - default: - m_aGroupOnLst.InsertEntry(String(ModuleRes(STR_RPT_INTERVAL))); - m_aGroupOnLst.SetEntryData(1,reinterpret_cast<void*>(report::GroupOn::INTERVAL)); - break; - } - sal_uInt16 nPos = 0; - switch(_xGroup->getGroupOn()) - { - case report::GroupOn::DEFAULT: - nPos = 0; - break; - case report::GroupOn::PREFIX_CHARACTERS: - nPos = 1; - break; - case report::GroupOn::YEAR: - nPos = 1; - break; - case report::GroupOn::QUARTAL: - nPos = 2; - break; - case report::GroupOn::MONTH: - nPos = 3; - break; - case report::GroupOn::WEEK: - nPos = 4; - break; - case report::GroupOn::DAY: - nPos = 5; - break; - case report::GroupOn::HOUR: - nPos = 6; - break; - case report::GroupOn::MINUTE: - nPos = 7; - break; - case report::GroupOn::INTERVAL: - nPos = 1; - break; - default: - nPos = 0; - } - m_aGroupOnLst.SelectEntryPos(nPos); - m_aGroupIntervalEd.SetText(String::CreateFromInt32(_xGroup->getGroupInterval())); - m_aGroupIntervalEd.SaveValue(); - m_aGroupIntervalEd.Enable( nPos != 0 ); - m_aKeepTogetherLst.SelectEntryPos(_xGroup->getKeepTogether()); - m_aOrderLst.SelectEntryPos(_xGroup->getSortAscending() ? 0 : 1); - - ListBox* pControls[] = { &m_aHeaderLst,&m_aFooterLst,&m_aGroupOnLst,&m_aKeepTogetherLst,&m_aOrderLst}; - for (size_t i = 0; i < SAL_N_ELEMENTS(pControls); ++i) - pControls[i]->SaveValue(); - - ListBox* pControlsLst2[] = { &m_aHeaderLst, &m_aFooterLst, &m_aGroupOnLst, &m_aKeepTogetherLst,&m_aOrderLst}; - sal_Bool bReadOnly = !m_pController->isEditable(); - for (size_t i = 0; i < SAL_N_ELEMENTS(pControlsLst2); ++i) - pControlsLst2[i]->SetReadOnly(bReadOnly); - m_aGroupIntervalEd.SetReadOnly(bReadOnly); -} -//------------------------------------------------------------------------------ -void OGroupsSortingDialog::Resize() -{ - Window::Resize(); - Size aTotalOutputSize = GetOutputSizePixel(); - Size aSpace = LogicToPixel( Size( UNRELATED_CONTROLS, UNRELATED_CONTROLS ), MAP_APPFONT ); - m_pFieldExpression->SetSizePixel(Size(aTotalOutputSize.Width() - 2*aSpace.Width(),m_pFieldExpression->GetSizePixel().Height())); - - Control* pControlsLst[] = { &m_aHeaderLst, &m_aFooterLst, &m_aGroupOnLst, &m_aGroupIntervalEd,&m_aKeepTogetherLst,&m_aOrderLst}; - Control* pControls[] = { &m_aHeader, &m_aFooter, &m_aGroupOn, &m_aGroupInterval, &m_aKeepTogether, &m_aOrder}; - sal_Int32 nMaxTextWidth = 0; - for (size_t i = 0; i < SAL_N_ELEMENTS(pControls); ++i) - { - nMaxTextWidth = ::std::max<sal_Int32>(static_cast<sal_Int32>(GetTextWidth(pControls[i]->GetText())),nMaxTextWidth); - } - - for (size_t i = 0; i < SAL_N_ELEMENTS(pControls); ++i) - { - pControls[i]->SetSizePixel(Size(nMaxTextWidth,pControls[i]->GetSizePixel().Height())); - Point aPos = pControls[i]->GetPosPixel(); - aPos.X() += nMaxTextWidth + aSpace.Width(); - aPos.Y() = pControlsLst[i]->GetPosPixel().Y(); - - pControlsLst[i]->SetPosSizePixel(aPos,Size(aTotalOutputSize.Width() - aPos.X() - aSpace.Width(),pControlsLst[i]->GetSizePixel().Height())); - } - - m_aFL.SetSizePixel(Size(aTotalOutputSize.Width() - aSpace.Width(),m_aFL.GetSizePixel().Height())); - m_aFL2.SetSizePixel(Size(aTotalOutputSize.Width() - aSpace.Width(),m_aFL2.GetSizePixel().Height())); - m_aFL3.SetSizePixel(Size(aTotalOutputSize.Width() - aSpace.Width(),m_aFL3.GetSizePixel().Height())); - sal_Int32 nPos = aTotalOutputSize.Width() - aSpace.Width() - m_aToolBox.GetSizePixel().Width(); - m_aToolBox.SetPosPixel(Point(nPos,m_aToolBox.GetPosPixel().Y())); - - Point aHelpPos = m_aHelpWindow.GetPosPixel(); - m_aHelpWindow.SetSizePixel(Size(aTotalOutputSize.Width() - aHelpPos.X(),aTotalOutputSize.Height() - aHelpPos.Y())); -} -//------------------------------------------------------------------------------ -void OGroupsSortingDialog::checkButtons(sal_Int32 _nRow) -{ - sal_Int32 nGroupCount = m_xGroups->getCount(); - sal_Int32 nRowCount = m_pFieldExpression->GetRowCount(); - sal_Bool bEnabled = nGroupCount > 1; - - if (bEnabled && _nRow > 0 ) - { - m_aToolBox.EnableItem(SID_RPT_GROUPSORT_MOVE_UP, sal_True); - } - else - { - m_aToolBox.EnableItem(SID_RPT_GROUPSORT_MOVE_UP, sal_False); - } - if (bEnabled && _nRow < (nRowCount - 1) ) - { - m_aToolBox.EnableItem(SID_RPT_GROUPSORT_MOVE_DOWN, sal_True); - } - else - { - m_aToolBox.EnableItem(SID_RPT_GROUPSORT_MOVE_DOWN, sal_False); - } - - sal_Int32 nGroupPos = m_pFieldExpression->getGroupPosition(_nRow); - if ( nGroupPos != NO_GROUP ) - { - sal_Bool bEnableDelete = nGroupCount > 0; - m_aToolBox.EnableItem(SID_RPT_GROUPSORT_DELETE, bEnableDelete); - } - else - { - m_aToolBox.EnableItem(SID_RPT_GROUPSORT_DELETE, sal_False); - } -} - -ImageList OGroupsSortingDialog::getImageList(sal_Int16 _eBitmapSet) const -{ - sal_Int16 nN = IMG_CONDFORMAT_DLG_SC; - if ( _eBitmapSet == SFX_SYMBOLS_SIZE_LARGE ) - nN = IMG_CONDFORMAT_DLG_LC; - return ImageList(ModuleRes( nN )); -} - -//------------------------------------------------------------------ -void OGroupsSortingDialog::resizeControls(const Size& _rDiff) -{ - // we use large images so we must change them - if ( _rDiff.Width() || _rDiff.Height() ) - { - Invalidate(); - } -} - -//------------------------------------------------------------------ -// load the images -ImageList OGroupsSortingDialog::getImageList(vcl::ImageListType) SAL_THROW (( com::sun::star::lang::IllegalArgumentException )) -{ - return ImageList(ModuleRes(IMGLST_GROUPSORT_DLG_SC)); -} - -// ============================================================================= -} // rptui -// ============================================================================= - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/reportdesign/source/ui/dlg/GroupsSorting.hrc b/reportdesign/source/ui/dlg/GroupsSorting.hrc deleted file mode 100644 index 2307e33da..000000000 --- a/reportdesign/source/ui/dlg/GroupsSorting.hrc +++ /dev/null @@ -1,69 +0,0 @@ -/************************************************************************* - * - * 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. - * - ************************************************************************/ -#ifndef RPTUI_GROUPSSORTING_HRC -#define RPTUI_GROUPSSORTING_HRC - -#define FT_HEADER (1) -#define LST_HEADERLST (2) -#define FT_FOOTER (3) -#define LST_FOOTERLST (4) -#define FT_GROUPON (5) -#define LST_GROUPONLST (6) -#define FT_GROUPINTERVAL (7) -#define ED_GROUPINTERVALLST (8) -#define FT_KEEPTOGETHER (9) -#define LST_KEEPTOGETHERLST (10) -#define PB_OK (11) -#define PB_CANCEL (12) -#define PB_HELP (13) -#define WND_CONTROL (14) -#define HELP_FIELD (15) -#define FT_ORDER (16) -#define LST_ORDER (17) -#define FL_SEPARATOR1 (18) -#define FT_MOVELABEL (19) -#define PB_UP (20) -#define PB_DOWN (21) -#define FL_SEPARATOR2 (22) -#define FL_SEPARATOR3 (23) -#define TB_TOOLBOX (27) - - -#define CHECKBOX_HEIGHT 8 -#define FIXEDTEXT_HEIGHT 8 -#define FIXEDTEXT_WIDTH 60 -#define RELATED_CONTROLS 4 -#define UNRELATED_CONTROLS 7 -#define EDIT_HEIGHT 12 -#define BUTTON_HEIGHT 14 -#define BUTTON_WIDTH 50 -#define BROWSER_HEIGHT 75 -#define PAGE_WIDTH 120 -#define PAGE_HEIGHT ( 13*UNRELATED_CONTROLS + BROWSER_HEIGHT + BUTTON_HEIGHT + 11*FIXEDTEXT_HEIGHT ) -#define LISTBOX_WIDTH PAGE_WIDTH - 4*UNRELATED_CONTROLS - FIXEDTEXT_WIDTH - -#endif // RPTUI_GROUPSSORTING_HRC diff --git a/reportdesign/source/ui/dlg/GroupsSorting.src b/reportdesign/source/ui/dlg/GroupsSorting.src deleted file mode 100644 index d8f80f45a..000000000 --- a/reportdesign/source/ui/dlg/GroupsSorting.src +++ /dev/null @@ -1,392 +0,0 @@ -/************************************************************************* - * - * 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. - * - ************************************************************************/ -#include "GroupsSorting.hrc" -#include "RptResId.hrc" -#include "helpids.hrc" -#ifndef _GLOBLMN_HRC -#include <svx/globlmn.hrc> -#endif -#ifndef _SBASLTID_HRC -#include <svx/svxids.hrc> -#endif - - -FloatingWindow RID_GROUPS_SORTING -{ - OutputSize = TRUE ; - SVLook = TRUE ; - Size = MAP_APPFONT ( PAGE_WIDTH , PAGE_HEIGHT ) ; - Text [ en-US ] = "Sorting and Grouping" ; - HelpId = HID_RPT_GROUPSSORTING_DLG; - Moveable = TRUE ; - Closeable = TRUE ; - Sizeable = TRUE; - - FixedLine FL_SEPARATOR2 - { - Pos = MAP_APPFONT ( RELATED_CONTROLS , RELATED_CONTROLS ) ; - Size = MAP_APPFONT ( PAGE_WIDTH - 2*RELATED_CONTROLS , FIXEDTEXT_HEIGHT ) ; - Text [ en-US ] = "Groups"; - }; - - Control WND_CONTROL - { - Pos = MAP_APPFONT( UNRELATED_CONTROLS, 2*UNRELATED_CONTROLS ); - Size = MAP_APPFONT( PAGE_WIDTH - 2*UNRELATED_CONTROLS, BROWSER_HEIGHT ); - HelpId = HID_RPT_GROUPSBRW ; - Border = TRUE; - TabStop = TRUE; - }; - - FixedText FT_MOVELABEL - { - Pos = MAP_APPFONT ( UNRELATED_CONTROLS , 3*UNRELATED_CONTROLS + BROWSER_HEIGHT ) ; - Size = MAP_APPFONT ( FIXEDTEXT_WIDTH , FIXEDTEXT_HEIGHT ) ; - Text [ en-US ] = "Group actions" ; - }; - - ToolBox TB_TOOLBOX - { - Pos = MAP_APPFONT ( PAGE_WIDTH - 4*14 - UNRELATED_CONTROLS, 3*UNRELATED_CONTROLS + BROWSER_HEIGHT - 1 ) ; - ButtonType = BUTTON_SYMBOL; - Customize = FALSE; - ItemList = - { - ToolBoxItem - { - Identifier = SID_RPT_GROUPSORT_MOVE_UP ; - HelpID = HID_RPT_GROUPSORT_MOVE_UP ; - Text [ en-US ] = "Move up" ; - Checkable = TRUE; - }; - ToolBoxItem - { - Identifier = SID_RPT_GROUPSORT_MOVE_DOWN ; - HelpID = HID_RPT_GROUPSORT_MOVE_DOWN ; - Text [ en-US ] = "Move down" ; - Checkable = TRUE; - }; - ToolBoxItem - { - Identifier = SID_RPT_GROUPSORT_DELETE ; - HelpID = HID_RPT_GROUPSORT_DELETE ; - Text [ en-US ] = "~Delete" ; - Checkable = TRUE; - }; - }; - }; - - FixedLine FL_SEPARATOR3 - { - Pos = MAP_APPFONT ( RELATED_CONTROLS , 3*UNRELATED_CONTROLS + BROWSER_HEIGHT + BUTTON_HEIGHT) ; - Size = MAP_APPFONT ( PAGE_WIDTH - 2*RELATED_CONTROLS , FIXEDTEXT_HEIGHT ) ; - Text [ en-US ] = "Properties"; - }; - - FixedText FT_ORDER - { - Pos = MAP_APPFONT ( UNRELATED_CONTROLS , 4*UNRELATED_CONTROLS + BROWSER_HEIGHT + BUTTON_HEIGHT + FIXEDTEXT_HEIGHT ) ; - Size = MAP_APPFONT ( FIXEDTEXT_WIDTH , FIXEDTEXT_HEIGHT ) ; - Hide = TRUE; - Text [ en-US ] = "Sorting" ; - }; - - ListBox LST_ORDER - { - HelpID = "reportdesign:ListBox:RID_GROUPS_SORTING:LST_ORDER"; - Border = TRUE; - Pos = MAP_APPFONT(2*UNRELATED_CONTROLS + FIXEDTEXT_WIDTH, 4*UNRELATED_CONTROLS + BROWSER_HEIGHT + BUTTON_HEIGHT + FIXEDTEXT_HEIGHT - 1 ); - Size = MAP_APPFONT( LISTBOX_WIDTH, 60 ); - DropDown = TRUE; - TabStop = TRUE; - Hide = TRUE; - CurPos = 0 ; - StringList [ en-US ] = - { - < "Ascending" ; 0 ; > ; - < "Descending" ; 1 ; > ; - }; - - }; - - FixedText FT_HEADER - { - Pos = MAP_APPFONT ( UNRELATED_CONTROLS , 5*UNRELATED_CONTROLS + BROWSER_HEIGHT + BUTTON_HEIGHT + 2*FIXEDTEXT_HEIGHT) ; - Size = MAP_APPFONT ( FIXEDTEXT_WIDTH , FIXEDTEXT_HEIGHT ) ; - Hide = TRUE; - Text [ en-US ] = "Group Header" ; - - }; - - ListBox LST_HEADERLST - { - HelpID = "reportdesign:ListBox:RID_GROUPS_SORTING:LST_HEADERLST"; - Border = TRUE; - Hide = TRUE; - Pos = MAP_APPFONT( 2*UNRELATED_CONTROLS + FIXEDTEXT_WIDTH, 5*UNRELATED_CONTROLS + BROWSER_HEIGHT + BUTTON_HEIGHT + 2*FIXEDTEXT_HEIGHT -1); - Size = MAP_APPFONT( LISTBOX_WIDTH, 60 ); - DropDown = TRUE; - TabStop = TRUE; - CurPos = 1 ; - StringList [ en-US ] = - { - < "Present" ; Default ; > ; - < "Not present" ; Default ; > ; - }; - }; - - FixedText FT_FOOTER - { - Pos = MAP_APPFONT ( UNRELATED_CONTROLS, 6*UNRELATED_CONTROLS + BROWSER_HEIGHT + BUTTON_HEIGHT + 3*FIXEDTEXT_HEIGHT) ; - Size = MAP_APPFONT ( FIXEDTEXT_WIDTH , FIXEDTEXT_HEIGHT ) ; - Hide = TRUE; - Text [ en-US ] = "Group Footer" ; - - }; - - ListBox LST_FOOTERLST - { - HelpID = "reportdesign:ListBox:RID_GROUPS_SORTING:LST_FOOTERLST"; - Border = TRUE; - Hide = TRUE; - Pos = MAP_APPFONT( 2*UNRELATED_CONTROLS + FIXEDTEXT_WIDTH, 6*UNRELATED_CONTROLS + BROWSER_HEIGHT + BUTTON_HEIGHT + 3*FIXEDTEXT_HEIGHT -1); - Size = MAP_APPFONT( LISTBOX_WIDTH, 60 ); - DropDown = TRUE; - TabStop = TRUE; - CurPos = 1 ; - StringList [ en-US ] = - { - < "Present" ; Default ; > ; - < "Not present" ; Default ; > ; - }; - }; - - FixedText FT_GROUPON - { - Pos = MAP_APPFONT ( UNRELATED_CONTROLS, 7*UNRELATED_CONTROLS + BROWSER_HEIGHT + BUTTON_HEIGHT + 4*FIXEDTEXT_HEIGHT) ; - Size = MAP_APPFONT ( FIXEDTEXT_WIDTH , FIXEDTEXT_HEIGHT ) ; - Hide = TRUE; - Text [ en-US ] = "Group On" ; - - }; - - ListBox LST_GROUPONLST - { - HelpID = "reportdesign:ListBox:RID_GROUPS_SORTING:LST_GROUPONLST"; - Border = TRUE; - Hide = TRUE; - Pos = MAP_APPFONT( 2*UNRELATED_CONTROLS + FIXEDTEXT_WIDTH, 7*UNRELATED_CONTROLS + BROWSER_HEIGHT + BUTTON_HEIGHT + 4*FIXEDTEXT_HEIGHT -1); - Size = MAP_APPFONT( LISTBOX_WIDTH, 60 ); - DropDown = TRUE; - TabStop = TRUE; - CurPos = 0 ; - StringList [ en-US ] = - { - < "Each Value" ; Default ; > ; - }; - }; - - FixedText FT_GROUPINTERVAL - { - Pos = MAP_APPFONT ( UNRELATED_CONTROLS , 8*UNRELATED_CONTROLS + BROWSER_HEIGHT + BUTTON_HEIGHT + 5*FIXEDTEXT_HEIGHT) ; - Size = MAP_APPFONT ( FIXEDTEXT_WIDTH , FIXEDTEXT_HEIGHT ) ; - Hide = TRUE; - Text [ en-US ] = "Group Interval" ; - }; - - NumericField ED_GROUPINTERVALLST - { - HelpID = "reportdesign:NumericField:RID_GROUPS_SORTING:ED_GROUPINTERVALLST"; - Border = TRUE; - Hide = TRUE; - Pos = MAP_APPFONT(2*UNRELATED_CONTROLS + FIXEDTEXT_WIDTH , 8*UNRELATED_CONTROLS + BROWSER_HEIGHT + BUTTON_HEIGHT + 5*FIXEDTEXT_HEIGHT -1); - Size = MAP_APPFONT( LISTBOX_WIDTH, EDIT_HEIGHT ); - TabStop = TRUE; - }; - - FixedText FT_KEEPTOGETHER - { - Pos = MAP_APPFONT ( UNRELATED_CONTROLS , 9*UNRELATED_CONTROLS + BROWSER_HEIGHT + BUTTON_HEIGHT + 6*FIXEDTEXT_HEIGHT) ; - Size = MAP_APPFONT ( FIXEDTEXT_WIDTH , FIXEDTEXT_HEIGHT ) ; - Hide = TRUE; - Text [ en-US ] = "Keep Together" ; - }; - ListBox LST_KEEPTOGETHERLST - { - HelpID = "reportdesign:ListBox:RID_GROUPS_SORTING:LST_KEEPTOGETHERLST"; - Border = TRUE; - Hide = TRUE; - Pos = MAP_APPFONT(2*UNRELATED_CONTROLS + FIXEDTEXT_WIDTH , 9*UNRELATED_CONTROLS + BROWSER_HEIGHT + BUTTON_HEIGHT + 6*FIXEDTEXT_HEIGHT -1); - Size = MAP_APPFONT( LISTBOX_WIDTH, 60 ); - DropDown = TRUE; - TabStop = TRUE; - CurPos = 0 ; - StringList [ en-US ] = - { - < "No" ; 0 ; > ; - < "Whole Group" ; 1 ; > ; - < "With First Detail" ; 2 ; > ; - }; - }; - - FixedLine FL_SEPARATOR1 - { - Pos = MAP_APPFONT ( RELATED_CONTROLS , 10*UNRELATED_CONTROLS + BROWSER_HEIGHT + BUTTON_HEIGHT + 7*FIXEDTEXT_HEIGHT) ; - Size = MAP_APPFONT ( PAGE_WIDTH - 2*RELATED_CONTROLS , FIXEDTEXT_HEIGHT ) ; - Text [ en-US ] = "Help"; - }; - - FixedText HELP_FIELD - { - Pos = MAP_APPFONT ( UNRELATED_CONTROLS , 12*UNRELATED_CONTROLS + BROWSER_HEIGHT + BUTTON_HEIGHT + 7*FIXEDTEXT_HEIGHT) ; - Size = MAP_APPFONT( PAGE_WIDTH - 2*UNRELATED_CONTROLS, 4*FIXEDTEXT_HEIGHT); - WordBreak = TRUE; - }; - -}; - -String STR_RPT_EXPRESSION -{ - Text [ en-US ] = "Field/Expression" ; -}; - -String STR_RPT_SORTING -{ - Text [ en-US ] = "Sort Order" ; -}; - -String STR_RPT_PREFIXCHARS -{ - Text [ en-US ] = "Prefix Characters" ; -}; - -String STR_RPT_YEAR -{ - Text [ en-US ] = "Year" ; -}; - -String STR_RPT_QUARTER -{ - Text [ en-US ] = "Quarter" ; -}; - -String STR_RPT_MONTH -{ - Text [ en-US ] = "Month" ; -}; - -String STR_RPT_WEEK -{ - Text [ en-US ] = "Week" ; -}; - -String STR_RPT_DAY -{ - Text [ en-US ] = "Day" ; -}; - -String STR_RPT_HOUR -{ - Text [ en-US ] = "Hour" ; -}; - -String STR_RPT_MINUTE -{ - Text [ en-US ] = "Minute" ; -}; - -String STR_RPT_INTERVAL -{ - Text [ en-US ] = "Interval" ; -}; - -String STR_RPT_HELP_FIELD -{ - Text [ en-US ] = "Select a field or type an expression to sort or group on." ; -}; - -String STR_RPT_HELP_HEADER -{ - Text [ en-US ] = "Display a header for this group?" ; -}; - -String STR_RPT_HELP_FOOTER -{ - Text [ en-US ] = "Display a footer for this group?" ; -}; - -String STR_RPT_HELP_GROUPON -{ - Text [ en-US ] = "Select the value or range of values that starts a new group." ; -}; - -String STR_RPT_HELP_INTERVAL -{ - Text [ en-US ] = "Interval or number of characters to group on." ; -}; - -String STR_RPT_HELP_KEEP -{ - Text [ en-US ] = "Keep group together on one page?" ; -}; - -String STR_RPT_HELP_SORT -{ - Text [ en-US ] = "Select ascending or descending sort order. Ascending means from A to Z or 0 to 9" ; -}; - -Menu RID_GROUPSROWPOPUPMENU -{ - ItemList = - { - MenuItem - { - ITEM_EDIT_DELETE - }; - }; -}; - - -#define DEF_MASKCOLOR MaskColor = Color { Red = 0xFFFF; Green = 0x0000; Blue = 0xFFFF; } - -#define DEF_IL_GROUPSORT \ -\ - IdList = {\ - SID_RPT_GROUPSORT_MOVE_UP;\ - SID_RPT_GROUPSORT_MOVE_DOWN;\ - SID_RPT_GROUPSORT_DELETE;\ - };\ - IdCount = {\ - 3;\ - } - -ImageList IMGLST_GROUPSORT_DLG_SC -{ - DEF_MASKCOLOR; - prefix = "sc"; - DEF_IL_GROUPSORT ; -}; diff --git a/reportdesign/source/ui/dlg/Navigator.cxx b/reportdesign/source/ui/dlg/Navigator.cxx deleted file mode 100644 index fe3c4356b..000000000 --- a/reportdesign/source/ui/dlg/Navigator.cxx +++ /dev/null @@ -1,967 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * 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. - * - ************************************************************************/ -#include "precompiled_rptui.hxx" - -#include "Navigator.hxx" - -#include "uistrings.hrc" -#include "ReportController.hxx" -#include "UITools.hxx" -#include "RptUndo.hxx" -#include "reportformula.hxx" -#include <com/sun/star/container/XContainerListener.hpp> -#include <com/sun/star/report/XReportDefinition.hpp> -#include <com/sun/star/report/XFixedText.hpp> -#include <com/sun/star/report/XFixedLine.hpp> -#include <com/sun/star/report/XFormattedField.hpp> -#include <com/sun/star/report/XImageControl.hpp> -#include <com/sun/star/report/XShape.hpp> -#include <svx/globlmn.hrc> -#include <svx/svxids.hrc> -#include "helpids.hrc" -#include "RptResId.hrc" -#include "rptui_slotid.hrc" -#include <tools/debug.hxx> -#include <comphelper/propmultiplex.hxx> -#include <comphelper/containermultiplexer.hxx> -#include <comphelper/types.hxx> -#include "cppuhelper/basemutex.hxx" -#include "comphelper/SelectionMultiplex.hxx" -#include <svtools/svtreebx.hxx> -#include <svl/solar.hrc> -#include "ReportVisitor.hxx" -#include "ModuleHelper.hxx" -#include <rtl/ref.hxx> - -#include <boost/bind.hpp> -#include <memory> -#include <algorithm> - -#define RID_SVXIMG_COLLAPSEDNODE (RID_FORMS_START + 2) -#define RID_SVXIMG_EXPANDEDNODE (RID_FORMS_START + 3) -#define DROP_ACTION_TIMER_INITIAL_TICKS 10 -#define DROP_ACTION_TIMER_SCROLL_TICKS 3 -#define DROP_ACTION_TIMER_TICK_BASE 10 - -namespace rptui -{ -using namespace ::com::sun::star; -using namespace utl; -using namespace ::comphelper; - -sal_uInt16 lcl_getImageId(const uno::Reference< report::XReportComponent>& _xElement) -{ - sal_uInt16 nId = 0; - uno::Reference< report::XFixedLine> xFixedLine(_xElement,uno::UNO_QUERY); - if ( uno::Reference< report::XFixedText>(_xElement,uno::UNO_QUERY).is() ) - nId = SID_FM_FIXEDTEXT; - else if ( xFixedLine.is() ) - nId = xFixedLine->getOrientation() ? SID_INSERT_VFIXEDLINE : SID_INSERT_HFIXEDLINE; - else if ( uno::Reference< report::XFormattedField>(_xElement,uno::UNO_QUERY).is() ) - nId = SID_FM_EDIT; - else if ( uno::Reference< report::XImageControl>(_xElement,uno::UNO_QUERY).is() ) - nId = SID_FM_IMAGECONTROL; - else if ( uno::Reference< report::XShape>(_xElement,uno::UNO_QUERY).is() ) - nId = SID_DRAWTBX_CS_BASIC; - return nId; -} -// ----------------------------------------------------------------------------- -::rtl::OUString lcl_getName(const uno::Reference< beans::XPropertySet>& _xElement) -{ - OSL_ENSURE(_xElement.is(),"Found report element which is NULL!"); - ::rtl::OUString sTempName; - _xElement->getPropertyValue(PROPERTY_NAME) >>= sTempName; - ::rtl::OUStringBuffer sName = sTempName; - uno::Reference< report::XFixedText> xFixedText(_xElement,uno::UNO_QUERY); - uno::Reference< report::XReportControlModel> xReportModel(_xElement,uno::UNO_QUERY); - if ( xFixedText.is() ) - { - sName.append(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(" : "))); - sName.append(xFixedText->getLabel()); - } - else if ( xReportModel.is() && _xElement->getPropertySetInfo()->hasPropertyByName(PROPERTY_DATAFIELD) ) - { - ReportFormula aFormula( xReportModel->getDataField() ); - if ( aFormula.isValid() ) - { - sName.append(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(" : "))); - sName.append( aFormula.getUndecoratedContent() ); - } - } - return sName.makeStringAndClear(); -} -// ----------------------------------------------------------------------------- - -class NavigatorTree : public ::cppu::BaseMutex - , public SvTreeListBox - , public reportdesign::ITraverseReport - , public comphelper::OSelectionChangeListener - , public ::comphelper::OPropertyChangeListener -{ - class UserData; - friend class UserData; - class UserData : public ::cppu::BaseMutex - ,public ::comphelper::OPropertyChangeListener - ,public ::comphelper::OContainerListener - { - uno::Reference< uno::XInterface > m_xContent; - ::rtl::Reference< comphelper::OPropertyChangeMultiplexer> m_pListener; - ::rtl::Reference< comphelper::OContainerListenerAdapter> m_pContainerListener; - NavigatorTree* m_pTree; - public: - UserData(NavigatorTree* _pTree,const uno::Reference<uno::XInterface>& _xContent); - ~UserData(); - - inline uno::Reference< uno::XInterface > getContent() const { return m_xContent; } - inline void setContent(const uno::Reference< uno::XInterface >& _xContent) { m_xContent = _xContent; } - protected: - // OPropertyChangeListener - virtual void _propertyChanged(const beans::PropertyChangeEvent& _rEvent) throw( uno::RuntimeException); - - // OContainerListener - virtual void _elementInserted( const container::ContainerEvent& _rEvent ) throw(uno::RuntimeException); - virtual void _elementRemoved( const container::ContainerEvent& _Event ) throw(uno::RuntimeException); - virtual void _elementReplaced( const container::ContainerEvent& _rEvent ) throw(uno::RuntimeException); - virtual void _disposing(const lang::EventObject& _rSource) throw( uno::RuntimeException); - }; - - enum DROP_ACTION { DA_SCROLLUP, DA_SCROLLDOWN, DA_EXPANDNODE }; - AutoTimer m_aDropActionTimer; - Timer m_aSynchronizeTimer; - ImageList m_aNavigatorImages; - Point m_aTimerTriggered; // die Position, an der der DropTimer angeschaltet wurde - DROP_ACTION m_aDropActionType; - OReportController& m_rController; - SvLBoxEntry* m_pMasterReport; - SvLBoxEntry* m_pDragedEntry; - ::rtl::Reference< comphelper::OPropertyChangeMultiplexer> m_pReportListener; - ::rtl::Reference< comphelper::OSelectionChangeMultiplexer> m_pSelectionListener; - unsigned short m_nTimerCounter; - - SvLBoxEntry* insertEntry(const ::rtl::OUString& _sName,SvLBoxEntry* _pParent,sal_uInt16 _nImageId,sal_uLong _nPosition,UserData* _pData); - void traverseSection(const uno::Reference< report::XSection>& _xSection,SvLBoxEntry* _pParent,sal_uInt16 _nImageId,sal_uLong _nPosition = LIST_APPEND); - void traverseFunctions(const uno::Reference< report::XFunctions>& _xFunctions,SvLBoxEntry* _pParent); - - NavigatorTree(const NavigatorTree&); - void operator =(const NavigatorTree&); -protected: - virtual void Command( const CommandEvent& rEvt ); - // DragSourceHelper overridables - virtual void StartDrag( sal_Int8 nAction, const Point& rPosPixel ); - // DropTargetHelper overridables - virtual sal_Int8 AcceptDrop( const AcceptDropEvent& _rEvt ); - virtual sal_Int8 ExecuteDrop( const ExecuteDropEvent& _rEvt ); - - // OSelectionChangeListener - virtual void _disposing(const lang::EventObject& _rSource) throw( uno::RuntimeException); - - // OPropertyChangeListener - virtual void _propertyChanged(const beans::PropertyChangeEvent& _rEvent) throw( uno::RuntimeException); - - // OContainerListener Helper - void _elementInserted( const container::ContainerEvent& _rEvent ); - void _elementRemoved( const container::ContainerEvent& _Event ); - void _elementReplaced( const container::ContainerEvent& _rEvent ); - -public: - NavigatorTree(Window* pParent,OReportController& _rController ); - virtual ~NavigatorTree(); - - DECL_LINK(OnEntrySelDesel, NavigatorTree*); - DECL_LINK( OnDropActionTimer, void* ); - - virtual void _selectionChanged( const lang::EventObject& aEvent ) throw (uno::RuntimeException); - - // ITraverseReport - virtual void traverseReport(const uno::Reference< report::XReportDefinition>& _xReport); - virtual void traverseReportFunctions(const uno::Reference< report::XFunctions>& _xFunctions); - virtual void traverseReportHeader(const uno::Reference< report::XSection>& _xSection); - virtual void traverseReportFooter(const uno::Reference< report::XSection>& _xSection); - virtual void traversePageHeader(const uno::Reference< report::XSection>& _xSection); - virtual void traversePageFooter(const uno::Reference< report::XSection>& _xSection); - - virtual void traverseGroups(const uno::Reference< report::XGroups>& _xGroups); - virtual void traverseGroup(const uno::Reference< report::XGroup>& _xGroup); - virtual void traverseGroupFunctions(const uno::Reference< report::XFunctions>& _xFunctions); - virtual void traverseGroupHeader(const uno::Reference< report::XSection>& _xSection); - virtual void traverseGroupFooter(const uno::Reference< report::XSection>& _xSection); - - virtual void traverseDetail(const uno::Reference< report::XSection>& _xSection); - - SvLBoxEntry* find(const uno::Reference< uno::XInterface >& _xContent); - void removeEntry(SvLBoxEntry* _pEntry,bool _bRemove = true); -private: - using SvTreeListBox::ExecuteDrop; -}; -DBG_NAME(rpt_NavigatorTree) -// ----------------------------------------------------------------------------- -NavigatorTree::NavigatorTree( Window* pParent,OReportController& _rController ) - :SvTreeListBox( pParent, WB_TABSTOP| WB_HASBUTTONS|WB_HASLINES|WB_BORDER|WB_HSCROLL|WB_HASBUTTONSATROOT ) - ,comphelper::OSelectionChangeListener(m_aMutex) - ,OPropertyChangeListener(m_aMutex) - ,m_aTimerTriggered(-1,-1) - ,m_aDropActionType( DA_SCROLLUP ) - ,m_rController(_rController) - ,m_pMasterReport(NULL) - ,m_pDragedEntry(NULL) - ,m_nTimerCounter( DROP_ACTION_TIMER_INITIAL_TICKS ) -{ - DBG_CTOR(rpt_NavigatorTree,NULL); - m_pReportListener = new OPropertyChangeMultiplexer(this,m_rController.getReportDefinition().get()); - m_pReportListener->addProperty(PROPERTY_PAGEHEADERON); - m_pReportListener->addProperty(PROPERTY_PAGEFOOTERON); - m_pReportListener->addProperty(PROPERTY_REPORTHEADERON); - m_pReportListener->addProperty(PROPERTY_REPORTFOOTERON); - - m_pSelectionListener = new OSelectionChangeMultiplexer(this,&m_rController); - - SetHelpId( HID_REPORT_NAVIGATOR_TREE ); - - m_aNavigatorImages = ImageList( ModuleRes( RID_SVXIMGLIST_RPTEXPL ) ); - - SetNodeBitmaps( - m_aNavigatorImages.GetImage( RID_SVXIMG_COLLAPSEDNODE ), - m_aNavigatorImages.GetImage( RID_SVXIMG_EXPANDEDNODE ) - ); - - SetDragDropMode(0xFFFF); - EnableInplaceEditing( sal_False ); - SetSelectionMode(MULTIPLE_SELECTION); - Clear(); - - m_aDropActionTimer.SetTimeoutHdl(LINK(this, NavigatorTree, OnDropActionTimer)); - SetSelectHdl(LINK(this, NavigatorTree, OnEntrySelDesel)); - SetDeselectHdl(LINK(this, NavigatorTree, OnEntrySelDesel)); -} -// ----------------------------------------------------------------------------- -NavigatorTree::~NavigatorTree() -{ - SvLBoxEntry* pCurrent = First(); - while ( pCurrent ) - { - delete static_cast<UserData*>(pCurrent->GetUserData()); - pCurrent = Next(pCurrent); - } - m_pReportListener->dispose(); - m_pSelectionListener->dispose(); - DBG_DTOR(rpt_NavigatorTree,NULL); -} -//------------------------------------------------------------------------------ -void NavigatorTree::Command( const CommandEvent& rEvt ) -{ - sal_Bool bHandled = sal_False; - switch( rEvt.GetCommand() ) - { - case COMMAND_CONTEXTMENU: - { - // die Stelle, an der geklickt wurde - SvLBoxEntry* ptClickedOn = NULL; - ::Point aWhere; - if (rEvt.IsMouseEvent()) - { - aWhere = rEvt.GetMousePosPixel(); - ptClickedOn = GetEntry(aWhere); - if (ptClickedOn == NULL) - break; - if ( !IsSelected(ptClickedOn) ) - { - SelectAll(sal_False); - Select(ptClickedOn, sal_True); - SetCurEntry(ptClickedOn); - } - } - else - { - ptClickedOn = GetCurEntry(); - if ( !ptClickedOn ) - break; - aWhere = GetEntryPosition(ptClickedOn); - } - UserData* pData = static_cast<UserData*>(ptClickedOn->GetUserData()); - uno::Reference< report::XFunctionsSupplier> xSupplier(pData->getContent(),uno::UNO_QUERY); - uno::Reference< report::XFunctions> xFunctions(pData->getContent(),uno::UNO_QUERY); - uno::Reference< report::XGroup> xGroup(pData->getContent(),uno::UNO_QUERY); - sal_Bool bDeleteAllowed = m_rController.isEditable() && (xGroup.is() || - uno::Reference< report::XFunction>(pData->getContent(),uno::UNO_QUERY).is()); - PopupMenu aContextMenu( ModuleRes( RID_MENU_NAVIGATOR ) ); - - sal_uInt16 nCount = aContextMenu.GetItemCount(); - for (sal_uInt16 i = 0; i < nCount; ++i) - { - if ( MENUITEM_SEPARATOR != aContextMenu.GetItemType(i)) - { - sal_uInt16 nId = aContextMenu.GetItemId(i); - - aContextMenu.CheckItem(nId,m_rController.isCommandChecked(nId)); - sal_Bool bEnabled = m_rController.isCommandEnabled(nId); - if ( nId == SID_RPT_NEW_FUNCTION ) - aContextMenu.EnableItem(nId,m_rController.isEditable() && (xSupplier.is() || xFunctions.is()) ); - // special condition, check for function and group - else if ( nId == SID_DELETE ) - aContextMenu.EnableItem(SID_DELETE,bDeleteAllowed); - else - aContextMenu.EnableItem(nId,bEnabled); - } - } - sal_uInt16 nId = aContextMenu.Execute(this, aWhere); - if ( nId ) - { - uno::Sequence< beans::PropertyValue> aArgs; - if ( nId == SID_RPT_NEW_FUNCTION ) - { - aArgs.realloc(1); - aArgs[0].Value <<= (xFunctions.is() ? xFunctions : xSupplier->getFunctions()); - } - else if ( nId == SID_DELETE ) - { - if ( xGroup.is() ) - nId = SID_GROUP_REMOVE; - aArgs.realloc(1); - aArgs[0].Name = PROPERTY_GROUP; - aArgs[0].Value <<= pData->getContent(); - } - m_rController.executeUnChecked(nId,aArgs); - } - - bHandled = sal_True; - } break; - } - - if (!bHandled) - SvTreeListBox::Command( rEvt ); -} -// ----------------------------------------------------------------------------- -sal_Int8 NavigatorTree::AcceptDrop( const AcceptDropEvent& _rEvt ) -{ - sal_Int8 nDropOption = DND_ACTION_NONE; - ::Point aDropPos = _rEvt.maPosPixel; - if (_rEvt.mbLeaving) - { - if (m_aDropActionTimer.IsActive()) - m_aDropActionTimer.Stop(); - } - else - { - bool bNeedTrigger = false; - // auf dem ersten Eintrag ? - if ((aDropPos.Y() >= 0) && (aDropPos.Y() < GetEntryHeight())) - { - m_aDropActionType = DA_SCROLLUP; - bNeedTrigger = true; - } - else if ((aDropPos.Y() < GetSizePixel().Height()) && (aDropPos.Y() >= GetSizePixel().Height() - GetEntryHeight())) - { - m_aDropActionType = DA_SCROLLDOWN; - bNeedTrigger = true; - } - else - { - SvLBoxEntry* pDropppedOn = GetEntry(aDropPos); - if (pDropppedOn && (GetChildCount(pDropppedOn) > 0) && !IsExpanded(pDropppedOn)) - { - m_aDropActionType = DA_EXPANDNODE; - bNeedTrigger = true; - } - } - - if (bNeedTrigger && (m_aTimerTriggered != aDropPos)) - { - // neu anfangen zu zaehlen - m_nTimerCounter = DROP_ACTION_TIMER_INITIAL_TICKS; - // die Pos merken, da ich auch AcceptDrops bekomme, wenn sich die Maus gar nicht bewegt hat - m_aTimerTriggered = aDropPos; - // und den Timer los - if (!m_aDropActionTimer.IsActive()) // gibt es den Timer schon ? - { - m_aDropActionTimer.SetTimeout(DROP_ACTION_TIMER_TICK_BASE); - m_aDropActionTimer.Start(); - } - } - else if (!bNeedTrigger) - m_aDropActionTimer.Stop(); - } - - return nDropOption; -} -// ------------------------------------------------------------------------- -sal_Int8 NavigatorTree::ExecuteDrop( const ExecuteDropEvent& /*_rEvt*/ ) -{ - return DND_ACTION_NONE; -} -// ------------------------------------------------------------------------- -void NavigatorTree::StartDrag( sal_Int8 /*_nAction*/, const Point& _rPosPixel ) -{ - m_pDragedEntry = GetEntry(_rPosPixel); - if ( m_pDragedEntry ) - { - EndSelection(); - } -} -//------------------------------------------------------------------------ -IMPL_LINK( NavigatorTree, OnDropActionTimer, void*, EMPTYARG ) -{ - if (--m_nTimerCounter > 0) - return 0L; - - switch ( m_aDropActionType ) - { - case DA_EXPANDNODE: - { - SvLBoxEntry* pToExpand = GetEntry(m_aTimerTriggered); - if (pToExpand && (GetChildCount(pToExpand) > 0) && !IsExpanded(pToExpand)) - // tja, eigentlich muesste ich noch testen, ob die Node nicht schon expandiert ist, aber ich - // habe dazu weder in den Basisklassen noch im Model eine Methode gefunden ... - // aber ich denke, die BK sollte es auch so vertragen - Expand(pToExpand); - - // nach dem Expand habe ich im Gegensatz zum Scrollen natuerlich nix mehr zu tun - m_aDropActionTimer.Stop(); - } - break; - - case DA_SCROLLUP : - ScrollOutputArea( 1 ); - m_nTimerCounter = DROP_ACTION_TIMER_SCROLL_TICKS; - break; - - case DA_SCROLLDOWN : - ScrollOutputArea( -1 ); - m_nTimerCounter = DROP_ACTION_TIMER_SCROLL_TICKS; - break; - - } - - return 0L; -} - -// ----------------------------------------------------------------------------- -IMPL_LINK(NavigatorTree, OnEntrySelDesel, NavigatorTree*, /*pThis*/) -{ - if ( !m_pSelectionListener->locked() ) - { - m_pSelectionListener->lock(); - SvLBoxEntry* pEntry = GetCurEntry(); - uno::Any aSelection; - if ( IsSelected(pEntry) ) - aSelection <<= static_cast<UserData*>(pEntry->GetUserData())->getContent(); - m_rController.select(aSelection); - m_pSelectionListener->unlock(); - } - - return 0L; -} -// ----------------------------------------------------------------------------- -void NavigatorTree::_selectionChanged( const lang::EventObject& aEvent ) throw (uno::RuntimeException) -{ - m_pSelectionListener->lock(); - uno::Reference< view::XSelectionSupplier> xSelectionSupplier(aEvent.Source,uno::UNO_QUERY); - uno::Any aSec = xSelectionSupplier->getSelection(); - uno::Sequence< uno::Reference< report::XReportComponent > > aSelection; - aSec >>= aSelection; - if ( !aSelection.getLength() ) - { - uno::Reference< uno::XInterface> xSelection(aSec,uno::UNO_QUERY); - SvLBoxEntry* pEntry = find(xSelection); - if ( pEntry && !IsSelected(pEntry) ) - { - Select(pEntry, sal_True); - SetCurEntry(pEntry); - } - else if ( !pEntry ) - SelectAll(sal_False,sal_False); - } - else - { - const uno::Reference< report::XReportComponent >* pIter = aSelection.getConstArray(); - const uno::Reference< report::XReportComponent >* pEnd = pIter + aSelection.getLength(); - for (; pIter != pEnd; ++pIter) - { - SvLBoxEntry* pEntry = find(*pIter); - if ( pEntry && !IsSelected(pEntry) ) - { - Select(pEntry, sal_True); - SetCurEntry(pEntry); - } - } - } - m_pSelectionListener->unlock(); -} -// ----------------------------------------------------------------------------- -SvLBoxEntry* NavigatorTree::insertEntry(const ::rtl::OUString& _sName,SvLBoxEntry* _pParent,sal_uInt16 _nImageId,sal_uLong _nPosition,UserData* _pData) -{ - SvLBoxEntry* pEntry = NULL; - if ( _nImageId ) - { - const Image aImage( m_aNavigatorImages.GetImage( _nImageId ) ); - pEntry = InsertEntry(_sName,aImage,aImage,_pParent,sal_False,_nPosition,_pData); - } - else - pEntry = InsertEntry(_sName,_pParent,sal_False,_nPosition,_pData); - return pEntry; -} -// ----------------------------------------------------------------------------- -void NavigatorTree::traverseSection(const uno::Reference< report::XSection>& _xSection,SvLBoxEntry* _pParent,sal_uInt16 _nImageId,sal_uLong _nPosition) -{ - SvLBoxEntry* pSection = insertEntry(_xSection->getName(),_pParent,_nImageId,_nPosition,new UserData(this,_xSection)); - const sal_Int32 nCount = _xSection->getCount(); - for (sal_Int32 i = 0; i < nCount; ++i) - { - uno::Reference< report::XReportComponent> xElement(_xSection->getByIndex(i),uno::UNO_QUERY_THROW); - OSL_ENSURE(xElement.is(),"Found report element which is NULL!"); - insertEntry(lcl_getName(xElement.get()),pSection,lcl_getImageId(xElement),LIST_APPEND,new UserData(this,xElement)); - uno::Reference< report::XReportDefinition> xSubReport(xElement,uno::UNO_QUERY); - if ( xSubReport.is() ) - { - m_pMasterReport = find(_xSection->getReportDefinition()); - reportdesign::OReportVisitor aSubVisitor(this); - aSubVisitor.start(xSubReport); - } - } -} -// ----------------------------------------------------------------------------- -void NavigatorTree::traverseFunctions(const uno::Reference< report::XFunctions>& _xFunctions,SvLBoxEntry* _pParent) -{ - SvLBoxEntry* pFunctions = insertEntry(String(ModuleRes(RID_STR_FUNCTIONS)),_pParent,SID_RPT_NEW_FUNCTION,LIST_APPEND,new UserData(this,_xFunctions)); - const sal_Int32 nCount = _xFunctions->getCount(); - for (sal_Int32 i = 0; i< nCount; ++i) - { - uno::Reference< report::XFunction> xElement(_xFunctions->getByIndex(i),uno::UNO_QUERY); - insertEntry(xElement->getName(),pFunctions,SID_RPT_NEW_FUNCTION,LIST_APPEND,new UserData(this,xElement)); - } -} -// ----------------------------------------------------------------------------- -SvLBoxEntry* NavigatorTree::find(const uno::Reference< uno::XInterface >& _xContent) -{ - SvLBoxEntry* pRet = NULL; - if ( _xContent.is() ) - { - SvLBoxEntry* pCurrent = First(); - while ( pCurrent ) - { - UserData* pData = static_cast<UserData*>(pCurrent->GetUserData()); - OSL_ENSURE(pData,"No UserData set an entry!"); - if ( pData->getContent() == _xContent ) - { - pRet = pCurrent; - break; - } - pCurrent = Next(pCurrent); - } - } - return pRet; -} -// ----------------------------------------------------------------------------- -// ITraverseReport -// ----------------------------------------------------------------------------- -void NavigatorTree::traverseReport(const uno::Reference< report::XReportDefinition>& _xReport) -{ - insertEntry(_xReport->getName(),m_pMasterReport,SID_SELECT_REPORT,LIST_APPEND,new UserData(this,_xReport)); -} -// ----------------------------------------------------------------------------- -void NavigatorTree::traverseReportFunctions(const uno::Reference< report::XFunctions>& _xFunctions) -{ - SvLBoxEntry* pReport = find(_xFunctions->getParent()); - traverseFunctions(_xFunctions,pReport); -} -// ----------------------------------------------------------------------------- -void NavigatorTree::traverseReportHeader(const uno::Reference< report::XSection>& _xSection) -{ - SvLBoxEntry* pReport = find(_xSection->getReportDefinition()); - traverseSection(_xSection,pReport,SID_REPORTHEADERFOOTER); -} -// ----------------------------------------------------------------------------- -void NavigatorTree::traverseReportFooter(const uno::Reference< report::XSection>& _xSection) -{ - SvLBoxEntry* pReport = find(_xSection->getReportDefinition()); - traverseSection(_xSection,pReport,SID_REPORTHEADERFOOTER); -} -// ----------------------------------------------------------------------------- -void NavigatorTree::traversePageHeader(const uno::Reference< report::XSection>& _xSection) -{ - SvLBoxEntry* pReport = find(_xSection->getReportDefinition()); - traverseSection(_xSection,pReport,SID_PAGEHEADERFOOTER); -} -// ----------------------------------------------------------------------------- -void NavigatorTree::traversePageFooter(const uno::Reference< report::XSection>& _xSection) -{ - SvLBoxEntry* pReport = find(_xSection->getReportDefinition()); - traverseSection(_xSection,pReport,SID_PAGEHEADERFOOTER); -} -// ----------------------------------------------------------------------------- -void NavigatorTree::traverseGroups(const uno::Reference< report::XGroups>& _xGroups) -{ - SvLBoxEntry* pReport = find(_xGroups->getReportDefinition()); - insertEntry(String(ModuleRes(RID_STR_GROUPS)),pReport,SID_SORTINGANDGROUPING,LIST_APPEND,new UserData(this,_xGroups)); -} -// ----------------------------------------------------------------------------- -void NavigatorTree::traverseGroup(const uno::Reference< report::XGroup>& _xGroup) -{ - uno::Reference< report::XGroups> xGroups(_xGroup->getParent(),uno::UNO_QUERY); - SvLBoxEntry* pGroups = find(xGroups); - OSL_ENSURE(pGroups,"No Groups inserted so far. Why!"); - insertEntry(_xGroup->getExpression(),pGroups,SID_GROUP,rptui::getPositionInIndexAccess(xGroups.get(),_xGroup),new UserData(this,_xGroup)); -} -// ----------------------------------------------------------------------------- -void NavigatorTree::traverseGroupFunctions(const uno::Reference< report::XFunctions>& _xFunctions) -{ - SvLBoxEntry* pGroup = find(_xFunctions->getParent()); - traverseFunctions(_xFunctions,pGroup); -} -// ----------------------------------------------------------------------------- -void NavigatorTree::traverseGroupHeader(const uno::Reference< report::XSection>& _xSection) -{ - SvLBoxEntry* pGroup = find(_xSection->getGroup()); - OSL_ENSURE(pGroup,"No group found"); - traverseSection(_xSection,pGroup,SID_GROUPHEADER,1); -} -// ----------------------------------------------------------------------------- -void NavigatorTree::traverseGroupFooter(const uno::Reference< report::XSection>& _xSection) -{ - SvLBoxEntry* pGroup = find(_xSection->getGroup()); - OSL_ENSURE(pGroup,"No group found"); - traverseSection(_xSection,pGroup,SID_GROUPFOOTER); -} -// ----------------------------------------------------------------------------- -void NavigatorTree::traverseDetail(const uno::Reference< report::XSection>& _xSection) -{ - uno::Reference< report::XReportDefinition> xReport = _xSection->getReportDefinition(); - SvLBoxEntry* pParent = find(xReport); - traverseSection(_xSection,pParent,SID_ICON_DETAIL); -} -// ----------------------------------------------------------------------------- -void NavigatorTree::_propertyChanged(const beans::PropertyChangeEvent& _rEvent) throw( uno::RuntimeException) -{ - uno::Reference< report::XReportDefinition> xReport(_rEvent.Source,uno::UNO_QUERY); - if ( xReport.is() ) - { - sal_Bool bEnabled = sal_False; - _rEvent.NewValue >>= bEnabled; - if ( bEnabled ) - { - SvLBoxEntry* pParent = find(xReport); - if ( _rEvent.PropertyName == PROPERTY_REPORTHEADERON ) - { - sal_uLong nPos = xReport->getReportHeaderOn() ? 2 : 1; - traverseSection(xReport->getReportHeader(),pParent,SID_REPORTHEADERFOOTER,nPos); - } - else if ( _rEvent.PropertyName == PROPERTY_PAGEHEADERON ) - { - traverseSection(xReport->getPageHeader(),pParent, SID_PAGEHEADERFOOTER,1); - } - else if ( _rEvent.PropertyName == PROPERTY_PAGEFOOTERON ) - traverseSection(xReport->getPageFooter(),pParent, SID_PAGEHEADERFOOTER); - else if ( _rEvent.PropertyName == PROPERTY_REPORTFOOTERON ) - { - sal_uLong nPos = xReport->getPageFooterOn() ? (GetLevelChildCount(pParent) - 1) : LIST_APPEND; - traverseSection(xReport->getReportFooter(),pParent,SID_REPORTHEADERFOOTER,nPos); - } - } - } -} -// ----------------------------------------------------------------------------- -void NavigatorTree::_elementInserted( const container::ContainerEvent& _rEvent ) -{ - SvLBoxEntry* pEntry = find(_rEvent.Source); - uno::Reference<beans::XPropertySet> xProp(_rEvent.Element,uno::UNO_QUERY_THROW); - ::rtl::OUString sName; - uno::Reference< beans::XPropertySetInfo> xInfo = xProp->getPropertySetInfo(); - if ( xInfo.is() ) - { - if ( xInfo->hasPropertyByName(PROPERTY_NAME) ) - xProp->getPropertyValue(PROPERTY_NAME) >>= sName; - else if ( xInfo->hasPropertyByName(PROPERTY_EXPRESSION) ) - xProp->getPropertyValue(PROPERTY_EXPRESSION) >>= sName; - } - uno::Reference< report::XGroup> xGroup(xProp,uno::UNO_QUERY); - if ( xGroup.is() ) - { - reportdesign::OReportVisitor aSubVisitor(this); - aSubVisitor.start(xGroup); - } - else - { - uno::Reference< report::XReportComponent> xElement(xProp,uno::UNO_QUERY); - if ( xProp.is() ) - sName = lcl_getName(xProp); - insertEntry(sName,pEntry,(!xElement.is() ? sal_uInt16(SID_RPT_NEW_FUNCTION) : lcl_getImageId(xElement)),LIST_APPEND,new UserData(this,xProp)); - } - if ( !IsExpanded(pEntry) ) - Expand(pEntry); -} -// ----------------------------------------------------------------------------- -void NavigatorTree::_elementRemoved( const container::ContainerEvent& _rEvent ) -{ - uno::Reference<beans::XPropertySet> xProp(_rEvent.Element,uno::UNO_QUERY); - SvLBoxEntry* pEntry = find(xProp); - OSL_ENSURE(pEntry,"NavigatorTree::_elementRemoved: No Entry found!"); - - if ( pEntry ) - { - SvLBoxEntry* pParent = GetParent(pEntry); - removeEntry(pEntry); - PaintEntry(pParent); - } -} -// ----------------------------------------------------------------------------- -void NavigatorTree::_elementReplaced( const container::ContainerEvent& _rEvent ) -{ - uno::Reference<beans::XPropertySet> xProp(_rEvent.ReplacedElement,uno::UNO_QUERY); - SvLBoxEntry* pEntry = find(xProp); - if ( pEntry ) - { - UserData* pData = static_cast<UserData*>(pEntry->GetUserData()); - xProp.set(_rEvent.Element,uno::UNO_QUERY); - pData->setContent(xProp); - ::rtl::OUString sName; - xProp->getPropertyValue(PROPERTY_NAME) >>= sName; - SetEntryText(pEntry,sName); - } -} -// ----------------------------------------------------------------------------- -void NavigatorTree::_disposing(const lang::EventObject& _rSource)throw( uno::RuntimeException) -{ - removeEntry(find(_rSource.Source)); -} -// ----------------------------------------------------------------------------- -void NavigatorTree::removeEntry(SvLBoxEntry* _pEntry,bool _bRemove) -{ - if ( _pEntry ) - { - SvLBoxEntry* pChild = FirstChild(_pEntry); - while( pChild ) - { - removeEntry(pChild,false); - pChild = NextSibling(pChild); - } - delete static_cast<UserData*>(_pEntry->GetUserData()); - if ( _bRemove ) - GetModel()->Remove(_pEntry); - } -} -DBG_NAME(rpt_NavigatorTree_UserData) -// ----------------------------------------------------------------------------- -NavigatorTree::UserData::UserData(NavigatorTree* _pTree,const uno::Reference<uno::XInterface>& _xContent) - : OPropertyChangeListener(m_aMutex) - , OContainerListener(m_aMutex) - , m_xContent(_xContent) - , m_pTree(_pTree) -{ - DBG_CTOR(rpt_NavigatorTree_UserData,NULL); - uno::Reference<beans::XPropertySet> xProp(m_xContent,uno::UNO_QUERY); - if ( xProp.is() ) - { - uno::Reference< beans::XPropertySetInfo> xInfo = xProp->getPropertySetInfo(); - if ( xInfo.is() ) - { - m_pListener = new ::comphelper::OPropertyChangeMultiplexer(this,xProp); - if ( xInfo->hasPropertyByName(PROPERTY_NAME) ) - m_pListener->addProperty(PROPERTY_NAME); - else if ( xInfo->hasPropertyByName(PROPERTY_EXPRESSION) ) - m_pListener->addProperty(PROPERTY_EXPRESSION); - if ( xInfo->hasPropertyByName(PROPERTY_DATAFIELD) ) - m_pListener->addProperty(PROPERTY_DATAFIELD); - if ( xInfo->hasPropertyByName(PROPERTY_LABEL) ) - m_pListener->addProperty(PROPERTY_LABEL); - if ( xInfo->hasPropertyByName(PROPERTY_HEADERON) ) - m_pListener->addProperty(PROPERTY_HEADERON); - if ( xInfo->hasPropertyByName(PROPERTY_FOOTERON) ) - m_pListener->addProperty(PROPERTY_FOOTERON); - } - } - uno::Reference< container::XContainer> xContainer(m_xContent,uno::UNO_QUERY); - if ( xContainer.is() ) - { - m_pContainerListener = new ::comphelper::OContainerListenerAdapter(this,xContainer); - } -} -// ----------------------------------------------------------------------------- -NavigatorTree::UserData::~UserData() -{ - DBG_DTOR(rpt_NavigatorTree_UserData,NULL); - if ( m_pContainerListener.is() ) - m_pContainerListener->dispose(); - if ( m_pListener.is() ) - m_pListener->dispose(); -} -// ----------------------------------------------------------------------------- -// OPropertyChangeListener -void NavigatorTree::UserData::_propertyChanged(const beans::PropertyChangeEvent& _rEvent) throw( uno::RuntimeException) -{ - SvLBoxEntry* pEntry = m_pTree->find(_rEvent.Source); - OSL_ENSURE(pEntry,"No entry could be found! Why not!"); - const bool bFooterOn = (PROPERTY_FOOTERON == _rEvent.PropertyName); - try - { - if ( bFooterOn || PROPERTY_HEADERON == _rEvent.PropertyName ) - { - sal_Int32 nPos = 1; - uno::Reference< report::XGroup> xGroup(_rEvent.Source,uno::UNO_QUERY); - ::std::mem_fun_t< sal_Bool,OGroupHelper> pIsOn = ::std::mem_fun(&OGroupHelper::getHeaderOn); - ::std::mem_fun_t< uno::Reference<report::XSection> ,OGroupHelper> pMemFunSection = ::std::mem_fun(&OGroupHelper::getHeader); - if ( bFooterOn ) - { - pIsOn = ::std::mem_fun(&OGroupHelper::getFooterOn); - pMemFunSection = ::std::mem_fun(&OGroupHelper::getFooter); - nPos = m_pTree->GetChildCount(pEntry) - 1; - } - - OGroupHelper aGroupHelper(xGroup); - if ( pIsOn(&aGroupHelper) ) - { - if ( bFooterOn ) - ++nPos; - m_pTree->traverseSection(pMemFunSection(&aGroupHelper),pEntry,bFooterOn ? SID_GROUPFOOTER : SID_GROUPHEADER,nPos); - } - } - else if ( PROPERTY_EXPRESSION == _rEvent.PropertyName) - { - ::rtl::OUString sNewName; - _rEvent.NewValue >>= sNewName; - m_pTree->SetEntryText(pEntry,sNewName); - } - else if ( PROPERTY_DATAFIELD == _rEvent.PropertyName || PROPERTY_LABEL == _rEvent.PropertyName || PROPERTY_NAME == _rEvent.PropertyName ) - { - uno::Reference<beans::XPropertySet> xProp(_rEvent.Source,uno::UNO_QUERY); - m_pTree->SetEntryText(pEntry,lcl_getName(xProp)); - } - } - catch(uno::Exception) - {} -} -// ----------------------------------------------------------------------------- -void NavigatorTree::UserData::_elementInserted( const container::ContainerEvent& _rEvent ) throw(uno::RuntimeException) -{ - m_pTree->_elementInserted( _rEvent ); -} -// ----------------------------------------------------------------------------- -void NavigatorTree::UserData::_elementRemoved( const container::ContainerEvent& _rEvent ) throw(uno::RuntimeException) -{ - m_pTree->_elementRemoved( _rEvent ); -} -// ----------------------------------------------------------------------------- -void NavigatorTree::UserData::_elementReplaced( const container::ContainerEvent& _rEvent ) throw(uno::RuntimeException) -{ - m_pTree->_elementReplaced( _rEvent ); -} -// ----------------------------------------------------------------------------- -void NavigatorTree::UserData::_disposing(const lang::EventObject& _rSource) throw( uno::RuntimeException) -{ - m_pTree->_disposing( _rSource ); -} -// ----------------------------------------------------------------------------- -// class ONavigatorImpl -// ----------------------------------------------------------------------------- -class ONavigatorImpl -{ - ONavigatorImpl(const ONavigatorImpl&); - void operator =(const ONavigatorImpl&); -public: - ONavigatorImpl(OReportController& _rController,ONavigator* _pParent); - virtual ~ONavigatorImpl(); - - uno::Reference< report::XReportDefinition> m_xReport; - ::rptui::OReportController& m_rController; - ::std::auto_ptr<NavigatorTree> m_pNavigatorTree; -}; - -ONavigatorImpl::ONavigatorImpl(OReportController& _rController,ONavigator* _pParent) - :m_xReport(_rController.getReportDefinition()) - ,m_rController(_rController) - ,m_pNavigatorTree(new NavigatorTree(_pParent,_rController)) -{ - reportdesign::OReportVisitor aVisitor(m_pNavigatorTree.get()); - aVisitor.start(m_xReport); - m_pNavigatorTree->Expand(m_pNavigatorTree->find(m_xReport)); - lang::EventObject aEvent(m_rController); - m_pNavigatorTree->_selectionChanged(aEvent); -} -//------------------------------------------------------------------------ -ONavigatorImpl::~ONavigatorImpl() -{ -} -// ----------------------------------------------------------------------------- -DBG_NAME( rpt_ONavigator ) -const long STD_WIN_SIZE_X = 210; -const long STD_WIN_SIZE_Y = 280; -const long LISTBOX_BORDER = 2; -//======================================================================== -// class ONavigator -//======================================================================== -ONavigator::ONavigator( Window* _pParent - ,OReportController& _rController) - : FloatingWindow( _pParent, ModuleRes(RID_NAVIGATOR) ) -{ - DBG_CTOR( rpt_ONavigator,NULL); - - m_pImpl.reset(new ONavigatorImpl(_rController,this)); - - FreeResource(); - m_pImpl->m_pNavigatorTree->Show(); - m_pImpl->m_pNavigatorTree->GrabFocus(); - SetSizePixel(Size(STD_WIN_SIZE_X,STD_WIN_SIZE_Y)); - Show(); - -} -// ----------------------------------------------------------------------------- - -//------------------------------------------------------------------------ -ONavigator::~ONavigator() -{ - DBG_DTOR( rpt_ONavigator,NULL); -} -//------------------------------------------------------------------------------ -void ONavigator::Resize() -{ - FloatingWindow::Resize(); - - Point aPos(GetPosPixel()); - Size aSize( GetOutputSizePixel() ); - - ////////////////////////////////////////////////////////////////////// - - // Groesse der form::ListBox anpassen - Point aLBPos( LISTBOX_BORDER, LISTBOX_BORDER ); - Size aLBSize( aSize ); - aLBSize.Width() -= (2*LISTBOX_BORDER); - aLBSize.Height() -= (2*LISTBOX_BORDER); - - m_pImpl->m_pNavigatorTree->SetPosSizePixel( aLBPos, aLBSize ); -} -// ----------------------------------------------------------------------------- -// ----------------------------------------------------------------------------- -void ONavigator::GetFocus() -{ - Window::GetFocus(); - if ( m_pImpl->m_pNavigatorTree.get() ) - m_pImpl->m_pNavigatorTree->GrabFocus(); -} -// ============================================================================= -} // rptui -// ============================================================================= - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/reportdesign/source/ui/dlg/Navigator.src b/reportdesign/source/ui/dlg/Navigator.src deleted file mode 100644 index 1c1af073b..000000000 --- a/reportdesign/source/ui/dlg/Navigator.src +++ /dev/null @@ -1,175 +0,0 @@ -/************************************************************************* - * - * 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. - * - ************************************************************************/ -#include "RptResId.hrc" -#include "helpids.hrc" -#include "rptui_slotid.hrc" -#ifndef _GLOBLMN_HRC -#include <svx/globlmn.hrc> -#endif -#ifndef _SBASLTID_HRC -#include <svx/svxids.hrc> -#endif -#include <svl/solar.hrc> - -#define RID_SVXIMG_COLLAPSEDNODE (RID_FORMS_START + 2) -#define RID_SVXIMG_EXPANDEDNODE (RID_FORMS_START + 3) -#define RID_SVXIMG_FORMS (RID_FORMS_START +13) - -FloatingWindow RID_NAVIGATOR -{ - OutputSize = TRUE ; - SVLook = TRUE ; - Size = MAP_APPFONT ( 200 , 250 ) ; - Text [ en-US ] = "Report navigator" ; - HelpId = HID_RPT_NAVIGATOR_DLG; - Moveable = TRUE ; - Closeable = TRUE ; - Sizeable = TRUE; - - Control 1 - { - Pos = MAP_APPFONT( 0, 0 ); - Size = MAP_APPFONT( 200, 250 ); - Border = TRUE; - TabStop = TRUE; - }; -}; -#define NAVIGATOR_IMAGEIDS \ - IdList = \ - { \ - SID_SELECT_REPORT;\ - SID_FM_FIXEDTEXT ; \ - SID_INSERT_HFIXEDLINE ; \ - SID_INSERT_VFIXEDLINE;\ - SID_FM_IMAGECONTROL ; \ - SID_FM_EDIT ; \ - SID_RPT_NEW_FUNCTION;\ - SID_REPORTHEADERFOOTER;\ - SID_PAGEHEADERFOOTER;\ - SID_GROUPHEADER;\ - SID_GROUPFOOTER;\ - RID_SVXIMG_COLLAPSEDNODE ; \ - RID_SVXIMG_EXPANDEDNODE ; \ - SID_SORTINGANDGROUPING;\ - SID_DRAWTBX_CS_BASIC;\ - SID_GROUP;\ - SID_ICON_DETAIL;\ - }; \ - IdCount = 17 - -ImageList RID_SVXIMGLIST_RPTEXPL -{ - Prefix = "sx"; - MaskColor = Color { Red = 0xff00 ; Green = 0x0000 ; Blue = 0xff00 ; }; - NAVIGATOR_IMAGEIDS; -}; - -String RID_STR_FUNCTIONS -{ - Text [ en-US ] = "Functions" ; -}; -String RID_STR_GROUPS -{ - Text [ en-US ] = "Groups" ; -}; -Menu RID_MENU_NAVIGATOR -{ - ItemList = - { - MenuItem - { - Identifier = SID_SORTINGANDGROUPING; - Command = ".uno:DbSortingAndGrouping"; - Text [ en-US ] = "Sorting and Grouping..."; - }; - MenuItem - { - Separator = TRUE; - }; - MenuItem - { - Identifier = SID_PAGEHEADERFOOTER; - Command = ".uno:PageHeaderFooter"; - Checkable = TRUE; - Text [ en-US ] = "Page Header/Footer..."; - }; - MenuItem - { - Identifier = SID_REPORTHEADERFOOTER; - Command = ".uno:ReportHeaderFooter"; - Checkable = TRUE; - Text [ en-US ] = "Report Header/Footer..."; - }; - MenuItem - { - Separator = TRUE; - }; - MenuItem - { - Identifier = SID_RPT_NEW_FUNCTION; - Command = ".uno:NewFunction"; - Text [ en-US ] = "New Function"; - }; - MenuItem - { - Separator = TRUE; - }; - MenuItem - { - Identifier = SID_SHOW_PROPERTYBROWSER; - Command = ".uno:FormProperties"; - Text [ en-US ] = "Properties..."; - }; - MenuItem - { - Separator = TRUE; - }; - MenuItem - { - ITEM_EDIT_DELETE - }; -/* - MenuItem - { - Separator = TRUE; - }; - MenuItem - { - ITEM_EDIT_CUT - }; - MenuItem - { - ITEM_EDIT_COPY - }; - MenuItem - { - ITEM_EDIT_PASTE - }; -*/ - }; -}; - diff --git a/reportdesign/source/ui/dlg/PageNumber.cxx b/reportdesign/source/ui/dlg/PageNumber.cxx deleted file mode 100644 index 389bd992b..000000000 --- a/reportdesign/source/ui/dlg/PageNumber.cxx +++ /dev/null @@ -1,147 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * 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. - * - ************************************************************************/ -#include "precompiled_rptui.hxx" -#include "PageNumber.hxx" -#include "PageNumber.hrc" -#include <com/sun/star/beans/XPropertySet.hpp> -#include <tools/debug.hxx> -#include "RptResId.hrc" -#include "rptui_slotid.hrc" -#include "ModuleHelper.hxx" -#include "RptDef.hxx" -#include "helpids.hrc" -#include <vcl/msgbox.hxx> -#include <svx/globlmn.hrc> -#include <svx/svxids.hrc> -#include "UITools.hxx" -#include "uistrings.hrc" -#include "ReportController.hxx" -#include <com/sun/star/report/XFixedText.hpp> -#include <algorithm> - -namespace rptui -{ -using namespace ::com::sun::star; -using namespace ::comphelper; - -DBG_NAME( rpt_OPageNumberDialog ) -//======================================================================== -// class OPageNumberDialog -//======================================================================== -OPageNumberDialog::OPageNumberDialog( Window* _pParent - ,const uno::Reference< report::XReportDefinition >& _xHoldAlive - ,OReportController* _pController) - : ModalDialog( _pParent, ModuleRes(RID_PAGENUMBERS) ) - ,m_aFormat(this, ModuleRes(FL_FORMAT) ) - ,m_aPageN(this, ModuleRes(RB_PAGE_N) ) - ,m_aPageNofM(this, ModuleRes(RB_PAGE_N_OF_M) ) - ,m_aPosition(this, ModuleRes(FL_POSITION) ) - ,m_aTopPage(this, ModuleRes(RB_PAGE_TOPPAGE) ) - ,m_aBottomPage(this, ModuleRes(RB_PAGE_BOTTOMPAGE) ) - ,m_aMisc(this, ModuleRes(FL_MISC) ) - ,m_aAlignment(this, ModuleRes(FL_ALIGNMENT) ) - ,m_aAlignmentLst(this, ModuleRes(LST_ALIGNMENT) ) - ,m_aShowNumberOnFirstPage(this, ModuleRes(CB_SHOWNUMBERONFIRSTPAGE) ) - ,m_aFl1(this, ModuleRes(FL_SEPARATOR1)) - ,m_aPB_OK(this, ModuleRes(PB_OK)) - ,m_aPB_CANCEL(this, ModuleRes(PB_CANCEL)) - ,m_aPB_Help(this, ModuleRes(PB_HELP)) - ,m_pController(_pController) - ,m_xHoldAlive(_xHoldAlive) -{ - DBG_CTOR( rpt_OPageNumberDialog,NULL); - - m_aShowNumberOnFirstPage.Hide(); - - FreeResource(); -} - -//------------------------------------------------------------------------ -OPageNumberDialog::~OPageNumberDialog() -{ - DBG_DTOR( rpt_OPageNumberDialog,NULL); -} -// ----------------------------------------------------------------------------- -short OPageNumberDialog::Execute() -{ - short nRet = ModalDialog::Execute(); - if ( nRet == RET_OK ) - { - try - { - sal_Int32 nControlMaxSize = 3000; - sal_Int32 nPosX = 0; - sal_Int32 nPos2X = 0; - awt::Size aRptSize = getStyleProperty<awt::Size>(m_xHoldAlive,PROPERTY_PAPERSIZE); - switch ( m_aAlignmentLst.GetSelectEntryPos() ) - { - case 0: // left - nPosX = getStyleProperty<sal_Int32>(m_xHoldAlive,PROPERTY_LEFTMARGIN); - break; - case 1: // middle - nPosX = getStyleProperty<sal_Int32>(m_xHoldAlive,PROPERTY_LEFTMARGIN) + (aRptSize.Width - getStyleProperty<sal_Int32>(m_xHoldAlive,PROPERTY_LEFTMARGIN) - getStyleProperty<sal_Int32>(m_xHoldAlive,PROPERTY_RIGHTMARGIN) - nControlMaxSize) / 2; - break; - case 2: // right - nPosX = (aRptSize.Width - getStyleProperty<sal_Int32>(m_xHoldAlive,PROPERTY_RIGHTMARGIN) - nControlMaxSize); - break; - case 3: // inner - case 4: // outer - nPosX = getStyleProperty<sal_Int32>(m_xHoldAlive,PROPERTY_LEFTMARGIN); - nPos2X = (aRptSize.Width - getStyleProperty<sal_Int32>(m_xHoldAlive,PROPERTY_RIGHTMARGIN) - nControlMaxSize); - break; - default: - break; - } - if ( m_aAlignmentLst.GetSelectEntryPos() > 2 ) - nPosX = nPos2X; - - sal_Int32 nLength = 0; - uno::Sequence<beans::PropertyValue> aValues( 3 ); - aValues[nLength].Name = PROPERTY_POSITION; - aValues[nLength++].Value <<= awt::Point(nPosX,0); - - aValues[nLength].Name = PROPERTY_PAGEHEADERON; - aValues[nLength++].Value <<= m_aTopPage.IsChecked(); - - aValues[nLength].Name = PROPERTY_STATE; - aValues[nLength++].Value <<= m_aPageNofM.IsChecked(); - - m_pController->executeChecked(SID_INSERT_FLD_PGNUMBER,aValues); - } - catch(uno::Exception&) - { - nRet = RET_NO; - } - } - return nRet; -} -// ============================================================================= -} // rptui -// ============================================================================= - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/reportdesign/source/ui/dlg/PageNumber.hrc b/reportdesign/source/ui/dlg/PageNumber.hrc deleted file mode 100644 index 65318a500..000000000 --- a/reportdesign/source/ui/dlg/PageNumber.hrc +++ /dev/null @@ -1,59 +0,0 @@ -/************************************************************************* - * - * 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. - * - ************************************************************************/ -#ifndef RPTUI_PAGENUMBER_HRC -#define RPTUI_PAGENUMBER_HRC - -#define FL_FORMAT (1) -#define RB_PAGE_N (2) -#define RB_PAGE_N_OF_M (3) -#define FL_POSITION (4) -#define RB_PAGE_TOPPAGE (5) -#define RB_PAGE_BOTTOMPAGE (6) -#define FL_ALIGNMENT (7) -#define LST_ALIGNMENT (8) -#define CB_SHOWNUMBERONFIRSTPAGE (9) -#define PB_OK (10) -#define PB_CANCEL (11) -#define PB_HELP (12) -#define FL_SEPARATOR1 (13) -#define FL_MISC (14) - - -#define CHECKBOX_HEIGHT 8 -#define FIXEDTEXT_HEIGHT 8 -#define FIXEDTEXT_WIDTH 60 -#define RELATED_CONTROLS 4 -#define UNRELATED_CONTROLS 7 -#define EDIT_HEIGHT 12 -#define BUTTON_HEIGHT 14 -#define BUTTON_WIDTH 50 -#define BROWSER_HEIGHT 75 -#define PAGE_WIDTH (RELATED_CONTROLS + 3*UNRELATED_CONTROLS + 3*BUTTON_WIDTH) -#define PAGE_HEIGHT ( 8*RELATED_CONTROLS + 4*UNRELATED_CONTROLS + 9*FIXEDTEXT_HEIGHT + BUTTON_HEIGHT +1 ) -#define LISTBOX_WIDTH PAGE_WIDTH - 3*UNRELATED_CONTROLS - FIXEDTEXT_WIDTH - -#endif // RPTUI_PAGENUMBER_HRC diff --git a/reportdesign/source/ui/dlg/PageNumber.src b/reportdesign/source/ui/dlg/PageNumber.src deleted file mode 100644 index 991174162..000000000 --- a/reportdesign/source/ui/dlg/PageNumber.src +++ /dev/null @@ -1,168 +0,0 @@ -/************************************************************************* - * - * 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. - * - ************************************************************************/ -#include "PageNumber.hrc" -#include "RptResId.hrc" -#include "helpids.hrc" -#ifndef _GLOBLMN_HRC -#include <svx/globlmn.hrc> -#endif -#ifndef _SBASLTID_HRC -#include <svx/svxids.hrc> -#endif - - -ModalDialog RID_PAGENUMBERS -{ - OutputSize = TRUE ; - SVLook = TRUE ; - Size = MAP_APPFONT ( PAGE_WIDTH , PAGE_HEIGHT ) ; - Text [ en-US ] = "Page Numbers" ; - HelpId = HID_RPT_PAGENUMBERS_DLG; - Moveable = TRUE ; - Closeable = TRUE ; - - FixedLine FL_FORMAT - { - Pos = MAP_APPFONT ( RELATED_CONTROLS , RELATED_CONTROLS ) ; - Size = MAP_APPFONT ( PAGE_WIDTH - 2*RELATED_CONTROLS, FIXEDTEXT_HEIGHT ) ; - Text [ en-US ] = "Format"; - }; - - RadioButton RB_PAGE_N - { - HelpID = "reportdesign:RadioButton:RID_PAGENUMBERS:RB_PAGE_N"; - Pos = MAP_APPFONT ( UNRELATED_CONTROLS + RELATED_CONTROLS, 2*RELATED_CONTROLS + FIXEDTEXT_HEIGHT) ; - Size = MAP_APPFONT ( PAGE_WIDTH - 2*RELATED_CONTROLS , FIXEDTEXT_HEIGHT ) ; - Group = TRUE; - Check = TRUE; - Text [ en-US ] = "Page N"; - }; - RadioButton RB_PAGE_N_OF_M - { - HelpID = "reportdesign:RadioButton:RID_PAGENUMBERS:RB_PAGE_N_OF_M"; - Pos = MAP_APPFONT ( UNRELATED_CONTROLS + RELATED_CONTROLS, 3*RELATED_CONTROLS + 2*FIXEDTEXT_HEIGHT) ; - Size = MAP_APPFONT ( PAGE_WIDTH - 2*RELATED_CONTROLS , FIXEDTEXT_HEIGHT ) ; - Text [ en-US ] = "Page N of M"; - }; - - FixedLine FL_POSITION - { - Pos = MAP_APPFONT ( RELATED_CONTROLS , 3*RELATED_CONTROLS + UNRELATED_CONTROLS + 3*FIXEDTEXT_HEIGHT) ; - Size = MAP_APPFONT ( PAGE_WIDTH - 2*RELATED_CONTROLS , FIXEDTEXT_HEIGHT ) ; - Text [ en-US ] = "Position"; - }; - - RadioButton RB_PAGE_TOPPAGE - { - HelpID = "reportdesign:RadioButton:RID_PAGENUMBERS:RB_PAGE_TOPPAGE"; - Pos = MAP_APPFONT ( UNRELATED_CONTROLS + RELATED_CONTROLS, 4*RELATED_CONTROLS + UNRELATED_CONTROLS + 4*FIXEDTEXT_HEIGHT) ; - Size = MAP_APPFONT ( PAGE_WIDTH - 2*RELATED_CONTROLS , FIXEDTEXT_HEIGHT ) ; - Group = TRUE; - Check = TRUE; - Text [ en-US ] = "Top of Page (Header)"; - }; - RadioButton RB_PAGE_BOTTOMPAGE - { - HelpID = "reportdesign:RadioButton:RID_PAGENUMBERS:RB_PAGE_BOTTOMPAGE"; - Pos = MAP_APPFONT ( UNRELATED_CONTROLS + RELATED_CONTROLS, 5*RELATED_CONTROLS + UNRELATED_CONTROLS + 5*FIXEDTEXT_HEIGHT) ; - Size = MAP_APPFONT ( PAGE_WIDTH - 2*RELATED_CONTROLS , FIXEDTEXT_HEIGHT ) ; - Text [ en-US ] = "Bottom of Page (Footer)"; - }; - - FixedLine FL_MISC - { - Pos = MAP_APPFONT ( RELATED_CONTROLS , 5*RELATED_CONTROLS + 2*UNRELATED_CONTROLS + 6*FIXEDTEXT_HEIGHT) ; - Size = MAP_APPFONT ( PAGE_WIDTH - 2*RELATED_CONTROLS , FIXEDTEXT_HEIGHT ) ; - Text [ en-US ] = "General"; - }; - - FixedText FL_ALIGNMENT - { - Pos = MAP_APPFONT ( UNRELATED_CONTROLS , 6*RELATED_CONTROLS + 2*UNRELATED_CONTROLS + 7*FIXEDTEXT_HEIGHT) ; - Size = MAP_APPFONT ( FIXEDTEXT_WIDTH, FIXEDTEXT_HEIGHT ) ; - Text [ en-US ] = "Alignment:"; - }; - ListBox LST_ALIGNMENT - { - HelpID = "reportdesign:ListBox:RID_PAGENUMBERS:LST_ALIGNMENT"; - Border = TRUE; - Pos = MAP_APPFONT( 2*UNRELATED_CONTROLS + FIXEDTEXT_WIDTH , 6*RELATED_CONTROLS + 2*UNRELATED_CONTROLS + 7*FIXEDTEXT_HEIGHT -1); - Size = MAP_APPFONT( LISTBOX_WIDTH, 60 ); - DropDown = TRUE; - TabStop = TRUE; - CurPos = 1 ; - StringList [ en-US ] = - { - < "Left" ; Default ; > ; - < "Center" ; Default ; > ; - < "Right" ; Default ; > ; - }; - }; - CheckBox CB_SHOWNUMBERONFIRSTPAGE - { - HelpID = "reportdesign:CheckBox:RID_PAGENUMBERS:CB_SHOWNUMBERONFIRSTPAGE"; - Pos = MAP_APPFONT ( UNRELATED_CONTROLS , 6*RELATED_CONTROLS + 3*UNRELATED_CONTROLS + 8*FIXEDTEXT_HEIGHT) ; - Size = MAP_APPFONT ( PAGE_WIDTH - 2*RELATED_CONTROLS , FIXEDTEXT_HEIGHT ) ; - Check = TRUE; - Text [ en-US ] = "Show Number on First Page"; - }; - FixedLine FL_SEPARATOR1 - { - Pos = MAP_APPFONT ( RELATED_CONTROLS , 6*RELATED_CONTROLS + 4*UNRELATED_CONTROLS + 9*FIXEDTEXT_HEIGHT ) ; - Size = MAP_APPFONT ( PAGE_WIDTH - 2*RELATED_CONTROLS , 1 ) ; - }; - OKButton PB_OK - { - Pos = MAP_APPFONT ( UNRELATED_CONTROLS, 7*RELATED_CONTROLS + 4*UNRELATED_CONTROLS + 9*FIXEDTEXT_HEIGHT +1) ; - Size = MAP_APPFONT ( BUTTON_WIDTH , BUTTON_HEIGHT ) ; - TabStop = TRUE ; - DefButton = TRUE ; - }; - CancelButton PB_CANCEL - { - Pos = MAP_APPFONT ( RELATED_CONTROLS + UNRELATED_CONTROLS + BUTTON_WIDTH , 7*RELATED_CONTROLS + 4*UNRELATED_CONTROLS + 9*FIXEDTEXT_HEIGHT +1) ; - Size = MAP_APPFONT ( BUTTON_WIDTH , BUTTON_HEIGHT ) ; - TabStop = TRUE ; - }; - HelpButton PB_HELP - { - TabStop = TRUE ; - Pos = MAP_APPFONT ( RELATED_CONTROLS + 2*UNRELATED_CONTROLS + 2*BUTTON_WIDTH , 7*RELATED_CONTROLS + 4*UNRELATED_CONTROLS + 9*FIXEDTEXT_HEIGHT +1) ; - Size = MAP_APPFONT ( BUTTON_WIDTH , BUTTON_HEIGHT ) ; - Text [ en-US ] = "~Help"; - }; -}; -String STR_RPT_PN_PAGE -{ - Text [ en-US ] = "\"Page \" & #PAGENUMBER#" ; - Text [ x-comment ] = "The space after the word is no error. #PAGENUMBER# is a replacement and & must not be translated as well as \""; -}; -String STR_RPT_PN_PAGE_OF -{ - Text [ en-US ] = " & \" of \" & #PAGECOUNT#" ; - Text [ x-comment ] = "The space before and after the word is no error. #PAGECOUNT# is a replacement and & must not be translated as well as \""; -}; diff --git a/reportdesign/source/ui/dlg/dlgpage.cxx b/reportdesign/source/ui/dlg/dlgpage.cxx deleted file mode 100644 index 70fc2848a..000000000 --- a/reportdesign/source/ui/dlg/dlgpage.cxx +++ /dev/null @@ -1,92 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * 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. - * - ************************************************************************/ -#include "precompiled_rptui.hxx" - - -#include <svx/dialogs.hrc> -#include <svx/tabarea.hxx> -#include <svx/flagsdef.hxx> -#include <svx/svxdlg.hxx> -#include <editeng/svxenum.hxx> -#include "dlgpage.hxx" -#include "ModuleHelper.hxx" -#include "RptResId.hrc" -#include <svl/intitem.hxx> -#include <svl/cjkoptions.hxx> -#include <svl/aeitem.hxx> - -namespace rptui -{ -/************************************************************************* -|* -|* Konstruktor des Tab-Dialogs: Fuegt die Seiten zum Dialog hinzu -|* -\************************************************************************/ - -ORptPageDialog::ORptPageDialog( Window* pParent, const SfxItemSet* pAttr,sal_uInt16 _nPageId) : -SfxTabDialog ( pParent, ModuleRes( _nPageId ), pAttr ), - rOutAttrs ( *pAttr ) -{ - SfxAbstractDialogFactory* pFact = SfxAbstractDialogFactory::Create(); - OSL_ENSURE(pFact, "Dialogdiet fail!"); - switch( _nPageId ) - { - case RID_PAGEDIALOG_BACKGROUND: - AddTabPage( RID_SVXPAGE_BACKGROUND,String(ModuleRes(1))); - break; - case RID_PAGEDIALOG_PAGE: - AddTabPage(RID_SVXPAGE_PAGE, pFact->GetTabPageCreatorFunc( RID_SVXPAGE_PAGE ), 0 ); - AddTabPage(RID_SVXPAGE_BACKGROUND, pFact->GetTabPageCreatorFunc( RID_SVXPAGE_BACKGROUND ), 0 ); - break; - case RID_PAGEDIALOG_CHAR: - AddTabPage(RID_PAGE_CHAR, pFact->GetTabPageCreatorFunc( RID_SVXPAGE_CHAR_NAME ), 0 ); - AddTabPage(RID_PAGE_EFFECTS, pFact->GetTabPageCreatorFunc( RID_SVXPAGE_CHAR_EFFECTS ), 0 ); - AddTabPage(RID_PAGE_POSITION, pFact->GetTabPageCreatorFunc( RID_SVXPAGE_CHAR_POSITION ), 0 ); - AddTabPage(RID_PAGE_TWOLN, pFact->GetTabPageCreatorFunc( RID_SVXPAGE_CHAR_TWOLINES ), 0 ); - AddTabPage(RID_PAGE_BACKGROUND, pFact->GetTabPageCreatorFunc( RID_SVXPAGE_BACKGROUND ), 0 ); - AddTabPage(RID_PAGE_ALIGNMENT, pFact->GetTabPageCreatorFunc( RID_SVXPAGE_ALIGNMENT ), 0 ); - - break; - case RID_PAGEDIALOG_LINE: - AddTabPage( RID_SVXPAGE_LINE,pFact->GetTabPageCreatorFunc( RID_SVXPAGE_LINE ), 0 ); - break; - default: - OSL_FAIL("Unknown page id"); - } - - SvtCJKOptions aCJKOptions; - if ( !aCJKOptions.IsDoubleLinesEnabled() ) - RemoveTabPage(RID_PAGE_TWOLN); - - FreeResource(); -} -// ============================================================================= -} // namespace rptui -// ============================================================================= - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/reportdesign/source/ui/dlg/dlgpage.src b/reportdesign/source/ui/dlg/dlgpage.src deleted file mode 100644 index 92407c021..000000000 --- a/reportdesign/source/ui/dlg/dlgpage.src +++ /dev/null @@ -1,300 +0,0 @@ -/************************************************************************* - * - * 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. - * - ************************************************************************/ - -#include <svx/dialogs.hrc> -#include "RptResId.hrc" - -TabDialog RID_PAGEDIALOG_PAGE -{ - OutputSize = TRUE ; - SVLook = TRUE ; - Size = MAP_APPFONT ( 289 , 176 ) ; - Text [ en-US ] = "Page Setup" ; - Moveable = TRUE ; - Closeable = TRUE ; - TabControl 1 - { - OutputSize = TRUE ; - PageList = - { - PageItem - { - Identifier = RID_SVXPAGE_PAGE ; - Text [ en-US ] = "Page" ; - PageResID = RID_SVXPAGE_PAGE ; - Text [ x-comment ] = " "; - }; - PageItem - { - Identifier = RID_SVXPAGE_BACKGROUND ; - Text [ en-US ] = "Background" ; - PageResID = RID_SVXPAGE_BACKGROUND ; - Text [ x-comment ] = " "; - }; - }; - }; - OKButton 1 - { - Pos = MAP_APPFONT ( 6 , 151 ) ; - Size = MAP_APPFONT ( 50 , 14 ) ; - TabStop = TRUE ; - }; - CancelButton 1 - { - Pos = MAP_APPFONT ( 60 , 151 ) ; - Size = MAP_APPFONT ( 50 , 14 ) ; - TabStop = TRUE ; - }; - HelpButton 1 - { - Pos = MAP_APPFONT ( 114 , 151 ) ; - Size = MAP_APPFONT ( 50 , 14 ) ; - TabStop = TRUE ; - }; - PushButton 1 - { - Pos = MAP_APPFONT ( 169 , 151 ) ; - Size = MAP_APPFONT ( 50 , 14 ) ; - Text [ en-US ] = "Return" ; - TabStop = TRUE ; - }; - Text [ x-comment ] = " "; - - String 1 - { - Text [ en-US ] = "Page" ; - }; - String 2 - { - Text [ en-US ] = "Background" ; - }; -}; - -TabDialog RID_PAGEDIALOG_BACKGROUND -{ - OutputSize = TRUE ; - SVLook = TRUE ; - Size = MAP_APPFONT ( 289 , 176 ) ; - Text [ en-US ] = "Section Setup" ; - Moveable = TRUE ; - Closeable = TRUE ; - TabControl 1 - { - OutputSize = TRUE ; - }; - OKButton 1 - { - Pos = MAP_APPFONT ( 6 , 151 ) ; - Size = MAP_APPFONT ( 50 , 14 ) ; - TabStop = TRUE ; - }; - CancelButton 1 - { - Pos = MAP_APPFONT ( 60 , 151 ) ; - Size = MAP_APPFONT ( 50 , 14 ) ; - TabStop = TRUE ; - }; - HelpButton 1 - { - Pos = MAP_APPFONT ( 114 , 151 ) ; - Size = MAP_APPFONT ( 50 , 14 ) ; - TabStop = TRUE ; - }; - PushButton 1 - { - Pos = MAP_APPFONT ( 169 , 151 ) ; - Size = MAP_APPFONT ( 50 , 14 ) ; - Text [ en-US ] = "Return" ; - TabStop = TRUE ; - Text [ x-comment ] = " "; - }; - Text [ x-comment ] = " "; - - String 1 - { - Text [ en-US ] = "Background" ; - }; -}; -TabDialog RID_PAGEDIALOG_CHAR -{ - OutputSize = TRUE ; - SVLook = TRUE ; - Size = MAP_APPFONT ( 289 , 176 ) ; - Text [ en-US ] = "Character Settings" ; - Moveable = TRUE ; - Closeable = TRUE ; - TabControl 1 - { - OutputSize = TRUE ; - PageList = - { - PageItem - { - Identifier = RID_PAGE_CHAR ; - Text [ en-US ] = "Font" ; - PageResID = RID_PAGE_CHAR ; - Text [ x-comment ] = " "; - }; - PageItem - { - Identifier = RID_PAGE_EFFECTS ; - Text [ en-US ] = "Font Effects" ; - PageResID = RID_PAGE_EFFECTS ; - Text [ x-comment ] = " "; - }; - PageItem - { - Identifier = RID_PAGE_POSITION ; - PageResID = RID_PAGE_POSITION ; - Text [ en-US ] = "Position"; - }; - PageItem - { - Identifier = RID_PAGE_TWOLN ; - PageResID = RID_PAGE_TWOLN; - Text [ en-US ] = "Asian Layout"; - }; - PageItem - { - Identifier = RID_PAGE_BACKGROUND ; - Text [ en-US ] = "Background" ; - PageResID = RID_PAGE_BACKGROUND ; - Text [ x-comment ] = " "; - }; - PageItem - { - Identifier = RID_PAGE_ALIGNMENT ; - Text [ en-US ] = "Alignment" ; - PageResID = RID_PAGE_ALIGNMENT ; - Text [ x-comment ] = " "; - }; - }; - }; - OKButton 1 - { - Pos = MAP_APPFONT ( 6 , 151 ) ; - Size = MAP_APPFONT ( 50 , 14 ) ; - TabStop = TRUE ; - }; - CancelButton 1 - { - Pos = MAP_APPFONT ( 60 , 151 ) ; - Size = MAP_APPFONT ( 50 , 14 ) ; - TabStop = TRUE ; - }; - HelpButton 1 - { - Pos = MAP_APPFONT ( 114 , 151 ) ; - Size = MAP_APPFONT ( 50 , 14 ) ; - TabStop = TRUE ; - }; - PushButton 1 - { - Pos = MAP_APPFONT ( 169 , 151 ) ; - Size = MAP_APPFONT ( 50 , 14 ) ; - Text [ en-US ] = "Return" ; - TabStop = TRUE ; - Text [ x-comment ] = " "; - }; - Text [ x-comment ] = " "; - - String 1 - { - Text [ en-US ] = "Character" ; - }; -}; -TabDialog RID_PAGEDIALOG_LINE -{ - OutputSize = TRUE ; - SVLook = TRUE ; - Size = MAP_APPFONT ( 289 , 176 ) ; - Text [ en-US ] = "Line" ; - Moveable = TRUE ; - Closeable = TRUE ; - TabControl 1 - { - OutputSize = TRUE ; - Pos = MAP_APPFONT ( 3 , 3 ) ; - Size = MAP_APPFONT ( 260 , 135 ) ; - PageList = - { - PageItem - { - Identifier = RID_SVXPAGE_LINE ; - Text [ en-US ] = "Line" ; - PageResID = RID_SVXPAGE_LINE ; - Text [ x-comment ] = " "; - }; - PageItem - { - Identifier = RID_SVXPAGE_LINE_DEF ; - Text [ en-US ] = "Line Styles" ; - PageResID = RID_SVXPAGE_LINE_DEF ; - Text [ x-comment ] = " "; - }; - PageItem - { - Identifier = RID_SVXPAGE_LINEEND_DEF ; - Text [ en-US ] = "Arrow Styles" ; - PageResID = RID_SVXPAGE_LINEEND_DEF ; - Text [ x-comment ] = " "; - }; - }; - }; - OKButton 1 - { - Pos = MAP_APPFONT ( 6 , 151 ) ; - Size = MAP_APPFONT ( 50 , 14 ) ; - TabStop = TRUE ; - }; - CancelButton 1 - { - Pos = MAP_APPFONT ( 60 , 151 ) ; - Size = MAP_APPFONT ( 50 , 14 ) ; - TabStop = TRUE ; - }; - HelpButton 1 - { - Pos = MAP_APPFONT ( 114 , 151 ) ; - Size = MAP_APPFONT ( 50 , 14 ) ; - TabStop = TRUE ; - }; - PushButton 1 - { - Pos = MAP_APPFONT ( 169 , 151 ) ; - Size = MAP_APPFONT ( 50 , 14 ) ; - Text [ en-US ] = "Return" ; - TabStop = TRUE ; - Text [ x-comment ] = " "; - }; - Text [ x-comment ] = " "; - - String 1 - { - Text [ en-US ] = "Line" ; - }; -}; |