Index: configure.in
===================================================================
--- configure.in	(revision 1669)
+++ configure.in	(working copy)
@@ -71,6 +71,7 @@
 QT4use=false;
 FFTWuse=false;
 GDuse=false;
+PhononUse=false;
 
 ix86=false;
 if test $target_cpu = "i386" -o $target_cpu = "i486" -o $target_cpu = "i586" -o $target_cpu = "i686" -o \
@@ -107,7 +108,9 @@
 [ if test $enableval = yes; then CrossCompile=true; else CrossCompile=false; fi],[ CrossCompile=false; ])
 AC_ARG_ENABLE(LibGD,AC_HELP_STRING([--disable-LibGD], [disable using library LibGD in core]),
 [ if test $enableval = yes; then LibGD=true; else LibGD=false; fi],[ LibGD=true; ])
+AC_ARG_ENABLE(Phonon,AC_HELP_STRING([--disable-Phonon], [disable using library Phonon in Vision]),[ ],[ enable_Phonon=yes; ])
 
+
 #====== Check build modules ======
 #> DB modules
 AC_ARG_ENABLE(DBF,AC_HELP_STRING([--disable-DBF], [disable build module DB.DBF]),
@@ -561,6 +564,24 @@
 	[AC_MSG_ERROR(GD library not found. Install or check GDlib package!)])
 fi
 
+if test $enable_Phonon = yes; then
+    AC_MSG_RESULT([==== Test Phonon ====])
+    PKG_CHECK_MODULES([phonon], [phonon >= 4.0.0],
+    [PhononUse=true;],
+    [AC_MSG_ERROR([Could not find a Phonon library.])])
+fi
+
+if test $PhononUse = true; then
+    AC_DEFINE([HAVE_PHONON], [1], [Using phonon library])
+    #LIB_PHONON="-lphonon"
+    PHONON_INCL="$(pkg-config --cflags phonon)"
+    #PHONON_INCL+=" -I/usr/include/phonon"
+    PHONON_INCL+=" -DQT_PHONON_LIB"
+    PHONON_LIB="$(pkg-config --libs phonon)"
+    AC_SUBST(PHONON_INCL)
+    AC_SUBST(PHONON_LIB)
+fi
+
 # Clear libs list after PKG_CHECK_MODULES
 LIBS=""
 
Index: src/moduls/ui/VCAEngine/origwidg.cpp
===================================================================
--- src/moduls/ui/VCAEngine/origwidg.cpp	(revision 1669)
+++ src/moduls/ui/VCAEngine/origwidg.cpp	(working copy)
@@ -700,7 +700,7 @@
 						_("None;Dotted;Dashed;Solid;Double;Groove;Ridge;Inset;Outset"),"24") );
 	attrAdd( new TFld("src",_("Source"),TFld::String,TFld::NoFlag,"50","","","","25") );
 	attrAdd( new TFld("fit",_("Fit to widget size"),TFld::Boolean,TFld::NoFlag,"","","","","26") );
-	attrAdd( new TFld("type",_("Type"),TFld::Integer,TFld::Selected|Attr::Active,"1","0","0;1",_("Image;Movie"),"27") );
+	attrAdd( new TFld("type",_("Type"),TFld::Integer,TFld::Selected|Attr::Active,"1","0","0;1;2",_("Image;Movie;Phonon"),"27") );
 	attrAdd( new TFld("areas",_("Map areas"),TFld::Integer,Attr::Active,"2","0","0;10","","28") );
     }
 }
@@ -712,11 +712,26 @@
 	if( cfg.id() == "type" )
 	{
 	    //> Delete specific attributes
-	    if( prev.getI() == 1 ) cfg.owner()->attrDel("speed");
+	    if( prev.getI() == 1 )	//>Movie
+		cfg.owner()->attrDel("speed");
+	    else if( prev.getI() == 2 )	//>Phonon
+	    {
+		cfg.owner()->attrDel("brightness");
+		cfg.owner()->attrDel("contrast");
+		cfg.owner()->attrDel("hue");
+		cfg.owner()->attrDel("saturation");
+	    }
 
 	    //> Create specific attributes
-	    if(cfg.getI() == 1 )
+	    if(cfg.getI() == 1 )	//>Movie
 		cfg.owner()->attrAdd( new TFld("speed",_("Play speed"),TFld::Integer,Attr::Mutable,"3","100","1;900","","29") );
+	    else if(cfg.getI() == 2 )	//>Phonon
+	    {
+		cfg.owner()->attrAdd( new TFld("brightness",_("Video brightness"),TFld::Real,Attr::Mutable,"3","0","-1;1","","30") );
+		cfg.owner()->attrAdd( new TFld("contrast",_("Video contrast"),TFld::Real,Attr::Mutable,"3","0","-1;1","","31") );
+		cfg.owner()->attrAdd( new TFld("hue",_("Video hue"),TFld::Real,Attr::Mutable,"3","0","-1;1","","32") );
+		cfg.owner()->attrAdd( new TFld("saturation",_("Video saturation"),TFld::Real,Attr::Mutable,"3","0","-1;1","","33") );
+	    }
 	}
 	else if( cfg.id() == "areas" )
 	{
Index: src/moduls/ui/Vision/vis_shapes.cpp
===================================================================
--- src/moduls/ui/Vision/vis_shapes.cpp	(revision 1669)
+++ src/moduls/ui/Vision/vis_shapes.cpp	(working copy)
@@ -58,6 +58,7 @@
 
 using namespace VISION;
 
+
 //*************************************************
 //* Widget shape abstract object                  *
 //*************************************************
@@ -963,20 +964,30 @@
     lab->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored);
     ((ShpDt*)w->shpData)->labWdg = lab;
     QVBoxLayout *lay = new QVBoxLayout(w);
