Skip to content
Projeler
Gruplar
Parçacıklar
Yardım
Yükleniyor...
Oturum aç / Kaydol
Gezinmeyi değiştir
C
core
Proje
Proje
Ayrıntılar
Etkinlik
Cycle Analytics
Depo (repository)
Depo (repository)
Dosyalar
Kayıtlar (commit)
Dallar (branch)
Etiketler
Katkıda bulunanlar
Grafik
Karşılaştır
Grafikler
Konular (issue)
0
Konular (issue)
0
Liste
Pano
Etiketler
Kilometre Taşları
Birleştirme (merge) Talepleri
0
Birleştirme (merge) Talepleri
0
CI / CD
CI / CD
İş akışları (pipeline)
İşler
Zamanlamalar
Grafikler
Paketler
Paketler
Wiki
Wiki
Parçacıklar
Parçacıklar
Üyeler
Üyeler
Collapse sidebar
Close sidebar
Etkinlik
Grafik
Grafikler
Yeni bir konu (issue) oluştur
İşler
Kayıtlar (commit)
Konu (issue) Panoları
Kenar çubuğunu aç
LibreOffice
core
Commits
6b6e6b8d
Kaydet (Commit)
6b6e6b8d
authored
Eyl 12, 2011
tarafından
Cédric Bosdonnat
Dosyalara gözat
Seçenekler
Dosyalara Gözat
İndir
Eposta Yamaları
Sade Fark
Header/Footer: the whole separator tab is now a menu button
üst
f189e727
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
75 additions
and
122 deletions
+75
-122
HeaderFooterWin.cxx
sw/source/ui/docvw/HeaderFooterWin.cxx
+70
-115
HeaderFooterWin.hxx
sw/source/ui/inc/HeaderFooterWin.hxx
+5
-7
No files found.
sw/source/ui/docvw/HeaderFooterWin.cxx
Dosyayı görüntüle @
6b6e6b8d
...
...
@@ -102,32 +102,20 @@ namespace
}
}
class
SwHeaderFooterButton
:
public
MenuButton
{
SwHeaderFooterWin
*
m_pWindow
;
PopupMenu
*
m_pPopupMenu
;
public
:
SwHeaderFooterButton
(
SwHeaderFooterWin
*
pWindow
);
~
SwHeaderFooterButton
(
);
// overloaded <MenuButton> methods
virtual
void
Select
();
// overloaded <Window> methods
virtual
void
Paint
(
const
Rectangle
&
rRect
);
virtual
void
MouseButtonDown
(
const
MouseEvent
&
rMEvt
);
};
SwHeaderFooterWin
::
SwHeaderFooterWin
(
SwEditWin
*
pEditWin
,
const
SwPageFrm
*
pPageFrm
,
bool
bHeader
)
:
Window
(
pEditWin
,
WB_DIALOGCONTROL
),
MenuButton
(
pEditWin
,
WB_DIALOGCONTROL
),
m_pEditWin
(
pEditWin
),
m_sLabel
(
),
m_pPageFrm
(
pPageFrm
),
m_bIsHeader
(
bHeader
),
m_pButton
(
NULL
)
m_bReadonly
(
false
),
m_pPopupMenu
(
NULL
)
{
// Define the readonly member
const
SwViewOption
*
pViewOpt
=
m_pEditWin
->
GetView
().
GetWrtShell
().
GetViewOptions
();
m_bReadonly
=
pViewOpt
->
IsReadonly
();
// Get the font and configure it
Font
aFont
=
GetSettings
().
GetStyleSettings
().
GetToolFont
();
SetZoomedPointFont
(
aFont
);
...
...
@@ -141,25 +129,28 @@ SwHeaderFooterWin::SwHeaderFooterWin( SwEditWin* pEditWin, const SwPageFrm* pPag
m_sLabel
=
ResId
::
toString
(
SW_RES
(
STR_FOOTER_TITLE
)
);
sal_Int32
nPos
=
m_sLabel
.
lastIndexOf
(
rtl
::
OUString
::
createFromAscii
(
"%1"
)
);
m_sLabel
=
m_sLabel
.
replaceAt
(
nPos
,
2
,
m_pPageFrm
->
GetPageDesc
()
->
GetName
()
);
}
SwHeaderFooterWin
::~
SwHeaderFooterWin
(
)
{
delete
m_pButton
;
}
// Create and set the PopupMenu
m_pPopupMenu
=
new
PopupMenu
(
SW_RES
(
MN_HEADERFOOTER_BUTTON
)
);
MenuButton
*
SwHeaderFooterWin
::
GetMenuButton
()
{
if
(
!
m_pButton
)
{
m_pButton
=
new
SwHeaderFooterButton
(
this
);
// Rewrite the menu entries' text
String
sType
=
SW_RESSTR
(
STR_FOOTER
);
if
(
m_bIsHeader
)
sType
=
SW_RESSTR
(
STR_HEADER
);
SwRewriter
aRewriter
;
aRewriter
.
AddRule
(
String
::
CreateFromAscii
(
"$1"
),
sType
);
// Don't blindly show it: check for readonly document
const
SwViewOption
*
pViewOpt
=
m_pEditWin
->
GetView
().
GetWrtShell
().
GetViewOptions
();
m_pButton
->
Show
(
!
pViewOpt
->
IsReadonly
()
);
}
String
aText
=
m_pPopupMenu
->
GetItemText
(
FN_HEADERFOOTER_EDIT
);
m_pPopupMenu
->
SetItemText
(
FN_HEADERFOOTER_EDIT
,
aRewriter
.
Apply
(
aText
)
);
return
m_pButton
;
aText
=
m_pPopupMenu
->
GetItemText
(
FN_HEADERFOOTER_DELETE
);
m_pPopupMenu
->
SetItemText
(
FN_HEADERFOOTER_DELETE
,
aRewriter
.
Apply
(
aText
)
);
SetPopupMenu
(
m_pPopupMenu
);
}
SwHeaderFooterWin
::~
SwHeaderFooterWin
(
)
{
delete
m_pPopupMenu
;
}
void
SwHeaderFooterWin
::
SetOffset
(
Point
aOffset
)
...
...
@@ -181,11 +172,6 @@ void SwHeaderFooterWin::SetOffset( Point aOffset )
// Set the position & Size of the window
SetPosSizePixel
(
aBoxPos
,
aBoxSize
);
// Set the button position and size
Point
aBtnPos
(
aBoxSize
.
getWidth
()
-
BUTTON_WIDTH
,
0
);
Size
aBtnSize
(
BUTTON_WIDTH
,
aBoxSize
.
getHeight
()
);
GetMenuButton
()
->
SetPosSizePixel
(
aBtnPos
,
aBtnSize
);
}
void
SwHeaderFooterWin
::
Paint
(
const
Rectangle
&
)
...
...
@@ -201,6 +187,45 @@ void SwHeaderFooterWin::Paint( const Rectangle& )
basegfx
::
BColor
aLineColor
=
SwViewOption
::
GetHeaderFooterMarkColor
().
getBColor
();
SetTextColor
(
Color
(
aLineColor
)
);
DrawText
(
aTextPos
,
String
(
m_sLabel
)
);
// Paint the symbol if not readonly button
if
(
!
m_bReadonly
)
{
Point
aPicPos
(
aRect
.
getWidth
()
-
BUTTON_WIDTH
,
0
);
Size
aPicSize
(
BUTTON_WIDTH
,
aRect
.
getHeight
()
);
Rectangle
aSymbolRect
(
aPicPos
,
aPicSize
);
if
(
IsEmptyHeaderFooter
(
)
)
{
SvtResId
id
(
BMP_LIST_ADD
);
Image
aPlusImg
(
id
);
Size
aSize
=
aPlusImg
.
GetSizePixel
();
Point
aPt
=
aSymbolRect
.
TopLeft
();
long
nXOffset
=
(
aSymbolRect
.
GetWidth
()
-
aSize
.
Width
()
)
/
2
;
long
nYOffset
=
(
aSymbolRect
.
GetHeight
()
-
aSize
.
Height
()
)
/
2
;
aPt
+=
Point
(
nXOffset
,
nYOffset
);
DrawImage
(
aPt
,
aPlusImg
);
}
else
{
// 25% distance to the left and right button border
const
long
nBorderDistanceLeftAndRight
=
((
aSymbolRect
.
GetWidth
()
*
250
)
+
500
)
/
1000
;
aSymbolRect
.
Left
()
+=
nBorderDistanceLeftAndRight
;
aSymbolRect
.
Right
()
-=
nBorderDistanceLeftAndRight
;
// 30% distance to the top button border
const
long
nBorderDistanceTop
=
((
aSymbolRect
.
GetHeight
()
*
300
)
+
500
)
/
1000
;
aSymbolRect
.
Top
()
+=
nBorderDistanceTop
;
// 25% distance to the bottom button border
const
long
nBorderDistanceBottom
=
((
aSymbolRect
.
GetHeight
()
*
250
)
+
500
)
/
1000
;
aSymbolRect
.
Bottom
()
-=
nBorderDistanceBottom
;
DecorationView
aDecoView
(
this
);
aDecoView
.
DrawSymbol
(
aSymbolRect
,
SYMBOL_SPIN_DOWN
,
(
Application
::
GetSettings
().
GetStyleSettings
().
GetHighContrastMode
()
?
Color
(
COL_WHITE
)
:
Color
(
COL_BLACK
)
)
);
}
}
}
bool
SwHeaderFooterWin
::
IsEmptyHeaderFooter
(
)
...
...
@@ -281,94 +306,24 @@ void SwHeaderFooterWin::ExecuteCommand( sal_uInt16 nSlot )
void
SwHeaderFooterWin
::
SetReadonly
(
bool
bReadonly
)
{
if
(
bReadonly
)
m_pButton
->
Hide
();
else
m_pButton
->
Show
();
m_bReadonly
=
bReadonly
;
Update
();
}
SwHeaderFooterButton
::
SwHeaderFooterButton
(
SwHeaderFooterWin
*
pWindow
)
:
MenuButton
(
pWindow
),
m_pWindow
(
pWindow
)
{
// Create and set the PopupMenu
m_pPopupMenu
=
new
PopupMenu
(
SW_RES
(
MN_HEADERFOOTER_BUTTON
)
);
// Rewrite the menu entries' text
String
sType
=
SW_RESSTR
(
STR_FOOTER
);
if
(
m_pWindow
->
IsHeader
()
)
sType
=
SW_RESSTR
(
STR_HEADER
);
SwRewriter
aRewriter
;
aRewriter
.
AddRule
(
String
::
CreateFromAscii
(
"$1"
),
sType
);
String
aText
=
m_pPopupMenu
->
GetItemText
(
FN_HEADERFOOTER_EDIT
);
m_pPopupMenu
->
SetItemText
(
FN_HEADERFOOTER_EDIT
,
aRewriter
.
Apply
(
aText
)
);
aText
=
m_pPopupMenu
->
GetItemText
(
FN_HEADERFOOTER_DELETE
);
m_pPopupMenu
->
SetItemText
(
FN_HEADERFOOTER_DELETE
,
aRewriter
.
Apply
(
aText
)
);
SetPopupMenu
(
m_pPopupMenu
);
}
SwHeaderFooterButton
::~
SwHeaderFooterButton
(
)
{
delete
m_pPopupMenu
;
}
void
SwHeaderFooterButton
::
Paint
(
const
Rectangle
&
)
{
const
Rectangle
aRect
(
Rectangle
(
Point
(
0
,
0
),
PixelToLogic
(
GetSizePixel
()
)
)
);
lcl_DrawBackground
(
this
,
aRect
,
m_pWindow
->
IsHeader
()
);
Rectangle
aSymbolRect
(
aRect
);
// 25% distance to the left and right button border
const
long
nBorderDistanceLeftAndRight
=
((
aSymbolRect
.
GetWidth
()
*
250
)
+
500
)
/
1000
;
aSymbolRect
.
Left
()
+=
nBorderDistanceLeftAndRight
;
aSymbolRect
.
Right
()
-=
nBorderDistanceLeftAndRight
;
// 30% distance to the top button border
const
long
nBorderDistanceTop
=
((
aSymbolRect
.
GetHeight
()
*
300
)
+
500
)
/
1000
;
aSymbolRect
.
Top
()
+=
nBorderDistanceTop
;
// 25% distance to the bottom button border
const
long
nBorderDistanceBottom
=
((
aSymbolRect
.
GetHeight
()
*
250
)
+
500
)
/
1000
;
aSymbolRect
.
Bottom
()
-=
nBorderDistanceBottom
;
if
(
m_pWindow
->
IsEmptyHeaderFooter
(
)
)
{
SvtResId
id
(
BMP_LIST_ADD
);
Image
aPlusImg
(
id
);
Size
aSize
=
aPlusImg
.
GetSizePixel
();
Point
aPt
=
aRect
.
TopLeft
();
long
nXOffset
=
(
aRect
.
GetWidth
()
-
aSize
.
Width
()
)
/
2
;
long
nYOffset
=
(
aRect
.
GetHeight
()
-
aSize
.
Height
()
)
/
2
;
aPt
+=
Point
(
nXOffset
,
nYOffset
);
DrawImage
(
aPt
,
aPlusImg
);
}
else
{
DecorationView
aDecoView
(
this
);
aDecoView
.
DrawSymbol
(
aSymbolRect
,
SYMBOL_SPIN_DOWN
,
(
Application
::
GetSettings
().
GetStyleSettings
().
GetHighContrastMode
()
?
Color
(
COL_WHITE
)
:
Color
(
COL_BLACK
)
)
);
}
}
void
SwHeaderFooterButton
::
MouseButtonDown
(
const
MouseEvent
&
rMEvt
)
void
SwHeaderFooterWin
::
MouseButtonDown
(
const
MouseEvent
&
rMEvt
)
{
if
(
m_pWindow
->
IsEmptyHeaderFooter
(
)
)
if
(
IsEmptyHeaderFooter
(
)
)
{
// Add the header / footer
m_pWindow
->
ChangeHeaderOrFooter
(
true
);
ChangeHeaderOrFooter
(
true
);
}
else
MenuButton
::
MouseButtonDown
(
rMEvt
);
}
void
SwHeaderFooter
Butto
n
::
Select
(
)
void
SwHeaderFooter
Wi
n
::
Select
(
)
{
m_pWindow
->
ExecuteCommand
(
GetCurItemId
()
);
ExecuteCommand
(
GetCurItemId
()
);
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
sw/source/ui/inc/HeaderFooterWin.hxx
Dosyayı görüntüle @
6b6e6b8d
...
...
@@ -33,20 +33,19 @@
#include <vcl/menubtn.hxx>
#include <vcl/window.hxx>
class
SwHeaderFooterButton
;
/** Class for the header and footer separator control window.
This control is showing the header / footer style name and provides
a few useful actions to the user.
*/
class
SwHeaderFooterWin
:
public
Window
class
SwHeaderFooterWin
:
public
MenuButton
{
SwEditWin
*
m_pEditWin
;
rtl
::
OUString
m_sLabel
;
const
SwPageFrm
*
m_pPageFrm
;
bool
m_bIsHeader
;
SwHeaderFooterButton
*
m_pButton
;
bool
m_bReadonly
;
PopupMenu
*
m_pPopupMenu
;
public
:
SwHeaderFooterWin
(
SwEditWin
*
pEditWin
,
const
SwPageFrm
*
pPageFrm
,
bool
bHeader
);
...
...
@@ -55,6 +54,8 @@ public:
void
SetOffset
(
Point
aOffset
);
virtual
void
Paint
(
const
Rectangle
&
rRect
);
virtual
void
MouseButtonDown
(
const
MouseEvent
&
rMEvt
);
virtual
void
Select
(
);
bool
IsHeader
()
{
return
m_bIsHeader
;
};
bool
IsEmptyHeaderFooter
(
);
...
...
@@ -64,9 +65,6 @@ public:
void
ExecuteCommand
(
sal_uInt16
nSlot
);
void
SetReadonly
(
bool
bReadonly
);
private
:
MenuButton
*
GetMenuButton
(
);
};
#endif
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment