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_upl_client = 'ucli', 45 msg_server = 'srvr', 46 msg_login = 'lgin', 47 msg_password = 'pswd', 48 msg_directory = 'drct', 49 msg_passiveftp = 'pasv', 50 msg_pswrd_text = 'pstx', 51 52 msg_start = 'strt', 53 msg_stop = 'stop', 54 55 msg_about = 'abut', 56 msg_setup = 'setp', 57 msg_video = 'vdeo', 58 59 msg_control_win = 'ctlw' 60 }; 61 62 63 const char* kCaptureRate[] = { 64 "Every 15 seconds", 65 "Every 30 seconds", 66 "Every minute", 67 "Every 5 minutes", 68 "Every 10 minutes", 69 "Every 15 minutes", 70 "Every 30 minutes", 71 "Every hour", 72 "Every 2 hours", 73 "Every 4 hours", 74 "Every 8 hours", 75 "Every 24 hours", 76 "Never", 77 0 78 }; 79 80 81 const char* kUploadClient[] = { 82 "FTP", 83 "SFTP", 84 0 85 }; 86 87 88 class CodyCam : public BApplication { 89 public: 90 CodyCam(); 91 virtual ~CodyCam(); 92 93 void ReadyToRun(); 94 virtual bool QuitRequested(); 95 virtual void MessageReceived(BMessage* message); 96 97 private: 98 status_t _SetUpNodes(); 99 void _TearDownNodes(); 100 101 BMediaRoster* fMediaRoster; 102 media_node fTimeSourceNode; 103 media_node fProducerNode; 104 VideoConsumer* fVideoConsumer; 105 media_output fProducerOut; 106 media_input fConsumerIn; 107 BWindow* fWindow; 108 port_id fPort; 109 BWindow* fVideoControlWindow; 110 }; 111 112 113 class VideoWindow : public BWindow { 114 public: 115 VideoWindow(BRect frame, const char* title, window_type type, 116 uint32 flags, port_id* consumerport); 117 ~VideoWindow(); 118 119 virtual bool QuitRequested(); 120 virtual void MessageReceived(BMessage* message); 121 122 void ApplyControls(); 123 124 BView* VideoView(); 125 BStringView* StatusLine(); 126 127 private: 128 void _BuildCaptureControls(BView* theView); 129 130 void _SetUpSettings(const char* filename, const char* dirname); 131 void _QuitSettings(); 132 133 private: 134 media_node* fProducer; 135 port_id* fPortPtr; 136 137 BView* fView; 138 BView* fVideoView; 139 140 BTextControl* fFileName; 141 BBox* fCaptureSetupBox; 142 BMenu* fCaptureRateMenu; 143 BMenuField* fCaptureRateSelector; 144 BMenu* fImageFormatMenu; 145 BMenuField* fImageFormatSelector; 146 BMenu* fUploadClientMenu; 147 BMenuField* fUploadClientSelector; 148 BBox* fFtpSetupBox; 149 BTextControl* fServerName; 150 BTextControl* fLoginId; 151 BTextControl* fPassword; 152 BTextControl* fDirectory; 153 BCheckBox* fPassiveFtp; 154 BBox* fStatusBox; 155 BStringView* fStatusLine; 156 157 ftp_msg_info fFtpInfo; 158 159 Settings* fSettings; 160 StringValueSetting* fServerSetting; 161 StringValueSetting* fLoginSetting; 162 StringValueSetting* fPasswordSetting; 163 StringValueSetting* fDirectorySetting; 164 BooleanValueSetting* fPassiveFtpSetting; 165 StringValueSetting* fFilenameSetting; 166 StringValueSetting* fImageFormatSettings; 167 EnumeratedStringValueSetting* fUploadClientSetting; 168 EnumeratedStringValueSetting* fCaptureRateSetting; 169 }; 170 171 172 class ControlWindow : public BWindow { 173 public: 174 ControlWindow(const BRect& frame, BView* controls, media_node node); 175 void MessageReceived(BMessage* message); 176 bool QuitRequested(); 177 178 private: 179 BView* fView; 180 media_node fNode; 181 }; 182 183 #endif // CODYCAM_H 184