1 /************************************************************************* 2 * 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * Copyright 2000, 2010 Oracle and/or its affiliates. 6 * 7 * OpenOffice.org - a multi-platform office productivity suite 8 * 9 * This file is part of OpenOffice.org. 10 * 11 * OpenOffice.org is free software: you can redistribute it and/or modify 12 * it under the terms of the GNU Lesser General Public License version 3 13 * only, as published by the Free Software Foundation. 14 * 15 * OpenOffice.org is distributed in the hope that it will be useful, 16 * but WITHOUT ANY WARRANTY; without even the implied warranty of 17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 * GNU Lesser General Public License version 3 for more details 19 * (a copy is included in the LICENSE file that accompanied this code). 20 * 21 * You should have received a copy of the GNU Lesser General Public License 22 * version 3 along with OpenOffice.org. If not, see 23 * <http://www.openoffice.org/license.html> 24 * for a copy of the LGPLv3 License. 25 * 26 ************************************************************************/ 27 28 // MARKER(update_precomp.py): autogen include statement, do not remove 29 #include "precompiled_svx.hxx" 30 #include <svx/frmdirlbox.hxx> 31 32 namespace svx { 33 34 // ============================================================================ 35 36 namespace { 37 38 inline void* lclEnumToVoid( SvxFrameDirection eDirection ) 39 { 40 return reinterpret_cast< void* >( static_cast< sal_uInt32 >( eDirection ) ); 41 } 42 43 inline SvxFrameDirection lclVoidToEnum( void* pDirection ) 44 { 45 return static_cast< SvxFrameDirection >( reinterpret_cast< sal_IntPtr >( pDirection ) ); 46 } 47 48 } // namespace 49 50 // ============================================================================ 51 52 FrameDirectionListBox::FrameDirectionListBox( Window* pParent, WinBits nStyle ) : 53 ListBox( pParent, nStyle ) 54 { 55 } 56 57 FrameDirectionListBox::FrameDirectionListBox( Window* pParent, const ResId& rResId ) : 58 ListBox( pParent, rResId ) 59 { 60 } 61 62 FrameDirectionListBox::~FrameDirectionListBox() 63 { 64 } 65 66 void FrameDirectionListBox::InsertEntryValue( const String& rString, SvxFrameDirection eDirection, sal_uInt16 nPos ) 67 { 68 sal_uInt16 nRealPos = InsertEntry( rString, nPos ); 69 SetEntryData( nRealPos, lclEnumToVoid( eDirection ) ); 70 } 71 72 void FrameDirectionListBox::RemoveEntryValue( SvxFrameDirection eDirection ) 73 { 74 sal_uInt16 nPos = GetEntryPos( lclEnumToVoid( eDirection ) ); 75 if( nPos != LISTBOX_ENTRY_NOTFOUND ) 76 RemoveEntry( nPos ); 77 } 78 79 void FrameDirectionListBox::SelectEntryValue( SvxFrameDirection eDirection ) 80 { 81 sal_uInt16 nPos = GetEntryPos( lclEnumToVoid( eDirection ) ); 82 if( nPos == LISTBOX_ENTRY_NOTFOUND ) 83 SetNoSelection(); 84 else 85 SelectEntryPos( nPos ); 86 } 87 88 SvxFrameDirection FrameDirectionListBox::GetSelectEntryValue() const 89 { 90 sal_uInt16 nPos = GetSelectEntryPos(); 91 if( nPos == LISTBOX_ENTRY_NOTFOUND ) 92 return static_cast< SvxFrameDirection >( 0xFFFF ); 93 return lclVoidToEnum( GetEntryData( nPos ) ); 94 } 95 96 // ============================================================================ 97 98 FrameDirListBoxWrapper::FrameDirListBoxWrapper( FrameDirListBox& rListBox ) : 99 SingleControlWrapperType( rListBox ) 100 { 101 } 102 103 bool FrameDirListBoxWrapper::IsControlDontKnow() const 104 { 105 return GetControl().GetSelectEntryCount() == 0; 106 } 107 108 void FrameDirListBoxWrapper::SetControlDontKnow( bool bSet ) 109 { 110 if( bSet ) 111 GetControl().SetNoSelection(); 112 } 113 114 SvxFrameDirection FrameDirListBoxWrapper::GetControlValue() const 115 { 116 return GetControl().GetSelectEntryValue(); 117 } 118 119 void FrameDirListBoxWrapper::SetControlValue( SvxFrameDirection eValue ) 120 { 121 GetControl().SelectEntryValue( eValue ); 122 } 123 124 // ============================================================================ 125 126 } // namespace svx 127 128