LibreOffice Module sc (master)  1
hdrcont.hxx
Go to the documentation of this file.
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
3  * This file is part of the LibreOffice project.
4  *
5  * This Source Code Form is subject to the terms of the Mozilla Public
6  * License, v. 2.0. If a copy of the MPL was not distributed with this
7  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8  *
9  * This file incorporates work covered by the following license notice:
10  *
11  * Licensed to the Apache Software Foundation (ASF) under one or more
12  * contributor license agreements. See the NOTICE file distributed
13  * with this work for additional information regarding copyright
14  * ownership. The ASF licenses this file to you under the Apache
15  * License, Version 2.0 (the "License"); you may not use this file
16  * except in compliance with the License. You may obtain a copy of
17  * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18  */
19 
20 #pragma once
21 
22 #include <vcl/window.hxx>
23 #include <vcl/timer.hxx>
24 #include <types.hxx>
25 
26 #define HDR_SIZE_OPTIMUM 0xFFFF
27 
28 // Size of the sliders
29 #define HDR_SLIDERSIZE 2
30 
31 class ScTabView;
32 class SelectionEngine;
33 
35 {
36 private:
42  bool bBoldSet;
44 
45  bool bVertical; // Vertical = Row header
46 
50 
52 
55  bool bMarkRange;
56 
57  bool bDragging; // Resizing
61  void* nTipVisible;
62  bool bDragMoved;
63 
65 
66  bool bInRefMode;
67 
68  tools::Long GetScrPos( SCCOLROW nEntryNo ) const;
69  SCCOLROW GetMousePos( const MouseEvent& rMEvt, bool& rBorder ) const;
70  bool IsSelectionAllowed(SCCOLROW nPos) const;
71  void ShowDragHelp();
72  void HideDragHelp();
73 
74  void DoPaint( SCCOLROW nStart, SCCOLROW nEnd );
75 
76  DECL_LINK(ShowDragHelpHdl, Timer*, void);
77 
78 protected:
80 
81  // Window overrides
82 
83  virtual void Paint( vcl::RenderContext& rRenderContext, const tools::Rectangle& rRect ) override;
84 
85  virtual void MouseMove( const MouseEvent& rMEvt ) override;
86  virtual void MouseButtonUp( const MouseEvent& rMEvt ) override;
87  virtual void MouseButtonDown( const MouseEvent& rMEvt ) override;
88  virtual void Tracking( const TrackingEvent& rTEvt ) override;
89 
90  virtual void RequestHelp( const HelpEvent& rHEvt ) override;
91 
92  // new methods
93 
94  virtual SCCOLROW GetPos() const = 0; // current position (Scrolling)
95  virtual sal_uInt16 GetEntrySize( SCCOLROW nEntryNo ) const = 0; // width / height (Pixel)
96  virtual OUString GetEntryText( SCCOLROW nEntryNo ) const = 0;
97 
98  virtual SCCOLROW GetHiddenCount( SCCOLROW nEntryNo ) const;
99  virtual bool IsLayoutRTL() const;
100  virtual bool IsMirrored() const;
101 
102  virtual void SetEntrySize( SCCOLROW nPos, sal_uInt16 nNewWidth ) = 0;
103  virtual void HideEntries( SCCOLROW nStart, SCCOLROW nEnd ) = 0;
104 
105  virtual void SetMarking( bool bSet );
106  virtual void SelectWindow();
107  virtual bool IsDisabled() const;
108  virtual bool ResizeAllowed() const;
109  virtual OUString GetDragHelp( tools::Long nVal );
110 
111  virtual void DrawInvert( tools::Long nDragPos );
112  virtual void Command( const CommandEvent& rCEvt ) override;
113  virtual void dispose() override;
114 
115 public:
116  ScHeaderControl( vcl::Window* pParent, SelectionEngine* pSelectionEngine,
117  SCCOLROW nNewSize, bool bNewVertical, ScTabView* pTab );
118  virtual ~ScHeaderControl() override;
119 
120  void SetIgnoreMove(bool bSet) { bIgnoreMove = bSet; }
121 
122  void StopMarking();
123 
124  void SetMark( bool bNewSet, SCCOLROW nNewStart, SCCOLROW nNewEnd );
125 
126  tools::Long GetWidth() const { return nWidth; }
128  tools::Long GetBigWidth() const { return nBigWidth; }
129  void SetWidth( tools::Long nNew );
130  void GetMarkRange(SCCOLROW& rStart, SCCOLROW& rEnd) const;
131 };
132 
133 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
void HideDragHelp()
Definition: hdrcont.cxx:1048
bool bIgnoreMove
Definition: hdrcont.hxx:64
ScHeaderControl(vcl::Window *pParent, SelectionEngine *pSelectionEngine, SCCOLROW nNewSize, bool bNewVertical, ScTabView *pTab)
Definition: hdrcont.cxx:50
SCCOLROW nDragNo
Definition: hdrcont.hxx:58
tools::Long nWidth
Definition: hdrcont.hxx:47
virtual bool IsDisabled() const
Definition: hdrcont.cxx:1090
void * nTipVisible
Definition: hdrcont.hxx:61
tools::Long GetBigWidth() const
Definition: hdrcont.hxx:128
virtual bool IsMirrored() const
Definition: hdrcont.cxx:1085
void SetIgnoreMove(bool bSet)
Definition: hdrcont.hxx:120
long Long
tools::Long GetScrPos(SCCOLROW nEntryNo) const
Definition: hdrcont.cxx:189
virtual void dispose() override
Definition: hdrcont.cxx:103
tools::Long nSmallWidth
Definition: hdrcont.hxx:48
void SetMark(bool bNewSet, SCCOLROW nNewStart, SCCOLROW nNewEnd)
Definition: hdrcont.cxx:146
void GetMarkRange(SCCOLROW &rStart, SCCOLROW &rEnd) const
Definition: hdrcont.cxx:1117
bool IsSelectionAllowed(SCCOLROW nPos) const
Definition: hdrcont.cxx:664
SCCOLROW nSize
Definition: hdrcont.hxx:51
virtual void DrawInvert(tools::Long nDragPos)
Definition: hdrcont.cxx:1104
virtual void MouseButtonUp(const MouseEvent &rMEvt) override
Definition: hdrcont.cxx:801
SelectionEngine * pSelEngine
Definition: hdrcont.hxx:37
void StopMarking()
Definition: hdrcont.cxx:983
tools::Long nDragStart
Definition: hdrcont.hxx:59
virtual OUString GetDragHelp(tools::Long nVal)
Definition: hdrcont.cxx:1108
tools::Long GetWidth() const
Definition: hdrcont.hxx:126
sal_Int32 SCCOLROW
a type capable of holding either SCCOL or SCROW
Definition: types.hxx:23
virtual void Tracking(const TrackingEvent &rTEvt) override
Definition: hdrcont.cxx:913
void DoPaint(SCCOLROW nStart, SCCOLROW nEnd)
Definition: hdrcont.cxx:127
SCCOLROW nMarkEnd
Definition: hdrcont.hxx:54
virtual bool IsLayoutRTL() const
Definition: hdrcont.cxx:1080
virtual void RequestHelp(const HelpEvent &rHEvt) override
Definition: hdrcont.cxx:1058
virtual void SetMarking(bool bSet)
Definition: hdrcont.cxx:1113
virtual SCCOLROW GetHiddenCount(SCCOLROW nEntryNo) const
Definition: hdrcont.cxx:1069
void ShowDragHelp()
Definition: hdrcont.cxx:1006
SCCOLROW GetMousePos(const MouseEvent &rMEvt, bool &rBorder) const
Definition: hdrcont.cxx:624
void SetWidth(tools::Long nNew)
Definition: hdrcont.cxx:109
SCCOLROW nMarkStart
Definition: hdrcont.hxx:53
virtual void Command(const CommandEvent &rCEvt) override
Definition: hdrcont.cxx:926
ScTabView * pTabView
Definition: hdrcont.hxx:79
virtual SCCOLROW GetPos() const =0
vcl::Font aNormFont
Definition: hdrcont.hxx:39
virtual ~ScHeaderControl() override
Definition: hdrcont.cxx:123
virtual void HideEntries(SCCOLROW nStart, SCCOLROW nEnd)=0
vcl::Font aBoldFont
Definition: hdrcont.hxx:40
virtual bool ResizeAllowed() const
Definition: hdrcont.cxx:1095
virtual sal_uInt16 GetEntrySize(SCCOLROW nEntryNo) const =0
virtual void MouseButtonDown(const MouseEvent &rMEvt) override
Definition: hdrcont.cxx:703
vcl::Font aAutoFilterFont
Definition: hdrcont.hxx:41
tools::Long nDragPos
Definition: hdrcont.hxx:60
bool bAutoFilterSet
Definition: hdrcont.hxx:43
DECL_LINK(ShowDragHelpHdl, Timer *, void)
Timer aShowHelpTimer
Definition: hdrcont.hxx:38
virtual void Paint(vcl::RenderContext &rRenderContext, const tools::Rectangle &rRect) override
Definition: hdrcont.cxx:219
virtual void MouseMove(const MouseEvent &rMEvt) override
Definition: hdrcont.cxx:859
virtual void SetEntrySize(SCCOLROW nPos, sal_uInt16 nNewWidth)=0
tools::Long GetSmallWidth() const
Definition: hdrcont.hxx:127
virtual OUString GetEntryText(SCCOLROW nEntryNo) const =0
virtual void SelectWindow()
Definition: hdrcont.cxx:1100
tools::Long nBigWidth
Definition: hdrcont.hxx:49