summaryrefslogtreecommitdiffstats
path: root/padmin/source/fontentry.cxx
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2012-01-11 11:42:25 +0000
committerCaolán McNamara <caolanm@redhat.com>2012-01-11 14:13:32 +0000
commit6eddd1b54cb6fc21cdc6883eee708d1247d15f9d (patch)
tree47d78be7322dbd8771a0206ffee66c4a0c137b55 /padmin/source/fontentry.cxx
parentadapt findFontFileID to know about multiple font faces in a font file (diff)
downloadcore-6eddd1b54cb6fc21cdc6883eee708d1247d15f9d.tar.gz
core-6eddd1b54cb6fc21cdc6883eee708d1247d15f9d.zip
further shrinkage of padmin non-fontconfig code-paths
Diffstat (limited to 'padmin/source/fontentry.cxx')
-rw-r--r--padmin/source/fontentry.cxx590
1 files changed, 0 insertions, 590 deletions
diff --git a/padmin/source/fontentry.cxx b/padmin/source/fontentry.cxx
deleted file mode 100644
index f26283c04260..000000000000
--- a/padmin/source/fontentry.cxx
+++ /dev/null
@@ -1,590 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#include "fontentry.hxx"
-#include "helper.hxx"
-#include "padialog.hrc"
-#include "vcl/strhelper.hxx"
-
-#include "vcl/msgbox.hxx"
-#include "vcl/fontmanager.hxx"
-
-#include "osl/thread.h"
-
-#include "tools/config.hxx"
-
-using namespace padmin;
-using namespace osl;
-using namespace psp;
-
-using ::rtl::OUString;
-using ::rtl::OUStringHash;
-using ::rtl::OUStringToOString;
-using ::rtl::OString;
-using ::rtl::OStringHash;
-
-FontNameDlg::FontNameDlg( Window *pParent ) :
- ModalDialog( pParent, PaResId( RID_FONTNAMEDIALOG ) ),
- m_aOKButton( this, PaResId( RID_FNTNM_BTN_OK ) ),
- m_aRenameButton( this, PaResId( RID_FNTNM_BTN_RENAME ) ),
- m_aRemoveButton( this, PaResId( RID_FNTNM_BTN_REMOVE ) ),
- m_aImportButton( this, PaResId( RID_FNTNM_BTN_IMPORT ) ),
- m_aFontBox( this, PaResId( RID_FNTNM_LB_FONTS ) ),
- m_aFixedText( this, PaResId( RID_FNTNM_FIXED ) ),
- m_aRenameString( PaResId( RID_FNTNM_STR_RENAME ) ),
- m_aRenameTTCString( PaResId( RID_FNTNM_STR_TTCRENAME ) ),
- m_aNoRenameString( PaResId( RID_FNTNM_STR_NOTRENAMABLE ) ),
- m_rFontManager( PrintFontManager::get() )
-{
- FreeResource();
-
- m_aFontBox.EnableMultiSelection( sal_True );
-
- m_aOKButton.SetClickHdl( LINK( this, FontNameDlg, ClickBtnHdl ) );
- m_aRenameButton.SetClickHdl( LINK( this, FontNameDlg, ClickBtnHdl ) );
- m_aRemoveButton.SetClickHdl( LINK( this, FontNameDlg, ClickBtnHdl ) );
- m_aImportButton.SetClickHdl( LINK( this, FontNameDlg, ClickBtnHdl ) );
- m_aFontBox.setDelPressedLink( LINK( this, FontNameDlg, DelPressedHdl ) );
- m_aFontBox.SetSelectHdl( LINK( this, FontNameDlg, SelectHdl ) );
-
- init();
-}
-
-FontNameDlg::~FontNameDlg()
-{
-}
-
-String FontNameDlg::fillFontEntry( FastPrintFontInfo& rInfo, const String& rFile, bool bAddRegular )
-{
- static String aThinTxt( PaResId( RID_TXT_FONT_THIN ) );
- static String aUltraLightTxt( PaResId( RID_TXT_FONT_ULTRALIGHT ) );
- static String aLightTxt( PaResId( RID_TXT_FONT_LIGHT ) );
- static String aSemiLightTxt( PaResId( RID_TXT_FONT_SEMILIGHT ) );
- static String aSemiBoldTxt( PaResId( RID_TXT_FONT_SEMIBOLD ) );
- static String aBoldTxt( PaResId( RID_TXT_FONT_BOLD ) );
- static String aUltraBoldTxt( PaResId( RID_TXT_FONT_ULTRABOLD ) );
-
- static String aItalicTxt( PaResId( RID_TXT_FONT_ITALIC ) );
- static String aObliqueTxt( PaResId( RID_TXT_FONT_OBLIQUE ) );
-
- static String aUltraCondensedTxt( PaResId( RID_TXT_FONT_ULTRACONDENSED ) );
- static String aExtraCondensedTxt( PaResId( RID_TXT_FONT_EXTRACONDENSED ) );
- static String aCondensedTxt( PaResId( RID_TXT_FONT_CONDENSED ) );
- static String aSemiCondensedTxt( PaResId( RID_TXT_FONT_SEMICONDENSED ) );
- static String aSemiExpandedTxt( PaResId( RID_TXT_FONT_SEMIEXPANDED ) );
- static String aExpandedTxt( PaResId( RID_TXT_FONT_EXPANDED ) );
- static String aExtraExpandedTxt( PaResId( RID_TXT_FONT_EXTRAEXPANDED ) );
- static String aUltraExpandedTxt( PaResId( RID_TXT_FONT_ULTRAEXPANDED ) );
-
- static String aRegularTxt( PaResId( RID_TXT_FONT_REGULAR ) );
-
- String aEntry( rInfo.m_aFamilyName );
- bool bWeight = true, bItalic = true, bWidth = true;
- switch( rInfo.m_eWeight )
- {
- case WEIGHT_THIN: aEntry.AppendAscii( ", " ); aEntry.Append( aThinTxt ); break;
- case WEIGHT_ULTRALIGHT: aEntry.AppendAscii( ", " ); aEntry.Append( aUltraLightTxt ); break;
- case WEIGHT_LIGHT: aEntry.AppendAscii( ", " ); aEntry.Append( aLightTxt ); break;
- case WEIGHT_SEMILIGHT: aEntry.AppendAscii( ", " ); aEntry.Append( aSemiLightTxt ); break;
- case WEIGHT_SEMIBOLD: aEntry.AppendAscii( ", " ); aEntry.Append( aSemiBoldTxt ); break;
- case WEIGHT_BOLD: aEntry.AppendAscii( ", " ); aEntry.Append( aBoldTxt ); break;
- case WEIGHT_ULTRABOLD: aEntry.AppendAscii( ", " ); aEntry.Append( aUltraBoldTxt ); break;
- default:
- bWeight = false;
- break;
- }
- switch( rInfo.m_eItalic )
- {
- case ITALIC_OBLIQUE: aEntry.AppendAscii( ", " ); aEntry.Append( aObliqueTxt ); break;
- case ITALIC_NORMAL: aEntry.AppendAscii( ", " ); aEntry.Append( aItalicTxt ); break;
- default:
- bItalic = false;
- break;
- }
- switch( rInfo.m_eWidth )
- {
- case WIDTH_ULTRA_CONDENSED: aEntry.AppendAscii( ", " ); aEntry.Append( aUltraCondensedTxt ); break;
- case WIDTH_EXTRA_CONDENSED: aEntry.AppendAscii( ", " ); aEntry.Append( aExtraCondensedTxt ); break;
- case WIDTH_CONDENSED: aEntry.AppendAscii( ", " ); aEntry.Append( aCondensedTxt ); break;
- case WIDTH_SEMI_CONDENSED: aEntry.AppendAscii( ", " ); aEntry.Append( aSemiCondensedTxt ); break;
- case WIDTH_SEMI_EXPANDED: aEntry.AppendAscii( ", " ); aEntry.Append( aSemiExpandedTxt ); break;
- case WIDTH_EXPANDED: aEntry.AppendAscii( ", " ); aEntry.Append( aExpandedTxt ); break;
- case WIDTH_EXTRA_EXPANDED: aEntry.AppendAscii( ", " ); aEntry.Append( aExtraExpandedTxt ); break;
- case WIDTH_ULTRA_EXPANDED: aEntry.AppendAscii( ", " ); aEntry.Append( aUltraExpandedTxt ); break;
- default:
- bWidth = false;
- break;
- }
-
- if( bAddRegular && ! bItalic && ! bWidth && ! bWeight )
- {
- aEntry.AppendAscii( ", " );
- aEntry.Append( aRegularTxt );
- }
-
- aEntry.AppendAscii( " (" );
- aEntry.Append( rFile );
- aEntry.AppendAscii( ")" );
- return aEntry;
-}
-
-String FontNameDlg::fillFontEntry( const ::std::list< FastPrintFontInfo >& rInfos, const String& rFile )
-{
- String aEntry;
- bool bFirst = true;
- for( ::std::list< FastPrintFontInfo >::const_iterator it = rInfos.begin(); it != rInfos.end(); ++it )
- {
- if( ! bFirst )
- aEntry.AppendAscii( " & " );
- aEntry.Append( String( it->m_aFamilyName ) );
- bFirst = false;
- }
-
- aEntry.AppendAscii( " (" );
- aEntry.Append( rFile );
- aEntry.AppendAscii( ")" );
- return aEntry;
-}
-
-void FontNameDlg::init()
-{
- ::std::list< fontID > aFonts;
- m_rFontManager.getFontList( aFonts );
- m_aFontBox.Clear();
- m_aRemoveButton.Enable( sal_False );
- m_aRenameButton.Enable( sal_False );
-
- ::boost::unordered_map< OUString, int, OUStringHash > aFamilies;
- ::std::list< fontID >::iterator font_it;
- for( font_it = aFonts.begin(); font_it != aFonts.end(); ++font_it )
- {
- if( m_rFontManager.isPrivateFontFile( *font_it ) )
- {
- const OUString& rFamily( m_rFontManager.getFontFamily( *font_it ) );
- if( aFamilies.find( rFamily ) == aFamilies.end() )
- aFamilies[rFamily] = 0;
- aFamilies[rFamily]++;
- }
- }
-
- for( font_it = aFonts.begin(); font_it != aFonts.end(); ++font_it )
- {
- if( m_rFontManager.isPrivateFontFile( *font_it ) )
- {
- OString aFile( m_rFontManager.getFontFileSysPath( *font_it ) );
- int nLast = aFile.lastIndexOf( '/' );
- if( nLast != -1 )
- aFile = aFile.copy( nLast+1 );
-
- FastPrintFontInfo aInfo;
- m_rFontManager.getFontFastInfo( *font_it, aInfo );
- std::list< fontID > aDups;
- String aEntry;
- if( m_rFontManager.getFileDuplicates( *font_it, aDups ) )
- {
- FastPrintFontInfo aDupInfo;
- std::list< FastPrintFontInfo > aInfos;
- aInfos.push_back( aInfo );
- for( std::list< fontID >::iterator dup = aDups.begin(); dup != aDups.end(); ++dup )
- {
- m_rFontManager.getFontFastInfo( *dup, aDupInfo );
- aInfos.push_back( aDupInfo );
- aFonts.remove( *dup );
- }
- aEntry = fillFontEntry( aInfos, String( ByteString( aFile ), osl_getThreadTextEncoding() ) );
- }
- else
- aEntry = fillFontEntry( aInfo, String( ByteString( aFile ), osl_getThreadTextEncoding() ), aFamilies[ aInfo.m_aFamilyName ] > 1 );
- sal_uInt16 nEntry = m_aFontBox.InsertEntry( aEntry );
- m_aFontBox.SetEntryData( nEntry, (void*)(sal_IntPtr)(*font_it) );
- }
- }
-}
-
-IMPL_LINK( FontNameDlg, SelectHdl, ListBox*, pBox )
-{
- if( pBox == &m_aFontBox )
- {
- sal_Bool bEnable = m_aFontBox.GetSelectEntryCount() ? sal_True : sal_False;
- m_aRemoveButton.Enable( bEnable );
- m_aRenameButton.Enable( bEnable );
- }
- return 0;
-}
-
-IMPL_LINK( FontNameDlg, DelPressedHdl, ListBox*, pBox )
-{
- if( pBox == &m_aFontBox && m_aRemoveButton.IsEnabled() )
- {
- ClickBtnHdl( &m_aRemoveButton );
- }
- return 0;
-}
-
-IMPL_LINK( FontNameDlg, ClickBtnHdl, Button*, pButton )
-{
-
- int i;
-
- if( pButton == &m_aOKButton )
- {
- EndDialog();
- }
- else if( pButton == &m_aRemoveButton && AreYouSure( this, RID_QUERY_REMOVEFONTFROMLIST ) && m_aFontBox.GetSelectEntryCount() )
- {
- ::std::list< fontID > aRemoveIDs;
- for( i = 0; i < m_aFontBox.GetSelectEntryCount(); i++ )
- {
- int nSelect = m_aFontBox.GetSelectEntryPos( i );
- aRemoveIDs.push_back( (fontID)(sal_IntPtr)m_aFontBox.GetEntryData( nSelect ) );
- }
- m_rFontManager.removeFonts( aRemoveIDs );
- init();
- }
- else if( pButton == &m_aImportButton )
- {
- FontImportDialog aDialog( this );
- aDialog.Execute();
- init();
- }
- else if( pButton == &m_aRenameButton && m_aFontBox.GetSelectEntryCount() )
- {
- for( i = 0; i < m_aFontBox.GetSelectEntryCount(); i++ )
- {
- fontID aFont = (fontID)(sal_IntPtr)m_aFontBox.GetEntryData( m_aFontBox.GetSelectEntryPos( i ) );
- if( ! m_rFontManager.checkChangeFontPropertiesPossible( aFont ) )
- {
- String aErrorText( m_aNoRenameString );
- aErrorText.SearchAndReplace( String( RTL_CONSTASCII_USTRINGPARAM( "%s" ) ), m_aFontBox.GetSelectEntry( i ) );
- ErrorBox aBox( this, WB_OK | WB_DEF_OK, aErrorText );
- aBox.Execute();
- continue;
- }
- ::std::list< fontID > aDuplicates;
- m_rFontManager.getFileDuplicates( aFont, aDuplicates );
- aDuplicates.push_front( aFont );
- int nFonts = aDuplicates.size();
- for( int n = 0; n < nFonts; n++ )
- {
- aFont = aDuplicates.front();
- aDuplicates.pop_front();
- String aFamily( m_rFontManager.getFontFamily( aFont ) );
- ::std::list< OUString > aAlternatives;
- m_rFontManager.getAlternativeFamilyNames( aFont, aAlternatives );
- ::std::list< String > aChoices;
- while( aAlternatives.size() )
- {
- aChoices.push_back( aAlternatives.front() );
- aAlternatives.pop_front();
- }
- String aQueryTxt( m_aRenameString );
- if( nFonts > 1 )
- {
- aQueryTxt = m_aRenameTTCString;
- aQueryTxt.SearchAndReplace( String( RTL_CONSTASCII_USTRINGPARAM( "%d1" ) ), String::CreateFromInt32( n+1 ) );
- aQueryTxt.SearchAndReplace( String( RTL_CONSTASCII_USTRINGPARAM( "%d2" ) ), String::CreateFromInt32( nFonts ) );
- }
- aQueryTxt.SearchAndReplace( String( RTL_CONSTASCII_USTRINGPARAM( "%s" ) ), aFamily );
- QueryString aQuery( this, aQueryTxt, aFamily, aChoices );
- if( aQuery.Execute() )
- {
- aFamily.SearchAndReplaceAll( '-', ' ' );
- aFamily.SearchAndReplaceAll( '?', ' ' );
- aFamily.SearchAndReplaceAll( '*', ' ' );
- aFamily = WhitespaceToSpace( aFamily );
- if( aFamily.Len() )
- {
- String aXLFD = m_rFontManager.getFontXLFD( aFont );
- aXLFD.SetToken( 2, '-', aFamily );
- m_rFontManager.changeFontProperties( aFont, aXLFD );
- }
- }
- }
- }
- init();
- }
- return 0;
-}
-
-//--------------------------------------------------
-
-FontImportDialog::FontImportDialog( Window* pParent ) :
- ModalDialog( pParent, PaResId( RID_FONTIMPORT_DIALOG ) ),
- m_aOKBtn( this, PaResId( RID_FIMP_BTN_OK ) ),
- m_aCancelBtn( this, PaResId( RID_FIMP_BTN_CANCEL ) ),
- m_aSelectAllBtn( this, PaResId( RID_FIMP_BTN_SELECTALL ) ),
- m_aNewFontsBox( this, PaResId( RID_FIMP_BOX_NEWFONTS ) ),
- m_aFromFL( this, PaResId( RID_FIMP_FL_FROM ) ),
- m_aFromDirEdt( this, PaResId( RID_FIMP_EDT_FROM ) ),
- m_aFromBtn( this, PaResId( RID_FIMP_BTN_FROM ) ),
- m_aSubDirsBox( this, PaResId( RID_FIMP_BOX_SUBDIRS ) ),
- m_aTargetOptFL( this, PaResId( RID_FIMP_FL_TARGETOPTS ) ),
- m_aLinkOnlyBox( this, PaResId( RID_FIMP_BOX_LINKONLY ) ),
- m_aFixedText( this, PaResId( RID_FIMP_TXT_HELP ) ),
- m_bOverwriteAll( false ),
- m_bOverwriteNone( false ),
- m_pProgress( NULL ),
- m_aImportOperation( PaResId( RID_FIMP_STR_IMPORTOP ) ),
- m_aOverwriteQueryText( PaResId( RID_FIMP_STR_QUERYOVERWRITE ) ),
- m_aOverwriteAllText( PaResId( RID_FIMP_STR_OVERWRITEALL ) ),
- m_aOverwriteNoneText( PaResId( RID_FIMP_STR_OVERWRITENONE ) ),
- m_aNoAfmText( PaResId( RID_FIMP_STR_NOAFM ) ),
- m_aAfmCopyFailedText( PaResId( RID_FIMP_STR_AFMCOPYFAILED ) ),
- m_aFontCopyFailedText( PaResId( RID_FIMP_STR_FONTCOPYFAILED ) ),
- m_aNoWritableFontsDirText( PaResId( RID_FIMP_STR_NOWRITEABLEFONTSDIR ) ),
- m_aFontsImportedText( PaResId( RID_FIMP_STR_NUMBEROFFONTSIMPORTED ) ),
- m_rFontManager( ::psp::PrintFontManager::get() )
-{
- FreeResource();
-
- m_aNewFontsBox.EnableMultiSelection( sal_True );
-
- m_aOKBtn.SetClickHdl( LINK( this, FontImportDialog, ClickBtnHdl ) );
- m_aSelectAllBtn.SetClickHdl( LINK( this, FontImportDialog, ClickBtnHdl ) );
- m_aFromBtn.SetClickHdl( LINK( this, FontImportDialog, ClickBtnHdl ) );
- m_aFromDirEdt.SetModifyHdl( LINK( this, FontImportDialog, ModifyHdl ) );
- m_aRefreshTimer.SetTimeoutHdl( LINK( this, FontImportDialog, RefreshTimeoutHdl ) );
- m_aRefreshTimer.SetTimeout( 2000 );
- m_aLinkOnlyBox.Check( sal_False );
- m_aSubDirsBox.Check( sal_True );
- m_aSubDirsBox.SetToggleHdl( LINK( this, FontImportDialog, ToggleHdl ) );
-
- Config& rPadminRC( getPadminRC() );
- rPadminRC.SetGroup( "FontImport" );
- m_aFromDirEdt.SetText( rtl::OStringToOUString(rPadminRC.ReadKey("FromPath"), RTL_TEXTENCODING_UTF8) );
- RefreshTimeoutHdl( NULL );
-}
-
-FontImportDialog::~FontImportDialog()
-{
- Config& rPadminRC( getPadminRC() );
- rPadminRC.SetGroup( "FontImport" );
- rPadminRC.WriteKey( "FromPath", rtl::OUStringToOString(m_aFromDirEdt.GetText(), RTL_TEXTENCODING_UTF8) );
-}
-
-void FontImportDialog::importFontsFailed( ::psp::PrintFontManager::ImportFontCallback::FailCondition eReason )
-{
- String aText;
- switch( eReason )
- {
- case psp::PrintFontManager::ImportFontCallback::NoWritableDirectory:
- aText = m_aNoWritableFontsDirText;
- break;
- default:
- break;
- }
- ErrorBox aBox( m_pProgress ? (Window*)m_pProgress : (Window*)this, WB_OK | WB_DEF_OK, aText );
- aBox.Execute();
-}
-
-void FontImportDialog::progress( const ::rtl::OUString& rFile )
-{
- m_pProgress->setValue( ++m_nFont );
- m_pProgress->setFilename( rFile );
-}
-
-bool FontImportDialog::queryOverwriteFile( const ::rtl::OUString& rFile )
-{
- bool bRet = false;
-
- if( m_bOverwriteNone )
- return false;
- if( m_bOverwriteAll )
- return true;
-
- String aText( m_aOverwriteQueryText );
- aText.SearchAndReplace( String( RTL_CONSTASCII_USTRINGPARAM( "%s" ) ), rFile );
-
- QueryBox aQueryBox( m_pProgress ? (Window*)m_pProgress : (Window*)this, WB_YES_NO | WB_DEF_NO, aText );
- aQueryBox.AddButton( m_aOverwriteAllText, 20, 0 );
- aQueryBox.AddButton( m_aOverwriteNoneText, 21, 0 );
-
- int nResult = aQueryBox.Execute();
- switch( nResult )
- {
- case BUTTONID_YES: bRet = true; break;
- case BUTTONID_NO: bRet = false; break;
- case 20: bRet = m_bOverwriteAll = true; break;
- case 21: bRet = false; m_bOverwriteNone = true; break;
- }
-
- return bRet;
-}
-
-void FontImportDialog::importFontFailed( const ::rtl::OUString& rFile, ::psp::PrintFontManager::ImportFontCallback::FailCondition eReason )
-{
- String aText;
- switch( eReason )
- {
- case psp::PrintFontManager::ImportFontCallback::NoAfmMetric:
- aText = m_aNoAfmText;
- break;
- case psp::PrintFontManager::ImportFontCallback::AfmCopyFailed:
- aText = m_aAfmCopyFailedText;
- break;
- case psp::PrintFontManager::ImportFontCallback::FontCopyFailed:
- aText = m_aFontCopyFailedText;
- break;
- default:
- break;
- }
- aText.SearchAndReplace( String( RTL_CONSTASCII_USTRINGPARAM( "%s" ) ), rFile );
- ErrorBox aBox( m_pProgress ? (Window*)m_pProgress : (Window*)this, WB_OK | WB_DEF_OK, aText );
- aBox.Execute();
-}
-
-bool FontImportDialog::isCanceled()
-{
- return m_pProgress->isCanceled();
-}
-
-IMPL_LINK( FontImportDialog, ModifyHdl, Edit*, EMPTYARG )
-{
- m_aRefreshTimer.Start();
- return 0;
-}
-
-IMPL_LINK( FontImportDialog, RefreshTimeoutHdl, void*, EMPTYARG )
-{
- rtl_TextEncoding aEncoding = osl_getThreadTextEncoding();
- std::list< String > aFiles;
- m_aNewFonts.clear();
- OUString aDirectory( m_aFromDirEdt.GetText() );
- FindFiles( aDirectory, aFiles, String( RTL_CONSTASCII_USTRINGPARAM( "PFA;PFB;TTF;TTC;OTF" ) ), m_aSubDirsBox.IsChecked() );
- OString aDir( OUStringToOString( aDirectory, aEncoding ) );
- aDir += "/";
- while( aFiles.begin() != aFiles.end() )
- {
- OString aFont( aDir );
- aFont += OUStringToOString( aFiles.front(), aEncoding );
- aFiles.pop_front();
- ::std::list< FastPrintFontInfo > aInfos;
- if( m_rFontManager.getImportableFontProperties( aFont, aInfos ) )
- m_aNewFonts[ aFont ] = aInfos;
- }
- fillFontBox();
- return 0;
-}
-
-void FontImportDialog::fillFontBox()
-{
- rtl_TextEncoding aEncoding = osl_getThreadTextEncoding();
- m_aNewFontsBox.Clear();
-
- ::boost::unordered_map< OUString, int, OUStringHash > aFamilies;
- ::boost::unordered_map< OString, ::std::list< FastPrintFontInfo >, OStringHash >::iterator it;
- for( it = m_aNewFonts.begin(); it != m_aNewFonts.end(); ++it )
- {
- const OUString& rFamily( it->second.front().m_aFamilyName );
- if( aFamilies.find( rFamily ) == aFamilies.end() )
- aFamilies[rFamily] = 0;
- aFamilies[rFamily]++;
- }
-
- for( it = m_aNewFonts.begin(); it != m_aNewFonts.end(); ++it )
- {
- OString aFileName( it->first.copy( it->first.lastIndexOf( '/' )+1 ) );
- OUString aFile( OStringToOUString( aFileName, aEncoding ) );
- String aEntry;
- if( it->second.size() == 1 )
- aEntry = FontNameDlg::fillFontEntry( it->second.front(), aFile, aFamilies[ it->second.front().m_aFamilyName ] > 1 );
- else
- aEntry = FontNameDlg::fillFontEntry( it->second, aFile );
- sal_uInt16 nPos = m_aNewFontsBox.InsertEntry( aEntry );
- m_aNewFontsBox.SetEntryData( nPos, (void*)&(it->first) );
- }
-}
-
-void FontImportDialog::copyFonts()
-{
- ::std::list< OString > aFiles;
- for( int i = 0; i < m_aNewFontsBox.GetSelectEntryCount(); i++ )
- {
- OString* pFile = (OString*)m_aNewFontsBox.GetEntryData( m_aNewFontsBox.GetSelectEntryPos( i ) );
- aFiles.push_back( *pFile );
- }
-
- int nSuccess = 0;
- if( aFiles.size() )
- {
- m_nFont = 0;
- m_pProgress = new ProgressDialog( this );
- m_pProgress->setRange( 0, aFiles.size() );
- m_pProgress->startOperation( m_aImportOperation );
- m_pProgress->Show( sal_True );
- m_pProgress->setValue( 0 );
- m_pProgress->Invalidate();
- m_pProgress->Sync();
- nSuccess = m_rFontManager.importFonts( aFiles, m_aLinkOnlyBox.IsChecked() ? true : false, this );
- m_pProgress->Show( sal_False );
- delete m_pProgress;
- m_pProgress = NULL;
- }
- String aText( m_aFontsImportedText );
- aText.SearchAndReplace( String( RTL_CONSTASCII_USTRINGPARAM( "%d" ) ), String::CreateFromInt32( nSuccess ) );
- InfoBox aBox( this, aText );
- aBox.Execute();
-}
-
-IMPL_LINK( FontImportDialog, ClickBtnHdl, Button*, pButton )
-{
- if( pButton == &m_aFromBtn )
- {
- String aPath( m_aFromDirEdt.GetText() );
- if( chooseDirectory( aPath ) )
- {
- m_aFromDirEdt.SetText( aPath );
- RefreshTimeoutHdl( NULL );
- }
- }
- else if( pButton == &m_aOKBtn )
- {
- copyFonts();
- EndDialog( 0 );
- }
- else if( pButton == &m_aSelectAllBtn )
- {
- m_aNewFontsBox.SetUpdateMode( sal_False );
- for( int i = 0; i < m_aNewFontsBox.GetEntryCount(); i++ )
- m_aNewFontsBox.SelectEntryPos( i, sal_True );
- m_aNewFontsBox.SetUpdateMode( sal_True );
- }
- return 0;
-}
-
-IMPL_LINK( FontImportDialog, ToggleHdl, CheckBox*, pBox )
-{
- if( pBox == &m_aSubDirsBox )
- {
- RefreshTimeoutHdl( NULL );
- }
-
- return 0;
-}
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */