Files
comaps/qt/popup_menu_holder.cpp
Konstantin Pastbin e3e4a1985a Organic Maps sources as of 02.04.2025 (fad26bbf22ac3da75e01e62aa01e5c8e11861005)
To expand with full Organic Maps and Maps.ME commits history run:
  git remote add om-historic [om-historic.git repo url]
  git fetch --tags om-historic
  git replace squashed-history historic-commits
2025-05-08 21:10:51 +07:00

61 lines
1.3 KiB
C++

#include "popup_menu_holder.hpp"
#include "base/assert.hpp"
#include <QtWidgets/QMenu>
namespace qt
{
PopupMenuHolder::PopupMenuHolder(QObject * parent)
: QObject(parent)
{
}
QAction * PopupMenuHolder::addActionImpl(QIcon const & icon, QString const & text, bool checkable)
{
QAction * p = new QAction(icon, text, this);
p->setCheckable(checkable);
m_actions.push_back(p);
return p;
}
QToolButton * PopupMenuHolder::create()
{
QMenu * menu = new QMenu();
for (auto * p : m_actions)
menu->addAction(p);
m_toolButton = new QToolButton();
m_toolButton->setPopupMode(QToolButton::MenuButtonPopup);
m_toolButton->setMenu(menu);
return m_toolButton;
}
void PopupMenuHolder::setMainIcon(QIcon const & icon)
{
m_toolButton->setIcon(icon);
}
void PopupMenuHolder::setCurrent(size_t idx)
{
CHECK_LESS(idx, m_actions.size(), ());
m_toolButton->setIcon(m_actions[idx]->icon());
}
void PopupMenuHolder::setChecked(size_t idx, bool checked)
{
CHECK_LESS(idx, m_actions.size(), ());
ASSERT(m_actions[idx]->isCheckable(), ());
m_actions[idx]->setChecked(checked);
}
bool PopupMenuHolder::isChecked(size_t idx)
{
CHECK_LESS(idx, m_actions.size(), ());
ASSERT(m_actions[idx]->isCheckable(), ());
return m_actions[idx]->isChecked();
}
} // namespace qt