#include "ContainerWindow.h"
#include <TranslationKit.h>
#include <iostream.h>
extern const char *PREFS_BACKSTORE_PATH;
ContainerWindow :: ContainerWindow(BPositionIO *stream)
: IEWindow("ContainerWindow")
{
Lock();
CreateViewBitmap();
fArchiveStream = stream;
fShelf = new BShelf(fArchiveStream, fContainerView);
fShelf -> SetDisplaysZombies(true);
fArchiveStream -> Seek(0, SEEK_SET);
fRemoveButton = (BButton *)FindView("RemoveButton" );
fTestButton = (BButton *)FindView("TestButton" );
GetPrefs();
Unlock();
Show();
}
ContainerWindow :: ~ContainerWindow(void)
{
SetPrefs();
if (fPrefs != NULL) delete fPrefs;
}
bool ContainerWindow :: QuitRequested()
{
be_app->PostMessage(B_QUIT_REQUESTED);
delete fShelf;
fShelf = NULL;
return true;
}
void ContainerWindow::MessageReceived(BMessage *message)
{
switch(message->what)
{
case IE_CONTAINERWINDOW_MAINMENU_FILE_NEW:
break;
case IE_CONTAINERWINDOW_MAINMENU_FILE_OPEN___:
break;
case IE_CONTAINERWINDOW_MAINMENU_FILE_SAVE:
break;
case IE_CONTAINERWINDOW_MAINMENU_FILE_SAVE_AS___:
break;
case IE_CONTAINERWINDOW_MAINMENU_FILE_ABOUT___:
PostMessage(B_ABOUT_REQUESTED);
break;
case IE_CONTAINERWINDOW_MAINMENU_FILE_QUIT:
PostMessage(B_QUIT_REQUESTED);
break;
case IE_CONTAINERWINDOW_MAINMENU_EDIT_UNDO:
break;
case IE_CONTAINERWINDOW_MAINMENU_EDIT_CUT:
break;
case IE_CONTAINERWINDOW_MAINMENU_EDIT_COPY:
break;
case IE_CONTAINERWINDOW_MAINMENU_EDIT_PASTE:
break;
case IE_CONTAINERWINDOW_TESTBUTTON:
{
BMessage msg = BMessage(TEST_REPLICANT);
msg.AddBool("Test",true);
be_app ->PostMessage(&msg,be_app);
QuitRequested();
}
break;
case IE_CONTAINERWINDOW_REMOVEBUTTON:
{
BMessage msg = BMessage(CLEAR_FILE);
msg.AddBool("Remove",true);
be_app ->PostMessage(&msg,be_app);
QuitRequested();
}
break;
case B_ABOUT_REQUESTED:
{
BAlert *alert = new BAlert("", "XContainer (H.Reh, dr.hartmut.reh@gmx.de) " "\n" "\n"
"Based upon Container Demo from Be Inc." "\n"
"The GUI was created with InterfaceElements (Attila Mezei)" "\n"
"Please read the ***Be Sample Code License*** " "\n"
,"OK");
alert -> Go(NULL);
}
break;
default:
BWindow::MessageReceived(message);
break;
}
}
void ContainerWindow::MenusBeginning()
{
KeyMenuBar()->FindItem(IE_CONTAINERWINDOW_MAINMENU_FILE_NEW) ->SetEnabled(false);
KeyMenuBar()->FindItem(IE_CONTAINERWINDOW_MAINMENU_FILE_OPEN___) ->SetEnabled(false);
KeyMenuBar()->FindItem(IE_CONTAINERWINDOW_MAINMENU_FILE_SAVE) ->SetEnabled(false);
KeyMenuBar()->FindItem(IE_CONTAINERWINDOW_MAINMENU_FILE_SAVE_AS___) ->SetEnabled(false);
KeyMenuBar()->FindItem(IE_CONTAINERWINDOW_MAINMENU_FILE_ABOUT___) ->SetEnabled(true);
KeyMenuBar()->FindItem(IE_CONTAINERWINDOW_MAINMENU_FILE_QUIT) ->SetEnabled(true);
KeyMenuBar()->FindItem(IE_CONTAINERWINDOW_MAINMENU_EDIT_UNDO) ->SetEnabled(false);
KeyMenuBar()->FindItem(IE_CONTAINERWINDOW_MAINMENU_EDIT_CUT) ->SetEnabled(false);
KeyMenuBar()->FindItem(IE_CONTAINERWINDOW_MAINMENU_EDIT_COPY) ->SetEnabled(false);
KeyMenuBar()->FindItem(IE_CONTAINERWINDOW_MAINMENU_EDIT_PASTE) ->SetEnabled(false);
}
void ContainerWindow :: CreateViewBitmap()
{
BBitmap *bitmap = NULL;
fContainerView = NULL;
bitmap = BTranslationUtils :: GetBitmap('JPEG',"DropZone.jpeg");
fContainerView = (BView *)FindView("ContainerView");
if ( (bitmap != NULL) && (fContainerView != NULL) ) fContainerView -> SetViewBitmap(bitmap);
delete bitmap;
}
void ContainerWindow :: GetPrefs()
{
status_t err;
BRect windFrame;
fPrefs = new TPreferences ("XContainer/preferences");
if (fPrefs -> InitCheck() != B_OK)
{
windFrame = Frame();
fPrefs -> SetRect ("WindowFrame", windFrame );
}
err = (fPrefs -> FindRect ("WindowFrame", &windFrame) );
if (err == B_OK)
{
ResizeTo(windFrame.Width(), windFrame.Height() );
MoveTo(windFrame.left, windFrame.top);
}
}
void ContainerWindow :: SetPrefs()
{
fPrefs -> SetRect ("WindowFrame", Frame() );
}
void ContainerWindow :: EnableRemoveButton(bool enable)
{
fRemoveButton -> SetEnabled(enable);
}
void ContainerWindow :: EnableTestButton(bool enable)
{
fTestButton -> SetEnabled(enable);
}