[haiku-commits] haiku: hrev47690 - src/preferences/screensaver

  • From: pulkomandy@xxxxxxxxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Thu, 14 Aug 2014 12:39:17 +0200 (CEST)

hrev47690 adds 1 changeset to branch 'master'
old head: 613468813b53f9dbc0d8b7b41276f517789f07ee
new head: 9bac05ae6cce56d06edcdc28036bf104af7ca2a3
overview: http://cgit.haiku-os.org/haiku/log/?qt=range&q=9bac05a+%5E6134688

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

9bac05a: Make the "no preview" screen work in all cases
  
  * HideNoPreview() was never called...
  * Use a BCardLayout to make it easier to know which of the two screens
  is shown.

                             [ Adrien Destugues <pulkomandy@xxxxxxxxxxxxx> ]

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

Revision:    hrev47690
Commit:      9bac05ae6cce56d06edcdc28036bf104af7ca2a3
URL:         http://cgit.haiku-os.org/haiku/commit/?id=9bac05a
Author:      Adrien Destugues <pulkomandy@xxxxxxxxxxxxx>
Date:        Thu Aug 14 10:38:48 2014 UTC

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

2 files changed, 25 insertions(+), 20 deletions(-)
src/preferences/screensaver/PreviewView.cpp      | 37 +++++++++++---------
.../screensaver/ScreenSaverWindow.cpp            |  8 +++--

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

diff --git a/src/preferences/screensaver/PreviewView.cpp 
b/src/preferences/screensaver/PreviewView.cpp
index 246e0b7..fc5c74f 100644
--- a/src/preferences/screensaver/PreviewView.cpp
+++ b/src/preferences/screensaver/PreviewView.cpp
@@ -12,6 +12,7 @@
 
 #include <iostream>
 
+#include <CardLayout.h>
 #include <Catalog.h>
 #include <GroupLayout.h>
 #include <Point.h>
@@ -65,6 +66,21 @@ PreviewView::PreviewView(const char* name)
        // We draw the "monitor" around the preview, hence the strange insets.
        layout->SetInsets(10, 8, 11, 16);
        SetLayout(layout);
+
+       fNoPreview = new BStringView("no preview",
+               B_TRANSLATE("No preview available"));
+
+       fNoPreview->Hide();
+
+       BView* container = new BView("preview container", 0);
+       container->SetLayout(new BCardLayout());
+       AddChild(container);
+       container->SetViewColor(0, 0, 0);
+       container->SetLowColor(0, 0, 0);
+       container->AddChild(fNoPreview);
+
+       fNoPreview->SetHighColor(255, 255, 255);
+       fNoPreview->SetAlignment(B_ALIGN_CENTER);
 }
 
 
@@ -110,7 +126,7 @@ PreviewView::AddPreview()
        fSaverView = new BView("preview", B_WILL_DRAW);
        fSaverView->SetViewColor(0, 0, 0);
        fSaverView->SetLowColor(0, 0, 0);
-       AddChild(fSaverView);
+       ChildAt(0)->AddChild(fSaverView);
 
        float aspectRatio = 4.0f / 3.0f;
                // 4:3 monitor
@@ -120,20 +136,9 @@ PreviewView::AddPreview()
        fSaverView->SetExplicitSize(BSize(previewWidth, previewHeight));
        fSaverView->ResizeTo(previewWidth, previewHeight);
 
-       fNoPreview = new BStringView("no preview",
-               B_TRANSLATE("No preview available"));
-
-       fNoPreview->Hide();
        fNoPreview->SetExplicitSize(BSize(previewWidth, previewHeight));
        fNoPreview->ResizeTo(previewWidth, previewHeight);
 
-       AddChild(fNoPreview);
-
-       fNoPreview->SetViewColor(0, 0, 0);
-       fNoPreview->SetLowColor(0, 0, 0);
-       fNoPreview->SetHighColor(255, 255, 255);
-       fNoPreview->SetAlignment(B_ALIGN_CENTER);
-
        return fSaverView;
 }
 
@@ -142,7 +147,7 @@ BView*
 PreviewView::RemovePreview()
 {
        if (fSaverView != NULL)
-               RemoveChild(fSaverView);
+               ChildAt(0)->RemoveChild(fSaverView);
 
        BView* saverView = fSaverView;
        fSaverView = NULL;
@@ -160,14 +165,12 @@ PreviewView::SaverView()
 void
 PreviewView::ShowNoPreview() const
 {
-       fSaverView->Hide();
-       fNoPreview->Show();
+       ((BCardLayout*)ChildAt(0)->GetLayout())->SetVisibleItem((int32)0);
 }
 
 
 void
 PreviewView::HideNoPreview() const
 {
-       fNoPreview->Hide();
-       fSaverView->Show();
+       ((BCardLayout*)ChildAt(0)->GetLayout())->SetVisibleItem(1);
 }
diff --git a/src/preferences/screensaver/ScreenSaverWindow.cpp 
b/src/preferences/screensaver/ScreenSaverWindow.cpp
index 7714f17..14fc4a5 100644
--- a/src/preferences/screensaver/ScreenSaverWindow.cpp
+++ b/src/preferences/screensaver/ScreenSaverWindow.cpp
@@ -828,11 +828,13 @@ ModulesView::_OpenSaver()
        BScreenSaver* saver = ScreenSaver();
        if (saver != NULL && fSettingsView != NULL) {
                saver->StartConfig(fSettingsView);
-               if (saver->StartSaver(view, true) == B_OK)
+               if (saver->StartSaver(view, true) == B_OK) {
+                       fPreviewView->HideNoPreview();
                        fSaverRunner->Run();
-               else
+               } else
                        fPreviewView->ShowNoPreview();
-       }
+       } else
+               fPreviewView->ShowNoPreview();
 
        if (fSettingsView->ChildAt(0) == NULL) {
                // There are no settings at all, we add the module name here to


Other related posts:

  • » [haiku-commits] haiku: hrev47690 - src/preferences/screensaver - pulkomandy