mirror of
https://github.com/gamecreature/QtAwesome.git
synced 2025-12-17 12:14:36 +03:00
fix #29, extra options to take in account the on/off state.
Updated/extended sample and README.md
This commit is contained in:
@@ -19,7 +19,58 @@
|
|||||||
/// The font-awesome icon painter
|
/// The font-awesome icon painter
|
||||||
class QtAwesomeCharIconPainter: public QtAwesomeIconPainter
|
class QtAwesomeCharIconPainter: public QtAwesomeIconPainter
|
||||||
{
|
{
|
||||||
|
|
||||||
|
protected:
|
||||||
|
|
||||||
|
QStringList optionKeysForModeAndState( const QString& key, QIcon::Mode mode, QIcon::State state)
|
||||||
|
{
|
||||||
|
QString modePostfix;
|
||||||
|
switch(mode) {
|
||||||
|
case QIcon::Disabled:
|
||||||
|
modePostfix = "-disabled";
|
||||||
|
break;
|
||||||
|
case QIcon::Active:
|
||||||
|
modePostfix = "-active";
|
||||||
|
break;
|
||||||
|
case QIcon::Selected:
|
||||||
|
modePostfix = "-selected";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString statePostfix;
|
||||||
|
if( state == QIcon::Off) {
|
||||||
|
statePostfix = "-off";
|
||||||
|
}
|
||||||
|
|
||||||
|
// the keys that need to bet tested: key-mode-state | key-mode | key-state | key
|
||||||
|
QStringList result;
|
||||||
|
if( !modePostfix.isEmpty() ) {
|
||||||
|
if( !statePostfix.isEmpty() ) {
|
||||||
|
result.push_back( key + modePostfix + statePostfix );
|
||||||
|
}
|
||||||
|
result.push_back( key + modePostfix );
|
||||||
|
}
|
||||||
|
if( !statePostfix.isEmpty() ) {
|
||||||
|
result.push_back( key + statePostfix );
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
QVariant optionValueForModeAndState( const QString& baseKey, QIcon::Mode mode, QIcon::State state, const QVariantMap& options )
|
||||||
|
{
|
||||||
|
foreach( QString key, optionKeysForModeAndState(baseKey, mode, state) ) {
|
||||||
|
if( options.contains(key)) return options.value(key);
|
||||||
|
}
|
||||||
|
return options.value(baseKey);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
|
||||||
virtual void paint( QtAwesome* awesome, QPainter* painter, const QRect& rect, QIcon::Mode mode, QIcon::State state, const QVariantMap& options )
|
virtual void paint( QtAwesome* awesome, QPainter* painter, const QRect& rect, QIcon::Mode mode, QIcon::State state, const QVariantMap& options )
|
||||||
{
|
{
|
||||||
Q_UNUSED(mode);
|
Q_UNUSED(mode);
|
||||||
@@ -34,7 +85,31 @@ public:
|
|||||||
anim->setup( *painter, rect );
|
anim->setup( *painter, rect );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// get the correct key postfix
|
||||||
|
QString modePostfix;
|
||||||
|
switch(mode) {
|
||||||
|
case QIcon::Disabled:
|
||||||
|
modePostfix = "-disabled";
|
||||||
|
break;
|
||||||
|
case QIcon::Active:
|
||||||
|
modePostfix = "-active";
|
||||||
|
break;
|
||||||
|
case QIcon::Selected:
|
||||||
|
modePostfix = "-selected";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString statePostFix;
|
||||||
|
if( state == QIcon::Off) {
|
||||||
|
statePostFix = "-off";
|
||||||
|
}
|
||||||
|
|
||||||
|
// set the default options
|
||||||
|
QColor color = optionValueForModeAndState("color", mode, state, options).value<QColor>();
|
||||||
|
QString text = optionValueForModeAndState("text", mode, state, options).toString();
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
// set the correct color
|
// set the correct color
|
||||||
QColor color = options.value("color").value<QColor>();
|
QColor color = options.value("color").value<QColor>();
|
||||||
QString text = options.value("text").toString();
|
QString text = options.value("text").toString();
|
||||||
@@ -58,6 +133,9 @@ public:
|
|||||||
text = alt.toString();
|
text = alt.toString();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
painter->setPen(color);
|
painter->setPen(color);
|
||||||
|
|
||||||
// add some 'padding' around the icon
|
// add some 'padding' around the icon
|
||||||
|
|||||||
@@ -10,6 +10,8 @@
|
|||||||
#include <QApplication>
|
#include <QApplication>
|
||||||
#include <QMainWindow>
|
#include <QMainWindow>
|
||||||
#include <QPushButton>
|
#include <QPushButton>
|
||||||
|
#include <QVBoxLayout>
|
||||||
|
#include <QWidget>
|
||||||
|
|
||||||
int main(int argc, char *argv[])
|
int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
@@ -19,15 +21,42 @@ int main(int argc, char *argv[])
|
|||||||
QtAwesome* awesome = new QtAwesome(&w);
|
QtAwesome* awesome = new QtAwesome(&w);
|
||||||
awesome->initFontAwesome();
|
awesome->initFontAwesome();
|
||||||
|
|
||||||
// a simple beer button
|
QVBoxLayout* layout = new QVBoxLayout();
|
||||||
QPushButton* beerButton = new QPushButton( "Cheers!");
|
|
||||||
|
|
||||||
|
// a simple beer button
|
||||||
|
//=====================
|
||||||
|
{
|
||||||
|
QPushButton* beerButton = new QPushButton( "Cheers!");
|
||||||
|
|
||||||
QVariantMap options;
|
QVariantMap options;
|
||||||
options.insert("anim", qVariantFromValue( new QtAwesomeAnimation(beerButton) ) );
|
options.insert("anim", qVariantFromValue( new QtAwesomeAnimation(beerButton) ) );
|
||||||
beerButton->setIcon( awesome->icon( fa::beer, options ) );
|
beerButton->setIcon( awesome->icon( fa::beer, options ) );
|
||||||
|
|
||||||
w.setCentralWidget( beerButton );
|
layout->addWidget(beerButton);
|
||||||
|
}
|
||||||
|
|
||||||
|
// a simple beer checkbox button
|
||||||
|
//==============================
|
||||||
|
{
|
||||||
|
QPushButton* toggleButton = new QPushButton("Toggle Me");
|
||||||
|
toggleButton->setCheckable(true);
|
||||||
|
|
||||||
|
QVariantMap options;
|
||||||
|
options.insert("color", QColor(Qt::green) );
|
||||||
|
options.insert("text-off", QString(fa::squareo) );
|
||||||
|
options.insert("color-off", QColor(Qt::red) );
|
||||||
|
toggleButton->setIcon( awesome->icon( fa::checksquareo, options ));
|
||||||
|
|
||||||
|
|
||||||
|
layout->addWidget(toggleButton);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// add the samples
|
||||||
|
QWidget* samples = new QWidget();
|
||||||
|
samples->setLayout(layout);
|
||||||
|
w.setCentralWidget(samples);
|
||||||
|
|
||||||
w.show();
|
w.show();
|
||||||
|
|
||||||
return app.exec();
|
return app.exec();
|
||||||
|
|||||||
26
README.md
26
README.md
@@ -146,6 +146,32 @@ setDefaultOption( "scale-factor", 0.9 );
|
|||||||
options.insert("text-selected", QString( fa::lock ) );
|
options.insert("text-selected", QString( fa::lock ) );
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Color and text options have the following structure:
|
||||||
|
`keyname-iconmode-iconstate`
|
||||||
|
|
||||||
|
Where iconmode normal is empty
|
||||||
|
And iconstate On is off.
|
||||||
|
|
||||||
|
So the list of items used is:
|
||||||
|
|
||||||
|
- color
|
||||||
|
- color-disabled
|
||||||
|
- color-active
|
||||||
|
- color-selected
|
||||||
|
- color-off
|
||||||
|
- color-disabled-off
|
||||||
|
- color-active-off
|
||||||
|
- color-selected-off
|
||||||
|
- text
|
||||||
|
- text-disabled
|
||||||
|
- text-active
|
||||||
|
- text-selected
|
||||||
|
- text-off
|
||||||
|
- text-disabled-off
|
||||||
|
- text-active-off
|
||||||
|
- text-selected-off
|
||||||
|
|
||||||
|
|
||||||
License
|
License
|
||||||
-------
|
-------
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user