LCOV - code coverage report
Current view: top level - sc/source/ui/miscdlgs - filldlg.cxx (source / functions) Hit Total Coverage
Test: commit 10e77ab3ff6f4314137acd6e2702a6e5c1ce1fae Lines: 0 162 0.0 %
Date: 2014-11-03 Functions: 0 14 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             : #undef SC_DLLIMPLEMENTATION
      21             : 
      22             : #include <svl/zforlist.hxx>
      23             : #include <vcl/layout.hxx>
      24             : #include <limits.h>
      25             : 
      26             : #include "scresid.hxx"
      27             : #include "document.hxx"
      28             : #include "globstr.hrc"
      29             : #include "miscdlgs.hrc"
      30             : #include "filldlg.hxx"
      31             : 
      32             : // class ScFillSeriesDlg
      33             : 
      34           0 : ScFillSeriesDlg::ScFillSeriesDlg( vcl::Window*       pParent,
      35             :                                   ScDocument&   rDocument,
      36             :                                   FillDir       eFillDir,
      37             :                                   FillCmd       eFillCmd,
      38             :                                   FillDateCmd   eFillDateCmd,
      39             :                                   const OUString& aStartStr,
      40             :                                   double        fStep,
      41             :                                   double        fMax,
      42             :                                   sal_uInt16        nPossDir )
      43             :     : ModalDialog(pParent, "FillSeriesDialog", "modules/scalc/ui/filldlg.ui"),
      44             :         aStartStrVal    ( aStartStr),
      45             :         aErrMsgInvalidVal( SC_RESSTR(SCSTR_VALERR) ),
      46             :         rDoc            ( rDocument ),
      47             :         theFillDir      ( eFillDir ),
      48             :         theFillCmd      ( eFillCmd ),
      49             :         theFillDateCmd  ( eFillDateCmd ),
      50             :         fIncrement      ( fStep ),
      51           0 :         fEndVal         ( fMax )
      52             : {
      53           0 :     get(m_pFtStartVal, "startL");
      54           0 :     get(m_pEdStartVal, "startValue");
      55           0 :     get(m_pFtEndVal, "endL");
      56           0 :     get(m_pEdEndVal, "endValue");
      57           0 :     get(m_pFtIncrement, "incrementL");
      58           0 :     get(m_pEdIncrement, "increment");
      59           0 :     get(m_pBtnDown, "down");
      60           0 :     get(m_pBtnRight, "right");
      61           0 :     get(m_pBtnUp, "up");
      62           0 :     get(m_pBtnLeft, "left");
      63           0 :     get(m_pBtnArithmetic, "linear");
      64           0 :     get(m_pBtnGeometric, "growth");
      65           0 :     get(m_pBtnDate, "date");
      66           0 :     get(m_pBtnAutoFill, "autofill");
      67           0 :     get(m_pFtTimeUnit, "tuL");
      68           0 :     get(m_pBtnDay, "day");
      69           0 :     get(m_pBtnDayOfWeek, "week");
      70           0 :     get(m_pBtnMonth, "month");
      71           0 :     get(m_pBtnYear, "year");
      72           0 :     get(m_pBtnOk, "ok");
      73             : 
      74           0 :     Init( nPossDir );
      75           0 : }
      76             : 
      77           0 : ScFillSeriesDlg::~ScFillSeriesDlg()
      78             : {
      79           0 : }
      80             : 
      81           0 : void ScFillSeriesDlg::SetEdStartValEnabled(bool bFlag)
      82             : {
      83           0 :     bStartValFlag=bFlag;
      84           0 :     if(bFlag)
      85             :     {
      86           0 :        m_pFtStartVal->Enable();
      87           0 :        m_pEdStartVal->Enable();
      88             :     }
      89             :     else
      90             :     {
      91           0 :        m_pFtStartVal->Disable();
      92           0 :        m_pEdStartVal->Disable();
      93             :     }
      94           0 : }
      95             : 
      96           0 : void ScFillSeriesDlg::Init( sal_uInt16 nPossDir )
      97             : {
      98           0 :     m_pBtnOk->SetClickHdl         ( LINK( this, ScFillSeriesDlg, OKHdl ) );
      99           0 :     m_pBtnArithmetic->SetClickHdl ( LINK( this, ScFillSeriesDlg, DisableHdl ) );
     100           0 :     m_pBtnGeometric->SetClickHdl  ( LINK( this, ScFillSeriesDlg, DisableHdl ) );
     101           0 :     m_pBtnDate->SetClickHdl       ( LINK( this, ScFillSeriesDlg, DisableHdl ) );
     102           0 :     m_pBtnAutoFill->SetClickHdl   ( LINK( this, ScFillSeriesDlg, DisableHdl ) );
     103             : 
     104           0 :     if( nPossDir == FDS_OPT_NONE )
     105             :     {
     106           0 :         m_pBtnLeft->Disable();
     107           0 :         m_pBtnRight->Disable();
     108           0 :         m_pBtnDown->Disable();
     109           0 :         m_pBtnUp->Disable();
     110             :     }
     111             : 
     112           0 :     if( nPossDir == FDS_OPT_HORZ )
     113             :     {
     114           0 :         m_pBtnDown->Disable();
     115           0 :         m_pBtnUp->Disable();
     116             :     }
     117             : 
     118           0 :     if( nPossDir == FDS_OPT_VERT )
     119             :     {
     120           0 :         m_pBtnLeft->Disable();
     121           0 :         m_pBtnRight->Disable();
     122             :     }
     123             : 
     124           0 :     switch ( theFillDir )
     125             :     {
     126           0 :         case FILL_TO_LEFT:      m_pBtnLeft->Check();   break;
     127           0 :         case FILL_TO_RIGHT:     m_pBtnRight->Check();  break;
     128           0 :         case FILL_TO_BOTTOM:    m_pBtnDown->Check();   break;
     129           0 :         case FILL_TO_TOP:       m_pBtnUp->Check();     break;
     130             :         default:
     131           0 :         break;
     132             :     }
     133             : 
     134           0 :     switch ( theFillCmd )
     135             :     {
     136             :         case FILL_LINEAR:
     137           0 :             m_pBtnArithmetic->Check();
     138           0 :             DisableHdl( m_pBtnArithmetic );
     139           0 :             break;
     140             :         case FILL_GROWTH:
     141           0 :             m_pBtnGeometric->Check();
     142           0 :             DisableHdl( m_pBtnGeometric );
     143           0 :             break;
     144             :         case FILL_DATE:
     145           0 :             m_pBtnDate->Check();
     146           0 :             DisableHdl( m_pBtnDate );
     147           0 :             break;
     148             :         case FILL_AUTO:
     149           0 :             m_pBtnAutoFill->Check();
     150           0 :             DisableHdl( m_pBtnAutoFill );
     151           0 :             break;
     152             :         default:
     153           0 :         break;
     154             :     }
     155             : 
     156           0 :     switch ( theFillDateCmd )
     157             :     {
     158           0 :         case FILL_DAY:          m_pBtnDay->Check();        break;
     159           0 :         case FILL_WEEKDAY:      m_pBtnDayOfWeek->Check();  break;
     160           0 :         case FILL_MONTH:        m_pBtnMonth->Check();      break;
     161           0 :         case FILL_YEAR:         m_pBtnYear->Check();       break;
     162             :         default:
     163           0 :         break;
     164             :     }
     165             : 
     166           0 :     fStartVal = MAXDOUBLE;
     167             : 
     168           0 :     m_pEdStartVal->SetText( aStartStrVal);
     169             : 
     170           0 :     OUString aIncrTxt;
     171           0 :     rDoc.GetFormatTable()->GetInputLineString( fIncrement, 0, aIncrTxt );
     172           0 :     m_pEdIncrement->SetText( aIncrTxt );
     173             : 
     174           0 :     OUString aEndTxt;
     175           0 :     if ( fEndVal != MAXDOUBLE )
     176           0 :         rDoc.GetFormatTable()->GetInputLineString( fEndVal, 0, aEndTxt );
     177           0 :     m_pEdEndVal->SetText( aEndTxt );
     178             : 
     179           0 :     bStartValFlag = false;
     180           0 : }
     181             : 
     182           0 : bool ScFillSeriesDlg::CheckStartVal()
     183             : {
     184           0 :     bool bValOk = false;
     185           0 :     OUString aStr = m_pEdStartVal->GetText();
     186             : 
     187           0 :     if ( aStr.isEmpty() || m_pBtnAutoFill->IsChecked())
     188             :     {
     189           0 :         fStartVal = MAXDOUBLE;
     190           0 :         bValOk = true;
     191             :     }
     192             :     else
     193             :     {
     194           0 :         sal_uInt32 nKey = 0;
     195           0 :         bValOk = rDoc.GetFormatTable()->IsNumberFormat( aStr, nKey, fStartVal );
     196             :     }
     197           0 :     return bValOk;
     198             : }
     199             : 
     200           0 : bool ScFillSeriesDlg::CheckIncrementVal()
     201             : {
     202           0 :     sal_uInt32 nKey = 0;
     203           0 :     OUString aStr = m_pEdIncrement->GetText();
     204             : 
     205           0 :     return rDoc.GetFormatTable()->IsNumberFormat( aStr, nKey, fIncrement );
     206             : }
     207             : 
     208           0 : bool ScFillSeriesDlg::CheckEndVal()
     209             : {
     210           0 :     bool bValOk = false;
     211           0 :     OUString aStr = m_pEdEndVal->GetText();
     212             : 
     213           0 :     if (aStr.isEmpty())
     214             :     {
     215           0 :         fEndVal = (fIncrement < 0) ? -MAXDOUBLE : MAXDOUBLE;
     216           0 :         bValOk  = true;
     217             :     }
     218             :     else
     219             :     {
     220           0 :         sal_uInt32 nKey = 0;
     221           0 :         bValOk = rDoc.GetFormatTable()->IsNumberFormat( aStr, nKey, fEndVal );
     222             :     }
     223           0 :     return bValOk;
     224             : }
     225             : 
     226             : // Handler:
     227             : 
     228           0 : IMPL_LINK( ScFillSeriesDlg, DisableHdl, Button *, pBtn )
     229             : {
     230           0 :     if ( pBtn == m_pBtnDate )
     231             :     {
     232           0 :         m_pBtnDay->Enable();
     233           0 :         m_pBtnDayOfWeek->Enable();
     234           0 :         m_pBtnMonth->Enable();
     235           0 :         m_pBtnYear->Enable();
     236           0 :         m_pFtTimeUnit->Enable();
     237             :     }
     238             :     else
     239             :     {
     240           0 :         m_pBtnDay->Disable();
     241           0 :         m_pBtnDayOfWeek->Disable();
     242           0 :         m_pBtnMonth->Disable();
     243           0 :         m_pBtnYear->Disable();
     244           0 :         m_pFtTimeUnit->Disable();
     245             :     }
     246             : 
     247           0 :     if ( pBtn != m_pBtnAutoFill )
     248             :     {
     249           0 :         m_pFtIncrement->Enable();
     250           0 :         m_pEdIncrement->Enable();
     251           0 :         m_pFtEndVal->Enable();
     252           0 :         m_pEdEndVal->Enable();
     253             :     }
     254             :     else
     255             :     {
     256           0 :         m_pFtIncrement->Disable();
     257           0 :         m_pEdIncrement->Disable();
     258           0 :         m_pFtEndVal->Disable();
     259           0 :         m_pEdEndVal->Disable();
     260             :     }
     261           0 :     return 0;
     262             : }
     263             : 
     264           0 : IMPL_LINK_NOARG(ScFillSeriesDlg, OKHdl)
     265             : {
     266           0 :     if ( m_pBtnLeft->IsChecked() )             theFillDir = FILL_TO_LEFT;
     267           0 :     else if ( m_pBtnRight->IsChecked() )       theFillDir = FILL_TO_RIGHT;
     268           0 :     else if ( m_pBtnDown->IsChecked() )        theFillDir = FILL_TO_BOTTOM;
     269           0 :     else if ( m_pBtnUp->IsChecked() )          theFillDir = FILL_TO_TOP;
     270             : 
     271           0 :     if ( m_pBtnArithmetic->IsChecked() )       theFillCmd = FILL_LINEAR;
     272           0 :     else if ( m_pBtnGeometric->IsChecked() )   theFillCmd = FILL_GROWTH;
     273           0 :     else if ( m_pBtnDate->IsChecked() )        theFillCmd = FILL_DATE;
     274           0 :     else if ( m_pBtnAutoFill->IsChecked() )    theFillCmd = FILL_AUTO;
     275             : 
     276           0 :     if ( m_pBtnDay->IsChecked() )              theFillDateCmd = FILL_DAY;
     277           0 :     else if ( m_pBtnDayOfWeek->IsChecked() )   theFillDateCmd = FILL_WEEKDAY;
     278           0 :     else if ( m_pBtnMonth->IsChecked() )       theFillDateCmd = FILL_MONTH;
     279           0 :     else if ( m_pBtnYear->IsChecked() )        theFillDateCmd = FILL_YEAR;
     280             : 
     281           0 :     bool  bAllOk = true;
     282           0 :     Edit* pEdWrong = NULL;
     283           0 :     if ( !CheckStartVal() )
     284             :     {
     285           0 :         bAllOk = false;
     286           0 :         pEdWrong = m_pEdStartVal;
     287             :     }
     288           0 :     else if ( !CheckIncrementVal() )
     289             :     {
     290           0 :         bAllOk = false;
     291           0 :         pEdWrong = m_pEdIncrement;
     292             :     }
     293           0 :     else if ( !CheckEndVal() )
     294             :     {
     295           0 :         bAllOk = false;
     296           0 :         pEdWrong = m_pEdEndVal;
     297             :     }
     298           0 :     if ( bAllOk )
     299           0 :         EndDialog( RET_OK );
     300             :     else
     301             :     {
     302             :         MessageDialog(this,
     303             :                   aErrMsgInvalidVal
     304           0 :                 ).Execute();
     305           0 :         pEdWrong->GrabFocus();
     306             :     }
     307             : 
     308           0 :     return 0;
     309           0 : }
     310             : 
     311             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10