Ejemplo n.º 1
0
Monitor::Monitor(Kdenlive::MonitorId id, MonitorManager *manager, QWidget *parent) :
    AbstractMonitor(id, manager, parent)
    , render(NULL)
    , m_controller(NULL)
    , m_glMonitor(NULL)
    , m_splitEffect(NULL)
    , m_splitProducer(NULL)
    , m_length(2)
    , m_dragStarted(false)
    , m_recManager(NULL)
    , m_loopClipAction(NULL)
    , m_effectCompare(NULL)
    , m_sceneVisibilityAction(NULL)
    , m_contextMenu(NULL)
    , m_selectedClip(NULL)
    , m_loopClipTransition(true)
    , m_editMarker(NULL)
    , m_forceSizeFactor(0)
    , m_rootItem(NULL)
    , m_lastMonitorSceneType(MonitorSceneNone)
{
    QVBoxLayout *layout = new QVBoxLayout;
    layout->setContentsMargins(0, 0, 0, 0);
    layout->setSpacing(0);

    // Create container widget
    m_glWidget = new QWidget;
    QGridLayout* glayout = new QGridLayout(m_glWidget);
    glayout->setSpacing(0);
    glayout->setContentsMargins(0, 0, 0, 0);
    // Create QML OpenGL widget
    m_glMonitor = new GLWidget();
    m_videoWidget = QWidget::createWindowContainer(qobject_cast<QWindow*>(m_glMonitor));
    glayout->addWidget(m_videoWidget, 0, 0);
    m_verticalScroll = new QScrollBar(Qt::Vertical);
    glayout->addWidget(m_verticalScroll, 0, 1);
    m_verticalScroll->hide();
    m_horizontalScroll = new QScrollBar(Qt::Horizontal);
    glayout->addWidget(m_horizontalScroll, 1, 0);
    m_horizontalScroll->hide();
    connect(m_horizontalScroll, SIGNAL(valueChanged(int)), m_glMonitor, SLOT(setOffsetX(int)));
    connect(m_verticalScroll, SIGNAL(valueChanged(int)), m_glMonitor, SLOT(setOffsetY(int)));
    connect(m_glMonitor, SIGNAL(frameDisplayed(const SharedFrame&)), this, SLOT(onFrameDisplayed(const SharedFrame&)));
    connect(m_glMonitor, SIGNAL(mouseSeek(int,bool)), this, SLOT(slotMouseSeek(int,bool)));
    connect(m_glMonitor, SIGNAL(monitorPlay()), this, SLOT(slotPlay()));
    connect(m_glMonitor, SIGNAL(startDrag()), this, SLOT(slotStartDrag()));
    connect(m_glMonitor, SIGNAL(switchFullScreen(bool)), this, SLOT(slotSwitchFullScreen(bool)));
    connect(m_glMonitor, SIGNAL(zoomChanged()), this, SLOT(setZoom()));
    connect(m_glMonitor, SIGNAL(effectChanged(QRect)), this, SIGNAL(effectChanged(QRect)));
    connect(m_glMonitor, SIGNAL(effectChanged(QVariantList)), this, SIGNAL(effectChanged(QVariantList)));

    if (KdenliveSettings::displayMonitorInfo()) {
        // Load monitor overlay qml
        m_glMonitor->setSource(QUrl::fromLocalFile(QStandardPaths::locate(QStandardPaths::DataLocation, QStringLiteral("kdenlivemonitor.qml"))));
        m_rootItem = m_glMonitor->rootObject();
    }
    connect(m_glMonitor, SIGNAL(showContextMenu(QPoint)), this, SLOT(slotShowMenu(QPoint)));

    m_glWidget->setMinimumSize(QSize(320, 180));
    layout->addWidget(m_glWidget, 10);
    layout->addStretch();

    // Get base size for icons
    int s = style()->pixelMetric(QStyle::PM_SmallIconSize);

    // Tool bar buttons
    m_toolbar = new QToolBar(this);
    m_toolbar->setIconSize(QSize(s, s));
    QWidget *sp1 = new QWidget(this);
    sp1->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Preferred);
    m_toolbar->addWidget(sp1);
    if (id == Kdenlive::ClipMonitor) {
        // Add options for recording
        m_recManager = new RecManager(s, this);
        connect(m_recManager, &RecManager::warningMessage, this, &Monitor::warningMessage);
        connect(m_recManager, &RecManager::addClipToProject, this, &Monitor::addClipToProject);
    }

    if (id != Kdenlive::DvdMonitor) {
        m_toolbar->addAction(manager->getAction("mark_in"));
        m_toolbar->addAction(manager->getAction("mark_out"));
    }
    m_toolbar->addAction(manager->getAction("monitor_seek_backward"));

    QToolButton *playButton = new QToolButton(m_toolbar);
    m_playMenu = new QMenu(i18n("Play..."), this);
    m_playAction = static_cast<KDualAction*> (manager->getAction("monitor_play"));
    m_playMenu->addAction(m_playAction);

    playButton->setMenu(m_playMenu);
    playButton->setPopupMode(QToolButton::MenuButtonPopup);
    m_toolbar->addWidget(playButton);
    m_toolbar->addAction(manager->getAction("monitor_seek_forward"));

    playButton->setDefaultAction(m_playAction);
    m_configMenu = new QMenu(i18n("Misc..."), this);

    if (id != Kdenlive::DvdMonitor) {
        if (id == Kdenlive::ClipMonitor) {
            m_markerMenu = new QMenu(i18n("Go to marker..."), this);
            m_markerMenu->setEnabled(false);
            m_configMenu->addMenu(m_markerMenu);
            connect(m_markerMenu, SIGNAL(triggered(QAction*)), this, SLOT(slotGoToMarker(QAction*)));
        }
        m_forceSize = new KSelectAction(QIcon::fromTheme("transform-scale"), i18n("Force Monitor Size"), this);
        QAction *fullAction = m_forceSize->addAction(QIcon(), i18n("Force 100%"));
        fullAction->setData(100);
        QAction *halfAction = m_forceSize->addAction(QIcon(), i18n("Force 50%"));
        halfAction->setData(50);
        QAction *freeAction = m_forceSize->addAction(QIcon(), i18n("Free Resize"));
        freeAction->setData(0);
        m_configMenu->addAction(m_forceSize);
        m_forceSize->setCurrentAction(freeAction);
        connect(m_forceSize, SIGNAL(triggered(QAction*)), this, SLOT(slotForceSize(QAction*)));
    }
