xref: /aoo42x/main/svx/source/dialog/frmdirlbox.cxx (revision cdf0e10c)
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