ScreenSaver: Add "No preview available" text

... when a screensaver doesn't provide a preview.

Also do a bit of refactoring in PreviewView, remove unneeded includes
This commit is contained in:
John Scipione
2014-02-26 17:58:42 -05:00
parent 0591d8477c
commit 58b592b3b5
4 changed files with 61 additions and 14 deletions
+1
View File
@@ -30,5 +30,6 @@ DoCatalogs ScreenSaver :
x-vnd.Haiku-ScreenSaver
:
PasswordWindow.cpp
PreviewView.cpp
ScreenSaverWindow.cpp
;
+51 -12
View File
@@ -9,17 +9,21 @@
#include "PreviewView.h"
#include "Utility.h"
#include <Point.h>
#include <Rect.h>
#include <Screen.h>
#include <ScreenSaver.h>
#include <Shape.h>
#include <String.h>
#include <iostream>
#include <Catalog.h>
#include <Point.h>
#include <Rect.h>
#include <Size.h>
#include <TextView.h>
#include "Utility.h"
#undef B_TRANSLATION_CONTEXT
#define B_TRANSLATION_CONTEXT "PreviewView"
static float sampleX[]
= { 0, 0.05, 0.15, 0.7, 0.725, 0.8, 0.825, 0.85, 0.950, 1.0 };
@@ -41,10 +45,14 @@ scale2(int x1, int x2, int y1, int y2, BRect area)
}
// #pragma mark - PreviewView
PreviewView::PreviewView(const char* name)
:
BView(name, B_WILL_DRAW),
fSaverView(NULL)
fSaverView(NULL),
fNoPreview(NULL)
{
SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR));
@@ -96,13 +104,30 @@ PreviewView::Draw(BRect updateRect)
BView*
PreviewView::AddPreview()
{
BRect rect = scale2(1, 8, 1, 2, Bounds());
fSaverView = new BView(rect.InsetBySelf(1, 1), "preview", B_FOLLOW_NONE,
B_WILL_DRAW);
BRect rect(scale2(1, 8, 1, 2, Bounds()).InsetBySelf(1.0f, 1.0f));
fSaverView = new BView(rect, "preview", B_FOLLOW_NONE, B_WILL_DRAW);
fSaverView->SetViewColor(0, 0, 0);
fSaverView->SetLowColor(0, 0, 0);
AddChild(fSaverView);
BRect textRect(rect);
textRect.OffsetTo(-7.0f, 0.0f);
textRect.InsetBy(15.0f, 20.0f);
fNoPreview = new BTextView(rect, "no preview", textRect, B_FOLLOW_NONE,
B_WILL_DRAW);
fNoPreview->SetViewColor(0, 0, 0);
fNoPreview->SetLowColor(0, 0, 0);
fNoPreview->SetFontAndColor(be_plain_font, B_FONT_ALL,
&(rgb_color){ 255, 255, 255 });
fNoPreview->SetText(B_TRANSLATE("No preview available"));
fNoPreview->SetAlignment(B_ALIGN_CENTER);
fNoPreview->MakeEditable(false);
fNoPreview->MakeResizable(false);
fNoPreview->MakeSelectable(false);
fNoPreview->Hide();
fSaverView->AddChild(fNoPreview);
return fSaverView;
}
@@ -124,3 +149,17 @@ PreviewView::SaverView()
{
return fSaverView;
}
void
PreviewView::ShowNoPreview() const
{
fNoPreview->Show();
}
void
PreviewView::HideNoPreview() const
{
fNoPreview->Hide();
}
+6 -2
View File
@@ -10,11 +10,11 @@
#define PREVIEW_VIEW_H
#include <Box.h>
#include <ScreenSaverRunner.h>
#include <View.h>
class BTextView;
class PreviewView : public BView {
public:
PreviewView(const char* name);
@@ -26,8 +26,12 @@ public:
BView* RemovePreview();
BView* SaverView();
void ShowNoPreview() const;
void HideNoPreview() const;
private:
BView* fSaverView;
BTextView* fNoPreview;
};
@@ -36,6 +36,7 @@
#include <Roster.h>
#include <Screen.h>
#include <ScreenSaver.h>
#include <ScreenSaverRunner.h>
#include <ScrollView.h>
#include <Size.h>
#include <Slider.h>
@@ -818,6 +819,8 @@ ModulesView::_OpenSaver()
saver->StartConfig(fSettingsView);
if (saver->StartSaver(view, true) == B_OK)
fSaverRunner->Run();
else
fPreviewView->ShowNoPreview();
}
if (fSettingsView->ChildAt(0) == NULL) {