Ejemplo n.º 2
0
int qtbook::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
{
    _id = QMainWindow::qt_metacall(_c, _id, _a);
    if (_id < 0)
        return _id;
    if (_c == QMetaObject::InvokeMetaMethod) {
        switch (_id) {
        case 0: slotResizeColumns(); break;
        case 1: slotDisplaySummary(); break;
        case 2: slotExit(); break;
        case 3: slotAbout(); break;
        case 4: slotAllGo(); break;
        case 5: slotQuery(); break;
        case 6: slotReset(); break;
        case 7: slotDelete(); break;
        case 8: slotModify(); break;
        case 9: slotSearch(); break;
        case 10: slotRefresh(); break;
        case 11: slotRequest(); break;
        case 12: slotAddAdmin(); break;
        case 13: slotCheckout(); break;
        case 14: slotCDSearch(); break;
        case 15: slotInsertCD(); break;
        case 16: slotNextPage(); break;
        case 17: slotSaveUser(); break;
        case 18: slotSetFonts(); break;
        case 19: slotShowGrid(); break;
        case 20: slotShowMenu(); break;
        case 21: slotShowNext(); break;
        case 22: slotShowPrev(); break;
        case 23: slotConnectDB(); break;
        case 24: slotCopyError(); break;
        case 25: slotDVDSearch(); break;
        case 26: slotDuplicate(); break;
        case 27: slotInsertMag(); break;
        case 28: slotInsertDVD(); break;
        case 29: slotMagSearch(); break;
        case 30: slotPrintView(); break;
        case 31: slotBookSearch(); break;
        case 32: slotChangeView((*reinterpret_cast< bool(*)>(_a[1]))); break;
        case 33: slotDisconnect(); break;
        case 34: slotInsertBook(); break;
        case 35: slotSaveConfig(); break;
        case 36: slotSetColumns(); break;
        case 37: slotAddBorrower(); break;
        case 38: slotDeleteAdmin(); break;
        case 39: slotExportAsCSV(); break;
        case 40: slotJournSearch(); break;
        case 41: slotPageClicked((*reinterpret_cast< const QString(*)>(_a[1]))); break;
        case 42: slotViewDetails(); break;
        case 43: slotReserveCopy(); break;
        case 44: slotShowColumns(); break;
        case 45: slotShowHistory(); break;
        case 46: slotInsertJourn(); break;
        case 47: slotPreviousPage(); break;
        case 48: slotRemoveMember(); break;
        case 49: slotSavePassword(); break;
        case 50: slotCancelAddUser(); break;
        case 51: slotBranchChanged(); break;
        case 52: slotPrintReserved(); break;
        case 53: slotResetErrorLog(); break;
        case 54: slotModifyBorrower(); break;
        case 55: slotSectionResized((*reinterpret_cast< int(*)>(_a[1])),(*reinterpret_cast< int(*)>(_a[2])),(*reinterpret_cast< int(*)>(_a[3]))); break;
        case 56: slotAutoPopOnFilter(); break;
        case 57: slotClearSqliteMenu((*reinterpret_cast< bool(*)>(_a[1]))); break;
        case 58: slotGrantPrivileges(); break;
        case 59: slotInsertVideoGame(); break;
        case 60: slotShowAdminDialog(); break;
        case 61: slotShowCustomQuery(); break;
        case 62: slotShowErrorDialog(); break;
        case 63: slotVideoGameSearch(); break;
        case 64: slotListOverdueItems(); break;
        case 65: slotRefreshAdminList(); break;
        case 66: slotResetLoginDialog(); break;
        case 67: slotShowConnectionDB(); break;
        case 68: slotListReservedItems(); break;
        case 69: slotExecuteCustomQuery(); break;
        case 70: slotSaveAdministrators(); break;
        case 71: slotSelectDatabaseFile(); break;
        case 72: slotShowChangePassword(); break;
        case 73: slotShowDbEnumerations(); break;
        case 74: slotShowMembersBrowser(); break;
        case 75: slotSqliteFileSelected((*reinterpret_cast< bool(*)>(_a[1]))); break;
        case 76: slotCloseMembersBrowser(); break;
        case 77: slotAdminCheckBoxClicked((*reinterpret_cast< int(*)>(_a[1]))); break;
        case 78: slotSceneSelectionChanged(); break;
        case 79: slotCloseCustomQueryDialog(); break;
        case 80: slotDisplayNewSqliteDialog(); break;
        case 81: slotPopulateMembersBrowser(); break;
        case 82: slotResizeColumnsAfterSort(); break;
        case 83: slotUpdateIndicesAfterSort((*reinterpret_cast< int(*)>(_a[1]))); break;
        case 84: slotPrintReservationHistory(); break;
        default: ;
        }
        _id -= 85;
    }
    return _id;
}
Ejemplo n.º 3
0
SessionButton::SessionButton ( ONMainWindow* mw,QWidget *parent, QString id )
    : SVGFrame ( ":/img/svg/sessionbut.svg",false,parent )
{
    editable=mw->sessionEditEnabled();


    QPalette pal=palette();
    pal.setColor ( QPalette::Active, QPalette::WindowText, QPalette::Mid );
    pal.setColor ( QPalette::Active, QPalette::ButtonText, QPalette::Mid );
    pal.setColor ( QPalette::Active, QPalette::Text, QPalette::Mid );
    pal.setColor ( QPalette::Inactive, QPalette::WindowText, QPalette::Mid );
    pal.setColor ( QPalette::Inactive, QPalette::ButtonText, QPalette::Mid );
    pal.setColor ( QPalette::Inactive, QPalette::Text, QPalette::Mid );

    setPalette(pal);



    QFont fnt=font();
    if ( mw->retMiniMode() )
#ifdef Q_WS_HILDON
        fnt.setPointSize ( 10 );
#else
        fnt.setPointSize ( 9 );
#endif
    setFont ( fnt );
    setFocusPolicy ( Qt::NoFocus );
    bool miniMode=mw->retMiniMode();
    if ( !miniMode )
        setFixedSize ( 340,190 );
    else
        setFixedSize ( 250,145 );


    par= mw;
    connect ( this,SIGNAL ( clicked() ),this,SLOT ( slotClicked() ) );

    sid=id;

    cmdBox=new QComboBox ( this );
    cmdBox->setMouseTracking ( true );
    cmdBox->setFrame ( false );
    QPalette cpal=cmdBox->palette();

    cpal.setColor ( QPalette::Button,QColor ( 255,255,255 ) );
    cpal.setColor ( QPalette::Base,QColor ( 255,255,255 ) );
    cpal.setColor ( QPalette::Window,QColor ( 255,255,255 ) );
    cmdBox->setPalette ( cpal );

    geomBox=new QComboBox ( this );
    geomBox->setMouseTracking ( true );
    geomBox->setFrame ( false );
    geomBox->setEditable ( true );
    geomBox->setEditable ( false );
    geomBox->update();
    geomBox->setPalette ( cpal );

    sessName=new QLabel ( this );
    sessStatus=new QLabel ( this );
    fnt=sessName->font();
    fnt.setBold ( true );
    sessName->setFont ( fnt );
    icon=new QLabel ( this );
    cmd=new QLabel ( this );
    cmd->setMouseTracking ( true );
    serverIcon=new QLabel ( this );
    geomIcon=new QLabel ( this );
    geomIcon->setMouseTracking ( true );
    cmdIcon=new QLabel ( this );
    cmdIcon->setMouseTracking ( true );
    server=new QLabel ( this );
    geom=new QLabel ( this );
    geom->setMouseTracking ( true );

    sound=new QPushButton ( this );
    soundIcon=new QLabel ( this );
    sound->setPalette ( cpal );
    sound->setFlat ( true );
    sound->setMouseTracking ( true );
    connect ( sound,SIGNAL ( clicked() ),this,
              SLOT ( slot_soundClicked() ) );

    editBut=new QPushButton ( this );
    editBut->setMouseTracking ( true );
    connect ( editBut,SIGNAL ( pressed() ),this,SLOT ( slotShowMenu() ) );
    editBut->setIcon ( QIcon ( par->iconsPath ( "/16x16/preferences.png" ) ) );
    editBut->setIconSize ( QSize ( 16,16 ) );
    editBut->setFixedSize ( 24,24 );
    editBut->setFlat ( true );
    editBut->setPalette ( cpal );
    sessMenu=new QMenu ( this );

    connect ( sessMenu,SIGNAL ( aboutToHide() ),this,
              SLOT ( slotMenuHide() ) );

    act_edit=sessMenu->addAction (
                 QIcon (
                     mw->iconsPath ( "/16x16/edit.png" ) ),
                 tr ( "Session preferences ..." ) );
#if (!defined Q_WS_HILDON) && (!defined Q_OS_DARWIN)
    act_createIcon=sessMenu->addAction (
                       QIcon ( mw->iconsPath ( "/16x16/create_file.png" ) ),
                       tr (
                           "Create session icon on desktop ..." ) );
#endif
    act_remove=sessMenu->addAction (
                   QIcon ( mw->iconsPath ( "/16x16/delete.png" ) ),
                   tr ( "Delete session" ) );


    connect ( act_edit,SIGNAL ( triggered ( bool ) ),this,
              SLOT ( slotEdit() ) );

    connect ( act_remove,SIGNAL ( triggered ( bool ) ),this,
              SLOT ( slotRemove() ) );
#if (!defined Q_WS_HILDON) && (!defined Q_OS_DARWIN)
    connect ( act_createIcon,SIGNAL ( triggered ( bool ) ),this,
              SLOT ( slotCreateSessionIcon() ) );
#endif

    editBut->setToolTip ( tr ( "Session actions" ) );
    cmdBox->setToolTip ( tr ( "Select type" ) );

    geomBox->setToolTip ( tr ( "Select resolution" ) );
    sound->setToolTip ( tr ( "Toggle sound support" ) );
    icon->move ( 10,10 );

    if ( !miniMode )
    {
        sessName->move ( 80,34 );
        sessStatus->move(80,50);
        editBut->move ( 307,156 );
        serverIcon->move ( 58,84 );
        server->move ( 80,84 );
        cmdIcon->move ( 58,108 );
        cmd->move ( 80,108 );
        cmdBox->move ( 80,108 );
        geomIcon->move ( 58,132 );
        geom->move ( 80,132 );
        geomBox->move ( 80,132 );
        soundIcon->move ( 58,156 );
        sound->move ( 76,156 );
    }
    else
    {
        editBut->move ( 218,113 );
        sessName->move ( 64,11 );
        sessStatus->hide();
        serverIcon->move ( 66,44 );
        server->move ( 88,44 );
        cmdIcon->move ( 66,68 );
        cmd->move ( 88,68 );
        cmdBox->move ( 88,68 );
        geomIcon->move ( 66,92 );
        geom->move ( 88,92 );
        geomBox->move ( 88,92 );
        soundIcon->move ( 66,116 );
        sound->move ( 86,116 );
    }

    if (mw->brokerMode)
    {
        icon->move(10,30);
        sessName->move(90,50);
        sessStatus->move(90,70);
        setFixedHeight(120);
    }


    cmdBox->hide();
    geomBox->hide();
    QPixmap spix;
    spix.load ( par->iconsPath ( "/16x16/session.png" ) );
    serverIcon->setPixmap ( spix );
    serverIcon->setFixedSize ( 16,16 );

    QPixmap rpix;
    rpix.load ( par->iconsPath ( "/16x16/resolution.png" ) );
    geomIcon->setPixmap ( rpix );
    geomIcon->setFixedSize ( 16,16 );

    QPixmap apix;
    apix.load ( par->iconsPath ( "/16x16/audio.png" ) );
    soundIcon->setPixmap ( apix );
    soundIcon->setFixedSize ( 16,16 );
    redraw();

    connect ( cmdBox,SIGNAL ( activated ( const QString& ) ),this,
              SLOT ( slot_cmd_change ( const QString& ) ) );
    connect ( geomBox,SIGNAL ( activated ( const QString& ) ),this,
              SLOT ( slot_geom_change ( const QString& ) ) );

    editBut->setFocusPolicy ( Qt::NoFocus );
    sound->setFocusPolicy ( Qt::NoFocus );
    cmdBox->setFocusPolicy ( Qt::NoFocus );
    geomBox->setFocusPolicy ( Qt::NoFocus );
    setMouseTracking(true);

    if (!editable)
    {
        editBut->hide();
        cmdBox->hide();
        geomBox->hide();
        sessMenu->hide();
        sound->setEnabled(false);
    }
    if (mw->brokerMode)
    {
        cmd->hide();
        cmdIcon->hide();
        server->hide();
        serverIcon->hide();
        geom->hide();
        geomIcon->hide();
        sound->hide();
        soundIcon->hide();
    }
}