summaryrefslogtreecommitdiff
path: root/vcl/source/control
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2012-11-10 23:22:47 +0000
committerCaolán McNamara <caolanm@redhat.com>2012-11-12 12:01:39 +0000
commit040e022d06ecadc36d3ef5c52178095a4d2c828a (patch)
treed60733f77650b251276b3313ad802d7c007d1f36 /vcl/source/control
parentbfd8721577f0b26e890ab1528e2a71ad4889cb70 (diff)
move svtools's FixedHyper.hxx to vcl
merge with fixedhyperbase and map GtkLinkButton to FixedHyper. Convert to String while I'm at it. Change-Id: Ibc61fd29c01796561eeef952a159c82ff215a095
Diffstat (limited to 'vcl/source/control')
-rw-r--r--vcl/source/control/fixedhyper.cxx133
1 files changed, 133 insertions, 0 deletions
diff --git a/vcl/source/control/fixedhyper.cxx b/vcl/source/control/fixedhyper.cxx
new file mode 100644
index 000000000000..18de8a6fb41d
--- /dev/null
+++ b/vcl/source/control/fixedhyper.cxx
@@ -0,0 +1,133 @@
+/* -*- 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 .
+ */
+
+#include <vcl/fixedhyper.hxx>
+
+// class FixedHyperlink --------------------------------------------------
+
+FixedHyperlink::FixedHyperlink(Window* pParent, const ResId& rResId)
+ : FixedText(pParent, rResId)
+ , m_nTextLen(0)
+{
+ Initialize();
+}
+
+FixedHyperlink::FixedHyperlink(Window* pParent, WinBits nWinStyle)
+ : FixedText(pParent, nWinStyle)
+ , m_nTextLen(0)
+{
+ Initialize();
+}
+
+FixedHyperlink::~FixedHyperlink()
+{
+}
+
+void FixedHyperlink::Initialize()
+{
+ // saves the old pointer
+ m_aOldPointer = GetPointer();
+ // changes the font
+ Font aFont = GetControlFont( );
+ // to underline
+ aFont.SetUnderline( UNDERLINE_SINGLE );
+ SetControlFont( aFont );
+ // changes the color to light blue
+ SetTextColor( Color( COL_LIGHTBLUE ) );
+ // calculates text len
+ m_nTextLen = GetCtrlTextWidth( GetText() );
+}
+
+void FixedHyperlink::MouseMove( const MouseEvent& rMEvt )
+{
+ // changes the pointer if the control is enabled and the mouse is over the text.
+ if ( !rMEvt.IsLeaveWindow() && IsEnabled() && GetPointerPosPixel().X() < m_nTextLen )
+ SetPointer( POINTER_REFHAND );
+ else
+ SetPointer( m_aOldPointer );
+}
+
+void FixedHyperlink::MouseButtonUp( const MouseEvent& )
+{
+ // calls the link if the control is enabled and the mouse is over the text.
+ if ( IsEnabled() && GetPointerPosPixel().X() < m_nTextLen )
+ ImplCallEventListenersAndHandler( VCLEVENT_BUTTON_CLICK, m_aClickHdl, this );
+}
+
+void FixedHyperlink::RequestHelp( const HelpEvent& rHEvt )
+{
+ if ( IsEnabled() && GetPointerPosPixel().X() < m_nTextLen )
+ FixedText::RequestHelp( rHEvt );
+}
+
+void FixedHyperlink::GetFocus()
+{
+ SetTextColor( Color( COL_LIGHTRED ) );
+ Paint( Rectangle( Point(), GetSizePixel() ) );
+ ShowFocus( Rectangle( Point( 1, 1 ), Size( m_nTextLen + 4, GetSizePixel().Height() - 2 ) ) );
+}
+
+void FixedHyperlink::LoseFocus()
+{
+ SetTextColor( Color( COL_LIGHTBLUE ) );
+ Paint( Rectangle( Point(), GetSizePixel() ) );
+ HideFocus();
+}
+
+void FixedHyperlink::KeyInput( const KeyEvent& rKEvt )
+{
+ switch ( rKEvt.GetKeyCode().GetCode() )
+ {
+ case KEY_SPACE:
+ case KEY_RETURN:
+ m_aClickHdl.Call( this );
+ break;
+
+ default:
+ FixedText::KeyInput( rKEvt );
+ }
+}
+
+void FixedHyperlink::SetURL( const OUString& rNewURL )
+{
+ m_sURL = rNewURL;
+ SetQuickHelpText( m_sURL );
+}
+
+OUString FixedHyperlink::GetURL() const
+{
+ return m_sURL;
+}
+
+void FixedHyperlink::SetDescription(const OUString& rNewDescription)
+{
+ SetText(rNewDescription);
+ m_nTextLen = GetCtrlTextWidth(GetText());
+}
+
+bool FixedHyperlink::set_property(const OString &rKey, const OString &rValue)
+{
+ if (rKey == "uri")
+ SetURL(OStringToOUString(rValue, RTL_TEXTENCODING_UTF8));
+ else
+ return FixedText::set_property(rKey, rValue);
+ return true;
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */