1 /************************************************************** 2 * 3 * Licensed to the Apache Software Foundation (ASF) under one 4 * or more contributor license agreements. See the NOTICE file 5 * distributed with this work for additional information 6 * regarding copyright ownership. The ASF licenses this file 7 * to you under the Apache License, Version 2.0 (the 8 * "License"); you may not use this file except in compliance 9 * with the License. You may obtain a copy of the License at 10 * 11 * http://www.apache.org/licenses/LICENSE-2.0 12 * 13 * Unless required by applicable law or agreed to in writing, 14 * software distributed under the License is distributed on an 15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16 * KIND, either express or implied. See the License for the 17 * specific language governing permissions and limitations 18 * under the License. 19 * 20 *************************************************************/ 21 22 23 24 // MARKER(update_precomp.py): autogen include statement, do not remove 25 #include "precompiled_svx.hxx" 26 #include "svx/fontlb.hxx" 27 #include <vcl/svapp.hxx> 28 29 // ============================================================================ 30 31 DBG_NAME( SvLBoxFontString ); 32 33 SvLBoxFontString::SvLBoxFontString() : 34 SvLBoxString() 35 { 36 DBG_CTOR( SvLBoxFontString, 0 ); 37 } 38 39 SvLBoxFontString::SvLBoxFontString( 40 SvLBoxEntry* pEntry, sal_uInt16 nFlags, const XubString& rString, 41 const Font& rFont, const Color* pColor ) : 42 SvLBoxString( pEntry, nFlags, rString ), 43 maFont( rFont ), 44 mbUseColor( pColor != NULL ) 45 { 46 DBG_CTOR( SvLBoxFontString, 0 ); 47 SetText( pEntry, rString ); 48 if( pColor ) 49 maFont.SetColor( *pColor ); 50 } 51 52 SvLBoxFontString::~SvLBoxFontString() 53 { 54 DBG_DTOR( SvLBoxFontString, 0 ); 55 } 56 57 58 SvLBoxItem* SvLBoxFontString::Create() const 59 { 60 DBG_CHKTHIS( SvLBoxFontString, 0 ); 61 return new SvLBoxFontString; 62 } 63 64 void SvLBoxFontString::Paint( const Point& rPos, SvLBox& rDev, sal_uInt16 nFlags, SvLBoxEntry* pEntry ) 65 { 66 DBG_CHKTHIS( SvLBoxFontString, 0 ); 67 Font aOldFont( rDev.GetFont() ); 68 Font aNewFont( maFont ); 69 bool bSel = (nFlags & SVLISTENTRYFLAG_SELECTED) != 0; 70 // if( !mbUseColor ) // selection gets font color, if available 71 if( !mbUseColor || bSel ) // selection always gets highlight color 72 { 73 const StyleSettings& rSett = Application::GetSettings().GetStyleSettings(); 74 aNewFont.SetColor( bSel ? rSett.GetHighlightTextColor() : rSett.GetFieldTextColor() ); 75 } 76 77 rDev.SetFont( aNewFont ); 78 SvLBoxString::Paint( rPos, rDev, nFlags, pEntry ); 79 rDev.SetFont( aOldFont ); 80 } 81 82 void SvLBoxFontString::InitViewData( SvLBox* pView, SvLBoxEntry* pEntry, SvViewDataItem* pViewData ) 83 { 84 DBG_CHKTHIS( SvLBoxFontString, 0 ); 85 Font aOldFont( pView->GetFont() ); 86 pView->SetFont( maFont ); 87 SvLBoxString::InitViewData( pView, pEntry, pViewData); 88 pView->SetFont( aOldFont ); 89 } 90 91 92 // ============================================================================ 93 94 SvxFontListBox::SvxFontListBox( Window* pParent, const ResId& rResId ) : 95 SvTabListBox( pParent, rResId ), 96 maStdFont( GetFont() ), 97 mbUseFont( false ) 98 { 99 maStdFont.SetTransparent( sal_True ); 100 maEntryFont = maStdFont; 101 } 102 103 void SvxFontListBox::InsertFontEntry( const String& rString, const Font& rFont, const Color* pColor ) 104 { 105 mbUseFont = true; // InitEntry() will use maEntryFont 106 maEntryFont = rFont; // font to use in InitEntry() over InsertEntry() 107 mpEntryColor = pColor; // color to use in InitEntry() over InsertEntry() 108 InsertEntry( rString ); 109 mbUseFont = false; 110 } 111 112 void SvxFontListBox::SelectEntryPos( sal_uInt16 nPos, bool bSelect ) 113 { 114 SvLBoxEntry* pEntry = GetEntry( nPos ); 115 if( pEntry ) 116 { 117 Select( pEntry, bSelect ); 118 ShowEntry( pEntry ); 119 } 120 } 121 122 void SvxFontListBox::SetNoSelection() 123 { 124 SelectAll( sal_False, sal_True ); 125 } 126 127 sal_uLong SvxFontListBox::GetSelectEntryPos() const 128 { 129 SvLBoxEntry* pSvLBoxEntry = FirstSelected(); 130 return pSvLBoxEntry ? GetModel()->GetAbsPos( pSvLBoxEntry ) : LIST_APPEND; 131 } 132 133 XubString SvxFontListBox::GetSelectEntry() const 134 { 135 return GetEntryText( GetSelectEntryPos() ); 136 } 137 138 void SvxFontListBox::InitEntry( 139 SvLBoxEntry* pEntry, const XubString& rEntryText, 140 const Image& rCollImg, const Image& rExpImg, 141 SvLBoxButtonKind eButtonKind ) 142 { 143 if( mbUseFont ) 144 { 145 if( nTreeFlags & TREEFLAG_CHKBTN ) 146 pEntry->AddItem( new SvLBoxButton( pEntry, eButtonKind, 0, 147 pCheckButtonData ) ); 148 pEntry->AddItem( new SvLBoxContextBmp( pEntry, 0, rCollImg, rExpImg, SVLISTENTRYFLAG_EXPANDED ) ); 149 pEntry->AddItem( new SvLBoxFontString( pEntry, 0, rEntryText, maEntryFont, mpEntryColor ) ); 150 } 151 else 152 SvTreeListBox::InitEntry( pEntry, rEntryText, rCollImg, rExpImg, 153 eButtonKind ); 154 } 155 156 #if ENABLE_LAYOUT 157 158 namespace layout 159 { 160 161 SvxFontListBox::~SvxFontListBox () 162 { 163 } 164 165 sal_uInt16 SvxFontListBox::InsertFontEntry (String const& entry, Font const&, Color const*) 166 { 167 return InsertEntry (entry); 168 } 169 170 SvxFontListBox::SvxFontListBox( Context* pParent, const char* pFile) 171 : ListBox( pParent, pFile ) 172 { 173 } 174 175 /*IMPL_IMPL (SvxFontListBox, ListBox); 176 IMPL_CONSTRUCTORS (SvxFontListBox, ListBox, "svxfontlistbox"); 177 IMPL_GET_IMPL (SvxFontListBox); 178 IMPL_GET_WINDOW (SvxFontListBox);*/ 179 180 }; 181 182 #endif 183 184 // ============================================================================ 185 186