xref: /AOO41X/main/fpicker/source/win32/filepicker/customcontrolcontainer.cxx (revision b557fc96600fce3029f73c89748b6c08fd00b34d)
1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 
23 
24 // MARKER(update_precomp.py): autogen include statement, do not remove
25 #include "precompiled_fpicker.hxx"
26 #include "customcontrolcontainer.hxx"
27 
28 #include <algorithm>
29 #include <functional>
30 
31 //-----------------------------------
32 //
33 //-----------------------------------
34 
35 namespace /* private */
36 {
DeleteCustomControl(CCustomControl * aCustomControl)37     void DeleteCustomControl(CCustomControl* aCustomControl)
38     {
39         delete aCustomControl;
40     };
41 
AlignCustomControl(CCustomControl * aCustomControl)42     void AlignCustomControl(CCustomControl* aCustomControl)
43     {
44         aCustomControl->Align();
45     };
46 
47     class CSetFontHelper
48     {
49     public:
CSetFontHelper(HFONT hFont)50         CSetFontHelper(HFONT hFont) :
51             m_hFont(hFont)
52         {
53         }
54 
operator ()(CCustomControl * aCustomControl)55         void SAL_CALL operator()(CCustomControl* aCustomControl)
56         {
57             aCustomControl->SetFont(m_hFont);
58         }
59 
60     private:
61         HFONT m_hFont;
62     };
63 }
64 
65 //-----------------------------------
66 //
67 //-----------------------------------
68 
~CCustomControlContainer()69 CCustomControlContainer::~CCustomControlContainer()
70 {
71     RemoveAllControls();
72 }
73 
74 //-----------------------------------
75 //
76 //-----------------------------------
77 
Align()78 void SAL_CALL CCustomControlContainer::Align()
79 {
80     std::for_each(
81         m_ControlContainer.begin(),
82         m_ControlContainer.end(),
83         AlignCustomControl);
84 }
85 
86 //-----------------------------------
87 //
88 //-----------------------------------
89 
SetFont(HFONT hFont)90 void SAL_CALL CCustomControlContainer::SetFont(HFONT hFont)
91 {
92     CSetFontHelper aSetFontHelper(hFont);
93 
94     std::for_each(
95         m_ControlContainer.begin(),
96         m_ControlContainer.end(),
97         aSetFontHelper);
98 }
99 
100 //-----------------------------------
101 //
102 //-----------------------------------
103 
AddControl(CCustomControl * aCustomControl)104 void SAL_CALL CCustomControlContainer::AddControl(CCustomControl* aCustomControl)
105 {
106     m_ControlContainer.push_back(aCustomControl);
107 }
108 
109 //-----------------------------------
110 //
111 //-----------------------------------
112 
RemoveControl(CCustomControl * aCustomControl)113 void SAL_CALL CCustomControlContainer::RemoveControl(CCustomControl* aCustomControl)
114 {
115     ControlContainer_t::iterator iter_end = m_ControlContainer.end();
116 
117     ControlContainer_t::iterator iter =
118         std::find(m_ControlContainer.begin(),iter_end,aCustomControl);
119 
120     if (iter != iter_end)
121     {
122         delete *iter;
123         m_ControlContainer.remove(aCustomControl);
124     }
125 }
126 
127 //-----------------------------------
128 //
129 //-----------------------------------
130 
RemoveAllControls()131 void SAL_CALL CCustomControlContainer::RemoveAllControls()
132 {
133     std::for_each(
134         m_ControlContainer.begin(),
135         m_ControlContainer.end(),
136         DeleteCustomControl);
137 
138     m_ControlContainer.clear();
139 }
140