00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #include "kostyle.h"
00022 #include "koStylist.h"
00023 #include "koStylist.moc"
00024 #include <koFontDia.h>
00025
00026 #include <qtabwidget.h>
00027 #include <qpushbutton.h>
00028 #include <qlabel.h>
00029 #include <qcombobox.h>
00030
00031 #include <klocale.h>
00032
00033 #include <kiconloader.h>
00034 #include <kdebug.h>
00035
00036 #include "kozoomhandler.h"
00037 #include <koGlobal.h>
00038 #include <qcheckbox.h>
00039 #include <qlayout.h>
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056 class KoStyleManagerPrivate
00057 {
00058 public:
00059 KoStylePreview* preview;
00060 QCheckBox* cbIncludeInTOC;
00061 };
00062
00063 KoStyleManager::KoStyleManager( QWidget *_parent,KoUnit::Unit unit, const QPtrList<KoStyle> & style, const QString & activeStyleName)
00064 : KDialogBase( _parent, "Stylist", true,
00065 i18n("Style Manager"),
00066 KDialogBase::Ok | KDialogBase::Cancel | KDialogBase::Apply )
00067 {
00068 d = new KoStyleManagerPrivate;
00069
00070 m_currentStyle =0L;
00071 noSignals=true;
00072 m_origStyles.setAutoDelete(false);
00073 m_changedStyles.setAutoDelete(false);
00074 setupWidget(style);
00075 addGeneralTab();
00076 KoStyleFontTab * fontTab = new KoStyleFontTab( m_tabs );
00077 addTab( fontTab );
00078
00079 KoStyleParagTab *newTab = new KoStyleParagTab( m_tabs );
00080 newTab->setWidget( new KoIndentSpacingWidget( unit, true,-1,newTab ) );
00081 addTab( newTab );
00082
00083 newTab = new KoStyleParagTab( m_tabs );
00084 newTab->setWidget( new KoParagAlignWidget( newTab ) );
00085 addTab( newTab );
00086
00087 newTab = new KoStyleParagTab( m_tabs );
00088 newTab->setWidget( new KoParagBorderWidget( newTab ) );
00089 addTab( newTab );
00090
00091 newTab = new KoStyleParagTab( m_tabs );
00092 newTab->setWidget( new KoParagCounterWidget( false , newTab ) );
00093 addTab( newTab );
00094
00095 newTab = new KoStyleParagTab( m_tabs );
00096 newTab->setWidget( new KoParagTabulatorsWidget( unit, -1, newTab ) );
00097 addTab( newTab );
00098
00099 QListBoxItem * item = m_stylesList->findItem (activeStyleName);
00100 if ( item )
00101 m_stylesList->setCurrentItem( m_stylesList->index(item) );
00102 else
00103 m_stylesList->setCurrentItem( 0 );
00104
00105 noSignals=false;
00106 switchStyle();
00107 setInitialSize( QSize( 600, 570 ) );
00108 }
00109
00110 KoStyleManager::~KoStyleManager()
00111 {
00112 delete d;
00113 }
00114
00115 void KoStyleManager::addTab( KoStyleManagerTab * tab )
00116 {
00117 m_tabsList.append( tab );
00118 m_tabs->insertTab( tab, tab->tabName() );
00119 tab->layout()->activate();
00120 }
00121
00122 void KoStyleManager::setupWidget(const QPtrList<KoStyle> & styleList)
00123 {
00124 QFrame * frame1 = makeMainWidget();
00125 QGridLayout *frame1Layout = new QGridLayout( frame1, 0, 0,
00126 KDialog::marginHint(), KDialog::spacingHint() );
00127 QPtrListIterator<KoStyle> style( styleList );
00128 numStyles = styleList.count();
00129 m_stylesList = new QListBox( frame1, "stylesList" );
00130 for ( ; style.current() ; ++style )
00131 {
00132 m_stylesList->insertItem( style.current()->translatedName() );
00133 m_origStyles.append( style.current() );
00134 m_changedStyles.append( style.current() );
00135 m_styleOrder<< style.current()->name();
00136 }
00137
00138 frame1Layout->addMultiCellWidget( m_stylesList, 0, 0, 0, 1 );
00139
00140
00141 m_moveUpButton = new QPushButton( frame1, "moveUpButton" );
00142 m_moveUpButton->setPixmap( BarIcon( "up", KIcon::SizeSmall ) );
00143 connect( m_moveUpButton, SIGNAL( clicked() ), this, SLOT( moveUpStyle() ) );
00144 frame1Layout->addWidget( m_moveUpButton, 1, 1 );
00145
00146 m_moveDownButton = new QPushButton( frame1, "moveDownButton" );
00147 m_moveDownButton->setPixmap( BarIcon( "down", KIcon::SizeSmall ) );
00148 connect( m_moveDownButton, SIGNAL( clicked() ), this, SLOT( moveDownStyle() ) );
00149 frame1Layout->addWidget( m_moveDownButton, 1, 0 );
00150
00151
00152 m_deleteButton = new QPushButton( frame1, "deleteButton" );
00153 m_deleteButton->setText( i18n( "&Delete" ) );
00154 connect( m_deleteButton, SIGNAL( clicked() ), this, SLOT( deleteStyle() ) );
00155
00156 frame1Layout->addWidget( m_deleteButton, 2, 1 );
00157
00158 m_newButton = new QPushButton( frame1, "newButton" );
00159 m_newButton->setText( i18n( "New" ) );
00160 connect( m_newButton, SIGNAL( clicked() ), this, SLOT( addStyle() ) );
00161
00162 frame1Layout->addWidget( m_newButton, 2, 0 );
00163
00164 m_tabs = new QTabWidget( frame1 );
00165 frame1Layout->addMultiCellWidget( m_tabs, 0, 2, 2, 2 );
00166
00167 connect( m_stylesList, SIGNAL( selectionChanged() ), this, SLOT( switchStyle() ) );
00168 connect( m_tabs, SIGNAL( currentChanged ( QWidget * ) ), this, SLOT( switchTabs() ) );
00169 }
00170
00171 void KoStyleManager::addGeneralTab() {
00172 QWidget *tab = new QWidget( m_tabs );
00173
00174 QGridLayout *tabLayout = new QGridLayout( tab );
00175 tabLayout->setSpacing( KDialog::spacingHint() );
00176 tabLayout->setMargin( KDialog::marginHint() );
00177
00178 m_nameString = new QLineEdit( tab );
00179 m_nameString->resize(m_nameString->sizeHint() );
00180 connect( m_nameString, SIGNAL( textChanged( const QString &) ), this, SLOT( renameStyle(const QString &) ) );
00181
00182 tabLayout->addWidget( m_nameString, 0, 1 );
00183
00184 QLabel *nameLabel = new QLabel( tab );
00185 nameLabel->setText( i18n( "Name:" ) );
00186 nameLabel->resize(nameLabel->sizeHint());
00187 nameLabel->setAlignment( AlignRight | AlignVCenter );
00188
00189 tabLayout->addWidget( nameLabel, 0, 0 );
00190
00191 m_styleCombo = new QComboBox( FALSE, tab, "styleCombo" );
00192
00193 tabLayout->addWidget( m_styleCombo, 1, 1 );
00194
00195 QLabel *nextStyleLabel = new QLabel( tab );
00196 nextStyleLabel->setText( i18n( "Next style:" ) );
00197 nextStyleLabel->setAlignment( AlignRight | AlignVCenter );
00198
00199 tabLayout->addWidget( nextStyleLabel, 1, 0 );
00200
00201 m_inheritCombo = new QComboBox( FALSE, tab, "inheritCombo" );
00202 tabLayout->addWidget( m_inheritCombo, 2, 1 );
00203
00204 QLabel *inheritStyleLabel = new QLabel( tab );
00205 inheritStyleLabel->setText( i18n( "Inherit style:" ) );
00206 inheritStyleLabel->setAlignment( AlignRight | AlignVCenter );
00207
00208 tabLayout->addWidget( inheritStyleLabel, 2, 0 );
00209
00210 d->cbIncludeInTOC = new QCheckBox( i18n("Include in table of contents"), tab );
00211 tabLayout->addMultiCellWidget( d->cbIncludeInTOC, 3, 3, 0, 1 );
00212
00213 d->preview = new KoStylePreview( i18n( "Preview" ), i18n( "The quick brown fox jumps over the lazy dog" ), tab, "stylepreview" );
00214
00215 tabLayout->addMultiCellWidget( d->preview, 4, 4, 0, 1 );
00216
00217 m_tabs->insertTab( tab, i18n( "General" ) );
00218
00219 m_inheritCombo->insertItem( i18n("<None>"));
00220
00221 for ( unsigned int i = 0; i < m_stylesList->count(); i++ ) {
00222 m_styleCombo->insertItem( m_stylesList->text(i));
00223 m_inheritCombo->insertItem( m_stylesList->text(i));
00224 }
00225
00226 }
00227
00228 void KoStyleManager::switchStyle() {
00229 kdDebug(32500) << "KoStyleManager::switchStyle noSignals=" << noSignals << endl;
00230 if(noSignals) return;
00231 noSignals=true;
00232
00233 if(m_currentStyle !=0L)
00234 save();
00235
00236 m_currentStyle = 0L;
00237 int num = styleIndex( m_stylesList->currentItem() );
00238 kdDebug(32500) << "KoStyleManager::switchStyle switching to " << num << endl;
00239 if(m_origStyles.at(num) == m_changedStyles.at(num)) {
00240 m_currentStyle = new KoStyle( *m_origStyles.at(num) );
00241 m_changedStyles.take(num);
00242 m_changedStyles.insert(num, m_currentStyle);
00243 } else {
00244 m_currentStyle = m_changedStyles.at(num);
00245 }
00246 updateGUI();
00247
00248 noSignals=false;
00249 }
00250
00251 void KoStyleManager::switchTabs()
00252 {
00253
00254
00255 save();
00256 updatePreview();
00257 }
00258
00259
00260
00261
00262
00263
00264 int KoStyleManager::styleIndex( int pos ) {
00265 int p = 0;
00266 for(unsigned int i=0; i < m_changedStyles.count(); i++) {
00267
00268 KoStyle * style = m_changedStyles.at(i);
00269 if ( !style ) continue;
00270 if ( p == pos )
00271 return i;
00272 ++p;
00273 }
00274 kdWarning() << "KoStyleManager::styleIndex no style found at pos " << pos << endl;
00275
00276 #ifdef __GNUC_
00277 #warning implement undo/redo
00278 #endif
00279
00280 return 0;
00281 }
00282
00283
00284 void KoStyleManager::updateGUI() {
00285 kdDebug(32500) << "KoStyleManager::updateGUI m_currentStyle=" << m_currentStyle << " " << m_currentStyle->name() << endl;
00286 QPtrListIterator<KoStyleManagerTab> it( m_tabsList );
00287 for ( ; it.current() ; ++it )
00288 {
00289 it.current()->setStyle( m_currentStyle );
00290 it.current()->update();
00291 }
00292
00293 m_nameString->setText(m_currentStyle->translatedName());
00294
00295 QString followingName = m_currentStyle->followingStyle() ? m_currentStyle->followingStyle()->translatedName() : QString::null;
00296 kdDebug(32500) << "KoStyleManager::updateGUI updating combo to " << followingName << endl;
00297 for ( int i = 0; i < m_styleCombo->count(); i++ ) {
00298 if ( m_styleCombo->text( i ) == followingName ) {
00299 m_styleCombo->setCurrentItem( i );
00300 kdDebug(32500) << "found at " << i << endl;
00301 break;
00302 }
00303 }
00304
00305 QString inheritName = m_currentStyle->parentStyle() ? m_currentStyle->parentStyle()->translatedName() : QString::null;
00306 kdDebug(32500) << "KoStyleManager::updateGUI updating combo to " << inheritName << endl;
00307 for ( int i = 0; i < m_inheritCombo->count(); i++ ) {
00308 if ( m_inheritCombo->text( i ) == inheritName ) {
00309 m_inheritCombo->setCurrentItem( i );
00310 kdDebug(32500) << "found at " << i << endl;
00311 break;
00312 }
00313 else
00314 m_inheritCombo->setCurrentItem( 0 );
00315 }
00316
00317 d->cbIncludeInTOC->setChecked( m_currentStyle->isOutline() );
00318
00319
00320 m_deleteButton->setEnabled(m_stylesList->currentItem() != 0);
00321
00322 m_moveUpButton->setEnabled(m_stylesList->currentItem() != 0);
00323 m_moveDownButton->setEnabled(m_stylesList->currentItem()!=(int)m_stylesList->count()-1);
00324
00325 updatePreview();
00326 }
00327
00328 void KoStyleManager::updatePreview()
00329 {
00330 d->preview->setStyle(m_currentStyle);
00331 d->preview->repaint(true);
00332 }
00333
00334 void KoStyleManager::save() {
00335 if(m_currentStyle) {
00336
00337 QPtrListIterator<KoStyleManagerTab> it( m_tabsList );
00338 for ( ; it.current() ; ++it )
00339 it.current()->save();
00340
00341
00342
00343
00344 if ( m_currentStyle->name() != m_nameString->text() &&
00345 m_currentStyle->translatedName() != m_nameString->text() )
00346 {
00347 m_currentStyle->setName( m_nameString->text() );
00348 }
00349
00350 int indexNextStyle = styleIndex( m_styleCombo->currentItem() );
00351 m_currentStyle->setFollowingStyle( m_origStyles.at( indexNextStyle ) );
00352 m_currentStyle->setParentStyle( style( m_inheritCombo->currentText() ) );
00353 m_currentStyle->setOutline( d->cbIncludeInTOC->isChecked() );
00354 }
00355 }
00356
00357 KoStyle * KoStyleManager::style( const QString & _name )
00358 {
00359 for(unsigned int i=0; i < m_changedStyles.count(); i++) {
00360
00361 KoStyle * style = m_changedStyles.at(i);
00362 if ( !style ) continue;
00363 if ( style->name() == _name)
00364 return style;
00365 }
00366 return 0;
00367 }
00368
00369 void KoStyleManager::addStyle() {
00370 save();
00371
00372 QString str = i18n( "New Style Template (%1)" ).arg(numStyles++);
00373 if ( m_currentStyle )
00374 {
00375 m_currentStyle = new KoStyle( *m_currentStyle );
00376 m_currentStyle->setName( str );
00377 }
00378 else
00379 m_currentStyle = new KoStyle( str );
00380 m_currentStyle->setFollowingStyle( m_currentStyle );
00381
00382 noSignals=true;
00383 m_origStyles.append(0L);
00384 m_changedStyles.append(m_currentStyle);
00385 m_stylesList->insertItem( str );
00386 m_styleCombo->insertItem( str );
00387 m_inheritCombo->insertItem( str );
00388 m_stylesList->setCurrentItem( m_stylesList->count() - 1 );
00389 noSignals=false;
00390 m_styleOrder<< str;
00391
00392 updateGUI();
00393 }
00394
00395 void KoStyleManager::updateFollowingStyle( KoStyle *s )
00396 {
00397 for ( KoStyle* p = m_changedStyles.first(); p != 0L; p = m_changedStyles.next() )
00398 {
00399 if ( p->followingStyle() == s)
00400 p->setFollowingStyle(p);
00401 }
00402
00403 }
00404
00405 void KoStyleManager::updateInheritStyle( KoStyle *s )
00406 {
00407 for ( KoStyle* p = m_changedStyles.first(); p != 0L; p = m_changedStyles.next() )
00408 {
00409
00410
00411
00412 if ( p->parentStyle() == s)
00413 p->setParentStyle(0L);
00414 }
00415
00416 }
00417
00418 void KoStyleManager::deleteStyle() {
00419
00420 unsigned int cur = styleIndex( m_stylesList->currentItem() );
00421 unsigned int curItem = m_stylesList->currentItem();
00422 QString name = m_stylesList->currentText();
00423 KoStyle *s = m_changedStyles.at(cur);
00424 m_styleOrder.remove( s->name());
00425 updateFollowingStyle( s );
00426 updateInheritStyle( s );
00427 Q_ASSERT( s == m_currentStyle );
00428 delete s;
00429 m_currentStyle = 0L;
00430 m_changedStyles.remove(cur);
00431 m_changedStyles.insert(cur,0L);
00432
00433
00434
00435 m_stylesList->removeItem(curItem);
00436 m_styleCombo->removeItem(curItem);
00437
00438 m_inheritCombo->listBox()->removeItem( m_inheritCombo->listBox()->index(m_inheritCombo->listBox()->findItem(name )));
00439
00440 numStyles--;
00441 m_stylesList->setSelected( m_stylesList->currentItem(), true );
00442 }
00443
00444 void KoStyleManager::moveUpStyle()
00445 {
00446 if ( m_currentStyle )
00447 save();
00448 unsigned int pos = 0;
00449 QString currentStyleName=m_stylesList->currentText ();
00450
00451 int pos2 = m_styleOrder.findIndex( currentStyleName );
00452 if ( pos2 != -1 )
00453 {
00454 m_styleOrder.remove( m_styleOrder.at(pos2));
00455 m_styleOrder.insert( m_styleOrder.at(pos2-1), currentStyleName);
00456 }
00457
00458 pos=m_stylesList->currentItem();
00459 noSignals=true;
00460 m_stylesList->changeItem( m_stylesList->text( pos-1 ), pos );
00461 m_styleCombo->changeItem( m_stylesList->text( pos-1 ), pos );
00462
00463 m_stylesList->changeItem( currentStyleName, pos-1 );
00464 m_styleCombo->changeItem( currentStyleName, pos-1 );
00465
00466 m_stylesList->setCurrentItem( m_stylesList->currentItem() );
00467 noSignals=false;
00468
00469 updateGUI();
00470 }
00471
00472 void KoStyleManager::moveDownStyle()
00473 {
00474 if ( m_currentStyle )
00475 save();
00476 unsigned int pos = 0;
00477 QString currentStyleName=m_stylesList->currentText ();
00478 int pos2 = m_styleOrder.findIndex( currentStyleName );
00479 if ( pos2 != -1 )
00480 {
00481 m_styleOrder.remove( m_styleOrder.at(pos2));
00482 m_styleOrder.insert( m_styleOrder.at(pos2+1), currentStyleName);
00483 }
00484
00485
00486 pos=m_stylesList->currentItem();
00487 noSignals=true;
00488 m_stylesList->changeItem( m_stylesList->text ( pos+1 ),pos);
00489 m_styleCombo->changeItem( m_stylesList->text ( pos+1 ),pos);
00490 m_stylesList->changeItem( currentStyleName ,pos+1);
00491 m_styleCombo->changeItem( currentStyleName ,pos+1);
00492 m_stylesList->setCurrentItem( m_stylesList->currentItem() );
00493 noSignals=false;
00494
00495 updateGUI();
00496 }
00497
00498 void KoStyleManager::slotOk() {
00499 save();
00500 apply();
00501 KDialogBase::slotOk();
00502 }
00503
00504 void KoStyleManager::slotApply() {
00505 save();
00506 apply();
00507 KDialogBase::slotApply();
00508 }
00509
00510 void KoStyleManager::apply() {
00511 noSignals=true;
00512 StyleChangeDefMap styleChanged;
00513 QPtrList<KoStyle> removeStyle;
00514 for (unsigned int i =0 ; m_origStyles.count() > i ; i++) {
00515 if(m_origStyles.at(i) == 0L && m_changedStyles.at(i)!=0L) {
00516 kdDebug(32500) << "adding new " << m_changedStyles.at(i)->name() << " (" << i << ")" << endl;
00517 KoStyle *tmp = addStyleTemplate(m_changedStyles.take(i));
00518 m_changedStyles.insert(i, tmp);
00519 } else if(m_changedStyles.at(i) == 0L && m_origStyles.at(i) != 0L) {
00520 kdDebug(32500) << "deleting orig " << m_origStyles.at(i)->name() << " (" << i << ")" << endl;
00521
00522 KoStyle *orig = m_origStyles.at(i);
00523
00524 StyleChangeDef tmp( -1,-1);
00525 styleChanged.insert( orig, tmp);
00526
00527 removeStyle.append( orig );
00528
00529
00530 } else if(m_changedStyles.at(i) != 0L && m_origStyles.at(i)!=0L) {
00531 kdDebug(32500) << "update style " << m_changedStyles.at(i)->name() << " (" << i << ")" << endl;
00532
00533 KoStyle *orig = m_origStyles.at(i);
00534 KoStyle *changed = m_changedStyles.at(i);
00535
00536 if ( orig != changed )
00537 {
00538 int paragLayoutChanged = orig->paragLayout().compare( changed->paragLayout() );
00539 int formatChanged = orig->format().compare( changed->format() );
00540
00541
00542
00543
00544 *orig = *changed;
00545
00546
00547
00548 if ( formatChanged != 0 || paragLayoutChanged != 0 ) {
00549 StyleChangeDef tmp(paragLayoutChanged, formatChanged);
00550 styleChanged.insert( orig, tmp );
00551 }
00552 }
00553
00554 }
00555
00556 }
00557
00558 applyStyleChange( styleChanged );
00559
00560 KoStyle *tmp = 0L;
00561 for ( tmp = removeStyle.first(); tmp ;tmp = removeStyle.next() )
00562 removeStyleTemplate( tmp );
00563
00564 updateStyleListOrder( m_styleOrder);
00565 updateAllStyleLists();
00566 noSignals=false;
00567 }
00568
00569 void KoStyleManager::renameStyle(const QString &theText) {
00570 if(noSignals) return;
00571 noSignals=true;
00572
00573 int index = m_stylesList->currentItem();
00574 kdDebug(32500) << "KoStyleManager::renameStyle " << index << " to " << theText << endl;
00575
00576
00577 kdDebug(32500) << "KoStyleManager::renameStyle before " << m_styleCombo->currentText() << endl;
00578 m_styleCombo->changeItem( theText, index );
00579 m_inheritCombo->changeItem( theText, index+1 );
00580 m_styleOrder[index]=theText;
00581 kdDebug(32500) << "KoStyleManager::renameStyle after " << m_styleCombo->currentText() << endl;
00582 m_stylesList->changeItem( theText, index );
00583
00584
00585 int synonyms = 0;
00586 for ( int i = 0; i < m_styleCombo->count(); i++ ) {
00587 if ( m_styleCombo->text( i ) == m_stylesList->currentText() )
00588 ++synonyms;
00589 }
00590 Q_ASSERT( synonyms > 0 );
00591 noSignals=false;
00592
00593 bool state=!theText.isEmpty() && (synonyms == 1);
00594 enableButtonOK(state );
00595 enableButtonApply(state);
00596 m_deleteButton->setEnabled(state&&(m_stylesList->currentItem() != 0));
00597 m_newButton->setEnabled(state);
00598 m_stylesList->setEnabled( state );
00599 if ( state )
00600 {
00601 m_moveUpButton->setEnabled(m_stylesList->currentItem() != 0);
00602 m_moveDownButton->setEnabled(m_stylesList->currentItem()!=(int)m_stylesList->count()-1);
00603 }
00604 else
00605 {
00606 m_moveUpButton->setEnabled(false);
00607 m_moveDownButton->setEnabled(false);
00608 }
00609 }
00610
00612
00613 KoStyleParagTab::KoStyleParagTab( QWidget * parent )
00614 : KoStyleManagerTab( parent )
00615 {
00616 ( new QVBoxLayout( this ) )->setAutoAdd( true );
00617 m_widget = 0L;
00618 }
00619
00620 void KoStyleParagTab::update()
00621 {
00622 m_widget->display( m_style->paragLayout() );
00623 }
00624
00625 void KoStyleParagTab::save()
00626 {
00627 m_widget->save( m_style->paragLayout() );
00628 }
00629
00630 void KoStyleParagTab::setWidget( KoParagLayoutWidget * widget )
00631 {
00632 m_widget = widget;
00633 }
00634
00635 void KoStyleParagTab::resizeEvent( QResizeEvent *e )
00636 {
00637 QWidget::resizeEvent( e );
00638 if ( m_widget ) m_widget->resize( size() );
00639 }
00640
00641 KoStyleFontTab::KoStyleFontTab( QWidget * parent )
00642 : KoStyleManagerTab( parent )
00643 {
00644 ( new QVBoxLayout( this ) )->setAutoAdd( true );
00645 m_chooser = new KoFontChooser( this, 0, true, KFontChooser::SmoothScalableFonts);
00646 m_zoomHandler = new KoZoomHandler;
00647 }
00648
00649 KoStyleFontTab::~KoStyleFontTab()
00650 {
00651 delete m_zoomHandler;
00652 }
00653
00654 void KoStyleFontTab::update()
00655 {
00656 m_chooser->setFormat( m_style->format() );
00657
00658 #if 0
00659 bool subScript = m_style->format().vAlign() == KoTextFormat::AlignSubScript;
00660 bool superScript = m_style->format().vAlign() == KoTextFormat::AlignSuperScript;
00661 QFont fn = m_style->format().font();
00662 kdDebug()<<" fn.bold() :"<<fn.bold()<<" fn.italic():"<<fn.italic()<<endl;
00663 kdDebug()<<" fn.family() :"<<fn.family()<<endl;
00664 m_chooser->setFont( fn, subScript, superScript );
00665 m_chooser->setColor( m_style->format().color() );
00666 QColor col=m_style->format().textBackgroundColor();
00667 col=col.isValid() ? col : QApplication::palette().color( QPalette::Active, QColorGroup::Base );
00668 m_chooser->setBackGroundColor(col);
00669
00670 m_chooser->setUnderlineColor( m_style->format().textUnderlineColor());
00671
00672 m_chooser->setUnderlineType(m_style->format().underlineType());
00673 m_chooser->setUnderlineStyle(m_style->format().underlineStyle());
00674 m_chooser->setStrikeOutStyle(m_style->format().strikeOutStyle());
00675 m_chooser->setStrikeOutlineType(m_style->format().strikeOutType());
00676 m_chooser->setShadowText( m_style->format().shadowText());
00677 m_chooser->setFontAttribute( m_style->format().attributeFont());
00678 m_chooser->setWordByWord( m_style->format().wordByWord());
00679 m_chooser->setRelativeTextSize( m_style->format().relativeTextSize());
00680 m_chooser->setOffsetFromBaseLine( m_style->format().offsetFromBaseLine());
00681 m_chooser->setLanguage( m_style->format().language());
00682 m_chooser->setHyphenation( m_style->format().hyphenation());
00683 #endif
00684 }
00685
00686 void KoStyleFontTab::save()
00687 {
00688 m_style->format() = m_chooser->newFormat();
00689 #if 0
00690 QFont fn = m_chooser->getNewFont();
00691 kdDebug()<<" save fn.bold() :"<<fn.bold()<<" fn.italic():"<<fn.italic()<<endl;
00692 kdDebug()<<" save fn.family() :"<<fn.family()<<endl;
00693
00694 m_style->format().setFont( fn );
00695 if ( m_chooser->getSubScript() )
00696 m_style->format().setVAlign( KoTextFormat::AlignSubScript );
00697 else if ( m_chooser->getSuperScript() )
00698 m_style->format().setVAlign( KoTextFormat::AlignSuperScript );
00699 else
00700 m_style->format().setVAlign( KoTextFormat::AlignNormal );
00701 m_style->format().setColor( m_chooser->color() );
00702 if(m_chooser->backGroundColor()!=QApplication::palette().color( QPalette::Active, QColorGroup::Base ))
00703 m_style->format().setTextBackgroundColor(m_chooser->backGroundColor());
00704
00705 m_style->format().setTextUnderlineColor(m_chooser->underlineColor());
00706 m_style->format().setUnderlineType (m_chooser->getUnderlineType());
00707 m_style->format().setUnderlineStyle (m_chooser->getUnderlineStyle());
00708 m_style->format().setStrikeOutStyle( m_chooser->getStrikeOutStyle() );
00709 m_style->format().setStrikeOutType (m_chooser->getStrikeOutType());
00710 m_style->format().setShadowText(m_chooser->getShadowText());
00711 m_style->format().setWordByWord( m_chooser->getWordByWord());
00712 m_style->format().setRelativeTextSize( m_chooser->getRelativeTextSize());
00713 m_style->format().setAttributeFont( m_chooser->getFontAttribute());
00714 m_style->format().setOffsetFromBaseLine( m_chooser->getOffsetFromBaseLine());
00715
00716 m_style->format().setLanguage( m_chooser->getLanguage());
00717 m_style->format().setHyphenation( m_chooser->getHyphenation());
00718 #endif
00719 }
00720
00721 QString KoStyleFontTab::tabName()
00722 {
00723 return i18n("Font");
00724 }
00725
00726 void KoStyleFontTab::resizeEvent( QResizeEvent *e )
00727 {
00728 QWidget::resizeEvent( e );
00729 if ( m_chooser ) m_chooser->resize( size() );
00730 }