+#ifdef HAVE_PHONON
+    //- Create video player
+    //VideoPlayer *player = new VideoPlayer(Phonon::VideoCategory, w);
+    //connect(player, SIGNAL(finished ()), player, SLOT(play()));// work with xine and vlc backends; gstreamer not work;
+    ((ShpDt*)w->shpData)->player = NULL;
+#else
     lay->addWidget(lab);
+#endif
+
 }
 
-void ShapeMedia::destroy( WdgView *w )
+void ShapeMedia::destroy( WdgView *w )		//TODO destroy
 {
     //- Clear label widget's elements -
     QLabel *lab = ((ShpDt*)w->shpData)->labWdg;
     if( lab && lab->movie() )
     {
-	if(lab->movie()->device()) delete lab->movie()->device();
-	delete lab->movie();
-	lab->clear();
+		if(lab->movie()->device()) delete lab->movie()->device();
+			delete lab->movie();
+		lab->clear();
     }
-
+#ifdef HAVE_PHONON				//is it correct????!
+	//delete ((ShpDt*)w->shpData)->player;
+#endif
     delete (ShpDt*)w->shpData;
 }
 
@@ -1070,6 +1081,16 @@
 		shD->labWdg->movie()->start();
 	    }
 	    break;
+	case 30: 	//brightness
+	    /*shD->mediaSpeed = atoi(val.c_str());
+	    if( !shD->labWdg->movie() ) break;
+	    if( shD->mediaSpeed <= 1 ) shD->labWdg->movie()->stop();
+	    else
+	    {
+		shD->labWdg->movie()->setSpeed(shD->mediaSpeed);
+		shD->labWdg->movie()->start();
+	    }*/
+	    break;
 	default:
 	    //- Individual arguments process -
 	    if( uiPrmPos >= 40 )
@@ -1099,7 +1120,7 @@
 	string sdata = w->resGet(shD->mediaSrc);
 	switch( shD->mediaType )
 	{
-	    case 0:
+	    case 0:	//Image
 	    {
 		QImage img;
 		//> Free movie data, if set
@@ -1109,6 +1130,10 @@
 		    delete shD->labWdg->movie();
 		    shD->labWdg->clear();
 		}
+#ifdef HAVE_PHONON
+		    w->layout()->removeWidget( shD->player );
+		    w->layout()->addWidget( shD->labWdg );
+#endif
 		//> Set new image
 		if( !sdata.empty() && img.loadFromData((const uchar*)sdata.data(),sdata.size()) )
 		{
@@ -1119,9 +1144,10 @@
 		    shD->labWdg->setScaledContents( shD->mediaFit );
 		}
 		else shD->labWdg->setText("");
+
 		break;
 	    }
-	    case 1:
+	    case 1:	//Movie		(gif animation)
 	    {
 		//> Clear previous movie data
 		if( shD->labWdg->movie() )
@@ -1130,6 +1156,10 @@
 		    delete shD->labWdg->movie();
 		    shD->labWdg->clear();
 		}
+#ifdef HAVE_PHONON
+		    w->layout()->removeWidget( shD->player );
+		    w->layout()->addWidget( shD->labWdg );
+#endif
 		//> Set new data
 		if( sdata.size() )
 		{
@@ -1156,6 +1186,62 @@
 
 		break;
 	    }
