1*b3f79822SAndrew Rist /**************************************************************
2cdf0e10cSrcweir *
3*b3f79822SAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one
4*b3f79822SAndrew Rist * or more contributor license agreements. See the NOTICE file
5*b3f79822SAndrew Rist * distributed with this work for additional information
6*b3f79822SAndrew Rist * regarding copyright ownership. The ASF licenses this file
7*b3f79822SAndrew Rist * to you under the Apache License, Version 2.0 (the
8*b3f79822SAndrew Rist * "License"); you may not use this file except in compliance
9*b3f79822SAndrew Rist * with the License. You may obtain a copy of the License at
10*b3f79822SAndrew Rist *
11*b3f79822SAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0
12*b3f79822SAndrew Rist *
13*b3f79822SAndrew Rist * Unless required by applicable law or agreed to in writing,
14*b3f79822SAndrew Rist * software distributed under the License is distributed on an
15*b3f79822SAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b3f79822SAndrew Rist * KIND, either express or implied. See the License for the
17*b3f79822SAndrew Rist * specific language governing permissions and limitations
18*b3f79822SAndrew Rist * under the License.
19*b3f79822SAndrew Rist *
20*b3f79822SAndrew Rist *************************************************************/
21*b3f79822SAndrew Rist
22*b3f79822SAndrew Rist
23cdf0e10cSrcweir
24cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove
25cdf0e10cSrcweir #include "precompiled_sc.hxx"
26cdf0e10cSrcweir
27cdf0e10cSrcweir
28cdf0e10cSrcweir #include <sfx2/dispatch.hxx>
29cdf0e10cSrcweir #include <svl/stritem.hxx>
30cdf0e10cSrcweir
31cdf0e10cSrcweir #include "tabvwsh.hxx"
32cdf0e10cSrcweir #include "reffact.hxx"
33cdf0e10cSrcweir #include "conditio.hxx"
34cdf0e10cSrcweir #include "stlpool.hxx"
35cdf0e10cSrcweir #include "uiitems.hxx"
36cdf0e10cSrcweir #include "document.hxx"
37cdf0e10cSrcweir #include "scresid.hxx"
38cdf0e10cSrcweir
39cdf0e10cSrcweir #include "condfrmt.hrc"
40cdf0e10cSrcweir #include "globstr.hrc"
41cdf0e10cSrcweir
42cdf0e10cSrcweir #define _CONDFRMT_CXX
43cdf0e10cSrcweir #include "condfrmt.hxx"
44cdf0e10cSrcweir #undef _CONDFRMT_CXX
45cdf0e10cSrcweir
46cdf0e10cSrcweir
47cdf0e10cSrcweir //============================================================================
48cdf0e10cSrcweir // class ScConditionalFormat
49cdf0e10cSrcweir
50cdf0e10cSrcweir //----------------------------------------------------------------------------
51cdf0e10cSrcweir // Konstruktor
52cdf0e10cSrcweir
ScConditionalFormatDlg(SfxBindings * pB,SfxChildWindow * pCW,Window * pParent,ScDocument * pCurDoc,const ScConditionalFormat * pCurrentFormat)53cdf0e10cSrcweir ScConditionalFormatDlg::ScConditionalFormatDlg(
54cdf0e10cSrcweir SfxBindings* pB, SfxChildWindow* pCW, Window* pParent,
55cdf0e10cSrcweir ScDocument* pCurDoc,
56cdf0e10cSrcweir const ScConditionalFormat* pCurrentFormat )
57cdf0e10cSrcweir : ScAnyRefDlg ( pB, pCW, pParent, RID_SCDLG_CONDFORMAT ),
58cdf0e10cSrcweir
59cdf0e10cSrcweir aCbxCond1 ( this, ScResId( CBX_COND1 ) ),
60cdf0e10cSrcweir aLbCond11 ( this, ScResId( LB_COND1_1 ) ),
61cdf0e10cSrcweir aLbCond12 ( this, ScResId( LB_COND1_2 ) ),
62cdf0e10cSrcweir aEdtCond11 ( this, this, ScResId( EDT_COND1_1 ) ),
63cdf0e10cSrcweir aRbCond11 ( this, ScResId( RB_COND1_1 ), &aEdtCond11,this ),
64cdf0e10cSrcweir aFtCond1And ( this, ScResId( FT_COND1_AND ) ),
65cdf0e10cSrcweir aEdtCond12 ( this, this, ScResId( EDT_COND1_2 ) ),
66cdf0e10cSrcweir aRbCond12 ( this, ScResId( RB_COND1_2 ), &aEdtCond12,this ),
67cdf0e10cSrcweir aFtCond1Template ( this, ScResId( FT_COND1_TEMPLATE ) ),
68cdf0e10cSrcweir aLbCond1Template ( this, ScResId( LB_COND1_TEMPLATE ) ),
69cdf0e10cSrcweir aBtnNew1 ( this, ScResId( BTN_COND1_NEW ) ),
70cdf0e10cSrcweir
71cdf0e10cSrcweir aCbxCond2 ( this, ScResId( CBX_COND2 ) ),
72cdf0e10cSrcweir aLbCond21 ( this, ScResId( LB_COND2_1 ) ),
73cdf0e10cSrcweir aLbCond22 ( this, ScResId( LB_COND2_2 ) ),
74cdf0e10cSrcweir aEdtCond21 ( this, this, ScResId( EDT_COND2_1 ) ),
75cdf0e10cSrcweir aRbCond21 ( this, ScResId( RB_COND2_1 ), &aEdtCond21,this ),
76cdf0e10cSrcweir aFtCond2And ( this, ScResId( FT_COND2_AND ) ),
77cdf0e10cSrcweir aEdtCond22 ( this, this, ScResId( EDT_COND2_2 ) ),
78cdf0e10cSrcweir aRbCond22 ( this, ScResId( RB_COND2_2 ), &aEdtCond22,this ),
79cdf0e10cSrcweir aFtCond2Template ( this, ScResId( FT_COND2_TEMPLATE ) ),
80cdf0e10cSrcweir aLbCond2Template ( this, ScResId( LB_COND2_TEMPLATE ) ),
81cdf0e10cSrcweir aBtnNew2 ( this, ScResId( BTN_COND2_NEW ) ),
82cdf0e10cSrcweir
83cdf0e10cSrcweir aCbxCond3 ( this, ScResId( CBX_COND3 ) ),
84cdf0e10cSrcweir aLbCond31 ( this, ScResId( LB_COND3_1 ) ),
85cdf0e10cSrcweir aLbCond32 ( this, ScResId( LB_COND3_2 ) ),
86cdf0e10cSrcweir aEdtCond31 ( this, this, ScResId( EDT_COND3_1 ) ),
87cdf0e10cSrcweir aRbCond31 ( this, ScResId( RB_COND3_1 ), &aEdtCond31,this ),
88cdf0e10cSrcweir aFtCond3And ( this, ScResId( FT_COND3_AND ) ),
89cdf0e10cSrcweir aEdtCond32 ( this, this, ScResId( EDT_COND3_2 ) ),
90cdf0e10cSrcweir aRbCond32 ( this, ScResId( RB_COND3_2 ), &aEdtCond32,this ),
91cdf0e10cSrcweir aFtCond3Template ( this, ScResId( FT_COND3_TEMPLATE ) ),
92cdf0e10cSrcweir aLbCond3Template ( this, ScResId( LB_COND3_TEMPLATE ) ),
93cdf0e10cSrcweir aBtnNew3 ( this, ScResId( BTN_COND3_NEW ) ),
94cdf0e10cSrcweir
95cdf0e10cSrcweir aBtnOk ( this, ScResId( BTN_OK ) ),
96cdf0e10cSrcweir aBtnCancel ( this, ScResId( BTN_CANCEL ) ),
97cdf0e10cSrcweir aBtnHelp ( this, ScResId( BTN_HELP ) ),
98cdf0e10cSrcweir aFlSep2 ( this, ScResId( FL_SEP2 ) ),
99cdf0e10cSrcweir aFlSep1 ( this, ScResId( FL_SEP1 ) ),
100cdf0e10cSrcweir pEdActive ( NULL ),
101cdf0e10cSrcweir bDlgLostFocus ( sal_False ),
102cdf0e10cSrcweir
103cdf0e10cSrcweir pDoc ( pCurDoc )
104cdf0e10cSrcweir {
105cdf0e10cSrcweir Point aPos;
106cdf0e10cSrcweir String aName;
107cdf0e10cSrcweir SfxStyleSheetBase* pStyle;
108cdf0e10cSrcweir
109cdf0e10cSrcweir FreeResource();
110cdf0e10cSrcweir
111cdf0e10cSrcweir // Handler setzen
112cdf0e10cSrcweir aCbxCond1.SetClickHdl ( LINK( this, ScConditionalFormatDlg, ClickCond1Hdl ) );
113cdf0e10cSrcweir aLbCond11.SetSelectHdl( LINK( this, ScConditionalFormatDlg, ChangeCond11Hdl ) );
114cdf0e10cSrcweir aLbCond12.SetSelectHdl( LINK( this, ScConditionalFormatDlg, ChangeCond12Hdl ) );
115cdf0e10cSrcweir
116cdf0e10cSrcweir aCbxCond2.SetClickHdl ( LINK( this, ScConditionalFormatDlg, ClickCond2Hdl ) );
117cdf0e10cSrcweir aLbCond21.SetSelectHdl( LINK( this, ScConditionalFormatDlg, ChangeCond21Hdl ) );
118cdf0e10cSrcweir aLbCond22.SetSelectHdl( LINK( this, ScConditionalFormatDlg, ChangeCond22Hdl ) );
119cdf0e10cSrcweir
120cdf0e10cSrcweir aCbxCond3.SetClickHdl ( LINK( this, ScConditionalFormatDlg, ClickCond3Hdl ) );
121cdf0e10cSrcweir aLbCond31.SetSelectHdl( LINK( this, ScConditionalFormatDlg, ChangeCond31Hdl ) );
122cdf0e10cSrcweir aLbCond32.SetSelectHdl( LINK( this, ScConditionalFormatDlg, ChangeCond32Hdl ) );
123cdf0e10cSrcweir
124cdf0e10cSrcweir aBtnOk.SetClickHdl ( LINK( this, ScConditionalFormatDlg, BtnHdl ) );
125cdf0e10cSrcweir //? aBtnCancel.SetClickHdl( LINK( this, ScConditionalFormatDlg, BtnHdl ) );
126cdf0e10cSrcweir
127cdf0e10cSrcweir Link aLink = LINK( this, ScConditionalFormatDlg, NewBtnHdl );
128cdf0e10cSrcweir aBtnNew1.SetClickHdl( aLink );
129cdf0e10cSrcweir aBtnNew2.SetClickHdl( aLink );
130cdf0e10cSrcweir aBtnNew3.SetClickHdl( aLink );
131cdf0e10cSrcweir
132cdf0e10cSrcweir aLink = LINK( this, ScConditionalFormatDlg, GetFocusHdl );
133cdf0e10cSrcweir aEdtCond11.SetGetFocusHdl( aLink );
134cdf0e10cSrcweir aEdtCond12.SetGetFocusHdl( aLink );
135cdf0e10cSrcweir aEdtCond21.SetGetFocusHdl( aLink );
136cdf0e10cSrcweir aEdtCond22.SetGetFocusHdl( aLink );
137cdf0e10cSrcweir aEdtCond31.SetGetFocusHdl( aLink );
138cdf0e10cSrcweir aEdtCond32.SetGetFocusHdl( aLink );
139cdf0e10cSrcweir aRbCond11.SetGetFocusHdl( aLink );
140cdf0e10cSrcweir aRbCond12.SetGetFocusHdl( aLink );
141cdf0e10cSrcweir aRbCond21.SetGetFocusHdl( aLink );
142cdf0e10cSrcweir aRbCond22.SetGetFocusHdl( aLink );
143cdf0e10cSrcweir aRbCond31.SetGetFocusHdl( aLink );
144cdf0e10cSrcweir aRbCond32.SetGetFocusHdl( aLink );
145cdf0e10cSrcweir
146cdf0e10cSrcweir aLink = LINK( this, ScConditionalFormatDlg, LoseFocusHdl );
147cdf0e10cSrcweir aEdtCond11.SetLoseFocusHdl( aLink );
148cdf0e10cSrcweir aEdtCond12.SetLoseFocusHdl( aLink );
149cdf0e10cSrcweir aEdtCond21.SetLoseFocusHdl( aLink );
150cdf0e10cSrcweir aEdtCond22.SetLoseFocusHdl( aLink );
151cdf0e10cSrcweir aEdtCond31.SetLoseFocusHdl( aLink );
152cdf0e10cSrcweir aEdtCond32.SetLoseFocusHdl( aLink );
153cdf0e10cSrcweir aRbCond11.SetLoseFocusHdl( aLink );
154cdf0e10cSrcweir aRbCond12.SetLoseFocusHdl( aLink );
155cdf0e10cSrcweir aRbCond21.SetLoseFocusHdl( aLink );
156cdf0e10cSrcweir aRbCond22.SetLoseFocusHdl( aLink );
157cdf0e10cSrcweir aRbCond31.SetLoseFocusHdl( aLink );
158cdf0e10cSrcweir aRbCond32.SetLoseFocusHdl( aLink );
159cdf0e10cSrcweir
160cdf0e10cSrcweir // Condition 1
161cdf0e10cSrcweir aCond1Pos1 = aLbCond12.GetPosPixel(); // Position Edit ohne Listbox
162cdf0e10cSrcweir aCond1Pos2 = aEdtCond11.GetPosPixel(); // Position Edit mit Listbox
163cdf0e10cSrcweir aRBtn1Pos1 = aRbCond11.GetPosPixel();
164cdf0e10cSrcweir aRBtn1Pos2 = aRbCond12.GetPosPixel();
165cdf0e10cSrcweir aPos = aEdtCond12.GetPosPixel();
166cdf0e10cSrcweir aPos.X() += aEdtCond12.GetSizePixel().Width(); // rechter Rand
167cdf0e10cSrcweir aCond1Size3 = aEdtCond11.GetSizePixel();
168cdf0e10cSrcweir aCond1Size2 = Size( aPos.X() - aCond1Pos2.X(), aCond1Size3.Height() );
169cdf0e10cSrcweir aCond1Size1 = Size( aPos.X() - aCond1Pos1.X(), aCond1Size3.Height() );
170cdf0e10cSrcweir
171cdf0e10cSrcweir aCbxCond1.Check();
172cdf0e10cSrcweir aLbCond11.SelectEntryPos( 0 );
173cdf0e10cSrcweir aLbCond12.SelectEntryPos( 0 );
174cdf0e10cSrcweir
175cdf0e10cSrcweir // Condition 2
176cdf0e10cSrcweir aCond2Pos1 = aLbCond22.GetPosPixel(); // Position Edit ohne Listbox
177cdf0e10cSrcweir aCond2Pos2 = aEdtCond21.GetPosPixel(); // Position Edit mit Listbox
178cdf0e10cSrcweir aRBtn2Pos1 = aRbCond21.GetPosPixel();
179cdf0e10cSrcweir aRBtn2Pos2 = aRbCond22.GetPosPixel();
180cdf0e10cSrcweir aPos = aEdtCond22.GetPosPixel();
181cdf0e10cSrcweir aPos.X() += aEdtCond22.GetSizePixel().Width(); // rechter Rand
182cdf0e10cSrcweir aCond2Size3 = aEdtCond21.GetSizePixel();
183cdf0e10cSrcweir aCond2Size2 = Size( aPos.X() - aCond2Pos2.X(), aCond2Size3.Height() );
184cdf0e10cSrcweir aCond2Size1 = Size( aPos.X() - aCond2Pos1.X(), aCond2Size3.Height() );
185cdf0e10cSrcweir
186cdf0e10cSrcweir aCbxCond2.Check( sal_False );
187cdf0e10cSrcweir aLbCond21.SelectEntryPos( 0 );
188cdf0e10cSrcweir aLbCond22.SelectEntryPos( 0 );
189cdf0e10cSrcweir
190cdf0e10cSrcweir // Condition 3
191cdf0e10cSrcweir aCond3Pos1 = aLbCond32.GetPosPixel(); // Position Edit ohne Listbox
192cdf0e10cSrcweir aCond3Pos2 = aEdtCond31.GetPosPixel(); // Position Edit mit Listbox
193cdf0e10cSrcweir aRBtn3Pos1 = aRbCond31.GetPosPixel();
194cdf0e10cSrcweir aRBtn3Pos2 = aRbCond32.GetPosPixel();
195cdf0e10cSrcweir aPos = aEdtCond32.GetPosPixel();
196cdf0e10cSrcweir aPos.X() += aEdtCond32.GetSizePixel().Width(); // rechter Rand
197cdf0e10cSrcweir aCond3Size3 = aEdtCond31.GetSizePixel();
198cdf0e10cSrcweir aCond3Size2 = Size( aPos.X() - aCond3Pos2.X(), aCond3Size3.Height() );
199cdf0e10cSrcweir aCond3Size1 = Size( aPos.X() - aCond3Pos1.X(), aCond3Size3.Height() );
200cdf0e10cSrcweir
201cdf0e10cSrcweir aCbxCond3.Check( sal_False );
202cdf0e10cSrcweir aLbCond31.SelectEntryPos( 0 );
203cdf0e10cSrcweir aLbCond32.SelectEntryPos( 0 );
204cdf0e10cSrcweir
205cdf0e10cSrcweir // Vorlagen aus pDoc holen
206cdf0e10cSrcweir SfxStyleSheetIterator aStyleIter( pDoc->GetStyleSheetPool(), SFX_STYLE_FAMILY_PARA );
207cdf0e10cSrcweir for ( pStyle = aStyleIter.First(); pStyle; pStyle = aStyleIter.Next() )
208cdf0e10cSrcweir {
209cdf0e10cSrcweir aName = pStyle->GetName();
210cdf0e10cSrcweir aLbCond1Template.InsertEntry( aName );
211cdf0e10cSrcweir aLbCond2Template.InsertEntry( aName );
212cdf0e10cSrcweir aLbCond3Template.InsertEntry( aName );
213cdf0e10cSrcweir }
214cdf0e10cSrcweir
215cdf0e10cSrcweir // Vorlagen eintragen
216cdf0e10cSrcweir //! pStyle = pDoc->GetSelectionStyle( /* ??? const ScMarkData& rMark ??? */ );
217cdf0e10cSrcweir pStyle = NULL; //!
218cdf0e10cSrcweir if (pStyle)
219cdf0e10cSrcweir aName = pStyle->GetName();
220cdf0e10cSrcweir else
221cdf0e10cSrcweir aName = ScGlobal::GetRscString(STR_STYLENAME_STANDARD);
222cdf0e10cSrcweir aLbCond1Template.SelectEntry( aName );
223cdf0e10cSrcweir aLbCond2Template.SelectEntry( aName );
224cdf0e10cSrcweir aLbCond3Template.SelectEntry( aName );
225cdf0e10cSrcweir
226cdf0e10cSrcweir ScAddress aCurPos;
227cdf0e10cSrcweir ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
228cdf0e10cSrcweir if (pViewShell)
229cdf0e10cSrcweir {
230cdf0e10cSrcweir ScViewData* pData = pViewShell->GetViewData();
231cdf0e10cSrcweir aCurPos = ScAddress( pData->GetCurX(), pData->GetCurY(), pData->GetTabNo() );
232cdf0e10cSrcweir }
233cdf0e10cSrcweir
234cdf0e10cSrcweir // Inhalt aus ConditionalFormat holen
235cdf0e10cSrcweir if ( pCurrentFormat )
236cdf0e10cSrcweir {
237cdf0e10cSrcweir const ScCondFormatEntry* pEntry;
238cdf0e10cSrcweir if ( pCurrentFormat->Count() > 0 )
239cdf0e10cSrcweir {
240cdf0e10cSrcweir pEntry= pCurrentFormat->GetEntry( 0 );
241cdf0e10cSrcweir aEdtCond11.SetText( pEntry->GetExpression( aCurPos, 0 ) );
242cdf0e10cSrcweir aLbCond1Template.SelectEntry( pEntry->GetStyle() );
243cdf0e10cSrcweir
244cdf0e10cSrcweir ScConditionMode eMode = pEntry->GetOperation();
245cdf0e10cSrcweir if ( eMode == SC_COND_DIRECT ) // via Formel
246cdf0e10cSrcweir {
247cdf0e10cSrcweir aLbCond11.SelectEntryPos( 1 );
248cdf0e10cSrcweir ChangeCond11Hdl( NULL );
249cdf0e10cSrcweir }
250cdf0e10cSrcweir else if ( eMode == SC_COND_NONE ) // ???
251cdf0e10cSrcweir ;
252cdf0e10cSrcweir else // via Werte
253cdf0e10cSrcweir {
254cdf0e10cSrcweir aLbCond12.SelectEntryPos( sal::static_int_cast<sal_uInt16>( eMode ) );
255cdf0e10cSrcweir if ( ( eMode == SC_COND_BETWEEN ) || ( eMode == SC_COND_NOTBETWEEN ) )
256cdf0e10cSrcweir aEdtCond12.SetText( pEntry->GetExpression( aCurPos, 1 ) );
257cdf0e10cSrcweir }
258cdf0e10cSrcweir }
259cdf0e10cSrcweir
260cdf0e10cSrcweir
261cdf0e10cSrcweir if ( pCurrentFormat->Count() > 1 )
262cdf0e10cSrcweir {
263cdf0e10cSrcweir aCbxCond2.Check( sal_True );
264cdf0e10cSrcweir pEntry= pCurrentFormat->GetEntry( 1 );
265cdf0e10cSrcweir aEdtCond21.SetText( pEntry->GetExpression( aCurPos, 0 ) );
266cdf0e10cSrcweir aLbCond2Template.SelectEntry( pEntry->GetStyle() );
267cdf0e10cSrcweir
268cdf0e10cSrcweir ScConditionMode eMode = pEntry->GetOperation();
269cdf0e10cSrcweir if ( eMode == SC_COND_DIRECT ) // via Formel
270cdf0e10cSrcweir {
271cdf0e10cSrcweir aLbCond21.SelectEntryPos( 1 );
272cdf0e10cSrcweir ChangeCond21Hdl( NULL );
273cdf0e10cSrcweir }
274cdf0e10cSrcweir else if ( eMode == SC_COND_NONE ) // ???
275cdf0e10cSrcweir ;
276cdf0e10cSrcweir else // via Werte
277cdf0e10cSrcweir {
278cdf0e10cSrcweir aLbCond22.SelectEntryPos( sal::static_int_cast<sal_uInt16>( eMode ) );
279cdf0e10cSrcweir if ( ( eMode == SC_COND_BETWEEN ) || ( eMode == SC_COND_NOTBETWEEN ) )
280cdf0e10cSrcweir aEdtCond22.SetText( pEntry->GetExpression( aCurPos, 1 ) );
281cdf0e10cSrcweir }
282cdf0e10cSrcweir }
283cdf0e10cSrcweir
284cdf0e10cSrcweir if ( pCurrentFormat->Count() > 2 )
285cdf0e10cSrcweir {
286cdf0e10cSrcweir aCbxCond3.Check( sal_True );
287cdf0e10cSrcweir pEntry= pCurrentFormat->GetEntry( 2 );
288cdf0e10cSrcweir aEdtCond31.SetText( pEntry->GetExpression( aCurPos, 0 ) );
289cdf0e10cSrcweir aLbCond3Template.SelectEntry( pEntry->GetStyle() );
290cdf0e10cSrcweir
291cdf0e10cSrcweir ScConditionMode eMode = pEntry->GetOperation();
292cdf0e10cSrcweir if ( eMode == SC_COND_DIRECT ) // via Formel
293cdf0e10cSrcweir {
294cdf0e10cSrcweir aLbCond31.SelectEntryPos( 1 );
295cdf0e10cSrcweir ChangeCond31Hdl( NULL );
296cdf0e10cSrcweir }
297cdf0e10cSrcweir else if ( eMode == SC_COND_NONE ) // ???
298cdf0e10cSrcweir ;
299cdf0e10cSrcweir else // via Werte
300cdf0e10cSrcweir {
301cdf0e10cSrcweir aLbCond32.SelectEntryPos( sal::static_int_cast<sal_uInt16>( eMode ) );
302cdf0e10cSrcweir if ( ( eMode == SC_COND_BETWEEN ) || ( eMode == SC_COND_NOTBETWEEN ) )
303cdf0e10cSrcweir aEdtCond32.SetText( pEntry->GetExpression( aCurPos, 1 ) );
304cdf0e10cSrcweir }
305cdf0e10cSrcweir }
306cdf0e10cSrcweir }
307cdf0e10cSrcweir
308cdf0e10cSrcweir ClickCond1Hdl( NULL );
309cdf0e10cSrcweir ClickCond2Hdl( NULL );
310cdf0e10cSrcweir ClickCond3Hdl( NULL );
311cdf0e10cSrcweir
312cdf0e10cSrcweir ChangeCond12Hdl( NULL );
313cdf0e10cSrcweir ChangeCond22Hdl( NULL );
314cdf0e10cSrcweir ChangeCond32Hdl( NULL );
315cdf0e10cSrcweir
316cdf0e10cSrcweir aEdtCond11.GrabFocus();
317cdf0e10cSrcweir pEdActive = &aEdtCond11;
318cdf0e10cSrcweir //@BugID 54702 Enablen/Disablen nur noch in Basisklasse
319cdf0e10cSrcweir //SFX_APPWINDOW->Enable(); // Ref-Feld hat Focus
320cdf0e10cSrcweir // SFX_APPWINDOW->Disable();
321cdf0e10cSrcweir
322cdf0e10cSrcweir aLbCond11.SetAccessibleRelationLabeledBy( &aCbxCond1 );
323cdf0e10cSrcweir aLbCond12.SetAccessibleRelationLabeledBy( &aCbxCond1 );
324cdf0e10cSrcweir aEdtCond11.SetAccessibleRelationLabeledBy( &aCbxCond1 );
325cdf0e10cSrcweir aRbCond11.SetAccessibleRelationLabeledBy( &aCbxCond1 );
326cdf0e10cSrcweir
327cdf0e10cSrcweir aLbCond21.SetAccessibleRelationLabeledBy( &aCbxCond2 );
328cdf0e10cSrcweir aLbCond22.SetAccessibleRelationLabeledBy( &aCbxCond2 );
329cdf0e10cSrcweir aEdtCond21.SetAccessibleRelationLabeledBy( &aCbxCond2 );
330cdf0e10cSrcweir aRbCond21.SetAccessibleRelationLabeledBy( &aCbxCond2 );
331cdf0e10cSrcweir
332cdf0e10cSrcweir aLbCond31.SetAccessibleRelationLabeledBy( &aCbxCond3 );
333cdf0e10cSrcweir aLbCond32.SetAccessibleRelationLabeledBy( &aCbxCond3 );
334cdf0e10cSrcweir aEdtCond31.SetAccessibleRelationLabeledBy( &aCbxCond3 );
335cdf0e10cSrcweir aRbCond31.SetAccessibleRelationLabeledBy( &aCbxCond3 );
336cdf0e10cSrcweir aLbCond11.SetAccessibleName( ScResId(LABEL_FORMARTTING_CONDITIONS) );
337cdf0e10cSrcweir aLbCond12.SetAccessibleName( ScResId(LABEL_CONDITIONS) );
338cdf0e10cSrcweir aEdtCond11.SetAccessibleName( ScResId(LABEL_CONDITION_VALUE) );
339cdf0e10cSrcweir
340cdf0e10cSrcweir aLbCond21.SetAccessibleName( ScResId(LABEL_FORMARTTING_CONDITIONS) );
341cdf0e10cSrcweir aLbCond22.SetAccessibleName( ScResId(LABEL_CONDITIONS) );
342cdf0e10cSrcweir aEdtCond21.SetAccessibleName( ScResId(LABEL_CONDITION_VALUE) );
343cdf0e10cSrcweir
344cdf0e10cSrcweir aLbCond31.SetAccessibleName( ScResId(LABEL_FORMARTTING_CONDITIONS) );
345cdf0e10cSrcweir aLbCond32.SetAccessibleName( ScResId(LABEL_CONDITIONS) );
346cdf0e10cSrcweir aEdtCond31.SetAccessibleName( ScResId(LABEL_CONDITION_VALUE) );
347cdf0e10cSrcweir }
348cdf0e10cSrcweir
349cdf0e10cSrcweir
350cdf0e10cSrcweir //----------------------------------------------------------------------------
351cdf0e10cSrcweir // Destruktor
352cdf0e10cSrcweir
~ScConditionalFormatDlg()353cdf0e10cSrcweir __EXPORT ScConditionalFormatDlg::~ScConditionalFormatDlg()
354cdf0e10cSrcweir {
355cdf0e10cSrcweir }
356cdf0e10cSrcweir
357cdf0e10cSrcweir
358cdf0e10cSrcweir //----------------------------------------------------------------------------
359cdf0e10cSrcweir
SetReference(const ScRange & rRef,ScDocument * pDocP)360cdf0e10cSrcweir void ScConditionalFormatDlg::SetReference( const ScRange& rRef, ScDocument* pDocP )
361cdf0e10cSrcweir {
362cdf0e10cSrcweir if ( pEdActive )
363cdf0e10cSrcweir {
364cdf0e10cSrcweir if ( rRef.aStart != rRef.aEnd )
365cdf0e10cSrcweir RefInputStart(pEdActive);
366cdf0e10cSrcweir
367cdf0e10cSrcweir String aStr;
368cdf0e10cSrcweir rRef.Format( aStr, SCR_ABS_3D, pDocP, pDocP->GetAddressConvention () );
369cdf0e10cSrcweir String aVal( pEdActive->GetText() );
370cdf0e10cSrcweir Selection aSel( pEdActive->GetSelection() );
371cdf0e10cSrcweir aSel.Justify();
372cdf0e10cSrcweir aVal.Erase( (xub_StrLen)aSel.Min(), (xub_StrLen)aSel.Len() );
373cdf0e10cSrcweir aVal.Insert( aStr, (xub_StrLen)aSel.Min() );
374cdf0e10cSrcweir Selection aNewSel( aSel.Min(), aSel.Min()+aStr.Len() );
375cdf0e10cSrcweir pEdActive->SetRefString( aVal );
376cdf0e10cSrcweir pEdActive->SetSelection( aNewSel );
377cdf0e10cSrcweir // pEdActive->SetModifyFlag();
378cdf0e10cSrcweir }
379cdf0e10cSrcweir }
380cdf0e10cSrcweir
381cdf0e10cSrcweir //----------------------------------------------------------------------------
382cdf0e10cSrcweir
AddRefEntry()383cdf0e10cSrcweir void ScConditionalFormatDlg::AddRefEntry()
384cdf0e10cSrcweir {
385cdf0e10cSrcweir if ( pEdActive )
386cdf0e10cSrcweir {
387cdf0e10cSrcweir String aVal = pEdActive->GetText();
388cdf0e10cSrcweir aVal += ';';
389cdf0e10cSrcweir pEdActive->SetText(aVal);
390cdf0e10cSrcweir
391cdf0e10cSrcweir xub_StrLen nLen = aVal.Len();
392cdf0e10cSrcweir pEdActive->SetSelection( Selection( nLen, nLen ) );
393cdf0e10cSrcweir // pEdActive->SetModifyFlag();
394cdf0e10cSrcweir }
395cdf0e10cSrcweir }
396cdf0e10cSrcweir
397cdf0e10cSrcweir //----------------------------------------------------------------------------
398cdf0e10cSrcweir
IsRefInputMode() const399cdf0e10cSrcweir sal_Bool ScConditionalFormatDlg::IsRefInputMode() const
400cdf0e10cSrcweir {
401cdf0e10cSrcweir return (pEdActive != NULL);
402cdf0e10cSrcweir }
403cdf0e10cSrcweir
404cdf0e10cSrcweir
405cdf0e10cSrcweir //----------------------------------------------------------------------------
406cdf0e10cSrcweir
SetActive()407cdf0e10cSrcweir void ScConditionalFormatDlg::SetActive()
408cdf0e10cSrcweir {
409cdf0e10cSrcweir if ( bDlgLostFocus )
410cdf0e10cSrcweir {
411cdf0e10cSrcweir bDlgLostFocus = sal_False;
412cdf0e10cSrcweir if( pEdActive )
413cdf0e10cSrcweir pEdActive->GrabFocus();
414cdf0e10cSrcweir }
415cdf0e10cSrcweir else
416cdf0e10cSrcweir GrabFocus();
417cdf0e10cSrcweir
418cdf0e10cSrcweir RefInputDone();
419cdf0e10cSrcweir }
420cdf0e10cSrcweir
421cdf0e10cSrcweir
422cdf0e10cSrcweir //----------------------------------------------------------------------------
423cdf0e10cSrcweir // Holt die ausgewaehlte bedingte Formatierung ab
424cdf0e10cSrcweir
GetConditionalFormat(ScConditionalFormat & rCndFmt)425cdf0e10cSrcweir void ScConditionalFormatDlg::GetConditionalFormat( ScConditionalFormat& rCndFmt )
426cdf0e10cSrcweir {
427cdf0e10cSrcweir ScConditionMode eOper;
428cdf0e10cSrcweir String sExpr1;
429cdf0e10cSrcweir String sExpr2;
430cdf0e10cSrcweir String sStyle;
431cdf0e10cSrcweir ScAddress aCurPos;
432cdf0e10cSrcweir
433cdf0e10cSrcweir ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
434cdf0e10cSrcweir if (pViewShell)
435cdf0e10cSrcweir {
436cdf0e10cSrcweir ScViewData* pData = pViewShell->GetViewData();
437cdf0e10cSrcweir aCurPos = ScAddress( pData->GetCurX(), pData->GetCurY(), pData->GetTabNo() );
438cdf0e10cSrcweir }
439cdf0e10cSrcweir
440cdf0e10cSrcweir if ( aCbxCond1.IsChecked() )
441cdf0e10cSrcweir {
442cdf0e10cSrcweir if ( aLbCond11.GetSelectEntryPos() == 1 ) // via Formel
443cdf0e10cSrcweir eOper = SC_COND_DIRECT;
444cdf0e10cSrcweir else
445cdf0e10cSrcweir eOper = (ScConditionMode)aLbCond12.GetSelectEntryPos();
446cdf0e10cSrcweir sExpr1 = aEdtCond11.GetText();
447cdf0e10cSrcweir sExpr2 = aEdtCond12.GetText();
448cdf0e10cSrcweir sStyle = aLbCond1Template.GetSelectEntry();
449cdf0e10cSrcweir ScCondFormatEntry aNewEntry( eOper, sExpr1, sExpr2, pDoc, aCurPos, sStyle );
450cdf0e10cSrcweir rCndFmt.AddEntry( aNewEntry );
451cdf0e10cSrcweir }
452cdf0e10cSrcweir
453cdf0e10cSrcweir if ( aCbxCond2.IsChecked() )
454cdf0e10cSrcweir {
455cdf0e10cSrcweir if ( aLbCond21.GetSelectEntryPos() == 1 ) // via Formel???
456cdf0e10cSrcweir eOper = SC_COND_DIRECT;
457cdf0e10cSrcweir else
458cdf0e10cSrcweir eOper = (ScConditionMode)aLbCond22.GetSelectEntryPos();
459cdf0e10cSrcweir sExpr1 = aEdtCond21.GetText();
460cdf0e10cSrcweir sExpr2 = aEdtCond22.GetText();
461cdf0e10cSrcweir sStyle = aLbCond2Template.GetSelectEntry();
462cdf0e10cSrcweir ScCondFormatEntry aNewEntry( eOper, sExpr1, sExpr2, pDoc, aCurPos, sStyle );
463cdf0e10cSrcweir rCndFmt.AddEntry( aNewEntry );
464cdf0e10cSrcweir }
465cdf0e10cSrcweir
466cdf0e10cSrcweir if ( aCbxCond3.IsChecked() )
467cdf0e10cSrcweir {
468cdf0e10cSrcweir if ( aLbCond31.GetSelectEntryPos() == 1 ) // via Formel???
469cdf0e10cSrcweir eOper = SC_COND_DIRECT;
470cdf0e10cSrcweir else
471cdf0e10cSrcweir eOper = (ScConditionMode)aLbCond32.GetSelectEntryPos();
472cdf0e10cSrcweir sExpr1 = aEdtCond31.GetText();
473cdf0e10cSrcweir sExpr2 = aEdtCond32.GetText();
474cdf0e10cSrcweir sStyle = aLbCond3Template.GetSelectEntry();
475cdf0e10cSrcweir ScCondFormatEntry aNewEntry( eOper, sExpr1, sExpr2, pDoc, aCurPos, sStyle );
476cdf0e10cSrcweir rCndFmt.AddEntry( aNewEntry );
477cdf0e10cSrcweir }
478cdf0e10cSrcweir }
479cdf0e10cSrcweir
480cdf0e10cSrcweir
481cdf0e10cSrcweir //----------------------------------------------------------------------------
482cdf0e10cSrcweir // Zerstoert den Dialog
483cdf0e10cSrcweir
Close()484cdf0e10cSrcweir sal_Bool ScConditionalFormatDlg::Close()
485cdf0e10cSrcweir {
486cdf0e10cSrcweir return DoClose( ScCondFormatDlgWrapper::GetChildWindowId() );
487cdf0e10cSrcweir }
488cdf0e10cSrcweir
489cdf0e10cSrcweir
490cdf0e10cSrcweir //----------------------------------------------------------------------------
491cdf0e10cSrcweir // Handler:
492cdf0e10cSrcweir
493cdf0e10cSrcweir //----------------------------------------------------------------------------
494cdf0e10cSrcweir // Enabled/Disabled Condition1-Controls
495cdf0e10cSrcweir
IMPL_LINK(ScConditionalFormatDlg,ClickCond1Hdl,void *,EMPTYARG)496cdf0e10cSrcweir IMPL_LINK( ScConditionalFormatDlg, ClickCond1Hdl, void *, EMPTYARG )
497cdf0e10cSrcweir {
498cdf0e10cSrcweir sal_Bool bChecked = aCbxCond1.IsChecked();
499cdf0e10cSrcweir
500cdf0e10cSrcweir aLbCond11.Enable( bChecked );
501cdf0e10cSrcweir aLbCond12.Enable( bChecked );
502cdf0e10cSrcweir aEdtCond11.Enable( bChecked );
503cdf0e10cSrcweir aRbCond11.Enable( bChecked );
504cdf0e10cSrcweir aFtCond1And.Enable( bChecked );
505cdf0e10cSrcweir aEdtCond12.Enable( bChecked );
506cdf0e10cSrcweir aRbCond12.Enable( bChecked );
507cdf0e10cSrcweir aFtCond1Template.Enable( bChecked );
508cdf0e10cSrcweir aLbCond1Template.Enable( bChecked );
509cdf0e10cSrcweir aBtnNew1.Enable( bChecked );
510cdf0e10cSrcweir
511cdf0e10cSrcweir return( 0L );
512cdf0e10cSrcweir }
513cdf0e10cSrcweir
514cdf0e10cSrcweir
515cdf0e10cSrcweir //----------------------------------------------------------------------------
516cdf0e10cSrcweir // Zellwert/Formel
517cdf0e10cSrcweir
IMPL_LINK(ScConditionalFormatDlg,ChangeCond11Hdl,void *,EMPTYARG)518cdf0e10cSrcweir IMPL_LINK( ScConditionalFormatDlg, ChangeCond11Hdl, void *, EMPTYARG )
519cdf0e10cSrcweir {
520cdf0e10cSrcweir sal_uInt16 nPos = aLbCond11.GetSelectEntryPos();
521cdf0e10cSrcweir
522cdf0e10cSrcweir if( nPos == 0 ) // Zellwert
523cdf0e10cSrcweir {
524cdf0e10cSrcweir aLbCond12.Show();
525cdf0e10cSrcweir aEdtCond11.SetPosPixel( aCond1Pos2 );
526cdf0e10cSrcweir }
527cdf0e10cSrcweir else // Formel
528cdf0e10cSrcweir {
529cdf0e10cSrcweir aLbCond12.Hide();
530cdf0e10cSrcweir aFtCond1And.Hide();
531cdf0e10cSrcweir aEdtCond12.Hide();
532cdf0e10cSrcweir aRbCond12.Hide();
533cdf0e10cSrcweir aRbCond11.SetPosPixel( aRBtn1Pos2 );
534cdf0e10cSrcweir aEdtCond11.SetPosSizePixel( aCond1Pos1, aCond1Size1 );
535cdf0e10cSrcweir }
536cdf0e10cSrcweir
537cdf0e10cSrcweir ChangeCond12Hdl( NULL );
538cdf0e10cSrcweir
539cdf0e10cSrcweir return( 0L );
540cdf0e10cSrcweir }
541cdf0e10cSrcweir
542cdf0e10cSrcweir
543cdf0e10cSrcweir //----------------------------------------------------------------------------
544cdf0e10cSrcweir // zwischen, gleich, groesser, ...
545cdf0e10cSrcweir
IMPL_LINK(ScConditionalFormatDlg,ChangeCond12Hdl,void *,EMPTYARG)546cdf0e10cSrcweir IMPL_LINK( ScConditionalFormatDlg, ChangeCond12Hdl, void *, EMPTYARG )
547cdf0e10cSrcweir {
548cdf0e10cSrcweir if( aLbCond12.IsVisible() )
549cdf0e10cSrcweir {
550cdf0e10cSrcweir sal_uInt16 nPos = aLbCond12.GetSelectEntryPos();
551cdf0e10cSrcweir
552cdf0e10cSrcweir if( nPos == 6 || nPos == 7 ) // zwischen, n. zwischen
553cdf0e10cSrcweir {
554cdf0e10cSrcweir aEdtCond11.SetSizePixel( aCond1Size3 );
555cdf0e10cSrcweir aRbCond11.SetPosPixel( aRBtn1Pos1 );
556cdf0e10cSrcweir aFtCond1And.Show();
557cdf0e10cSrcweir aEdtCond12.Show();
558cdf0e10cSrcweir aRbCond12.Show();
559cdf0e10cSrcweir }
560cdf0e10cSrcweir else // gleich, n. gleich ...
561cdf0e10cSrcweir {
562cdf0e10cSrcweir aEdtCond12.Hide();
563cdf0e10cSrcweir aRbCond12.Hide();
564cdf0e10cSrcweir aFtCond1And.Hide();
565cdf0e10cSrcweir aRbCond11.SetPosPixel( aRBtn1Pos2 );
566cdf0e10cSrcweir aEdtCond11.SetSizePixel( aCond1Size2 );
567cdf0e10cSrcweir }
568cdf0e10cSrcweir }
569cdf0e10cSrcweir
570cdf0e10cSrcweir return( 0L );
571cdf0e10cSrcweir }
572cdf0e10cSrcweir
573cdf0e10cSrcweir
574cdf0e10cSrcweir //----------------------------------------------------------------------------
575cdf0e10cSrcweir // Enabled/Disabled Condition2-Controls
576cdf0e10cSrcweir
IMPL_LINK(ScConditionalFormatDlg,ClickCond2Hdl,void *,EMPTYARG)577cdf0e10cSrcweir IMPL_LINK( ScConditionalFormatDlg, ClickCond2Hdl, void *, EMPTYARG )
578cdf0e10cSrcweir {
579cdf0e10cSrcweir sal_Bool bChecked = aCbxCond2.IsChecked();
580cdf0e10cSrcweir
581cdf0e10cSrcweir aLbCond21.Enable( bChecked );
582cdf0e10cSrcweir aLbCond22.Enable( bChecked );
583cdf0e10cSrcweir aEdtCond21.Enable( bChecked );
584cdf0e10cSrcweir aRbCond21.Enable( bChecked );
585cdf0e10cSrcweir aFtCond2And.Enable( bChecked );
586cdf0e10cSrcweir aEdtCond22.Enable( bChecked );
587cdf0e10cSrcweir aRbCond22.Enable( bChecked );
588cdf0e10cSrcweir aFtCond2Template.Enable( bChecked );
589cdf0e10cSrcweir aLbCond2Template.Enable( bChecked );
590cdf0e10cSrcweir aBtnNew2.Enable( bChecked );
591cdf0e10cSrcweir
592cdf0e10cSrcweir return( 0L );
593cdf0e10cSrcweir }
594cdf0e10cSrcweir
595cdf0e10cSrcweir
596cdf0e10cSrcweir //----------------------------------------------------------------------------
597cdf0e10cSrcweir // Zellwert/Formel
598cdf0e10cSrcweir
IMPL_LINK(ScConditionalFormatDlg,ChangeCond21Hdl,void *,EMPTYARG)599cdf0e10cSrcweir IMPL_LINK( ScConditionalFormatDlg, ChangeCond21Hdl, void *, EMPTYARG )
600cdf0e10cSrcweir {
601cdf0e10cSrcweir sal_uInt16 nPos = aLbCond21.GetSelectEntryPos();
602cdf0e10cSrcweir
603cdf0e10cSrcweir if( nPos == 0 ) // Zellwert
604cdf0e10cSrcweir {
605cdf0e10cSrcweir aLbCond22.Show();
606cdf0e10cSrcweir aEdtCond21.SetPosPixel( aCond2Pos2 );
607cdf0e10cSrcweir }
608cdf0e10cSrcweir else // Formel
609cdf0e10cSrcweir {
610cdf0e10cSrcweir aLbCond22.Hide();
611cdf0e10cSrcweir aFtCond2And.Hide();
612cdf0e10cSrcweir aEdtCond22.Hide();
613cdf0e10cSrcweir aRbCond22.Hide();
614cdf0e10cSrcweir aRbCond21.SetPosPixel( aRBtn2Pos2 );
615cdf0e10cSrcweir aEdtCond21.SetPosSizePixel( aCond2Pos1, aCond2Size1 );
616cdf0e10cSrcweir }
617cdf0e10cSrcweir
618cdf0e10cSrcweir ChangeCond22Hdl( NULL );
619cdf0e10cSrcweir
620cdf0e10cSrcweir return( 0L );
621cdf0e10cSrcweir }
622cdf0e10cSrcweir
623cdf0e10cSrcweir
624cdf0e10cSrcweir //----------------------------------------------------------------------------
625cdf0e10cSrcweir // zwischen, gleich, groesser, ...
626cdf0e10cSrcweir
IMPL_LINK(ScConditionalFormatDlg,ChangeCond22Hdl,void *,EMPTYARG)627cdf0e10cSrcweir IMPL_LINK( ScConditionalFormatDlg, ChangeCond22Hdl, void *, EMPTYARG )
628cdf0e10cSrcweir {
629cdf0e10cSrcweir if( aLbCond22.IsVisible() )
630cdf0e10cSrcweir {
631cdf0e10cSrcweir sal_uInt16 nPos = aLbCond22.GetSelectEntryPos();
632cdf0e10cSrcweir
633cdf0e10cSrcweir if( nPos == 6 || nPos == 7 ) // zwischen, n. zwischen
634cdf0e10cSrcweir {
635cdf0e10cSrcweir aEdtCond21.SetSizePixel( aCond2Size3 );
636cdf0e10cSrcweir aRbCond21.SetPosPixel( aRBtn2Pos1 );
637cdf0e10cSrcweir aFtCond2And.Show();
638cdf0e10cSrcweir aEdtCond22.Show();
639cdf0e10cSrcweir aRbCond22.Show();
640cdf0e10cSrcweir }
641cdf0e10cSrcweir else // gleich, n. gleich ...
642cdf0e10cSrcweir {
643cdf0e10cSrcweir aEdtCond22.Hide();
644cdf0e10cSrcweir aRbCond22.Hide();
645cdf0e10cSrcweir aFtCond2And.Hide();
646cdf0e10cSrcweir aRbCond21.SetPosPixel( aRBtn2Pos2 );
647cdf0e10cSrcweir aEdtCond21.SetSizePixel( aCond2Size2 );
648cdf0e10cSrcweir }
649cdf0e10cSrcweir }
650cdf0e10cSrcweir
651cdf0e10cSrcweir return( 0L );
652cdf0e10cSrcweir }
653cdf0e10cSrcweir
654cdf0e10cSrcweir
655cdf0e10cSrcweir //----------------------------------------------------------------------------
656cdf0e10cSrcweir // Enabled/Disabled Condition3-Controls
657cdf0e10cSrcweir
IMPL_LINK(ScConditionalFormatDlg,ClickCond3Hdl,void *,EMPTYARG)658cdf0e10cSrcweir IMPL_LINK( ScConditionalFormatDlg, ClickCond3Hdl, void *, EMPTYARG )
659cdf0e10cSrcweir {
660cdf0e10cSrcweir sal_Bool bChecked = aCbxCond3.IsChecked();
661cdf0e10cSrcweir
662cdf0e10cSrcweir aLbCond31.Enable( bChecked );
663cdf0e10cSrcweir aLbCond32.Enable( bChecked );
664cdf0e10cSrcweir aEdtCond31.Enable( bChecked );
665cdf0e10cSrcweir aRbCond31.Enable( bChecked );
666cdf0e10cSrcweir aFtCond3And.Enable( bChecked );
667cdf0e10cSrcweir aEdtCond32.Enable( bChecked );
668cdf0e10cSrcweir aRbCond32.Enable( bChecked );
669cdf0e10cSrcweir aFtCond3Template.Enable( bChecked );
670cdf0e10cSrcweir aLbCond3Template.Enable( bChecked );
671cdf0e10cSrcweir aBtnNew3.Enable( bChecked );
672cdf0e10cSrcweir
673cdf0e10cSrcweir return( 0L );
674cdf0e10cSrcweir }
675cdf0e10cSrcweir
676cdf0e10cSrcweir
677cdf0e10cSrcweir //----------------------------------------------------------------------------
678cdf0e10cSrcweir // Zellwert/Formel
679cdf0e10cSrcweir
IMPL_LINK(ScConditionalFormatDlg,ChangeCond31Hdl,void *,EMPTYARG)680cdf0e10cSrcweir IMPL_LINK( ScConditionalFormatDlg, ChangeCond31Hdl, void *, EMPTYARG )
681cdf0e10cSrcweir {
682cdf0e10cSrcweir sal_uInt16 nPos = aLbCond31.GetSelectEntryPos();
683cdf0e10cSrcweir
684cdf0e10cSrcweir if( nPos == 0 ) // Zellwert
685cdf0e10cSrcweir {
686cdf0e10cSrcweir aLbCond32.Show();
687cdf0e10cSrcweir aEdtCond31.SetPosPixel( aCond3Pos2 );
688cdf0e10cSrcweir }
689cdf0e10cSrcweir else // Formel
690cdf0e10cSrcweir {
691cdf0e10cSrcweir aLbCond32.Hide();
692cdf0e10cSrcweir aFtCond3And.Hide();
693cdf0e10cSrcweir aEdtCond32.Hide();
694cdf0e10cSrcweir aRbCond32.Hide();
695cdf0e10cSrcweir aRbCond31.SetPosPixel( aRBtn3Pos2 );
696cdf0e10cSrcweir aEdtCond31.SetPosSizePixel( aCond3Pos1, aCond3Size1 );
697cdf0e10cSrcweir }
698cdf0e10cSrcweir
699cdf0e10cSrcweir ChangeCond32Hdl( NULL );
700cdf0e10cSrcweir
701cdf0e10cSrcweir return( 0L );
702cdf0e10cSrcweir }
703cdf0e10cSrcweir
704cdf0e10cSrcweir
705cdf0e10cSrcweir //----------------------------------------------------------------------------
706cdf0e10cSrcweir // zwischen, gleich, groesser, ...
707cdf0e10cSrcweir
IMPL_LINK(ScConditionalFormatDlg,ChangeCond32Hdl,void *,EMPTYARG)708cdf0e10cSrcweir IMPL_LINK( ScConditionalFormatDlg, ChangeCond32Hdl, void *, EMPTYARG )
709cdf0e10cSrcweir {
710cdf0e10cSrcweir if( aLbCond32.IsVisible() )
711cdf0e10cSrcweir {
712cdf0e10cSrcweir sal_uInt16 nPos = aLbCond32.GetSelectEntryPos();
713cdf0e10cSrcweir
714cdf0e10cSrcweir if( nPos == 6 || nPos == 7 ) // zwischen, n. zwischen
715cdf0e10cSrcweir {
716cdf0e10cSrcweir aEdtCond31.SetSizePixel( aCond3Size3 );
717cdf0e10cSrcweir aRbCond31.SetPosPixel( aRBtn3Pos1 );
718cdf0e10cSrcweir aFtCond3And.Show();
719cdf0e10cSrcweir aEdtCond32.Show();
720cdf0e10cSrcweir aRbCond32.Show();
721cdf0e10cSrcweir }
722cdf0e10cSrcweir else // gleich, n. gleich ...
723cdf0e10cSrcweir {
724cdf0e10cSrcweir aEdtCond32.Hide();
725cdf0e10cSrcweir aRbCond32.Hide();
726cdf0e10cSrcweir aFtCond3And.Hide();
727cdf0e10cSrcweir aRbCond31.SetPosPixel( aRBtn3Pos2 );
728cdf0e10cSrcweir aEdtCond31.SetSizePixel( aCond3Size2 );
729cdf0e10cSrcweir }
730cdf0e10cSrcweir }
731cdf0e10cSrcweir
732cdf0e10cSrcweir return( 0L );
733cdf0e10cSrcweir }
734cdf0e10cSrcweir
735cdf0e10cSrcweir
736cdf0e10cSrcweir //----------------------------------------------------------------------------
737cdf0e10cSrcweir
IMPL_LINK(ScConditionalFormatDlg,GetFocusHdl,Control *,pCtrl)738cdf0e10cSrcweir IMPL_LINK( ScConditionalFormatDlg, GetFocusHdl, Control*, pCtrl )
739cdf0e10cSrcweir {
740cdf0e10cSrcweir if( (pCtrl == (Control*)&aEdtCond11) || (pCtrl == (Control*)&aRbCond11) )
741cdf0e10cSrcweir pEdActive = &aEdtCond11;
742cdf0e10cSrcweir else if( (pCtrl == (Control*)&aEdtCond12) || (pCtrl == (Control*)&aRbCond12) )
743cdf0e10cSrcweir pEdActive = &aEdtCond12;
744cdf0e10cSrcweir else if( (pCtrl == (Control*)&aEdtCond21) || (pCtrl == (Control*)&aRbCond21) )
745cdf0e10cSrcweir pEdActive = &aEdtCond21;
746cdf0e10cSrcweir else if( (pCtrl == (Control*)&aEdtCond22) || (pCtrl == (Control*)&aRbCond22) )
747cdf0e10cSrcweir pEdActive = &aEdtCond22;
748cdf0e10cSrcweir else if( (pCtrl == (Control*)&aEdtCond31) || (pCtrl == (Control*)&aRbCond31) )
749cdf0e10cSrcweir pEdActive = &aEdtCond31;
750cdf0e10cSrcweir else if( (pCtrl == (Control*)&aEdtCond32) || (pCtrl == (Control*)&aRbCond32) )
751cdf0e10cSrcweir pEdActive = &aEdtCond32;
752cdf0e10cSrcweir else
753cdf0e10cSrcweir pEdActive = NULL;
754cdf0e10cSrcweir
755cdf0e10cSrcweir if( pEdActive )
756cdf0e10cSrcweir pEdActive->SetSelection( Selection( 0, SELECTION_MAX ) );
757cdf0e10cSrcweir
758cdf0e10cSrcweir return 0;
759cdf0e10cSrcweir }
760cdf0e10cSrcweir
761cdf0e10cSrcweir
762cdf0e10cSrcweir //----------------------------------------------------------------------------
763cdf0e10cSrcweir
IMPL_LINK(ScConditionalFormatDlg,LoseFocusHdl,Control *,EMPTYARG)764cdf0e10cSrcweir IMPL_LINK( ScConditionalFormatDlg, LoseFocusHdl, Control*, EMPTYARG )
765cdf0e10cSrcweir {
766cdf0e10cSrcweir bDlgLostFocus = !IsActive();
767cdf0e10cSrcweir return 0;
768cdf0e10cSrcweir }
769cdf0e10cSrcweir
770cdf0e10cSrcweir
771cdf0e10cSrcweir //----------------------------------------------------------------------------
772cdf0e10cSrcweir // [OK], [Cancel]
773cdf0e10cSrcweir
IMPL_LINK(ScConditionalFormatDlg,BtnHdl,PushButton *,pBtn)774cdf0e10cSrcweir IMPL_LINK( ScConditionalFormatDlg, BtnHdl, PushButton*, pBtn )
775cdf0e10cSrcweir {
776cdf0e10cSrcweir if ( pBtn == &aBtnOk )
777cdf0e10cSrcweir {
778cdf0e10cSrcweir ScConditionalFormat aCondFrmt( 0, pDoc );
779cdf0e10cSrcweir GetConditionalFormat( aCondFrmt );
780cdf0e10cSrcweir ScCondFrmtItem aOutItem( FID_CONDITIONAL_FORMAT, aCondFrmt );
781cdf0e10cSrcweir
782cdf0e10cSrcweir SetDispatcherLock( sal_False );
783cdf0e10cSrcweir SwitchToDocument();
784cdf0e10cSrcweir GetBindings().GetDispatcher()->Execute( FID_CONDITIONAL_FORMAT,
785cdf0e10cSrcweir SFX_CALLMODE_SLOT | SFX_CALLMODE_RECORD,
786cdf0e10cSrcweir &aOutItem, 0L, 0L );
787cdf0e10cSrcweir Close();
788cdf0e10cSrcweir }
789cdf0e10cSrcweir else if ( pBtn == &aBtnCancel )
790cdf0e10cSrcweir Close();
791cdf0e10cSrcweir
792cdf0e10cSrcweir return( 0L );
793cdf0e10cSrcweir }
794cdf0e10cSrcweir
795cdf0e10cSrcweir
796cdf0e10cSrcweir //----------------------------------------------------------------------------
797cdf0e10cSrcweir
IMPL_LINK(ScConditionalFormatDlg,NewBtnHdl,PushButton *,pBtn)798cdf0e10cSrcweir IMPL_LINK( ScConditionalFormatDlg, NewBtnHdl, PushButton*, pBtn )
799cdf0e10cSrcweir {
800cdf0e10cSrcweir SfxUInt16Item aFamilyItem( SID_STYLE_FAMILY, SFX_STYLE_FAMILY_PARA );
801cdf0e10cSrcweir SfxStringItem aRefItem( SID_STYLE_REFERENCE, ScGlobal::GetRscString(STR_STYLENAME_STANDARD) );
802cdf0e10cSrcweir
803cdf0e10cSrcweir // unlock the dispatcher so SID_STYLE_NEW can be executed
804cdf0e10cSrcweir // (SetDispatcherLock would affect all Calc documents)
805cdf0e10cSrcweir SfxDispatcher* pDisp = GetBindings().GetDispatcher();
806cdf0e10cSrcweir sal_Bool bLocked = pDisp->IsLocked();
807cdf0e10cSrcweir if (bLocked)
808cdf0e10cSrcweir pDisp->Lock(sal_False);
809cdf0e10cSrcweir
810cdf0e10cSrcweir // Execute the "new style" slot, complete with undo and all necessary updates.
811cdf0e10cSrcweir // The return value (SfxUInt16Item) is ignored, look for new styles instead.
812cdf0e10cSrcweir pDisp->Execute( SID_STYLE_NEW, SFX_CALLMODE_SYNCHRON | SFX_CALLMODE_RECORD | SFX_CALLMODE_MODAL,
813cdf0e10cSrcweir &aFamilyItem,
814cdf0e10cSrcweir &aRefItem,
815cdf0e10cSrcweir 0L );
816cdf0e10cSrcweir
817cdf0e10cSrcweir if (bLocked)
818cdf0e10cSrcweir pDisp->Lock(sal_True);
819cdf0e10cSrcweir
820cdf0e10cSrcweir // Find the new style and add it into the style list boxes
821cdf0e10cSrcweir String aNewStyle;
822cdf0e10cSrcweir SfxStyleSheetIterator aStyleIter( pDoc->GetStyleSheetPool(), SFX_STYLE_FAMILY_PARA );
823cdf0e10cSrcweir for ( SfxStyleSheetBase* pStyle = aStyleIter.First(); pStyle; pStyle = aStyleIter.Next() )
824cdf0e10cSrcweir {
825cdf0e10cSrcweir String aName = pStyle->GetName();
826cdf0e10cSrcweir if ( aLbCond1Template.GetEntryPos(aName) == LISTBOX_ENTRY_NOTFOUND ) // all lists contain the same entries
827cdf0e10cSrcweir {
828cdf0e10cSrcweir aLbCond1Template.InsertEntry( aName );
829cdf0e10cSrcweir aLbCond2Template.InsertEntry( aName );
830cdf0e10cSrcweir aLbCond3Template.InsertEntry( aName );
831cdf0e10cSrcweir // if there are several new styles (from API or a different view),
832cdf0e10cSrcweir // assume the last one is the result of the dialog
833cdf0e10cSrcweir aNewStyle = aName;
834cdf0e10cSrcweir }
835cdf0e10cSrcweir }
836cdf0e10cSrcweir
837cdf0e10cSrcweir // select the new style in the list box for which the button was pressed
838cdf0e10cSrcweir if ( aNewStyle.Len() )
839cdf0e10cSrcweir {
840cdf0e10cSrcweir ListBox* pListBox = &aLbCond1Template;
841cdf0e10cSrcweir if ( pBtn == &aBtnNew2 )
842cdf0e10cSrcweir pListBox = &aLbCond2Template;
843cdf0e10cSrcweir else if ( pBtn == &aBtnNew3 )
844cdf0e10cSrcweir pListBox = &aLbCond3Template;
845cdf0e10cSrcweir
846cdf0e10cSrcweir pListBox->SelectEntry( aNewStyle );
847cdf0e10cSrcweir }
848cdf0e10cSrcweir
849cdf0e10cSrcweir return 0;
850cdf0e10cSrcweir }
851cdf0e10cSrcweir
852