29 #include <QActionGroup>
30 #include <QContextMenuEvent>
48 :
Token( text, iconName, value, parent )
51 m_widthForced = m_width > 0.0;
52 m_alignment = Qt::AlignCenter;
55 setFocusPolicy( Qt::ClickFocus );
65 KAction *boldAction =
new KAction( KIcon(
"format-text-bold"), i18n(
"Bold" ), menu );
67 boldAction->setCheckable(
true );
68 boldAction->setChecked( m_bold );
70 KAction *italicAction =
new KAction( KIcon(
"format-text-italic"), i18n(
"Italic" ), menu );
72 italicAction->setCheckable(
true );
73 italicAction->setChecked( m_italic );
75 KAction *alignLeftAction =
new KAction( KIcon(
"format-justify-left"), i18n(
"Left" ), menu );
76 KAction *alignCenterAction =
new KAction( KIcon(
"format-justify-center"), i18n(
"Center" ), menu );
77 KAction *alignRightAction =
new KAction( KIcon(
"format-justify-right"), i18n(
"Right" ), menu );
79 alignLeftAction->setCheckable(
true );
81 alignCenterAction->setCheckable(
true );
83 alignRightAction->setCheckable(
true );
85 if ( m_alignment & Qt::AlignLeft )
86 alignLeftAction->setChecked(
true );
87 else if ( m_alignment & Qt::AlignHCenter )
88 alignCenterAction->setChecked(
true );
89 else if ( m_alignment & Qt::AlignRight )
90 alignRightAction->setChecked(
true );
92 QActionGroup *alignmentGroup =
new QActionGroup( menu );
93 alignmentGroup->addAction( alignLeftAction );
94 alignmentGroup->addAction( alignCenterAction );
95 alignmentGroup->addAction( alignRightAction );
97 menu->addAction( boldAction );
98 menu->addAction( italicAction );
99 menu->addSeparator()->setText( i18n(
"Alignment" ) );
100 menu->addAction( alignLeftAction );
101 menu->addAction( alignCenterAction );
102 menu->addAction( alignRightAction );
103 menu->addSeparator()->setText( i18n(
"Width" ) );
106 int orgHeight = menu->height();
108 KHBox * sliderBox =
new KHBox( menu );
109 sliderBox->setFixedWidth( menu->width() - 4 );
110 sliderBox->move( sliderBox->pos().x() + 2, orgHeight );
113 slider->setMaximum( 100 );
114 slider->setMinimum( 0 );
119 if ( parentWidget() )
121 if (
TokenDropTarget *editWidget = qobject_cast<TokenDropTarget*>( parentWidget() ) )
123 qreal spareWidth = 100.0;
124 int row = editWidget->row(
this );
127 QList<Token*> tokens = editWidget->drags( row );
128 foreach (
Token *t, tokens)
133 spareWidth -= twl->width() * 100.0;
136 slider->setMaximum( qMax<qreal>( spareWidth, 0.0 ) );
139 slider->setValue( m_width * 100.0 );
141 QLCDNumber * sizeLabel =
new QLCDNumber( 3, sliderBox );
142 sizeLabel->display( m_width * 100.0 );
144 connect( slider, SIGNAL(valueChanged(
int)), sizeLabel, SLOT(display(
int)) );
145 connect( slider, SIGNAL(valueChanged(
int)),
this, SLOT(
setWidth(
int)) );
147 menu->setFixedHeight( orgHeight + slider->height() );
149 slider->setFixedWidth( menu->width() - 4 );
161 setBold( action->isChecked() );
168 QMenu* menu =
new QMenu();
170 menu->setTitle( i18n(
"Layout" ) );
174 QAction* action = menu->exec( mapToGlobal( event->pos() ) );
188 if ( m_alignment == alignment )
192 m_label->setAlignment( alignment );
221 if ( m_bold == bold )
226 font.setBold( bold );
233 if ( m_prefix ==
string )
242 if ( m_suffix ==
string )
251 m_width = qMax( qMin( 1.0, size/100.0 ), 0.0 ) ;
252 if ( (m_width) > 0.0 )
253 m_widthForced =
true;
275 if ( m_italic == italic )
280 font.setItalic( italic );
287 #include "TokenWithLayout.moc"
void setAlignCenter(bool)
An extended Token with controls for layouting the token and getting layout values for use outside the...
TokenWithLayout(const QString &text, const QString &iconName, int value, QWidget *parent=0)
const QString ActionItalicName
const QString ActionBoldName
virtual void fillMenu(QMenu *menu)
const QString ActionAlignCenterName
const QString ActionAlignRightName
Qt::Alignment alignment()
void setWidthForced(bool)
void setItalic(bool italic)
virtual void contextMenuEvent(QContextMenuEvent *event)
virtual Token * createToken(const QString &text, const QString &iconName, int value, QWidget *parent=0)
void setSuffix(const QString &)
virtual void menuExecuted(const QAction *action)
void setPrefix(const QString &)
void setAlignment(Qt::Alignment alignment)
const QString ActionAlignLeftName