void ParagraphBulletsNumbers::setDisplay(KoParagraphStyle *style, int level) { KoListStyle *listStyle = style->listStyle(); widget.listPropertiesPane->setEnabled(listStyle != 0); widget.customCharacter->setText("-"); if (listStyle == 0) { widget.listTypes->setCurrentRow(0); return; } KoListLevelProperties llp = listStyle->levelProperties(level); m_previousLevel = llp.level(); widget.prefix->setText(llp.listItemPrefix()); widget.suffix->setText(llp.listItemSuffix()); widget.letterSynchronization->setChecked(llp.letterSynchronization()); KoListStyle::Style s = llp.style(); foreach(int row, m_mapping.keys()) { if (m_mapping[row] == s) { widget.listTypes->setCurrentRow(row); break; } } int align; if (llp.alignment() == (Qt::AlignLeft | Qt::AlignAbsolute)) align = 1; else if (llp.alignment() == (Qt::AlignRight | Qt::AlignAbsolute)) align = 2; else if (llp.alignment() == Qt::AlignCenter) align = 3; else align = 0; widget.alignment->setCurrentIndex(align); widget.depth->setValue(llp.level()); widget.levels->setValue(llp.displayLevel()); widget.startValue->setValue(llp.startValue()); if (s == KoListStyle::CustomCharItem) widget.customCharacter->setText(llp.bulletCharacter()); if (s == KoListStyle::ImageItem) { m_data = llp.bulletImage(); widget.imageHeight->setValue(llp.height()); widget.imageWidth->setValue(llp.width()); } else { m_data = 0; widget.imageHeight->setValue(0); widget.imageWidth->setValue(0); } if(llp.alignmentMode()==false) {//for list-level-position-and-space-mode=label-width-and-position disable the following options widget.label_8->setEnabled(false); widget.label_9->setEnabled(false); widget.label_10->setEnabled(false); widget.label_11->setEnabled(false); widget.labelFollowedBy->setEnabled(false); widget.doubleSpinBox->setEnabled(false); widget.doubleSpinBox_2->setEnabled(false); widget.doubleSpinBox_3->setEnabled(false); } else { m_alignmentMode=true; switch(llp.labelFollowedBy()) { case KoListStyle::ListTab: widget.doubleSpinBox->setEnabled(true); widget.labelFollowedBy->setCurrentIndex(0); widget.doubleSpinBox->setValue(KoUnit::toCentimeter(llp.tabStopPosition())); break; case KoListStyle::Space: widget.doubleSpinBox->setEnabled(false); widget.labelFollowedBy->setCurrentIndex(1); break; case KoListStyle::Nothing: widget.doubleSpinBox->setEnabled(false); widget.labelFollowedBy->setCurrentIndex(2); break; default: Q_ASSERT(false); } widget.doubleSpinBox_2->setValue(KoUnit::toCentimeter(llp.margin())); widget.doubleSpinBox_3->setValue(KoUnit::toCentimeter(llp.margin())+KoUnit::toCentimeter(llp.textIndent())); } // *** features not in GUI; // character style // relative bullet size (percent) // minimum label width recalcPreview(); }
void ParagraphBulletsNumbers::save(KoParagraphStyle *savingStyle) { Q_ASSERT(savingStyle); KoUnit unit(KoUnit::Centimeter); const int currentRow = widget.listTypes->currentRow(); KoListStyle::Style style = m_mapping[currentRow]; if (style == KoListStyle::None) { savingStyle->setListStyle(0); return; } if (savingStyle->listStyle() == 0) { KoListStyle *listStyle = new KoListStyle(savingStyle); savingStyle->setListStyle(listStyle); } KoListStyle *listStyle = savingStyle->listStyle(); KoListLevelProperties llp = listStyle->levelProperties(widget.depth->value()); llp.setStyle(style); llp.setLevel(widget.depth->value()); llp.setDisplayLevel(widget.levels->value()); llp.setStartValue(widget.startValue->value()); llp.setListItemPrefix(widget.prefix->text()); llp.setListItemSuffix(widget.suffix->text()); llp.setLetterSynchronization(widget.letterSynchronization->isVisible() && widget.letterSynchronization->isChecked()); if(m_alignmentMode==true) { llp.setAlignmentMode(true); switch(widget.labelFollowedBy->currentIndex()) { case 0: llp.setLabelFollowedBy(KoListStyle::ListTab); llp.setTabStopPosition(unit.fromUserValue(widget.doubleSpinBox->value())); break; case 1: llp.setLabelFollowedBy(KoListStyle::Space); break; case 2: llp.setLabelFollowedBy(KoListStyle::Nothing); break; default: Q_ASSERT(false); } llp.setMargin(unit.fromUserValue(widget.doubleSpinBox_2->value())); llp.setTextIndent(unit.fromUserValue(widget.doubleSpinBox_3->value())-unit.fromUserValue(widget.doubleSpinBox_2->value())); } if (style == KoListStyle::ImageItem) { if (m_data) { llp.setBulletImage(m_data); } llp.setWidth(widget.imageWidth->value()); llp.setHeight(widget.imageHeight->value()); } else if (style == KoListStyle::CustomCharItem) { llp.setBulletCharacter((currentRow == m_blankCharIndex) ? QChar() : widget.customCharacter->text().remove('&').at(0)); } // it is important to not use 45 for CustomCharItem as it is also char based else if (!KoListStyle::isNumberingStyle(style)) { llp.setRelativeBulletSize(45); //for non-numbering bullets the default relative bullet size is 45%(The spec does not say it; we take it) } Qt::Alignment align; switch (widget.alignment->currentIndex()) { case 0: align = Qt::AlignLeft; break; case 1: align = Qt::AlignLeft | Qt::AlignAbsolute; break; case 2: align = Qt::AlignRight | Qt::AlignAbsolute; break; case 3: align = Qt::AlignCenter; break; default: Q_ASSERT(false); } llp.setAlignment(align); if (llp.level() != m_previousLevel) listStyle->removeLevelProperties(m_previousLevel); listStyle->setLevelProperties(llp); }