xref: /trunk/main/sw/source/ui/inc/redlndlg.hxx (revision 914d351e5f5b84e4342a86d6ab8d4aca7308b9bd)
1*1d2dbeb0SAndrew Rist /**************************************************************
2cdf0e10cSrcweir  *
3*1d2dbeb0SAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
4*1d2dbeb0SAndrew Rist  * or more contributor license agreements.  See the NOTICE file
5*1d2dbeb0SAndrew Rist  * distributed with this work for additional information
6*1d2dbeb0SAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
7*1d2dbeb0SAndrew Rist  * to you under the Apache License, Version 2.0 (the
8*1d2dbeb0SAndrew Rist  * "License"); you may not use this file except in compliance
9*1d2dbeb0SAndrew Rist  * with the License.  You may obtain a copy of the License at
10cdf0e10cSrcweir  *
11*1d2dbeb0SAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12cdf0e10cSrcweir  *
13*1d2dbeb0SAndrew Rist  * Unless required by applicable law or agreed to in writing,
14*1d2dbeb0SAndrew Rist  * software distributed under the License is distributed on an
15*1d2dbeb0SAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*1d2dbeb0SAndrew Rist  * KIND, either express or implied.  See the License for the
17*1d2dbeb0SAndrew Rist  * specific language governing permissions and limitations
18*1d2dbeb0SAndrew Rist  * under the License.
19cdf0e10cSrcweir  *
20*1d2dbeb0SAndrew Rist  *************************************************************/
21*1d2dbeb0SAndrew Rist 
22*1d2dbeb0SAndrew Rist 
23cdf0e10cSrcweir #ifndef _SWREDLNDLG_HXX
24cdf0e10cSrcweir #define _SWREDLNDLG_HXX
25cdf0e10cSrcweir #include "swdllapi.h"
26cdf0e10cSrcweir #include "chldwrap.hxx"
27cdf0e10cSrcweir #include <redline.hxx>
28cdf0e10cSrcweir #include <tools/datetime.hxx>
29cdf0e10cSrcweir #include <vcl/msgbox.hxx>
30cdf0e10cSrcweir #ifndef _SVSTDARR_HXX
31cdf0e10cSrcweir #include <svl/svstdarr.hxx>
32cdf0e10cSrcweir #endif
33cdf0e10cSrcweir #include <svl/eitem.hxx>
34cdf0e10cSrcweir #include <sfx2/basedlgs.hxx>
35cdf0e10cSrcweir #include <sfx2/viewfrm.hxx>
36cdf0e10cSrcweir #include <sfx2/dispatch.hxx>
37cdf0e10cSrcweir #include <svx/ctredlin.hxx>
38cdf0e10cSrcweir #include <svx/postattr.hxx>
39cdf0e10cSrcweir 
40cdf0e10cSrcweir class SwChildWinWrapper;
41cdf0e10cSrcweir 
42cdf0e10cSrcweir struct SwRedlineDataChild
43cdf0e10cSrcweir {
44cdf0e10cSrcweir     const SwRedlineData*        pChild;     // Verweis auf originale gestackte Daten
45cdf0e10cSrcweir     const SwRedlineDataChild*   pNext;      // Verweis auf gestackte Daten
46cdf0e10cSrcweir     SvLBoxEntry*                pTLBChild;  // zugehoeriger TreeListBox-Eintrag
47cdf0e10cSrcweir };
48cdf0e10cSrcweir 
49cdf0e10cSrcweir struct SwRedlineDataParent
50cdf0e10cSrcweir {
51cdf0e10cSrcweir     const SwRedlineData*        pData;      // RedlineDataPtr
52cdf0e10cSrcweir     const SwRedlineDataChild*   pNext;      // Verweis auf gestackte Daten
53cdf0e10cSrcweir     SvLBoxEntry*                pTLBParent; // zugehoeriger TreeListBox-Eintrag
54cdf0e10cSrcweir     String                      sComment;   // Redline-Kommentar
55cdf0e10cSrcweir 
operator ==SwRedlineDataParent56cdf0e10cSrcweir     inline sal_Bool operator==( const SwRedlineDataParent& rObj ) const
57cdf0e10cSrcweir                         { return (pData && pData->GetSeqNo() == rObj.pData->GetSeqNo()); }
operator <SwRedlineDataParent58cdf0e10cSrcweir     inline sal_Bool operator< ( const SwRedlineDataParent& rObj ) const
59cdf0e10cSrcweir                         { return (pData && pData->GetSeqNo() <  rObj.pData->GetSeqNo()); }
60cdf0e10cSrcweir };
61cdf0e10cSrcweir 
62cdf0e10cSrcweir typedef SwRedlineDataParent* SwRedlineDataParentPtr;
63cdf0e10cSrcweir SV_DECL_PTRARR_DEL(SwRedlineDataParentArr, SwRedlineDataParentPtr, 10, 20)
64cdf0e10cSrcweir 
65cdf0e10cSrcweir 
66cdf0e10cSrcweir SV_DECL_PTRARR_SORT(SwRedlineDataParentSortArr, SwRedlineDataParentPtr, 10, 20)
67cdf0e10cSrcweir 
68cdf0e10cSrcweir 
69cdf0e10cSrcweir typedef SwRedlineDataChild* SwRedlineDataChildPtr;
70cdf0e10cSrcweir SV_DECL_PTRARR_DEL(SwRedlineDataChildArr, SwRedlineDataChildPtr, 4, 4)
71cdf0e10cSrcweir 
72cdf0e10cSrcweir 
73cdf0e10cSrcweir typedef SvLBoxEntry* SvLBoxEntryPtr;
74cdf0e10cSrcweir SV_DECL_PTRARR(SvLBoxEntryArr, SvLBoxEntryPtr, 100, 100)
75cdf0e10cSrcweir 
76cdf0e10cSrcweir class SW_DLLPUBLIC SwRedlineAcceptDlg
77cdf0e10cSrcweir {
78cdf0e10cSrcweir     Dialog*                 pParentDlg;
79cdf0e10cSrcweir     SwRedlineDataParentArr  aRedlineParents;
80cdf0e10cSrcweir     SwRedlineDataChildArr   aRedlineChilds;
81cdf0e10cSrcweir     SwRedlineDataParentSortArr aUsedSeqNo;
82cdf0e10cSrcweir     SvxAcceptChgCtr         aTabPagesCTRL;
83cdf0e10cSrcweir     PopupMenu               aPopup;
84cdf0e10cSrcweir     Timer                   aDeselectTimer;
85cdf0e10cSrcweir     Timer                   aSelectTimer;
86cdf0e10cSrcweir     String                  sInserted;
87cdf0e10cSrcweir     String                  sDeleted;
88cdf0e10cSrcweir     String                  sFormated;
89cdf0e10cSrcweir     String                  sTableChgd;
90cdf0e10cSrcweir     String                  sFmtCollSet;
91cdf0e10cSrcweir     String                  sFilterAction;
92cdf0e10cSrcweir     String                  sAutoFormat;
93cdf0e10cSrcweir     Size                    aBorderSz;
94cdf0e10cSrcweir     SvxTPView*              pTPView;
95cdf0e10cSrcweir     SvxRedlinTable*         pTable; // PB 2006/02/02 #i48648 now SvHeaderTabListBox
96cdf0e10cSrcweir     Link                    aOldSelectHdl;
97cdf0e10cSrcweir     Link                    aOldDeselectHdl;
98cdf0e10cSrcweir     sal_Bool                    bOnlyFormatedRedlines;
99cdf0e10cSrcweir     sal_Bool                    bHasReadonlySel;
100cdf0e10cSrcweir     sal_Bool                    bRedlnAutoFmt;
101cdf0e10cSrcweir 
102cdf0e10cSrcweir     // prevent update dialog data during longer operations (cf #102657#)
103cdf0e10cSrcweir     bool                    bInhibitActivate;
104cdf0e10cSrcweir 
105cdf0e10cSrcweir     SW_DLLPRIVATE DECL_LINK( AcceptHdl,     void* );
106cdf0e10cSrcweir     SW_DLLPRIVATE DECL_LINK( AcceptAllHdl,  void* );
107cdf0e10cSrcweir     SW_DLLPRIVATE DECL_LINK( RejectHdl,     void* );
108cdf0e10cSrcweir     SW_DLLPRIVATE DECL_LINK( RejectAllHdl,  void* );
109cdf0e10cSrcweir     SW_DLLPRIVATE DECL_LINK( UndoHdl,           void* );
110cdf0e10cSrcweir     SW_DLLPRIVATE DECL_LINK( DeselectHdl,       void* );
111cdf0e10cSrcweir     SW_DLLPRIVATE DECL_LINK( SelectHdl,     void* );
112cdf0e10cSrcweir     SW_DLLPRIVATE DECL_LINK( GotoHdl,           void* );
113cdf0e10cSrcweir     SW_DLLPRIVATE DECL_LINK( CommandHdl,        void* );
114cdf0e10cSrcweir 
115cdf0e10cSrcweir     SW_DLLPRIVATE sal_uInt16            CalcDiff(sal_uInt16 nStart, sal_Bool bChild);
116cdf0e10cSrcweir     SW_DLLPRIVATE void          InsertChilds(SwRedlineDataParent *pParent, const SwRedline& rRedln, const sal_uInt16 nAutoFmt);
117cdf0e10cSrcweir     SW_DLLPRIVATE void          InsertParents(sal_uInt16 nStart, sal_uInt16 nEnd = USHRT_MAX);
118cdf0e10cSrcweir     SW_DLLPRIVATE void          RemoveParents(sal_uInt16 nStart, sal_uInt16 nEnd);
119cdf0e10cSrcweir     SW_DLLPRIVATE void          InitAuthors();
120cdf0e10cSrcweir 
121cdf0e10cSrcweir     SW_DLLPRIVATE String            GetRedlineText(const SwRedline& rRedln, DateTime &rDateTime, sal_uInt16 nStack = 0);
122cdf0e10cSrcweir     SW_DLLPRIVATE const String& GetActionText(const SwRedline& rRedln, sal_uInt16 nStack = 0);
123cdf0e10cSrcweir     SW_DLLPRIVATE sal_uInt16            GetRedlinePos( const SvLBoxEntry& rEntry) const;
124cdf0e10cSrcweir 
125cdf0e10cSrcweir public:
126cdf0e10cSrcweir     SwRedlineAcceptDlg(Dialog *pParent, sal_Bool bAutoFmt = sal_False);
127cdf0e10cSrcweir     virtual ~SwRedlineAcceptDlg();
128cdf0e10cSrcweir 
129cdf0e10cSrcweir     DECL_LINK( FilterChangedHdl, void *pDummy = 0 );
130cdf0e10cSrcweir 
GetChgCtrl()131cdf0e10cSrcweir     inline SvxAcceptChgCtr* GetChgCtrl()        { return &aTabPagesCTRL; }
HasRedlineAutoFmt() const132cdf0e10cSrcweir     inline sal_Bool     HasRedlineAutoFmt() const   { return bRedlnAutoFmt; }
133cdf0e10cSrcweir 
134cdf0e10cSrcweir     void            Init(sal_uInt16 nStart = 0);
135cdf0e10cSrcweir     void            CallAcceptReject( sal_Bool bSelect, sal_Bool bAccept );
136cdf0e10cSrcweir 
137cdf0e10cSrcweir     void            Initialize(const String &rExtraData);
138cdf0e10cSrcweir     void            FillInfo(String &rExtraData) const;
139cdf0e10cSrcweir 
140cdf0e10cSrcweir     virtual void    Activate();
141cdf0e10cSrcweir     virtual void    Resize();
142cdf0e10cSrcweir };
143cdf0e10cSrcweir 
144cdf0e10cSrcweir /*------------------------------------------------------------------------
145cdf0e10cSrcweir     Beschreibung:
146cdf0e10cSrcweir ------------------------------------------------------------------------*/
147cdf0e10cSrcweir 
148cdf0e10cSrcweir class SwModelessRedlineAcceptDlg : public SfxModelessDialog
149cdf0e10cSrcweir {
150cdf0e10cSrcweir     SwRedlineAcceptDlg*     pImplDlg;
151cdf0e10cSrcweir     SwChildWinWrapper*      pChildWin;
152cdf0e10cSrcweir 
153cdf0e10cSrcweir     virtual void    Resize();
154cdf0e10cSrcweir 
155cdf0e10cSrcweir public:
156cdf0e10cSrcweir     SwModelessRedlineAcceptDlg(SfxBindings*, SwChildWinWrapper*, Window *pParent);
157cdf0e10cSrcweir     ~SwModelessRedlineAcceptDlg();
158cdf0e10cSrcweir 
159cdf0e10cSrcweir     virtual void    Activate();
160cdf0e10cSrcweir     virtual void    FillInfo(SfxChildWinInfo&) const;
161cdf0e10cSrcweir     void            Initialize (SfxChildWinInfo* pInfo);
162cdf0e10cSrcweir };
163cdf0e10cSrcweir 
164cdf0e10cSrcweir 
165cdf0e10cSrcweir /*------------------------------------------------------------------------
166cdf0e10cSrcweir     Beschreibung:
167cdf0e10cSrcweir ------------------------------------------------------------------------*/
168cdf0e10cSrcweir 
169cdf0e10cSrcweir class SwRedlineAcceptChild : public SwChildWinWrapper
170cdf0e10cSrcweir {
171cdf0e10cSrcweir public:
172cdf0e10cSrcweir     SwRedlineAcceptChild(   Window* ,
173cdf0e10cSrcweir                             sal_uInt16 nId,
174cdf0e10cSrcweir                             SfxBindings*,
175cdf0e10cSrcweir                             SfxChildWinInfo*  );
176cdf0e10cSrcweir 
177cdf0e10cSrcweir     SFX_DECL_CHILDWINDOW( SwRedlineAcceptChild );
178cdf0e10cSrcweir 
179cdf0e10cSrcweir     virtual sal_Bool    ReInitDlg(SwDocShell *pDocSh);
180cdf0e10cSrcweir };
181cdf0e10cSrcweir 
182cdf0e10cSrcweir 
183cdf0e10cSrcweir #endif
184