diff options
author | Caolán McNamara <caolanm@redhat.com> | 2012-11-10 23:22:47 +0000 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2012-11-12 12:01:39 +0000 |
commit | 040e022d06ecadc36d3ef5c52178095a4d2c828a (patch) | |
tree | d60733f77650b251276b3313ad802d7c007d1f36 /vcl/source/control | |
parent | bfd8721577f0b26e890ab1528e2a71ad4889cb70 (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.cxx | 133 |
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: */ |