Branch data Line data Source code
1 : : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 : : /*************************************************************************
3 : : *
4 : : * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5 : : *
6 : : * Copyright 2000, 2010 Oracle and/or its affiliates.
7 : : *
8 : : * OpenOffice.org - a multi-platform office productivity suite
9 : : *
10 : : * This file is part of OpenOffice.org.
11 : : *
12 : : * OpenOffice.org is free software: you can redistribute it and/or modify
13 : : * it under the terms of the GNU Lesser General Public License version 3
14 : : * only, as published by the Free Software Foundation.
15 : : *
16 : : * OpenOffice.org is distributed in the hope that it will be useful,
17 : : * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 : : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 : : * GNU Lesser General Public License version 3 for more details
20 : : * (a copy is included in the LICENSE file that accompanied this code).
21 : : *
22 : : * You should have received a copy of the GNU Lesser General Public License
23 : : * version 3 along with OpenOffice.org. If not, see
24 : : * <http://www.openoffice.org/license.html>
25 : : * for a copy of the LGPLv3 License.
26 : : *
27 : : ************************************************************************/
28 : :
29 : : #include "global.hxx"
30 : : #include "reffact.hxx"
31 : : #include "document.hxx"
32 : : #include "docsh.hxx"
33 : : #include "scresid.hxx"
34 : : #include "globstr.hrc"
35 : : #include "highred.hrc"
36 : :
37 : : #include "highred.hxx"
38 : : #include <vcl/msgbox.hxx>
39 : : #include <sfx2/app.hxx>
40 : :
41 : : // defines -------------------------------------------------------------------
42 : :
43 : : #define ABS_SREF SCA_VALID \
44 : : | SCA_COL_ABSOLUTE | SCA_ROW_ABSOLUTE | SCA_TAB_ABSOLUTE
45 : : #define ABS_DREF ABS_SREF \
46 : : | SCA_COL2_ABSOLUTE | SCA_ROW2_ABSOLUTE | SCA_TAB2_ABSOLUTE
47 : : #define ABS_SREF3D ABS_SREF | SCA_TAB_3D
48 : : #define ABS_DREF3D ABS_DREF | SCA_TAB_3D
49 : :
50 : :
51 : :
52 : : #define ERRORBOX(s) ErrorBox(this,WinBits(WB_OK|WB_DEF_OK),s).Execute();
53 : :
54 : : inline void EnableDisable( Window& rWin, sal_Bool bEnable )
55 : : {
56 : : if (bEnable)
57 : : rWin.Enable();
58 : : else
59 : : rWin.Disable();
60 : : }
61 : :
62 : : //============================================================================
63 : : // class ScHighlightChgDlg
64 : :
65 : : //----------------------------------------------------------------------------
66 : 0 : ScHighlightChgDlg::ScHighlightChgDlg( SfxBindings* pB, SfxChildWindow* pCW, Window* pParent,
67 : : ScViewData* ptrViewData)
68 : :
69 : : : ScAnyRefDlg ( pB, pCW, pParent, RID_SCDLG_HIGHLIGHT_CHANGES ),
70 : : //
71 : : aHighlightBox ( this, ScResId( CB_HIGHLIGHT)),
72 : : aFlFilter ( this, ScResId( FL_FILTER)),
73 : : aFilterCtr ( this),
74 : : aCbAccept ( this, ScResId( CB_HIGHLIGHT_ACCEPT)),
75 : : aCbReject ( this, ScResId( CB_HIGHLIGHT_REJECT)),
76 : : aOkButton ( this, ScResId( BTN_OK ) ),
77 : : aCancelButton ( this, ScResId( BTN_CANCEL ) ),
78 : : aHelpButton ( this, ScResId( BTN_HELP ) ),
79 : : aEdAssign ( this, this, ScResId( ED_ASSIGN ) ),
80 : : aRbAssign ( this, ScResId( RB_ASSIGN ), &aEdAssign, this ),
81 : : //
82 : : pViewData ( ptrViewData ),
83 [ # # ]: 0 : pDoc ( ptrViewData->GetDocument() ),
84 [ # # ][ # # ]: 0 : aLocalRangeName ( *(pDoc->GetRangeName()) )
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
85 : : {
86 [ # # ]: 0 : FreeResource();
87 : :
88 [ # # ]: 0 : Point aFlFilterPt( aFlFilter.GetPosPixel() );
89 [ # # ]: 0 : aFlFilterPt.Y() += aFlFilter.GetSizePixel().Height();
90 [ # # ]: 0 : aFilterCtr.SetPosPixel( aFlFilterPt );
91 [ # # ]: 0 : MinSize=aFilterCtr.GetSizePixel();
92 : 0 : MinSize.Height()+=2;
93 : 0 : MinSize.Width()+=2;
94 [ # # ]: 0 : aOkButton.SetClickHdl(LINK( this, ScHighlightChgDlg, OKBtnHdl));
95 [ # # ]: 0 : aHighlightBox.SetClickHdl(LINK( this, ScHighlightChgDlg, HighLightHandle ));
96 [ # # ]: 0 : aFilterCtr.SetRefHdl(LINK( this, ScHighlightChgDlg, RefHandle ));
97 [ # # ]: 0 : aFilterCtr.HideRange(false);
98 [ # # ]: 0 : aFilterCtr.Show();
99 [ # # ]: 0 : SetDispatcherLock( true );
100 : :
101 [ # # ]: 0 : Init();
102 : :
103 : 0 : }
104 : :
105 [ # # ][ # # ]: 0 : ScHighlightChgDlg::~ScHighlightChgDlg()
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ]
106 : : {
107 [ # # ]: 0 : SetDispatcherLock( false );
108 [ # # ]: 0 : }
109 : :
110 : 0 : void ScHighlightChgDlg::Init()
111 : : {
112 [ # # ]: 0 : String aAreaStr;
113 : 0 : ScRange aRange;
114 : :
115 : : OSL_ENSURE( pViewData && pDoc, "ViewData oder Document nicht gefunden!" );
116 : :
117 : 0 : ScChangeTrack* pChanges=pDoc->GetChangeTrack();
118 [ # # ]: 0 : if(pChanges!=NULL)
119 : : {
120 [ # # ]: 0 : aChangeViewSet.SetTheAuthorToShow(pChanges->GetUser());
121 [ # # ]: 0 : aFilterCtr.ClearAuthors();
122 [ # # ]: 0 : const std::set<rtl::OUString>& rUserColl = pChanges->GetUserCollection();
123 : 0 : std::set<rtl::OUString>::const_iterator it = rUserColl.begin(), itEnd = rUserColl.end();
124 [ # # ]: 0 : for (; it != itEnd; ++it)
125 [ # # ][ # # ]: 0 : aFilterCtr.InsertAuthor(*it);
[ # # ]
126 : : }
127 : :
128 : :
129 : 0 : ScChangeViewSettings* pViewSettings=pDoc->GetChangeViewSettings();
130 : :
131 [ # # ]: 0 : if(pViewSettings!=NULL)
132 [ # # ]: 0 : aChangeViewSet=*pViewSettings;
133 [ # # ]: 0 : aHighlightBox.Check(aChangeViewSet.ShowChanges());
134 [ # # ]: 0 : aFilterCtr.CheckDate(aChangeViewSet.HasDate());
135 [ # # ]: 0 : aFilterCtr.SetFirstDate(aChangeViewSet.GetTheFirstDateTime());
136 [ # # ]: 0 : aFilterCtr.SetFirstTime(aChangeViewSet.GetTheFirstDateTime());
137 [ # # ]: 0 : aFilterCtr.SetLastDate(aChangeViewSet.GetTheLastDateTime());
138 [ # # ]: 0 : aFilterCtr.SetLastTime(aChangeViewSet.GetTheLastDateTime());
139 [ # # ]: 0 : aFilterCtr.SetDateMode((sal_uInt16)aChangeViewSet.GetTheDateMode());
140 [ # # ]: 0 : aFilterCtr.CheckAuthor(aChangeViewSet.HasAuthor());
141 [ # # ]: 0 : aFilterCtr.CheckComment(aChangeViewSet.HasComment());
142 [ # # ][ # # ]: 0 : aFilterCtr.SetComment(aChangeViewSet.GetTheComment());
[ # # ]
143 : :
144 [ # # ]: 0 : aCbAccept.Check(aChangeViewSet.IsShowAccepted());
145 [ # # ]: 0 : aCbReject.Check(aChangeViewSet.IsShowRejected());
146 : :
147 [ # # ]: 0 : String aString=aChangeViewSet.GetTheAuthorToShow();
148 [ # # ]: 0 : if(aString.Len()!=0)
149 : : {
150 [ # # ]: 0 : aFilterCtr.SelectAuthor(aString);
151 : : }
152 : : else
153 : : {
154 [ # # ]: 0 : aFilterCtr.SelectedAuthorPos(0);
155 : : }
156 : :
157 [ # # ]: 0 : aFilterCtr.CheckRange(aChangeViewSet.HasRange());
158 : :
159 [ # # ][ # # ]: 0 : if ( !aChangeViewSet.GetTheRangeList().empty() )
160 : : {
161 [ # # ]: 0 : String aRefStr;
162 [ # # ]: 0 : const ScRange* pRangeEntry = aChangeViewSet.GetTheRangeList().front();
163 [ # # ]: 0 : pRangeEntry->Format( aRefStr, ABS_DREF3D, pDoc );
164 [ # # ][ # # ]: 0 : aFilterCtr.SetRange(aRefStr);
165 : : }
166 [ # # ]: 0 : aFilterCtr.Enable(sal_True,sal_True);
167 [ # # ][ # # ]: 0 : HighLightHandle(&aHighlightBox);
[ # # ]
168 : 0 : }
169 : :
170 : : //----------------------------------------------------------------------------
171 : : // Uebergabe eines mit der Maus selektierten Tabellenbereiches, der dann als
172 : : // neue Selektion im Referenz-Edit angezeigt wird.
173 : :
174 : 0 : void ScHighlightChgDlg::SetReference( const ScRange& rRef, ScDocument* pDocP )
175 : : {
176 [ # # ]: 0 : if ( aEdAssign.IsVisible() )
177 : : {
178 [ # # ]: 0 : if ( rRef.aStart != rRef.aEnd )
179 [ # # ]: 0 : RefInputStart(&aEdAssign);
180 [ # # ]: 0 : String aRefStr;
181 [ # # ][ # # ]: 0 : rRef.Format( aRefStr, ABS_DREF3D, pDocP, pDocP->GetAddressConvention() );
182 [ # # ]: 0 : aEdAssign.SetRefString( aRefStr );
183 [ # # ][ # # ]: 0 : aFilterCtr.SetRange(aRefStr);
184 : : }
185 : 0 : }
186 : :
187 : : //----------------------------------------------------------------------------
188 : 0 : sal_Bool ScHighlightChgDlg::Close()
189 : : {
190 : 0 : return DoClose( ScHighlightChgDlgWrapper::GetChildWindowId() );
191 : : }
192 : :
193 : 0 : void ScHighlightChgDlg::RefInputDone( sal_Bool bForced)
194 : : {
195 : 0 : ScAnyRefDlg::RefInputDone(bForced);
196 [ # # ][ # # ]: 0 : if(bForced || !aRbAssign.IsVisible())
[ # # ]
197 : : {
198 [ # # ]: 0 : aFilterCtr.SetRange(aEdAssign.GetText());
199 : 0 : aFilterCtr.SetFocusToRange();
200 : 0 : aEdAssign.Hide();
201 : 0 : aRbAssign.Hide();
202 : : }
203 : 0 : }
204 : :
205 : 0 : void ScHighlightChgDlg::SetActive()
206 : : {
207 : 0 : }
208 : :
209 : 0 : sal_Bool ScHighlightChgDlg::IsRefInputMode() const
210 : : {
211 : 0 : return aEdAssign.IsVisible();
212 : : }
213 : :
214 : 0 : IMPL_LINK( ScHighlightChgDlg, HighLightHandle, CheckBox*, pCb )
215 : : {
216 [ # # ]: 0 : if(pCb!=NULL)
217 : : {
218 [ # # ]: 0 : if(aHighlightBox.IsChecked())
219 : : {
220 : 0 : aFilterCtr.Enable(sal_True,sal_True);
221 : 0 : aCbAccept.Enable();
222 : 0 : aCbReject.Enable();
223 : : }
224 : : else
225 : : {
226 : 0 : aFilterCtr.Disable(sal_True);
227 : 0 : aCbAccept.Disable();
228 : 0 : aCbReject.Disable();
229 : : }
230 : : }
231 : 0 : return 0;
232 : : }
233 : :
234 : 0 : IMPL_LINK( ScHighlightChgDlg, RefHandle, SvxTPFilter*, pRef )
235 : : {
236 [ # # ]: 0 : if(pRef!=NULL)
237 : : {
238 : 0 : SetDispatcherLock( true );
239 : 0 : aEdAssign.Show();
240 : 0 : aRbAssign.Show();
241 [ # # ]: 0 : aEdAssign.SetText(aFilterCtr.GetRange());
242 : 0 : ScAnyRefDlg::RefInputStart(&aEdAssign,&aRbAssign);
243 : : }
244 : 0 : return 0;
245 : : }
246 : :
247 : 0 : IMPL_LINK( ScHighlightChgDlg, OKBtnHdl, PushButton*, pOKBtn )
248 : : {
249 [ # # ]: 0 : if ( pOKBtn == &aOkButton)
250 : : {
251 [ # # ]: 0 : aChangeViewSet.SetShowChanges(aHighlightBox.IsChecked());
252 [ # # ]: 0 : aChangeViewSet.SetHasDate(aFilterCtr.IsDate());
253 [ # # ]: 0 : ScChgsDateMode eMode = (ScChgsDateMode) aFilterCtr.GetDateMode();
254 : 0 : aChangeViewSet.SetTheDateMode( eMode );
255 [ # # ]: 0 : Date aFirstDate( aFilterCtr.GetFirstDate() );
256 [ # # ]: 0 : Time aFirstTime( aFilterCtr.GetFirstTime() );
257 [ # # ]: 0 : Date aLastDate( aFilterCtr.GetLastDate() );
258 [ # # ]: 0 : Time aLastTime( aFilterCtr.GetLastTime() );
259 [ # # ][ # # ]: 0 : aChangeViewSet.SetTheFirstDateTime( DateTime( aFirstDate, aFirstTime ) );
260 [ # # ][ # # ]: 0 : aChangeViewSet.SetTheLastDateTime( DateTime( aLastDate, aLastTime ) );
261 [ # # ]: 0 : aChangeViewSet.SetHasAuthor(aFilterCtr.IsAuthor());
262 [ # # ][ # # ]: 0 : aChangeViewSet.SetTheAuthorToShow(aFilterCtr.GetSelectedAuthor());
[ # # ]
263 [ # # ]: 0 : aChangeViewSet.SetHasRange(aFilterCtr.IsRange());
264 [ # # ]: 0 : aChangeViewSet.SetShowAccepted(aCbAccept.IsChecked());
265 [ # # ]: 0 : aChangeViewSet.SetShowRejected(aCbReject.IsChecked());
266 [ # # ]: 0 : aChangeViewSet.SetHasComment(aFilterCtr.IsComment());
267 [ # # ][ # # ]: 0 : aChangeViewSet.SetTheComment(aFilterCtr.GetComment());
[ # # ][ # # ]
268 [ # # ]: 0 : ScRangeList aLocalRangeList;
269 [ # # ][ # # ]: 0 : aLocalRangeList.Parse(aFilterCtr.GetRange(), pDoc);
[ # # ]
270 [ # # ]: 0 : aChangeViewSet.SetTheRangeList(aLocalRangeList);
271 [ # # ]: 0 : aChangeViewSet.AdjustDateMode( *pDoc );
272 [ # # ]: 0 : pDoc->SetChangeViewSettings(aChangeViewSet);
273 [ # # ]: 0 : pViewData->GetDocShell()->PostPaintGridAll();
274 [ # # ][ # # ]: 0 : Close();
275 : : }
276 : 0 : return 0;
277 : : }
278 : :
279 : :
280 : :
281 : : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|