LCOV - code coverage report
Current view: top level - cui/source/tabpages - tpcolor.cxx (source / functions) Hit Total Coverage
Test: commit 10e77ab3ff6f4314137acd6e2702a6e5c1ce1fae Lines: 0 593 0.0 %
Date: 2014-11-03 Functions: 0 56 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 <tools/urlobj.hxx>
      21             : #include <unotools/pathoptions.hxx>
      22             : #include <sfx2/app.hxx>
      23             : #include <sfx2/module.hxx>
      24             : #include <sfx2/objsh.hxx>
      25             : #include <sfx2/viewsh.hxx>
      26             : #include <sfx2/viewfrm.hxx>
      27             : #include <sfx2/dispatch.hxx>
      28             : #include <svtools/colrdlg.hxx>
      29             : #include <vcl/msgbox.hxx>
      30             : #include <sfx2/filedlghelper.hxx>
      31             : #include <svx/ofaitem.hxx>
      32             : #include "com/sun/star/ui/dialogs/TemplateDescription.hpp"
      33             : 
      34             : #include <cuires.hrc>
      35             : #include "helpid.hrc"
      36             : #include "svx/xattr.hxx"
      37             : #include <svx/xpool.hxx>
      38             : #include <svx/xtable.hxx>
      39             : #include "svx/drawitem.hxx"
      40             : #include "cuitabarea.hxx"
      41             : #include "defdlgname.hxx"
      42             : #include "dlgname.hxx"
      43             : #include <svx/svxdlg.hxx>
      44             : #include <dialmgr.hxx>
      45             : #include <cuitabline.hxx>
      46             : #include <svx/dialmgr.hxx>
      47             : #include <svx/dialogs.hrc>
      48             : #include <boost/scoped_ptr.hpp>
      49             : 
      50             : using namespace com::sun::star;
      51             : 
      52           0 : XPropertyListRef SvxColorTabPage::GetList()
      53             : {
      54           0 :     SvxAreaTabDialog* pArea = dynamic_cast< SvxAreaTabDialog* >( mpTopDlg );
      55           0 :     SvxLineTabDialog* pLine = dynamic_cast< SvxLineTabDialog* >( mpTopDlg );
      56             : 
      57           0 :     XColorListRef pList;
      58           0 :     if( pArea )
      59           0 :         pList = pArea->GetNewColorList();
      60           0 :     if( pLine )
      61           0 :         pList = pLine->GetNewColorList();
      62             : 
      63           0 :     if( !pList.is() ) {
      64           0 :         if( pArea )
      65           0 :             pList = pArea->GetColorList();
      66           0 :         if( pLine )
      67           0 :             pList = pLine->GetColorList();
      68             :     }
      69             : 
      70             :     // URGH - abstract this nicely ... for re-using SvxLoadSaveEmbed
      71           0 :     if( !pList.is() ) {
      72           0 :         SvxColorTabPage *pPage = dynamic_cast< SvxColorTabPage *>( this );
      73           0 :         if( pPage )
      74           0 :             pList = pPage->GetColorList();
      75             :     }
      76             : 
      77           0 :     return XPropertyListRef( static_cast< XPropertyList * >( pList.get() ) );
      78             : }
      79             : 
      80           0 : void SvxColorTabPage::SetEmbed( bool bEmbed )
      81             : {
      82           0 :     XPropertyListRef pList = GetList();
      83           0 :     if( pList.is() )
      84           0 :         pList->SetEmbedInDocument( bEmbed );
      85           0 :     m_pBoxEmbed->Check( bEmbed );
      86           0 : }
      87             : 
      88           0 : bool SvxColorTabPage::GetEmbed()
      89             : {
      90           0 :     XPropertyListRef pList = GetList();
      91           0 :     return pList.is() && pList->IsEmbedInDocument();
      92             : }
      93             : 
      94           0 : IMPL_LINK_NOARG(SvxColorTabPage, EmbedToggleHdl_Impl)
      95             : {
      96           0 :     SetEmbed( m_pBoxEmbed->IsChecked() );
      97           0 :     return 0;
      98             : }
      99             : 
     100           0 : void SvxColorTabPage::HideLoadSaveEmbed()
     101             : {
     102           0 :     m_pBtnLoad->Hide();
     103           0 :     m_pBtnSave->Hide();
     104           0 :     m_pBoxEmbed->Hide();
     105           0 : }
     106             : 
     107           0 : void SvxColorTabPage::UpdateTableName()
     108             : {
     109             :     // Truncate the name if necessary ...
     110           0 :     OUString aString( CUI_RES( RID_SVXSTR_TABLE ) );
     111           0 :     aString += ": ";
     112             : 
     113           0 :     XPropertyListRef pList = GetList();
     114           0 :     if( !pList.is() )
     115           0 :         return;
     116             : 
     117           0 :     INetURLObject aURL( pList->GetPath() );
     118           0 :     aURL.Append( pList->GetName() );
     119             : 
     120           0 :     if ( aURL.getBase().getLength() > 18 )
     121             :     {
     122           0 :         aString += aURL.getBase().copy( 0, 15 );
     123           0 :         aString += "...";
     124             :     }
     125             :     else
     126           0 :         aString += aURL.getBase();
     127             : 
     128           0 :     m_pTableName->SetText( aString );
     129             : }
     130             : 
     131             : 
     132             : 
     133           0 : IMPL_LINK_NOARG(SvxColorTabPage, ClickLoadHdl_Impl)
     134             : {
     135           0 :     sal_uInt16 nReturn = RET_YES;
     136           0 :     bool bLoaded = false;
     137             : 
     138           0 :     if( IsModified() && GetList()->Count() > 0 )
     139             :     {
     140           0 :         nReturn = MessageDialog( GetParentDialog()
     141             :                                 ,"AskSaveList"
     142           0 :                                 ,"cui/ui/querysavelistdialog.ui").Execute();
     143             : 
     144           0 :         if ( nReturn == RET_YES )
     145           0 :             GetList()->Save();
     146             :     }
     147             : 
     148           0 :     if ( nReturn != RET_CANCEL )
     149             :     {
     150           0 :         ::sfx2::FileDialogHelper aDlg( css::ui::dialogs::TemplateDescription::FILEOPEN_SIMPLE, 0 );
     151           0 :         OUString aStrFilterType( XPropertyList::GetDefaultExtFilter( meType ) );
     152           0 :         aDlg.AddFilter( aStrFilterType, aStrFilterType );
     153             : 
     154           0 :         INetURLObject aFile( SvtPathOptions().GetPalettePath() );
     155           0 :         aDlg.SetDisplayDirectory( aFile.GetMainURL( INetURLObject::NO_DECODE ) );
     156             : 
     157           0 :         if ( aDlg.Execute() == ERRCODE_NONE )
     158             :         {
     159             :             XColorListRef pList = XPropertyList::AsColorList(
     160             :                 XPropertyList::CreatePropertyListFromURL(
     161           0 :                     meType, aDlg.GetPath()));
     162           0 :             if( pList->Load() )
     163             :             {
     164             :                 // check whether the table may be deleted:
     165           0 :                 SvxAreaTabDialog* pArea = dynamic_cast< SvxAreaTabDialog* >( mpTopDlg );
     166           0 :                 SvxLineTabDialog* pLine = dynamic_cast< SvxLineTabDialog* >( mpTopDlg );
     167             : 
     168             :                 // FIXME: want to have a generic set and get method by type ...
     169           0 :                 if( pArea )
     170           0 :                     pArea->SetNewColorList( pList );
     171           0 :                 else if( pLine )
     172           0 :                     pLine->SetNewColorList( pList );
     173             : 
     174           0 :                 bLoaded = true;
     175           0 :                 UpdateTableName();
     176             : 
     177           0 :                 AddState( CT_CHANGED );
     178           0 :                 SetModified( false );
     179           0 :                 SetEmbed( true );
     180             :             }
     181             :             else
     182             :             {
     183             :                 MessageDialog( mpTopDlg
     184             :                               ,"NoLoadedFileDialog"
     185           0 :                               ,"cui/ui/querynoloadedfiledialog.ui").Execute();
     186           0 :             }
     187           0 :         }
     188             :     }
     189           0 :     Update( bLoaded );
     190             : 
     191           0 :     return 0;
     192             : }
     193             : 
     194           0 : void SvxColorTabPage::EnableSave( bool bCanSave )
     195             : {
     196           0 :     if ( bCanSave )
     197           0 :         m_pBtnSave->Enable();
     198             :     else
     199           0 :         m_pBtnSave->Disable();
     200           0 : }
     201             : 
     202             : 
     203             : 
     204           0 : IMPL_LINK_NOARG(SvxColorTabPage, ClickSaveHdl_Impl)
     205             : {
     206             :     ::sfx2::FileDialogHelper aDlg(
     207           0 :         css::ui::dialogs::TemplateDescription::FILESAVE_SIMPLE, 0 );
     208             : 
     209           0 :     OUString aStrFilterType( XPropertyList::GetDefaultExtFilter( meType ) );
     210           0 :     aDlg.AddFilter( aStrFilterType, aStrFilterType );
     211             : 
     212           0 :     INetURLObject aFile( SvtPathOptions().GetPalettePath() );
     213             :     DBG_ASSERT( aFile.GetProtocol() != INET_PROT_NOT_VALID, "invalid URL" );
     214             : 
     215           0 :     XPropertyListRef pList = GetList();
     216             : 
     217           0 :     if( !pList->GetName().isEmpty() )
     218             :     {
     219           0 :         aFile.Append( pList->GetName() );
     220             : 
     221           0 :         if( aFile.getExtension().isEmpty() )
     222           0 :             aFile.SetExtension( XPropertyList::GetDefaultExt( meType ) );
     223             :     }
     224             : 
     225           0 :     aDlg.SetDisplayDirectory( aFile.GetMainURL( INetURLObject::NO_DECODE ) );
     226           0 :     if ( aDlg.Execute() == ERRCODE_NONE )
     227             :     {
     228           0 :         INetURLObject aURL( aDlg.GetPath() );
     229           0 :         INetURLObject aPathURL( aURL );
     230             : 
     231           0 :         aPathURL.removeSegment();
     232           0 :         aPathURL.removeFinalSlash();
     233             : 
     234           0 :         pList->SetName( aURL.getName() );
     235           0 :         pList->SetPath( aPathURL.GetMainURL( INetURLObject::NO_DECODE ) );
     236             : 
     237           0 :         if( pList->Save() )
     238             :         {
     239           0 :             UpdateTableName();
     240           0 :             AddState( CT_SAVED );
     241           0 :             SetModified( false );
     242             :         }
     243             :         else
     244             :         {
     245             :             MessageDialog( mpTopDlg
     246             :                           ,"NoSaveFileDialog"
     247           0 :                           ,"cui/ui/querynosavefiledialog.ui").Execute();
     248           0 :         }
     249             :     }
     250           0 :     return 0;
     251             : }
     252             : 
     253           0 : void SvxColorTabPage::Update(bool bLoaded)
     254             : {
     255           0 :     pColorList = XColorListRef( static_cast<XColorList *>( GetList().get() ) );
     256             : 
     257           0 :     if (bLoaded)
     258             :     {
     259           0 :         m_pLbColor->Clear();
     260           0 :         m_pValSetColorList->Clear();
     261           0 :         Construct();
     262           0 :         Reset( &rOutAttrs );
     263             : 
     264           0 :         if( m_pLbColor->GetSelectEntryPos() == LISTBOX_ENTRY_NOTFOUND )
     265           0 :             m_pLbColor->SelectEntryPos( 0 );
     266             :         else
     267           0 :             m_pLbColor->SelectEntryPos( m_pLbColor->GetSelectEntryPos() );
     268             : 
     269           0 :         sal_Int32 nPos = m_pLbColor->GetSelectEntryPos();
     270           0 :         if( nPos != LISTBOX_ENTRY_NOTFOUND )
     271             :         {
     272           0 :             XColorEntry* pEntry = pColorList->GetColor( nPos );
     273           0 :             ChangeColor(pEntry->GetColor());
     274             :         }
     275           0 :         SelectColorLBHdl_Impl( this );
     276             :     }
     277             : 
     278           0 :     UpdateModified();
     279           0 : }
     280             : 
     281             : // FIXME: you have to hate yourself for this - all this
     282             : // horrible and broadly unused pointer based coupling
     283             : // needs to die. cf SetupForViewFrame
     284             : #define COLORPAGE_UNKNOWN ((sal_uInt16)0xFFFF)
     285             : 
     286             : struct SvxColorTabPageShadow
     287             : {
     288             :     sal_uInt16 nUnknownType;
     289             :     sal_Int32  nUnknownPos;
     290             :     bool   bIsAreaTP;
     291             :     sal_uInt16 nChangeType;
     292           0 :     SvxColorTabPageShadow()
     293             :         : nUnknownType( COLORPAGE_UNKNOWN )
     294             :         , nUnknownPos( LISTBOX_ENTRY_NOTFOUND )
     295             :         , bIsAreaTP( false )
     296           0 :         , nChangeType( 0 )
     297             :     {
     298           0 :     }
     299             : };
     300             : 
     301             : 
     302             : 
     303           0 : SvxColorTabPage::SvxColorTabPage(vcl::Window* pParent, const SfxItemSet& rInAttrs)
     304             :     : SfxTabPage(pParent, "ColorPage", "cui/ui/colorpage.ui", &rInAttrs)
     305             :     , meType( XCOLOR_LIST )
     306           0 :     , mpTopDlg( GetParentDialog() )
     307             :     , pShadow             ( new SvxColorTabPageShadow() )
     308             :     , rOutAttrs           ( rInAttrs )
     309             :     // All the horrific pointers we store and should not
     310             :     , pnColorListState( 0 )
     311             :     , pPageType( NULL )
     312             :     , nDlgType( 0 )
     313             :     , pPos( NULL )
     314             :     , pbAreaTP( NULL )
     315             :     , aXFStyleItem( drawing::FillStyle_SOLID )
     316             :     , aXFillColorItem( OUString(), Color( COL_BLACK ) )
     317           0 :     , aXFillAttr( static_cast<XOutdevItemPool*>( rInAttrs.GetPool() ))
     318           0 :     , rXFSet( aXFillAttr.GetItemSet() )
     319           0 :     , eCM( CM_RGB )
     320             : {
     321           0 :     get(m_pBoxEmbed, "embed");
     322           0 :     get(m_pBtnLoad, "load");
     323           0 :     get(m_pBtnSave, "save");
     324           0 :     get(m_pTableName, "colortableft");
     325             : 
     326           0 :     get(m_pEdtName, "name");
     327           0 :     get(m_pLbColor, "colorlb");
     328           0 :     get(m_pValSetColorList, "colorset");
     329           0 :     Size aSize = LogicToPixel(Size(94 , 117), MAP_APPFONT);
     330           0 :     m_pValSetColorList->set_width_request(aSize.Width());
     331           0 :     m_pValSetColorList->set_height_request(aSize.Height());
     332           0 :     get(m_pCtlPreviewOld, "oldpreview");
     333           0 :     get(m_pCtlPreviewNew, "newpreview");
     334           0 :     aSize = LogicToPixel(Size(34 , 25), MAP_APPFONT);
     335           0 :     m_pCtlPreviewOld->set_width_request(aSize.Width());
     336           0 :     m_pCtlPreviewOld->set_height_request(aSize.Height());
     337           0 :     m_pCtlPreviewNew->set_width_request(aSize.Width());
     338           0 :     m_pCtlPreviewNew->set_height_request(aSize.Height());
     339           0 :     get(m_pLbColorModel, "modellb");
     340           0 :     get(m_pRGB, "rgb");
     341           0 :     get(m_pR, "R");
     342           0 :     get(m_pG, "G");
     343           0 :     get(m_pB, "B");
     344           0 :     get(m_pCMYK, "cmyk");
     345           0 :     get(m_pC, "C");
     346           0 :     get(m_pY, "Y");
     347           0 :     get(m_pM, "M");
     348           0 :     get(m_pK, "K");
     349           0 :     get(m_pBtnAdd, "add");
     350           0 :     get(m_pBtnModify, "modify");
     351           0 :     get(m_pBtnWorkOn, "edit");
     352           0 :     get(m_pBtnDelete, "delete");
     353             : 
     354           0 :     m_pBoxEmbed->SetToggleHdl( LINK( this, SvxColorTabPage, EmbedToggleHdl_Impl ) );
     355             : 
     356           0 :     m_pBtnLoad->SetClickHdl( LINK( this, SvxColorTabPage, ClickLoadHdl_Impl ) );
     357           0 :     m_pBtnSave->SetClickHdl( LINK( this, SvxColorTabPage, ClickSaveHdl_Impl ) );
     358             : 
     359           0 :     SetEmbed( GetEmbed() );
     360           0 :     UpdateTableName();
     361             : 
     362             :     // this page needs ExchangeSupport
     363           0 :     SetExchangeSupport();
     364             : 
     365             :     // setting the output device
     366           0 :     rXFSet.Put( aXFStyleItem );
     367           0 :     rXFSet.Put( aXFillColorItem );
     368           0 :     m_pCtlPreviewOld->SetAttributes( aXFillAttr.GetItemSet() );
     369           0 :     m_pCtlPreviewNew->SetAttributes( aXFillAttr.GetItemSet() );
     370             : 
     371             :     // overload handler
     372             :     m_pLbColor->SetSelectHdl(
     373           0 :         LINK( this, SvxColorTabPage, SelectColorLBHdl_Impl ) );
     374             :     m_pValSetColorList->SetSelectHdl(
     375           0 :         LINK( this, SvxColorTabPage, SelectValSetHdl_Impl ) );
     376             :     m_pLbColorModel->SetSelectHdl(
     377           0 :         LINK( this, SvxColorTabPage, SelectColorModelHdl_Impl ) );
     378             : 
     379           0 :     Link aLink = LINK( this, SvxColorTabPage, ModifiedHdl_Impl );
     380           0 :     m_pR->SetModifyHdl( aLink );
     381           0 :     m_pG->SetModifyHdl( aLink );
     382           0 :     m_pB->SetModifyHdl( aLink );
     383           0 :     m_pC->SetModifyHdl( aLink );
     384           0 :     m_pY->SetModifyHdl( aLink );
     385           0 :     m_pM->SetModifyHdl( aLink );
     386           0 :     m_pK->SetModifyHdl( aLink );
     387             : 
     388           0 :     m_pBtnAdd->SetClickHdl( LINK( this, SvxColorTabPage, ClickAddHdl_Impl ) );
     389           0 :     m_pBtnModify->SetClickHdl( LINK( this, SvxColorTabPage, ClickModifyHdl_Impl ) );
     390           0 :     m_pBtnWorkOn->SetClickHdl( LINK( this, SvxColorTabPage, ClickWorkOnHdl_Impl ) );
     391           0 :     m_pBtnDelete->SetClickHdl( LINK( this, SvxColorTabPage, ClickDeleteHdl_Impl ) );
     392             : 
     393             :     // ValueSet
     394           0 :     m_pValSetColorList->SetStyle( m_pValSetColorList->GetStyle() | WB_ITEMBORDER );
     395           0 :     m_pValSetColorList->Show();
     396           0 : }
     397             : 
     398           0 : SvxColorTabPage::~SvxColorTabPage()
     399             : {
     400           0 :     delete pShadow;
     401           0 : }
     402             : 
     403             : 
     404             : 
     405           0 : void SvxColorTabPage::ImpColorCountChanged()
     406             : {
     407           0 :     if (!pColorList.is())
     408           0 :         return;
     409           0 :     m_pValSetColorList->SetColCount(m_pValSetColorList->getColumnCount());
     410             : }
     411             : 
     412             : 
     413             : 
     414           0 : void SvxColorTabPage::Construct()
     415             : {
     416           0 :     if (pColorList.is())
     417             :     {
     418           0 :         m_pLbColor->Fill(pColorList);
     419           0 :         m_pValSetColorList->addEntriesForXColorList(*pColorList);
     420           0 :         ImpColorCountChanged();
     421           0 :         UpdateTableName();
     422             :     }
     423           0 : }
     424             : 
     425             : 
     426             : 
     427           0 : void SvxColorTabPage::ActivatePage( const SfxItemSet& )
     428             : {
     429           0 :     if( nDlgType == 0 ) // area dialog
     430             :     {
     431           0 :         *pbAreaTP = false;
     432             : 
     433           0 :         if( pColorList.is() )
     434             :         {
     435           0 :             if( *pPageType == PT_COLOR && *pPos != LISTBOX_ENTRY_NOTFOUND )
     436             :             {
     437           0 :                 m_pLbColor->SelectEntryPos( *pPos );
     438           0 :                 m_pValSetColorList->SelectItem( m_pLbColor->GetSelectEntryPos() + 1 );
     439           0 :                 m_pEdtName->SetText( m_pLbColor->GetSelectEntry() );
     440           0 :                 XColorEntry* pEntry = pColorList->GetColor( *pPos );
     441           0 :                 ChangeColor(pEntry->GetColor());
     442             :             }
     443           0 :             else if( *pPageType == PT_COLOR && *pPos == LISTBOX_ENTRY_NOTFOUND )
     444             :             {
     445           0 :                 const SfxPoolItem* pPoolItem = NULL;
     446           0 :                 if( SfxItemState::SET == rOutAttrs.GetItemState( GetWhich( XATTR_FILLCOLOR ), true, &pPoolItem ) )
     447             :                 {
     448           0 :                     m_pLbColorModel->SelectEntryPos( CM_RGB );
     449             : 
     450           0 :                     ChangeColor(static_cast<const XFillColorItem*>(pPoolItem)->GetColorValue());
     451             : 
     452           0 :                     m_pEdtName->SetText( static_cast<const XFillColorItem*>( pPoolItem )->GetName() );
     453             : 
     454           0 :                     m_pR->SetValue( ColorToPercent_Impl( aCurrentColor.GetRed() ) );
     455           0 :                     m_pG->SetValue( ColorToPercent_Impl( aCurrentColor.GetGreen() ) );
     456           0 :                     m_pB->SetValue( ColorToPercent_Impl( aCurrentColor.GetBlue() ) );
     457             : 
     458             :                     // fill ItemSet and pass it on to XOut
     459           0 :                     rXFSet.Put( XFillColorItem( OUString(), aCurrentColor ) );
     460           0 :                     m_pCtlPreviewOld->SetAttributes( aXFillAttr.GetItemSet() );
     461           0 :                     m_pCtlPreviewNew->SetAttributes( aXFillAttr.GetItemSet() );
     462             : 
     463           0 :                     m_pCtlPreviewNew->Invalidate();
     464           0 :                     m_pCtlPreviewOld->Invalidate();
     465             :                 }
     466             :             }
     467             : 
     468             :             // so that the possibly changed color is discarded
     469           0 :             SelectColorLBHdl_Impl( this );
     470             : 
     471           0 :             *pPageType = PT_COLOR;
     472           0 :             *pPos = LISTBOX_ENTRY_NOTFOUND;
     473             :         }
     474             :     }
     475             :     else
     476           0 :         HideLoadSaveEmbed();
     477           0 : }
     478             : 
     479             : 
     480             : 
     481           0 : int SvxColorTabPage::DeactivatePage( SfxItemSet* _pSet )
     482             : {
     483           0 :     if ( CheckChanges_Impl() == -1L )
     484           0 :         return( KEEP_PAGE );
     485             : 
     486           0 :     if( _pSet )
     487           0 :         FillItemSet( _pSet );
     488             : 
     489           0 :     return( LEAVE_PAGE );
     490             : }
     491             : 
     492             : 
     493             : 
     494           0 : long SvxColorTabPage::CheckChanges_Impl()
     495             : {
     496             :     // used to NOT lose changes
     497           0 :     sal_Int32 nPos = m_pLbColor->GetSelectEntryPos();
     498           0 :     if( nPos != LISTBOX_ENTRY_NOTFOUND )
     499             :     {
     500           0 :         Color aColor = pColorList->GetColor( nPos )->GetColor();
     501           0 :         OUString aString = m_pLbColor->GetSelectEntry();
     502             : 
     503             :         // aNewColor, because COL_USER != COL_something, even if RGB values are the same
     504             :         // Color aNewColor( aColor.GetRed(), aColor.GetGreen(), aColor.GetBlue() );
     505             : 
     506           0 :         if( ColorToPercent_Impl( aCurrentColor.GetRed() ) != ColorToPercent_Impl( aColor.GetRed() ) ||
     507           0 :             ColorToPercent_Impl( aCurrentColor.GetGreen() ) != ColorToPercent_Impl( aColor.GetGreen() ) ||
     508           0 :             ColorToPercent_Impl( aCurrentColor.GetBlue() ) != ColorToPercent_Impl( aColor.GetBlue() ) ||
     509           0 :             aString != m_pEdtName->GetText() )
     510             :         {
     511           0 :             ResMgr& rMgr = CUI_MGR();
     512           0 :             Image aWarningBoxImage = WarningBox::GetStandardImage();
     513           0 :             boost::scoped_ptr<SvxMessDialog> aMessDlg(new SvxMessDialog(GetParentDialog(),
     514           0 :                                                         SVX_RESSTR( RID_SVXSTR_COLOR ),
     515             :                                                         ResId( RID_SVXSTR_ASK_CHANGE_COLOR, rMgr ),
     516           0 :                                                         &aWarningBoxImage ));
     517             :             aMessDlg->SetButtonText( MESS_BTN_1,
     518           0 :                                     ResId( RID_SVXSTR_CHANGE, rMgr ) );
     519             :             aMessDlg->SetButtonText( MESS_BTN_2,
     520           0 :                                     ResId( RID_SVXSTR_ADD, rMgr ) );
     521             : 
     522           0 :             short nRet = aMessDlg->Execute();
     523             : 
     524           0 :             switch( nRet )
     525             :             {
     526             :                 case RET_BTN_1:
     527             :                 {
     528           0 :                     ClickModifyHdl_Impl( this );
     529           0 :                     aColor = pColorList->GetColor( nPos )->GetColor();
     530             :                 }
     531           0 :                 break;
     532             : 
     533             :                 case RET_BTN_2:
     534             :                 {
     535           0 :                     ClickAddHdl_Impl( this );
     536           0 :                     nPos = m_pLbColor->GetSelectEntryPos();
     537           0 :                     aColor = pColorList->GetColor( nPos )->GetColor();
     538             :                 }
     539           0 :                 break;
     540             : 
     541             :                 case RET_CANCEL:
     542           0 :                 break;
     543           0 :             }
     544           0 :         }
     545             :     }
     546           0 :     if( nDlgType == 0 ) // area dialog
     547             :     {
     548           0 :         nPos = m_pLbColor->GetSelectEntryPos();
     549           0 :         if( nPos != LISTBOX_ENTRY_NOTFOUND )
     550             :         {
     551           0 :             *pPos = nPos;
     552             :         }
     553             :     }
     554           0 :     return 0;
     555             : }
     556             : 
     557             : 
     558             : 
     559           0 : bool SvxColorTabPage::FillItemSet( SfxItemSet* rSet )
     560             : {
     561           0 :     if( ( nDlgType != 0 ) ||
     562           0 :         ( *pPageType == PT_COLOR && *pbAreaTP == false ) )
     563             :     {
     564           0 :         OUString aString;
     565           0 :         Color  aColor;
     566             : 
     567           0 :         sal_Int32 nPos = m_pLbColor->GetSelectEntryPos();
     568           0 :         if( nPos != LISTBOX_ENTRY_NOTFOUND )
     569             :         {
     570           0 :             aColor  = pColorList->GetColor( nPos )->GetColor();
     571           0 :             aString = m_pLbColor->GetSelectEntry();
     572             :         }
     573             :         else
     574             :         {
     575           0 :             aColor.SetColor (aCurrentColor.GetColor());
     576             :         }
     577           0 :         rSet->Put( XFillColorItem( aString, aColor ) );
     578           0 :         rSet->Put( XFillStyleItem( drawing::FillStyle_SOLID ) );
     579             :     }
     580             : 
     581           0 :     return true;
     582             : }
     583             : 
     584           0 : void SvxColorTabPage::UpdateModified()
     585             : {
     586           0 :     bool bEnable = pColorList.is() && pColorList->Count();
     587           0 :     m_pBtnModify->Enable( bEnable );
     588           0 :     m_pBtnWorkOn->Enable( bEnable );
     589           0 :     m_pBtnDelete->Enable( bEnable );
     590           0 :     EnableSave( bEnable );
     591           0 : }
     592             : 
     593           0 : void SvxColorTabPage::Reset( const SfxItemSet* rSet )
     594             : {
     595           0 :     SfxItemState nState = rSet->GetItemState( XATTR_FILLCOLOR );
     596             : 
     597           0 :     Color aNewColor;
     598             : 
     599           0 :     if ( nState >= SfxItemState::DEFAULT )
     600             :     {
     601           0 :         XFillColorItem aColorItem( static_cast<const XFillColorItem&>(rSet->Get( XATTR_FILLCOLOR )) );
     602           0 :         aNewColor = aColorItem.GetColorValue();
     603           0 :         m_pLbColor->SelectEntry(aNewColor);
     604           0 :         m_pValSetColorList->SelectItem( m_pLbColor->GetSelectEntryPos() + 1 );
     605           0 :         m_pEdtName->SetText( m_pLbColor->GetSelectEntry() );
     606             :     }
     607             : 
     608             :     // set color model
     609           0 :     OUString aStr = GetUserData();
     610           0 :     m_pLbColorModel->SelectEntryPos( aStr.toInt32() );
     611             : 
     612           0 :     ChangeColor(aNewColor);
     613           0 :     SelectColorModelHdl_Impl( this );
     614             : 
     615           0 :     m_pCtlPreviewOld->Invalidate();
     616           0 :     UpdateModified();
     617           0 : }
     618             : 
     619             : 
     620             : 
     621           0 : SfxTabPage* SvxColorTabPage::Create( vcl::Window* pWindow,
     622             :                 const SfxItemSet* rOutAttrs )
     623             : {
     624           0 :     return( new SvxColorTabPage( pWindow, *rOutAttrs ) );
     625             : }
     626             : 
     627             : // is called when the content of the MtrFields is changed for color values
     628           0 : IMPL_LINK_NOARG(SvxColorTabPage, ModifiedHdl_Impl)
     629             : {
     630           0 :     if (eCM == CM_RGB)
     631             :     {
     632             :         // read current MtrFields, if cmyk, then k-value as transparency
     633           0 :         aCurrentColor.SetColor ( Color( (sal_uInt8)PercentToColor_Impl( (sal_uInt16) m_pR->GetValue() ),
     634           0 :                                         (sal_uInt8)PercentToColor_Impl( (sal_uInt16) m_pG->GetValue() ),
     635           0 :                                         (sal_uInt8)PercentToColor_Impl( (sal_uInt16) m_pB->GetValue() ) ).GetColor() );
     636             :     }
     637             :     else
     638             :     {
     639             :         // read current MtrFields, if cmyk, then k-value as transparency
     640           0 :         aCurrentColor.SetColor ( Color( (sal_uInt8)PercentToColor_Impl( (sal_uInt16) m_pK->GetValue() ),
     641           0 :                                         (sal_uInt8)PercentToColor_Impl( (sal_uInt16) m_pC->GetValue() ),
     642           0 :                                         (sal_uInt8)PercentToColor_Impl( (sal_uInt16) m_pY->GetValue() ),
     643           0 :                                         (sal_uInt8)PercentToColor_Impl( (sal_uInt16) m_pM->GetValue() ) ).GetColor() );
     644           0 :         ConvertColorValues (aCurrentColor, CM_RGB);
     645             :     }
     646             : 
     647           0 :     rXFSet.Put( XFillColorItem( OUString(), aCurrentColor ) );
     648           0 :     m_pCtlPreviewNew->SetAttributes( aXFillAttr.GetItemSet() );
     649             : 
     650           0 :     m_pCtlPreviewNew->Invalidate();
     651             : 
     652           0 :     return 0;
     653             : }
     654             : 
     655             : 
     656             : 
     657           0 : IMPL_LINK_NOARG(SvxColorTabPage, ClickAddHdl_Impl)
     658             : {
     659           0 :     vcl::Window *pWindow = this;
     660           0 :     while( pWindow )
     661             :     {
     662           0 :         pWindow = pWindow->GetParent();
     663             :     }
     664             : 
     665           0 :     ResMgr& rMgr = CUI_MGR();
     666           0 :     OUString aDesc( ResId( RID_SVXSTR_DESC_COLOR, rMgr ) );
     667           0 :     OUString aName( m_pEdtName->GetText() );
     668             :     XColorEntry* pEntry;
     669           0 :     long nCount = pColorList->Count();
     670           0 :     bool bDifferent = true;
     671             : 
     672             :     // check if name is already existing
     673           0 :     for ( long i = 0; i < nCount && bDifferent; i++ )
     674           0 :         if ( aName == pColorList->GetColor( i )->GetName() )
     675           0 :             bDifferent = false;
     676             : 
     677             :     // if yes, it is repeated and a new name is demanded
     678           0 :     if ( !bDifferent )
     679             :     {
     680           0 :         MessageDialog aWarningBox( GetParentDialog()
     681             :                                    ,"DuplicateNameDialog"
     682           0 :                                    ,"cui/ui/queryduplicatedialog.ui");
     683           0 :         aWarningBox.Execute();
     684             : 
     685           0 :         SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create();
     686           0 :         boost::scoped_ptr<AbstractSvxNameDialog> pDlg(pFact->CreateSvxNameDialog( GetParentDialog(), aName, aDesc ));
     687           0 :         bool bLoop = true;
     688             : 
     689           0 :         while ( !bDifferent && bLoop && pDlg->Execute() == RET_OK )
     690             :         {
     691           0 :             pDlg->GetName( aName );
     692           0 :             bDifferent = true;
     693             : 
     694           0 :             for( long i = 0; i < nCount && bDifferent; i++ )
     695             :             {
     696           0 :                 if( aName == pColorList->GetColor( i )->GetName() )
     697           0 :                     bDifferent = false;
     698             :             }
     699             : 
     700           0 :             if( bDifferent )
     701           0 :                 bLoop = false;
     702             :             else
     703           0 :                 aWarningBox.Execute();
     704           0 :         }
     705             :     }
     706             : 
     707             :     // if not existing the entry is entered
     708           0 :     if( bDifferent )
     709             :     {
     710           0 :         pEntry = new XColorEntry( aCurrentColor, aName );
     711             : 
     712           0 :         pColorList->Insert( pEntry, pColorList->Count() );
     713             : 
     714           0 :         m_pLbColor->Append( *pEntry );
     715           0 :         m_pValSetColorList->InsertItem( m_pValSetColorList->GetItemCount() + 1, pEntry->GetColor(), pEntry->GetName() );
     716           0 :         ImpColorCountChanged();
     717             : 
     718           0 :         m_pLbColor->SelectEntryPos( m_pLbColor->GetEntryCount() - 1 );
     719             : 
     720           0 :         *pnColorListState |= CT_MODIFIED;
     721             : 
     722           0 :         SelectColorLBHdl_Impl( this );
     723             :     }
     724           0 :     UpdateModified();
     725             : 
     726           0 :     return 0;
     727             : }
     728             : 
     729             : 
     730             : 
     731           0 : IMPL_LINK_NOARG(SvxColorTabPage, ClickModifyHdl_Impl)
     732             : {
     733           0 :     sal_Int32 nPos = m_pLbColor->GetSelectEntryPos();
     734             : 
     735           0 :     if( nPos != LISTBOX_ENTRY_NOTFOUND )
     736             :     {
     737           0 :         ResMgr& rMgr = CUI_MGR();
     738           0 :         OUString aDesc( ResId( RID_SVXSTR_DESC_COLOR, rMgr ) );
     739           0 :         OUString aName( m_pEdtName->GetText() );
     740           0 :         long nCount = pColorList->Count();
     741           0 :         bool bDifferent = true;
     742             : 
     743             :         // check if name is already existing
     744           0 :         for ( long i = 0; i < nCount && bDifferent; i++ )
     745           0 :             if ( aName == pColorList->GetColor( i )->GetName() && nPos != i )
     746           0 :                 bDifferent = false;
     747             : 
     748             :         // if yes, it is repeated and a new name is demanded
     749           0 :         if ( !bDifferent )
     750             :         {
     751           0 :             MessageDialog aWarningBox( GetParentDialog()
     752             :                                       ,"DuplicateNameDialog"
     753           0 :                                       ,"cui/ui/queryduplicatedialog.ui");
     754           0 :             aWarningBox.Execute();
     755             : 
     756           0 :             SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create();
     757           0 :             boost::scoped_ptr<AbstractSvxNameDialog> pDlg(pFact->CreateSvxNameDialog( GetParentDialog(), aName, aDesc ));
     758           0 :             bool bLoop = true;
     759             : 
     760           0 :             while ( !bDifferent && bLoop && pDlg->Execute() == RET_OK )
     761             :             {
     762           0 :                 pDlg->GetName( aName );
     763           0 :                 bDifferent = true;
     764             : 
     765           0 :                 for ( long i = 0; i < nCount && bDifferent; i++ )
     766           0 :                     if( aName == pColorList->GetColor( i )->GetName() && nPos != i )
     767           0 :                         bDifferent = false;
     768             : 
     769           0 :                 if( bDifferent )
     770           0 :                     bLoop = false;
     771             :                 else
     772           0 :                     aWarningBox.Execute();
     773           0 :             }
     774             :         }
     775             : 
     776             :         // if not existing the entry is entered
     777           0 :         if( bDifferent )
     778             :         {
     779             :             // #123497# Need to replace the existing entry with a new one (old returned needs to be deleted)
     780           0 :             XColorEntry* pEntry = new XColorEntry(aCurrentColor, aName);
     781           0 :             delete pColorList->Replace(pEntry, nPos);
     782             : 
     783           0 :             m_pLbColor->Modify( *pEntry, nPos );
     784           0 :             m_pLbColor->SelectEntryPos( nPos );
     785             : 
     786           0 :             m_pValSetColorList->SetItemColor( nPos + 1, pEntry->GetColor() );
     787           0 :             m_pValSetColorList->SetItemText( nPos + 1, pEntry->GetName() );
     788           0 :             m_pEdtName->SetText( aName );
     789             : 
     790           0 :             m_pCtlPreviewOld->Invalidate();
     791             : 
     792           0 :             *pnColorListState |= CT_MODIFIED;
     793           0 :         }
     794             :     }
     795           0 :     return 0;
     796             : }
     797             : 
     798             : 
     799             : 
     800           0 : IMPL_LINK_NOARG(SvxColorTabPage, ClickWorkOnHdl_Impl)
     801             : {
     802           0 :     boost::scoped_ptr<SvColorDialog> pColorDlg(new SvColorDialog( GetParentDialog() ));
     803             : 
     804           0 :     pColorDlg->SetColor (aCurrentColor);
     805           0 :     pColorDlg->SetMode( svtools::ColorPickerMode_MODIFY );
     806             : 
     807           0 :     if( pColorDlg->Execute() == RET_OK )
     808             :     {
     809           0 :         sal_uInt16 nK = 0;
     810           0 :         Color aPreviewColor = pColorDlg->GetColor();
     811           0 :         aCurrentColor = aPreviewColor;
     812           0 :         if (eCM != CM_RGB)
     813             :         {
     814           0 :             ConvertColorValues (aCurrentColor, eCM);
     815           0 :             m_pC->SetValue( ColorToPercent_Impl( aCurrentColor.GetRed() ) );
     816           0 :             m_pY->SetValue( ColorToPercent_Impl( aCurrentColor.GetGreen() ) );
     817           0 :             m_pM->SetValue( ColorToPercent_Impl( aCurrentColor.GetBlue() ) );
     818           0 :             m_pK->SetValue( ColorToPercent_Impl( nK ) );
     819           0 :             ConvertColorValues (aCurrentColor, CM_RGB);
     820             :         }
     821             :         else
     822             :         {
     823           0 :             m_pR->SetValue( ColorToPercent_Impl( aCurrentColor.GetRed() ) );
     824           0 :             m_pG->SetValue( ColorToPercent_Impl( aCurrentColor.GetGreen() ) );
     825           0 :             m_pB->SetValue( ColorToPercent_Impl( aCurrentColor.GetBlue() ) );
     826             :         }
     827             : 
     828             :         // fill ItemSet and pass it on to XOut
     829           0 :         rXFSet.Put( XFillColorItem( OUString(), aPreviewColor ) );
     830             :         //m_pCtlPreviewOld->SetAttributes( aXFillAttr );
     831           0 :         m_pCtlPreviewNew->SetAttributes( aXFillAttr.GetItemSet() );
     832             : 
     833           0 :         m_pCtlPreviewNew->Invalidate();
     834             :     }
     835             : 
     836           0 :     return 0;
     837             : }
     838             : 
     839             : 
     840             : 
     841           0 : IMPL_LINK_NOARG(SvxColorTabPage, ClickDeleteHdl_Impl)
     842             : {
     843           0 :     sal_Int32 nPos = m_pLbColor->GetSelectEntryPos();
     844             : 
     845           0 :     if( nPos != LISTBOX_ENTRY_NOTFOUND )
     846             :     {
     847           0 :         MessageDialog aQueryBox( GetParentDialog(),"AskDelColorDialog","cui/ui/querydeletecolordialog.ui");
     848             : 
     849           0 :         if( aQueryBox.Execute() == RET_YES )
     850             :         {
     851           0 :             XColorEntry* pEntry = pColorList->Remove( nPos );
     852             :             DBG_ASSERT( pEntry, "ColorEntry not found !" );
     853           0 :             delete pEntry;
     854             : 
     855             :             // update Listbox and ValueSet
     856           0 :             m_pLbColor->RemoveEntry( nPos );
     857           0 :             m_pValSetColorList->Clear();
     858           0 :             m_pValSetColorList->addEntriesForXColorList(*pColorList);
     859           0 :             ImpColorCountChanged();
     860             :             //FillValueSet_Impl(*m_pValSetColorList);
     861             : 
     862             :             // positioning
     863           0 :             m_pLbColor->SelectEntryPos( nPos );
     864           0 :             SelectColorLBHdl_Impl( this );
     865             : 
     866           0 :             m_pCtlPreviewOld->Invalidate();
     867             : 
     868           0 :             *pnColorListState |= CT_MODIFIED;
     869           0 :         }
     870             :     }
     871           0 :     UpdateModified();
     872             : 
     873           0 :     return 0;
     874             : }
     875             : 
     876             : 
     877             : 
     878           0 : IMPL_LINK_NOARG(SvxColorTabPage, SelectColorLBHdl_Impl)
     879             : {
     880           0 :     sal_Int32 nPos = m_pLbColor->GetSelectEntryPos();
     881           0 :     if( nPos != LISTBOX_ENTRY_NOTFOUND )
     882             :     {
     883           0 :         m_pValSetColorList->SelectItem( nPos + 1 );
     884           0 :         m_pEdtName->SetText( m_pLbColor->GetSelectEntry() );
     885             : 
     886             :         rXFSet.Put( XFillColorItem( OUString(),
     887           0 :                                     m_pLbColor->GetSelectEntryColor() ) );
     888           0 :         m_pCtlPreviewOld->SetAttributes( aXFillAttr.GetItemSet() );
     889           0 :         m_pCtlPreviewNew->SetAttributes( aXFillAttr.GetItemSet() );
     890             : 
     891           0 :         m_pCtlPreviewOld->Invalidate();
     892           0 :         m_pCtlPreviewNew->Invalidate();
     893             : 
     894           0 :         XColorEntry* pEntry = pColorList->GetColor(nPos);
     895           0 :         ChangeColor(pEntry->GetColor());
     896             :     }
     897           0 :     return 0;
     898             : }
     899             : 
     900             : 
     901             : 
     902           0 : IMPL_LINK_NOARG(SvxColorTabPage, SelectValSetHdl_Impl)
     903             : {
     904           0 :     sal_Int32 nPos = m_pValSetColorList->GetSelectItemId();
     905           0 :     if( nPos != LISTBOX_ENTRY_NOTFOUND )
     906             :     {
     907           0 :         m_pLbColor->SelectEntryPos( nPos - 1 );
     908           0 :         m_pEdtName->SetText( m_pLbColor->GetSelectEntry() );
     909             : 
     910             :         rXFSet.Put( XFillColorItem( OUString(),
     911           0 :                                     m_pLbColor->GetSelectEntryColor() ) );
     912           0 :         m_pCtlPreviewOld->SetAttributes( aXFillAttr.GetItemSet() );
     913           0 :         m_pCtlPreviewNew->SetAttributes( aXFillAttr.GetItemSet() );
     914             : 
     915           0 :         m_pCtlPreviewOld->Invalidate();
     916           0 :         m_pCtlPreviewNew->Invalidate();
     917             : 
     918           0 :         XColorEntry* pEntry = pColorList->GetColor(nPos-1);
     919           0 :         ChangeColor(pEntry->GetColor());
     920             :     }
     921           0 :     return 0;
     922             : }
     923             : 
     924             : 
     925             : 
     926           0 : void SvxColorTabPage::ConvertColorValues (Color& rColor, ColorModel eModell)
     927             : {
     928           0 :     switch (eModell)
     929             :     {
     930             :         case CM_RGB:
     931             :         {
     932           0 :             CmykToRgb_Impl (rColor, (sal_uInt16)rColor.GetTransparency() );
     933           0 :             rColor.SetTransparency ((sal_uInt8) 0);
     934             :         }
     935           0 :         break;
     936             : 
     937             :         case CM_CMYK:
     938             :         {
     939             :             sal_uInt16 nK;
     940           0 :             RgbToCmyk_Impl (rColor, nK );
     941           0 :             rColor.SetTransparency ((sal_uInt8) nK);
     942             :         }
     943           0 :         break;
     944             :     }
     945           0 : }
     946             : 
     947           0 : IMPL_LINK_NOARG(SvxColorTabPage, SelectColorModelHdl_Impl)
     948             : {
     949           0 :     int nPos = m_pLbColorModel->GetSelectEntryPos();
     950           0 :     if( nPos != LISTBOX_ENTRY_NOTFOUND )
     951             :     {
     952           0 :         eCM = (ColorModel) nPos;
     953             : 
     954           0 :         switch( eCM )
     955             :         {
     956             :             case CM_RGB:
     957             :             {
     958           0 :                 m_pRGB->Show();
     959           0 :                 m_pCMYK->Hide();
     960             : 
     961             :             }
     962           0 :             break;
     963             : 
     964             :             case CM_CMYK:
     965             :             {
     966           0 :                 m_pCMYK->Show();
     967           0 :                 m_pRGB->Hide();
     968             :             }
     969           0 :             break;
     970             :         }
     971             : 
     972           0 :         ChangeColor(aCurrentColor);
     973             : 
     974             :     }
     975             : 
     976           0 :     return 0;
     977             : }
     978             : 
     979             : 
     980             : 
     981           0 : void SvxColorTabPage::ChangeColor(const Color &rNewColor)
     982             : {
     983           0 :     aCurrentColor = rNewColor;
     984           0 :     if (eCM != CM_RGB)
     985             :     {
     986           0 :         ConvertColorValues (aCurrentColor, eCM);
     987           0 :         m_pC->SetValue( ColorToPercent_Impl( aCurrentColor.GetRed() ) );
     988           0 :         m_pY->SetValue( ColorToPercent_Impl( aCurrentColor.GetGreen() ) );
     989           0 :         m_pM->SetValue( ColorToPercent_Impl( aCurrentColor.GetBlue() ) );
     990           0 :         m_pK->SetValue( ColorToPercent_Impl( aCurrentColor.GetTransparency() ) );
     991           0 :         ConvertColorValues (aCurrentColor, CM_RGB);
     992             :     }
     993             :     else
     994             :     {
     995           0 :         m_pR->SetValue( ColorToPercent_Impl( aCurrentColor.GetRed() ) );
     996           0 :         m_pG->SetValue( ColorToPercent_Impl( aCurrentColor.GetGreen() ) );
     997           0 :         m_pB->SetValue( ColorToPercent_Impl( aCurrentColor.GetBlue() ) );
     998             :     }
     999             : 
    1000             :     // fill ItemSet and pass it on to XOut
    1001           0 :     rXFSet.Put( XFillColorItem( OUString(), aCurrentColor ) );
    1002           0 :     m_pCtlPreviewOld->SetAttributes( aXFillAttr.GetItemSet() );
    1003           0 :     m_pCtlPreviewNew->SetAttributes( aXFillAttr.GetItemSet() );
    1004             : 
    1005           0 :     m_pCtlPreviewNew->Invalidate();
    1006           0 : }
    1007             : 
    1008             : 
    1009             : 
    1010             : //void SvxColorTabPage::FillValueSet_Impl( ValueSet& rVs )
    1011             : //{
    1012             : //    long nCount = pColorList->Count();
    1013             : //    XColorEntry* pColorEntry;
    1014             : 
    1015             : //    if( nCount > 104 )
    1016             : //        rVs.SetStyle( rVs.GetStyle() | WB_VSCROLL );
    1017             : 
    1018             : //    for( long i = 0; i < nCount; i++ )
    1019             : //    {
    1020             : //        pColorEntry = pColorList->GetColor( i );
    1021             : //        rVs.InsertItem( i + 1, pColorEntry->GetColor(), pColorEntry->GetName() );
    1022             : //    }
    1023             : //}
    1024             : 
    1025             : 
    1026             : 
    1027             : // A RGB value is converted to a CMYK value - not in an ideal way as
    1028             : // R is converted into C, G into M and B into Y. The K value is held in an
    1029             : // extra variable. For further color models one should develop own
    1030             : // classes which should contain the respective casts.
    1031             : 
    1032           0 : void SvxColorTabPage::RgbToCmyk_Impl( Color& rColor, sal_uInt16& rK )
    1033             : {
    1034           0 :     sal_uInt16 const nColor1 = 255 - rColor.GetRed();
    1035           0 :     sal_uInt16 const nColor2 = 255 - rColor.GetGreen();
    1036           0 :     sal_uInt16 const nColor3 = 255 - rColor.GetBlue();
    1037             : 
    1038           0 :     rK = std::min( std::min( nColor1, nColor2 ), nColor3 );
    1039             : 
    1040           0 :     rColor.SetRed( sal::static_int_cast< sal_uInt8 >( nColor1 - rK ) );
    1041           0 :     rColor.SetGreen( sal::static_int_cast< sal_uInt8 >( nColor2 - rK ) );
    1042           0 :     rColor.SetBlue( sal::static_int_cast< sal_uInt8 >( nColor3 - rK ) );
    1043           0 : }
    1044             : 
    1045             : 
    1046             : 
    1047             : // reverse case to RgbToCmyk_Impl (see above)
    1048             : 
    1049           0 : void SvxColorTabPage::CmykToRgb_Impl( Color& rColor, const sal_uInt16 nK )
    1050             : {
    1051             :     long lTemp;
    1052             : 
    1053           0 :     lTemp = 255 - ( rColor.GetRed() + nK );
    1054             : 
    1055           0 :     if( lTemp < 0L )
    1056           0 :         lTemp = 0L;
    1057           0 :     rColor.SetRed( (sal_uInt8)lTemp );
    1058             : 
    1059           0 :     lTemp = 255 - ( rColor.GetGreen() + nK );
    1060             : 
    1061           0 :     if( lTemp < 0L )
    1062           0 :         lTemp = 0L;
    1063           0 :     rColor.SetGreen( (sal_uInt8)lTemp );
    1064             : 
    1065           0 :     lTemp = 255 - ( rColor.GetBlue() + nK );
    1066             : 
    1067           0 :     if( lTemp < 0L )
    1068           0 :         lTemp = 0L;
    1069           0 :     rColor.SetBlue( (sal_uInt8)lTemp );
    1070           0 : }
    1071             : 
    1072             : 
    1073             : 
    1074           0 : sal_uInt16 SvxColorTabPage::ColorToPercent_Impl( sal_uInt16 nColor )
    1075             : {
    1076           0 :     sal_uInt16 nWert = 0;
    1077             : 
    1078           0 :     switch (eCM)
    1079             :     {
    1080             :         case CM_RGB :
    1081           0 :             nWert = nColor;
    1082           0 :             break;
    1083             : 
    1084             :         case CM_CMYK:
    1085           0 :             nWert = (sal_uInt16) ( (double) nColor * 100.0 / 255.0 + 0.5 );
    1086           0 :             break;
    1087             :     }
    1088             : 
    1089           0 :     return ( nWert );
    1090             : }
    1091             : 
    1092             : 
    1093             : 
    1094           0 : sal_uInt16 SvxColorTabPage::PercentToColor_Impl( sal_uInt16 nPercent )
    1095             : {
    1096           0 :     sal_uInt16 nWert = 0;
    1097             : 
    1098           0 :     switch (eCM)
    1099             :     {
    1100             :         case CM_RGB :
    1101           0 :             nWert = nPercent;
    1102           0 :             break;
    1103             : 
    1104             :         case CM_CMYK:
    1105           0 :             nWert = (sal_uInt16) ( (double) nPercent * 255.0 / 100.0 + 0.5 );
    1106           0 :             break;
    1107             :     }
    1108             : 
    1109           0 :     return ( nWert );
    1110             : }
    1111             : 
    1112             : 
    1113             : 
    1114           0 : void SvxColorTabPage::FillUserData()
    1115             : {
    1116             :     // the color model is saved in the Ini-file
    1117           0 :     SetUserData( OUString::number( eCM ) );
    1118           0 : }
    1119             : 
    1120             : 
    1121             : 
    1122           0 : void SvxColorTabPage::SetupForViewFrame( SfxViewFrame *pViewFrame )
    1123             : {
    1124           0 :     const OfaRefItem<XColorList> *pPtr = NULL;
    1125           0 :     if ( pViewFrame != NULL && pViewFrame->GetDispatcher() )
    1126             :         pPtr = static_cast<const OfaRefItem<XColorList> *>(pViewFrame->
    1127             :             GetDispatcher()->Execute( SID_GET_COLORLIST,
    1128           0 :                                       SfxCallMode::SYNCHRON ));
    1129           0 :     pColorList = pPtr ? pPtr->GetValue() : XColorList::GetStdColorList();
    1130             : 
    1131           0 :     SetPageType( &pShadow->nUnknownType );
    1132           0 :     SetDlgType( COLORPAGE_UNKNOWN );
    1133           0 :     SetPos( &pShadow->nUnknownPos );
    1134           0 :     SetAreaTP( &pShadow->bIsAreaTP );
    1135           0 :     SetColorChgd( (ChangeType*)&pShadow->nChangeType );
    1136           0 :     Construct();
    1137           0 : }
    1138             : 
    1139           0 : void SvxColorTabPage::SaveToViewFrame( SfxViewFrame *pViewFrame )
    1140             : {
    1141           0 :     if( !pColorList.is() )
    1142           0 :         return;
    1143             : 
    1144           0 :     pColorList->Save();
    1145             : 
    1146           0 :     if( !pViewFrame )
    1147           0 :         return;
    1148             : 
    1149             :     // notify current viewframe that it uses the same color table
    1150           0 :     if ( !pViewFrame->GetDispatcher() )
    1151           0 :         return;
    1152             : 
    1153             :     const OfaRefItem<XColorList> * pPtr;
    1154           0 :     pPtr = static_cast<const OfaRefItem<XColorList>*>(pViewFrame->GetDispatcher()->Execute( SID_GET_COLORLIST, SfxCallMode::SYNCHRON ));
    1155           0 :     if( pPtr )
    1156             :     {
    1157           0 :         XColorListRef pReference = pPtr->GetValue();
    1158             : 
    1159           0 :         if( pReference.is() &&
    1160           0 :             pReference->GetPath() == pColorList->GetPath() &&
    1161           0 :             pReference->GetName() == pColorList->GetName() )
    1162           0 :             SfxObjectShell::Current()->PutItem( SvxColorListItem( pColorList,
    1163           0 :                                                                   SID_COLOR_TABLE ) );
    1164             :     }
    1165             : }
    1166             : 
    1167           0 : void SvxColorTabPage::SetPropertyList( XPropertyListType t, const XPropertyListRef &xRef )
    1168             : {
    1169             :     (void) t;
    1170             :     OSL_ASSERT( t == XCOLOR_LIST );
    1171           0 :     pColorList = XColorListRef( static_cast<XColorList *>(xRef.get() ) );
    1172           0 : }
    1173             : 
    1174           0 : void SvxColorTabPage::SetColorList( XColorListRef pColList )
    1175             : {
    1176           0 :     SetPropertyList( XCOLOR_LIST, XPropertyListRef( ( pColList.get() ) ) );
    1177           0 : }
    1178             : 
    1179           0 : XPropertyListRef SvxColorTabPage::GetPropertyList( XPropertyListType t )
    1180             : {
    1181             :     (void) t;
    1182             :     OSL_ASSERT( t == XCOLOR_LIST );
    1183           0 :     return XPropertyListRef( pColorList.get() );
    1184           0 : }
    1185             : 
    1186             : 
    1187             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
    1188             : 

Generated by: LCOV version 1.10