1// ContainerWindow.cpp
2// Generated by Interface Elements (Window v2.3) on Feb 14 2004
3// This is a user written class and will not be overwritten.
4
5#include "ContainerWindow.h"
6#include <TranslationKit.h>
7#include <iostream.h>
8
9extern const char *PREFS_BACKSTORE_PATH;
10
11ContainerWindow :: ContainerWindow(BPositionIO *stream)
12								 : IEWindow("ContainerWindow")
13{
14	Lock();
15		CreateViewBitmap();
16
17		fArchiveStream = stream;
18		fShelf = new BShelf(fArchiveStream, fContainerView);		// Attach fShelf to fContainerView
19		fShelf -> SetDisplaysZombies(true);
20		fArchiveStream -> Seek(0, SEEK_SET);
21
22		fRemoveButton = (BButton *)FindView("RemoveButton" );
23		fTestButton   = (BButton *)FindView("TestButton" );
24
25		GetPrefs();
26	Unlock();
27	Show();
28}
29
30
31ContainerWindow :: ~ContainerWindow(void)
32{
33	SetPrefs();
34  if (fPrefs != NULL) delete fPrefs;											// now prefs are saved
35}
36
37
38bool ContainerWindow :: QuitRequested()
39{
40//	long c = be_app->CountWindows();
41//	if (c == 1) be_app->PostMessage(B_QUIT_REQUESTED);
42	be_app->PostMessage(B_QUIT_REQUESTED);
43	delete 	fShelf;																	// by deleting the Shelf we'll save the state
44	fShelf 	= NULL;
45	return true;
46}
47
48
49// Handling of user interface and other events
50void ContainerWindow::MessageReceived(BMessage *message)
51{
52	switch(message->what)
53	{
54		case IE_CONTAINERWINDOW_MAINMENU_FILE_NEW:    // "New" is selected from menu���
55			break;
56
57		case IE_CONTAINERWINDOW_MAINMENU_FILE_OPEN___:    // "Open���" is selected from menu���
58			break;
59
60		case IE_CONTAINERWINDOW_MAINMENU_FILE_SAVE:    // "Save" is selected from menu���
61			break;
62
63		case IE_CONTAINERWINDOW_MAINMENU_FILE_SAVE_AS___:    // "Save As���" is selected from menu���
64			break;
65
66		case IE_CONTAINERWINDOW_MAINMENU_FILE_ABOUT___:    // "About���" is selected from menu���
67				PostMessage(B_ABOUT_REQUESTED);
68			break;
69
70		case IE_CONTAINERWINDOW_MAINMENU_FILE_QUIT:    // "Quit" is selected from menu���
71				PostMessage(B_QUIT_REQUESTED);
72			break;
73
74		case IE_CONTAINERWINDOW_MAINMENU_EDIT_UNDO:    // "Undo" is selected from menu���
75			break;
76
77		case IE_CONTAINERWINDOW_MAINMENU_EDIT_CUT:    // "Cut" is selected from menu���
78			break;
79
80		case IE_CONTAINERWINDOW_MAINMENU_EDIT_COPY:    // "Copy" is selected from menu���
81			break;
82
83		case IE_CONTAINERWINDOW_MAINMENU_EDIT_PASTE:    // "Paste" is selected from menu���
84			break;
85
86		case IE_CONTAINERWINDOW_TESTBUTTON:					// 'TestButton' is pressed...
87			{
88				BMessage msg = BMessage(TEST_REPLICANT);
89				msg.AddBool("Test",true);
90				be_app ->PostMessage(&msg,be_app);				// Send Info to App
91
92				QuitRequested();
93			}
94			break;
95
96		case IE_CONTAINERWINDOW_REMOVEBUTTON:					// 'RemoveButton' is pressed...
97			{
98				BMessage msg = BMessage(CLEAR_FILE);
99				msg.AddBool("Remove",true);
100				be_app ->PostMessage(&msg,be_app);				// Send Info to App
101
102				QuitRequested();
103			}
104			break;
105
106
107		case B_ABOUT_REQUESTED:
108			{
109				BAlert	*alert = new BAlert("", "XContainer (H.Reh, dr.hartmut.reh@gmx.de) " "\n" "\n"
110																		"Based upon Container Demo from Be Inc." "\n"
111																		"The GUI was created with InterfaceElements (Attila Mezei)" "\n"
112																		"Please read the ***Be Sample Code License*** "	"\n"
113																	 ,"OK");
114				alert -> Go(NULL);
115			}
116			break;
117
118
119
120
121		default:
122			BWindow::MessageReceived(message);
123			break;
124	}
125
126}
127
128
129// Update the menu items before they appear on screen
130void ContainerWindow::MenusBeginning()
131{
132	// Complete the SetEnabled argument or do anything with the source below...
133	KeyMenuBar()->FindItem(IE_CONTAINERWINDOW_MAINMENU_FILE_NEW)				->SetEnabled(false);	// "New"
134	KeyMenuBar()->FindItem(IE_CONTAINERWINDOW_MAINMENU_FILE_OPEN___)		->SetEnabled(false);	// "Open���"
135	KeyMenuBar()->FindItem(IE_CONTAINERWINDOW_MAINMENU_FILE_SAVE)				->SetEnabled(false);	// "Save"
136	KeyMenuBar()->FindItem(IE_CONTAINERWINDOW_MAINMENU_FILE_SAVE_AS___)	->SetEnabled(false);	// "Save As���"
137	KeyMenuBar()->FindItem(IE_CONTAINERWINDOW_MAINMENU_FILE_ABOUT___)		->SetEnabled(true);		// "About���"
138	KeyMenuBar()->FindItem(IE_CONTAINERWINDOW_MAINMENU_FILE_QUIT)				->SetEnabled(true);		// "Quit"
139	KeyMenuBar()->FindItem(IE_CONTAINERWINDOW_MAINMENU_EDIT_UNDO)				->SetEnabled(false);	// "Undo"
140	KeyMenuBar()->FindItem(IE_CONTAINERWINDOW_MAINMENU_EDIT_CUT)				->SetEnabled(false);	// "Cut"
141	KeyMenuBar()->FindItem(IE_CONTAINERWINDOW_MAINMENU_EDIT_COPY)				->SetEnabled(false);	// "Copy"
142	KeyMenuBar()->FindItem(IE_CONTAINERWINDOW_MAINMENU_EDIT_PASTE)			->SetEnabled(false);	// "Paste"
143}
144
145
146void ContainerWindow :: CreateViewBitmap()
147{
148	// create background bitmap
149	BBitmap *bitmap = NULL;
150	fContainerView 	= NULL;
151	bitmap = BTranslationUtils :: GetBitmap('JPEG',"DropZone.jpeg");		// load bitmap from resource
152	fContainerView = (BView *)FindView("ContainerView");
153	if ( (bitmap != NULL) && (fContainerView != NULL) ) fContainerView -> SetViewBitmap(bitmap);
154	delete bitmap;
155}
156
157
158void ContainerWindow :: GetPrefs()
159{
160	status_t	err;
161	BRect 		windFrame;
162
163
164	fPrefs = new TPreferences ("XContainer/preferences");			// name of prefs-file
165	if (fPrefs -> InitCheck() != B_OK)												// if no prefs-> create new
166	{
167		windFrame = Frame();																		// get window frame
168		fPrefs -> SetRect ("WindowFrame", windFrame );
169	}
170
171	err = (fPrefs -> FindRect ("WindowFrame", &windFrame) );
172	if (err == B_OK)
173	{
174		ResizeTo(windFrame.Width(), windFrame.Height() );				// window position and size
175		MoveTo(windFrame.left, windFrame.top);
176	}
177
178}
179
180
181void ContainerWindow :: SetPrefs()
182{
183	fPrefs -> SetRect ("WindowFrame", Frame() );
184}
185
186
187
188void ContainerWindow :: EnableRemoveButton(bool enable)
189{
190	fRemoveButton -> SetEnabled(enable);
191}
192
193
194void ContainerWindow :: EnableTestButton(bool enable)
195{
196	fTestButton -> SetEnabled(enable);
197}
198
199
200