office-gobmx/svtools/source/contnr/templwin.hxx
Caolán McNamara 1504284ced tidy SvtDocInfoTable_Impl
Change-Id: Ic354fc145c75eb24aa010627467fae007cfbf024
2012-05-25 09:26:13 +01:00

295 lines
11 KiB
C++

/* -*- 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
* <http://www.openoffice.org/license.html>
* for a copy of the LGPLv3 License.
*
************************************************************************/
#ifndef _SVTOOLS_TEMPLWIN_HXX
#define _SVTOOLS_TEMPLWIN_HXX
#include <tools/resary.hxx>
#include <vcl/splitwin.hxx>
#include <vcl/toolbox.hxx>
#include <vcl/window.hxx>
#include <svtools/headbar.hxx>
#include <svtools/fileview.hxx>
#include <svtools/ivctrl.hxx>
#include <svtools/svmedit2.hxx>
#include <svl/restrictedpaths.hxx>
#include <com/sun/star/frame/XDispatch.hpp>
#include <com/sun/star/lang/Locale.hpp>
namespace com{ namespace sun { namespace star { namespace awt { class XWindow; } } } }
namespace com{ namespace sun { namespace star { namespace frame { class XFrame; } } } }
namespace com{ namespace sun { namespace star { namespace document {
class XDocumentProperties;
} } } }
namespace svtools
{
class ODocumentInfoPreview;
}
// class SvtDummyHeaderBar_Impl ------------------------------------------
class SvtDummyHeaderBar_Impl : public Window
{
private:
void UpdateBackgroundColor();
public:
SvtDummyHeaderBar_Impl( Window* pParent );
~SvtDummyHeaderBar_Impl();
virtual void DataChanged( const DataChangedEvent& rDCEvt );
};
// class SvtIconWindow_Impl ----------------------------------------------
class SvtIconWindow_Impl : public Window
{
private:
SvtDummyHeaderBar_Impl aDummyHeaderBar; // spaceholder instead of HeaderBar
SvtIconChoiceCtrl aIconCtrl;
String aNewDocumentRootURL;
String aTemplateRootURL;
String aMyDocumentsRootURL;
String aSamplesFolderRootURL;
long nMaxTextLength;
SvxIconChoiceCtrlEntry* GetEntry( const String& rURL ) const;
public:
SvtIconWindow_Impl( Window* pParent );
~SvtIconWindow_Impl();
virtual void Resize();
inline long GetMaxTextLength() const { return nMaxTextLength; }
inline void SetClickHdl( const Link& rLink ) { aIconCtrl.SetClickHdl( rLink ); }
String GetSelectedIconURL() const;
String GetCursorPosIconURL() const;
String GetIconText( const String& rURL ) const;
void InvalidateIconControl();
void SetCursorPos( sal_uLong nPos );
sal_uLong GetCursorPos() const;
sal_uLong GetSelectEntryPos() const;
void SetFocus();
long CalcHeight() const;
sal_Bool IsRootURL( const String& rURL ) const;
sal_uLong GetRootPos( const String& rURL ) const;
void UpdateIcons();
inline sal_Bool ProcessKeyEvent( const KeyEvent& rKEvt );
inline const String& GetTemplateRootURL() const { return aTemplateRootURL; }
inline const String& GetMyDocumentsRootURL() const { return aMyDocumentsRootURL; }
inline const String& GetSamplesFolderURL() const { return aSamplesFolderRootURL; }
void SelectFolder(sal_Int32 nFolderPos);
};
inline sal_Bool SvtIconWindow_Impl::ProcessKeyEvent( const KeyEvent& rKEvt )
{
return ( rKEvt.GetKeyCode().IsMod2() ? aIconCtrl.DoKeyInput( rKEvt ) : sal_False );
}
// class SvtFileViewWindow_Impl ------------------------------------------
class SvtTemplateWindow;
class SvtFileViewWindow_Impl : public Window
{
private:
SvtTemplateWindow& rParent;
SvtFileView aFileView;
Link aNewFolderLink;
String aCurrentRootURL;
String aFolderURL;
String aMyDocumentsURL;
String aSamplesFolderURL;
::svt::RestrictedPaths
aURLFilter;
sal_Bool bIsTemplateFolder;
::com::sun::star::uno::Sequence< ::rtl::OUString >
GetNewDocContents() const;
public:
SvtFileViewWindow_Impl( SvtTemplateWindow* pParent );
~SvtFileViewWindow_Impl();
virtual void Resize();
inline void SetSelectHdl( const Link& rLink ) { aFileView.SetSelectHdl( rLink ); }
inline void SetDoubleClickHdl( const Link& rLink ) { aFileView.SetDoubleClickHdl( rLink ); }
inline void SetNewFolderHdl( const Link& rLink ) { aNewFolderLink = rLink; }
inline sal_Bool IsTemplateFolder() const { return bIsTemplateFolder; }
inline String GetFolderURL() const { return aFolderURL; }
inline String GetRootURL() const { return aCurrentRootURL; }
inline void OpenRoot( const String& rRootURL )
{ aCurrentRootURL = rRootURL; OpenFolder( rRootURL ); }
inline void SetMyDocumentsURL( const String& _rNewURL ) { aMyDocumentsURL = _rNewURL; }
inline void SetSamplesFolderURL( const String& _rNewURL ) { aSamplesFolderURL = _rNewURL; }
String GetSelectedFile() const;
void OpenFolder( const String& rURL );
sal_Bool HasPreviousLevel( String& rURL ) const;
String GetFolderTitle() const;
void SetFocus();
};
// class SvtFrameWindow_Impl ---------------------------------------------
class SvtDocInfoTable_Impl : public ResStringArray
{
public:
SvtDocInfoTable_Impl();
rtl::OUString GetString( long nId ) const;
};
class SvtFrameWindow_Impl : public Window
{
private:
::com::sun::star::uno::Reference < ::com::sun::star::frame::XFrame >
xFrame;
::com::sun::star::uno::Reference < ::com::sun::star::document::XDocumentProperties>
m_xDocProps;
::com::sun::star::uno::Reference< ::com::sun::star::awt::XWindow >
xWindow;
::svtools::ODocumentInfoPreview*
pEditWin;
Window* pTextWin;
Window* pEmptyWin;
::com::sun::star::lang::Locale aLocale;
SvtDocInfoTable_Impl aInfoTable;
String aCurrentURL;
::rtl::OUString m_aOpenURL;
sal_Bool bDocInfo;
void ShowDocInfo( const String& rURL );
void ViewEditWin();
void ViewTextWin();
void ViewEmptyWin();
void ViewNonEmptyWin(); // views depending on bDocInfo
struct SvtExecuteInfo
{
::com::sun::star::uno::Reference< ::com::sun::star::frame::XDispatch > xDispatch;
::com::sun::star::util::URL aTargetURL;
};
public:
SvtFrameWindow_Impl( Window* pParent );
~SvtFrameWindow_Impl();
virtual void Resize();
void OpenFile( const String& rURL, sal_Bool bPreview, sal_Bool bIsTemplate, sal_Bool bAsTemplate );
void ToggleView( sal_Bool bDocInfo );
};
// class SvtTemplateWindow -----------------------------------------------
struct FolderHistory;
typedef ::std::vector< FolderHistory* > HistoryList_Impl;
class SvtTemplateWindow : public Window
{
private:
ToolBox aFileViewTB;
ToolBox aFrameWinTB;
SplitWindow aSplitWin;
SvtIconWindow_Impl* pIconWin;
SvtFileViewWindow_Impl* pFileWin;
SvtFrameWindow_Impl* pFrameWin;
HistoryList_Impl* pHistoryList;
Link aSelectHdl;
Link aDoubleClickHdl;
Link aNewFolderHdl;
Link aSendFocusHdl;
Timer aSelectTimer;
String aFolderTitle;
virtual void Resize();
DECL_LINK(IconClickHdl_Impl, void *);
DECL_LINK(FileSelectHdl_Impl, void *);
DECL_LINK(FileDblClickHdl_Impl, void *);
DECL_LINK(NewFolderHdl_Impl, void *);
DECL_LINK(TimeoutHdl_Impl, void *);
DECL_LINK( ClickHdl_Impl, ToolBox* );
DECL_LINK(ResizeHdl_Impl, void *); // used for split and initial setting of toolbar pos
void PrintFile( const String& rURL );
void AppendHistoryURL( const String& rURL, sal_uLong nGroup );
void OpenHistory();
void DoAction( sal_uInt16 nAction );
void InitToolBoxes();
void InitToolBoxImages();
void UpdateIcons();
protected:
virtual long PreNotify( NotifyEvent& rNEvt );
virtual void DataChanged( const DataChangedEvent& rDCEvt );
public:
SvtTemplateWindow( Window* pParent );
~SvtTemplateWindow();
inline void SetSelectHdl( const Link& rLink ) { aSelectHdl = rLink; }
inline void SetDoubleClickHdl( const Link& rLink ) { aDoubleClickHdl = rLink; }
inline void SetNewFolderHdl( const Link& rLink ) { aNewFolderHdl = rLink; }
inline void SetSendFocusHdl( const Link& rLink ) { aSendFocusHdl = rLink; }
inline sal_Bool IsTemplateFolderOpen() const { return pFileWin->IsTemplateFolder(); }
inline sal_Bool HasIconWinFocus() const { return pIconWin->HasChildPathFocus(); }
void ReadViewSettings( );
void WriteViewSettings( );
sal_Bool IsFileSelected() const;
String GetSelectedFile() const;
void OpenFile( sal_Bool bNotAsTemplate );
String GetFolderTitle() const;
String GetFolderURL() const;
void SetFocus( sal_Bool bIconWin );
void OpenTemplateRoot();
void SetPrevLevelButtonState( const String& rURL ); // sets state (enable/disable) for previous level button
void ClearHistory();
long CalcHeight() const;
void SelectFolder(sal_Int32 nFolderPosition);
};
#endif // _SVTOOLS_TEMPLWIN_HXX
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */