00001 #ifndef WEBCAMVIEWER_HPP
00002 #define WEBCAMVIEWER_HPP
00003
00004 #include <time.h>
00005
00006 #include <qpixmap.h>
00007 #include <qbutton.h>
00008 #include <qtimer.h>
00009 #include <qurloperator.h>
00010
00011 #include "VideoDevice.h"
00012
00013 #include "gui/SnapshotSettingsDlg.h"
00014 #include "gui/TimeSnapshot.h"
00015
00016 #include "CamWindow.h"
00017 #include "CamDialogs.h"
00018 #include "BasicPanel.h"
00019 #include "ImagePanelRGB.h"
00020 #include "ImagePanelYUV.h"
00021
00022 class CWebCamViewer: public CCamWindow
00023 {
00024 Q_OBJECT
00025 private:
00026 enum {
00027 pbt_controls,
00028 pbt_config,
00029 pbt_showsnap,
00030 pbt_snapshot,
00031 pbt_timesnap,
00032 pbt_MAX,
00033 } PushButtons;
00034 QPixmap ButtonPix[pbt_MAX];
00035 QToolButton *pButton[pbt_MAX];
00036
00037 CVideoDevice *pVideo;
00038 CCamPanel *pViewer;
00039 CBasicPanel *pLastSnapshot;
00040 QTimer *SizeTimer;
00041
00042 SVideoOptions *pVOptions;
00043 CSnapshotSettingsDlg *pConfiguration;
00044 CCamDialogs *pSettings;
00045
00046 CTimeSnapDlg *pTimeSnapDlg;
00047 int SnapInterval, SnapCounter;
00048 QTimer *pSnapTimer;
00049 QLabel *pSnapLabel;
00050
00052 struct {
00053 QUrlOperator *pClient;
00054 QUrl LocalUrl, RemoteUrl;
00055 int State;
00056 time_t StartTime;
00057 bool ErrorCondition;
00058
00059 enum {
00060 NotConnected,
00061 Login,
00062 Binary,
00063 Idle,
00064 Uploading,
00065 Done
00066 };
00067 } Upload;
00068
00069 void StartUpload(const QString &, bool);
00070
00071 private slots:
00072 void ClickedConfigurationDlg();
00073 void ConfigurationDlgClosed();
00074
00075
00076 void ClickedSettingsDlg();
00077 void SettingsDlgClosed();
00078
00079 void ClickedShowLastSnapshot();
00080
00081 void ClickedTimeSnapDlg();
00082 void TimeSnapDlgClosed();
00083 void StartTimeSnap();
00084 void StopTimeSnap();
00085 void TimeSnapTick();
00086
00087 void FTPStart(QNetworkOperation *);
00088 void FTPState(int, const QString &);
00089 void FTPDone(QNetworkOperation *);
00090
00091 void TakeSnapshot();
00092
00093 protected:
00094 void RecalcTotalViewSize();
00095
00096 protected slots:
00097 void DeviceChangedSize(const QSize &size);
00098 void DeviceError(int err_no);
00099
00100 void CallAdjustSize();
00101
00102 public:
00103 CWebCamViewer(CVideoDevice *video, const QSize &hint_size, QWidget *parent = 0, const char *name = 0);
00104 ~CWebCamViewer();
00105 };
00106
00107 #endif