[haiku-commits] r33561 - haiku/trunk/src/add-ons/print/transports/lpr

  • From: michael.w.pfeiffer@xxxxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Mon, 12 Oct 2009 22:01:09 +0200 (CEST)

Author: laplace
Date: 2009-10-12 22:01:09 +0200 (Mon, 12 Oct 2009)
New Revision: 33561
Changeset: http://dev.haiku-os.org/changeset/33561/haiku

Modified:
   haiku/trunk/src/add-ons/print/transports/lpr/Jamfile
   haiku/trunk/src/add-ons/print/transports/lpr/LprSetupDlg.cpp
   haiku/trunk/src/add-ons/print/transports/lpr/LprSetupDlg.h
   haiku/trunk/src/add-ons/print/transports/lpr/LprTransport.cpp
   haiku/trunk/src/add-ons/print/transports/lpr/LprTransport.h
Log:
* Fixed crash at cancelation.
* Simplified class LprSetupDlg using DialogWindow.


Modified: haiku/trunk/src/add-ons/print/transports/lpr/Jamfile
===================================================================
--- haiku/trunk/src/add-ons/print/transports/lpr/Jamfile        2009-10-12 
19:42:50 UTC (rev 33560)
+++ haiku/trunk/src/add-ons/print/transports/lpr/Jamfile        2009-10-12 
20:01:09 UTC (rev 33561)
@@ -2,6 +2,7 @@
 
 SetSubDirSupportedPlatformsBeOSCompatible ;
 
+SubDirHdrs [ FDirName $(HAIKU_TOP) headers libs print libprint ] ;
 SubDirHdrs [ FDirName $(HAIKU_TOP) src add-ons print transports shared ] ;
 
 Addon LPR :
@@ -13,7 +14,11 @@
        Socket.o
        SocketStream.o
        DbgMsg.o
-       : be $(TARGET_NETWORK_LIBS) $(TARGET_LIBSTDC++)
+       : 
+       be 
+       libprint.a
+       $(TARGET_NETWORK_LIBS) 
+       $(TARGET_LIBSTDC++)
 ;
 
 ObjectReferences

Modified: haiku/trunk/src/add-ons/print/transports/lpr/LprSetupDlg.cpp
===================================================================
--- haiku/trunk/src/add-ons/print/transports/lpr/LprSetupDlg.cpp        
2009-10-12 19:42:50 UTC (rev 33560)
+++ haiku/trunk/src/add-ons/print/transports/lpr/LprSetupDlg.cpp        
2009-10-12 20:01:09 UTC (rev 33561)
@@ -146,12 +146,15 @@
                        return false;
                }
 
-               fDir->WriteAttr(LPR_SERVER_NAME, B_STRING_TYPE, 0, 
fServer->Text(), strlen(fServer->Text()) + 1);
-               fDir->WriteAttr(LPR_QUEUE_NAME,  B_STRING_TYPE, 0, 
fQueue->Text(),  strlen(fQueue->Text())  + 1);
+               fDir->WriteAttr(LPR_SERVER_NAME, B_STRING_TYPE, 0, 
fServer->Text(),
+                       strlen(fServer->Text()) + 1);
+               fDir->WriteAttr(LPR_QUEUE_NAME,  B_STRING_TYPE, 0, 
fQueue->Text(),
+                       strlen(fQueue->Text())  + 1);
                return true;
        }
 
-       BAlert *alert = new BAlert("", "please input parameters.", "OK");
+       BAlert *alert = new BAlert("", "Please enter server address and printer"
+               "queue name.", "OK");
        alert->Go();
        return false;
 }
@@ -159,66 +162,32 @@
 
 LprSetupDlg::LprSetupDlg(BDirectory *dir)
        :
