summaryrefslogtreecommitdiff
path: root/sfx2/source/sidebar/ToolBoxBackground.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'sfx2/source/sidebar/ToolBoxBackground.cxx')
-rw-r--r--sfx2/source/sidebar/ToolBoxBackground.cxx148
1 files changed, 148 insertions, 0 deletions
diff --git a/sfx2/source/sidebar/ToolBoxBackground.cxx b/sfx2/source/sidebar/ToolBoxBackground.cxx
new file mode 100644
index 000000000000..1336c03478ed
--- /dev/null
+++ b/sfx2/source/sidebar/ToolBoxBackground.cxx
@@ -0,0 +1,148 @@
+/*
+ * 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 .
+ */
+#include "ToolBoxBackground.hxx"
+#include "Paint.hxx"
+#include "DrawHelper.hxx"
+#include "Tools.hxx"
+#include "sfx2/sidebar/Theme.hxx"
+
+#include <vcl/toolbox.hxx>
+#include <vcl/gradient.hxx>
+#include <svl/smplhint.hxx>
+
+
+namespace sfx2 { namespace sidebar {
+
+ToolBoxBackground::ToolBoxBackground (Window* pParentWindow)
+ : Window(pParentWindow, WB_DIALOGCONTROL),
+ maPadding(Tools::RectangleToSvBorder(Theme::GetRectangle(Theme::Rect_ToolBoxPadding)))
+{
+ SetBackground(Theme::GetPaint(Theme::Paint_ToolBoxBackground).GetWallpaper());
+
+#ifdef DEBUG
+ SetText(A2S("ToolBoxBackground"));
+#endif
+}
+
+
+
+
+ToolBoxBackground::~ToolBoxBackground (void)
+{
+ Link aEventListener (LINK(this, ToolBoxBackground, WindowEventHandler));
+ if (GetChildCount() > 0)
+ GetChild(0)->RemoveEventListener(aEventListener);
+}
+
+
+
+
+Point ToolBoxBackground::SetToolBoxChild (
+ ToolBox* pChild,
+ long nX,
+ long nY,
+ long nWidth,
+ long nHeight,
+ sal_uInt16 nFlags)
+{
+ if (pChild == NULL)
+ {
+ OSL_ASSERT(pChild!=NULL);
+ return Point(nX, nY);
+ }
+
+ Link aEventListener (LINK(this, ToolBoxBackground, WindowEventHandler));
+ pChild->AddEventListener(aEventListener);
+
+ setPosSizePixel(
+ nX - maPadding.Left(),
+ nY - maPadding.Top(),
+ nWidth + maPadding.Left() + maPadding.Right(),
+ nHeight + maPadding.Top() + maPadding.Bottom(),
+ nFlags);
+ return Point(
+ maPadding.Left(),
+ maPadding.Top());
+}
+
+
+
+
+void ToolBoxBackground::Paint (const Rectangle& rRect)
+{
+ Window::Paint(rRect);
+
+ Rectangle aBox (Point(0,0), GetSizePixel());
+
+ const sidebar::Paint aTopLeftBorderPaint (Theme::GetPaint(Theme::Paint_ToolBoxBorderTopLeft));
+ const sidebar::Paint aCenterBorderPaint (Theme::GetPaint(Theme::Paint_ToolBoxBorderCenterCorners));
+ const sidebar::Paint aBottomRightBorderPaint (Theme::GetPaint(Theme::Paint_ToolBoxBorderBottomRight));
+ const Rectangle aBorderSize (Theme::GetRectangle(Theme::Rect_ToolBoxBorder));
+ DrawHelper::DrawBevelBorder (
+ *this,
+ aBox,
+ Tools::RectangleToSvBorder(aBorderSize),
+ aTopLeftBorderPaint,
+ aCenterBorderPaint,
+ aBottomRightBorderPaint);
+}
+
+
+
+
+void ToolBoxBackground::DataChanged (const DataChangedEvent& rEvent)
+{
+ (void)rEvent;
+
+ SetBackground(Theme::GetPaint(Theme::Paint_ToolBoxBackground).GetWallpaper());
+ maPadding = Tools::RectangleToSvBorder(Theme::GetRectangle(Theme::Rect_ToolBoxPadding));
+}
+
+
+
+
+IMPL_LINK(ToolBoxBackground, WindowEventHandler, VclWindowEvent*, pEvent)
+{
+ if (pEvent != NULL)
+ {
+ switch (pEvent->GetId())
+ {
+ case VCLEVENT_WINDOW_SHOW:
+ if (GetChild(0)->IsVisible())
+ Show();
+ break;
+
+ case VCLEVENT_WINDOW_HIDE:
+ if ( ! GetChild(0)->IsVisible())
+ Hide();
+ break;
+
+ case SFX_HINT_DYING:
+ doLazyDelete();
+ break;
+
+ default:
+ break;
+ }
+ }
+
+ return sal_True;
+}
+
+
+} } // end of namespace sfx2::sidebar