LCOV - code coverage report
Current view: top level - sc/source/ui/miscdlgs - datastreamdlg.cxx (source / functions) Hit Total Coverage
Test: commit 10e77ab3ff6f4314137acd6e2702a6e5c1ce1fae Lines: 1 109 0.9 %
Date: 2014-11-03 Functions: 2 11 18.2 %
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             : 
      10             : #include <datastreamdlg.hxx>
      11             : 
      12             : #include <sfx2/filedlghelper.hxx>
      13             : #include <svtools/inettbc.hxx>
      14             : #include <vcl/layout.hxx>
      15             : #include <address.hxx>
      16             : #include <docsh.hxx>
      17             : 
      18             : namespace sc {
      19             : 
      20           0 : DataStreamDlg::DataStreamDlg(ScDocShell *pDocShell, vcl::Window* pParent)
      21             :     : ModalDialog(pParent, "DataStreamDialog", "modules/scalc/ui/datastreams.ui")
      22           0 :     , mpDocShell(pDocShell)
      23             : {
      24           0 :     get(m_pCbUrl, "url");
      25           0 :     get(m_pBtnBrowse, "browse");
      26           0 :     get(m_pRBDirectData, "directdata");
      27           0 :     get(m_pRBScriptData, "scriptdata");
      28           0 :     get(m_pRBValuesInLine, "valuesinline");
      29           0 :     get(m_pRBAddressValue, "addressvalue");
      30           0 :     get(m_pCBRefreshOnEmpty, "refresh_ui");
      31           0 :     get(m_pRBDataDown, "datadown");
      32           0 :     get(m_pRBRangeDown, "rangedown");
      33           0 :     get(m_pRBNoMove, "nomove");
      34           0 :     get(m_pRBMaxLimit, "maxlimit");
      35           0 :     get(m_pRBUnlimited, "unlimited");
      36           0 :     get(m_pEdRange, "range");
      37           0 :     get(m_pEdLimit, "limit");
      38           0 :     get(m_pBtnOk, "ok");
      39           0 :     get(m_pVclFrameLimit, "framelimit");
      40           0 :     get(m_pVclFrameMove, "framemove");
      41             : 
      42           0 :     m_pCbUrl->SetSelectHdl( LINK( this, DataStreamDlg, UpdateHdl ) );
      43           0 :     m_pRBAddressValue->SetClickHdl( LINK( this, DataStreamDlg, UpdateHdl ) );
      44           0 :     m_pRBAddressValue->Enable(false);
      45           0 :     m_pRBScriptData->Enable(false);
      46           0 :     m_pRBDirectData->Hide();
      47           0 :     m_pRBScriptData->Hide();
      48           0 :     m_pRBNoMove->Hide();
      49           0 :     m_pRBValuesInLine->SetClickHdl( LINK( this, DataStreamDlg, UpdateHdl ) );
      50           0 :     m_pEdRange->SetModifyHdl( LINK( this, DataStreamDlg, UpdateHdl ) );
      51           0 :     m_pBtnBrowse->SetClickHdl( LINK( this, DataStreamDlg, BrowseHdl ) );
      52           0 :     UpdateEnable();
      53           0 : }
      54             : 
      55           0 : IMPL_LINK_NOARG(DataStreamDlg, BrowseHdl)
      56             : {
      57           0 :     sfx2::FileDialogHelper aFileDialog(0, 0);
      58           0 :     if ( aFileDialog.Execute() != ERRCODE_NONE )
      59           0 :         return 0;
      60             : 
      61           0 :     m_pCbUrl->SetText( aFileDialog.GetPath() );
      62           0 :     UpdateEnable();
      63           0 :     return 0;
      64             : }
      65             : 
      66           0 : IMPL_LINK_NOARG(DataStreamDlg, UpdateHdl)
      67             : {
      68           0 :     UpdateEnable();
      69           0 :     return 0;
      70             : }
      71             : 
      72           0 : void DataStreamDlg::UpdateEnable()
      73             : {
      74           0 :     bool bOk = !m_pCbUrl->GetURL().isEmpty();
      75           0 :     if (m_pRBAddressValue->IsChecked())
      76             :     {
      77           0 :         m_pVclFrameLimit->Disable();
      78           0 :         m_pVclFrameMove->Disable();
      79           0 :         m_pEdRange->Disable();
      80             :     }
      81             :     else
      82             :     {
      83           0 :         m_pVclFrameLimit->Enable();
      84           0 :         m_pVclFrameMove->Enable();
      85           0 :         m_pEdRange->Enable();
      86           0 :         if (bOk)
      87             :         {
      88             :             // Check the given range to make sure it's valid.
      89           0 :             ScRange aTest = GetStartRange();
      90           0 :             if (!aTest.IsValid())
      91           0 :                 bOk = false;
      92             :         }
      93             :     }
      94           0 :     m_pBtnOk->Enable(bOk);
      95           0 :     setOptimalLayoutSize();
      96           0 : }
      97             : 
      98           0 : ScRange DataStreamDlg::GetStartRange()
      99             : {
     100           0 :     OUString aStr = m_pEdRange->GetText();
     101           0 :     ScDocument& rDoc = mpDocShell->GetDocument();
     102           0 :     ScRange aRange;
     103           0 :     sal_uInt16 nRes = aRange.Parse(aStr, &rDoc, rDoc.GetAddressConvention());
     104           0 :     if ((nRes & SCA_VALID) != SCA_VALID || !aRange.IsValid())
     105             :     {
     106             :         // Invalid range.
     107           0 :         aRange.SetInvalid();
     108           0 :         return aRange;
     109             :     }
     110             : 
     111             :     // Make sure it's only one row tall.
     112           0 :     if (aRange.aStart.Row() != aRange.aEnd.Row())
     113           0 :         aRange.SetInvalid();
     114             : 
     115           0 :     return aRange;
     116             : }
     117             : 
     118           0 : void DataStreamDlg::Init( const DataStream& rStrm )
     119             : {
     120           0 :     m_pCbUrl->SetText(rStrm.GetURL());
     121           0 :     ScDocument& rDoc = mpDocShell->GetDocument();
     122             : 
     123           0 :     ScRange aRange = rStrm.GetRange();
     124           0 :     ScRange aTopRange = aRange;
     125           0 :     aTopRange.aEnd.SetRow(aTopRange.aStart.Row());
     126           0 :     OUString aStr = aTopRange.Format(SCR_ABS_3D, &rDoc, rDoc.GetAddressConvention());
     127           0 :     m_pEdRange->SetText(aStr);
     128           0 :     SCROW nRows = aRange.aEnd.Row() - aRange.aStart.Row() + 1;
     129             : 
     130           0 :     if (aRange.aEnd.Row() == MAXROW)
     131           0 :         m_pRBUnlimited->Check();
     132             :     else
     133             :     {
     134           0 :         m_pRBMaxLimit->Check();
     135           0 :         m_pEdLimit->SetText(OUString::number(nRows));
     136             :     }
     137             : 
     138           0 :     DataStream::MoveType eMove = rStrm.GetMove();
     139           0 :     switch (eMove)
     140             :     {
     141             :         case DataStream::MOVE_DOWN:
     142           0 :             m_pRBDataDown->Check();
     143           0 :         break;
     144             :         case DataStream::RANGE_DOWN:
     145           0 :             m_pRBRangeDown->Check();
     146           0 :         break;
     147             :         case DataStream::MOVE_UP:
     148             :         case DataStream::NO_MOVE:
     149             :         default:
     150             :             ;
     151             :     }
     152             : 
     153           0 :     m_pCBRefreshOnEmpty->Check(rStrm.IsRefreshOnEmptyLine());
     154             : 
     155           0 :     UpdateEnable();
     156           0 : }
     157             : 
     158           0 : void DataStreamDlg::StartStream()
     159             : {
     160           0 :     ScRange aStartRange = GetStartRange();
     161           0 :     if (!aStartRange.IsValid())
     162             :         // Don't start the stream without a valid range.
     163           0 :         return;
     164             : 
     165           0 :     sal_Int32 nLimit = 0;
     166           0 :     if (m_pRBMaxLimit->IsChecked())
     167           0 :         nLimit = m_pEdLimit->GetText().toInt32();
     168           0 :     OUString rURL = m_pCbUrl->GetText();
     169           0 :     sal_uInt32 nSettings = 0;
     170           0 :     if (m_pRBScriptData->IsChecked())
     171           0 :        nSettings |= DataStream::SCRIPT_STREAM;
     172           0 :     if (m_pRBValuesInLine->IsChecked())
     173           0 :        nSettings |= DataStream::VALUES_IN_LINE;
     174             : 
     175             :     DataStream::MoveType eMove =
     176           0 :         m_pRBRangeDown->IsChecked() ? DataStream::RANGE_DOWN : DataStream::MOVE_DOWN;
     177             : 
     178           0 :     DataStream* pStream = DataStream::Set(mpDocShell, rURL, aStartRange, nLimit, eMove, nSettings);
     179           0 :     pStream->SetRefreshOnEmptyLine(m_pCBRefreshOnEmpty->IsChecked());
     180           0 :     DataStream::MakeToolbarVisible();
     181           0 :     pStream->StartImport();
     182             : }
     183             : 
     184         228 : }
     185             : 
     186             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10