LCOV - code coverage report
Current view: top level - libreoffice/sw/source/ui/envelp - envlop1.cxx (source / functions) Hit Total Coverage
Test: libreoffice_filtered.info Lines: 0 180 0.0 %
Date: 2012-12-27 Functions: 0 28 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 "dbmgr.hxx"
      21             : #include <sfx2/app.hxx>
      22             : #include <vcl/msgbox.hxx>
      23             : #include <swwait.hxx>
      24             : #include <viewopt.hxx>
      25             : 
      26             : #include "wrtsh.hxx"
      27             : #include "cmdid.h"
      28             : #include "helpid.h"
      29             : #include "envfmt.hxx"
      30             : #include "envlop.hxx"
      31             : #include "envprt.hxx"
      32             : #include "fmtcol.hxx"
      33             : #include "poolfmt.hxx"
      34             : #include "view.hxx"
      35             : 
      36             : #include "envlop.hrc"
      37             : #include <comphelper/processfactory.hxx>
      38             : 
      39             : #include <unomid.h>
      40             : 
      41             : using namespace ::com::sun::star::lang;
      42             : using namespace ::com::sun::star::container;
      43             : using namespace ::com::sun::star::uno;
      44             : using namespace ::com::sun::star;
      45             : using namespace ::rtl;
      46             : 
      47             : 
      48             : //impl in envimg.cxx
      49             : extern SW_DLLPUBLIC String MakeSender();
      50             : 
      51           0 : SwEnvPreview::SwEnvPreview(SfxTabPage* pParent, const ResId& rResID) :
      52             : 
      53           0 :     Window(pParent, rResID)
      54             : 
      55             : {
      56           0 :     SetMapMode(MapMode(MAP_PIXEL));
      57           0 : }
      58             : 
      59           0 : SwEnvPreview::~SwEnvPreview()
      60             : {
      61           0 : }
      62             : 
      63           0 : void SwEnvPreview::DataChanged( const DataChangedEvent& rDCEvt )
      64             : {
      65           0 :     Window::DataChanged( rDCEvt );
      66           0 :     if ( DATACHANGED_SETTINGS == rDCEvt.GetType() )
      67           0 :         SetBackground( GetSettings().GetStyleSettings().GetDialogColor() );
      68           0 : }
      69             : 
      70           0 : void SwEnvPreview::Paint(const Rectangle &)
      71             : {
      72           0 :     const StyleSettings& rSettings = GetSettings().GetStyleSettings();
      73             : 
      74             :     const SwEnvItem& rItem =
      75           0 :         ((SwEnvDlg*) GetParentDialog())->aEnvItem;
      76             : 
      77           0 :     sal_uInt16 nPageW = (sal_uInt16) Max(rItem.lWidth, rItem.lHeight),
      78           0 :            nPageH = (sal_uInt16) Min(rItem.lWidth, rItem.lHeight);
      79             : 
      80           0 :     float fx = (float)GetOutputSizePixel().Width () / (float)nPageW,
      81           0 :           fy = (float)GetOutputSizePixel().Height() / (float)nPageH,
      82           0 :           f  = 0.8f * ( fx < fy ? fx : fy );
      83             : 
      84           0 :     Color aBack = rSettings.GetWindowColor( );
      85           0 :     Color aFront = SwViewOption::GetFontColor();
      86           0 :     Color aMedium = Color(  ( aBack.GetRed() + aFront.GetRed() ) / 2,
      87           0 :                             ( aBack.GetGreen() + aFront.GetGreen() ) / 2,
      88           0 :                             ( aBack.GetBlue() + aFront.GetBlue() ) / 2
      89           0 :                         );
      90             : 
      91           0 :     SetLineColor( aFront );
      92             : 
      93             :     // Envelope
      94           0 :     long   nW = (sal_uInt16) (f * nPageW),
      95           0 :            nH = (sal_uInt16) (f * nPageH),
      96           0 :            nX = (GetOutputSizePixel().Width () - nW) / 2,
      97           0 :            nY = (GetOutputSizePixel().Height() - nH) / 2;
      98           0 :     SetFillColor( aBack );
      99           0 :     DrawRect(Rectangle(Point(nX, nY), Size(nW, nH)));
     100             : 
     101             :     // Sender
     102           0 :     if (rItem.bSend)
     103             :     {
     104           0 :         long   nSendX = nX + (sal_uInt16) (f * rItem.lSendFromLeft),
     105           0 :                nSendY = nY + (sal_uInt16) (f * rItem.lSendFromTop ),
     106           0 :                nSendW = (sal_uInt16) (f * (rItem.lAddrFromLeft - rItem.lSendFromLeft)),
     107           0 :                nSendH = (sal_uInt16) (f * (rItem.lAddrFromTop  - rItem.lSendFromTop  - 566));
     108           0 :         SetFillColor( aMedium );
     109             : 
     110           0 :         DrawRect(Rectangle(Point(nSendX, nSendY), Size(nSendW, nSendH)));
     111             :     }
     112             : 
     113             :     // Addressee
     114           0 :     long   nAddrX = nX + (sal_uInt16) (f * rItem.lAddrFromLeft),
     115           0 :            nAddrY = nY + (sal_uInt16) (f * rItem.lAddrFromTop ),
     116           0 :            nAddrW = (sal_uInt16) (f * (nPageW - rItem.lAddrFromLeft - 566)),
     117           0 :            nAddrH = (sal_uInt16) (f * (nPageH - rItem.lAddrFromTop  - 566));
     118           0 :     SetFillColor( aMedium );
     119           0 :     DrawRect(Rectangle(Point(nAddrX, nAddrY), Size(nAddrW, nAddrH)));
     120             : 
     121             :     // Stamp
     122           0 :     long   nStmpW = (sal_uInt16) (f * 1417 /* 2,5 cm */),
     123           0 :            nStmpH = (sal_uInt16) (f * 1701 /* 3,0 cm */),
     124           0 :            nStmpX = nX + nW - (sal_uInt16) (f * 566) - nStmpW,
     125           0 :            nStmpY = nY + (sal_uInt16) (f * 566);
     126             : 
     127           0 :     SetFillColor( aBack );
     128           0 :     DrawRect(Rectangle(Point(nStmpX, nStmpY), Size(nStmpW, nStmpH)));
     129           0 : }
     130             : 
     131           0 : SwEnvDlg::SwEnvDlg(Window* pParent, const SfxItemSet& rSet,
     132             :                     SwWrtShell* pWrtSh, Printer* pPrt, sal_Bool bInsert) :
     133             : 
     134             :     SfxTabDialog(pParent, SW_RES(DLG_ENV), &rSet, sal_False, &aEmptyStr),
     135             :     sInsert(SW_RES(ST_INSERT)),
     136             :     sChange(SW_RES(ST_CHANGE)),
     137           0 :     aEnvItem((const SwEnvItem&) rSet.Get(FN_ENVELOP)),
     138             :     pSh(pWrtSh),
     139             :     pPrinter(pPrt),
     140             :     pAddresseeSet(0),
     141           0 :     pSenderSet(0)
     142             : {
     143           0 :     FreeResource();
     144             : 
     145           0 :     GetOKButton().SetText(String(SW_RES(STR_BTN_NEWDOC)));
     146           0 :     GetOKButton().SetHelpId(HID_ENVELOP_PRINT);
     147           0 :     GetOKButton().SetHelpText(aEmptyStr);   // in order for generated help text to get used
     148           0 :     if (GetUserButton())
     149             :     {
     150           0 :         GetUserButton()->SetText(bInsert ? sInsert : sChange);
     151           0 :         GetUserButton()->SetHelpId(HID_ENVELOP_INSERT);
     152             :     }
     153             : 
     154           0 :     AddTabPage(TP_ENV_ENV, SwEnvPage   ::Create, 0);
     155           0 :     AddTabPage(TP_ENV_FMT, SwEnvFmtPage::Create, 0);
     156           0 :     AddTabPage(TP_ENV_PRT, SwEnvPrtPage::Create, 0);
     157           0 : }
     158             : 
     159           0 : SwEnvDlg::~SwEnvDlg()
     160             : {
     161           0 :     delete pAddresseeSet;
     162           0 :     delete pSenderSet;
     163           0 : }
     164             : 
     165           0 : void SwEnvDlg::PageCreated(sal_uInt16 nId, SfxTabPage &rPage)
     166             : {
     167           0 :     if (nId == TP_ENV_PRT)
     168             :     {
     169           0 :         ((SwEnvPrtPage*)&rPage)->SetPrt(pPrinter);
     170             :     }
     171           0 : }
     172             : 
     173           0 : short SwEnvDlg::Ok()
     174             : {
     175           0 :     short nRet = SfxTabDialog::Ok();
     176             : 
     177           0 :     if (nRet == RET_OK || nRet == RET_USER)
     178             :     {
     179           0 :         if (pAddresseeSet)
     180             :         {
     181           0 :             SwTxtFmtColl* pColl = pSh->GetTxtCollFromPool(RES_POOLCOLL_JAKETADRESS);
     182           0 :             pColl->SetFmtAttr(*pAddresseeSet);
     183             :         }
     184           0 :         if (pSenderSet)
     185             :         {
     186           0 :             SwTxtFmtColl* pColl = pSh->GetTxtCollFromPool(RES_POOLCOLL_SENDADRESS);
     187           0 :             pColl->SetFmtAttr(*pSenderSet);
     188             :         }
     189             :     }
     190             : 
     191           0 :     return nRet;
     192             : }
     193             : 
     194           0 : SwEnvPage::SwEnvPage(Window* pParent, const SfxItemSet& rSet) :
     195             : 
     196             :     SfxTabPage(pParent, SW_RES(TP_ENV_ENV), rSet),
     197             : 
     198             :     aAddrText      (this, SW_RES(TXT_ADDR   )),
     199             :     aAddrEdit      (this, SW_RES(EDT_ADDR   )),
     200             :     aDatabaseFT    (this, SW_RES(FT_DATABASE)),
     201             :     aDatabaseLB    (this, SW_RES(LB_DATABASE)),
     202             :     aTableFT       (this, SW_RES(FT_TABLE   )),
     203             :     aTableLB       (this, SW_RES(LB_TABLE   )),
     204             :     aInsertBT      (this, SW_RES(BTN_INSERT )),
     205             :     aDBFieldFT     (this, SW_RES(FT_DBFIELD )),
     206             :     aDBFieldLB     (this, SW_RES(LB_DBFIELD )),
     207             :     aSenderBox     (this, SW_RES(BOX_SEND   )),
     208             :     aSenderEdit    (this, SW_RES(EDT_SEND   )),
     209           0 :     aPreview       (this, SW_RES(WIN_PREVIEW))
     210             : 
     211             : {
     212           0 :     FreeResource();
     213           0 :     SetExchangeSupport();
     214           0 :     pSh = GetParentSwEnvDlg()->pSh;
     215             : 
     216             :     // Install handlers
     217           0 :     aDatabaseLB    .SetSelectHdl(LINK(this, SwEnvPage, DatabaseHdl     ));
     218           0 :     aTableLB       .SetSelectHdl(LINK(this, SwEnvPage, DatabaseHdl     ));
     219           0 :     aInsertBT      .SetClickHdl (LINK(this, SwEnvPage, FieldHdl        ));
     220           0 :     aSenderBox     .SetClickHdl (LINK(this, SwEnvPage, SenderHdl       ));
     221           0 :     aPreview.SetBorderStyle( WINDOW_BORDER_MONO );
     222             : 
     223           0 :     SwDBData aData = pSh->GetDBData();
     224           0 :     sActDBName = aData.sDataSource;
     225           0 :     sActDBName += DB_DELIM;
     226           0 :     sActDBName += (String)aData.sCommand;
     227           0 :     InitDatabaseBox();
     228           0 : }
     229             : 
     230           0 : SwEnvPage::~SwEnvPage()
     231             : {
     232           0 : }
     233             : 
     234           0 : IMPL_LINK( SwEnvPage, DatabaseHdl, ListBox *, pListBox )
     235             : {
     236           0 :     SwWait aWait( *pSh->GetView().GetDocShell(), sal_True );
     237             : 
     238           0 :     if (pListBox == &aDatabaseLB)
     239             :     {
     240           0 :         sActDBName = pListBox->GetSelectEntry();
     241           0 :         pSh->GetNewDBMgr()->GetTableNames(&aTableLB, sActDBName);
     242           0 :         sActDBName += DB_DELIM;
     243             :     }
     244             :     else
     245           0 :         sActDBName.SetToken(1, DB_DELIM, aTableLB.GetSelectEntry());
     246             :     pSh->GetNewDBMgr()->GetColumnNames(&aDBFieldLB, aDatabaseLB.GetSelectEntry(),
     247           0 :                                        aTableLB.GetSelectEntry());
     248           0 :     return 0;
     249             : }
     250             : 
     251           0 : IMPL_LINK_NOARG(SwEnvPage, FieldHdl)
     252             : {
     253           0 :     rtl::OUStringBuffer aStr;
     254           0 :     aStr.append('<');
     255           0 :     aStr.append(aDatabaseLB.GetSelectEntry());
     256           0 :     aStr.append('.');
     257           0 :     aStr.append(aTableLB.GetSelectEntry());
     258           0 :     aStr.append('.');
     259           0 :     aStr.append(aTableLB.GetEntryData(aTableLB.GetSelectEntryPos()) == 0 ? '0' : '1');
     260           0 :     aStr.append('.');
     261           0 :     aStr.append(aDBFieldLB.GetSelectEntry());
     262           0 :     aStr.append('>');
     263           0 :     aAddrEdit.ReplaceSelected(aStr.makeStringAndClear());
     264           0 :     Selection aSel = aAddrEdit.GetSelection();
     265           0 :     aAddrEdit.GrabFocus();
     266           0 :     aAddrEdit.SetSelection(aSel);
     267           0 :     return 0;
     268             : }
     269             : 
     270           0 : IMPL_LINK_NOARG(SwEnvPage, SenderHdl)
     271             : {
     272           0 :     const sal_Bool bEnable = aSenderBox.IsChecked();
     273           0 :     GetParentSwEnvDlg()->aEnvItem.bSend = bEnable;
     274           0 :     aSenderEdit.Enable(bEnable);
     275           0 :     if ( bEnable )
     276             :     {
     277           0 :         aSenderEdit.GrabFocus();
     278           0 :         if(!aSenderEdit.GetText().Len())
     279           0 :             aSenderEdit.SetText(MakeSender());
     280             :     }
     281           0 :     aPreview.Invalidate();
     282           0 :     return 0;
     283             : }
     284             : 
     285           0 : void SwEnvPage::InitDatabaseBox()
     286             : {
     287           0 :     if (pSh->GetNewDBMgr())
     288             :     {
     289           0 :         aDatabaseLB.Clear();
     290           0 :         Sequence<OUString> aDataNames = SwNewDBMgr::GetExistingDatabaseNames();
     291           0 :         const OUString* pDataNames = aDataNames.getConstArray();
     292             : 
     293           0 :         for (long i = 0; i < aDataNames.getLength(); i++)
     294           0 :             aDatabaseLB.InsertEntry(pDataNames[i]);
     295             : 
     296           0 :         String sDBName = sActDBName.GetToken( 0, DB_DELIM );
     297           0 :         String sTableName = sActDBName.GetToken( 1, DB_DELIM );
     298           0 :         aDatabaseLB.SelectEntry(sDBName);
     299           0 :         if (pSh->GetNewDBMgr()->GetTableNames(&aTableLB, sDBName))
     300             :         {
     301           0 :             aTableLB.SelectEntry(sTableName);
     302           0 :             pSh->GetNewDBMgr()->GetColumnNames(&aDBFieldLB, sDBName, sTableName);
     303             :         }
     304             :         else
     305           0 :             aDBFieldLB.Clear();
     306             : 
     307             :     }
     308           0 : }
     309             : 
     310           0 : SfxTabPage* SwEnvPage::Create(Window* pParent, const SfxItemSet& rSet)
     311             : {
     312           0 :     return new SwEnvPage(pParent, rSet);
     313             : }
     314             : 
     315           0 : void SwEnvPage::ActivatePage(const SfxItemSet& rSet)
     316             : {
     317           0 :     SfxItemSet aSet(rSet);
     318           0 :     aSet.Put(GetParentSwEnvDlg()->aEnvItem);
     319           0 :     Reset(aSet);
     320           0 : }
     321             : 
     322           0 : int SwEnvPage::DeactivatePage(SfxItemSet* _pSet)
     323             : {
     324           0 :     FillItem(GetParentSwEnvDlg()->aEnvItem);
     325           0 :     if( _pSet )
     326           0 :         FillItemSet(*_pSet);
     327           0 :     return SfxTabPage::LEAVE_PAGE;
     328             : }
     329             : 
     330           0 : void SwEnvPage::FillItem(SwEnvItem& rItem)
     331             : {
     332           0 :     rItem.aAddrText = aAddrEdit  .GetText();
     333           0 :     rItem.bSend     = aSenderBox .IsChecked();
     334           0 :     rItem.aSendText = aSenderEdit.GetText();
     335           0 : }
     336             : 
     337           0 : sal_Bool SwEnvPage::FillItemSet(SfxItemSet& rSet)
     338             : {
     339           0 :     FillItem(GetParentSwEnvDlg()->aEnvItem);
     340           0 :     rSet.Put(GetParentSwEnvDlg()->aEnvItem);
     341           0 :     return sal_True;
     342             : }
     343             : 
     344           0 : void SwEnvPage::Reset(const SfxItemSet& rSet)
     345             : {
     346           0 :     SwEnvItem aItem = (const SwEnvItem&) rSet.Get(FN_ENVELOP);
     347           0 :     aAddrEdit  .SetText(convertLineEnd(aItem.aAddrText, GetSystemLineEnd()));
     348           0 :     aSenderEdit.SetText(convertLineEnd(aItem.aSendText, GetSystemLineEnd()));
     349           0 :     aSenderBox .Check  (aItem.bSend);
     350           0 :     aSenderBox.GetClickHdl().Call(&aSenderBox);
     351           0 : }
     352             : 
     353             : 
     354             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10