void Menu::clearModelMenu() { const int offset = ((m_role == BookmarksMenuRole && menuAction() && !menuAction()->data().toModelIndex().isValid()) ? 3 : 0); for (int i = (actions().count() - 1); i >= offset; --i) { actions().at(i)->deleteLater(); removeAction(actions().at(i)); } if (m_role != BookmarksMenuRole && menuAction()) { const QAbstractItemModel *model = menuAction()->data().toModelIndex().model(); if (model) { menuAction()->setEnabled(model->rowCount(menuAction()->data().toModelIndex()) > 0); } } connect(this, SIGNAL(aboutToShow()), this, SLOT(populateModelMenu())); }
Controls::Controls(QWidget *parent) : QMainWindow(parent) , m_ui(new Ui::Controls) , m_view(0) , m_scaleLinked(true) { m_ui->setupUi(this); connect(m_ui->actionQuit, SIGNAL(triggered()), this, SLOT(close())); m_view = new Viewer(m_ui->frame); QHBoxLayout *lay = new QHBoxLayout(); lay->addWidget(m_view); m_ui->frame->setLayout(lay); connect(m_view, SIGNAL(manualControlEngaged()), this, SLOT(setManualControl())); QString initialModel = populateModelMenu(); m_model = new Model(this); connect(this, SIGNAL(openFile(QString)), m_model, SLOT(setFullPath(QString))); connect(this, SIGNAL(openFile(QString)), this, SLOT(addRecentFiles(QString))); connect(m_model, SIGNAL(modelLoaded(QString)), this, SLOT(loadModelDefaults(QString))); connect(m_model, SIGNAL(modelLoaded(QString)), this, SLOT(loadSettings(QString))); connect(m_model, SIGNAL(modelLoaded(QString)), this, SLOT(setWindowTitle(QString))); connect(m_model, SIGNAL(modelLoaded(QString)), m_ui->treeView, SLOT(expandAll())); connect(m_model, SIGNAL(modelUnloaded(QString)), this, SLOT(saveModelDefaults(QString))); connect(m_model, SIGNAL(modelUnloaded(QString)), this, SLOT(saveSettings(QString))); connect(m_model, SIGNAL(modelLoadTime(int)), this , SLOT(fileLoadTimeNotified(int))); connect(m_model, SIGNAL(modelTriangles(int)), this, SLOT(triangleCountUpdated(int))); m_triangleCount = new QLabel(tr("0 triangles")); m_ui->statusbar->addPermanentWidget(m_triangleCount); m_view->setModel(m_model); m_ui->treeView->setModel(m_model); m_view->setTreeView(m_ui->treeView); emit openFile(initialModel); connect(m_ui->actionForce_Smooth, SIGNAL(triggered(bool)), this, SLOT(optionMenuToggled(bool))); connect(m_ui->actionForce_Faceted, SIGNAL(triggered(bool)), this, SLOT(optionMenuToggled(bool))); connect(m_ui->actionNative_Indices, SIGNAL(triggered(bool)), this, SLOT(optionMenuToggled(bool))); connect(m_ui->actionCorrect_Normals, SIGNAL(triggered(bool)), this, SLOT(optionMenuToggled(bool))); connect(m_ui->actionCorrect_Acute, SIGNAL(triggered(bool)), this, SLOT(optionMenuToggled(bool))); connect(m_ui->actionShow_Warnings, SIGNAL(triggered(bool)), this, SLOT(optionMenuToggled(bool))); connect(m_ui->generateQmlPushButton, SIGNAL(clicked()), m_ui->actionSave_QML, SIGNAL(triggered())); }
Menu::Menu(MenuRole role, QWidget *parent) : QMenu(parent), m_actionGroup(NULL), m_bookmark(NULL), m_role(role) { switch (role) { case BookmarksMenuRole: case BookmarkSelectorMenuRole: case NotesMenuRole: { installEventFilter(this); Menu *parentMenu = qobject_cast<Menu*>(parent); if (!parentMenu || parentMenu->getRole() != m_role) { if (m_role == NotesMenuRole) { connect(NotesManager::getModel(), SIGNAL(modelModified()), this, SLOT(clearModelMenu())); } else { connect(BookmarksManager::getModel(), SIGNAL(modelModified()), this, SLOT(clearModelMenu())); } } connect(this, SIGNAL(aboutToShow()), this, SLOT(populateModelMenu())); } break; case CharacterEncodingMenuRole: connect(this, SIGNAL(aboutToShow()), this, SLOT(populateCharacterEncodingMenu())); connect(this, SIGNAL(triggered(QAction*)), this, SLOT(selectCharacterEncoding(QAction*))); break; case ClosedWindowsMenu: { setIcon(Utils::getIcon(QLatin1String("user-trash"))); MainWindow *mainWindow = MainWindow::findMainWindow(parent); if (mainWindow) { setEnabled(!SessionsManager::getClosedWindows().isEmpty() || !mainWindow->getWindowsManager()->getClosedWindows().isEmpty()); connect(mainWindow->getWindowsManager(), SIGNAL(closedWindowsAvailableChanged(bool)), this, SLOT(updateClosedWindowsMenu())); } connect(SessionsManager::getInstance(), SIGNAL(closedWindowsChanged()), this, SLOT(updateClosedWindowsMenu())); connect(this, SIGNAL(aboutToShow()), this, SLOT(populateClosedWindowsMenu())); } break; case ImportExportMenuRole: QMenu::addAction(tr("Import Opera Bookmarks…"))->setData(QLatin1String("OperaBookmarks")); QMenu::addAction(tr("Import HTML Bookmarks…"))->setData(QLatin1String("HtmlBookmarks")); QMenu::addSeparator(); QMenu::addAction(tr("Import Opera Notes…"))->setData(QLatin1String("OperaNotes")); connect(this, SIGNAL(triggered(QAction*)), this, SLOT(openImporter(QAction*))); break; case SessionsMenuRole: connect(this, SIGNAL(aboutToShow()), this, SLOT(populateSessionsMenu())); connect(this, SIGNAL(triggered(QAction*)), this, SLOT(openSession(QAction*))); break; case ToolBarsMenuRole: connect(this, SIGNAL(aboutToShow()), this, SLOT(populateToolBarsMenu())); break; case UserAgentMenuRole: connect(this, SIGNAL(aboutToShow()), this, SLOT(populateUserAgentMenu())); connect(this, SIGNAL(triggered(QAction*)), this, SLOT(selectUserAgent(QAction*))); break; case WindowsMenuRole: connect(this, SIGNAL(aboutToShow()), this, SLOT(populateWindowsMenu())); connect(this, SIGNAL(triggered(QAction*)), this, SLOT(selectWindow(QAction*))); break; default: break; } }