1/* PoorManWindow.h
2 *
3 *	Philip Harrison
4 *	Started: 4/25/2004
5 *	Version: 0.1
6 */
7
8#ifndef POOR_MAN_WINDOW_H
9#define POOR_MAN_WINDOW_H
10
11#include <pthread.h>
12
13#include <SupportDefs.h>
14#include <Window.h>
15#include <String.h>
16
17class BPoint;
18class BFilePanel;
19class BMessage;
20class BMenuBar;
21class BMenu;
22class BTextView;
23class BStringView;
24class BScrollView;
25class BRect;
26class BFile;
27class BFont;
28
29class PoorManView;
30class PoorManPreferencesWindow;
31class PoorManServer;
32
33class PoorManWindow: public BWindow
34{
35public:
36							PoorManWindow(BRect frame);
37	virtual					~PoorManWindow();
38	virtual	void			MessageReceived(BMessage* message);
39
40	virtual void			FrameMoved(BPoint origin);
41	virtual	void			FrameResized(float width, float height);
42	virtual	bool			QuitRequested();
43	virtual	void			Zoom(BPoint origin, float width, float height);
44
45	// -------------------------------------------
46	// Public PoorMan Window Methods
47			void			SetDirLabel(const char* name);
48			void			SetHits(uint32 num);
49			uint32			GetHits() { return fHits; }
50			status_t		SaveConsole(BMessage* message, bool);
51
52			status_t		SaveSettings();
53			status_t		ReadSettings();
54			void			DefaultSettings();
55
56			status_t		StartServer();
57			status_t		StopServer();
58
59			PoorManServer* 	GetServer() const { return fServer;}
60	// -------------------------------------------
61	// Preferences and Settings
62		// Site Tab
63	bool DirListFlag()
64	{
65		return fDirListFlag;
66	}
67
68	void SetDirListFlag(bool flag)
69	{
70		fDirListFlag = flag;
71	}
72
73	const char* IndexFileName()
74	{
75		return fIndexFileName.String();
76	}
77
78	void SetIndexFileName(const char* str)
79	{
80		fIndexFileName.SetTo(str);
81	}
82
83	const char*	WebDir()
84	{
85		return fWebDirectory.String();
86	}
87
88	void SetWebDir(const char* str)
89	{
90		fWebDirectory.SetTo(str);
91	}
92
93	// Logging Tab
94
95	bool LogConsoleFlag()
96	{
97		return fLogConsoleFlag;
98	}
99
100	void SetLogConsoleFlag(bool flag)
101	{
102 		fLogConsoleFlag = flag;
103	}
104
105	bool LogFileFlag()
106	{
107		return fLogFileFlag;
108	}
109
110	void SetLogFileFlag(bool flag)
111	{
112		fLogFileFlag = flag;
113	}
114
115	const char* LogPath()
116	{
117		return fLogPath.String();
118	}
119
120			void SetLogPath(const char* str);
121
122	// Advanced Tab
123	int16 MaxConnections()
124	{
125 		return fMaxConnections;
126	}
127
128	void SetMaxConnections(int16 num)
129	{
130		fMaxConnections = num;
131	}
132
133private:
134	// -------------------------------------------
135	// PoorMan Window Methods
136			void			UpdateStatusLabelAndMenuItem();
137			void			UpdateHitsLabel();
138
139private:
140	// -------------------------------------------
141	// Build Menu Methods
142			BMenu*			BuildFileMenu() const;
143			BMenu*			BuildEditMenu() const;
144			BMenu*			BuildControlsMenu() const;
145
146	// --------------------------------------------
147	// MenuBar & Menu items
148			BMenuBar*		fFileMenuBar;
149			BMenu*			fFileMenu;
150			BMenu*			fEditMenu;
151			BMenu*			fControlsMenu;
152
153	// --------------------------------------------
154	// Status, Hits, Directory
155			BStringView*	fStatusView;
156			BStringView*	fHitsView;
157			BStringView*	fDirView;
158
159			bool			fStatus;
160			uint32			fHits;
161			char			fHitsLabel[25];
162
163	// --------------------------------------------
164	// Logging View
165			BScrollView*	fScrollView;
166			BTextView*		fLoggingView;
167	// use asctime() for format of [Date/Time]:
168
169
170	// -------------------------------------------
171	// PoorMan Preference Window
172			PoorManPreferencesWindow * fPrefWindow;
173
174	// site tab
175			BString			fWebDirectory;
176			BString			fIndexFileName;
177			bool			fDirListFlag;
178
179	// logging tab
180			bool			fLogConsoleFlag;
181			bool			fLogFileFlag;
182			BString			fLogPath;
183
184	// advanced tab
185			int16			fMaxConnections;
186
187			bool			fIsZoomed;
188			float			fLastWidth;
189			float			fLastHeight;
190			BRect			fFrame;
191			BRect			fSetwindowFrame;
192
193	// File Panels
194			BFilePanel*		fSaveConsoleFilePanel;
195			BFilePanel*		fSaveConsoleSelectionFilePanel;
196
197			BFile* 			fLogFile;
198
199			PoorManServer*	fServer;
200
201			pthread_rwlock_t fLogFileLock;
202};
203
204#endif
205