/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /************************************************************************* * * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * Copyright 2000, 2010 Oracle and/or its affiliates. * * OpenOffice.org - a multi-platform office productivity suite * * This file is part of OpenOffice.org. * * OpenOffice.org is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License version 3 * only, as published by the Free Software Foundation. * * OpenOffice.org is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License version 3 for more details * (a copy is included in the LICENSE file that accompanied this code). * * You should have received a copy of the GNU Lesser General Public License * version 3 along with OpenOffice.org. If not, see * * for a copy of the LGPLv3 License. * ************************************************************************/ #ifndef _SVX_CTREDLIN_HXX #define _SVX_CTREDLIN_HXX #include #include #include #include #include #include #include #include #ifndef _SVX_SIMPTABL #include #endif #include #include #include #include "svx/svxdllapi.h" #define FLT_DATE_BEFORE 0 #define FLT_DATE_SINCE 1 #define FLT_DATE_EQUAL 2 #define FLT_DATE_NOTEQUAL 3 #define FLT_DATE_BETWEEN 4 #define FLT_DATE_SAVE 5 // Struct for sorting data class SVX_DLLPUBLIC RedlinData { public: RedlinData(); virtual ~RedlinData(); BOOL bDisabled; DateTime aDateTime; void* pData; }; class SvxRedlinEntry : public SvLBoxEntry { public: SvxRedlinEntry(); virtual ~SvxRedlinEntry(); }; // Class for the representation of Strings depending on the font class SvLBoxColorString : public SvLBoxString { private: Color aPrivColor; public: SvLBoxColorString( SvLBoxEntry*,USHORT nFlags,const XubString& rStr, const Color& rCol); SvLBoxColorString(); ~SvLBoxColorString(); void Paint( const Point&, SvLBox& rDev, USHORT nFlags,SvLBoxEntry* ); SvLBoxItem* Create() const; }; class SVX_DLLPUBLIC SvxRedlinTable : public SvxSimpleTable { using SvTabListBox::InsertEntry; private: BOOL bIsCalc; USHORT nDatePos; BOOL bAuthor; BOOL bDate; BOOL bComment; USHORT nDaTiMode; DateTime aDaTiFirst; DateTime aDaTiLast; DateTime aDaTiFilterFirst; DateTime aDaTiFilterLast; String aAuthor; Color aEntryColor; String aCurEntry; utl::TextSearch* pCommentSearcher; Link aColCompareLink; protected: virtual StringCompare ColCompare(SvLBoxEntry*,SvLBoxEntry*); virtual void InitEntry(SvLBoxEntry*,const XubString&,const Image&,const Image&,SvLBoxButtonKind); public: SvxRedlinTable( Window* pParent,WinBits nBits ); SvxRedlinTable( Window* pParent,const ResId& rResId); ~SvxRedlinTable(); // For FilterPage only { void SetFilterDate(BOOL bFlag=TRUE); void SetDateTimeMode(USHORT nMode); void SetFirstDate(const Date&); void SetLastDate(const Date&); void SetFirstTime(const Time&); void SetLastTime(const Time&); void SetFilterAuthor(BOOL bFlag=TRUE); void SetAuthor(const String &); void SetFilterComment(BOOL bFlag=TRUE); void SetCommentParams( const utl::SearchParam* pSearchPara ); void UpdateFilterTest(); // } For FilterPage only void SetCalcView(BOOL bFlag=TRUE); BOOL IsValidCalcEntry(const String& ,RedlinData *pUserData); BOOL IsValidWriterEntry(const String& ,RedlinData *pUserData); // no NULL-pointer checking { BOOL IsValidEntry(const String* pAuthor,const DateTime *pDateTime,const String* pComment); BOOL IsValidEntry(const String* pAuthor,const DateTime *pDateTime); BOOL IsValidComment(const String* pComment); // } SvLBoxEntry* InsertEntry(const String& ,RedlinData *pUserData, SvLBoxEntry* pParent=NULL,ULONG nPos=LIST_APPEND); SvLBoxEntry* InsertEntry(const String& ,RedlinData *pUserData,const Color&, SvLBoxEntry* pParent=NULL,ULONG nPos=LIST_APPEND); virtual SvLBoxEntry* CreateEntry() const; void SetColCompareHdl(const Link& rLink ) { aColCompareLink = rLink; } const Link& GetColCompareHdl() const { return aColCompareLink; } }; //================================================================== // Filter- Tabpage //================================================================== class SVX_DLLPUBLIC SvxTPFilter: public TabPage { private: Link aReadyLink; Link aModifyLink; Link aModifyDateLink; Link aModifyAuthorLink; Link aModifyRefLink; Link aRefLink; Link aModifyComLink; SvxRedlinTable* pRedlinTable; CheckBox aCbDate; ListBox aLbDate; DateField aDfDate; TimeField aTfDate; ImageButton aIbClock; FixedText aFtDate2; DateField aDfDate2; TimeField aTfDate2; ImageButton aIbClock2; CheckBox aCbAuthor; ListBox aLbAuthor; CheckBox aCbRange; Edit aEdRange; PushButton aBtnRange; ListBox aLbAction; CheckBox aCbComment; Edit aEdComment; String aActionStr; String aRangeStr; String aStrMyName; BOOL bModified; DECL_LINK( SelDateHdl, ListBox* ); DECL_LINK( RowEnableHdl, CheckBox* ); DECL_LINK( TimeHdl, ImageButton* ); DECL_LINK( ModifyHdl, void* ); DECL_LINK( ModifyDate, void* ); DECL_LINK( RefHandle, PushButton* ); protected: void ShowDateFields(USHORT nKind); void EnableDateLine1(BOOL bFlag); void EnableDateLine2(BOOL bFlag); public: SvxTPFilter( Window * pParent); virtual void DeactivatePage(); void SetRedlinTable(SvxRedlinTable*); String GetMyName() const; Date GetFirstDate() const; void SetFirstDate(const Date &aDate); Time GetFirstTime() const; void SetFirstTime(const Time &aTime); Date GetLastDate() const; void SetLastDate(const Date &aDate); Time GetLastTime() const; void SetLastTime(const Time &aTime); void SetDateMode(USHORT nMode); USHORT GetDateMode(); void ClearAuthors(); void InsertAuthor( const String& rString, USHORT nPos = LISTBOX_APPEND ); USHORT GetSelectedAuthorPos(); String GetSelectedAuthor()const; void SelectedAuthorPos(USHORT nPos); USHORT SelectAuthor(const String& aString); void SetComment(const String &rComment); String GetComment()const; // Methods for Calc { void SetRange(const String& rString); String GetRange() const; void HideRange(BOOL bHide=TRUE); void DisableRange(BOOL bFlag=TRUE); void SetFocusToRange(); // } Methods for Calc void HideClocks(BOOL bHide=TRUE); void DisableRef(BOOL bFlag); BOOL IsDate(); BOOL IsAuthor(); BOOL IsRange(); BOOL IsAction(); BOOL IsComment(); void ShowAction(BOOL bShow=TRUE); void CheckDate(BOOL bFlag=TRUE); void CheckAuthor(BOOL bFlag=TRUE); void CheckRange(BOOL bFlag=TRUE); void CheckAction(BOOL bFlag=TRUE); void CheckComment(BOOL bFlag=TRUE); ListBox* GetLbAction(); void SetReadyHdl( const Link& rLink ) { aReadyLink= rLink; } const Link& GetReadyHdl() const { return aReadyLink; } void SetModifyHdl( const Link& rLink ) { aModifyLink = rLink; } const Link& GetModifyHdl() const { return aModifyLink; } void SetModifyDateHdl( const Link& rLink ) { aModifyDateLink = rLink; } const Link& GetModifyDateHdl() const { return aModifyDateLink; } void SetModifyAuthorHdl( const Link& rLink ) { aModifyAuthorLink = rLink; } const Link& GetModifyAuthorHdl() const { return aModifyAuthorLink; } void SetModifyCommentHdl(const Link& rLink ) { aModifyComLink = rLink; } const Link& GetModifyCommentHdl() const { return aModifyComLink; } // Methods for Calc { void SetModifyRangeHdl( const Link& rLink ) { aModifyRefLink = rLink; } const Link& GetModifyRangeHdl() const { return aModifyRefLink; } void SetRefHdl( const Link& rLink ) { aRefLink = rLink; } const Link& GetRefHdl() const { return aRefLink; } void Enable( bool bEnable = true, bool bChild = true ); void Disable( bool bChild = true ); // } Methods for Calc }; //================================================================== // View- Tabpage //================================================================== class SVX_DLLPUBLIC SvxTPView: public TabPage { private: Link AcceptClickLk; Link AcceptAllClickLk; Link RejectClickLk; Link RejectAllClickLk; Link UndoClickLk; SvxRedlinTable aViewData; PushButton PbAccept; PushButton PbReject; PushButton PbAcceptAll; PushButton PbRejectAll; PushButton PbUndo; String aTitle1; String aTitle2; String aTitle3; String aTitle4; String aTitle5; String aStrMyName; long nDistance; Size aMinSize; DECL_LINK( PbClickHdl, PushButton* ); protected: void Resize(); public: SvxTPView( Window * pParent); String GetMyName() const; void InsertWriterHeader(); void InsertCalcHeader(); SvxRedlinTable* GetTableControl(); void EnableAccept(BOOL nFlag=TRUE); void EnableAcceptAll(BOOL nFlag=TRUE); void EnableReject(BOOL nFlag=TRUE); void EnableRejectAll(BOOL nFlag=TRUE); void EnableUndo(BOOL nFlag=TRUE); void DisableAccept() {EnableAccept(FALSE);} void DisableAcceptAll() {EnableAcceptAll(FALSE);} void DisableReject() {EnableReject(FALSE);} void DisableRejectAll() {EnableRejectAll(FALSE);} void DisableUndo() {EnableUndo(FALSE);} void ShowUndo(BOOL nFlag=TRUE); void HideUndo() {ShowUndo(FALSE);} BOOL IsUndoVisible(); Size GetMinSizePixel(); void SetAcceptClickHdl( const Link& rLink ) { AcceptClickLk = rLink; } const Link& GetAcceptClickHdl() const { return AcceptClickLk; } void SetAcceptAllClickHdl( const Link& rLink ) { AcceptAllClickLk = rLink; } const Link& GetAcceptAllClickHdl() const { return AcceptAllClickLk; } void SetRejectClickHdl( const Link& rLink ) { RejectClickLk = rLink; } const Link& GetRejectClickHdl() const { return RejectClickLk; } void SetRejectAllClickHdl( const Link& rLink ) { RejectAllClickLk = rLink; } const Link& GetRejectAllClickHdl() const { return RejectAllClickLk; } void SetUndoClickHdl( const Link& rLink ) { UndoClickLk = rLink; } const Link& GetUndoAllClickHdl() const { return UndoClickLk; } }; //================================================================== // Redlining - Control (Accept- Changes) //================================================================== class SVX_DLLPUBLIC SvxAcceptChgCtr : public Control { private: Link aMinSizeLink; TabControl aTCAccept; SvxTPFilter* pTPFilter; SvxTPView* pTPView; Size aMinSize; protected: virtual void Resize(); public: SvxAcceptChgCtr( Window* pParent, WinBits nWinStyle = 0 ); SvxAcceptChgCtr( Window* pParent, const ResId& rResId ); ~SvxAcceptChgCtr(); Size GetMinSizePixel() const; void ShowFilterPage(); void ShowViewPage(); BOOL IsFilterPageVisible(); BOOL IsViewPageVisible(); SvxTPFilter* GetFilterPage(); SvxTPView* GetViewPage(); SvxRedlinTable* GetViewTable(); void SetMinSizeHdl( const Link& rLink ) { aMinSizeLink= rLink; } const Link& GetMinSizeHdl() const { return aMinSizeLink; } }; #endif // _SVX_CTREDLIN_HXX /* vim:set shiftwidth=4 softtabstop=4 expandtab: */