UBGraphicsMediaItem.h 3.39 KB
Newer Older
Claudio Valerio's avatar
Claudio Valerio committed
1 2 3
/*
 * 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
Claudio Valerio's avatar
Claudio Valerio committed
4
 * the Free Software Foundation, either version 2 of the License, or
Claudio Valerio's avatar
Claudio Valerio committed
5 6 7 8 9 10 11 12 13 14
 * (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/>.
 */
Claudio Valerio's avatar
Claudio Valerio committed
15 16 17 18 19 20
#ifndef UBGRAPHICSMEDIAITEM_H
#define UBGRAPHICSMEDIAITEM_H

#include "UBGraphicsProxyWidget.h"
#include <phonon/AudioOutput>
#include <phonon/MediaObject>
Anatoly Mihalchenko's avatar
Anatoly Mihalchenko committed
21
#include <phonon/VideoWidget>
22 23
#include "core/UBApplication.h"
#include "board/UBBoardController.h"
Aleksei Kanash's avatar
Aleksei Kanash committed
24
#include "frameworks/UBFileSystemUtils.h"
Claudio Valerio's avatar
Claudio Valerio committed
25

26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
class UBAudioPresentationWidget : public QWidget
{
public:
    UBAudioPresentationWidget(QWidget *parent = NULL);

    int borderSize() {return mBorderSize;}
    void setTitle(QString title = QString()){mTitle = title;}
    QString getTitle(){return mTitle;}

private:
    virtual void paintEvent(QPaintEvent *event);

    int mBorderSize;
    int mTitleSize;
    QString mTitle;
};
Claudio Valerio's avatar
Claudio Valerio committed
42 43 44 45 46 47

class UBGraphicsMediaItem : public UBGraphicsProxyWidget
{
    Q_OBJECT

public:
Anatoly Mihalchenko's avatar
Anatoly Mihalchenko committed
48 49 50 51
    typedef enum{
        mediaType_Video,
        mediaType_Audio
    } mediaType;
Claudio Valerio's avatar
Claudio Valerio committed
52 53 54 55

    UBGraphicsMediaItem(const QUrl& pMediaFileUrl, QGraphicsItem *parent = 0);
    ~UBGraphicsMediaItem();

Anatoly Mihalchenko's avatar
Anatoly Mihalchenko committed
56 57 58 59 60 61 62
    enum { Type = UBGraphicsItemType::MediaItemType };

    virtual int type() const
    {
        return Type;
    }

Claudio Valerio's avatar
Claudio Valerio committed
63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84
    virtual QUrl mediaFileUrl() const
    {
        return mMediaFileUrl;
    }

    Phonon::MediaObject* mediaObject() const
    {
        return mMediaObject;
    }

    void setInitialPos(qint64 p) {
        mInitialPos = p;
    }
    qint64 initialPos() {
        return mInitialPos;
    }

    bool isMuted() const
    {
        return mMuted;
    }

Anatoly Mihalchenko's avatar
Anatoly Mihalchenko committed
85 86 87 88 89
    Phonon::VideoWidget* videoWidget() const
    {
        return mVideoWidget;
    }

90 91
    bool hasLinkedImage(){return haveLinkedImage;}

Anatoly Mihalchenko's avatar
Anatoly Mihalchenko committed
92 93
    mediaType getMediaType() { return mMediaType; }

Claudio Valerio's avatar
Claudio Valerio committed
94 95
    virtual UBGraphicsScene* scene();

Anatoly Mihalchenko's avatar
Anatoly Mihalchenko committed
96 97
    virtual UBItem* deepCopy() const;

98 99
    virtual void copyItemParameters(UBItem *copy) const;

100
    virtual void setSourceUrl(const QUrl &pSourceUrl);
Aleksei Kanash's avatar
Aleksei Kanash committed
101

Claudio Valerio's avatar
Claudio Valerio committed
102 103 104
public slots:

    void toggleMute();
105
    void setMute(bool bMute);
Claudio Valerio's avatar
Claudio Valerio committed
106
    void activeSceneChanged();
107 108
    void hasMediaChanged(bool hasMedia);
    void showOnDisplayChanged(bool shown);
Claudio Valerio's avatar
Claudio Valerio committed
109 110 111 112

protected:

    virtual QVariant itemChange(GraphicsItemChange change, const QVariant &value);
Anatoly Mihalchenko's avatar
Anatoly Mihalchenko committed
113 114
    virtual void mousePressEvent(QGraphicsSceneMouseEvent *event);
    virtual void mouseMoveEvent(QGraphicsSceneMouseEvent *event);
115 116
    virtual void clearSource();

Claudio Valerio's avatar
Claudio Valerio committed
117
    Phonon::MediaObject *mMediaObject;
Anatoly Mihalchenko's avatar
Anatoly Mihalchenko committed
118
    Phonon::VideoWidget *mVideoWidget;
Claudio Valerio's avatar
Claudio Valerio committed
119
    Phonon::AudioOutput *mAudioOutput;
Anatoly Mihalchenko's avatar
Anatoly Mihalchenko committed
120 121
    Phonon::MediaSource mSource;
    QWidget *mAudioWidget;
Claudio Valerio's avatar
Claudio Valerio committed
122 123 124 125 126 127 128 129 130 131

private:

    bool mMuted;
    bool mMutedByUserAction;
    static bool sIsMutedByDefault;

    QUrl mMediaFileUrl;
    QString mMediaSource;

Anatoly Mihalchenko's avatar
Anatoly Mihalchenko committed
132 133 134 135 136 137
    mediaType mMediaType;

    bool mShouldMove;
    QPointF mMousePressPos;
    QPointF mMouseMovePos;

138
    bool haveLinkedImage;
139
    QGraphicsPixmapItem *mLinkedImage;    
Anatoly Mihalchenko's avatar
Anatoly Mihalchenko committed
140 141

    qint64 mInitialPos;
Anatoly Mihalchenko's avatar
Anatoly Mihalchenko committed
142
};
Claudio Valerio's avatar
Claudio Valerio committed
143
#endif // UBGRAPHICSMEDIAITEM_H