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
9 extern const char *PREFS_BACKSTORE_PATH;
10
ContainerWindow(BPositionIO * stream)11 ContainerWindow :: 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
~ContainerWindow(void)31 ContainerWindow :: ~ContainerWindow(void)
32 {
33 SetPrefs();
34 if (fPrefs != NULL) delete fPrefs; // now prefs are saved
35 }
36
37
QuitRequested()38 bool 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
MessageReceived(BMessage * message)50 void 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
MenusBeginning()130 void 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
CreateViewBitmap()146 void 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
GetPrefs()158 void 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
SetPrefs()181 void ContainerWindow :: SetPrefs()
182 {
183 fPrefs -> SetRect ("WindowFrame", Frame() );
184 }
185
186
187
EnableRemoveButton(bool enable)188 void ContainerWindow :: EnableRemoveButton(bool enable)
189 {
190 fRemoveButton -> SetEnabled(enable);
191 }
192
193
EnableTestButton(bool enable)194 void ContainerWindow :: EnableTestButton(bool enable)
195 {
196 fTestButton -> SetEnabled(enable);
197 }
198
199
200