[haiku-commits] r33682 - haiku/trunk/src/apps/codycam

  • From: superstippi@xxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Tue, 20 Oct 2009 21:58:12 +0200 (CEST)

Author: stippi
Date: 2009-10-20 21:58:12 +0200 (Tue, 20 Oct 2009)
New Revision: 33682
Changeset: http://dev.haiku-os.org/changeset/33682/haiku

Modified:
   haiku/trunk/src/apps/codycam/CodyCam.cpp
   haiku/trunk/src/apps/codycam/CodyCam.h
   haiku/trunk/src/apps/codycam/VideoConsumer.cpp
Log:
Applied patch by V, which adds a "Local" mode to CodyCam and resolves ticket
#3395. I've extended the patch to disable the FTP controls in Local mode and
fix bugs which prevented this from working correctly. Some coding style fixes
as well...
Thanks a lot, V!


Modified: haiku/trunk/src/apps/codycam/CodyCam.cpp
===================================================================
--- haiku/trunk/src/apps/codycam/CodyCam.cpp    2009-10-20 19:05:35 UTC (rev 
33681)
+++ haiku/trunk/src/apps/codycam/CodyCam.cpp    2009-10-20 19:58:12 UTC (rev 
33682)
@@ -155,12 +155,9 @@
                (const char*) "CodyCam", B_TITLED_WINDOW,
                B_NOT_ZOOMABLE | B_AUTO_UPDATE_SIZE_LIMITS, &fPort);
 
-       status_t status = _SetUpNodes();
-       if (status != B_OK)
-               return;
+       _SetUpNodes();
 
        ((VideoWindow*)fWindow)->ApplyControls();
-       
 }
 
 
@@ -414,9 +411,10 @@
 //     #pragma mark - Video Window Class
 
 
-VideoWindow::VideoWindow (BRect frame, const char* title, window_type type, 
uint32 flags,
-       port_id* consumerPort)
-       : BWindow(frame,title,type,flags),
+VideoWindow::VideoWindow(BRect frame, const char* title, window_type type,
+               uint32 flags, port_id* consumerPort)
+       :
+       BWindow(frame, title, type, flags),
        fPortPtr(consumerPort),
        fView(NULL),
        fVideoView(NULL)
@@ -469,12 +467,12 @@
        menuBar->AddItem(menu);
 
        /* give it a gray background view */
-       fView = new BView("Background View", B_WILL_DRAW, NULL);
+       fView = new BView("Background View", B_WILL_DRAW);
        fView->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR));
 
        /* add some controls */
        _BuildCaptureControls(fView);
-       
+
        SetLayout(new BGroupLayout(B_VERTICAL));
        AddChild(menuBar);
        AddChild(fView);
