office-gobmx/sfx2/source/dialog/styledlg.cxx
2011-11-27 13:21:30 -06:00

171 lines
4.7 KiB
C++

/* -*- 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 ---------------------------------------------------------------
#include <svl/whiter.hxx>
#include <svl/style.hxx>
#include <vcl/msgbox.hxx>
#include <sfx2/styledlg.hxx>
#include <sfx2/mgetempl.hxx>
#include "sfx2/sfxresid.hxx"
#include <sfx2/sfxuno.hxx>
#include "dialog.hrc"
// class SfxStyleDialog --------------------------------------------------
SfxStyleDialog::SfxStyleDialog
(
Window* pParent, // Parent
const ResId& rResId, // ResId
SfxStyleSheetBase& rStyle, // stylesheet to be processed
sal_Bool bFreeRes, // Flag release resources
const String* pUserBtnTxt
) :
/* [Description]
Constructor: Add Manage TabPage, set ExampleSet from style.
*/
SfxTabDialog( pParent, rResId,
rStyle.GetItemSet().Clone(),
// return TRUE also without ParentSupport , but extended
// to suppress the standardButton
rStyle.HasParentSupport() ? sal_True : 2,
pUserBtnTxt ),
pStyle( &rStyle )
{
AddTabPage( ID_TABPAGE_MANAGESTYLES,
String( SfxResId( STR_TABPAGE_MANAGESTYLES ) ),
SfxManageStyleSheetPage::Create, 0, sal_False, 0 );
// With new template always set the management page as the current page
if( !rStyle.GetName().Len() )
SetCurPageId( ID_TABPAGE_MANAGESTYLES );
else
{
String sTxt( GetText() );
sTxt += DEFINE_CONST_UNICODE(": ") ;
sTxt += rStyle.GetName();
SetText( sTxt );
}
delete pExampleSet; // in SfxTabDialog::Ctor() already created
pExampleSet = &pStyle->GetItemSet();
if ( bFreeRes )
FreeResource();
GetCancelButton().SetClickHdl( LINK(this, SfxStyleDialog, CancelHdl) );
}
// -----------------------------------------------------------------------
SfxStyleDialog::~SfxStyleDialog()
/* [Description]
Destructor: set ExampleSet to NULL, so that SfxTabDialog does not delete
the Set from Style.
*/
{
pExampleSet = 0;
pStyle = 0;
delete GetInputSetImpl();
}
// -----------------------------------------------------------------------
const SfxItemSet* SfxStyleDialog::GetRefreshedSet()
/* [Description]
This is called when <SfxTabPage::DeactivatePage(SfxItemSet *)>
returns <SfxTabPage::REFRESH_SET>.
*/
{
return GetInputSetImpl();
}
// -----------------------------------------------------------------------
short SfxStyleDialog::Ok()
/* [Description]
Overloaded, so that always RET_OK is returned.
*/
{
SfxTabDialog::Ok();
return RET_OK;
}
// -----------------------------------------------------------------------
IMPL_LINK( SfxStyleDialog, CancelHdl, Button *, pButton )
/* [Description]
If the dialogue was canceled, then all selected attributes must be reset
again.
*/
{
(void)pButton; //unused
SfxTabPage* pPage = GetTabPage( ID_TABPAGE_MANAGESTYLES );
const SfxItemSet* pInSet = GetInputSetImpl();
SfxWhichIter aIter( *pInSet );
sal_uInt16 nWhich = aIter.FirstWhich();
while ( nWhich )
{
SfxItemState eState = pInSet->GetItemState( nWhich, sal_False );
if ( SFX_ITEM_DEFAULT == eState )
pExampleSet->ClearItem( nWhich );
else
pExampleSet->Put( pInSet->Get( nWhich ) );
nWhich = aIter.NextWhich();
}
if ( pPage )
pPage->Reset( *GetInputSetImpl() );
EndDialog( RET_CANCEL );
return 0;
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */