[haiku-commits] haiku: hrev47383 - src/apps/webpositive

  • From: pulkomandy@xxxxxxxxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Mon, 16 Jun 2014 10:13:29 +0200 (CEST)

hrev47383 adds 1 changeset to branch 'master'
old head: 9b738c321b7ee0b5964e03f1d802c0412df9d46f
new head: 6563b112643871b3a1d35cdf5127f7766b46be8a
overview: http://cgit.haiku-os.org/haiku/log/?qt=range&q=6563b11+%5E9b738c3

----------------------------------------------------------------------------

6563b11: Add menu entry to save pages as MHTML.
  
  Fixes #9570.

                             [ Adrien Destugues <pulkomandy@xxxxxxxxxxxxx> ]

----------------------------------------------------------------------------

Revision:    hrev47383
Commit:      6563b112643871b3a1d35cdf5127f7766b46be8a
URL:         http://cgit.haiku-os.org/haiku/commit/?id=6563b11
Author:      Adrien Destugues <pulkomandy@xxxxxxxxxxxxx>
Date:        Mon Jun 16 08:12:50 2014 UTC

Ticket:      https://dev.haiku-os.org/ticket/9570

----------------------------------------------------------------------------

2 files changed, 33 insertions(+)
src/apps/webpositive/BrowserWindow.cpp | 31 ++++++++++++++++++++++++++++++
src/apps/webpositive/BrowserWindow.h   |  2 ++

----------------------------------------------------------------------------

diff --git a/src/apps/webpositive/BrowserWindow.cpp 
b/src/apps/webpositive/BrowserWindow.cpp
index b25e180..eb1bd9e 100644
--- a/src/apps/webpositive/BrowserWindow.cpp
+++ b/src/apps/webpositive/BrowserWindow.cpp
@@ -43,6 +43,7 @@
 #include <Directory.h>
 #include <Entry.h>
 #include <File.h>
+#include <FilePanel.h>
 #include <FindDirectory.h>
 #include <GridLayoutBuilder.h>
 #include <GroupLayout.h>
@@ -96,6 +97,7 @@
 
 enum {
        OPEN_LOCATION                                                           
= 'open',
+       SAVE_PAGE                                                               
        = 'save',
        GO_BACK                                                                 
        = 'goba',
        GO_FORWARD                                                              
        = 'gofo',
        STOP                                                                    
        = 'stop',
@@ -398,6 +400,8 @@ BrowserWindow::BrowserWindow(BRect frame, SettingsMessage* 
appSettings,
                new BMessage(B_QUIT_REQUESTED), 'W', B_SHIFT_KEY));
        menu->AddItem(new BMenuItem(B_TRANSLATE("Close tab"),
                new BMessage(CLOSE_TAB), 'W'));
+       menu->AddItem(new BMenuItem(B_TRANSLATE("Save page"),
+               new BMessage(SAVE_PAGE), 'S'));
        menu->AddSeparatorItem();
        menu->AddItem(new BMenuItem(B_TRANSLATE("Downloads"),
                new BMessage(SHOW_DOWNLOAD_WINDOW), 'D'));
@@ -594,6 +598,9 @@ BrowserWindow::BrowserWindow(BRect frame, SettingsMessage* 
appSettings,
        } else
                _ShowBookmarkBar(false);
 
+       fSavePanel = new BFilePanel(B_SAVE_PANEL, new BMessenger(this), NULL, 0,
+               false);
+
        // Layout
        AddChild(BLayoutBuilder::Group<>(B_VERTICAL, 0.0)
 #if !INTEGRATE_MENU_INTO_TAB_BAR
@@ -665,6 +672,7 @@ BrowserWindow::~BrowserWindow()
        fAppSettings->RemoveListener(BMessenger(this));
        delete fTabManager;
        delete fPulseRunner;
+       delete fSavePanel;
 }
 
 
@@ -811,6 +819,29 @@ BrowserWindow::MessageReceived(BMessage* message)
                        break;
                }
 
+               case SAVE_PAGE:
+               {
+                       
fSavePanel->SetSaveText(CurrentWebView()->MainFrameTitle());
+                       fSavePanel->Show();
+                       break;
+               }
+
+               case B_SAVE_REQUESTED:
+               {
+                       entry_ref ref;
+                       BString name;
+
+                       if (message->FindRef("directory", &ref) == B_OK &&
+                               message->FindString("name", &name) == B_OK) {
+                               BDirectory dir(&ref);
+                               BFile output(&dir, name,
+                                       B_WRITE_ONLY | B_CREATE_FILE | 
B_ERASE_FILE);
+                               
CurrentWebView()->WebPage()->GetContentsAsMHTML(output);
+                       }
+
+                       break;
+               }
+
                case GO_BACK:
                        CurrentWebView()->GoBack();
                        break;
diff --git a/src/apps/webpositive/BrowserWindow.h 
b/src/apps/webpositive/BrowserWindow.h
index 3defae7..f51a5b5 100644
--- a/src/apps/webpositive/BrowserWindow.h
+++ b/src/apps/webpositive/BrowserWindow.h
@@ -37,6 +37,7 @@ class BButton;
 class BCheckBox;
 class BDirectory;
 class BFile;
+class BFilePanel;
 class BLayoutItem;
 class BMenu;
 class BMenuItem;
@@ -272,6 +273,7 @@ private:
 
                        BMenuItem*                      fBookmarkBarMenuItem;
                        BookmarkBar*            fBookmarkBar;
+                       BFilePanel*                     fSavePanel;
 };
 
 


Other related posts: