diff --git a/custom_widgets/yacreader_macosx_toolbar.h b/custom_widgets/yacreader_macosx_toolbar.h index c669db24..4bdcb7eb 100644 --- a/custom_widgets/yacreader_macosx_toolbar.h +++ b/custom_widgets/yacreader_macosx_toolbar.h @@ -29,6 +29,23 @@ signals: void filterChanged(YACReader::SearchModifiers, QString); }; +class MacToolBarItemWrapper : public QObject +{ + Q_OBJECT +public: + MacToolBarItemWrapper(QAction * action, QMacToolBarItem * toolbaritem); + +public slots: + void actionToggled(bool toogled); + +private: + QAction * action; + QMacToolBarItem * toolbaritem; + + void updateIcon(bool checked); +}; + + class YACReaderMacOSXToolbar : public QMacToolBar { Q_OBJECT diff --git a/custom_widgets/yacreader_macosx_toolbar.mm b/custom_widgets/yacreader_macosx_toolbar.mm index 9167df6c..9ce69037 100644 --- a/custom_widgets/yacreader_macosx_toolbar.mm +++ b/custom_widgets/yacreader_macosx_toolbar.mm @@ -190,8 +190,12 @@ void YACReaderMacOSXToolbar::addAction(QAction *action) if(action->data().toString() == TOGGLE_COMICS_VIEW_ACTION_YL) viewSelector = toolBarItem; connect(toolBarItem,SIGNAL(activated()),action, SIGNAL(triggered())); + NSToolbarItem * nativeItem = toolBarItem->nativeToolBarItem(); actions.insert(QString::fromNSString(nativeItem.itemIdentifier),action); + + MacToolBarItemWrapper * wrapper = new MacToolBarItemWrapper(action,toolBarItem); + //wrapper->actionToogled(true); } void YACReaderMacOSXToolbar::addDropDownItem(const QList &actions, const QAction *defaultAction) @@ -325,3 +329,37 @@ void YACReaderMacOSXSearchLineEdit::setEnabled(bool enabled) { [((NSTextField *)nstextfield) setEnabled:enabled]; } + + +MacToolBarItemWrapper::MacToolBarItemWrapper(QAction *action, QMacToolBarItem *toolbaritem) + :action(action),toolbaritem(toolbaritem) +{ + if(action->isCheckable()) + { + connect(action,SIGNAL(toggled(bool)),this,SLOT(actionToggled(bool))); + connect(toolbaritem,SIGNAL(activated()), action, SLOT(toggle())); + updateIcon(action->isChecked()); + } +} + +void MacToolBarItemWrapper::actionToggled(bool toogled) +{ + updateIcon(toogled); +} + +void MacToolBarItemWrapper::updateIcon(bool enabled) +{ + if(enabled) + { + QIcon icon = action->icon(); + QPixmap tempPixmap = icon.pixmap(QSize(24,24)); + QPainter painter; + painter.begin(&tempPixmap); + painter.fillRect(QRect(3,22,18,2),QColor("#EBBE00")); + painter.end(); + + toolbaritem->setIcon(QIcon(tempPixmap)); + } + else + toolbaritem->setIcon(action->icon()); +}