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