[haiku-commits] haiku: hrev44946 - src/apps/expander

  • From: zharik@xxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Sun, 2 Dec 2012 13:48:04 +0100 (CET)

hrev44946 adds 1 changeset to branch 'master'
old head: d3144dd06b486178e9950fe5a533e435f9ea2179
new head: cb65bb873256e08920206840d8b91b51e6ca073c
overview: http://cgit.haiku-os.org/haiku/log/?qt=range&q=cb65bb8+%5Ed3144dd

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

cb65bb8: Create dest. folder if it haven't existed. Fixes #8519
  
  That was implemented during completing GCI 2012 task.
  
  Signed-off-by: Siarzhuk Zharski <zharik@xxxxxx>

                                [ Przemysław Buczkowski <przemub@xxxxxxxx> ]

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

Revision:    hrev44946
Commit:      cb65bb873256e08920206840d8b91b51e6ca073c
URL:         http://cgit.haiku-os.org/haiku/commit/?id=cb65bb8
Author:      Przemysław Buczkowski <przemub@xxxxxxxx>
Date:        Sun Dec  2 12:43:00 2012 UTC
Committer:   Siarzhuk Zharski <zharik@xxxxxx>
Commit-Date: Sun Dec  2 12:43:00 2012 UTC

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

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

1 file changed, 27 insertions(+), 6 deletions(-)
src/apps/expander/ExpanderWindow.cpp | 33 ++++++++++++++++++++++++++------

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

diff --git a/src/apps/expander/ExpanderWindow.cpp 
b/src/apps/expander/ExpanderWindow.cpp
index 9ea6fdc..d667d57 100644
--- a/src/apps/expander/ExpanderWindow.cpp
+++ b/src/apps/expander/ExpanderWindow.cpp
@@ -150,19 +150,40 @@ ExpanderWindow::ValidateDest()
        BVolume volume;
        if (!entry.Exists()) {
                BAlert* alert = new BAlert("destAlert",
-                       B_TRANSLATE("The destination folder does not exist."),
-                       B_TRANSLATE("Cancel"), NULL, NULL,
+                       B_TRANSLATE("Destination folder doesn't exist, 
create?"),
+                       B_TRANSLATE("Yes"), B_TRANSLATE("No"), NULL,
                        B_WIDTH_AS_USUAL, B_EVEN_SPACING, B_WARNING_ALERT);
-               alert->SetFlags(alert->Flags() | B_CLOSE_ON_ESCAPE);
-               alert->Go();
-               return false;
+               alert->SetShortcut(0, B_ESCAPE);
+               if (alert->Go() == 0) {
+                       if (create_directory(fDestText->Text(), 0755) == B_OK) {
+                               BEntry newEntry(fDestText->Text(), true);
+                               newEntry.GetRef(&fDestRef);
+                               return true;
+                       } else {
+                               BAlert* alert = new BAlert("stopAlert",
+                                       B_TRANSLATE("Failed to create the 
destination folder."),
+                                       B_TRANSLATE("Cancel"), NULL, NULL,
+                                       B_WIDTH_AS_USUAL, B_EVEN_SPACING, 
B_WARNING_ALERT);
+                               alert->SetFlags(alert->Flags() | 
B_CLOSE_ON_ESCAPE);
+                               alert->Go();
+                               return false;
+                       }
+               } else {
+                       BAlert* alert = new BAlert("stopAlert",
+                               B_TRANSLATE("The extraction operation 
aborted."),
+                               B_TRANSLATE("Cancel"), NULL, NULL,
+                               B_WIDTH_AS_USUAL, B_EVEN_SPACING, 
B_WARNING_ALERT);
+                       alert->SetFlags(alert->Flags() | B_CLOSE_ON_ESCAPE);
+                       alert->Go();
+                       return false;
+               }
        } else if (!entry.IsDirectory()) {
                BAlert* alert = new BAlert("destAlert",
                        B_TRANSLATE("The destination is not a folder."),
                        B_TRANSLATE("Cancel"), NULL, NULL,
                        B_WIDTH_AS_USUAL, B_EVEN_SPACING, B_WARNING_ALERT);
                alert->SetFlags(alert->Flags() | B_CLOSE_ON_ESCAPE);
-               alert->Go();    
+               alert->Go();
                return false;
        } else if (entry.GetVolume(&volume) != B_OK || volume.IsReadOnly()) {
                BAlert* alert = new BAlert("destAlert",


Other related posts: