Final changes before redesign. Fixed some issues with module preview lifetimes and added initial support for actually saving prefs, but just as likely broke much more.

git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1506 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
gendusoa
2002-10-13 23:05:11 +00:00
parent e57d159b95
commit 8f5f3a4503
4 changed files with 34 additions and 19 deletions
+22 -11
View File
@@ -16,7 +16,7 @@ struct
bool stopMe;
} previewData;
// viewer thread?
// viewer thread
int32 previewThread(void* data)
{
int cycleNumber = 0;
@@ -26,18 +26,30 @@ int32 previewThread(void* data)
return 0;
}
// TODO: implement lood counting
int32 loopOnCount = previewData.saver->LoopOnCount();
int32 loopOnCounter = 0;
int32 loopOffCount = previewData.saver->LoopOffCount();
int32 loopOffCounter = 0;
if (loopOnCount == 0 && loopOffCount == 0)
{
// TODO: fill in setup for "normal" loop counting here?
}
snooze( previewData.saver->TickSize() );
while (!previewData.stopMe)
{
previewData.previewArea->Window()->Lock();
previewData.saver->Draw( previewData.previewArea, cycleNumber );
previewData.previewArea->Window()->Unlock();
previewData.previewArea->Flush();
if (previewData.previewArea->Window()->Lock())
{
if (!previewData.previewArea->IsHidden())
{
previewData.saver->Draw( previewData.previewArea, cycleNumber );
}
previewData.previewArea->Window()->Unlock();
// previewData.previewArea->Flush();
}
snooze( previewData.saver->TickSize() );
cycleNumber++;
++cycleNumber;
}
} // end previewThread()
@@ -62,7 +74,6 @@ PreviewView::PreviewView(BRect frame, const char *name)
saver (0),
settingsBoxPtr (0),
configView (0),
messageRunner (0),
stopSaver (false),
stopConfigView (false),
removeConfigView (false),
@@ -122,7 +133,7 @@ PreviewView::~PreviewView()
previewArea->RemoveSelf();
delete previewArea;
}
} // end PreviewView::~PreviewView()
void PreviewView::Draw(BRect update)
@@ -145,7 +156,7 @@ void PreviewView::Draw(BRect update)
FillRect(scale2(5,6,4,5,Bounds()));
}
void PreviewView::LoadNewAddon(const char* addOnFilename)
void PreviewView::LoadNewAddon(const char* addOnFilename, BMessage* settingsMsg)
{
if (previewData.previewThreadId != 0)
{
@@ -230,7 +241,7 @@ void PreviewView::LoadNewAddon(const char* addOnFilename)
return;
}
saver = instantiate(new BMessage, addonImage);
saver = instantiate(settingsMsg, addonImage);
if (saver == 0)
{
std::cout << "Saver not instantiated.\n";
+2 -3
View File
@@ -12,18 +12,17 @@ public:
PreviewView(BRect frame, const char *name);
~PreviewView();
void Draw(BRect update);
void LoadNewAddon(const char* addOnFilename);
void LoadNewAddon(const char* addOnFilename, BMessage* settingsMsg);
void SetSettingsBoxPtr( BBox* settingsBox )
{ settingsBoxPtr = settingsBox; }
private:
BView *previewArea;
BBox *settingsBoxPtr;
BView *configView;
image_id addonImage;
BScreenSaver* saver;
BMessageRunner* messageRunner;
// to keep track of what to tear down
bool stopSaver;
+9 -5
View File
@@ -30,6 +30,7 @@ struct SSListItem
void ScreenSaver::MessageReceived(BMessage *msg)
{
SSListItem* listItem;
switch(msg->what)
{
case TAB1_CHG:
@@ -53,8 +54,12 @@ void ScreenSaver::MessageReceived(BMessage *msg)
break;
case SAVER_SEL:
updateStatus();
SelectedAddonFileName = reinterpret_cast<SSListItem*>(AddonList->ItemAt(ListView1->CurrentSelection()))->fileName;
previewDisplay->LoadNewAddon(SelectedAddonFileName.String());
listItem = reinterpret_cast<SSListItem*>(AddonList->ItemAt(ListView1->CurrentSelection()));
//BString settingsMsgName(listItem->fileName);
//settingsMsgName.Prepend("settings_");
//BMessage thisModulesSettings;
//settingsMsg.FindMessage(settingsMsgName, &thisModulesSettings);
previewDisplay->LoadNewAddon(listItem->fileName.String(), &settings);
BWindow::MessageReceived(msg);
break;
default:
@@ -213,9 +218,8 @@ void ScreenSaver::SetupForm(void)
find_directory(B_USER_SETTINGS_DIRECTORY,&path);
path.Append("OBOS_Screen_Saver",true);
BFile file(path.Path(),B_READ_ONLY);
BMessage msg;
msg.Unflatten(&file);
loadSettings (&msg);
settings.Unflatten(&file);
loadSettings (&settings);
updateStatus();
}
+1
View File
@@ -63,6 +63,7 @@ private:
pwWindow *pwWin;
BMessenger *pwMessenger;
BMessage settings;
};
#endif // _ScreenSaver_H