-       BWindow(BRect(100, 100, 100 + DLG_WIDTH, 100 + DLG_HEIGHT),
+       DialogWindow(BRect(100, 100, 100 + DLG_WIDTH, 100 + DLG_HEIGHT),
                "LPR Setup", B_TITLED_WINDOW_LOOK, B_MODAL_APP_WINDOW_FEEL,
                B_NOT_RESIZABLE | B_NOT_MINIMIZABLE | B_NOT_ZOOMABLE)
 {
-       fResult = 0;
-
-       Lock();
-       LprSetupView *view = new LprSetupView(Bounds(), dir);
-       AddChild(view);
-       Unlock();
-
-       fExitSemaphore = create_sem(0, "lprSetupSem");
+       fSetupView = new LprSetupView(Bounds(), dir);
+       AddChild(fSetupView);
 }
 
 
-bool
-LprSetupDlg::QuitRequested()
-{
-       fResult = B_ERROR;
-       release_sem(fExitSemaphore);
-       return true;
-}
-
-
 void
 LprSetupDlg::MessageReceived(BMessage *msg)
 {
-       bool success;
-
        switch (msg->what) {
                case M_OK:
-                       Lock();
-                       success = ((LprSetupView 
*)ChildAt(0))->UpdateViewData();
-                       Unlock();
-                       if (success) {
-                               fResult = B_NO_ERROR;
-                               release_sem(fExitSemaphore);
+                       if (fSetupView->UpdateViewData()) {
+                               SetResult(B_OK);
+                               PostMessage(B_QUIT_REQUESTED);
                        }
                        break;
 
                case M_CANCEL:
-                       fResult = B_ERROR;
-                       release_sem(fExitSemaphore);
+                       SetResult(B_ERROR);
+                       PostMessage(B_QUIT_REQUESTED);
                        break;
 
                default:
-                       BWindow::MessageReceived(msg);
-                       break;
+                       DialogWindow::MessageReceived(msg);
        }
 }
-
-
-int
-LprSetupDlg::Go()
-{
-       Show();
-       acquire_sem(fExitSemaphore);
-       delete_sem(fExitSemaphore);
-       int value = fResult;
-       Lock();
-       Quit();
-       return value;
-}

Modified: haiku/trunk/src/add-ons/print/transports/lpr/LprSetupDlg.h
===================================================================
--- haiku/trunk/src/add-ons/print/transports/lpr/LprSetupDlg.h  2009-10-12 
19:42:50 UTC (rev 33560)
+++ haiku/trunk/src/add-ons/print/transports/lpr/LprSetupDlg.h  2009-10-12 
20:01:09 UTC (rev 33561)
@@ -6,19 +6,20 @@
 
 #include <Window.h>
 
+#include "DialogWindow.h"
+
 class BDirectory;
+class LprSetupView;
 
-class LprSetupDlg : public BWindow {
+
+class LprSetupDlg : public DialogWindow {
 public:
                                        LprSetupDlg(BDirectory *);
                                        ~LprSetupDlg() {}
-       virtual bool    QuitRequested();
        virtual void    MessageReceived(BMessage *message);
-                       int     Go();
 
 private:
-       int    fResult;
-       sem_id fExitSemaphore;
+       LprSetupView*   fSetupView;
 };
 
 #endif // __LprSetupDlg_H

Modified: haiku/trunk/src/add-ons/print/transports/lpr/LprTransport.cpp
===================================================================
--- haiku/trunk/src/add-ons/print/transports/lpr/LprTransport.cpp       
2009-10-12 19:42:50 UTC (rev 33560)
+++ haiku/trunk/src/add-ons/print/transports/lpr/LprTransport.cpp       
2009-10-12 20:01:09 UTC (rev 33561)
@@ -77,8 +77,20 @@
 
 LprTransport::~LprTransport()
 {
+       if (!fError)
+               _SendFile();
+
+       if (fFile[0] != '\0')
+               unlink(fFile);
+}
+
+
+void
+LprTransport::_SendFile()
+{
        char hostname[128];
-       gethostname(hostname, sizeof(hostname));
+       if (gethostname(hostname, sizeof(hostname)) != B_OK)
+               strcpy(hostname, "localhost");
 
        ostringstream cfname;
        cfname << "cfA" << setw(3) << setfill('0') << fJobId << hostname;
@@ -116,8 +128,6 @@
                BAlert *alert = new BAlert("", err.what(), "OK");
                alert->Go();
        }
-
-       unlink(fFile);
 }
 
 

Modified: haiku/trunk/src/add-ons/print/transports/lpr/LprTransport.h
===================================================================
--- haiku/trunk/src/add-ons/print/transports/lpr/LprTransport.h 2009-10-12 
19:42:50 UTC (rev 33560)
+++ haiku/trunk/src/add-ons/print/transports/lpr/LprTransport.h 2009-10-12 
20:01:09 UTC (rev 33561)
@@ -21,6 +21,8 @@
                        bool    fail() const;
 
 private:
+       void                    _SendFile();
+
        char    fServer[256];
        char    fQueue[256];
        char    fFile[256];


Other related posts: