1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- /******************************************************************************
- Copyright (C) 2023 by Lain Bailey <[email protected]>
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
- ******************************************************************************/
- #pragma once
- #include <QDialog>
- #include <memory>
- #include <functional>
- #include <obs.hpp>
- #include "properties-view.hpp"
- class OBSBasic;
- #include "ui_OBSBasicInteraction.h"
- class OBSEventFilter;
- class OBSBasicInteraction : public QDialog {
- Q_OBJECT
- private:
- OBSBasic *main;
- std::unique_ptr<Ui::OBSBasicInteraction> ui;
- OBSSource source;
- OBSSignal removedSignal;
- OBSSignal renamedSignal;
- std::unique_ptr<OBSEventFilter> eventFilter;
- static void SourceRemoved(void *data, calldata_t *params);
- static void SourceRenamed(void *data, calldata_t *params);
- static void DrawPreview(void *data, uint32_t cx, uint32_t cy);
- bool GetSourceRelativeXY(int mouseX, int mouseY, int &x, int &y);
- bool HandleMouseClickEvent(QMouseEvent *event);
- bool HandleMouseMoveEvent(QMouseEvent *event);
- bool HandleMouseWheelEvent(QWheelEvent *event);
- bool HandleFocusEvent(QFocusEvent *event);
- bool HandleKeyEvent(QKeyEvent *event);
- OBSEventFilter *BuildEventFilter();
- public:
- OBSBasicInteraction(QWidget *parent, OBSSource source_);
- ~OBSBasicInteraction();
- void Init();
- protected:
- virtual void closeEvent(QCloseEvent *event) override;
- #if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
- virtual bool nativeEvent(const QByteArray &eventType, void *message,
- qintptr *result) override;
- #else
- virtual bool nativeEvent(const QByteArray &eventType, void *message,
- long *result) override;
- #endif
- };
- typedef std::function<bool(QObject *, QEvent *)> EventFilterFunc;
- class OBSEventFilter : public QObject {
- Q_OBJECT
- public:
- OBSEventFilter(EventFilterFunc filter_) : filter(filter_) {}
- protected:
- bool eventFilter(QObject *obj, QEvent *event)
- {
- return filter(obj, event);
- }
- public:
- EventFilterFunc filter;
- };
|