#include "socexplorergui.h" SocExplorerGUI* SocExplorerGUI::_self=NULL; QMenuBar* SocExplorerGUI::m_mainMenuBar=NULL; QMenu* SocExplorerGUI::m_fileMenu=NULL; QMenu* SocExplorerGUI::m_SettingsMenu=NULL; QList* SocExplorerGUI::m_queuedSettingActions=NULL; QList* SocExplorerGUI::m_queuedFileMenuActions=NULL; #define INIT() \ if(Q_UNLIKELY(_self==NULL))\ {\ init();\ } SocExplorerGUI::SocExplorerGUI(QObject *parent) : QObject(parent) { m_queuedFileMenuActions = new QList(); m_queuedSettingActions = new QList(); } void SocExplorerGUI::init() { _self=new SocExplorerGUI(); } void SocExplorerGUI::registerMenuBar(QMenuBar *menuBar, QMenu *fileMenu, QMenu *SettingsMenu) { INIT(); m_mainMenuBar = menuBar; if(m_mainMenuBar) { if(fileMenu==NULL) m_fileMenu = m_mainMenuBar->addMenu(tr("File")); else m_fileMenu = fileMenu; if(SettingsMenu==NULL) m_SettingsMenu = m_mainMenuBar->addMenu(tr("Settings")); else m_SettingsMenu = SettingsMenu; } QAction* action; foreach (action, *m_queuedSettingActions) { m_SettingsMenu->addAction(action); } foreach (action, *m_queuedFileMenuActions) { m_fileMenu->addAction(action); } } QMenu *SocExplorerGUI::addMenu(const QString &title) { INIT(); if(m_mainMenuBar) { return m_mainMenuBar->addMenu(title); } return NULL; } bool SocExplorerGUI::addFileAction(QAction *action) { INIT(); if(m_fileMenu) { m_fileMenu->addAction(action); return true; } else { m_queuedFileMenuActions->append(action); } return false; } bool SocExplorerGUI::addSettingsAction(QAction *action) { INIT(); if(m_SettingsMenu) { m_SettingsMenu->addAction(action); return true; } else { m_queuedSettingActions->append(action); } return false; }