LCOV - code coverage report
Current view: top level - svx/source/form - tbxform.cxx (source / functions) Hit Total Coverage
Test: commit e02a6cb2c3e2b23b203b422e4e0680877f232636 Lines: 0 163 0.0 %
Date: 2014-04-14 Functions: 0 45 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 <string>
      21             : #include <tools/shl.hxx>
      22             : #include <svl/intitem.hxx>
      23             : #include <svl/eitem.hxx>
      24             : #include <svl/stritem.hxx>
      25             : #include <sfx2/dispatch.hxx>
      26             : #include <vcl/toolbox.hxx>
      27             : #include <vcl/fixed.hxx>
      28             : #include <vcl/settings.hxx>
      29             : #include "fmitems.hxx"
      30             : #include "formtoolbars.hxx"
      31             : 
      32             : 
      33             : #include <svx/dialmgr.hxx>
      34             : #include <svx/dialogs.hrc>
      35             : #include "svx/tbxctl.hxx"
      36             : #include "svx/tbxdraw.hxx"
      37             : #include "tbxform.hxx"
      38             : #include "svx/fmresids.hrc"
      39             : #include "fmhelp.hrc"
      40             : #include <sfx2/viewfrm.hxx>
      41             : #include <sfx2/viewsh.hxx>
      42             : #include <sfx2/imagemgr.hxx>
      43             : #include <com/sun/star/beans/XPropertySet.hpp>
      44             : 
      45             : using namespace ::com::sun::star::uno;
      46             : using namespace ::com::sun::star::beans;
      47             : using namespace ::com::sun::star::frame;
      48             : using ::com::sun::star::beans::XPropertySet;
      49             : 
      50             : 
      51             : 
      52             : // class SvxFmAbsRecWin
      53             : 
      54             : 
      55             : 
      56           0 : SvxFmAbsRecWin::SvxFmAbsRecWin( Window* _pParent, SfxToolBoxControl* _pController )
      57             :     :NumericField( _pParent, WB_BORDER )
      58           0 :     ,m_pController(_pController)
      59             : {
      60           0 :     SetMin(1);
      61           0 :     SetFirst(1);
      62           0 :     SetSpinSize(1);
      63           0 :     SetSizePixel( Size(70,19) );
      64             : 
      65           0 :     SetDecimalDigits(0);
      66           0 :     SetStrictFormat(true);
      67           0 : }
      68             : 
      69             : 
      70           0 : SvxFmAbsRecWin::~SvxFmAbsRecWin()
      71             : {
      72           0 : }
      73             : 
      74             : 
      75           0 : void SvxFmAbsRecWin::FirePosition( sal_Bool _bForce )
      76             : {
      77           0 :     if ( _bForce || ( GetText() != GetSavedValue() ) )
      78             :     {
      79           0 :         sal_Int64 nRecord = GetValue();
      80           0 :         if (nRecord < GetMin() || nRecord > GetMax())
      81             :         {
      82           0 :             return;
      83             :         }
      84             : 
      85           0 :         SfxInt32Item aPositionParam( FN_PARAM_1, static_cast<sal_Int32>(nRecord) );
      86             : 
      87           0 :         Any a;
      88           0 :         Sequence< PropertyValue > aArgs( 1 );
      89           0 :         aArgs[0].Name = "Position";
      90           0 :         aPositionParam.QueryValue( a );
      91           0 :         aArgs[0].Value = a;
      92             :         m_pController->Dispatch( OUString( ".uno:AbsoluteRecord" ),
      93           0 :                                  aArgs );
      94           0 :         m_pController->updateStatus();
      95             : 
      96           0 :         SaveValue();
      97             :     }
      98             : }
      99             : 
     100             : 
     101           0 : void SvxFmAbsRecWin::LoseFocus()
     102             : {
     103           0 :     FirePosition( sal_False );
     104           0 : }
     105             : 
     106             : 
     107           0 : void SvxFmAbsRecWin::KeyInput( const KeyEvent& rKeyEvent )
     108             : {
     109           0 :     if( rKeyEvent.GetKeyCode() == KEY_RETURN && !GetText().isEmpty() )
     110           0 :         FirePosition( sal_True );
     111             :     else
     112           0 :         NumericField::KeyInput( rKeyEvent );
     113           0 : }
     114             : 
     115             : 
     116             : // class SvxFmTbxCtlConfig
     117             : 
     118             : 
     119             : struct MapSlotToCmd
     120             : {
     121             :     sal_uInt16      nSlotId;
     122             :     const char* pCommand;
     123             : };
     124             : 
     125             : static const MapSlotToCmd SlotToCommands[] =
     126             : {
     127             :     { SID_FM_PUSHBUTTON,        ".uno:Pushbutton"       },
     128             :     { SID_FM_RADIOBUTTON,       ".uno:RadioButton"      },
     129             :     { SID_FM_CHECKBOX,          ".uno:CheckBox"         },
     130             :     { SID_FM_FIXEDTEXT,         ".uno:Label"            },
     131             :     { SID_FM_GROUPBOX,          ".uno:GroupBox"         },
     132             :     { SID_FM_LISTBOX,           ".uno:ListBox"          },
     133             :     { SID_FM_COMBOBOX,          ".uno:ComboBox"         },
     134             :     { SID_FM_EDIT,              ".uno:Edit"             },
     135             :     { SID_FM_DBGRID,            ".uno:Grid"             },
     136             :     { SID_FM_IMAGEBUTTON,       ".uno:Imagebutton"      },
     137             :     { SID_FM_IMAGECONTROL,      ".uno:ImageControl"     },
     138             :     { SID_FM_FILECONTROL,       ".uno:FileControl"      },
     139             :     { SID_FM_DATEFIELD,         ".uno:DateField"        },
     140             :     { SID_FM_TIMEFIELD,         ".uno:TimeField"        },
     141             :     { SID_FM_NUMERICFIELD,      ".uno:NumericField"     },
     142             :     { SID_FM_CURRENCYFIELD,     ".uno:CurrencyField"    },
     143             :     { SID_FM_PATTERNFIELD,      ".uno:PatternField"     },
     144             :     { SID_FM_DESIGN_MODE,       ".uno:SwitchControlDesignMode" },
     145             :     { SID_FM_FORMATTEDFIELD,    ".uno:FormattedField"   },
     146             :     { SID_FM_SCROLLBAR,         ".uno:ScrollBar"        },
     147             :     { SID_FM_SPINBUTTON,        ".uno:SpinButton"       },
     148             :     { 0,                        ""                      }
     149             : };
     150             : 
     151           0 : SFX_IMPL_TOOLBOX_CONTROL( SvxFmTbxCtlConfig, SfxUInt16Item );
     152             : 
     153             : 
     154           0 : SvxFmTbxCtlConfig::SvxFmTbxCtlConfig( sal_uInt16 nSlotId, sal_uInt16 nId, ToolBox& rTbx )
     155             :     : SfxToolBoxControl( nSlotId, nId, rTbx )
     156           0 :     ,nLastSlot( 0 )
     157             : {
     158           0 :     rTbx.SetItemBits( nId, TIB_DROPDOWN | rTbx.GetItemBits( nId ) );
     159           0 : }
     160             : 
     161             : 
     162           0 : void SvxFmTbxCtlConfig::StateChanged(sal_uInt16 nSID, SfxItemState eState, const SfxPoolItem* pState )
     163             : {
     164           0 :     if (nSID == SID_FM_CONFIG)
     165             :     {
     166           0 :         sal_uInt16 nSlot   = 0;
     167           0 :         if (eState >= SFX_ITEM_AVAILABLE)
     168           0 :             nSlot = ((SfxUInt16Item*)pState)->GetValue();
     169             : 
     170           0 :         switch( nSlot )
     171             :         {
     172             :             case SID_FM_PUSHBUTTON:
     173             :             case SID_FM_RADIOBUTTON:
     174             :             case SID_FM_CHECKBOX:
     175             :             case SID_FM_FIXEDTEXT:
     176             :             case SID_FM_GROUPBOX:
     177             :             case SID_FM_LISTBOX:
     178             :             case SID_FM_COMBOBOX:
     179             :             case SID_FM_NAVIGATIONBAR:
     180             :             case SID_FM_EDIT:
     181             :             case SID_FM_DBGRID:
     182             :             case SID_FM_IMAGEBUTTON:
     183             :             case SID_FM_IMAGECONTROL:
     184             :             case SID_FM_FILECONTROL:
     185             :             case SID_FM_DATEFIELD:
     186             :             case SID_FM_TIMEFIELD:
     187             :             case SID_FM_NUMERICFIELD:
     188             :             case SID_FM_CURRENCYFIELD:
     189             :             case SID_FM_PATTERNFIELD:
     190             :             case SID_FM_DESIGN_MODE:
     191             :             case SID_FM_FORMATTEDFIELD:
     192             :             case SID_FM_SCROLLBAR:
     193             :             case SID_FM_SPINBUTTON:
     194             :             {   // set a new image, matching to this slot
     195           0 :                 OUString aSlotURL = "slot:" + OUString::number( nSlot);
     196           0 :                 Image aImage = GetImage( m_xFrame, aSlotURL, hasBigImages() );
     197           0 :                 GetToolBox().SetItemImage( GetId(), aImage );
     198           0 :                 nLastSlot = nSlot;
     199             :             }
     200           0 :             break;
     201             :         }
     202             :     }
     203           0 :     SfxToolBoxControl::StateChanged( nSID, eState,pState );
     204           0 : }
     205             : 
     206             : 
     207           0 : SfxPopupWindowType SvxFmTbxCtlConfig::GetPopupWindowType() const
     208             : {
     209           0 :     return( nLastSlot == 0 ? SFX_POPUPWINDOW_ONCLICK : SFX_POPUPWINDOW_ONTIMEOUT );
     210             : }
     211             : 
     212             : 
     213           0 : SfxPopupWindow* SvxFmTbxCtlConfig::CreatePopupWindow()
     214             : {
     215           0 :     if ( GetSlotId() == SID_FM_CONFIG )
     216             :     {
     217           0 :         ::svxform::FormToolboxes aToolboxes( m_xFrame );
     218           0 :         createAndPositionSubToolBar( aToolboxes.getToolboxResourceName( SID_FM_CONFIG ) );
     219             :     }
     220           0 :     return NULL;
     221             : }
     222             : 
     223             : 
     224           0 : void SvxFmTbxCtlConfig::Select( sal_uInt16 /*nSelectModifier*/ )
     225             : {
     226             : 
     227             :     // Click auf den Button SID_FM_CONFIG in der ObjectBar
     228           0 :     if ( nLastSlot )
     229             :     {
     230           0 :         sal_uInt16 n = 0;
     231           0 :         while( SlotToCommands[n].nSlotId > 0 )
     232             :         {
     233           0 :             if ( SlotToCommands[n].nSlotId == nLastSlot )
     234           0 :                 break;
     235           0 :             n++;
     236             :         }
     237             : 
     238           0 :         if ( SlotToCommands[n].nSlotId > 0 )
     239             :         {
     240           0 :             Sequence< PropertyValue > aArgs;
     241             :             Dispatch( OUString::createFromAscii( SlotToCommands[n].pCommand ),
     242           0 :                       aArgs );
     243             :         }
     244             :     }
     245           0 : }
     246             : 
     247             : 
     248             : 
     249             : // class SvxFmTbxCtlAbsRec
     250             : 
     251             : 
     252           0 : SFX_IMPL_TOOLBOX_CONTROL( SvxFmTbxCtlAbsRec, SfxInt32Item );
     253             : 
     254           0 : SvxFmTbxCtlAbsRec::SvxFmTbxCtlAbsRec( sal_uInt16 nSlotId, sal_uInt16 nId, ToolBox& rTbx )
     255           0 :     :SfxToolBoxControl( nSlotId, nId, rTbx )
     256             : {
     257           0 : }
     258             : 
     259             : 
     260           0 : SvxFmTbxCtlAbsRec::~SvxFmTbxCtlAbsRec()
     261             : {
     262           0 : }
     263             : 
     264             : 
     265           0 : void SvxFmTbxCtlAbsRec::StateChanged( sal_uInt16 nSID, SfxItemState eState, const SfxPoolItem* pState )
     266             : {
     267           0 :     sal_uInt16              nId = GetId();
     268           0 :     ToolBox*            pToolBox = &GetToolBox();
     269           0 :     SvxFmAbsRecWin*     pWin = (SvxFmAbsRecWin*)( pToolBox->GetItemWindow(nId) );
     270             : 
     271             :     DBG_ASSERT( pWin, "Control not found!" );
     272             : 
     273           0 :     if (pState)
     274             :     {
     275           0 :         const SfxInt32Item* pItem = PTR_CAST( SfxInt32Item, pState );
     276             :         DBG_ASSERT( pItem, "SvxFmTbxCtlAbsRec::StateChanged: invalid item!" );
     277           0 :         pWin->SetValue( pItem ? pItem->GetValue() : -1 );
     278             :     }
     279             : 
     280           0 :     sal_Bool bEnable = SFX_ITEM_DISABLED != eState && pState;
     281           0 :     if (!bEnable)
     282           0 :         pWin->SetText(OUString());
     283             : 
     284             : 
     285             :     // Enablen/disablen des Fensters
     286           0 :     pToolBox->EnableItem(nId, bEnable);
     287           0 :     SfxToolBoxControl::StateChanged( nSID, eState,pState );
     288           0 : }
     289             : 
     290             : 
     291           0 : Window* SvxFmTbxCtlAbsRec::CreateItemWindow( Window* pParent )
     292             : {
     293           0 :     SvxFmAbsRecWin* pWin = new SvxFmAbsRecWin( pParent, this );
     294           0 :     pWin->SetUniqueId( UID_ABSOLUTE_RECORD_WINDOW );
     295           0 :     return pWin;
     296             : }
     297             : 
     298             : 
     299             : 
     300             : // SvxFmTbxCtlRecText
     301             : 
     302             : 
     303           0 : SFX_IMPL_TOOLBOX_CONTROL( SvxFmTbxCtlRecText, SfxBoolItem );
     304             : 
     305           0 : SvxFmTbxCtlRecText::SvxFmTbxCtlRecText( sal_uInt16 nSlotId, sal_uInt16 nId, ToolBox& rTbx )
     306           0 :     :SfxToolBoxControl( nSlotId, nId, rTbx )
     307             : {
     308           0 : }
     309             : 
     310             : 
     311           0 : SvxFmTbxCtlRecText::~SvxFmTbxCtlRecText()
     312             : {
     313           0 : }
     314             : 
     315             : 
     316           0 : Window* SvxFmTbxCtlRecText::CreateItemWindow( Window* pParent )
     317             : {
     318           0 :     OUString aText(SVX_RESSTR(RID_STR_REC_TEXT));
     319           0 :     FixedText* pFixedText = new FixedText( pParent );
     320           0 :     Size aSize( pFixedText->GetTextWidth( aText ), pFixedText->GetTextHeight( ) );
     321           0 :     pFixedText->SetText( aText );
     322           0 :     aSize.Width() += 6;
     323           0 :     pFixedText->SetSizePixel( aSize );
     324           0 :     pFixedText->SetBackground(Wallpaper(Color(COL_TRANSPARENT)));
     325             : 
     326           0 :     return pFixedText;
     327             : }
     328             : 
     329             : 
     330             : 
     331             : // SvxFmTbxCtlRecFromText
     332             : 
     333             : 
     334           0 : SFX_IMPL_TOOLBOX_CONTROL( SvxFmTbxCtlRecFromText, SfxBoolItem );
     335             : 
     336           0 : SvxFmTbxCtlRecFromText::SvxFmTbxCtlRecFromText( sal_uInt16 nSlotId, sal_uInt16 nId, ToolBox& rTbx )
     337           0 :     :SfxToolBoxControl( nSlotId, nId, rTbx )
     338             : {
     339           0 : }
     340             : 
     341             : 
     342           0 : SvxFmTbxCtlRecFromText::~SvxFmTbxCtlRecFromText()
     343             : {
     344           0 : }
     345             : 
     346             : 
     347           0 : Window* SvxFmTbxCtlRecFromText::CreateItemWindow( Window* pParent )
     348             : {
     349           0 :     OUString aText(SVX_RESSTR(RID_STR_REC_FROM_TEXT));
     350           0 :     FixedText* pFixedText = new FixedText( pParent, WB_CENTER );
     351           0 :     Size aSize( pFixedText->GetTextWidth( aText ), pFixedText->GetTextHeight( ) );
     352           0 :     aSize.Width() += 12;
     353           0 :     pFixedText->SetText( aText );
     354           0 :     pFixedText->SetSizePixel( aSize );
     355           0 :     pFixedText->SetBackground(Wallpaper(Color(COL_TRANSPARENT)));
     356           0 :     return pFixedText;
     357             : }
     358             : 
     359             : 
     360             : 
     361             : // SvxFmTbxCtlRecTotal
     362             : 
     363           0 : SFX_IMPL_TOOLBOX_CONTROL( SvxFmTbxCtlRecTotal, SfxStringItem );
     364             : 
     365             : 
     366           0 : SvxFmTbxCtlRecTotal::SvxFmTbxCtlRecTotal( sal_uInt16 nSlotId, sal_uInt16 nId, ToolBox& rTbx )
     367             :     :SfxToolBoxControl( nSlotId, nId, rTbx )
     368           0 :     ,pFixedText( NULL )
     369             : {
     370           0 : }
     371             : 
     372             : 
     373           0 : SvxFmTbxCtlRecTotal::~SvxFmTbxCtlRecTotal()
     374             : {
     375           0 : }
     376             : 
     377             : 
     378           0 : Window* SvxFmTbxCtlRecTotal::CreateItemWindow( Window* pParent )
     379             : {
     380           0 :     pFixedText = new FixedText( pParent );
     381           0 :     OUString aSample("123456");
     382           0 :     Size aSize( pFixedText->GetTextWidth( aSample ), pFixedText->GetTextHeight( ) );
     383           0 :     aSize.Width() += 12;
     384           0 :     pFixedText->SetSizePixel( aSize );
     385           0 :     pFixedText->SetBackground();
     386           0 :     pFixedText->SetPaintTransparent(true);
     387           0 :     return pFixedText;
     388             : }
     389             : 
     390             : 
     391           0 : void SvxFmTbxCtlRecTotal::StateChanged( sal_uInt16 nSID, SfxItemState eState, const SfxPoolItem* pState )
     392             : {
     393             : 
     394             :     // Setzen des FixedTextes
     395           0 :     if (GetSlotId() != SID_FM_RECORD_TOTAL)
     396           0 :         return;
     397             : 
     398           0 :     OUString aText;
     399           0 :     if (pState)
     400           0 :         aText = ((SfxStringItem*)pState)->GetValue();
     401             :     else
     402           0 :         aText = "?";
     403             : 
     404           0 :     pFixedText->SetText( aText );
     405           0 :     pFixedText->Update();
     406           0 :     pFixedText->Flush();
     407             : 
     408           0 :     SfxToolBoxControl::StateChanged( nSID, eState,pState );
     409             : }
     410             : 
     411             : 
     412             : // SvxFmTbxNextRec
     413             : 
     414           0 : SFX_IMPL_TOOLBOX_CONTROL( SvxFmTbxNextRec, SfxBoolItem );
     415             : 
     416             : 
     417           0 : SvxFmTbxNextRec::SvxFmTbxNextRec( sal_uInt16 nSlotId, sal_uInt16 nId, ToolBox& rTbx )
     418           0 :     :SfxToolBoxControl( nSlotId, nId, rTbx )
     419             : {
     420           0 :     rTbx.SetItemBits(nId, rTbx.GetItemBits(nId) | TIB_REPEAT);
     421             : 
     422           0 :     AllSettings aSettings = rTbx.GetSettings();
     423           0 :     MouseSettings aMouseSettings = aSettings.GetMouseSettings();
     424           0 :     aMouseSettings.SetButtonRepeat(aMouseSettings.GetButtonRepeat() / 4);
     425           0 :     aSettings.SetMouseSettings(aMouseSettings);
     426           0 :     rTbx.SetSettings(aSettings, true);
     427           0 : }
     428             : 
     429             : 
     430             : // SvxFmTbxPrevRec
     431             : 
     432           0 : SFX_IMPL_TOOLBOX_CONTROL( SvxFmTbxPrevRec, SfxBoolItem );
     433             : 
     434             : 
     435           0 : SvxFmTbxPrevRec::SvxFmTbxPrevRec( sal_uInt16 nSlotId, sal_uInt16 nId, ToolBox& rTbx )
     436           0 :     :SfxToolBoxControl( nSlotId, nId, rTbx )
     437             : {
     438           0 :     rTbx.SetItemBits(nId, rTbx.GetItemBits(nId) | TIB_REPEAT);
     439           0 : }
     440             : 
     441             : 
     442             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10