@@ -502,9 +500,7 @@
 void
 VideoWindow::MessageReceived(BMessage* message)
 {
-       BControl* control;
-
-       control = NULL;
+       BControl* control = NULL;
        message->FindPointer((const char*)"source", (void **)&control);
 
        switch (message->what) {
@@ -586,10 +582,9 @@
                        break;
 
                case msg_upl_client:
-                       if (control != NULL) {
-                               message->FindInt32("client", 
&(fFtpInfo.uploadClient));
-                               FTPINFO("upl client = %ld\n", 
fFtpInfo.uploadClient);
-                       }
+                       message->FindInt32("client", &(fFtpInfo.uploadClient));
+                       FTPINFO("upl client = %ld\n", fFtpInfo.uploadClient);
+                       _UploadClientChanged();
                        break;
 
                case msg_server:
@@ -677,9 +672,11 @@
        AddTranslationItems(fImageFormatMenu, B_TRANSLATOR_BITMAP);
        fImageFormatMenu->SetTargetForItems(this);
 
-       if (fImageFormatSettings->Value() && 
fImageFormatMenu->FindItem(fImageFormatSettings->Value()) != NULL)
-               
fImageFormatMenu->FindItem(fImageFormatSettings->Value())->SetMarked(true);
-       else if (fImageFormatMenu->FindItem("JPEG Image") != NULL)
+       if (fImageFormatSettings->Value()
+               && fImageFormatMenu->FindItem(fImageFormatSettings->Value()) != 
NULL) {
+               fImageFormatMenu->FindItem(
+                       fImageFormatSettings->Value())->SetMarked(true);
+       } else if (fImageFormatMenu->FindItem("JPEG Image") != NULL)
                fImageFormatMenu->FindItem("JPEG Image")->SetMarked(true);
        else if (fImageFormatMenu->FindItem("JPEG image") != NULL)
                fImageFormatMenu->FindItem("JPEG image")->SetMarked(true);
@@ -690,19 +687,32 @@
                fImageFormatMenu, NULL);
        
        fCaptureRateMenu = new BPopUpMenu("Capture Rate Menu");
-       fCaptureRateMenu->AddItem(new BMenuItem("Every 15 seconds", new 
BMessage(msg_rate_15s)));
-       fCaptureRateMenu->AddItem(new BMenuItem("Every 30 seconds", new 
BMessage(msg_rate_30s)));
-       fCaptureRateMenu->AddItem(new BMenuItem("Every minute", new 
BMessage(msg_rate_1m)));
-       fCaptureRateMenu->AddItem(new BMenuItem("Every 5 minutes", new 
BMessage(msg_rate_5m)));
-       fCaptureRateMenu->AddItem(new BMenuItem("Every 10 minutes", new 
BMessage(msg_rate_10m)));
-       fCaptureRateMenu->AddItem(new BMenuItem("Every 15 minutes", new 
BMessage(msg_rate_15m)));
-       fCaptureRateMenu->AddItem(new BMenuItem("Every 30 minutes", new 
BMessage(msg_rate_30m)));
-       fCaptureRateMenu->AddItem(new BMenuItem("Every hour", new 
BMessage(msg_rate_1h)));
-       fCaptureRateMenu->AddItem(new BMenuItem("Every 2 hours", new 
BMessage(msg_rate_2h)));
-       fCaptureRateMenu->AddItem(new BMenuItem("Every 4 hours", new 
BMessage(msg_rate_4h)));
-       fCaptureRateMenu->AddItem(new BMenuItem("Every 8 hours", new 
BMessage(msg_rate_8h)));
-       fCaptureRateMenu->AddItem(new BMenuItem("Every 24 hours", new 
BMessage(msg_rate_24h)));
-       fCaptureRateMenu->AddItem(new BMenuItem("Never", new 
BMessage(msg_rate_never)));
+       fCaptureRateMenu->AddItem(new BMenuItem("Every 15 seconds",
+               new BMessage(msg_rate_15s)));
+       fCaptureRateMenu->AddItem(new BMenuItem("Every 30 seconds",
+               new BMessage(msg_rate_30s)));
+       fCaptureRateMenu->AddItem(new BMenuItem("Every minute",
+               new BMessage(msg_rate_1m)));
+       fCaptureRateMenu->AddItem(new BMenuItem("Every 5 minutes",
+               new BMessage(msg_rate_5m)));
+       fCaptureRateMenu->AddItem(new BMenuItem("Every 10 minutes",
+               new BMessage(msg_rate_10m)));
+       fCaptureRateMenu->AddItem(new BMenuItem("Every 15 minutes",
+               new BMessage(msg_rate_15m)));
+       fCaptureRateMenu->AddItem(new BMenuItem("Every 30 minutes",
+               new BMessage(msg_rate_30m)));
+       fCaptureRateMenu->AddItem(new BMenuItem("Every hour",
+               new BMessage(msg_rate_1h)));
+       fCaptureRateMenu->AddItem(new BMenuItem("Every 2 hours",
+               new BMessage(msg_rate_2h)));
+       fCaptureRateMenu->AddItem(new BMenuItem("Every 4 hours",
+               new BMessage(msg_rate_4h)));
+       fCaptureRateMenu->AddItem(new BMenuItem("Every 8 hours",
+               new BMessage(msg_rate_8h)));
+       fCaptureRateMenu->AddItem(new BMenuItem("Every 24 hours",
+               new BMessage(msg_rate_24h)));
+       fCaptureRateMenu->AddItem(new BMenuItem("Never",
+               new BMessage(msg_rate_never)));
        fCaptureRateMenu->SetTargetForItems(this);
        
fCaptureRateMenu->FindItem(fCaptureRateSetting->Value())->SetMarked(true);
        fCaptureRateSelector = new BMenuField("Rate", "Rate:",
@@ -730,10 +740,10 @@
        fUploadClientSelector = new BMenuField("UploadClient", NULL,
                fUploadClientMenu, NULL);
 
-       fFtpSetupBox->SetLabel("FTP");
+       fFtpSetupBox->SetLabel("Output");
        // this doesn't work with the layout manager
-//     fFtpSetupBox->SetLabel(fUploadClientSelector);
-fUploadClientSelector->SetLabel("Type:");
+       // fFtpSetupBox->SetLabel(fUploadClientSelector);
+       fUploadClientSelector->SetLabel("Type:");
 
        BGridLayout *ftpLayout = new BGridLayout(kXBuffer, 0);
        ftpLayout->SetInsets(10, 15, 5, 5);
@@ -801,8 +811,11 @@
 void
 VideoWindow::ApplyControls()
 {
+       if (!Lock())
+               return;
+
        // apply controls
-       fFileName->Invoke();            
+       fFileName->Invoke();
        PostMessage(fImageFormatMenu->FindMarked()->Message());
        PostMessage(fCaptureRateMenu->FindMarked()->Message());
        PostMessage(fUploadClientMenu->FindMarked()->Message());
@@ -811,6 +824,8 @@
        fPassword->Invoke();
        fDirectory->Invoke();
        fPassiveFtp->Invoke();
+
+       Unlock();
 }
 
 
@@ -854,6 +869,18 @@
 
 
 void
+VideoWindow::_UploadClientChanged()
+{
+       bool enableServerControls = fFtpInfo.uploadClient < 2;
+       fServerName->SetEnabled(enableServerControls);
+       fLoginId->SetEnabled(enableServerControls);
+       fPassword->SetEnabled(enableServerControls);
+       fDirectory->SetEnabled(enableServerControls);
+       fPassiveFtp->SetEnabled(enableServerControls);
+}
+
+
+void
 VideoWindow::_QuitSettings()
 {
        fServerSetting->ValueChanged(fServerName->Text());

Modified: haiku/trunk/src/apps/codycam/CodyCam.h
===================================================================
--- haiku/trunk/src/apps/codycam/CodyCam.h      2009-10-20 19:05:35 UTC (rev 
33681)
+++ haiku/trunk/src/apps/codycam/CodyCam.h      2009-10-20 19:58:12 UTC (rev 
33682)
@@ -79,6 +79,7 @@
 const char* kUploadClient[] = {
        "FTP",
        "SFTP",
+       "Local",
        0
 };
 
@@ -128,6 +129,7 @@
 
                        void                    _SetUpSettings(const char* 
filename,
                                                                const char* 
dirname);
+                       void                    _UploadClientChanged();
                        void                    _QuitSettings();
 
 private:

Modified: haiku/trunk/src/apps/codycam/VideoConsumer.cpp
===================================================================
--- haiku/trunk/src/apps/codycam/VideoConsumer.cpp      2009-10-20 19:05:35 UTC 
(rev 33681)
+++ haiku/trunk/src/apps/codycam/VideoConsumer.cpp      2009-10-20 19:58:12 UTC 
(rev 33682)
@@ -606,9 +606,13 @@
 void
 VideoConsumer::FtpThread()
 {
+       char fullPath[B_PATH_NAME_LENGTH];
        FUNCTION("VideoConsumer::FtpThread\n");
-
-       if (LocalSave(fFileNameText, fFtpBitmap) == B_OK)
+       if (fUploadClient == 2) {
+               // 64 + 64 = 128 max
+               snprintf(fullPath, B_PATH_NAME_LENGTH, "%s/%s", fDirectoryText, 
fFileNameText);
+               LocalSave(fullPath, fFtpBitmap);
+       } else if (LocalSave(fFileNameText, fFtpBitmap) == B_OK)
                FtpSave(fFileNameText);
 
 #if 0
@@ -688,6 +692,8 @@
                case 1:
                        ftp = new SftpClient;
                        break;
+               case 2:
+                       return B_OK;
                default:
                        fprintf(stderr, "invalid upload client %ld\n", 
fUploadClient);
                        return EINVAL;


Other related posts: