File: animationlabel.cpp

package info (click to toggle)
mldemos 0.5.1-3
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 32,224 kB
  • ctags: 46,525
  • sloc: cpp: 306,887; ansic: 167,718; ml: 126; sh: 109; makefile: 2
file content (93 lines) | stat: -rw-r--r-- 3,078 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
/*********************************************************************
MLDemos: A User-Friendly visualization toolkit for machine learning
Copyright (C) 2012 - Otpal Vittoz ( Otpal@otpal.org )
Contact: mldemos@b4silio.com

This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.

This library 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
Library General Public License for more details.

You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free
Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*********************************************************************/

#include "animationlabel.h"

AnimationLabel::AnimationLabel( QString animationPath,
                                QWidget* parent        ) : QWidget( parent )
{
    init( animationPath, QSize() );
}

AnimationLabel::AnimationLabel( QString  animationPath,
                                QSize    size,
                                QWidget* parent         ) : QWidget( parent )
{
    init( animationPath, size );
}

AnimationLabel::~AnimationLabel()
{
    container->deleteLater();
    animation->deleteLater();
}

void AnimationLabel::init( const QString animationPath,
                           const QSize   size           )
{
    // We create the QMovie for the animation
    animation = new QMovie( animationPath );
	QSize s = size;

    if ( s.isEmpty() ) {
        animation->jumpToNextFrame();
        s = animation->currentPixmap().size();
	}
    animation->jumpToFrame( 0 );
    setVisible( true );
    container = new QLabel( this );
    // We'll set a fixed size to the QLabel because we don't want to be resized
    container->setFixedSize( s );
    container->setMovie( animation );

    QVBoxLayout* layout = new QVBoxLayout( this );
    // Remove the all the extra space add the movie to our layout and show it
    layout->setSpacing( 1 );
    layout->setMargin( 1 );
    layout->addWidget( container );
    setLayout( layout );
    setFixedSize( s );
}


void AnimationLabel::Start()
{
    // Check if the movie can be started.
    if ( ( !animation.isNull()                             ) &&
         ( ( animation->state() == QMovie::Paused     ) ||
           ( animation->state() == QMovie::NotRunning )    )    ) {
        // start the animation... and reveal ourself.
        animation->start();
        animation->jumpToFrame( 0 );
	}
    setVisible( true );
}


void AnimationLabel::Stop()
{
    // Check if the animation can be stopped.
    if ( ( !animation.isNull() )                   &&
         ( animation->state() == QMovie::Running )    ) {
        // It can so we'll stop the animation... and hide.
        animation->stop();
    }
    setVisible( false );
}