Example #1
0
EventLoop::EventLoop(QObject *parent) : QEventLoop(parent) {
    QMainWindow * wnd = StaticUtils::findMainWindow();
    if (wnd != NULL) {
        wnd->installEventFilter(this);

        QObjectList childs = wnd->children();
        for (int i=0;i<childs.count();i++) {
            if (childs.at(i)->inherits("QWidget")) childs.at(i)->installEventFilter(this);
        }
    }
}
void DocumentManager::add(DocumentInfo *documentInfo)
{
    QMainWindow *mainWindow = documentInfo->mainWindow;
    d->documentInfos.append(documentInfo);
    connect(mainWindow, SIGNAL(destroyed(QObject *)),
            this, SLOT(remove(QObject *)));
    // update object name ("window ID")
    mainWindow->setObjectName(mainWindow->objectName() + QString::number(d->nextWindowId));
    mainWindow->installEventFilter(this);
    /*!\todo This gets messy: make DocumentInfo a proper class. */
    documentInfo->id = d->nextWindowId;
    ++d->nextWindowId;
    documentInfo->windowTitle = tr("New %1", "New document title + ID").arg(d->nextWindowId);
    QAction *action = new QAction(d->windowActionGroup);
    action->setCheckable(true);
    action->setData(documentInfo->id);
    action->setText(documentInfo->windowTitle);
    d->windowMapper.setMapping(action, documentInfo->id);
    connect(action, SIGNAL(triggered()),
            &d->windowMapper, SLOT(map()));
    emit changed();
}