00001
#ifndef WEBCAMVIEWER_HPP
00002
#define WEBCAMVIEWER_HPP
00003
00004
#ifdef HAVE_CONFIG_H
00005
#include "config.h"
00006
#endif
00007
00008
#include <qpixmap.h>
00009
#include <qbutton.h>
00010
#include <qdatetime.h>
00011
#include <qglobal.h>
00012
#include <qtimer.h>
00013
#include <qurloperator.h>
00014
#include <qvaluelist.h>
00015
#if QT_VERSION >= 0x30000
00016
#include <qprocess.h>
00017
#endif
00018
00019
#include "lib/FTPClient.h"
00020
#include "AudioDevice.h"
00021
#include "AudioDisplayVolume.h"
00022
#include "VideoDevice.h"
00023
00024
#include "gui/AudioSettingsDlg.h"
00025
#include "gui/SnapshotSettingsDlg.h"
00026
#include "gui/TimeSnapshot.h"
00027
00028
#include "CamWindow.h"
00029
#include "BasicPanel.h"
00030
#include "ImagePanelRGB.h"
00031
#include "ImagePanelYUV.h"
00032
00033 class CWebCamViewer:
public CCamWindow
00034 {
00035 Q_OBJECT
00036
private:
00037
enum {
00038 pbt_ctl_size,
00039 pbt_ctl_video,
00040 pbt_ctl_input,
00041 pbt_config,
00042 pbt_showsnap,
00043 pbt_snapshot,
00044 pbt_timesnap,
00045 pbt_snd_config,
00046 pbt_mute,
00047 pbt_MAX,
00048 } PushButtons;
00049 QPixmap ButtonPix[pbt_MAX];
00050 QToolButton *pButton[pbt_MAX];
00051
00052
CVideoDevice *pVideo;
00053
CCamPanel *pViewer;
00054
CBasicPanel *pLastSnapshot;
00055 QTimer m_SizeTimer;
00056
00057
CVideoOptions *pVOptions;
00058
CSnapshotSettingsDlg *m_pVideoConfiguration;
00059
00060
CAudioDevice *m_pAudio;
00061
CAudioSettingsDlg *m_pAudioConfiguration;
00062
CAudioDisplayVolume *m_pAudioDisplay;
00063 QDomDocument m_MixerDomDoc;
00064 QDomNode m_MixerBackup;
00065
00066
CTimeSnapDlg *pTimeSnapDlg;
00067
int SnapInterval, SnapCounter;
00068 QTimer *pSnapTimer;
00069 QLabel *pSnapLabel;
00070
00072
struct FTPCommandStruct
00073 {
00074
int Command;
00075 QString Param[4];
00076 };
00077
00078
struct _Upload {
00079
CFTPClient *pClient;
00080 QList<FTPCommandStruct> Commands;
00081
00082 QString LocalFile, RemoteFile;
00083
00084 QTime StartTime;
00085
bool ErrorCondition, DelAfter;
00086 } Upload;
00087
00088
#if QT_VERSION >= 0x30000
00089
struct _Command {
00090 QProcess Process;
00091 QString FileName;
00092
bool Delete;
00093 } m_ExternalCommand;
00094
#endif
00095
00096
void StartFTPUpload(
const QString &local,
const QString &remote,
bool);
00097
void StopFTP();
00098
void TriggerNextFTPCommand();
00099
00100
void StartSubProcess(
const QString &command,
const QString &filename,
bool del_after_use);
00101
00102
void StartAudio(
CAudioDevice *adev);
00103
void StopAudio();
00104
00105
private slots:
00106
void ClickedVideoConfig();
00107
void ClickedShowLastSnapshot();
00108
void ClickedTimeSnapDlg();
00109
void ClickedSoundConfig();
00110
void SoundConfigAccepted();
00111
void ClickedSoundOnOff();
00112
00113
void FTPChangeState(
int command,
int new_state,
int result,
const QString &server_msg);
00114
void NextFTPCommand();
00115
00116
void SubProcessDone();
00117
00118
void StartTimeSnap();
00119
void StopTimeSnap();
00120
void TimeSnapTick();
00121
void TakeSnapshot();
00122
00123
00124
00125
protected:
00126
void RecalcTotalViewSize();
00127
00128
protected slots:
00129
void DeviceChangedSize(
const QSize &size);
00130
void DeviceError(
int err_no);
00131
00132
void CallAdjustSize();
00133
00134
public:
00135
CWebCamViewer(
CVideoDevice *video, QWidget *parent = 0,
const char *name = 0);
00136
virtual ~CWebCamViewer();
00137
00138
virtual void showMaximized();
00139 };
00140
00141
#endif