From 77247010254da0a572fb38b25db2a3bc9c372e4c Mon Sep 17 00:00:00 2001 From: gendusoa Date: Sun, 25 Aug 2002 00:31:17 +0000 Subject: [PATCH] Added display of "NO PREVIEW" for modules not supporting such. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@873 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/prefs/screensaver/PreviewView.cpp | 37 ++++++++++++++++++++++----- src/prefs/screensaver/PreviewView.h | 3 +++ 2 files changed, 34 insertions(+), 6 deletions(-) diff --git a/src/prefs/screensaver/PreviewView.cpp b/src/prefs/screensaver/PreviewView.cpp index 563ea03904..8b6f13b723 100644 --- a/src/prefs/screensaver/PreviewView.cpp +++ b/src/prefs/screensaver/PreviewView.cpp @@ -68,7 +68,8 @@ PreviewView::PreviewView(BRect frame, const char *name) removeConfigView (false), deleteSaver (false), removePreviewArea (false), - unloadAddon (false) + unloadAddon (false), + noPreview (false) { SetViewColor(216,216,216); AddChild(previewArea=new BView (scale2(1,8,1,2,Bounds()),"sampleScreen",B_FOLLOW_NONE,B_WILL_DRAW)); @@ -152,6 +153,7 @@ void PreviewView::LoadNewAddon(const char* addOnFilename) snooze( saver->TickSize() ); kill_thread( previewData.previewThreadId ); previewData.stopMe = false; + previewData.previewThreadId = 0; } status_t lastOpStatus; @@ -186,6 +188,12 @@ void PreviewView::LoadNewAddon(const char* addOnFilename) removeConfigView = false; } + if (noPreview) + { + noPreviewView->RemoveSelf(); + delete noPreviewView; + } + if (removePreviewArea) { previewArea->RemoveSelf(); @@ -240,9 +248,15 @@ void PreviewView::LoadNewAddon(const char* addOnFilename) lastOpStatus = saver->StartSaver(previewArea, true); if ( lastOpStatus != B_OK ) + { std::cout << "StartSaver() said no go, returned " << lastOpStatus << '\n'; - else + noPreview = true; + } + else + { stopSaver = true; + noPreview = false; + } // make config view BRect configViewBounds = settingsBoxPtr->Bounds(); @@ -254,10 +268,21 @@ void PreviewView::LoadNewAddon(const char* addOnFilename) stopConfigView = true; removeConfigView = true; - previewData.previewThreadId = spawn_thread( previewThread, "preview_thread", 50, NULL ); - resume_thread( previewData.previewThreadId ); - - removePreviewArea = true; + if ( noPreview ) + { + noPreviewView = new BStringView(previewArea->Bounds(), "no_preview", "NO PREVIEW AVAILABLE"); + rgb_color white = { 255, 255, 255, 0}; + noPreviewView->SetHighColor(white); + noPreviewView->SetAlignment(B_ALIGN_CENTER); + noPreviewView->Draw(previewArea->Bounds()); + previewArea->AddChild(noPreviewView); + } + else + { + previewData.previewThreadId = spawn_thread( previewThread, "preview_thread", 50, NULL ); + resume_thread( previewData.previewThreadId ); + removePreviewArea = true; + } } // end PreviewView::LoadNewAddon() diff --git a/src/prefs/screensaver/PreviewView.h b/src/prefs/screensaver/PreviewView.h index 691fbcc570..fc5f7507fb 100644 --- a/src/prefs/screensaver/PreviewView.h +++ b/src/prefs/screensaver/PreviewView.h @@ -2,6 +2,7 @@ #include #include #include +#include class BScreenSaver; @@ -31,6 +32,8 @@ private: bool deleteSaver; bool removePreviewArea; bool unloadAddon; + bool noPreview; + BStringView *noPreviewView; }; // end class PreviewView