QtAwesome.cpp 70 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110
  1. /**
  2. * QtAwesome - use font-awesome (or other font icons) in your c++ / Qt Application
  3. *
  4. * MIT Licensed
  5. *
  6. * Copyright 2013-2016 - Reliable Bits Software by Blommers IT. All Rights Reserved.
  7. * Author Rick Blommers
  8. */
  9. #include "QtAwesome.h"
  10. #include "QtAwesomeAnim.h"
  11. #include <QDebug>
  12. #include <QFile>
  13. #include <QFontDatabase>
  14. /// The font-awesome icon painter
  15. class QtAwesomeCharIconPainter : public QtAwesomeIconPainter
  16. {
  17. protected:
  18. QStringList optionKeysForModeAndState(const QString &key, QIcon::Mode mode, QIcon::State state)
  19. {
  20. QString modePostfix;
  21. switch (mode) {
  22. case QIcon::Disabled:
  23. modePostfix = "-disabled";
  24. break;
  25. case QIcon::Active:
  26. modePostfix = "-active";
  27. break;
  28. case QIcon::Selected:
  29. modePostfix = "-selected";
  30. break;
  31. default: // QIcon::Normal:
  32. // modePostfix = "";
  33. break;
  34. }
  35. QString statePostfix;
  36. if (state == QIcon::Off) { statePostfix = "-off"; }
  37. // the keys that need to bet tested: key-mode-state | key-mode | key-state | key
  38. QStringList result;
  39. if (!modePostfix.isEmpty()) {
  40. if (!statePostfix.isEmpty()) { result.push_back(key + modePostfix + statePostfix); }
  41. result.push_back(key + modePostfix);
  42. }
  43. if (!statePostfix.isEmpty()) { result.push_back(key + statePostfix); }
  44. return result;
  45. }
  46. QVariant optionValueForModeAndState(const QString &baseKey, QIcon::Mode mode, QIcon::State state,
  47. const QVariantMap &options)
  48. {
  49. foreach (QString key, optionKeysForModeAndState(baseKey, mode, state)) {
  50. // if ( options.contains(key) && options.value(key).toString().isEmpty()) qDebug() << "Not found:" << key;
  51. if (options.contains(key) && !(options.value(key).toString().isEmpty())) return options.value(key);
  52. }
  53. return options.value(baseKey);
  54. }
  55. public:
  56. virtual void paint(QtAwesome *awesome, QPainter *painter, const QRect &rect, QIcon::Mode mode, QIcon::State state,
  57. const QVariantMap &options)
  58. {
  59. painter->save();
  60. QVariant var = options.value("anim");
  61. QtAwesomeAnimation *anim = var.value<QtAwesomeAnimation *>();
  62. if (anim) { anim->setup(*painter, rect); }
  63. // set the default options
  64. QColor color = optionValueForModeAndState("color", mode, state, options).value<QColor>();
  65. QString text = optionValueForModeAndState("text", mode, state, options).toString();
  66. Q_ASSERT(color.isValid());
  67. Q_ASSERT(!text.isEmpty());
  68. painter->setPen(color);
  69. // add some 'padding' around the icon
  70. int drawSize = qRound(rect.height() * options.value("scale-factor").toFloat());
  71. painter->setFont(awesome->font(drawSize));
  72. painter->drawText(rect, text, QTextOption(Qt::AlignCenter | Qt::AlignVCenter));
  73. painter->restore();
  74. }
  75. };
  76. //---------------------------------------------------------------------------------------
  77. /// The painter icon engine.
  78. class QtAwesomeIconPainterIconEngine : public QIconEngine
  79. {
  80. public:
  81. QtAwesomeIconPainterIconEngine(QtAwesome *awesome, QtAwesomeIconPainter *painter, const QVariantMap &options)
  82. : awesomeRef_(awesome), iconPainterRef_(painter), options_(options)
  83. {
  84. }
  85. virtual ~QtAwesomeIconPainterIconEngine() { }
  86. QtAwesomeIconPainterIconEngine *clone() const
  87. {
  88. return new QtAwesomeIconPainterIconEngine(awesomeRef_, iconPainterRef_, options_);
  89. }
  90. virtual void paint(QPainter *painter, const QRect &rect, QIcon::Mode mode, QIcon::State state)
  91. {
  92. Q_UNUSED(mode);
  93. Q_UNUSED(state);
  94. iconPainterRef_->paint(awesomeRef_, painter, rect, mode, state, options_);
  95. }
  96. virtual QPixmap pixmap(const QSize &size, QIcon::Mode mode, QIcon::State state)
  97. {
  98. QPixmap pm(size);
  99. pm.fill(Qt::transparent); // we need transparency
  100. {
  101. QPainter p(&pm);
  102. paint(&p, QRect(QPoint(0, 0), size), mode, state);
  103. }
  104. return pm;
  105. }
  106. private:
  107. QtAwesome * awesomeRef_; ///< a reference to the QtAwesome instance
  108. QtAwesomeIconPainter *iconPainterRef_; ///< a reference to the icon painter
  109. QVariantMap options_; ///< the options for this icon painter
  110. };
  111. //---------------------------------------------------------------------------------------
  112. /// The default icon colors
  113. QtAwesome::QtAwesome(QObject *parent) : QObject(parent), namedCodepoints_()
  114. {
  115. // initialize the default options
  116. setDefaultOption("color", QColor(50, 50, 50));
  117. setDefaultOption("color-disabled", QColor(70, 70, 70, 60));
  118. setDefaultOption("color-active", QColor(10, 10, 10));
  119. setDefaultOption("color-selected", QColor(10, 10, 10));
  120. setDefaultOption("scale-factor", 0.9);
  121. setDefaultOption("text", QVariant());
  122. setDefaultOption("text-disabled", QVariant());
  123. setDefaultOption("text-active", QVariant());
  124. setDefaultOption("text-selected", QVariant());
  125. fontIconPainter_ = new QtAwesomeCharIconPainter();
  126. }
  127. QtAwesome::~QtAwesome()
  128. {
  129. delete fontIconPainter_;
  130. // delete errorIconPainter_;
  131. qDeleteAll(painterMap_);
  132. }
  133. /// initializes the QtAwesome icon factory with the given fontname
  134. void QtAwesome::init(const QString &fontname)
  135. {
  136. fontName_ = fontname;
  137. }
  138. struct FANameIcon
  139. {
  140. const char *name;
  141. fa::icon icon;
  142. };
  143. static const FANameIcon faNameIconArray[] = { { "fa_500px", fa::fa_500px },
  144. { "addressbook", fa::addressbook },
  145. { "addressbooko", fa::addressbooko },
  146. { "addresscard", fa::addresscard },
  147. { "addresscardo", fa::addresscardo },
  148. { "adjust", fa::adjust },
  149. { "adn", fa::adn },
  150. { "aligncenter", fa::aligncenter },
  151. { "alignjustify", fa::alignjustify },
  152. { "alignleft", fa::alignleft },
  153. { "alignright", fa::alignright },
  154. { "amazon", fa::amazon },
  155. { "ambulance", fa::ambulance },
  156. { "americansignlanguageinterpreting",
  157. fa::americansignlanguageinterpreting },
  158. { "anchor", fa::anchor },
  159. { "android", fa::android },
  160. { "angellist", fa::angellist },
  161. { "angledoubledown", fa::angledoubledown },
  162. { "angledoubleleft", fa::angledoubleleft },
  163. { "angledoubleright", fa::angledoubleright },
  164. { "angledoubleup", fa::angledoubleup },
  165. { "angledown", fa::angledown },
  166. { "angleleft", fa::angleleft },
  167. { "angleright", fa::angleright },
  168. { "angleup", fa::angleup },
  169. { "apple", fa::apple },
  170. { "archive", fa::archive },
  171. { "areachart", fa::areachart },
  172. { "arrowcircledown", fa::arrowcircledown },
  173. { "arrowcircleleft", fa::arrowcircleleft },
  174. { "arrowcircleodown", fa::arrowcircleodown },
  175. { "arrowcircleoleft", fa::arrowcircleoleft },
  176. { "arrowcircleoright", fa::arrowcircleoright },
  177. { "arrowcircleoup", fa::arrowcircleoup },
  178. { "arrowcircleright", fa::arrowcircleright },
  179. { "arrowcircleup", fa::arrowcircleup },
  180. { "arrowdown", fa::arrowdown },
  181. { "arrowleft", fa::arrowleft },
  182. { "arrowright", fa::arrowright },
  183. { "arrowup", fa::arrowup },
  184. { "arrows", fa::arrows },
  185. { "arrowsalt", fa::arrowsalt },
  186. { "arrowsh", fa::arrowsh },
  187. { "arrowsv", fa::arrowsv },
  188. { "aslinterpreting", fa::aslinterpreting },
  189. { "assistivelisteningsystems", fa::assistivelisteningsystems },
  190. { "asterisk", fa::asterisk },
  191. { "at", fa::at },
  192. { "audiodescription", fa::audiodescription },
  193. { "automobile", fa::automobile },
  194. { "backward", fa::backward },
  195. { "balancescale", fa::balancescale },
  196. { "ban", fa::ban },
  197. { "bandcamp", fa::bandcamp },
  198. { "bank", fa::bank },
  199. { "barchart", fa::barchart },
  200. { "barcharto", fa::barcharto },
  201. { "barcode", fa::barcode },
  202. { "bars", fa::bars },
  203. { "bath", fa::bath },
  204. { "bathtub", fa::bathtub },
  205. { "battery", fa::battery },
  206. { "battery0", fa::battery0 },
  207. { "battery1", fa::battery1 },
  208. { "battery2", fa::battery2 },
  209. { "battery3", fa::battery3 },
  210. { "battery4", fa::battery4 },
  211. { "batteryempty", fa::batteryempty },
  212. { "batteryfull", fa::batteryfull },
  213. { "batteryhalf", fa::batteryhalf },
  214. { "batteryquarter", fa::batteryquarter },
  215. { "batterythreequarters", fa::batterythreequarters },
  216. { "bed", fa::bed },
  217. { "beer", fa::beer },
  218. { "behance", fa::behance },
  219. { "behancesquare", fa::behancesquare },
  220. { "bell", fa::bell },
  221. { "bello", fa::bello },
  222. { "bellslash", fa::bellslash },
  223. { "bellslasho", fa::bellslasho },
  224. { "bicycle", fa::bicycle },
  225. { "binoculars", fa::binoculars },
  226. { "birthdaycake", fa::birthdaycake },
  227. { "bitbucket", fa::bitbucket },
  228. { "bitbucketsquare", fa::bitbucketsquare },
  229. { "bitcoin", fa::bitcoin },
  230. { "blacktie", fa::blacktie },
  231. { "blind", fa::blind },
  232. { "bluetooth", fa::bluetooth },
  233. { "bluetoothb", fa::bluetoothb },
  234. { "bold", fa::bold },
  235. { "bolt", fa::bolt },
  236. { "bomb", fa::bomb },
  237. { "book", fa::book },
  238. { "bookmark", fa::bookmark },
  239. { "bookmarko", fa::bookmarko },
  240. { "braille", fa::braille },
  241. { "briefcase", fa::briefcase },
  242. { "btc", fa::btc },
  243. { "bug", fa::bug },
  244. { "building", fa::building },
  245. { "buildingo", fa::buildingo },
  246. { "bullhorn", fa::bullhorn },
  247. { "bullseye", fa::bullseye },
  248. { "bus", fa::bus },
  249. { "buysellads", fa::buysellads },
  250. { "cab", fa::cab },
  251. { "calculator", fa::calculator },
  252. { "calendar", fa::calendar },
  253. { "calendarchecko", fa::calendarchecko },
  254. { "calendarminuso", fa::calendarminuso },
  255. { "calendaro", fa::calendaro },
  256. { "calendarpluso", fa::calendarpluso },
  257. { "calendartimeso", fa::calendartimeso },
  258. { "camera", fa::camera },
  259. { "cameraretro", fa::cameraretro },
  260. { "car", fa::car },
  261. { "caretdown", fa::caretdown },
  262. { "caretleft", fa::caretleft },
  263. { "caretright", fa::caretright },
  264. { "caretsquareodown", fa::caretsquareodown },
  265. { "caretsquareoleft", fa::caretsquareoleft },
  266. { "caretsquareoright", fa::caretsquareoright },
  267. { "caretsquareoup", fa::caretsquareoup },
  268. { "caretup", fa::caretup },
  269. { "cartarrowdown", fa::cartarrowdown },
  270. { "cartplus", fa::cartplus },
  271. { "cc", fa::cc },
  272. { "ccamex", fa::ccamex },
  273. { "ccdinersclub", fa::ccdinersclub },
  274. { "ccdiscover", fa::ccdiscover },
  275. { "ccjcb", fa::ccjcb },
  276. { "ccmastercard", fa::ccmastercard },
  277. { "ccpaypal", fa::ccpaypal },
  278. { "ccstripe", fa::ccstripe },
  279. { "ccvisa", fa::ccvisa },
  280. { "certificate", fa::certificate },
  281. { "chain", fa::chain },
  282. { "chainbroken", fa::chainbroken },
  283. { "check", fa::check },
  284. { "checkcircle", fa::checkcircle },
  285. { "checkcircleo", fa::checkcircleo },
  286. { "checksquare", fa::checksquare },
  287. { "checksquareo", fa::checksquareo },
  288. { "chevroncircledown", fa::chevroncircledown },
  289. { "chevroncircleleft", fa::chevroncircleleft },
  290. { "chevroncircleright", fa::chevroncircleright },
  291. { "chevroncircleup", fa::chevroncircleup },
  292. { "chevrondown", fa::chevrondown },
  293. { "chevronleft", fa::chevronleft },
  294. { "chevronright", fa::chevronright },
  295. { "chevronup", fa::chevronup },
  296. { "child", fa::child },
  297. { "chrome", fa::chrome },
  298. { "circle", fa::circle },
  299. { "circleo", fa::circleo },
  300. { "circleonotch", fa::circleonotch },
  301. { "circlethin", fa::circlethin },
  302. { "clipboard", fa::clipboard },
  303. { "clocko", fa::clocko },
  304. { "clone", fa::clone },
  305. { "close", fa::close },
  306. { "cloud", fa::cloud },
  307. { "clouddownload", fa::clouddownload },
  308. { "cloudupload", fa::cloudupload },
  309. { "cny", fa::cny },
  310. { "code", fa::code },
  311. { "codefork", fa::codefork },
  312. { "codepen", fa::codepen },
  313. { "codiepie", fa::codiepie },
  314. { "coffee", fa::coffee },
  315. { "cog", fa::cog },
  316. { "cogs", fa::cogs },
  317. { "columns", fa::columns },
  318. { "comment", fa::comment },
  319. { "commento", fa::commento },
  320. { "commenting", fa::commenting },
  321. { "commentingo", fa::commentingo },
  322. { "comments", fa::comments },
  323. { "commentso", fa::commentso },
  324. { "compass", fa::compass },
  325. { "compress", fa::compress },
  326. { "connectdevelop", fa::connectdevelop },
  327. { "contao", fa::contao },
  328. { "copy", fa::copy },
  329. { "copyright", fa::copyright },
  330. { "creativecommons", fa::creativecommons },
  331. { "creditcard", fa::creditcard },
  332. { "creditcardalt", fa::creditcardalt },
  333. { "crop", fa::crop },
  334. { "crosshairs", fa::crosshairs },
  335. { "css3", fa::css3 },
  336. { "cube", fa::cube },
  337. { "cubes", fa::cubes },
  338. { "cut", fa::cut },
  339. { "cutlery", fa::cutlery },
  340. { "dashboard", fa::dashboard },
  341. { "dashcube", fa::dashcube },
  342. { "database", fa::database },
  343. { "deaf", fa::deaf },
  344. { "deafness", fa::deafness },
  345. { "dedent", fa::dedent },
  346. { "delicious", fa::delicious },
  347. { "desktop", fa::desktop },
  348. { "deviantart", fa::deviantart },
  349. { "diamond", fa::diamond },
  350. { "digg", fa::digg },
  351. { "dollar", fa::dollar },
  352. { "dotcircleo", fa::dotcircleo },
  353. { "download", fa::download },
  354. { "dribbble", fa::dribbble },
  355. { "driverslicense", fa::driverslicense },
  356. { "driverslicenseo", fa::driverslicenseo },
  357. { "dropbox", fa::dropbox },
  358. { "drupal", fa::drupal },
  359. { "edge", fa::edge },
  360. { "edit", fa::edit },
  361. { "eercast", fa::eercast },
  362. { "eject", fa::eject },
  363. { "ellipsish", fa::ellipsish },
  364. { "ellipsisv", fa::ellipsisv },
  365. { "empire", fa::empire },
  366. { "envelope", fa::envelope },
  367. { "envelopeo", fa::envelopeo },
  368. { "envelopeopen", fa::envelopeopen },
  369. { "envelopeopeno", fa::envelopeopeno },
  370. { "envelopesquare", fa::envelopesquare },
  371. { "envira", fa::envira },
  372. { "eraser", fa::eraser },
  373. { "etsy", fa::etsy },
  374. { "eur", fa::eur },
  375. { "euro", fa::euro },
  376. { "exchange", fa::exchange },
  377. { "exclamation", fa::exclamation },
  378. { "exclamationcircle", fa::exclamationcircle },
  379. { "exclamationtriangle", fa::exclamationtriangle },
  380. { "expand", fa::expand },
  381. { "expeditedssl", fa::expeditedssl },
  382. { "externallink", fa::externallink },
  383. { "externallinksquare", fa::externallinksquare },
  384. { "eye", fa::eye },
  385. { "eyeslash", fa::eyeslash },
  386. { "eyedropper", fa::eyedropper },
  387. { "fa", fa::fa },
  388. { "facebook", fa::facebook },
  389. { "facebookf", fa::facebookf },
  390. { "facebookofficial", fa::facebookofficial },
  391. { "facebooksquare", fa::facebooksquare },
  392. { "fastbackward", fa::fastbackward },
  393. { "fastforward", fa::fastforward },
  394. { "fax", fa::fax },
  395. { "feed", fa::feed },
  396. { "female", fa::female },
  397. { "fighterjet", fa::fighterjet },
  398. { "file", fa::file },
  399. { "filearchiveo", fa::filearchiveo },
  400. { "fileaudioo", fa::fileaudioo },
  401. { "filecodeo", fa::filecodeo },
  402. { "fileexcelo", fa::fileexcelo },
  403. { "fileimageo", fa::fileimageo },
  404. { "filemovieo", fa::filemovieo },
  405. { "fileo", fa::fileo },
  406. { "filepdfo", fa::filepdfo },
  407. { "filephotoo", fa::filephotoo },
  408. { "filepictureo", fa::filepictureo },
  409. { "filepowerpointo", fa::filepowerpointo },
  410. { "filesoundo", fa::filesoundo },
  411. { "filetext", fa::filetext },
  412. { "filetexto", fa::filetexto },
  413. { "filevideoo", fa::filevideoo },
  414. { "filewordo", fa::filewordo },
  415. { "filezipo", fa::filezipo },
  416. { "fileso", fa::fileso },
  417. { "film", fa::film },
  418. { "filter", fa::filter },
  419. { "fire", fa::fire },
  420. { "fireextinguisher", fa::fireextinguisher },
  421. { "firefox", fa::firefox },
  422. { "firstorder", fa::firstorder },
  423. { "flag", fa::flag },
  424. { "flagcheckered", fa::flagcheckered },
  425. { "flago", fa::flago },
  426. { "flash", fa::flash },
  427. { "flask", fa::flask },
  428. { "flickr", fa::flickr },
  429. { "floppyo", fa::floppyo },
  430. { "folder", fa::folder },
  431. { "foldero", fa::foldero },
  432. { "folderopen", fa::folderopen },
  433. { "folderopeno", fa::folderopeno },
  434. { "font", fa::font },
  435. { "fontawesome", fa::fontawesome },
  436. { "fonticons", fa::fonticons },
  437. { "fortawesome", fa::fortawesome },
  438. { "forumbee", fa::forumbee },
  439. { "forward", fa::forward },
  440. { "foursquare", fa::foursquare },
  441. { "freecodecamp", fa::freecodecamp },
  442. { "frowno", fa::frowno },
  443. { "futbolo", fa::futbolo },
  444. { "gamepad", fa::gamepad },
  445. { "gavel", fa::gavel },
  446. { "gbp", fa::gbp },
  447. { "ge", fa::ge },
  448. { "gear", fa::gear },
  449. { "gears", fa::gears },
  450. { "genderless", fa::genderless },
  451. { "getpocket", fa::getpocket },
  452. { "gg", fa::gg },
  453. { "ggcircle", fa::ggcircle },
  454. { "gift", fa::gift },
  455. { "git", fa::git },
  456. { "gitsquare", fa::gitsquare },
  457. { "github", fa::github },
  458. { "githubalt", fa::githubalt },
  459. { "githubsquare", fa::githubsquare },
  460. { "gitlab", fa::gitlab },
  461. { "gittip", fa::gittip },
  462. { "glass", fa::glass },
  463. { "glide", fa::glide },
  464. { "glideg", fa::glideg },
  465. { "globe", fa::globe },
  466. { "google", fa::google },
  467. { "googleplus", fa::googleplus },
  468. { "googlepluscircle", fa::googlepluscircle },
  469. { "googleplusofficial", fa::googleplusofficial },
  470. { "googleplussquare", fa::googleplussquare },
  471. { "googlewallet", fa::googlewallet },
  472. { "graduationcap", fa::graduationcap },
  473. { "gratipay", fa::gratipay },
  474. { "grav", fa::grav },
  475. { "group", fa::group },
  476. { "hsquare", fa::hsquare },
  477. { "hackernews", fa::hackernews },
  478. { "handgrabo", fa::handgrabo },
  479. { "handlizardo", fa::handlizardo },
  480. { "handodown", fa::handodown },
  481. { "handoleft", fa::handoleft },
  482. { "handoright", fa::handoright },
  483. { "handoup", fa::handoup },
  484. { "handpapero", fa::handpapero },
  485. { "handpeaceo", fa::handpeaceo },
  486. { "handpointero", fa::handpointero },
  487. { "handrocko", fa::handrocko },
  488. { "handscissorso", fa::handscissorso },
  489. { "handspocko", fa::handspocko },
  490. { "handstopo", fa::handstopo },
  491. { "handshakeo", fa::handshakeo },
  492. { "hardofhearing", fa::hardofhearing },
  493. { "hashtag", fa::hashtag },
  494. { "hddo", fa::hddo },
  495. { "header", fa::header },
  496. { "headphones", fa::headphones },
  497. { "heart", fa::heart },
  498. { "hearto", fa::hearto },
  499. { "heartbeat", fa::heartbeat },
  500. { "history", fa::history },
  501. { "home", fa::home },
  502. { "hospitalo", fa::hospitalo },
  503. { "hotel", fa::hotel },
  504. { "hourglass", fa::hourglass },
  505. { "hourglass1", fa::hourglass1 },
  506. { "hourglass2", fa::hourglass2 },
  507. { "hourglass3", fa::hourglass3 },
  508. { "hourglassend", fa::hourglassend },
  509. { "hourglasshalf", fa::hourglasshalf },
  510. { "hourglasso", fa::hourglasso },
  511. { "hourglassstart", fa::hourglassstart },
  512. { "houzz", fa::houzz },
  513. { "html5", fa::html5 },
  514. { "icursor", fa::icursor },
  515. { "idbadge", fa::idbadge },
  516. { "idcard", fa::idcard },
  517. { "idcardo", fa::idcardo },
  518. { "ils", fa::ils },
  519. { "image", fa::image },
  520. { "imdb", fa::imdb },
  521. { "inbox", fa::inbox },
  522. { "indent", fa::indent },
  523. { "industry", fa::industry },
  524. { "info", fa::info },
  525. { "infocircle", fa::infocircle },
  526. { "inr", fa::inr },
  527. { "instagram", fa::instagram },
  528. { "institution", fa::institution },
  529. { "internetexplorer", fa::internetexplorer },
  530. { "intersex", fa::intersex },
  531. { "ioxhost", fa::ioxhost },
  532. { "italic", fa::italic },
  533. { "joomla", fa::joomla },
  534. { "jpy", fa::jpy },
  535. { "jsfiddle", fa::jsfiddle },
  536. { "key", fa::key },
  537. { "keyboardo", fa::keyboardo },
  538. { "krw", fa::krw },
  539. { "language", fa::language },
  540. { "laptop", fa::laptop },
  541. { "lastfm", fa::lastfm },
  542. { "lastfmsquare", fa::lastfmsquare },
  543. { "leaf", fa::leaf },
  544. { "leanpub", fa::leanpub },
  545. { "legal", fa::legal },
  546. { "lemono", fa::lemono },
  547. { "leveldown", fa::leveldown },
  548. { "levelup", fa::levelup },
  549. { "lifebouy", fa::lifebouy },
  550. { "lifebuoy", fa::lifebuoy },
  551. { "lifering", fa::lifering },
  552. { "lifesaver", fa::lifesaver },
  553. { "lightbulbo", fa::lightbulbo },
  554. { "linechart", fa::linechart },
  555. { "link", fa::link },
  556. { "linkedin", fa::linkedin },
  557. { "linkedinsquare", fa::linkedinsquare },
  558. { "linode", fa::linode },
  559. { "fa_linux", fa::fa_linux },
  560. { "list", fa::list },
  561. { "listalt", fa::listalt },
  562. { "listol", fa::listol },
  563. { "listul", fa::listul },
  564. { "locationarrow", fa::locationarrow },
  565. { "lock", fa::lock },
  566. { "longarrowdown", fa::longarrowdown },
  567. { "longarrowleft", fa::longarrowleft },
  568. { "longarrowright", fa::longarrowright },
  569. { "longarrowup", fa::longarrowup },
  570. { "lowvision", fa::lowvision },
  571. { "magic", fa::magic },
  572. { "magnet", fa::magnet },
  573. { "mailforward", fa::mailforward },
  574. { "mailreply", fa::mailreply },
  575. { "mailreplyall", fa::mailreplyall },
  576. { "male", fa::male },
  577. { "map", fa::map },
  578. { "mapmarker", fa::mapmarker },
  579. { "mapo", fa::mapo },
  580. { "mappin", fa::mappin },
  581. { "mapsigns", fa::mapsigns },
  582. { "mars", fa::mars },
  583. { "marsdouble", fa::marsdouble },
  584. { "marsstroke", fa::marsstroke },
  585. { "marsstrokeh", fa::marsstrokeh },
  586. { "marsstrokev", fa::marsstrokev },
  587. { "maxcdn", fa::maxcdn },
  588. { "meanpath", fa::meanpath },
  589. { "medium", fa::medium },
  590. { "medkit", fa::medkit },
  591. { "meetup", fa::meetup },
  592. { "meho", fa::meho },
  593. { "mercury", fa::mercury },
  594. { "microchip", fa::microchip },
  595. { "microphone", fa::microphone },
  596. { "microphoneslash", fa::microphoneslash },
  597. { "minus", fa::minus },
  598. { "minuscircle", fa::minuscircle },
  599. { "minussquare", fa::minussquare },
  600. { "minussquareo", fa::minussquareo },
  601. { "mixcloud", fa::mixcloud },
  602. { "mobile", fa::mobile },
  603. { "mobilephone", fa::mobilephone },
  604. { "modx", fa::modx },
  605. { "money", fa::money },
  606. { "moono", fa::moono },
  607. { "mortarboard", fa::mortarboard },
  608. { "motorcycle", fa::motorcycle },
  609. { "mousepointer", fa::mousepointer },
  610. { "music", fa::music },
  611. { "navicon", fa::navicon },
  612. { "neuter", fa::neuter },
  613. { "newspapero", fa::newspapero },
  614. { "objectgroup", fa::objectgroup },
  615. { "objectungroup", fa::objectungroup },
  616. { "odnoklassniki", fa::odnoklassniki },
  617. { "odnoklassnikisquare", fa::odnoklassnikisquare },
  618. { "opencart", fa::opencart },
  619. { "openid", fa::openid },
  620. { "opera", fa::opera },
  621. { "optinmonster", fa::optinmonster },
  622. { "outdent", fa::outdent },
  623. { "pagelines", fa::pagelines },
  624. { "paintbrush", fa::paintbrush },
  625. { "paperplane", fa::paperplane },
  626. { "paperplaneo", fa::paperplaneo },
  627. { "paperclip", fa::paperclip },
  628. { "paragraph", fa::paragraph },
  629. { "paste", fa::paste },
  630. { "pause", fa::pause },
  631. { "pausecircle", fa::pausecircle },
  632. { "pausecircleo", fa::pausecircleo },
  633. { "paw", fa::paw },
  634. { "paypal", fa::paypal },
  635. { "pencil", fa::pencil },
  636. { "pencilsquare", fa::pencilsquare },
  637. { "pencilsquareo", fa::pencilsquareo },
  638. { "percent", fa::percent },
  639. { "phone", fa::phone },
  640. { "phonesquare", fa::phonesquare },
  641. { "photo", fa::photo },
  642. { "pictureo", fa::pictureo },
  643. { "piechart", fa::piechart },
  644. { "piedpiper", fa::piedpiper },
  645. { "piedpiperalt", fa::piedpiperalt },
  646. { "piedpiperpp", fa::piedpiperpp },
  647. { "pinterest", fa::pinterest },
  648. { "pinterestp", fa::pinterestp },
  649. { "pinterestsquare", fa::pinterestsquare },
  650. { "plane", fa::plane },
  651. { "play", fa::play },
  652. { "playcircle", fa::playcircle },
  653. { "playcircleo", fa::playcircleo },
  654. { "plug", fa::plug },
  655. { "plus", fa::plus },
  656. { "pluscircle", fa::pluscircle },
  657. { "plussquare", fa::plussquare },
  658. { "plussquareo", fa::plussquareo },
  659. { "podcast", fa::podcast },
  660. { "poweroff", fa::poweroff },
  661. { "print", fa::print },
  662. { "producthunt", fa::producthunt },
  663. { "puzzlepiece", fa::puzzlepiece },
  664. { "qq", fa::qq },
  665. { "qrcode", fa::qrcode },
  666. { "question", fa::question },
  667. { "questioncircle", fa::questioncircle },
  668. { "questioncircleo", fa::questioncircleo },
  669. { "quora", fa::quora },
  670. { "quoteleft", fa::quoteleft },
  671. { "quoteright", fa::quoteright },
  672. { "ra", fa::ra },
  673. { "random", fa::random },
  674. { "ravelry", fa::ravelry },
  675. { "rebel", fa::rebel },
  676. { "recycle", fa::recycle },
  677. { "reddit", fa::reddit },
  678. { "redditalien", fa::redditalien },
  679. { "redditsquare", fa::redditsquare },
  680. { "refresh", fa::refresh },
  681. { "registered", fa::registered },
  682. { "remove", fa::remove },
  683. { "renren", fa::renren },
  684. { "reorder", fa::reorder },
  685. { "repeat", fa::repeat },
  686. { "reply", fa::reply },
  687. { "replyall", fa::replyall },
  688. { "resistance", fa::resistance },
  689. { "retweet", fa::retweet },
  690. { "rmb", fa::rmb },
  691. { "road", fa::road },
  692. { "rocket", fa::rocket },
  693. { "rotateleft", fa::rotateleft },
  694. { "rotateright", fa::rotateright },
  695. { "rouble", fa::rouble },
  696. { "rss", fa::rss },
  697. { "rsssquare", fa::rsssquare },
  698. { "rub", fa::rub },
  699. { "ruble", fa::ruble },
  700. { "rupee", fa::rupee },
  701. { "s15", fa::s15 },
  702. { "safari", fa::safari },
  703. { "save", fa::save },
  704. { "scissors", fa::scissors },
  705. { "scribd", fa::scribd },
  706. { "search", fa::search },
  707. { "searchminus", fa::searchminus },
  708. { "searchplus", fa::searchplus },
  709. { "sellsy", fa::sellsy },
  710. { "send", fa::send },
  711. { "sendo", fa::sendo },
  712. { "server", fa::server },
  713. { "share", fa::share },
  714. { "sharealt", fa::sharealt },
  715. { "sharealtsquare", fa::sharealtsquare },
  716. { "sharesquare", fa::sharesquare },
  717. { "sharesquareo", fa::sharesquareo },
  718. { "shekel", fa::shekel },
  719. { "sheqel", fa::sheqel },
  720. { "shield", fa::shield },
  721. { "ship", fa::ship },
  722. { "shirtsinbulk", fa::shirtsinbulk },
  723. { "shoppingbag", fa::shoppingbag },
  724. { "shoppingbasket", fa::shoppingbasket },
  725. { "shoppingcart", fa::shoppingcart },
  726. { "shower", fa::shower },
  727. { "signin", fa::signin },
  728. { "signlanguage", fa::signlanguage },
  729. { "signout", fa::signout },
  730. { "signal", fa::signal },
  731. { "signing", fa::signing },
  732. { "simplybuilt", fa::simplybuilt },
  733. { "sitemap", fa::sitemap },
  734. { "skyatlas", fa::skyatlas },
  735. { "skype", fa::skype },
  736. { "slack", fa::slack },
  737. { "sliders", fa::sliders },
  738. { "slideshare", fa::slideshare },
  739. { "smileo", fa::smileo },
  740. { "snapchat", fa::snapchat },
  741. { "snapchatghost", fa::snapchatghost },
  742. { "snapchatsquare", fa::snapchatsquare },
  743. { "snowflakeo", fa::snowflakeo },
  744. { "soccerballo", fa::soccerballo },
  745. { "sort", fa::sort },
  746. { "sortalphaasc", fa::sortalphaasc },
  747. { "sortalphadesc", fa::sortalphadesc },
  748. { "sortamountasc", fa::sortamountasc },
  749. { "sortamountdesc", fa::sortamountdesc },
  750. { "sortasc", fa::sortasc },
  751. { "sortdesc", fa::sortdesc },
  752. { "sortdown", fa::sortdown },
  753. { "sortnumericasc", fa::sortnumericasc },
  754. { "sortnumericdesc", fa::sortnumericdesc },
  755. { "sortup", fa::sortup },
  756. { "soundcloud", fa::soundcloud },
  757. { "spaceshuttle", fa::spaceshuttle },
  758. { "spinner", fa::spinner },
  759. { "spoon", fa::spoon },
  760. { "spotify", fa::spotify },
  761. { "square", fa::square },
  762. { "squareo", fa::squareo },
  763. { "stackexchange", fa::stackexchange },
  764. { "stackoverflow", fa::stackoverflow },
  765. { "star", fa::star },
  766. { "starhalf", fa::starhalf },
  767. { "starhalfempty", fa::starhalfempty },
  768. { "starhalffull", fa::starhalffull },
  769. { "starhalfo", fa::starhalfo },
  770. { "staro", fa::staro },
  771. { "steam", fa::steam },
  772. { "steamsquare", fa::steamsquare },
  773. { "stepbackward", fa::stepbackward },
  774. { "stepforward", fa::stepforward },
  775. { "stethoscope", fa::stethoscope },
  776. { "stickynote", fa::stickynote },
  777. { "stickynoteo", fa::stickynoteo },
  778. { "stop", fa::stop },
  779. { "stopcircle", fa::stopcircle },
  780. { "stopcircleo", fa::stopcircleo },
  781. { "streetview", fa::streetview },
  782. { "strikethrough", fa::strikethrough },
  783. { "stumbleupon", fa::stumbleupon },
  784. { "stumbleuponcircle", fa::stumbleuponcircle },
  785. { "subscript", fa::subscript },
  786. { "subway", fa::subway },
  787. { "suitcase", fa::suitcase },
  788. { "suno", fa::suno },
  789. { "superpowers", fa::superpowers },
  790. { "superscript", fa::superscript },
  791. { "support", fa::support },
  792. { "table", fa::table },
  793. { "tablet", fa::tablet },
  794. { "tachometer", fa::tachometer },
  795. { "tag", fa::tag },
  796. { "tags", fa::tags },
  797. { "tasks", fa::tasks },
  798. { "taxi", fa::taxi },
  799. { "telegram", fa::telegram },
  800. { "television", fa::television },
  801. { "tencentweibo", fa::tencentweibo },
  802. { "terminal", fa::terminal },
  803. { "textheight", fa::textheight },
  804. { "textwidth", fa::textwidth },
  805. { "th", fa::th },
  806. { "thlarge", fa::thlarge },
  807. { "thlist", fa::thlist },
  808. { "themeisle", fa::themeisle },
  809. { "thermometer", fa::thermometer },
  810. { "thermometer0", fa::thermometer0 },
  811. { "thermometer1", fa::thermometer1 },
  812. { "thermometer2", fa::thermometer2 },
  813. { "thermometer3", fa::thermometer3 },
  814. { "thermometer4", fa::thermometer4 },
  815. { "thermometerempty", fa::thermometerempty },
  816. { "thermometerfull", fa::thermometerfull },
  817. { "thermometerhalf", fa::thermometerhalf },
  818. { "thermometerquarter", fa::thermometerquarter },
  819. { "thermometerthreequarters", fa::thermometerthreequarters },
  820. { "thumbtack", fa::thumbtack },
  821. { "thumbsdown", fa::thumbsdown },
  822. { "thumbsodown", fa::thumbsodown },
  823. { "thumbsoup", fa::thumbsoup },
  824. { "thumbsup", fa::thumbsup },
  825. { "ticket", fa::ticket },
  826. { "times", fa::times },
  827. { "timescircle", fa::timescircle },
  828. { "timescircleo", fa::timescircleo },
  829. { "timesrectangle", fa::timesrectangle },
  830. { "timesrectangleo", fa::timesrectangleo },
  831. { "tint", fa::tint },
  832. { "toggledown", fa::toggledown },
  833. { "toggleleft", fa::toggleleft },
  834. { "toggleoff", fa::toggleoff },
  835. { "toggleon", fa::toggleon },
  836. { "toggleright", fa::toggleright },
  837. { "toggleup", fa::toggleup },
  838. { "trademark", fa::trademark },
  839. { "train", fa::train },
  840. { "transgender", fa::transgender },
  841. { "transgenderalt", fa::transgenderalt },
  842. { "trash", fa::trash },
  843. { "trasho", fa::trasho },
  844. { "tree", fa::tree },
  845. { "trello", fa::trello },
  846. { "tripadvisor", fa::tripadvisor },
  847. { "trophy", fa::trophy },
  848. { "truck", fa::truck },
  849. { "fa_try", fa::fa_try },
  850. { "tty", fa::tty },
  851. { "tumblr", fa::tumblr },
  852. { "tumblrsquare", fa::tumblrsquare },
  853. { "turkishlira", fa::turkishlira },
  854. { "tv", fa::tv },
  855. { "twitch", fa::twitch },
  856. { "twitter", fa::twitter },
  857. { "twittersquare", fa::twittersquare },
  858. { "umbrella", fa::umbrella },
  859. { "underline", fa::underline },
  860. { "undo", fa::undo },
  861. { "universalaccess", fa::universalaccess },
  862. { "university", fa::university },
  863. { "unlink", fa::unlink },
  864. { "unlock", fa::unlock },
  865. { "unlockalt", fa::unlockalt },
  866. { "unsorted", fa::unsorted },
  867. { "upload", fa::upload },
  868. { "usb", fa::usb },
  869. { "usd", fa::usd },
  870. { "user", fa::user },
  871. { "usercircle", fa::usercircle },
  872. { "usercircleo", fa::usercircleo },
  873. { "usermd", fa::usermd },
  874. { "usero", fa::usero },
  875. { "userplus", fa::userplus },
  876. { "usersecret", fa::usersecret },
  877. { "usertimes", fa::usertimes },
  878. { "users", fa::users },
  879. { "vcard", fa::vcard },
  880. { "vcardo", fa::vcardo },
  881. { "venus", fa::venus },
  882. { "venusdouble", fa::venusdouble },
  883. { "venusmars", fa::venusmars },
  884. { "viacoin", fa::viacoin },
  885. { "viadeo", fa::viadeo },
  886. { "viadeosquare", fa::viadeosquare },
  887. { "videocamera", fa::videocamera },
  888. { "vimeo", fa::vimeo },
  889. { "vimeosquare", fa::vimeosquare },
  890. { "vine", fa::vine },
  891. { "vk", fa::vk },
  892. { "volumecontrolphone", fa::volumecontrolphone },
  893. { "volumedown", fa::volumedown },
  894. { "volumeoff", fa::volumeoff },
  895. { "volumeup", fa::volumeup },
  896. { "warning", fa::warning },
  897. { "wechat", fa::wechat },
  898. { "weibo", fa::weibo },
  899. { "weixin", fa::weixin },
  900. { "whatsapp", fa::whatsapp },
  901. { "wheelchair", fa::wheelchair },
  902. { "wheelchairalt", fa::wheelchairalt },
  903. { "wifi", fa::wifi },
  904. { "wikipediaw", fa::wikipediaw },
  905. { "windowclose", fa::windowclose },
  906. { "windowcloseo", fa::windowcloseo },
  907. { "windowmaximize", fa::windowmaximize },
  908. { "windowminimize", fa::windowminimize },
  909. { "windowrestore", fa::windowrestore },
  910. { "windows", fa::windows },
  911. { "won", fa::won },
  912. { "wordpress", fa::wordpress },
  913. { "wpbeginner", fa::wpbeginner },
  914. { "wpexplorer", fa::wpexplorer },
  915. { "wpforms", fa::wpforms },
  916. { "wrench", fa::wrench },
  917. { "xing", fa::xing },
  918. { "xingsquare", fa::xingsquare },
  919. { "ycombinator", fa::ycombinator },
  920. { "ycombinatorsquare", fa::ycombinatorsquare },
  921. { "yahoo", fa::yahoo },
  922. { "yc", fa::yc },
  923. { "ycsquare", fa::ycsquare },
  924. { "yelp", fa::yelp },
  925. { "yen", fa::yen },
  926. { "yoast", fa::yoast },
  927. { "youtube", fa::youtube },
  928. { "youtubeplay", fa::youtubeplay },
  929. { "youtubesquare", fa::youtubesquare } };
  930. /// a specialized init function so font-awesome is loaded and initialized
  931. /// this method return true on success, it will return false if the fnot cannot be initialized
  932. /// To initialize QtAwesome with font-awesome you need to call this method
  933. bool QtAwesome::initFontAwesome()
  934. {
  935. static int fontAwesomeFontId = -1;
  936. // only load font-awesome once
  937. if (fontAwesomeFontId < 0) {
  938. // The macro below internally calls "qInitResources_QtAwesome()". this initializes
  939. // the resource system. For a .pri project this isn't required, but when building and using a
  940. // static library the resource need to initialized first.
  941. ///
  942. // I've checked th qInitResource_* code and calling this method mutliple times shouldn't be any problem
  943. // (More info about this subject: http://qt-project.org/wiki/QtResources)
  944. Q_INIT_RESOURCE(QtAwesome);
  945. // load the font file
  946. QFile res(":/fonts/fontawesome-4.7.0.ttf");
  947. if (!res.open(QIODevice::ReadOnly)) {
  948. qDebug() << "Font awesome font could not be loaded!";
  949. return false;
  950. }
  951. QByteArray fontData(res.readAll());
  952. res.close();
  953. // fetch the given font
  954. fontAwesomeFontId = QFontDatabase::addApplicationFontFromData(fontData);
  955. }
  956. QStringList loadedFontFamilies = QFontDatabase::applicationFontFamilies(fontAwesomeFontId);
  957. if (!loadedFontFamilies.empty()) {
  958. fontName_ = loadedFontFamilies.at(0);
  959. } else {
  960. qDebug() << "Font awesome font is empty?!";
  961. fontAwesomeFontId = -1; // restore the font-awesome id
  962. return false;
  963. }
  964. // intialize the map
  965. QHash<QString, int> &m = namedCodepoints_;
  966. for (unsigned i = 0; i < sizeof(faNameIconArray) / sizeof(FANameIcon); ++i) {
  967. m.insert(faNameIconArray[i].name, faNameIconArray[i].icon);
  968. }
  969. return true;
  970. }
  971. void QtAwesome::addNamedCodepoint(const QString &name, int codePoint)
  972. {
  973. namedCodepoints_.insert(name, codePoint);
  974. }
  975. /// Sets a default option. These options are passed on to the icon painters
  976. void QtAwesome::setDefaultOption(const QString &name, const QVariant &value)
  977. {
  978. defaultOptions_.insert(name, value);
  979. }
  980. /// Returns the default option for the given name
  981. QVariant QtAwesome::defaultOption(const QString &name)
  982. {
  983. return defaultOptions_.value(name);
  984. }
  985. // internal helper method to merge to option amps
  986. static QVariantMap mergeOptions(const QVariantMap &defaults, const QVariantMap &override)
  987. {
  988. QVariantMap result = defaults;
  989. if (!override.isEmpty()) {
  990. QMapIterator<QString, QVariant> itr(override);
  991. while (itr.hasNext()) {
  992. itr.next();
  993. result.insert(itr.key(), itr.value());
  994. }
  995. }
  996. return result;
  997. }
  998. /// Creates an icon with the given code-point
  999. /// <code>
  1000. /// awesome->icon( icon_group )
  1001. /// </code>
  1002. QIcon QtAwesome::icon(int character, const QVariantMap &options)
  1003. {
  1004. // create a merged QVariantMap to have default options and icon-specific options
  1005. QVariantMap optionMap = mergeOptions(defaultOptions_, options);
  1006. optionMap.insert("text", QString(QChar(static_cast<int>(character))));
  1007. return icon(fontIconPainter_, optionMap);
  1008. }
  1009. /// Creates an icon with the given name
  1010. ///
  1011. /// You can use the icon names as defined on http://fortawesome.github.io/Font-Awesome/design.html withour the 'icon-'
  1012. /// prefix
  1013. /// @param name the name of the icon
  1014. /// @param options extra option to pass to the icon renderer
  1015. QIcon QtAwesome::icon(const QString &name, const QVariantMap &options)
  1016. {
  1017. // when it's a named codepoint
  1018. if (namedCodepoints_.count(name)) { return icon(namedCodepoints_.value(name), options); }
  1019. // create a merged QVariantMap to have default options and icon-specific options
  1020. QVariantMap optionMap = mergeOptions(defaultOptions_, options);
  1021. // this method first tries to retrieve the icon
  1022. QtAwesomeIconPainter *painter = painterMap_.value(name);
  1023. if (!painter) { return QIcon(); }
  1024. return icon(painter, optionMap);
  1025. }
  1026. /// Create a dynamic icon by simlpy supplying a painter object
  1027. /// The ownership of the painter is NOT transfered.
  1028. /// @param painter a dynamic painter that is going to paint the icon
  1029. /// @param optionmap the options to pass to the painter
  1030. QIcon QtAwesome::icon(QtAwesomeIconPainter *painter, const QVariantMap &optionMap)
  1031. {
  1032. // Warning, when you use memoryleak detection. You should turn it of for the next call
  1033. // QIcon's placed in gui items are often cached and not deleted when my memory-leak detection checks for leaks.
  1034. // I'm not sure if it's a Qt bug or something I do wrong
  1035. QtAwesomeIconPainterIconEngine *engine = new QtAwesomeIconPainterIconEngine(this, painter, optionMap);
  1036. return QIcon(engine);
  1037. }
  1038. /// Adds a named icon-painter to the QtAwesome icon map
  1039. /// As the name applies the ownership is passed over to QtAwesome
  1040. ///
  1041. /// @param name the name of the icon
  1042. /// @param painter the icon painter to add for this name
  1043. void QtAwesome::give(const QString &name, QtAwesomeIconPainter *painter)
  1044. {
  1045. delete painterMap_.value(name); // delete the old one
  1046. painterMap_.insert(name, painter);
  1047. }
  1048. /// Creates/Gets the icon font with a given size in pixels. This can be usefull to use a label for displaying icons
  1049. /// Example:
  1050. ///
  1051. /// QLabel* label = new QLabel( QChar( icon_group ) );
  1052. /// label->setFont( awesome->font(16) )
  1053. QFont QtAwesome::font(int size)
  1054. {
  1055. QFont font(fontName_);
  1056. font.setPixelSize(size);
  1057. return font;
  1058. }