1 /* CodyCam.h */ 2 #ifndef CODYCAM_H 3 #define CODYCAM_H 4 5 6 #include "Settings.h" 7 #include "VideoConsumer.h" 8 9 #include <string.h> 10 11 #include <Application.h> 12 #include <Box.h> 13 #include <CheckBox.h> 14 #include <Menu.h> 15 #include <MenuField.h> 16 #include <StringView.h> 17 #include <TextControl.h> 18 #include <Window.h> 19 20 21 22 class BMediaRoster; 23 24 25 enum { 26 msg_filename = 'file', 27 28 msg_rate_15s = 'r15s', 29 msg_rate_30s = 'r30s', 30 msg_rate_1m = 'r1m ', 31 msg_rate_5m = 'r5m ', 32 msg_rate_10m = 'r10m', 33 msg_rate_15m = 'r15m', 34 msg_rate_30m = 'r30m', 35 msg_rate_1h = 'r1h ', 36 msg_rate_2h = 'r2h ', 37 msg_rate_4h = 'r4h ', 38 msg_rate_8h = 'r8h ', 39 msg_rate_24h = 'r24h', 40 msg_rate_never = 'nevr', 41 42 msg_translate = 'tran', 43 44 msg_server = 'srvr', 45 msg_login = 'lgin', 46 msg_password = 'pswd', 47 msg_directory = 'drct', 48 msg_passiveftp = 'pasv', 49 msg_pswrd_text = 'pstx', 50 51 msg_start = 'strt', 52 msg_stop = 'stop', 53 54 msg_about = 'abut', 55 msg_setup = 'setp', 56 msg_video = 'vdeo', 57 58 msg_control_win = 'ctlw' 59 }; 60 61 62 const char* kCaptureRate[] = { 63 "Every 15 seconds", 64 "Every 30 seconds", 65 "Every minute", 66 "Every 5 minutes", 67 "Every 10 minutes", 68 "Every 15 minutes", 69 "Every 30 minutes", 70 "Every hour", 71 "Every 2 hours", 72 "Every 4 hours", 73 "Every 8 hours", 74 "Every 24 hours", 75 "Never", 76 0 77 }; 78 79 80 class CodyCam : public BApplication { 81 public: 82 CodyCam(); 83 virtual ~CodyCam(); 84 85 void ReadyToRun(); 86 virtual bool QuitRequested(); 87 virtual void MessageReceived(BMessage* message); 88 89 private: 90 status_t _SetUpNodes(); 91 void _TearDownNodes(); 92 93 BMediaRoster* fMediaRoster; 94 media_node fTimeSourceNode; 95 media_node fProducerNode; 96 VideoConsumer* fVideoConsumer; 97 media_output fProducerOut; 98 media_input fConsumerIn; 99 BWindow* fWindow; 100 port_id fPort; 101 BWindow* fVideoControlWindow; 102 }; 103 104 105 class VideoWindow : public BWindow { 106 public: 107 VideoWindow(BRect frame, const char* title, window_type type, 108 uint32 flags, port_id* consumerport); 109 ~VideoWindow(); 110 111 virtual bool QuitRequested(); 112 virtual void MessageReceived(BMessage* message); 113 114 void ApplyControls(); 115 116 BView* VideoView(); 117 BStringView* StatusLine(); 118 119 private: 120 void _BuildCaptureControls(BView* theView); 121 122 void _SetUpSettings(const char* filename, const char* dirname); 123 void _QuitSettings(); 124 125 private: 126 media_node* fProducer; 127 port_id* fPortPtr; 128 129 BView* fView; 130 BView* fVideoView; 131 132 BTextControl* fFileName; 133 BBox* fCaptureSetupBox; 134 BMenu* fCaptureRateMenu; 135 BMenuField* fCaptureRateSelector; 136 BMenu* fImageFormatMenu; 137 BMenuField* fImageFormatSelector; 138 BBox* fFtpSetupBox; 139 BTextControl* fServerName; 140 BTextControl* fLoginId; 141 BTextControl* fPassword; 142 BTextControl* fDirectory; 143 BCheckBox* fPassiveFtp; 144 BBox* fStatusBox; 145 BStringView* fStatusLine; 146 147 ftp_msg_info fFtpInfo; 148 149 Settings* fSettings; 150 StringValueSetting* fServerSetting; 151 StringValueSetting* fLoginSetting; 152 StringValueSetting* fPasswordSetting; 153 StringValueSetting* fDirectorySetting; 154 BooleanValueSetting* fPassiveFtpSetting; 155 StringValueSetting* fFilenameSetting; 156 EnumeratedStringValueSetting* fCaptureRateSetting; 157 }; 158 159 160 class ControlWindow : public BWindow { 161 public: 162 ControlWindow(const BRect& frame, BView* controls, media_node node); 163 void MessageReceived(BMessage* message); 164 bool QuitRequested(); 165 166 private: 167 BView* fView; 168 media_node fNode; 169 }; 170 171 #endif // CODYCAM_H 172