diff options
Diffstat (limited to 'launcher/widgets/WideBar.cpp')
-rw-r--r-- | launcher/widgets/WideBar.cpp | 116 |
1 files changed, 0 insertions, 116 deletions
diff --git a/launcher/widgets/WideBar.cpp b/launcher/widgets/WideBar.cpp deleted file mode 100644 index cbd6c617..00000000 --- a/launcher/widgets/WideBar.cpp +++ /dev/null @@ -1,116 +0,0 @@ -#include "WideBar.h" -#include <QToolButton> -#include <QMenu> - -class ActionButton : public QToolButton -{ - Q_OBJECT -public: - ActionButton(QAction * action, QWidget * parent = 0) : QToolButton(parent), m_action(action) { - setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); - connect(action, &QAction::changed, this, &ActionButton::actionChanged); - connect(this, &ActionButton::clicked, action, &QAction::trigger); - actionChanged(); - }; -private slots: - void actionChanged() { - setEnabled(m_action->isEnabled()); - setChecked(m_action->isChecked()); - setCheckable(m_action->isCheckable()); - setText(m_action->text()); - setIcon(m_action->icon()); - setToolTip(m_action->toolTip()); - setHidden(!m_action->isVisible()); - setFocusPolicy(Qt::NoFocus); - } -private: - QAction * m_action; -}; - - -WideBar::WideBar(const QString& title, QWidget* parent) : QToolBar(title, parent) -{ - setFloatable(false); - setMovable(false); -} - -WideBar::WideBar(QWidget* parent) : QToolBar(parent) -{ - setFloatable(false); - setMovable(false); -} - -struct WideBar::BarEntry { - enum Type { - None, - Action, - Separator, - Spacer - } type = None; - QAction *qAction = nullptr; - QAction *wideAction = nullptr; -}; - - -WideBar::~WideBar() -{ - for(auto *iter: m_entries) { - delete iter; - } -} - -void WideBar::addAction(QAction* action) -{ - auto entry = new BarEntry(); - entry->qAction = addWidget(new ActionButton(action, this)); - entry->wideAction = action; - entry->type = BarEntry::Action; - m_entries.push_back(entry); -} - -void WideBar::addSeparator() -{ - auto entry = new BarEntry(); - entry->qAction = QToolBar::addSeparator(); - entry->type = BarEntry::Separator; - m_entries.push_back(entry); -} - -void WideBar::insertSpacer(QAction* action) -{ - auto iter = std::find_if(m_entries.begin(), m_entries.end(), [action](BarEntry * entry) { - return entry->wideAction == action; - }); - if(iter == m_entries.end()) { - return; - } - QWidget* spacer = new QWidget(); - spacer->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); - - auto entry = new BarEntry(); - entry->qAction = insertWidget((*iter)->qAction, spacer); - entry->type = BarEntry::Spacer; - m_entries.insert(iter, entry); -} - -QMenu * WideBar::createContextMenu(QWidget *parent, const QString & title) -{ - QMenu *contextMenu = new QMenu(title, parent); - for(auto & item: m_entries) { - switch(item->type) { - default: - case BarEntry::None: - break; - case BarEntry::Separator: - case BarEntry::Spacer: - contextMenu->addSeparator(); - break; - case BarEntry::Action: - contextMenu->addAction(item->wideAction); - break; - } - } - return contextMenu; -} - -#include "WideBar.moc" |