1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
|
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed
* with this work for additional information regarding copyright
* ownership. The ASF licenses this file to you under the Apache
* License, Version 2.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
#ifndef INCLUDED_SVTOOLS_SIMPTABL_HXX
#define INCLUDED_SVTOOLS_SIMPTABL_HXX
#include <svtools/svtdllapi.h>
#include <svtools/headbar.hxx>
#include <svtools/svtabbx.hxx>
#include <unotools/intlwrapper.hxx>
class SvSimpleTable;
class SVT_DLLPUBLIC SvSimpleTableContainer : public Control
{
private:
VclPtr<SvSimpleTable> m_pTable;
protected:
virtual bool PreNotify( NotifyEvent& rNEvt ) SAL_OVERRIDE;
public:
SvSimpleTableContainer( vcl::Window* pParent, WinBits nBits = WB_BORDER );
virtual ~SvSimpleTableContainer();
virtual void dispose() SAL_OVERRIDE;
void SetTable(SvSimpleTable* pTable);
virtual void Resize() SAL_OVERRIDE;
virtual void GetFocus() SAL_OVERRIDE;
};
class SVT_DLLPUBLIC SvSimpleTable : public SvHeaderTabListBox
{
private:
SvSimpleTableContainer& m_rParentTableContainer;
Link<> aHeaderBarClickLink;
Link<> aHeaderBarDblClickLink;
Link<> aCommandLink;
CommandEvent aCEvt;
VclPtr<HeaderBar> aHeaderBar;
long nOldPos;
sal_uInt16 nHeaderItemId;
bool bPaintFlag;
bool bSortDirection;
sal_uInt16 nSortCol;
const CollatorWrapper aCollator;
DECL_LINK( StartDragHdl, HeaderBar* );
DECL_LINK( DragHdl, HeaderBar* );
DECL_LINK( EndDragHdl, HeaderBar* );
DECL_LINK( HeaderBarClick, HeaderBar* );
DECL_LINK( HeaderBarDblClick, HeaderBar* );
DECL_LINK( CompareHdl, SvSortData* );
protected:
virtual void NotifyScrolled() SAL_OVERRIDE;
virtual void SetTabs() SAL_OVERRIDE;
virtual void Paint( vcl::RenderContext& rRenderContext, const Rectangle& rRect ) SAL_OVERRIDE;
virtual void HBarClick();
void HBarDblClick();
void HBarStartDrag();
void HBarDrag();
void HBarEndDrag();
virtual void Command( const CommandEvent& rCEvt ) SAL_OVERRIDE;
virtual sal_Int32 ColCompare(SvTreeListEntry*,SvTreeListEntry*);
public:
SvSimpleTable(SvSimpleTableContainer& rParent, WinBits nBits = WB_BORDER);
virtual ~SvSimpleTable();
virtual void dispose() SAL_OVERRIDE;
void UpdateViewSize();
void InsertHeaderEntry(const OUString& rText,
sal_uInt16 nCol=HEADERBAR_APPEND,
HeaderBarItemBits nBits = HeaderBarItemBits::STDSTYLE);
void SetTabs(const long* pTabs, MapUnit = MAP_APPFONT);
void ClearHeader();
void ShowTable();
void HideTable();
bool IsVisible() const;
void EnableTable();
void DisableTable();
bool IsEnabled() const;
sal_uInt16 GetSelectedCol();
void SortByCol(sal_uInt16, bool bDir=true);
bool GetSortDirection(){ return bSortDirection;}
sal_uInt16 GetSortedCol(){ return nSortCol;}
SvLBoxItem* GetEntryAtPos( SvTreeListEntry* pEntry, sal_uInt16 nPos ) const;
CommandEvent GetCommandEvent()const { return aCEvt;}
inline bool IsFocusOnCellEnabled() const { return IsCellFocusEnabled(); }
void SetCommandHdl( const Link<>& rLink ) { aCommandLink = rLink; }
void SetHeaderBarClickHdl( const Link<>& rLink ) { aHeaderBarClickLink = rLink; }
HeaderBar& GetTheHeaderBar() { return *aHeaderBar.get(); }
};
#endif // INCLUDED_SVTOOLS_SIMPTABL_HXX
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|