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 0 83 }; 84 85 86 class CodyCam : public BApplication { 87 public: 88 CodyCam(); 89 virtual ~CodyCam(); 90 91 void ReadyToRun(); 92 virtual bool QuitRequested(); 93 virtual void MessageReceived(BMessage* message); 94 95 private: 96 status_t _SetUpNodes(); 97 void _TearDownNodes(); 98 99 BMediaRoster* fMediaRoster; 100 media_node fTimeSourceNode; 101 media_node fProducerNode; 102 VideoConsumer* fVideoConsumer; 103 media_output fProducerOut; 104 media_input fConsumerIn; 105 BWindow* fWindow; 106 port_id fPort; 107 BWindow* fVideoControlWindow; 108 }; 109 110 111 class VideoWindow : public BWindow { 112 public: 113 VideoWindow(BRect frame, const char* title, 114 window_type type, uint32 flags, 115 port_id* consumerport); 116 ~VideoWindow(); 117 118 virtual bool QuitRequested(); 119 virtual void MessageReceived(BMessage* message); 120 121 void ApplyControls(); 122 123 BView* VideoView(); 124 BStringView* StatusLine(); 125 126 private: 127 void _BuildCaptureControls(BView* theView); 128 129 void _SetUpSettings(const char* filename, 130 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 161 StringValueSetting* fServerSetting; 162 StringValueSetting* fLoginSetting; 163 StringValueSetting* fPasswordSetting; 164 StringValueSetting* fDirectorySetting; 165 BooleanValueSetting* fPassiveFtpSetting; 166 StringValueSetting* fFilenameSetting; 167 StringValueSetting* fImageFormatSettings; 168 169 EnumeratedStringValueSetting* fUploadClientSetting; 170 EnumeratedStringValueSetting* fCaptureRateSetting; 171 }; 172 173 174 class ControlWindow : public BWindow { 175 public: 176 ControlWindow(const BRect& frame, BView* controls, 177 media_node node); 178 void MessageReceived(BMessage* message); 179 bool QuitRequested(); 180 181 private: 182 BView* fView; 183 media_node fNode; 184 }; 185 186 #endif // CODYCAM_H 187 188