16 #include <kmessagebox.h>
19 #include <kpushbutton.h>
20 #include <kiconloader.h>
21 #include <ktemporaryfile.h>
22 #include <kio/netaccess.h>
23 #include <kfiledialog.h>
24 #include <kcombobox.h>
28 #include <qsocketnotifier.h>
31 #include <qstringlist.h>
34 #include <QResizeEvent>
35 #include <QPaintEvent>
36 #include <QCloseEvent>
38 #include <QImageWriter>
48 streamWidth = streamHeight = -1;
49 processStream = colorFrame =
false;
51 streamFrame =
new VideoWG(videoFrame);
53 playPix = KIcon(
"media-playback-start" );
54 pausePix = KIcon(
"media-playback-pause" );
55 capturePix = KIcon(
"media-record" );
57 foreach (
const QByteArray &format, QImageWriter::supportedImageFormats())
58 imgFormatCombo->addItem(QString(format));
60 playB->setIcon(pausePix);
61 captureB->setIcon(capturePix);
63 connect(playB, SIGNAL(clicked()),
this, SLOT(
playPressed()));
64 connect(captureB, SIGNAL(clicked()),
this, SLOT(
captureImage()));
74 processStream =
false;
92 processStream =
false;
93 playB->setIcon(pausePix);
105 streamFrame->totalBaseCount = wd * ht;
107 resize(wd + layout()->margin() * 2 , ht + playB->height() + layout()->margin() * 4 + layout()->spacing());
108 streamFrame->resize(wd, ht);
113 streamFrame->resize(ev->size().width() - layout()->margin() * 2, ev->size().height() - playB->height() - layout()->margin() * 4 - layout()->spacing());
122 playB->setIcon(playPix);
123 processStream =
false;
127 playB->setIcon(pausePix);
128 processStream =
true;
135 streamFrame->
newFrame(buffer, buffSiz, w, h);
144 KTemporaryFile tmpfile;
147 fmt = imgFormatCombo->currentText();
149 currentFileURL = KFileDialog::getSaveUrl( currentDir, fmt );
151 if (currentFileURL.isEmpty())
return;
153 if ( currentFileURL.isValid() )
155 currentDir = currentFileURL.directory();
157 if ( currentFileURL.isLocalFile() )
158 fname = currentFileURL.path();
160 fname = tmpfile.fileName();
162 if (fname.right(fmt.length()).toLower() != fmt.toLower())
165 fname += fmt.toLower();
168 streamFrame->kPix.save(fname, fmt.toAscii());
171 chmod( fname.toAscii(), S_IRUSR|S_IWUSR|S_IXUSR|S_IRGRP|S_IXGRP|S_IROTH|S_IXOTH );
173 if ( tmpfile.fileName() == fname )
176 if ( ! KIO::NetAccess::upload( tmpfile.fileName(), currentFileURL, (
QWidget*) 0 ) )
178 QString message = i18n(
"Could not upload image to remote location: %1", currentFileURL.prettyUrl() );
179 KMessageBox::sorry( 0, message, i18n(
"Could not upload file" ) );
185 QString message = i18n(
"Invalid URL: %1", currentFileURL.url() );
186 KMessageBox::sorry( 0, message, i18n(
"Invalid URL" ) );
194 setAttribute(Qt::WA_OpaquePaintEvent);
197 grayTable.resize(256);
198 for (
int i=0;i<256;i++)
199 grayTable[i]=qRgb(i,i,i);
204 delete (streamImage);
212 if (buffSiz > totalBaseCount)
213 streamImage =
new QImage(buffer, w, h, QImage::Format_RGB32);
216 streamImage =
new QImage(buffer, w, h, QImage::Format_Indexed8);
217 streamImage->setColorTable(grayTable);
228 if (streamImage->isNull())
return;
229 kPix = QPixmap::fromImage(streamImage->scaled(width(), height(), Qt::KeepAspectRatio));
230 delete (streamImage);
235 p.drawPixmap(0, 0, kPix);
240 #include "streamwg.moc"
void setColorFrame(bool color)
void paintEvent(QPaintEvent *ev)
void closeEvent(QCloseEvent *e)
void newFrame(unsigned char *buffer, int buffSiz, int w, int h)
StreamWG(QWidget *parent=0)
VideoWG(QWidget *parent=0)
static QString fitsDir()
Get FITS Default directory.
void newFrame(unsigned char *buffer, int buffSiz, int w, int h)
void enableStream(bool enable)
void setSize(int wd, int ht)
void resizeEvent(QResizeEvent *ev)