xref: /AOO41X/main/svx/inc/svx/ctredlin.hxx (revision 4d7c9de063a797b8b4f3d45e3561e82ad1f8ef1f)
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 #ifndef _SVX_CTREDLIN_HXX
25 #define _SVX_CTREDLIN_HXX
26 
27 #ifndef _MOREBTN_HXX //autogen
28 #include <vcl/morebtn.hxx>
29 #endif
30 #ifndef _COMBOBOX_HXX //autogen
31 #include <vcl/combobox.hxx>
32 #endif
33 #include <svtools/headbar.hxx>
34 #include <svtools/svtabbx.hxx>
35 #include <vcl/lstbox.hxx>
36 #include <vcl/tabpage.hxx>
37 #include <vcl/field.hxx>
38 #include <vcl/fixed.hxx>
39 
40 #ifndef _SVX_SIMPTABL
41 #include <svx/simptabl.hxx>
42 #endif
43 #include <vcl/tabctrl.hxx>
44 #include <tools/datetime.hxx>
45 #include <svtools/txtcmp.hxx>
46 #include "svx/svxdllapi.h"
47 
48 #define FLT_DATE_BEFORE     0
49 #define FLT_DATE_SINCE      1
50 #define FLT_DATE_EQUAL      2
51 #define FLT_DATE_NOTEQUAL   3
52 #define FLT_DATE_BETWEEN    4
53 #define FLT_DATE_SAVE       5
54 
55 
56 //  Struct fuer Datums-Sortierung
57 
58 class SVX_DLLPUBLIC RedlinData
59 {
60 public:
61                     RedlinData();
62     virtual         ~RedlinData();
63     sal_Bool            bDisabled;
64     DateTime        aDateTime;
65     void*           pData;
66 };
67 
68 class SvxRedlinEntry : public SvLBoxEntry
69 {
70 public:
71                     SvxRedlinEntry();
72         virtual     ~SvxRedlinEntry();
73 };
74 
75 // Klasse fuer die Darstellung von schriftabhaengigen Strings
76 class SvLBoxColorString : public SvLBoxString
77 {
78 private:
79 
80     Color           aPrivColor;
81 
82 public:
83                     SvLBoxColorString( SvLBoxEntry*,sal_uInt16 nFlags,const XubString& rStr,
84                                     const Color& rCol);
85                     SvLBoxColorString();
86                     ~SvLBoxColorString();
87 
88     void            Paint( const Point&, SvLBox& rDev, sal_uInt16 nFlags,SvLBoxEntry* );
89     SvLBoxItem*     Create() const;
90 };
91 
92 class SVX_DLLPUBLIC SvxRedlinTable : public SvxSimpleTable
93 {
94     using SvTabListBox::InsertEntry;
95 
96 private:
97 
98     sal_Bool            bIsCalc;
99     sal_uInt16          nDatePos;
100     sal_Bool            bAuthor;
101     sal_Bool            bDate;
102     sal_Bool            bComment;
103     sal_uInt16          nDaTiMode;
104     DateTime        aDaTiFirst;
105     DateTime        aDaTiLast;
106     DateTime        aDaTiFilterFirst;
107     DateTime        aDaTiFilterLast;
108     String          aAuthor;
109     Color           aEntryColor;
110     String          aCurEntry;
111     utl::TextSearch* pCommentSearcher;
112     Link            aColCompareLink;
113 
114 protected:
115 
116     virtual StringCompare   ColCompare(SvLBoxEntry*,SvLBoxEntry*);
117     virtual void            InitEntry(SvLBoxEntry*,const XubString&,const Image&,const Image&,SvLBoxButtonKind);
118 
119 
120 
121 public:
122 
123                     SvxRedlinTable( Window* pParent,WinBits nBits );
124                     SvxRedlinTable( Window* pParent,const ResId& rResId);
125                     ~SvxRedlinTable();
126 
127     // For FilterPage only {
128     void            SetFilterDate(sal_Bool bFlag=sal_True);
129     void            SetDateTimeMode(sal_uInt16 nMode);
130     void            SetFirstDate(const Date&);
131     void            SetLastDate(const Date&);
132     void            SetFirstTime(const Time&);
133     void            SetLastTime(const Time&);
134     void            SetFilterAuthor(sal_Bool bFlag=sal_True);
135     void            SetAuthor(const String &);
136     void            SetFilterComment(sal_Bool bFlag=sal_True);
137     void            SetCommentParams( const utl::SearchParam* pSearchPara );
138 
139     void            UpdateFilterTest();
140     // } For FilterPage only
141 
142     void            SetCalcView(sal_Bool bFlag=sal_True);
143     sal_Bool            IsValidCalcEntry(const String& ,RedlinData *pUserData);
144     sal_Bool            IsValidWriterEntry(const String& ,RedlinData *pUserData);
145 
146     // keine NULL-Ptr. ueberpruefung {
147     sal_Bool            IsValidEntry(const String* pAuthor,const DateTime *pDateTime,const String* pComment);
148     sal_Bool            IsValidEntry(const String* pAuthor,const DateTime *pDateTime);
149     sal_Bool            IsValidComment(const String* pComment);
150     // }
151 
152     SvLBoxEntry*    InsertEntry(const String& ,RedlinData *pUserData,
153                                 SvLBoxEntry* pParent=NULL,sal_uIntPtr nPos=LIST_APPEND);
154 
155     SvLBoxEntry*    InsertEntry(const String& ,RedlinData *pUserData,const Color&,
156                                 SvLBoxEntry* pParent=NULL,sal_uIntPtr nPos=LIST_APPEND);
157 
158 
159     virtual SvLBoxEntry* CreateEntry() const;
160 
SetColCompareHdl(const Link & rLink)161     void            SetColCompareHdl(const Link& rLink ) { aColCompareLink = rLink; }
GetColCompareHdl() const162     const Link&     GetColCompareHdl() const { return aColCompareLink; }
163 
164 
165 };
166 
167 //==================================================================
168 //  Filter- Tabpage
169 //==================================================================
170 class SVX_DLLPUBLIC SvxTPFilter: public TabPage
171 {
172 private:
173 
174     Link            aReadyLink;
175     Link            aModifyLink;
176     Link            aModifyDateLink;
177     Link            aModifyAuthorLink;
178     Link            aModifyRefLink;
179     Link            aRefLink;
180     Link            aModifyComLink;
181 
182     SvxRedlinTable* pRedlinTable;
183     CheckBox        aCbDate;
184     ListBox         aLbDate;
185     DateField       aDfDate;
186     TimeField       aTfDate;
187     ImageButton     aIbClock;
188     FixedText       aFtDate2;
189     DateField       aDfDate2;
190     TimeField       aTfDate2;
191     ImageButton     aIbClock2;
192     CheckBox        aCbAuthor;
193     ListBox         aLbAuthor;
194     CheckBox        aCbRange;
195     Edit            aEdRange;
196     PushButton      aBtnRange;
197     ListBox         aLbAction;
198     CheckBox        aCbComment;
199     Edit            aEdComment;
200     String          aActionStr;
201     String          aRangeStr;
202     String          aStrMyName;
203     sal_Bool            bModified;
204 
205     DECL_LINK( SelDateHdl, ListBox* );
206     DECL_LINK( RowEnableHdl, CheckBox* );
207     DECL_LINK( TimeHdl, ImageButton* );
208     DECL_LINK( ModifyHdl, void* );
209     DECL_LINK( ModifyDate, void* );
210     DECL_LINK( RefHandle, PushButton* );
211 
212 
213 protected:
214 
215     void            ShowDateFields(sal_uInt16 nKind);
216     void            EnableDateLine1(sal_Bool bFlag);
217     void            EnableDateLine2(sal_Bool bFlag);
218 
219 public:
220                     SvxTPFilter( Window * pParent);
221 
222     virtual void    DeactivatePage();
223     void            SetRedlinTable(SvxRedlinTable*);
224 
225     String          GetMyName() const;
226     Date            GetFirstDate() const;
227     void            SetFirstDate(const Date &aDate);
228     Time            GetFirstTime() const;
229     void            SetFirstTime(const Time &aTime);
230 
231     Date            GetLastDate() const;
232     void            SetLastDate(const Date &aDate);
233     Time            GetLastTime() const;
234     void            SetLastTime(const Time &aTime);
235 
236     void            SetDateMode(sal_uInt16 nMode);
237     sal_uInt16          GetDateMode();
238 
239     void            ClearAuthors();
240     void            InsertAuthor( const String& rString, sal_uInt16 nPos = LISTBOX_APPEND );
241     sal_uInt16          GetSelectedAuthorPos();
242     String          GetSelectedAuthor()const;
243     void            SelectedAuthorPos(sal_uInt16 nPos);
244     sal_uInt16          SelectAuthor(const String& aString);
245     void            SetComment(const String &rComment);
246     String          GetComment()const;
247 
248 
249     // Methoden fuer Calc {
250     void            SetRange(const String& rString);
251     String          GetRange() const;
252     void            HideRange(sal_Bool bHide=sal_True);
253     void            DisableRange(sal_Bool bFlag=sal_True);
254     void            SetFocusToRange();
255     // } Methoden fuer Calc
256 
257     void            HideClocks(sal_Bool bHide=sal_True);
258     void            DisableRef(sal_Bool bFlag);
259 
260     sal_Bool            IsDate();
261     sal_Bool            IsAuthor();
262     sal_Bool            IsRange();
263     sal_Bool            IsAction();
264     sal_Bool            IsComment();
265 
266     void            ShowAction(sal_Bool bShow=sal_True);
267 
268     void            CheckDate(sal_Bool bFlag=sal_True);
269     void            CheckAuthor(sal_Bool bFlag=sal_True);
270     void            CheckRange(sal_Bool bFlag=sal_True);
271     void            CheckAction(sal_Bool bFlag=sal_True);
272     void            CheckComment(sal_Bool bFlag=sal_True);
273 
274     ListBox*        GetLbAction();
275 
SetReadyHdl(const Link & rLink)276     void            SetReadyHdl( const Link& rLink ) { aReadyLink= rLink; }
GetReadyHdl() const277     const Link&     GetReadyHdl() const { return aReadyLink; }
278 
SetModifyHdl(const Link & rLink)279     void            SetModifyHdl( const Link& rLink ) { aModifyLink = rLink; }
GetModifyHdl() const280     const Link&     GetModifyHdl() const { return aModifyLink; }
281 
SetModifyDateHdl(const Link & rLink)282     void            SetModifyDateHdl( const Link& rLink ) { aModifyDateLink = rLink; }
GetModifyDateHdl() const283     const Link&     GetModifyDateHdl() const { return aModifyDateLink; }
284 
SetModifyAuthorHdl(const Link & rLink)285     void            SetModifyAuthorHdl( const Link& rLink ) { aModifyAuthorLink = rLink; }
GetModifyAuthorHdl() const286     const Link&     GetModifyAuthorHdl() const { return aModifyAuthorLink; }
287 
SetModifyCommentHdl(const Link & rLink)288     void            SetModifyCommentHdl(const Link& rLink ) { aModifyComLink = rLink; }
GetModifyCommentHdl() const289     const Link&     GetModifyCommentHdl() const { return aModifyComLink; }
290 
291 
292     // Methoden fuer Calc {
SetModifyRangeHdl(const Link & rLink)293     void            SetModifyRangeHdl( const Link& rLink ) { aModifyRefLink = rLink; }
GetModifyRangeHdl() const294     const Link&     GetModifyRangeHdl() const { return aModifyRefLink; }
295 
SetRefHdl(const Link & rLink)296     void            SetRefHdl( const Link& rLink ) { aRefLink = rLink; }
GetRefHdl() const297     const Link&     GetRefHdl() const { return aRefLink; }
298 
299     void            Enable( bool bEnable = true, bool bChild = true );
300     void            Disable( bool bChild = true );
301 
302     void            SetAccessibleRelationMemberOf( Window* pWindow);
303 
304     // } Methoden fuer Calc
305 };
306 
307 
308 //==================================================================
309 //  View- Tabpage
310 //==================================================================
311 
312 class SVX_DLLPUBLIC SvxTPView: public TabPage
313 {
314 private:
315 
316     Link            AcceptClickLk;
317     Link            AcceptAllClickLk;
318     Link            RejectClickLk;
319     Link            RejectAllClickLk;
320     Link            UndoClickLk;
321 
322     SvxRedlinTable  aViewData;
323     PushButton      PbAccept;
324     PushButton      PbReject;
325     PushButton      PbAcceptAll;
326     PushButton      PbRejectAll;
327     PushButton      PbUndo;
328     String          aTitle1;
329     String          aTitle2;
330     String          aTitle3;
331     String          aTitle4;
332     String          aTitle5;
333     String          aStrMyName;
334     long            nDistance;
335     Size            aMinSize;
336 
337     DECL_LINK( PbClickHdl, PushButton* );
338 
339 
340 protected:
341 
342     void            Resize();
343 
344 public:
345                     SvxTPView( Window * pParent);
346 
347     String          GetMyName() const;
348 
349     void            InsertWriterHeader();
350     void            InsertCalcHeader();
351     SvxRedlinTable* GetTableControl();
352 
353     void            EnableAccept(sal_Bool nFlag=sal_True);
354     void            EnableAcceptAll(sal_Bool nFlag=sal_True);
355     void            EnableReject(sal_Bool nFlag=sal_True);
356     void            EnableRejectAll(sal_Bool nFlag=sal_True);
357     void            EnableUndo(sal_Bool nFlag=sal_True);
358 
DisableAccept()359     void            DisableAccept()     {EnableAccept(sal_False);}
DisableAcceptAll()360     void            DisableAcceptAll()  {EnableAcceptAll(sal_False);}
DisableReject()361     void            DisableReject()     {EnableReject(sal_False);}
DisableRejectAll()362     void            DisableRejectAll()  {EnableRejectAll(sal_False);}
DisableUndo()363     void            DisableUndo()       {EnableUndo(sal_False);}
364 
365     void            ShowUndo(sal_Bool nFlag=sal_True);
HideUndo()366     void            HideUndo()          {ShowUndo(sal_False);}
367     sal_Bool            IsUndoVisible();
368 
369     Size            GetMinSizePixel();
370 
SetAcceptClickHdl(const Link & rLink)371     void            SetAcceptClickHdl( const Link& rLink ) { AcceptClickLk = rLink; }
GetAcceptClickHdl() const372     const Link&     GetAcceptClickHdl() const { return AcceptClickLk; }
373 
SetAcceptAllClickHdl(const Link & rLink)374     void            SetAcceptAllClickHdl( const Link& rLink ) { AcceptAllClickLk = rLink; }
GetAcceptAllClickHdl() const375     const Link&     GetAcceptAllClickHdl() const { return AcceptAllClickLk; }
376 
SetRejectClickHdl(const Link & rLink)377     void            SetRejectClickHdl( const Link& rLink ) { RejectClickLk = rLink; }
GetRejectClickHdl() const378     const Link&     GetRejectClickHdl() const { return RejectClickLk; }
379 
SetRejectAllClickHdl(const Link & rLink)380     void            SetRejectAllClickHdl( const Link& rLink ) { RejectAllClickLk = rLink; }
GetRejectAllClickHdl() const381     const Link&     GetRejectAllClickHdl() const { return RejectAllClickLk; }
382 
SetUndoClickHdl(const Link & rLink)383     void            SetUndoClickHdl( const Link& rLink ) { UndoClickLk = rLink; }
GetUndoAllClickHdl() const384     const Link&     GetUndoAllClickHdl() const { return UndoClickLk; }
385 };
386 
387 //==================================================================
388 //  Redlining - Control (Accept- Changes)
389 //==================================================================
390 
391 class SVX_DLLPUBLIC SvxAcceptChgCtr : public Control
392 {
393 private:
394 
395     Link            aMinSizeLink;
396     TabControl      aTCAccept;
397     SvxTPFilter*    pTPFilter;
398     SvxTPView*      pTPView;
399     Size            aMinSize;
400 
401 protected:
402 
403     virtual void    Resize();
404 
405 public:
406                     SvxAcceptChgCtr( Window* pParent, WinBits nWinStyle = 0 );
407                     SvxAcceptChgCtr( Window* pParent, const ResId& rResId );
408 
409                     ~SvxAcceptChgCtr();
410 
411     Size            GetMinSizePixel() const;
412 
413     void            ShowFilterPage();
414     void            ShowViewPage();
415 
416     sal_Bool            IsFilterPageVisible();
417     sal_Bool            IsViewPageVisible();
418 
419     SvxTPFilter*    GetFilterPage();
420     SvxTPView*      GetViewPage();
421     SvxRedlinTable* GetViewTable();
422 
SetMinSizeHdl(const Link & rLink)423     void            SetMinSizeHdl( const Link& rLink ) { aMinSizeLink= rLink; }
GetMinSizeHdl() const424     const Link&     GetMinSizeHdl() const { return aMinSizeLink; }
425 };
426 
427 
428 #endif // _SVX_CTREDLIN_HXX
429 
430