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:
@@ -30,5 +30,6 @@ DoCatalogs ScreenSaver :
|
|||||||
x-vnd.Haiku-ScreenSaver
|
x-vnd.Haiku-ScreenSaver
|
||||||
:
|
:
|
||||||
PasswordWindow.cpp
|
PasswordWindow.cpp
|
||||||
|
PreviewView.cpp
|
||||||
ScreenSaverWindow.cpp
|
ScreenSaverWindow.cpp
|
||||||
;
|
;
|
||||||
|
|||||||
@@ -9,17 +9,21 @@
|
|||||||
|
|
||||||
|
|
||||||
#include "PreviewView.h"
|
#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 <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[]
|
static float sampleX[]
|
||||||
= { 0, 0.05, 0.15, 0.7, 0.725, 0.8, 0.825, 0.85, 0.950, 1.0 };
|
= { 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)
|
PreviewView::PreviewView(const char* name)
|
||||||
:
|
:
|
||||||
BView(name, B_WILL_DRAW),
|
BView(name, B_WILL_DRAW),
|
||||||
fSaverView(NULL)
|
fSaverView(NULL),
|
||||||
|
fNoPreview(NULL)
|
||||||
{
|
{
|
||||||
SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR));
|
SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR));
|
||||||
|
|
||||||
@@ -96,13 +104,30 @@ PreviewView::Draw(BRect updateRect)
|
|||||||
BView*
|
BView*
|
||||||
PreviewView::AddPreview()
|
PreviewView::AddPreview()
|
||||||
{
|
{
|
||||||
BRect rect = scale2(1, 8, 1, 2, Bounds());
|
BRect rect(scale2(1, 8, 1, 2, Bounds()).InsetBySelf(1.0f, 1.0f));
|
||||||
fSaverView = new BView(rect.InsetBySelf(1, 1), "preview", B_FOLLOW_NONE,
|
fSaverView = new BView(rect, "preview", B_FOLLOW_NONE, B_WILL_DRAW);
|
||||||
B_WILL_DRAW);
|
|
||||||
fSaverView->SetViewColor(0, 0, 0);
|
fSaverView->SetViewColor(0, 0, 0);
|
||||||
fSaverView->SetLowColor(0, 0, 0);
|
fSaverView->SetLowColor(0, 0, 0);
|
||||||
AddChild(fSaverView);
|
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;
|
return fSaverView;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -124,3 +149,17 @@ PreviewView::SaverView()
|
|||||||
{
|
{
|
||||||
return fSaverView;
|
return fSaverView;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
PreviewView::ShowNoPreview() const
|
||||||
|
{
|
||||||
|
fNoPreview->Show();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
PreviewView::HideNoPreview() const
|
||||||
|
{
|
||||||
|
fNoPreview->Hide();
|
||||||
|
}
|
||||||
|
|||||||
@@ -10,11 +10,11 @@
|
|||||||
#define PREVIEW_VIEW_H
|
#define PREVIEW_VIEW_H
|
||||||
|
|
||||||
|
|
||||||
#include <Box.h>
|
|
||||||
#include <ScreenSaverRunner.h>
|
|
||||||
#include <View.h>
|
#include <View.h>
|
||||||
|
|
||||||
|
|
||||||
|
class BTextView;
|
||||||
|
|
||||||
class PreviewView : public BView {
|
class PreviewView : public BView {
|
||||||
public:
|
public:
|
||||||
PreviewView(const char* name);
|
PreviewView(const char* name);
|
||||||
@@ -26,8 +26,12 @@ public:
|
|||||||
BView* RemovePreview();
|
BView* RemovePreview();
|
||||||
BView* SaverView();
|
BView* SaverView();
|
||||||
|
|
||||||
|
void ShowNoPreview() const;
|
||||||
|
void HideNoPreview() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
BView* fSaverView;
|
BView* fSaverView;
|
||||||
|
BTextView* fNoPreview;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -36,6 +36,7 @@
|
|||||||
#include <Roster.h>
|
#include <Roster.h>
|
||||||
#include <Screen.h>
|
#include <Screen.h>
|
||||||
#include <ScreenSaver.h>
|
#include <ScreenSaver.h>
|
||||||
|
#include <ScreenSaverRunner.h>
|
||||||
#include <ScrollView.h>
|
#include <ScrollView.h>
|
||||||
#include <Size.h>
|
#include <Size.h>
|
||||||
#include <Slider.h>
|
#include <Slider.h>
|
||||||
@@ -818,6 +819,8 @@ ModulesView::_OpenSaver()
|
|||||||
saver->StartConfig(fSettingsView);
|
saver->StartConfig(fSettingsView);
|
||||||
if (saver->StartSaver(view, true) == B_OK)
|
if (saver->StartSaver(view, true) == B_OK)
|
||||||
fSaverRunner->Run();
|
fSaverRunner->Run();
|
||||||
|
else
|
||||||
|
fPreviewView->ShowNoPreview();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fSettingsView->ChildAt(0) == NULL) {
|
if (fSettingsView->ChildAt(0) == NULL) {
|
||||||
|
|||||||
Reference in New Issue
Block a user