LCOV - code coverage report
Current view: top level - cui/source/dialogs - hldoctp.cxx (source / functions) Hit Total Coverage
Test: commit 10e77ab3ff6f4314137acd6e2702a6e5c1ce1fae Lines: 0 130 0.0 %
Date: 2014-11-03 Functions: 0 24 0.0 %
Legend: Lines: hit not hit

          Line data    Source code
       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             : #include "cuihyperdlg.hxx"
      21             : #include <unotools/localfilehelper.hxx>
      22             : #include <sfx2/filedlghelper.hxx>
      23             : #include "com/sun/star/ui/dialogs/TemplateDescription.hpp"
      24             : 
      25             : #include "hldoctp.hxx"
      26             : #include "hlmarkwn_def.hxx"
      27             : 
      28             : sal_Char const sHash[]          = "#";
      29             : sal_Char const sFileScheme[]    = INET_FILE_SCHEME;
      30             : 
      31             : /*************************************************************************
      32             : |*
      33             : |* Contructor / Destructor
      34             : |*
      35             : |************************************************************************/
      36             : 
      37           0 : SvxHyperlinkDocTp::SvxHyperlinkDocTp ( vcl::Window *pParent, IconChoiceDialog* pDlg, const SfxItemSet& rItemSet)
      38             :     : SvxHyperlinkTabPageBase ( pParent, pDlg, "HyperlinkDocPage", "cui/ui/hyperlinkdocpage.ui", rItemSet ),
      39           0 :     mbMarkWndOpen   ( false )
      40             : {
      41           0 :     get(m_pCbbPath, "path");
      42           0 :     m_pCbbPath->SetSmartProtocol(INET_PROT_FILE);
      43           0 :     get(m_pBtFileopen, "fileopen");
      44           0 :     m_pBtFileopen->SetModeImage(Image(CUI_RES(RID_SVXBMP_FILEOPEN)));
      45           0 :     get(m_pEdTarget, "target");
      46           0 :     get(m_pFtFullURL, "url");
      47           0 :     get(m_pBtBrowse, "browse");
      48           0 :     m_pBtBrowse->SetModeImage(Image(CUI_RES(RID_SVXBMP_TARGET)));
      49             : 
      50             :     // Disable display of bitmap names.
      51           0 :     m_pBtBrowse->EnableTextDisplay (false);
      52           0 :     m_pBtFileopen->EnableTextDisplay (false);
      53             : 
      54           0 :     InitStdControls();
      55             : 
      56           0 :     m_pCbbPath->Show();
      57           0 :     OUString aFileScheme( INET_FILE_SCHEME );
      58           0 :     m_pCbbPath->SetBaseURL(aFileScheme);
      59           0 :     m_pCbbPath->SetHelpId( HID_HYPERDLG_DOC_PATH );
      60             : 
      61           0 :     SetExchangeSupport ();
      62             : 
      63             :     // overload handlers
      64           0 :     m_pBtFileopen->SetClickHdl ( LINK ( this, SvxHyperlinkDocTp, ClickFileopenHdl_Impl ) );
      65           0 :     m_pBtBrowse->SetClickHdl   ( LINK ( this, SvxHyperlinkDocTp, ClickTargetHdl_Impl ) );
      66           0 :     m_pCbbPath->SetModifyHdl   ( LINK ( this, SvxHyperlinkDocTp, ModifiedPathHdl_Impl ) );
      67           0 :     m_pEdTarget->SetModifyHdl  ( LINK ( this, SvxHyperlinkDocTp, ModifiedTargetHdl_Impl ) );
      68             : 
      69           0 :     m_pCbbPath->SetLoseFocusHdl( LINK ( this, SvxHyperlinkDocTp, LostFocusPathHdl_Impl ) );
      70             : 
      71           0 :     maTimer.SetTimeoutHdl ( LINK ( this, SvxHyperlinkDocTp, TimeoutHdl_Impl ) );
      72           0 : }
      73             : 
      74           0 : SvxHyperlinkDocTp::~SvxHyperlinkDocTp ()
      75             : {
      76           0 : }
      77             : 
      78             : /*************************************************************************
      79             : |*
      80             : |* Fill all dialog-controls except controls in groupbox "more..."
      81             : |*
      82             : |************************************************************************/
      83             : 
      84           0 : void SvxHyperlinkDocTp::FillDlgFields(const OUString& rStrURL)
      85             : {
      86           0 :     sal_Int32 nPos = rStrURL.indexOf(sHash);
      87             :     // path
      88           0 :     m_pCbbPath->SetText ( rStrURL.copy( 0, ( nPos == -1 ? rStrURL.getLength() : nPos ) ) );
      89             : 
      90             :     // set target in document at editfield
      91           0 :     OUString aStrMark;
      92           0 :     if ( nPos != -1 && nPos < rStrURL.getLength()-1 )
      93           0 :         aStrMark = rStrURL.copy( nPos+1 );
      94           0 :      m_pEdTarget->SetText ( aStrMark );
      95             : 
      96           0 :     ModifiedPathHdl_Impl ( NULL );
      97           0 : }
      98             : 
      99             : /*************************************************************************
     100             : |*
     101             : |* retrieve current url-string
     102             : |*
     103             : |************************************************************************/
     104             : 
     105           0 : OUString SvxHyperlinkDocTp::GetCurrentURL ()
     106             : {
     107             :     // get data from dialog-controls
     108           0 :     OUString aStrURL;
     109           0 :     OUString aStrPath ( m_pCbbPath->GetText() );
     110           0 :     const OUString aBaseURL ( m_pCbbPath->GetBaseURL() );
     111           0 :     OUString aStrMark( m_pEdTarget->GetText() );
     112             : 
     113           0 :     if ( aStrPath != aEmptyStr )
     114             :     {
     115           0 :         INetURLObject aURL( aStrPath );
     116           0 :         if ( aURL.GetProtocol() != INET_PROT_NOT_VALID )    // maybe the path is already a valid
     117           0 :             aStrURL = aStrPath;                             // hyperlink, then we can use this path directly
     118             :         else
     119           0 :             utl::LocalFileHelper::ConvertSystemPathToURL( aStrPath, aBaseURL, aStrURL );
     120             : 
     121             :         //#105788# always create a URL even if it is not valid
     122           0 :         if( aStrURL == aEmptyStr )
     123           0 :             aStrURL = aStrPath;
     124             :     }
     125             : 
     126           0 :     if( aStrMark != aEmptyStr )
     127             :     {
     128           0 :         aStrURL += OUString( sHash );
     129           0 :         aStrURL += aStrMark;
     130             :     }
     131             : 
     132           0 :     return aStrURL;
     133             : }
     134             : 
     135             : /*************************************************************************
     136             : |*
     137             : |* retrieve and prepare data from dialog-fields
     138             : |*
     139             : |************************************************************************/
     140             : 
     141           0 : void SvxHyperlinkDocTp::GetCurentItemData ( OUString& rStrURL, OUString& aStrName,
     142             :                                             OUString& aStrIntName, OUString& aStrFrame,
     143             :                                             SvxLinkInsertMode& eMode )
     144             : {
     145             :     // get data from standard-fields
     146           0 :     rStrURL = GetCurrentURL();
     147             : 
     148           0 :     if( rStrURL.equalsIgnoreAsciiCase( sFileScheme ) )
     149           0 :          rStrURL = "";
     150             : 
     151           0 :     GetDataFromCommonFields( aStrName, aStrIntName, aStrFrame, eMode );
     152           0 : }
     153             : 
     154             : /*************************************************************************
     155             : |*
     156             : |* static method to create Tabpage
     157             : |*
     158             : |************************************************************************/
     159             : 
     160           0 : IconChoicePage* SvxHyperlinkDocTp::Create( vcl::Window* pWindow, IconChoiceDialog* pDlg, const SfxItemSet& rItemSet )
     161             : {
     162           0 :     return( new SvxHyperlinkDocTp( pWindow, pDlg, rItemSet ) );
     163             : }
     164             : 
     165             : /*************************************************************************
     166             : |*
     167             : |* Set initial focus
     168             : |*
     169             : |************************************************************************/
     170             : 
     171           0 : void SvxHyperlinkDocTp::SetInitFocus()
     172             : {
     173           0 :     m_pCbbPath->GrabFocus();
     174           0 : }
     175             : 
     176             : /*************************************************************************
     177             : |*
     178             : |* Click on imagebutton : fileopen
     179             : |*
     180             : |************************************************************************/
     181             : 
     182           0 : IMPL_LINK_NOARG(SvxHyperlinkDocTp, ClickFileopenHdl_Impl)
     183             : {
     184             :     // Open Fileopen-Dialog
     185             :        ::sfx2::FileDialogHelper aDlg(
     186             :         com::sun::star::ui::dialogs::TemplateDescription::FILEOPEN_SIMPLE, 0,
     187           0 :         GetParent() );
     188           0 :     OUString aOldURL( GetCurrentURL() );
     189           0 :     if( aOldURL.startsWithIgnoreAsciiCase( sFileScheme ) )
     190             :     {
     191           0 :         aDlg.SetDisplayDirectory( aOldURL );
     192             :     }
     193             : 
     194           0 :     DisableClose( true );
     195           0 :     ErrCode nError = aDlg.Execute();
     196           0 :     DisableClose( false );
     197             : 
     198           0 :     if ( ERRCODE_NONE == nError )
     199             :     {
     200           0 :         OUString aURL( aDlg.GetPath() );
     201           0 :         OUString aPath;
     202             : 
     203           0 :         utl::LocalFileHelper::ConvertURLToSystemPath( aURL, aPath );
     204             : 
     205           0 :         m_pCbbPath->SetBaseURL( aURL );
     206           0 :         m_pCbbPath->SetText( aPath );
     207             : 
     208           0 :         if ( aOldURL != GetCurrentURL() )
     209           0 :             ModifiedPathHdl_Impl (NULL);
     210             :     }
     211             : 
     212           0 :     return( 0L );
     213             : }
     214             : 
     215             : /*************************************************************************
     216             : |*
     217             : |* Click on imagebutton : target
     218             : |*
     219             : |************************************************************************/
     220             : 
     221           0 : IMPL_LINK_NOARG(SvxHyperlinkDocTp, ClickTargetHdl_Impl)
     222             : {
     223           0 :     if ( GetPathType ( maStrURL ) == Type_ExistsFile  ||
     224           0 :          maStrURL.isEmpty() ||
     225           0 :          maStrURL.equalsIgnoreAsciiCase( sFileScheme ) ||
     226           0 :          maStrURL.startsWith( sHash ) )
     227             :     {
     228           0 :         mpMarkWnd->SetError( LERR_NOERROR );
     229             : 
     230           0 :         EnterWait();
     231             : 
     232           0 :         if ( maStrURL.equalsIgnoreAsciiCase( sFileScheme ) )
     233           0 :             mpMarkWnd->RefreshTree ( aEmptyStr );
     234             :         else
     235           0 :             mpMarkWnd->RefreshTree ( maStrURL );
     236             : 
     237           0 :         LeaveWait();
     238             :     }
     239             :     else
     240           0 :         mpMarkWnd->SetError( LERR_DOCNOTOPEN );
     241             : 
     242           0 :     ShowMarkWnd ();
     243             : 
     244           0 :     return( 0L );
     245             : }
     246             : 
     247             : /*************************************************************************
     248             : |*
     249             : |* Contens of combobox "Path" modified
     250             : |*
     251             : |************************************************************************/
     252             : 
     253           0 : IMPL_LINK_NOARG(SvxHyperlinkDocTp, ModifiedPathHdl_Impl)
     254             : {
     255           0 :     maStrURL = GetCurrentURL();
     256             : 
     257           0 :     maTimer.SetTimeout( 2500 );
     258           0 :     maTimer.Start();
     259             : 
     260           0 :     m_pFtFullURL->SetText( maStrURL );
     261             : 
     262           0 :     return( 0L );
     263             : }
     264             : 
     265             : /*************************************************************************
     266             : |*
     267             : |* If path-field was modify, to browse the new doc after timeout
     268             : |*
     269             : |************************************************************************/
     270             : 
     271           0 : IMPL_LINK_NOARG(SvxHyperlinkDocTp, TimeoutHdl_Impl)
     272             : {
     273           0 :     if ( IsMarkWndVisible() && ( GetPathType( maStrURL )==Type_ExistsFile ||
     274           0 :                                   maStrURL.isEmpty() ||
     275           0 :                                   maStrURL.equalsIgnoreAsciiCase( sFileScheme ) ) )
     276             :     {
     277           0 :         EnterWait();
     278             : 
     279           0 :         if ( maStrURL.equalsIgnoreAsciiCase( sFileScheme ) )
     280           0 :             mpMarkWnd->RefreshTree ( aEmptyStr );
     281             :         else
     282           0 :             mpMarkWnd->RefreshTree ( maStrURL );
     283             : 
     284           0 :         LeaveWait();
     285             :     }
     286             : 
     287           0 :     return( 0L );
     288             : }
     289             : 
     290             : /*************************************************************************
     291             : |*
     292             : |* Contens of editfield "Target" modified
     293             : |*
     294             : |************************************************************************/
     295             : 
     296           0 : IMPL_LINK_NOARG(SvxHyperlinkDocTp, ModifiedTargetHdl_Impl)
     297             : {
     298           0 :     maStrURL = GetCurrentURL();
     299             : 
     300           0 :     if ( IsMarkWndVisible() )
     301           0 :         mpMarkWnd->SelectEntry ( m_pEdTarget->GetText() );
     302             : 
     303           0 :     m_pFtFullURL->SetText( maStrURL );
     304             : 
     305           0 :     return( 0L );
     306             : }
     307             : 
     308             : /*************************************************************************
     309             : |*
     310             : |* editfield "Target" lost focus
     311             : |*
     312             : |************************************************************************/
     313             : 
     314           0 : IMPL_LINK_NOARG(SvxHyperlinkDocTp, LostFocusPathHdl_Impl)
     315             : {
     316           0 :     maStrURL = GetCurrentURL();
     317             : 
     318           0 :     m_pFtFullURL->SetText( maStrURL );
     319             : 
     320           0 :     return (0L);
     321             : }
     322             : 
     323             : /*************************************************************************
     324             : |*
     325             : |* Get String from Bookmark-Wnd
     326             : |*
     327             : |************************************************************************/
     328             : 
     329           0 : void SvxHyperlinkDocTp::SetMarkStr ( const OUString& aStrMark )
     330             : {
     331           0 :     m_pEdTarget->SetText ( aStrMark );
     332             : 
     333           0 :     ModifiedTargetHdl_Impl ( NULL );
     334           0 : }
     335             : 
     336             : /*************************************************************************
     337             : |*
     338             : |* retrieve kind of pathstr
     339             : |*
     340             : |************************************************************************/
     341             : 
     342           0 : SvxHyperlinkDocTp::EPathType SvxHyperlinkDocTp::GetPathType ( const OUString& rStrPath )
     343             : {
     344           0 :     INetURLObject aURL( rStrPath, INET_PROT_FILE );
     345             : 
     346           0 :     if( aURL.HasError() )
     347           0 :         return Type_Invalid;
     348             :     else
     349           0 :         return Type_ExistsFile;
     350           0 : }
     351             : 
     352             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10