+	    case 2:	//> Phonon
+	    {
+		//> Clear previous movie data
+		if( shD->labWdg->movie() )
+		{
+		    if(shD->labWdg->movie()->device()) delete shD->labWdg->movie()->device();
+		    delete shD->labWdg->movie();
+		    shD->labWdg->clear();
+		}
+#if HAVE_PHONON
+
+		//> Set new data
+		if( sdata.size() )
+		{
+		    qDebug("Using Phonon!!!");
+		    qDebug() << "source: " << shD->mediaSrc.c_str();
+
+
+			if(shD->player==NULL)
+			{
+				shD->player = new VideoPlayer(Phonon::VideoCategory, w);
+
+			}
+
+			//shD->player->videoWidget()->setScaleMode(Phonon::VideoWidget::FitInView);
+			connect(shD->player, SIGNAL(finished ()), shD->player, SLOT(play()));// loop video
+			shD->player->play(MediaSource(QString(shD->mediaSrc.c_str())));
+
+		    w->layout()->removeWidget(shD->labWdg);
+		    w->layout()->addWidget(shD->player);
+
+		    qDebug() << "w->layout()->count()" << w->layout()->count();
+		    qDebug() << "w->layout()->geometry()" << w->layout()->geometry();
+		}else
+		{
+		    QImage img;
+		    img.load(":/images/attention.png");
+		    shD->labWdg->setPixmap(QPixmap::fromImage(img));
+		    shD->labWdg->setScaledContents( false );
+
+		    w->layout()->removeWidget(shD->player);
+		    w->layout()->addWidget(shD->labWdg);
+		}
+
+#else	//> Phonon Stub
+		QImage img;
+		img.load(":/images/attention.png");
+		shD->labWdg->setPixmap(QPixmap::fromImage(img));
+		shD->labWdg->setScaledContents( false );
+
+		w->layout()->removeWidget(shD->player);
+		w->layout()->addWidget(shD->labWdg);
+#endif
+
+		break;
+	    }
 	}
     }
 
@@ -1169,8 +1255,21 @@
     ShpDt *shD = (ShpDt*)w->shpData;
     if( !shD->en ) return false;
 
+    //qDebug()<< "event" << event;
+
     switch( event->type() )
     {
+#ifdef HAVE_PHONON
+	case QEvent::MouseButtonDblClick:
+	{
+	    if( shD->player->mediaObject()->hasVideo() )
+	    {
+		shD->player->videoWidget()->setFullScreen( !shD->player->videoWidget()->isFullScreen() );
+		return true;
+	    }
+
+	}
+#endif
 	case QEvent::Paint:
 	{
 	    QPainter pnt( w );
Index: src/moduls/ui/Vision/vis_shapes.h
===================================================================
--- src/moduls/ui/Vision/vis_shapes.h	(revision 1669)
+++ src/moduls/ui/Vision/vis_shapes.h	(working copy)
@@ -33,6 +33,13 @@
 #include <fftw3.h>
 #endif
 
+#if HAVE_PHONON
+//#include <phonon/MediaObject>
+//#include <Phonon/VideoPlayer>
+//#include <Phonon/VideoWidget>
+#include <phonon/phonon>
+#endif
+
 #include <QObject>
 #include <QMap>
 #include <QVariant>
@@ -51,6 +58,9 @@
 using std::deque;
 using std::vector;
 using namespace OSCADA;
+#if HAVE_PHONON
+using namespace Phonon;
+#endif
 
 class QEvent;
 class QAction;
@@ -274,6 +284,10 @@
 		short	mediaSpeed	:8;
 		QBrush	backGrnd;
 		QLabel	*labWdg;
+#ifdef HAVE_PHONON
+		VideoPlayer *player;
+		//QPointer<VideoPlayer> *player;
+#endif
 		QPen	border;
 		string	mediaSrc;
 		vector<MapArea>	maps;
Index: src/moduls/ui/Vision/Makefile.am
===================================================================
--- src/moduls/ui/Vision/Makefile.am	(revision 1669)
+++ src/moduls/ui/Vision/Makefile.am	(working copy)
@@ -2,7 +2,7 @@
 
 EXTRA_DIST = *.h vision.qrc images/* po/*
 
-INCLUDES = -I$(top_srcdir)/src $(QT4_INCL)
+INCLUDES = -I$(top_srcdir)/src $(QT4_INCL)  $(PHONON_INCL)
 
 oscd_modul_LTLIBRARIES = ui_Vision.la
 ui_Vision_la_LDFLAGS = -module -avoid-version -no-undefined
@@ -11,7 +11,7 @@
     vis_run.cpp moc_vis_run.cpp vis_run_widgs.cpp moc_vis_run_widgs.cpp vis_shape_elfig.cpp moc_vis_shape_elfig.cpp
 ui_Vision_la_DIST = tvision.cpp vis_widgs.cpp vis_shapes.cpp vis_devel.cpp vis_devel_dlgs.cpp vis_devel_widgs.cpp \
     vis_run.cpp vis_run_widgs.cpp vis_shape_elfig.cpp vision.qrc
-ui_Vision_la_LIBADD = $(QT4_LIB) $(LIB_FFTW)
+ui_Vision_la_LIBADD = $(QT4_LIB) $(LIB_FFTW) $(PHONON_LIB)
 ui_Vision_la_LIBTOOLFLAGS = --tag=disable-static
 
 qrc_vision.cpp: vision.qrc
