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
|
/* -*- 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 <sfx2/sidebar/ControllerItem.hxx>
#include <sfx2/sidebar/IContextChangeReceiver.hxx>
#include <sfx2/sidebar/PanelLayout.hxx>
#include <vcl/EnumContext.hxx>
#include <vcl/image.hxx>
#include <com/sun/star/frame/XFrame.hpp>
class ToolbarUnoDispatcher;
class ToolbarPopupContainer;
namespace sc::sidebar {
class CellAppearancePropertyPanel
: public PanelLayout,
public ::sfx2::sidebar::IContextChangeReceiver,
public ::sfx2::sidebar::ControllerItem::ItemUpdateReceiverInterface
{
private:
friend class CellLineStylePopup;
friend class CellBorderStylePopup;
public:
static std::unique_ptr<PanelLayout> Create(
weld::Widget* pParent,
const css::uno::Reference<css::frame::XFrame>& rxFrame,
SfxBindings* pBindings);
virtual void HandleContextChange(
const vcl::EnumContext& rContext) override;
virtual void NotifyItemUpdate(
const sal_uInt16 nSId,
const SfxItemState eState,
const SfxPoolItem* pState) override;
virtual void GetControlState(
const sal_uInt16 /*nSId*/,
boost::property_tree::ptree& /*rState*/) override {};
SfxBindings* GetBindings() { return mpBindings;}
// constructor/destructor
CellAppearancePropertyPanel(
weld::Widget* pParent,
const css::uno::Reference<css::frame::XFrame>& rxFrame,
SfxBindings* pBindings);
virtual ~CellAppearancePropertyPanel() override;
private:
//ui controls
std::unique_ptr<ToolbarPopupContainer> mxCellBorderPopoverContainer;
std::unique_ptr<weld::Toolbar> mxTBCellBorder;
std::unique_ptr<weld::Toolbar> mxTBCellBackground;
std::unique_ptr<ToolbarUnoDispatcher> mxBackColorDispatch;
std::unique_ptr<ToolbarPopupContainer> mxLinePopoverContainer;
std::unique_ptr<weld::Toolbar> mxTBLineStyle;
std::unique_ptr<weld::Toolbar> mxTBLineColor;
std::unique_ptr<ToolbarUnoDispatcher> mxLineColorDispatch;
bool mbCellBorderPopoverCreated;
bool mbLinePopoverCreated;
::sfx2::sidebar::ControllerItem maLineStyleControl;
::sfx2::sidebar::ControllerItem maBorderOuterControl;
::sfx2::sidebar::ControllerItem maBorderInnerControl;
::sfx2::sidebar::ControllerItem maGridShowControl;
::sfx2::sidebar::ControllerItem maBorderTLBRControl;
::sfx2::sidebar::ControllerItem maBorderBLTRControl;
// images
Image maIMGCellBorder;
OUString msIMGCellBorder;
OUString msIMGLineStyle1;
OUString msIMGLineStyle2;
OUString msIMGLineStyle3;
OUString msIMGLineStyle4;
OUString msIMGLineStyle5;
OUString msIMGLineStyle6;
OUString msIMGLineStyle7;
OUString msIMGLineStyle8;
OUString msIMGLineStyle9;
// BorderStyle defines
sal_uInt16 mnInWidth;
sal_uInt16 mnOutWidth;
sal_uInt16 mnDistance;
sal_uInt16 mnDiagTLBRInWidth;
sal_uInt16 mnDiagTLBROutWidth;
sal_uInt16 mnDiagTLBRDistance;
sal_uInt16 mnDiagBLTRInWidth;
sal_uInt16 mnDiagBLTROutWidth;
sal_uInt16 mnDiagBLTRDistance;
bool mbBorderStyleAvailable : 1;
// CellBorder defines
bool mbLeft : 1;
bool mbRight : 1;
bool mbTop : 1;
bool mbBottom : 1;
bool mbVer : 1;
bool mbHor : 1;
bool mbOuterBorder : 1; // mbLeft || mbRight || mbTop || mbBottom
bool mbInnerBorder : 1; // mbVer || mbHor || bLeft || bRight || bTop || bBottom
bool mbDiagTLBR : 1;
bool mbDiagBLTR : 1;
vcl::EnumContext maContext;
SfxBindings* mpBindings;
DECL_LINK(TbxCellBorderSelectHdl, const OString&, void);
DECL_LINK(TbxCellBorderMenuHdl, const OString&, void);
DECL_LINK(TbxLineStyleSelectHdl, const OString&, void);
DECL_LINK(TbxLineStyleMenuHdl, const OString&, void);
void Initialize();
void SetStyleIcon();
void UpdateControlState();
void UpdateCellBorder(bool bTop, bool bBot, bool bLeft, bool bRight, bool bVer, bool bHor, bool bTLBR, bool bBLTR);
};
} // end of namespace ::sc::sidebar
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|