LCOV - code coverage report
Current view: top level - sc/source/ui/miscdlgs - datastreamdlg.cxx (source / functions) Hit Total Coverage
Test: commit c8344322a7af75b84dd3ca8f78b05543a976dfd5 Lines: 1 132 0.8 %
Date: 2015-06-13 12:38:46 Functions: 2 14 14.3 %
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 : DataStreamDlg::~DataStreamDlg()
      56             : {
      57           0 :     disposeOnce();
      58           0 : }
      59             : 
      60           0 : void DataStreamDlg::dispose()
      61             : {
      62           0 :     m_pCbUrl.clear();
      63           0 :     m_pBtnBrowse.clear();
      64           0 :     m_pRBDirectData.clear();
      65           0 :     m_pRBScriptData.clear();
      66           0 :     m_pRBValuesInLine.clear();
      67           0 :     m_pRBAddressValue.clear();
      68           0 :     m_pCBRefreshOnEmpty.clear();
      69           0 :     m_pRBDataDown.clear();
      70           0 :     m_pRBRangeDown.clear();
      71           0 :     m_pRBNoMove.clear();
      72           0 :     m_pRBMaxLimit.clear();
      73           0 :     m_pRBUnlimited.clear();
      74           0 :     m_pEdRange.clear();
      75           0 :     m_pEdLimit.clear();
      76           0 :     m_pBtnOk.clear();
      77           0 :     m_pVclFrameLimit.clear();
      78           0 :     m_pVclFrameMove.clear();
      79           0 :     ModalDialog::dispose();
      80           0 : }
      81             : 
      82           0 : IMPL_LINK_NOARG(DataStreamDlg, BrowseHdl)
      83             : {
      84           0 :     sfx2::FileDialogHelper aFileDialog(0, 0);
      85           0 :     if ( aFileDialog.Execute() != ERRCODE_NONE )
      86           0 :         return 0;
      87             : 
      88           0 :     m_pCbUrl->SetText( aFileDialog.GetPath() );
      89           0 :     UpdateEnable();
      90           0 :     return 0;
      91             : }
      92             : 
      93           0 : IMPL_LINK_NOARG(DataStreamDlg, UpdateHdl)
      94             : {
      95           0 :     UpdateEnable();
      96           0 :     return 0;
      97             : }
      98             : 
      99           0 : void DataStreamDlg::UpdateEnable()
     100             : {
     101           0 :     bool bOk = !m_pCbUrl->GetURL().isEmpty();
     102           0 :     if (m_pRBAddressValue->IsChecked())
     103             :     {
     104           0 :         m_pVclFrameLimit->Disable();
     105           0 :         m_pVclFrameMove->Disable();
     106           0 :         m_pEdRange->Disable();
     107             :     }
     108             :     else
     109             :     {
     110           0 :         m_pVclFrameLimit->Enable();
     111           0 :         m_pVclFrameMove->Enable();
     112           0 :         m_pEdRange->Enable();
     113           0 :         if (bOk)
     114             :         {
     115             :             // Check the given range to make sure it's valid.
     116           0 :             ScRange aTest = GetStartRange();
     117           0 :             if (!aTest.IsValid())
     118           0 :                 bOk = false;
     119             :         }
     120             :     }
     121           0 :     m_pBtnOk->Enable(bOk);
     122           0 :     setOptimalLayoutSize();
     123           0 : }
     124             : 
     125           0 : ScRange DataStreamDlg::GetStartRange()
     126             : {
     127           0 :     OUString aStr = m_pEdRange->GetText();
     128           0 :     ScDocument& rDoc = mpDocShell->GetDocument();
     129           0 :     ScRange aRange;
     130           0 :     sal_uInt16 nRes = aRange.Parse(aStr, &rDoc, rDoc.GetAddressConvention());
     131           0 :     if ((nRes & SCA_VALID) != SCA_VALID || !aRange.IsValid())
     132             :     {
     133             :         // Invalid range.
     134           0 :         aRange.SetInvalid();
     135           0 :         return aRange;
     136             :     }
     137             : 
     138             :     // Make sure it's only one row tall.
     139           0 :     if (aRange.aStart.Row() != aRange.aEnd.Row())
     140           0 :         aRange.SetInvalid();
     141             : 
     142           0 :     return aRange;
     143             : }
     144             : 
     145           0 : void DataStreamDlg::Init( const DataStream& rStrm )
     146             : {
     147           0 :     m_pCbUrl->SetText(rStrm.GetURL());
     148           0 :     ScDocument& rDoc = mpDocShell->GetDocument();
     149             : 
     150           0 :     ScRange aRange = rStrm.GetRange();
     151           0 :     ScRange aTopRange = aRange;
     152           0 :     aTopRange.aEnd.SetRow(aTopRange.aStart.Row());
     153           0 :     OUString aStr = aTopRange.Format(SCR_ABS_3D, &rDoc, rDoc.GetAddressConvention());
     154           0 :     m_pEdRange->SetText(aStr);
     155           0 :     SCROW nRows = aRange.aEnd.Row() - aRange.aStart.Row() + 1;
     156             : 
     157           0 :     if (aRange.aEnd.Row() == MAXROW)
     158           0 :         m_pRBUnlimited->Check();
     159             :     else
     160             :     {
     161           0 :         m_pRBMaxLimit->Check();
     162           0 :         m_pEdLimit->SetText(OUString::number(nRows));
     163             :     }
     164             : 
     165           0 :     DataStream::MoveType eMove = rStrm.GetMove();
     166           0 :     switch (eMove)
     167             :     {
     168             :         case DataStream::MOVE_DOWN:
     169           0 :             m_pRBDataDown->Check();
     170           0 :         break;
     171             :         case DataStream::RANGE_DOWN:
     172           0 :             m_pRBRangeDown->Check();
     173           0 :         break;
     174             :         case DataStream::MOVE_UP:
     175             :         case DataStream::NO_MOVE:
     176             :         default:
     177             :             ;
     178             :     }
     179             : 
     180           0 :     m_pCBRefreshOnEmpty->Check(rStrm.IsRefreshOnEmptyLine());
     181             : 
     182           0 :     UpdateEnable();
     183           0 : }
     184             : 
     185           0 : void DataStreamDlg::StartStream()
     186             : {
     187           0 :     ScRange aStartRange = GetStartRange();
     188           0 :     if (!aStartRange.IsValid())
     189             :         // Don't start the stream without a valid range.
     190           0 :         return;
     191             : 
     192           0 :     sal_Int32 nLimit = 0;
     193           0 :     if (m_pRBMaxLimit->IsChecked())
     194           0 :         nLimit = m_pEdLimit->GetText().toInt32();
     195           0 :     OUString rURL = m_pCbUrl->GetText();
     196           0 :     sal_uInt32 nSettings = 0;
     197           0 :     if (m_pRBScriptData->IsChecked())
     198           0 :        nSettings |= DataStream::SCRIPT_STREAM;
     199           0 :     if (m_pRBValuesInLine->IsChecked())
     200           0 :        nSettings |= DataStream::VALUES_IN_LINE;
     201             : 
     202             :     DataStream::MoveType eMove =
     203           0 :         m_pRBRangeDown->IsChecked() ? DataStream::RANGE_DOWN : DataStream::MOVE_DOWN;
     204             : 
     205           0 :     DataStream* pStream = DataStream::Set(mpDocShell, rURL, aStartRange, nLimit, eMove, nSettings);
     206           0 :     pStream->SetRefreshOnEmptyLine(m_pCBRefreshOnEmpty->IsChecked());
     207           0 :     DataStream::MakeToolbarVisible();
     208           0 :     pStream->StartImport();
     209             : }
     210             : 
     211         156 : }
     212             : 
     213             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.11