blob: 2619407941f5cecf9c12197296ed8f40ead2c6fb (
plain)
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
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
|
/* -*- 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 .
*/
#pragma once
#include <controls/table/tablemodel.hxx>
#include <controls/table/tablesort.hxx>
#include <tools/color.hxx>
#include <com/sun/star/awt/grid/GridDataEvent.hpp>
#include <com/sun/star/awt/grid/XGridColumnModel.hpp>
#include <com/sun/star/awt/grid/XGridDataModel.hpp>
#include <com/sun/star/awt/grid/XGridColumn.hpp>
#include <com/sun/star/awt/grid/XGridColumn.hpp>
#include <com/sun/star/style/VerticalAlignment.hpp>
#include <cppuhelper/weakref.hxx>
namespace svt::table
{
//= UnoControlTableModel
class UnoGridColumnFacade;
class UnoControlTableModel : public ITableModel, public ITableDataSort
{
public:
UnoControlTableModel();
virtual ~UnoControlTableModel() override;
public:
// ITableModel overridables
virtual TableSize getColumnCount() const override;
virtual TableSize getRowCount() const override;
virtual bool hasColumnHeaders() const override;
virtual bool hasRowHeaders() const override;
virtual PColumnModel getColumnModel( ColPos column ) override;
virtual PTableRenderer getRenderer() const override;
virtual PTableInputHandler getInputHandler() const override;
virtual TableMetrics getRowHeight() const override;
virtual TableMetrics getColumnHeaderHeight() const override;
virtual TableMetrics getRowHeaderWidth() const override;
virtual ScrollbarVisibility getVerticalScrollbarVisibility() const override;
virtual ScrollbarVisibility getHorizontalScrollbarVisibility() const override;
virtual void addTableModelListener( const PTableModelListener& i_listener ) override;
virtual void removeTableModelListener( const PTableModelListener& i_listener ) override;
virtual void getCellContent( ColPos const i_col, RowPos const i_row, css::uno::Any& o_cellContent ) override;
virtual void getCellToolTip( ColPos const i_col, RowPos const i_row, css::uno::Any & o_cellToolTip ) override;
virtual css::uno::Any getRowHeading( RowPos const i_rowPos ) const override;
virtual ::std::optional< ::Color > getLineColor() const override;
virtual ::std::optional< ::Color > getHeaderBackgroundColor() const override;
virtual ::std::optional< ::Color > getHeaderTextColor() const override;
virtual ::std::optional< ::Color > getActiveSelectionBackColor() const override;
virtual ::std::optional< ::Color > getInactiveSelectionBackColor() const override;
virtual ::std::optional< ::Color > getActiveSelectionTextColor() const override;
virtual ::std::optional< ::Color > getInactiveSelectionTextColor() const override;
virtual ::std::optional< ::Color > getTextColor() const override;
virtual ::std::optional< ::Color > getTextLineColor() const override;
virtual ::std::optional< ::std::vector< ::Color > >
getRowBackgroundColors() const override;
virtual css::style::VerticalAlignment
getVerticalAlign() const override;
virtual ITableDataSort* getSortAdapter() override;
virtual bool isEnabled() const override;
// ITableDataSort overridables
virtual void sortByColumn( ColPos const i_column, ColumnSortDirection const i_sortDirection ) override;
virtual ColumnSort getCurrentSortOrder() const override;
// column write access
void appendColumn( css::uno::Reference< css::awt::grid::XGridColumn > const & i_column );
void insertColumn( ColPos const i_position, css::uno::Reference< css::awt::grid::XGridColumn > const & i_column );
void removeColumn( ColPos const i_position );
void removeAllColumns();
// other operations
void setVerticalScrollbarVisibility( ScrollbarVisibility const i_visibility );
void setHorizontalScrollbarVisibility( ScrollbarVisibility const i_visibility );
void setDataModel( css::uno::Reference< css::awt::grid::XGridDataModel > const & i_gridDataModel );
bool hasDataModel() const;
css::uno::Reference< css::awt::grid::XGridDataModel >
getDataModel() const;
void setColumnModel( css::uno::Reference< css::awt::grid::XGridColumnModel > const & i_gridColumnModel );
bool hasColumnModel() const;
css::uno::Reference< css::awt::grid::XGridColumnModel >
getColumnModel() const;
void setRowHeaders(bool _bRowHeaders);
void setColumnHeaders(bool _bColumnHeaders);
void setRowHeight( TableMetrics _nHeight );
void setRowHeaderWidth( TableMetrics _nWidth );
void setColumnHeaderHeight( TableMetrics _nHeight );
void setLineColor( css::uno::Any const & i_color );
void setHeaderBackgroundColor( css::uno::Any const & i_color );
void setHeaderTextColor( css::uno::Any const & i_color );
void setActiveSelectionBackColor( css::uno::Any const & i_color );
void setInactiveSelectionBackColor( css::uno::Any const & i_color );
void setActiveSelectionTextColor( css::uno::Any const & i_color );
void setInactiveSelectionTextColor( css::uno::Any const & i_color );
void setTextColor( css::uno::Any const & i_color );
void setTextLineColor( css::uno::Any const & i_color );
void setRowBackgroundColors( css::uno::Any const & i_APIValue );
void setVerticalAlign(css::style::VerticalAlignment _rAlign);
void setEnabled( bool _bEnabled );
// multiplexing of XGridDataListener events
void notifyRowsInserted( css::awt::grid::GridDataEvent const & i_event ) const;
void notifyRowsRemoved( css::awt::grid::GridDataEvent const & i_event ) const;
void notifyDataChanged( css::awt::grid::GridDataEvent const & i_event ) const;
/// retrieves the index of a column within the model
ColPos getColumnPos( UnoGridColumnFacade const & i_column ) const;
/// notifies a change in a column belonging to the model
void notifyColumnChange( ColPos const i_columnPos, ColumnAttributeGroup const i_attributeGroup ) const;
/** notifies a change in all data represented by the model. To be used if you cannot specified the changed data
in more detail.
*/
void notifyAllDataChanged() const;
private:
void impl_notifyTableMetricsChanged() const;
typedef ::std::vector< PTableModelListener > ModellListeners;
typedef ::std::vector< PColumnModel > ColumnModels;
ColumnModels aColumns;
bool bHasColumnHeaders;
bool bHasRowHeaders;
ScrollbarVisibility eVScrollMode;
ScrollbarVisibility eHScrollMode;
PTableRenderer pRenderer;
PTableInputHandler pInputHandler;
TableMetrics nRowHeight;
TableMetrics nColumnHeaderHeight;
TableMetrics nRowHeaderWidth;
::std::optional< ::Color > m_aGridLineColor;
::std::optional< ::Color > m_aHeaderBackgroundColor;
::std::optional< ::Color > m_aHeaderTextColor;
::std::optional< ::Color > m_aActiveSelectionBackColor;
::std::optional< ::Color > m_aInactiveSelectionBackColor;
::std::optional< ::Color > m_aActiveSelectionTextColor;
::std::optional< ::Color > m_aInactiveSelectionTextColor;
::std::optional< ::Color > m_aTextColor;
::std::optional< ::Color > m_aTextLineColor;
::std::optional< ::std::vector< ::Color > > m_aRowColors;
css::style::VerticalAlignment m_eVerticalAlign;
bool bEnabled;
ModellListeners m_aListeners;
css::uno::WeakReference< css::awt::grid::XGridDataModel > m_aDataModel;
css::uno::WeakReference< css::awt::grid::XGridColumnModel > m_aColumnModel;
};
} // svt::table
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|