[haiku-webkit-commits] r512 - webkit/trunk/WebKit/haiku/WebPositive

  • From: webkit@xxxxxxxxxxxxxxx
  • To: haiku-webkit-commits@xxxxxxxxxxxxx
  • Date: Fri, 21 May 2010 16:59:58 +0000

Author: stippi
Date: Fri May 21 16:59:58 2010
New Revision: 512
URL: http://mmlr.dyndns.org/changeset/512

Log:
* When downloads are still in progress, warn the user when the app quits and
  allow to continue downloading.
* If the Downloads window is the only window, minimize on close instead of
  hiding without any way to get the window back.
* Added menu item "New browser window" to Downloads window.

Modified:
   webkit/trunk/WebKit/haiku/WebPositive/BrowserApp.cpp
   webkit/trunk/WebKit/haiku/WebPositive/DownloadWindow.cpp
   webkit/trunk/WebKit/haiku/WebPositive/DownloadWindow.h

Modified: webkit/trunk/WebKit/haiku/WebPositive/BrowserApp.cpp
==============================================================================
--- webkit/trunk/WebKit/haiku/WebPositive/BrowserApp.cpp        Thu May 20 
19:57:34 2010        (r511)
+++ webkit/trunk/WebKit/haiku/WebPositive/BrowserApp.cpp        Fri May 21 
16:59:58 2010        (r512)
@@ -212,6 +212,7 @@
        }
        case WINDOW_OPENED:
                fWindowCount++;
+               fDownloadWindow->SetMinimizeOnClose(false);
                break;
        case WINDOW_CLOSED:
                fWindowCount--;
@@ -250,6 +251,28 @@
 bool
 BrowserApp::QuitRequested()
 {
+       if (fDownloadWindow->DownloadsInProgress()) {
+               BAlert* alert = new BAlert("Downloads in progress",
+                       "There are still downloads in progress, do you really 
want to "
+                       "quit WebPositive now?", "Quit", "Continue downloads");
+               int32 choice = alert->Go();
+               if (choice == 1) {
+                       if (fWindowCount == 0) {
+                               if (fDownloadWindow->Lock()) {
+                                       fDownloadWindow->SetWorkspaces(1 << 
current_workspace());
+                                       if (fDownloadWindow->IsHidden())
+                                               fDownloadWindow->Show();
+                                       else
+                                               fDownloadWindow->Activate();
+                                       
fDownloadWindow->SetMinimizeOnClose(true);
+                                       fDownloadWindow->Unlock();
+                                       return false;
+                               }
+                       } else
+                               return false;
+               }
+       }
+
        for (int i = 0; BWindow* window = WindowAt(i); i++) {
                BrowserWindow* webWindow = dynamic_cast<BrowserWindow*>(window);
                if (!webWindow)

Modified: webkit/trunk/WebKit/haiku/WebPositive/DownloadWindow.cpp
==============================================================================
--- webkit/trunk/WebKit/haiku/WebPositive/DownloadWindow.cpp    Thu May 20 
19:57:34 2010        (r511)
+++ webkit/trunk/WebKit/haiku/WebPositive/DownloadWindow.cpp    Fri May 21 
16:59:58 2010        (r512)
@@ -46,6 +46,7 @@
 #include <SpaceLayoutItem.h>
 
 #include "BrowserApp.h"
+#include "BrowserWindow.h"
 #include "DownloadProgressView.h"
 #include "SettingsKeys.h"
 #include "SettingsMessage.h"
@@ -135,7 +136,8 @@
                SettingsMessage* settings)
        : BWindow(frame, "Downloads",
                B_TITLED_WINDOW_LOOK, B_NORMAL_WINDOW_FEEL,
-               B_AUTO_UPDATE_SIZE_LIMITS | B_ASYNCHRONOUS_CONTROLS | 
B_NOT_ZOOMABLE)
+               B_AUTO_UPDATE_SIZE_LIMITS | B_ASYNCHRONOUS_CONTROLS | 
B_NOT_ZOOMABLE),
+       fMinimizeOnClose(false)
 {
        SetPulseRate(1000000);
 
@@ -156,6 +158,13 @@
        BMenu* menu = new BMenu("Downloads");
        menu->AddItem(new BMenuItem("Open downloads folder",
                new BMessage(OPEN_DOWNLOADS_FOLDER)));
+       BMessage* newWindowMessage = new BMessage(NEW_WINDOW);
+       newWindowMessage->AddString("url", "");
+       BMenuItem* newWindowItem = new BMenuItem("New browser window",
+               newWindowMessage, 'N');
+       menu->AddItem(newWindowItem);
+       newWindowItem->SetTarget(be_app);
+       menu->AddSeparatorItem();
        menu->AddItem(new BMenuItem("Hide", new BMessage(B_QUIT_REQUESTED), 
'J'));
        menuBar->AddItem(menu);
 
@@ -305,12 +314,52 @@
 bool
 DownloadWindow::QuitRequested()
 {
-       if (!IsHidden())
-               Hide();
+       if (fMinimizeOnClose) {
+               if (!IsMinimized())
+                       Minimize(true);
+       } else {
+               if (!IsHidden())
+                       Hide();
+       }
        return false;
 }
 
 
+bool
+DownloadWindow::DownloadsInProgress()
+{
+       bool downloadsInProgress = false;
+       if (!Lock())
+               return downloadsInProgress;
+
+       for (int32 i = fDownloadViewsLayout->CountItems() - 1;
+                       BLayoutItem* item = fDownloadViewsLayout->ItemAt(i); 
i--) {
+               DownloadProgressView* view = 
dynamic_cast<DownloadProgressView*>(
+                       item->View());
+               if (!view)
+                       continue;
+               if (view->Download() != NULL) {
+                       downloadsInProgress = true;
+                       break;
+               }
+       }
+
+       Unlock();
+
+       return downloadsInProgress;
+}
+
+
+void
+DownloadWindow::SetMinimizeOnClose(bool minimize)
+{
+       if (Lock()) {
+               fMinimizeOnClose = minimize;
+               Unlock();
+       }
+}
+
+
 // #pragma mark - private
 
 

Modified: webkit/trunk/WebKit/haiku/WebPositive/DownloadWindow.h
==============================================================================
--- webkit/trunk/WebKit/haiku/WebPositive/DownloadWindow.h      Thu May 20 
19:57:34 2010        (r511)
+++ webkit/trunk/WebKit/haiku/WebPositive/DownloadWindow.h      Fri May 21 
16:59:58 2010        (r512)
@@ -50,6 +50,9 @@
        virtual void                            MessageReceived(BMessage* 
message);
        virtual bool                            QuitRequested();
 
+                       bool                            DownloadsInProgress();
+                       void                            SetMinimizeOnClose(bool 
minimize);
+
 private:
                        void                            
_DownloadStarted(BWebDownload* download);
                        void                            
_DownloadFinished(BWebDownload* download);
@@ -66,6 +69,7 @@
                        BButton*                        fRemoveFinishedButton;
                        BButton*                        fRemoveMissingButton;
                        BString                         fDownloadPath;
+                       bool                            fMinimizeOnClose;
 };
 
 #endif // DOWNLOAD_WINDOW_H

Other related posts:

  • » [haiku-webkit-commits] r512 - webkit/trunk/WebKit/haiku/WebPositive - webkit