Convert Poorman to use the Layout API.

Also includes many style fixes.

This patch was done by tokyo6pm, and then updated by mks after changes
to Poorman broke the patch.

ticket: #3787
This commit is contained in:
Alex Wilson
2012-07-16 14:59:33 +12:00
parent 2d4288086f
commit a1ae802279
14 changed files with 654 additions and 802 deletions
+21 -25
View File
@@ -7,6 +7,7 @@
#include <Box.h> #include <Box.h>
#include <Catalog.h> #include <Catalog.h>
#include <GroupLayoutBuilder.h>
#include <Locale.h> #include <Locale.h>
#include "constants.h" #include "constants.h"
@@ -19,46 +20,41 @@
#define B_TRANSLATION_CONTEXT "PoorMan" #define B_TRANSLATION_CONTEXT "PoorMan"
PoorManAdvancedView::PoorManAdvancedView(BRect rect, const char *name) PoorManAdvancedView::PoorManAdvancedView(const char* name)
: BView(rect, name, B_FOLLOW_ALL, B_WILL_DRAW) :
BView(name, B_WILL_DRAW, NULL)
{ {
PoorManWindow* win; PoorManWindow* win;
win = ((PoorManApplication*)be_app)->GetPoorManWindow(); win = ((PoorManApplication*)be_app)->GetPoorManWindow();
SetViewColor(BACKGROUND_COLOR); SetLayout(new BGroupLayout(B_VERTICAL));
// Console Logging BBox BBox* connectionOptions = new BBox(B_TRANSLATE("Connections"));
BRect maxRect;
maxRect = rect;
maxRect.top -= 5.0;
maxRect.left -= 5.0;
maxRect.right -= 7.0;
maxRect.bottom -= 118.0;
BBox * connectionOptions = new BBox(maxRect, B_TRANSLATE("Connections"));
connectionOptions->SetLabel(STR_BBX_CONNECTION); connectionOptions->SetLabel(STR_BBX_CONNECTION);
AddChild(connectionOptions);
BRect sliderRect; fMaxConnections = new StatusSlider("Max Slider", STR_SLD_LABEL,
sliderRect = connectionOptions->Bounds(); STR_SLD_STATUS_LABEL,
sliderRect.InsetBy(10.0f, 10.0f); new BMessage(MSG_PREF_ADV_SLD_MAX_CONNECTION), 1, 200);
sliderRect.top += 10;
sliderRect.bottom = sliderRect.top + 50.0;
maxConnections = new StatusSlider(sliderRect, "Max Slider", STR_SLD_LABEL,
STR_SLD_STATUS_LABEL, new BMessage(MSG_PREF_ADV_SLD_MAX_CONNECTION), 1, 200);
// labels below the slider 1 and 200 // labels below the slider 1 and 200
maxConnections->SetLimitLabels("1", "200"); fMaxConnections->SetLimitLabels("1", "200");
SetMaxSimutaneousConnections(win->MaxConnections()); SetMaxSimutaneousConnections(win->MaxConnections());
connectionOptions->AddChild(maxConnections);
connectionOptions->AddChild(BGroupLayoutBuilder(B_VERTICAL, 10)
.Add(fMaxConnections)
.SetInsets(5, 5, 5, 5));
AddChild(BGroupLayoutBuilder(B_VERTICAL, 10)
.Add(connectionOptions)
.AddGlue()
.SetInsets(5, 5, 5, 5));
} }
void void
PoorManAdvancedView::SetMaxSimutaneousConnections(int32 num) PoorManAdvancedView::SetMaxSimutaneousConnections(int32 num)
{ {
if (num <= 0 || num > 200) if (num <= 0 || num > 200)
maxConnections->SetValue(32); fMaxConnections->SetValue(32);
else else
maxConnections->SetValue(num); fMaxConnections->SetValue(num);
} }
+6 -5
View File
@@ -13,16 +13,17 @@
#include "StatusSlider.h" #include "StatusSlider.h"
class PoorManAdvancedView: public BView class PoorManAdvancedView: public BView {
{
public: public:
PoorManAdvancedView(BRect, const char *name); PoorManAdvancedView(const char *name);
int32 MaxSimultaneousConnections() { return maxConnections->Value(); }
int32 MaxSimultaneousConnections()
{ return fMaxConnections->Value(); }
void SetMaxSimutaneousConnections(int32 num); void SetMaxSimutaneousConnections(int32 num);
private: private:
// Advanced Tab // Advanced Tab
// Connections Options // Connections Options
StatusSlider * maxConnections; StatusSlider* fMaxConnections;
}; };
#endif #endif
+32 -50
View File
@@ -7,6 +7,7 @@
#include <Box.h> #include <Box.h>
#include <Catalog.h> #include <Catalog.h>
#include <GroupLayoutBuilder.h>
#include <Locale.h> #include <Locale.h>
#include "constants.h" #include "constants.h"
@@ -19,80 +20,61 @@
#define B_TRANSLATION_CONTEXT "PoorMan" #define B_TRANSLATION_CONTEXT "PoorMan"
PoorManLoggingView::PoorManLoggingView(BRect rect, const char *name) PoorManLoggingView::PoorManLoggingView(const char* name)
: BView(rect, name, B_FOLLOW_ALL, B_WILL_DRAW) :
BView(name, B_WILL_DRAW, NULL)
{ {
PoorManWindow* win; PoorManWindow* win;
win = ((PoorManApplication*)be_app)->GetPoorManWindow(); win = ((PoorManApplication*)be_app)->GetPoorManWindow();
SetViewColor(BACKGROUND_COLOR); SetLayout(new BGroupLayout(B_VERTICAL));
// Console Logging BBox BBox* consoleLogging = new BBox(B_TRANSLATE("Console Logging"));
BRect consoleLoggingRect;
consoleLoggingRect = rect;
consoleLoggingRect.top -= 5.0;
consoleLoggingRect.left -= 5.0;
consoleLoggingRect.right -= 7.0;
consoleLoggingRect.bottom -= 118.0;
BBox * consoleLogging = new BBox(consoleLoggingRect,
B_TRANSLATE("Console Logging"));
consoleLogging->SetLabel(STR_BBX_CONSOLE_LOGGING); consoleLogging->SetLabel(STR_BBX_CONSOLE_LOGGING);
AddChild(consoleLogging);
// File Logging BBox // File Logging BBox
BRect fileLoggingRect; BBox* fileLogging = new BBox(B_TRANSLATE("File Logging"));
fileLoggingRect = consoleLoggingRect;
fileLoggingRect.top = consoleLoggingRect.bottom + 10.0;
fileLoggingRect.bottom = fileLoggingRect.top + 100.0;
BBox * fileLogging = new BBox(fileLoggingRect,
B_TRANSLATE("File Logging"));
fileLogging->SetLabel(STR_BBX_FILE_LOGGING); fileLogging->SetLabel(STR_BBX_FILE_LOGGING);
AddChild(fileLogging);
float left = 10.0;
float top = 20.0;
float box_size = 13.0;
BRect tempRect(left, top, consoleLoggingRect.Width() - 5.0, top + box_size);
// Console Logging // Console Logging
logConsole = new BCheckBox(tempRect, B_TRANSLATE("Log To Console"), fLogConsole = new BCheckBox(B_TRANSLATE("Log To Console"),
STR_CBX_LOG_CONSOLE, new BMessage(MSG_PREF_LOG_CBX_CONSOLE)); STR_CBX_LOG_CONSOLE, new BMessage(MSG_PREF_LOG_CBX_CONSOLE));
// set the checkbox to the value the program has // set the checkbox to the value the program has
SetLogConsoleValue(win->LogConsoleFlag()); SetLogConsoleValue(win->LogConsoleFlag());
consoleLogging->AddChild(logConsole);
// File Logging // File Logging
logFile = new BCheckBox(tempRect, B_TRANSLATE("Log To File"), fLogFile = new BCheckBox(B_TRANSLATE("Log To File"), STR_CBX_LOG_FILE,
STR_CBX_LOG_FILE, new BMessage(MSG_PREF_LOG_CBX_FILE)); new BMessage(MSG_PREF_LOG_CBX_FILE));
// set the checkbox to the value the program has // set the checkbox to the value the program has
SetLogFileValue(win->LogFileFlag()); SetLogFileValue(win->LogFileFlag());
fileLogging->AddChild(logFile);
// File Name // File Name
tempRect.top = tempRect.bottom + 10.0; fLogFileName = new BTextControl(B_TRANSLATE("File Name"),
tempRect.bottom = tempRect.top + box_size;
tempRect.right -= 5.0;
logFileName = new BTextControl(tempRect, B_TRANSLATE("File Name"),
STR_TXT_LOG_FILE_NAME, NULL, NULL); STR_TXT_LOG_FILE_NAME, NULL, NULL);
logFileName->SetAlignment(B_ALIGN_RIGHT, B_ALIGN_LEFT);
logFileName->SetDivider(fileLogging->StringWidth(STR_TXT_LOG_FILE_NAME) + 8.0f);
SetLogFileName(win->LogPath()); SetLogFileName(win->LogPath());
fileLogging->AddChild(logFileName);
// Create Log File // Create Log File
BRect createLogFileRect; fCreateLogFile = new BButton(B_TRANSLATE("Create Log File"),
createLogFileRect.top = tempRect.bottom + 13.0;
createLogFileRect.right = tempRect.right + 2.0;
createLogFileRect.left = createLogFileRect.right
- fileLogging->StringWidth(B_TRANSLATE("Create Log File")) - 24.0;
createLogFileRect.bottom = createLogFileRect.top + 19.0;
createLogFile = new BButton(createLogFileRect, B_TRANSLATE("Create Log File"),
STR_BTN_CREATE_LOG_FILE, new BMessage(MSG_PREF_LOG_BTN_CREATE_FILE)); STR_BTN_CREATE_LOG_FILE, new BMessage(MSG_PREF_LOG_BTN_CREATE_FILE));
fileLogging->AddChild(createLogFile);
consoleLogging->AddChild(BGroupLayoutBuilder(B_VERTICAL, 10)
.Add(BGroupLayoutBuilder(B_HORIZONTAL, 10)
.Add(fLogConsole)
.AddGlue())
.SetInsets(5, 5, 5, 5));
fileLogging->AddChild(BGroupLayoutBuilder(B_VERTICAL, 10)
.Add(BGroupLayoutBuilder(B_HORIZONTAL, 10)
.Add(fLogFile)
.AddGlue())
.Add(fLogFileName)
.Add(BGroupLayoutBuilder(B_HORIZONTAL, 10)
.AddGlue()
.Add(fCreateLogFile))
.SetInsets(5, 5, 5, 5));
AddChild(BGroupLayoutBuilder(B_VERTICAL, 10)
.Add(consoleLogging)
.Add(fileLogging)
.SetInsets(5, 5, 5, 5));
} }
+24 -16
View File
@@ -14,28 +14,36 @@
#include <CheckBox.h> #include <CheckBox.h>
class PoorManLoggingView: public BView class PoorManLoggingView: public BView {
{
public: public:
PoorManLoggingView(BRect, const char *name); PoorManLoggingView(const char* name);
void SetLogConsoleValue(bool state)
{ if (state)
fLogConsole->SetValue(B_CONTROL_ON);
else fLogConsole->SetValue(B_CONTROL_OFF); }
bool LogConsoleValue()
{ return (fLogConsole->Value() == B_CONTROL_ON)
? true : false; }
void SetLogFileValue(bool state)
{ if (state) fLogFile->SetValue(B_CONTROL_ON);
else fLogFile->SetValue(B_CONTROL_OFF); }
bool LogFileValue()
{ return (fLogFile->Value() == B_CONTROL_ON)
? true : false; }
const char* LogFileName()
{ return fLogFileName->Text(); }
void SetLogFileName(const char* log)
{ fLogFileName->SetText(log); }
void SetLogConsoleValue(bool state) {if (state) logConsole->SetValue(B_CONTROL_ON);
else logConsole->SetValue(B_CONTROL_OFF); }
bool LogConsoleValue() { return (logConsole->Value() == B_CONTROL_ON) ? true : false; }
void SetLogFileValue(bool state) {if (state) logFile->SetValue(B_CONTROL_ON);
else logFile->SetValue(B_CONTROL_OFF); }
bool LogFileValue() { return (logFile->Value() == B_CONTROL_ON) ? true : false; }
const char * LogFileName() { return logFileName->Text(); }
void SetLogFileName(const char * log) { logFileName->SetText(log); }
private: private:
// Logging Tab // Logging Tab
// Console Logging // Console Logging
BCheckBox * logConsole; BCheckBox* fLogConsole;
// File Logging // File Logging
BCheckBox * logFile; BCheckBox* fLogFile;
BTextControl * logFileName; BTextControl* fLogFileName;
BButton * createLogFile; BButton * fCreateLogFile;
}; };
#endif #endif
+76 -111
View File
@@ -9,7 +9,10 @@
#include <Catalog.h> #include <Catalog.h>
#include <Debug.h> #include <Debug.h>
#include <Directory.h> #include <Directory.h>
#include <GroupLayoutBuilder.h>
#include <GroupView.h>
#include <Locale.h> #include <Locale.h>
#include <SpaceLayoutItem.h>
#include <Window.h> #include <Window.h>
#include "constants.h" #include "constants.h"
@@ -25,110 +28,72 @@
PoorManPreferencesWindow::PoorManPreferencesWindow(BRect frame, char * name) PoorManPreferencesWindow::PoorManPreferencesWindow(BRect frame, char * name)
: BWindow(frame, name, B_TITLED_WINDOW, B_NOT_ZOOMABLE | B_NOT_RESIZABLE : BWindow(frame, name, B_TITLED_WINDOW, B_NOT_ZOOMABLE | B_NOT_RESIZABLE
| B_CLOSE_ON_ESCAPE), | B_CLOSE_ON_ESCAPE | B_AUTO_UPDATE_SIZE_LIMITS),
webDirFilePanel(NULL), fWebDirFilePanel(NULL),
logFilePanel(NULL) fLogFilePanel(NULL)
{ {
frame = Bounds(); SetLayout(new BGroupLayout(B_VERTICAL));
prefView = new PoorManView(frame, STR_WIN_NAME_PREF); fCancelButton = new BButton("Cancel Button", B_TRANSLATE("Cancel"),
//prefView->SetViewColor(216,216,216,255);
prefView->SetViewColor(BACKGROUND_COLOR);
AddChild(prefView);
// Button View
BRect buttonRect;
buttonRect = Bounds();
buttonRect.top = buttonRect.bottom - 30;
buttonView = new PoorManView(buttonRect, "Button View");
buttonView->SetViewColor(BACKGROUND_COLOR);
prefView->AddChild(buttonView);
// Buttons
float buttonTop = 0.0f;
float buttonHeight = 26.0f;
float widthCancel = prefView->StringWidth(B_TRANSLATE("Cancel")) + 24.0f;
float widthDone = prefView->StringWidth(B_TRANSLATE("Done")) + 24.0f;
float gap = 5.0f;
BRect button1(prefView->Bounds().Width() - 2 * gap - widthCancel
- widthDone, buttonTop, prefView->Bounds().Width() - 2 * gap - widthDone,
buttonTop + buttonHeight);
cancelButton = new BButton(button1, "Cancel Button", B_TRANSLATE("Cancel"),
new BMessage(MSG_PREF_BTN_CANCEL)); new BMessage(MSG_PREF_BTN_CANCEL));
fDoneButton = new BButton("Done Button", B_TRANSLATE("Done"),
BRect button2(prefView->Bounds().Width() - gap - widthDone, buttonTop,
prefView->Bounds().Width() - gap, buttonTop + buttonHeight);
doneButton = new BButton(button2, "Done Button", B_TRANSLATE("Done"),
new BMessage(MSG_PREF_BTN_DONE)); new BMessage(MSG_PREF_BTN_DONE));
buttonView->AddChild(cancelButton); fPrefTabView = new BTabView("Pref Tab View");
buttonView->AddChild(doneButton);
// Create tabs
BRect r;
r = Bounds();
//r.InsetBy(5, 5);
r.top += 8.0;
r.bottom -= 38.0;
prefTabView = new BTabView(r, "Pref Tab View");
prefTabView->SetViewColor(BACKGROUND_COLOR);
r = prefTabView->Bounds();
r.InsetBy(5, 5);
r.bottom -= prefTabView->TabHeight();
// Site Tab // Site Tab
siteTab = new BTab(); fSiteTab = new BTab();
siteView = new PoorManSiteView(r, "Site View"); fSiteView = new PoorManSiteView("Site View");
prefTabView->AddTab(siteView, siteTab); fPrefTabView->AddTab(fSiteView, fSiteTab);
siteTab->SetLabel(STR_TAB_SITE); fSiteTab->SetLabel(STR_TAB_SITE);
// Logging Tab // Logging Tab
loggingTab = new BTab(); fLoggingTab = new BTab();
loggingView = new PoorManLoggingView(r, "Logging View"); fLoggingView = new PoorManLoggingView("Logging View");
prefTabView->AddTab(loggingView, loggingTab); fPrefTabView->AddTab(fLoggingView, fLoggingTab);
loggingTab->SetLabel(STR_TAB_LOGGING); fLoggingTab->SetLabel(STR_TAB_LOGGING);
// Advanced Tab // Advanced Tab
advancedTab = new BTab(); fAdvancedTab = new BTab();
advancedView = new PoorManAdvancedView(r, "Advanced View"); fAdvancedView = new PoorManAdvancedView("Advanced View");
prefTabView->AddTab(advancedView, advancedTab); fPrefTabView->AddTab(fAdvancedView, fAdvancedTab);
advancedTab->SetLabel(STR_TAB_ADVANCED); fAdvancedTab->SetLabel(STR_TAB_ADVANCED);
prefView->AddChild(prefTabView);
// FilePanels // FilePanels
BWindow * change_title; BWindow * change_title;
BMessenger messenger(this); BMessenger messenger(this);
BMessage message(MSG_FILE_PANEL_SELECT_WEB_DIR); BMessage message(MSG_FILE_PANEL_SELECT_WEB_DIR);
webDirFilePanel = new BFilePanel(B_OPEN_PANEL, &messenger, NULL, fWebDirFilePanel = new BFilePanel(B_OPEN_PANEL, &messenger, NULL,
B_DIRECTORY_NODE, false, &message, NULL, true); B_DIRECTORY_NODE, false, &message, NULL, true);
webDirFilePanel->SetPanelDirectory(new BDirectory("/boot/home/public_html")); fWebDirFilePanel->SetPanelDirectory(
webDirFilePanel->SetButtonLabel(B_DEFAULT_BUTTON, B_TRANSLATE("Select")); new BDirectory("/boot/home/public_html"));
change_title = webDirFilePanel->Window(); fWebDirFilePanel->SetButtonLabel(B_DEFAULT_BUTTON, B_TRANSLATE("Select"));
change_title = fWebDirFilePanel->Window();
change_title->SetTitle(STR_FILEPANEL_SELECT_WEB_DIR); change_title->SetTitle(STR_FILEPANEL_SELECT_WEB_DIR);
message.what = MSG_FILE_PANEL_CREATE_LOG_FILE; message.what = MSG_FILE_PANEL_CREATE_LOG_FILE;
logFilePanel = new BFilePanel(B_SAVE_PANEL, &messenger, NULL, fLogFilePanel = new BFilePanel(B_SAVE_PANEL, &messenger, NULL,
B_FILE_NODE, false, &message); B_FILE_NODE, false, &message);
logFilePanel->SetButtonLabel(B_DEFAULT_BUTTON, B_TRANSLATE("Create")); fLogFilePanel->SetButtonLabel(B_DEFAULT_BUTTON, B_TRANSLATE("Create"));
change_title = logFilePanel->Window(); change_title = fLogFilePanel->Window();
change_title->SetTitle(STR_FILEPANEL_CREATE_LOG_FILE); change_title->SetTitle(STR_FILEPANEL_CREATE_LOG_FILE);
AddChild(BGroupLayoutBuilder(B_VERTICAL, 10)
.Add(fPrefTabView)
.Add(BGroupLayoutBuilder(B_HORIZONTAL)
.AddGlue()
.Add(fCancelButton)
.Add(fDoneButton))
.SetInsets(5, 5, 5, 5));
} }
PoorManPreferencesWindow::~PoorManPreferencesWindow() PoorManPreferencesWindow::~PoorManPreferencesWindow()
{ {
delete logFilePanel; delete fLogFilePanel;
delete webDirFilePanel; delete fWebDirFilePanel;
} }
@@ -143,34 +108,34 @@ PoorManPreferencesWindow::MessageReceived(BMessage* message)
server = win->GetServer(); server = win->GetServer();
PRINT(("Pref Window: sendDir CheckBox: %d\n", PRINT(("Pref Window: sendDir CheckBox: %d\n",
siteView->SendDirValue())); fSiteView->SendDirValue()));
server->SetListDir(siteView->SendDirValue()); server->SetListDir(fSiteView->SendDirValue());
win->SetDirListFlag(siteView->SendDirValue()); win->SetDirListFlag(fSiteView->SendDirValue());
PRINT(("Pref Window: indexFileName TextControl: %s\n", PRINT(("Pref Window: indexFileName TextControl: %s\n",
siteView->IndexFileName())); fSiteView->IndexFileName()));
if (server->SetIndexName(siteView->IndexFileName()) == B_OK) if (server->SetIndexName(fSiteView->IndexFileName()) == B_OK)
win->SetIndexFileName(siteView->IndexFileName()); win->SetIndexFileName(fSiteView->IndexFileName());
PRINT(("Pref Window: webDir: %s\n", siteView->WebDir())); PRINT(("Pref Window: webDir: %s\n", fSiteView->WebDir()));
if (server->SetWebDir(siteView->WebDir()) == B_OK) { if (server->SetWebDir(fSiteView->WebDir()) == B_OK) {
win->SetWebDir(siteView->WebDir()); win->SetWebDir(fSiteView->WebDir());
win->SetDirLabel(siteView->WebDir()); win->SetDirLabel(fSiteView->WebDir());
} }
PRINT(("Pref Window: logConsole CheckBox: %d\n", PRINT(("Pref Window: logConsole CheckBox: %d\n",
loggingView->LogConsoleValue())); fLoggingView->LogConsoleValue()));
win->SetLogConsoleFlag(loggingView->LogConsoleValue()); win->SetLogConsoleFlag(fLoggingView->LogConsoleValue());
PRINT(("Pref Window: logFile CheckBox: %d\n", PRINT(("Pref Window: logFile CheckBox: %d\n",
loggingView->LogFileValue())); fLoggingView->LogFileValue()));
win->SetLogFileFlag(loggingView->LogFileValue()); win->SetLogFileFlag(fLoggingView->LogFileValue());
PRINT(("Pref Window: logFileName: %s\n", PRINT(("Pref Window: logFileName: %s\n",
loggingView->LogFileName())); fLoggingView->LogFileName()));
win->SetLogPath(loggingView->LogFileName()); win->SetLogPath(fLoggingView->LogFileName());
PRINT(("Pref Window: MaxConnections Slider: %ld\n", PRINT(("Pref Window: MaxConnections Slider: %ld\n",
advancedView->MaxSimultaneousConnections())); fAdvancedView->MaxSimultaneousConnections()));
server->SetMaxConns(advancedView->MaxSimultaneousConnections()); server->SetMaxConns(fAdvancedView->MaxSimultaneousConnections());
win->SetMaxConnections( win->SetMaxConnections(
(int16)advancedView->MaxSimultaneousConnections()); (int16)fAdvancedView->MaxSimultaneousConnections());
if (Lock()) if (Lock())
Quit(); Quit();
@@ -181,10 +146,10 @@ PoorManPreferencesWindow::MessageReceived(BMessage* message)
break; break;
case MSG_PREF_SITE_BTN_SELECT: case MSG_PREF_SITE_BTN_SELECT:
// Select the Web Directory, root directory to look in. // Select the Web Directory, root directory to look in.
webDirFilePanel->SetTarget(this); fWebDirFilePanel->SetTarget(this);
webDirFilePanel->SetMessage(new BMessage(MSG_FILE_PANEL_SELECT_WEB_DIR)); fWebDirFilePanel->SetMessage(new BMessage(MSG_FILE_PANEL_SELECT_WEB_DIR));
if (!webDirFilePanel->IsShowing()) if (!fWebDirFilePanel->IsShowing())
webDirFilePanel->Show(); fWebDirFilePanel->Show();
break; break;
case MSG_FILE_PANEL_SELECT_WEB_DIR: case MSG_FILE_PANEL_SELECT_WEB_DIR:
// handle the open BMessage from the Select Web Directory File Panel // handle the open BMessage from the Select Web Directory File Panel
@@ -193,7 +158,7 @@ PoorManPreferencesWindow::MessageReceived(BMessage* message)
break; break;
case MSG_PREF_LOG_BTN_CREATE_FILE: case MSG_PREF_LOG_BTN_CREATE_FILE:
// Create the Log File // Create the Log File
logFilePanel->Show(); fLogFilePanel->Show();
break; break;
case MSG_FILE_PANEL_CREATE_LOG_FILE: case MSG_FILE_PANEL_CREATE_LOG_FILE:
// handle the save BMessage from the Create Log File Panel // handle the save BMessage from the Create Log File Panel
@@ -201,8 +166,8 @@ PoorManPreferencesWindow::MessageReceived(BMessage* message)
CreateLogFile(message); CreateLogFile(message);
break; break;
case MSG_PREF_ADV_SLD_MAX_CONNECTION: case MSG_PREF_ADV_SLD_MAX_CONNECTION:
max_connections = advancedView->MaxSimultaneousConnections(); fMaxConnections = fAdvancedView->MaxSimultaneousConnections();
PRINT(("Max Connections: %ld\n", max_connections)); PRINT(("Max Connections: %ld\n", fMaxConnections));
break; break;
default: default:
BWindow::MessageReceived(message); BWindow::MessageReceived(message);
@@ -227,15 +192,15 @@ PoorManPreferencesWindow::SelectWebDir(BMessage * message)
entry.GetPath(&path); entry.GetPath(&path);
PRINT(("DIR: %s\n", path.Path())); PRINT(("DIR: %s\n", path.Path()));
siteView->SetWebDir(path.Path()); fSiteView->SetWebDir(path.Path());
bool temp; bool temp;
if (message->FindBool("Default Dialog", &temp) == B_OK) { if (message->FindBool("Default Dialog", &temp) == B_OK) {
PoorManWindow* win = ((PoorManApplication *)be_app)->GetPoorManWindow(); PoorManWindow* win = ((PoorManApplication *)be_app)->GetPoorManWindow();
win->StartServer(); win->StartServer();
if (win->GetServer()->SetWebDir(siteView->WebDir()) == B_OK) { if (win->GetServer()->SetWebDir(fSiteView->WebDir()) == B_OK) {
win->SetWebDir(siteView->WebDir()); win->SetWebDir(fSiteView->WebDir());
win->SetDirLabel(siteView->WebDir()); win->SetDirLabel(fSiteView->WebDir());
win->SaveSettings(); win->SaveSettings();
win->Show(); win->Show();
} }
@@ -268,8 +233,8 @@ PoorManPreferencesWindow::CreateLogFile(BMessage * message)
PRINT(("Log File: %s\n", path.Path())); PRINT(("Log File: %s\n", path.Path()));
if (err == B_OK) { if (err == B_OK) {
loggingView->SetLogFileName(path.Path()); fLoggingView->SetLogFileName(path.Path());
loggingView->SetLogFileValue(true); fLoggingView->SetLogFileValue(true);
} }
// mark the checkbox // mark the checkbox
@@ -283,8 +248,8 @@ PoorManPreferencesWindow::ShowWebDirFilePanel()
BMessage message(MSG_FILE_PANEL_SELECT_WEB_DIR); BMessage message(MSG_FILE_PANEL_SELECT_WEB_DIR);
message.AddBool("Default Dialog", true); message.AddBool("Default Dialog", true);
webDirFilePanel->SetTarget(be_app); fWebDirFilePanel->SetTarget(be_app);
webDirFilePanel->SetMessage(&message); fWebDirFilePanel->SetMessage(&message);
if (!webDirFilePanel->IsShowing()) if (!fWebDirFilePanel->IsShowing())
webDirFilePanel->Show(); fWebDirFilePanel->Show();
} }
+41 -44
View File
@@ -22,50 +22,7 @@
#include "PoorManAdvancedView.h" #include "PoorManAdvancedView.h"
class PoorManPreferencesWindow: public BWindow {
class PoorManPreferencesWindow: public BWindow
{
private:
PoorManView * prefView;
PoorManView * buttonView;
// ------------------------------------------------
// Tabs
BTabView * prefTabView;
BTab * siteTab;
BTab * loggingTab;
BTab * advancedTab;
// Tab Views
PoorManSiteView * siteView;
PoorManLoggingView * loggingView;
PoorManAdvancedView * advancedView;
// ------------------------------------------------
// Buttons
BButton * cancelButton;
BButton * doneButton;
// ------------------------------------------------
// FilePanels
BFilePanel * webDirFilePanel;
BFilePanel * logFilePanel;
// ------------------------------------------------
// temporary preference variables used to save and
// set the application to
// site tab
char web_directory[B_FILE_NAME_LENGTH];
char index_file_name[64];
bool send_dir;
// logging tab
bool log_to_console;
bool log_to_file;
char log_file_name[B_FILE_NAME_LENGTH];
// advanced tab
int32 max_connections;
public: public:
PoorManPreferencesWindow(BRect frame, char* name); PoorManPreferencesWindow(BRect frame, char* name);
~PoorManPreferencesWindow(); ~PoorManPreferencesWindow();
@@ -75,6 +32,46 @@ virtual void MessageReceived(BMessage * message);
void ShowWebDirFilePanel(); void ShowWebDirFilePanel();
void SelectWebDir(BMessage* message); void SelectWebDir(BMessage* message);
void CreateLogFile(BMessage* message); void CreateLogFile(BMessage* message);
private:
PoorManView* fPrefView;
PoorManView* fButtonView;
// ------------------------------------------------
// Tabs
BTabView* fPrefTabView;
BTab* fSiteTab;
BTab* fLoggingTab;
BTab* fAdvancedTab;
// Tab Views
PoorManSiteView* fSiteView;
PoorManLoggingView* fLoggingView;
PoorManAdvancedView* fAdvancedView;
// ------------------------------------------------
// Buttons
BButton* fCancelButton;
BButton* fDoneButton;
// ------------------------------------------------
// FilePanels
BFilePanel* fWebDirFilePanel;
BFilePanel* fLogFilePanel;
// ------------------------------------------------
// temporary preference variables used to save and
// set the application to
// site tab
char fWebDirectory[B_FILE_NAME_LENGTH];
char fIndexFileName[64];
bool fSendDir;
// logging tab
bool flogToConsole;
bool fLogToFile;
char fLogFileName[B_FILE_NAME_LENGTH];
// advanced tab
int32 fMaxConnections;
}; };
#endif #endif
+30 -58
View File
@@ -6,91 +6,63 @@
*/ */
#include <Box.h> #include <Box.h>
#include <GroupLayoutBuilder.h>
#include "constants.h" #include "constants.h"
#include "PoorManSiteView.h" #include "PoorManSiteView.h"
#include "PoorManWindow.h" #include "PoorManWindow.h"
#include "PoorManApplication.h" #include "PoorManApplication.h"
PoorManSiteView::PoorManSiteView(BRect rect, const char *name) PoorManSiteView::PoorManSiteView(const char* name)
: BView(rect, name, B_FOLLOW_ALL, B_WILL_DRAW) : BView(name, B_WILL_DRAW, NULL)
{ {
PoorManWindow* win; PoorManWindow* win;
win = ((PoorManApplication *)be_app)->GetPoorManWindow(); win = ((PoorManApplication *)be_app)->GetPoorManWindow();
SetViewColor(BACKGROUND_COLOR); SetLayout(new BGroupLayout(B_VERTICAL));
// Web Site Location BBox // Web Site Location BBox
BRect webLocationRect; BBox* webSiteLocation = new BBox("Web Location");
webLocationRect = rect;
webLocationRect.top -= 5.0;
webLocationRect.left -= 5.0;
webLocationRect.right -= 7.0;
webLocationRect.bottom -= 98.0;
BBox * webSiteLocation = new BBox(webLocationRect, "Web Location");
webSiteLocation->SetLabel(STR_BBX_LOCATION); webSiteLocation->SetLabel(STR_BBX_LOCATION);
AddChild(webSiteLocation);
// Web Site Options BBox // Web Site Options BBox
BRect webOptionsRect; BBox* webSiteOptions = new BBox("Web Options");
webOptionsRect = webLocationRect;
webOptionsRect.top = webOptionsRect.bottom + 10.0;
webOptionsRect.bottom = webOptionsRect.top + 80.0;
BBox * webSiteOptions = new BBox(webOptionsRect, "Web Options");
webSiteOptions->SetLabel(STR_BBX_OPTIONS); webSiteOptions->SetLabel(STR_BBX_OPTIONS);
AddChild(webSiteOptions);
// Send Directory List if No Index // Send Directory List if No Index
float left = 10.0; fSendDir = new BCheckBox("Send Dir", STR_CBX_DIR_LIST_LABEL,
float top = 20.0; new BMessage(MSG_PREF_SITE_CBX_INDEX));
float box_size = 13.0;
BRect sendDirRect(left, top, webOptionsRect.Width() - 5.0, top + box_size);
sendDir = new BCheckBox(sendDirRect, "Send Dir", STR_CBX_DIR_LIST_LABEL, new BMessage(MSG_PREF_SITE_CBX_INDEX));
// set the checkbox to the value the program has // set the checkbox to the value the program has
SetSendDirValue(win->DirListFlag()); SetSendDirValue(win->DirListFlag());
webSiteOptions->AddChild(sendDir);
// Finish the Web Site Location Section
BRect webSiteLocationRect;
webSiteLocationRect = webLocationRect;
webSiteLocationRect.InsetBy(10.0, 7.0);
webSiteLocationRect.top += 13.0;
webSiteLocationRect.bottom = webSiteLocationRect.top + 19.0;
// Web Directory Text Control // Web Directory Text Control
webDir = new BTextControl(webSiteLocationRect, "Web Dir", fWebDir = new BTextControl("Web Dir", STR_TXT_DIRECTORY, NULL);
STR_TXT_DIRECTORY, NULL, NULL);
webDir->SetAlignment(B_ALIGN_RIGHT, B_ALIGN_LEFT);
webDir->SetDivider(80.0);
SetWebDir(win->WebDir()); SetWebDir(win->WebDir());
webSiteLocation->AddChild(webDir);
// Select Web Directory Button // Select Web Directory Button
BRect selectWebDirRect; fSelectWebDir = new BButton("Select Web Dir", STR_BTN_DIRECTORY,
new BMessage(MSG_PREF_SITE_BTN_SELECT));
selectWebDirRect.top = webSiteLocationRect.bottom + 5.0;
selectWebDirRect.right = webSiteLocationRect.right + 2.0;
selectWebDirRect.left = selectWebDirRect.right
- webSiteLocation->StringWidth("Select Web Dir") - 24.0;
selectWebDirRect.bottom = selectWebDirRect.top + 19.0;
selectWebDir = new BButton(selectWebDirRect, "Select Web Dir",
STR_BTN_DIRECTORY, new BMessage(MSG_PREF_SITE_BTN_SELECT));
webSiteLocation->AddChild(selectWebDir);
// Index File Name Text Control // Index File Name Text Control
//webDirRect.InsetBy(10.0, 7.0); fIndexFileName = new BTextControl("Index File Name", STR_TXT_INDEX, NULL);
webSiteLocationRect.top += 63.0;
webSiteLocationRect.bottom = webSiteLocationRect.top + 19.0;
indexFileName = new BTextControl(webSiteLocationRect,
"Index File Name", STR_TXT_INDEX, NULL, NULL);
indexFileName->SetAlignment(B_ALIGN_RIGHT, B_ALIGN_LEFT);
indexFileName->SetDivider(80.0);
SetIndexFileName(win->IndexFileName()); SetIndexFileName(win->IndexFileName());
webSiteLocation->AddChild(indexFileName);
webSiteOptions->AddChild(BGroupLayoutBuilder(B_VERTICAL, 10)
.Add(BGroupLayoutBuilder(B_HORIZONTAL, 10)
.Add(fSendDir)
.AddGlue())
.SetInsets(5, 5, 5, 5));
webSiteLocation->AddChild(BGroupLayoutBuilder(B_VERTICAL, 10)
.Add(fWebDir)
.Add(BGroupLayoutBuilder(B_HORIZONTAL, 10)
.AddGlue()
.Add(fSelectWebDir))
.Add(fIndexFileName)
.SetInsets(5, 5, 5, 5));
AddChild(BGroupLayoutBuilder(B_VERTICAL, 10)
.Add(webSiteLocation)
.Add(webSiteOptions)
.SetInsets(5, 5, 5, 5));
} }
+22 -14
View File
@@ -14,26 +14,34 @@
#include <CheckBox.h> #include <CheckBox.h>
class PoorManSiteView: public BView class PoorManSiteView: public BView {
{
public: public:
PoorManSiteView(BRect, const char *name); PoorManSiteView(const char *name);
void SetSendDirValue(bool state) {if (state) sendDir->SetValue(B_CONTROL_ON);
else sendDir->SetValue(B_CONTROL_OFF); } void SetSendDirValue(bool state)
bool SendDirValue() { return (sendDir->Value() == B_CONTROL_ON) ? true : false; } { if (state) fSendDir->SetValue(B_CONTROL_ON);
const char * IndexFileName() { return indexFileName->Text(); } else fSendDir->SetValue(B_CONTROL_OFF); }
void SetIndexFileName(const char * name) { indexFileName->SetText(name); } bool SendDirValue()
const char * WebDir() { return webDir->Text(); } { return (fSendDir->Value() == B_CONTROL_ON)
void SetWebDir(const char * dir) { webDir->SetText(dir); } ? true : false; }
const char* IndexFileName()
{ return fIndexFileName->Text(); }
void SetIndexFileName(const char* name)
{ fIndexFileName->SetText(name); }
const char* WebDir()
{ return fWebDir->Text(); }
void SetWebDir(const char* dir)
{ fWebDir->SetText(dir); }
private: private:
// Site Tab // Site Tab
// Web Site Location // Web Site Location
BTextControl * webDir; BTextControl* fWebDir;
BTextControl * indexFileName; BTextControl* fIndexFileName;
BButton * selectWebDir; BButton* fSelectWebDir;
// Web Site Options // Web Site Options
BCheckBox * sendDir; BCheckBox* fSendDir;
}; };
+2 -2
View File
@@ -12,10 +12,10 @@
#include <View.h> #include <View.h>
#endif #endif
class PoorManView: public BView class PoorManView: public BView {
{
public: public:
PoorManView(BRect, const char *name); PoorManView(BRect, const char *name);
virtual void AttachedToWindow(); virtual void AttachedToWindow();
}; };
+159 -231
View File
@@ -17,6 +17,7 @@
#include <Directory.h> #include <Directory.h>
#include <File.h> #include <File.h>
#include <FindDirectory.h> #include <FindDirectory.h>
#include <GroupLayoutBuilder.h>
#include <Locale.h> #include <Locale.h>
#include <Menu.h> #include <Menu.h>
#include <MenuBar.h> #include <MenuBar.h>
@@ -43,182 +44,111 @@
PoorManWindow::PoorManWindow(BRect frame) PoorManWindow::PoorManWindow(BRect frame)
: BWindow(frame, STR_APP_NAME, B_TITLED_WINDOW, 0), :
status(false), hits(0), prefWindow(NULL), fLogFile(NULL), fServer(NULL) BWindow(frame, STR_APP_NAME, B_TITLED_WINDOW, 0),
fStatus(false),
fHits(0),
fPrefWindow(NULL),
fLogFile(NULL),
fServer(NULL)
{ {
//preferences init //preferences init
web_directory.SetTo(STR_DEFAULT_WEB_DIRECTORY); fWebDirectory.SetTo(STR_DEFAULT_WEB_DIRECTORY);
index_file_name.SetTo("index.html"); fIndexFileName.SetTo("index.html");
dir_list_flag = false; fDirListFlag = false;
log_console_flag = true; fLogConsoleFlag = true;
log_file_flag = false; fLogFileFlag = false;
log_path.SetTo(""); fLogPath.SetTo("");
max_connections = (int16)32; fMaxConnections = (int16)32;
is_zoomed = true; fIsZoomed = true;
last_width = 318.0f; fLastWidth = 318.0f;
last_height = 320.0f; fLastHeight = 320.0f;
this->frame = frame; this->fFrame = frame;
setwindow_frame.Set(112.0f, 60.0f, 492.0f, 340.0f); fSetwindowFrame.Set(112.0f, 60.0f, 492.0f, 340.0f);
// PoorMan Window // PoorMan Window
SetSizeLimits(318, 1600, 53, 1200); SetSizeLimits(318, 1600, 53, 1200);
// limit the size of the size of the window // limit the size of the size of the window
//SetZoomLimits(1024, 768); SetLayout(new BGroupLayout(B_VERTICAL));
//frame.Set(30.0f, 30.0f, 355.0f, 185.0f);
frame.OffsetTo(B_ORIGIN);
frame = Bounds();
frame.top += 19.0;
mainView = new PoorManView(frame, STR_APP_NAME);
mainView->SetViewColor(216,216,216,255);
mainView->SetFont(be_bold_font);
mainView->SetFontSize(12);
AddChild(mainView);
// BBox tests
BRect br;
br = mainView->Bounds();
br.top = 1.0;
BBox * bb = new BBox(br, "Background", B_FOLLOW_ALL_SIDES,
B_WILL_DRAW | B_FRAME_EVENTS | B_FULL_UPDATE_ON_RESIZE);
bb->SetHighColor(WHITE);
bb->SetLowColor(GRAY);
bb->SetBorder(B_PLAIN_BORDER);
mainView->AddChild(bb);
// ----------------------------------------------------------------- // -----------------------------------------------------------------
// Three Labels // Three Labels
// Status String // Status String
BRect statusRect; fStatusView = new BStringView("Status View", B_TRANSLATE("Status: Stopped"));
statusRect = Bounds();
statusRect.left += 5;
statusRect.top += 3;
statusRect.bottom = statusRect.top + 15;
statusRect.right = statusRect.left + 100; // make the width wide enough for the string to display
statusView = new BStringView(statusRect, "Status View",
B_TRANSLATE("Status: Stopped"));
bb->AddChild(statusView);
// Directory String // Directory String
BRect dirRect; fDirView = new BStringView("Dir View", B_TRANSLATE("Directory: (none)"));
dirRect = Bounds();
dirRect.top = statusRect.bottom - 1;
dirRect.bottom = dirRect.top + 15;
dirRect.left = statusRect.left;
dirRect.right -= 5;
dirView = new BStringView(dirRect, "Dir View",
B_TRANSLATE("Directory: (none)"), B_FOLLOW_LEFT_RIGHT | B_FOLLOW_TOP);
bb->AddChild(dirView);
// Hits String // Hits String
BRect hitsRect; fHitsView = new BStringView("Hit View", B_TRANSLATE("Hits: 0"));
hitsRect = bb->Bounds();
hitsRect.InsetBy(5.0f, 5.0f);
hitsRect.top = statusRect.top;
hitsRect.bottom = statusRect.bottom;
hitsRect.left = statusRect.right + 20;
hitsView = new BStringView(hitsRect, "Hit View", B_TRANSLATE("Hits: 0"),
B_FOLLOW_RIGHT | B_FOLLOW_TOP);
hitsView->SetAlignment(B_ALIGN_RIGHT);
bb->AddChild(hitsView);
// ----------------------------------------------------------------- // -----------------------------------------------------------------
// Logging View // Logging View
// logRect fLoggingView = new BTextView(STR_TXT_VIEW, B_WILL_DRAW );
BRect logRect = bb->Bounds();//(5.0, 36.0, 306.0, 131.0);
logRect.InsetBy(5, 5);
logRect.top = 36.0f;
logRect.right -= B_V_SCROLL_BAR_WIDTH;
// textRect fLoggingView->MakeEditable(false); // user cannot change the text
BRect textRect; //(1.0, 1.0, 175.0, 75.0); fLoggingView->MakeSelectable(true);
textRect = logRect; fLoggingView->SetViewColor(WHITE);
textRect.top = 0.0; fLoggingView->SetStylable(true);
textRect.left = 2.0;
textRect.right = logRect.right - logRect.left - 2.0;
textRect.bottom = logRect.bottom - logRect.top;
fLogViewFont = new BFont(be_plain_font);
fLogViewFont->SetSize(11.0);
loggingView = new BTextView(logRect, STR_TXT_VIEW, textRect,
fLogViewFont, NULL, B_FOLLOW_ALL_SIDES, B_WILL_DRAW );
loggingView->MakeEditable(false); // user cannot change the text
loggingView->MakeSelectable(true);
loggingView->SetViewColor(WHITE);
loggingView->SetStylable(true);
// create the scroll view // create the scroll view
scrollView = new BScrollView("Scroll View", loggingView, B_FOLLOW_ALL_SIDES, fScrollView = new BScrollView("Scroll View", fLoggingView,
B_WILL_DRAW | B_FRAME_EVENTS, B_WILL_DRAW | B_FRAME_EVENTS | B_FOLLOW_ALL_SIDES,
// Make sure articles on border do not occur when resizing // Make sure articles on border do not occur when resizing
false, true); false, true);
bb->AddChild(scrollView); fLoggingView->MakeFocus(true);
loggingView->MakeFocus(true);
// ----------------------------------------------------------------- // -----------------------------------------------------------------
// menu bar // menu bar
BRect menuRect; fFileMenuBar = new BMenuBar("File Menu Bar");
menuRect = Bounds();
menuRect.bottom = 18.0f;
FileMenuBar = new BMenuBar(menuRect, "File Menu Bar");
// menus // menus
FileMenu = BuildFileMenu(); fFileMenu = BuildFileMenu();
if (FileMenu) if (fFileMenu)
FileMenuBar->AddItem(FileMenu); fFileMenuBar->AddItem(fFileMenu);
EditMenu = BuildEditMenu(); fEditMenu = BuildEditMenu();
if (EditMenu) if (fEditMenu)
FileMenuBar->AddItem(EditMenu); fFileMenuBar->AddItem(fEditMenu);
ControlsMenu = BuildControlsMenu(); fControlsMenu = BuildControlsMenu();
if (ControlsMenu) if (fControlsMenu)
FileMenuBar->AddItem(ControlsMenu); fFileMenuBar->AddItem(fControlsMenu);
// File Panels // File Panels
BWindow* change_title; BWindow* change_title;
BMessenger messenger(this); fSaveConsoleFilePanel = new BFilePanel(B_SAVE_PANEL, new BMessenger(this),
saveConsoleFilePanel = new BFilePanel( NULL, B_FILE_NODE, false,
B_SAVE_PANEL,
&messenger,
NULL,
B_FILE_NODE,
false,
new BMessage(MSG_FILE_PANEL_SAVE_CONSOLE)); new BMessage(MSG_FILE_PANEL_SAVE_CONSOLE));
change_title = fSaveConsoleFilePanel->Window();
change_title = saveConsoleFilePanel->Window();
change_title->SetTitle(STR_FILEPANEL_SAVE_CONSOLE); change_title->SetTitle(STR_FILEPANEL_SAVE_CONSOLE);
saveConsoleSelectionFilePanel = new BFilePanel( fSaveConsoleSelectionFilePanel = new BFilePanel(B_SAVE_PANEL,
B_SAVE_PANEL, new BMessenger(this), NULL, B_FILE_NODE, false,
&messenger,
NULL,
B_FILE_NODE,
false,
new BMessage(MSG_FILE_PANEL_SAVE_CONSOLE_SELECTION)); new BMessage(MSG_FILE_PANEL_SAVE_CONSOLE_SELECTION));
change_title = fSaveConsoleSelectionFilePanel->Window();
change_title = saveConsoleSelectionFilePanel->Window();
change_title->SetTitle(STR_FILEPANEL_SAVE_CONSOLE_SELECTION); change_title->SetTitle(STR_FILEPANEL_SAVE_CONSOLE_SELECTION);
AddChild(BGroupLayoutBuilder(B_VERTICAL)
AddChild(FileMenuBar); .Add(fFileMenuBar)
.Add(BGroupLayoutBuilder(B_VERTICAL, 5)
.Add(BGroupLayoutBuilder(B_HORIZONTAL)
.Add(fStatusView)
.AddGlue()
.Add(fHitsView))
.Add(BGroupLayoutBuilder(B_HORIZONTAL)
.Add(fDirView)
.AddGlue())
.Add(fScrollView)
.SetInsets(10, 10, 10, 10)));
pthread_rwlock_init(&fLogFileLock, NULL); pthread_rwlock_init(&fLogFileLock, NULL);
} }
@@ -227,7 +157,6 @@ PoorManWindow::PoorManWindow(BRect frame)
PoorManWindow::~PoorManWindow() PoorManWindow::~PoorManWindow()
{ {
delete fServer; delete fServer;
delete fLogViewFont;
delete fLogFile; delete fLogFile;
pthread_rwlock_destroy(&fLogFileLock); pthread_rwlock_destroy(&fLogFileLock);
} }
@@ -238,30 +167,29 @@ PoorManWindow::MessageReceived(BMessage* message)
{ {
switch (message->what) { switch (message->what) {
case MSG_MENU_FILE_SAVE_AS: case MSG_MENU_FILE_SAVE_AS:
saveConsoleFilePanel->Show(); fSaveConsoleFilePanel->Show();
break; break;
case MSG_FILE_PANEL_SAVE_CONSOLE: case MSG_FILE_PANEL_SAVE_CONSOLE:
printf("FilePanel: Save console\n"); printf("FilePanel: Save console\n");
SaveConsole(message, false); SaveConsole(message, false);
break; break;
case MSG_MENU_FILE_SAVE_SELECTION: case MSG_MENU_FILE_SAVE_SELECTION:
saveConsoleSelectionFilePanel->Show(); fSaveConsoleSelectionFilePanel->Show();
break; break;
case MSG_FILE_PANEL_SAVE_CONSOLE_SELECTION: case MSG_FILE_PANEL_SAVE_CONSOLE_SELECTION:
printf("FilePanel: Save console selection\n"); printf("FilePanel: Save console selection\n");
SaveConsole(message, true); SaveConsole(message, true);
break; break;
case MSG_FILE_PANEL_SELECT_WEB_DIR: case MSG_FILE_PANEL_SELECT_WEB_DIR:
prefWindow->MessageReceived(message); fPrefWindow->MessageReceived(message);
break; break;
case MSG_MENU_EDIT_PREF: case MSG_MENU_EDIT_PREF:
prefWindow = new PoorManPreferencesWindow( fPrefWindow = new PoorManPreferencesWindow(fSetwindowFrame,
setwindow_frame,
STR_WIN_NAME_PREF); STR_WIN_NAME_PREF);
prefWindow->Show(); fPrefWindow->Show();
break; break;
case MSG_MENU_CTRL_RUN: case MSG_MENU_CTRL_RUN:
if (status) if (fStatus)
StopServer(); StopServer();
else else
StartServer(); StartServer();
@@ -271,16 +199,16 @@ PoorManWindow::MessageReceived(BMessage* message)
//UpdateHitsLabel(); //UpdateHitsLabel();
break; break;
case MSG_MENU_CTRL_CLEAR_CONSOLE: case MSG_MENU_CTRL_CLEAR_CONSOLE:
loggingView->SelectAll(); fLoggingView->SelectAll();
loggingView->Delete(); fLoggingView->Delete();
break; break;
case MSG_MENU_CTRL_CLEAR_LOG: case MSG_MENU_CTRL_CLEAR_LOG:
FILE* f; FILE* f;
f = fopen(log_path.String(), "w"); f = fopen(fLogPath.String(), "w");
fclose(f); fclose(f);
break; break;
case MSG_LOG: { case MSG_LOG: {
if (!log_console_flag && !log_file_flag) if (!fLogConsoleFlag && !fLogFileFlag)
break; break;
time_t time; time_t time;
@@ -332,20 +260,19 @@ PoorManWindow::MessageReceived(BMessage* message)
text_run_array runs; text_run_array runs;
run.offset = 0; run.offset = 0;
run.font = *fLogViewFont;
run.color = color; run.color = color;
runs.count = 1; runs.count = 1;
runs.runs[0] = run; runs.runs[0] = run;
if (Lock()) { if (Lock()) {
if (log_console_flag) { if (fLogConsoleFlag) {
loggingView->Insert(loggingView->TextLength(), fLoggingView->Insert(fLoggingView->TextLength(),
line.String(), line.Length(), &runs); line.String(), line.Length(), &runs);
loggingView->ScrollToOffset(loggingView->TextLength()); fLoggingView->ScrollToOffset(fLoggingView->TextLength());
} }
if (log_file_flag) { if (fLogFileFlag) {
if (pthread_rwlock_rdlock(&fLogFileLock) == 0) { if (pthread_rwlock_rdlock(&fLogFileLock) == 0) {
fLogFile->Write(line.String(), line.Length()); fLogFile->Write(line.String(), line.Length());
pthread_rwlock_unlock(&fLogFileLock); pthread_rwlock_unlock(&fLogFileLock);
@@ -367,17 +294,17 @@ PoorManWindow::MessageReceived(BMessage* message)
void void
PoorManWindow::FrameMoved(BPoint origin) PoorManWindow::FrameMoved(BPoint origin)
{ {
frame.left = origin.x; fFrame.left = origin.x;
frame.top = origin.y; fFrame.top = origin.y;
} }
void void
PoorManWindow::FrameResized(float width, float height) PoorManWindow::FrameResized(float width, float height)
{ {
if (is_zoomed) { if (fIsZoomed) {
last_width = width; fLastWidth = width;
last_height = height; fLastHeight = height;
} }
} }
@@ -385,7 +312,7 @@ PoorManWindow::FrameResized(float width, float height)
bool bool
PoorManWindow::QuitRequested() PoorManWindow::QuitRequested()
{ {
if (status) { if (fStatus) {
time_t now = time(NULL); time_t now = time(NULL);
BString timeString; BString timeString;
BLocale::Default()->FormatDateTime(&timeString, now, BLocale::Default()->FormatDateTime(&timeString, now,
@@ -395,13 +322,13 @@ PoorManWindow::QuitRequested()
line << "[" << timeString << "]: " << B_TRANSLATE("Shutting down.") line << "[" << timeString << "]: " << B_TRANSLATE("Shutting down.")
<< "\n"; << "\n";
if (log_console_flag) { if (fLogConsoleFlag) {
loggingView->Insert(loggingView->TextLength(), fLoggingView->Insert(fLoggingView->TextLength(),
line, line.Length()); line, line.Length());
loggingView->ScrollToOffset(loggingView->TextLength()); fLoggingView->ScrollToOffset(fLoggingView->TextLength());
} }
if (log_file_flag) { if (fLogFileFlag) {
if (pthread_rwlock_rdlock(&fLogFileLock) == 0) { if (pthread_rwlock_rdlock(&fLogFileLock) == 0) {
fLogFile->Write(line, line.Length()); fLogFile->Write(line, line.Length());
pthread_rwlock_unlock(&fLogFileLock); pthread_rwlock_unlock(&fLogFileLock);
@@ -409,7 +336,7 @@ PoorManWindow::QuitRequested()
} }
fServer->Stop(); fServer->Stop();
status = false; fStatus = false;
UpdateStatusLabelAndMenuItem(); UpdateStatusLabelAndMenuItem();
} }
@@ -422,14 +349,14 @@ PoorManWindow::QuitRequested()
void void
PoorManWindow::Zoom(BPoint origin, float width, float height) PoorManWindow::Zoom(BPoint origin, float width, float height)
{ {
if (is_zoomed) { if (fIsZoomed) {
// Change to the Minimal size // Change to the Minimal size
is_zoomed = false; fIsZoomed = false;
ResizeTo(318, 53); ResizeTo(318, 53);
} else { } else {
// Change to the Zoomed size // Change to the Zoomed size
is_zoomed = true; fIsZoomed = true;
ResizeTo(last_width, last_height); ResizeTo(fLastWidth, fLastHeight);
} }
} }
@@ -437,7 +364,7 @@ PoorManWindow::Zoom(BPoint origin, float width, float height)
void void
PoorManWindow::SetHits(uint32 num) PoorManWindow::SetHits(uint32 num)
{ {
hits = num; fHits = num;
UpdateHitsLabel(); UpdateHitsLabel();
} }
@@ -474,7 +401,7 @@ PoorManWindow::BuildEditMenu() const
new BMessage(B_COPY), CMD_EDIT_COPY); new BMessage(B_COPY), CMD_EDIT_COPY);
ptrEditMenu->AddItem(CopyMenuItem); ptrEditMenu->AddItem(CopyMenuItem);
CopyMenuItem->SetTarget(loggingView, NULL); CopyMenuItem->SetTarget(fLoggingView, NULL);
ptrEditMenu->AddSeparatorItem(); ptrEditMenu->AddSeparatorItem();
@@ -482,7 +409,7 @@ PoorManWindow::BuildEditMenu() const
new BMessage(B_SELECT_ALL), CMD_EDIT_SELECT_ALL); new BMessage(B_SELECT_ALL), CMD_EDIT_SELECT_ALL);
ptrEditMenu->AddItem(SelectAllMenuItem); ptrEditMenu->AddItem(SelectAllMenuItem);
SelectAllMenuItem->SetTarget(loggingView, NULL); SelectAllMenuItem->SetTarget(fLoggingView, NULL);
ptrEditMenu->AddSeparatorItem(); ptrEditMenu->AddSeparatorItem();
@@ -529,7 +456,7 @@ PoorManWindow::SetDirLabel(const char * name)
dirPath.Append(name); dirPath.Append(name);
if (Lock()) { if (Lock()) {
dirView->SetText(dirPath.String()); fDirView->SetText(dirPath.String());
Unlock(); Unlock();
} }
} }
@@ -539,11 +466,11 @@ void
PoorManWindow::UpdateStatusLabelAndMenuItem() PoorManWindow::UpdateStatusLabelAndMenuItem()
{ {
if (Lock()) { if (Lock()) {
if (status) if (fStatus)
statusView->SetText(B_TRANSLATE("Status: Running")); fStatusView->SetText(B_TRANSLATE("Status: Running"));
else else
statusView->SetText(B_TRANSLATE("Status: Stopped")); fStatusView->SetText(B_TRANSLATE("Status: Stopped"));
ControlsMenu->FindItem(STR_MNU_CTRL_RUN_SERVER)->SetMarked(status); fControlsMenu->FindItem(STR_MNU_CTRL_RUN_SERVER)->SetMarked(fStatus);
Unlock(); Unlock();
} }
} }
@@ -553,8 +480,8 @@ void
PoorManWindow::UpdateHitsLabel() PoorManWindow::UpdateHitsLabel()
{ {
if (Lock()) { if (Lock()) {
sprintf(hitsLabel, B_TRANSLATE("Hits: %lu"), GetHits()); sprintf(fHitsLabel, B_TRANSLATE("Hits: %lu"), GetHits());
hitsView->SetText(hitsLabel); fHitsView->SetText(fHitsLabel);
Unlock(); Unlock();
} }
@@ -571,13 +498,16 @@ PoorManWindow::SaveConsole(BMessage * message, bool selection)
status_t err = B_OK; status_t err = B_OK;
FILE* f; FILE* f;
if ((err = message->FindRef("directory", &ref)) != B_OK) err = message->FindRef("directory", &ref);
if (err != B_OK)
return err; return err;
if ((err = message->FindString("name", &name)) != B_OK) err = message->FindString("name", &name);
if (err != B_OK)
return err; return err;
if ((err = entry.SetTo(&ref)) != B_OK) err = entry.SetTo(&ref);
if (err != B_OK)
return err; return err;
entry.GetPath(&path); entry.GetPath(&path);
@@ -588,20 +518,21 @@ PoorManWindow::SaveConsole(BMessage * message, bool selection)
if (!selection) { if (!selection) {
// write the data to the file // write the data to the file
err = fwrite(loggingView->Text(), 1, loggingView->TextLength(), f); err = fwrite(fLoggingView->Text(), 1, fLoggingView->TextLength(), f);
} else { } else {
// find the selected text and write it to a file // find the selected text and write it to a file
int32 start = 0, end = 0; int32 start = 0, end = 0;
loggingView->GetSelection(&start, &end); fLoggingView->GetSelection(&start, &end);
BString buffer; BString buffer;
char * buffData = buffer.LockBuffer(end - start + 1); char * buffData = buffer.LockBuffer(end - start + 1);
// copy the selected text from the TextView to the buffer // copy the selected text from the TextView to the buffer
loggingView->GetText(start, end - start, buffData); fLoggingView->GetText(start, end - start, buffData);
buffer.UnlockBuffer(end - start + 1); buffer.UnlockBuffer(end - start + 1);
err = fwrite(buffer.String(), 1, end - start + 1, f); err = fwrite(buffer.String(), 1, end - start + 1, f);
} }
fclose(f); fclose(f);
return err; return err;
@@ -627,10 +558,10 @@ PoorManWindow::DefaultSettings()
break; break;
case 1: case 1:
prefWindow = new PoorManPreferencesWindow( fPrefWindow = new PoorManPreferencesWindow(
setwindow_frame, fSetwindowFrame,
STR_WIN_NAME_PREF); STR_WIN_NAME_PREF);
prefWindow->ShowWebDirFilePanel(); fPrefWindow->ShowWebDirFilePanel();
break; break;
case 2: case 2:
@@ -674,49 +605,49 @@ PoorManWindow::ReadSettings()
return B_ERROR; return B_ERROR;
//site tab //site tab
if (m.FindString("web_directory", &web_directory) != B_OK) if (m.FindString("fWebDirectory", &fWebDirectory) != B_OK)
web_directory.SetTo(STR_DEFAULT_WEB_DIRECTORY); fWebDirectory.SetTo(STR_DEFAULT_WEB_DIRECTORY);
if (m.FindString("index_file_name", &index_file_name) != B_OK) if (m.FindString("fIndexFileName", &fIndexFileName) != B_OK)
index_file_name.SetTo("index.html"); fIndexFileName.SetTo("index.html");
if (m.FindBool("dir_list_flag", &dir_list_flag) != B_OK) if (m.FindBool("fDirListFlag", &fDirListFlag) != B_OK)
dir_list_flag = false; fDirListFlag = false;
//logging tab //logging tab
if (m.FindBool("log_console_flag", &log_console_flag) != B_OK) if (m.FindBool("fLogConsoleFlag", &fLogConsoleFlag) != B_OK)
log_console_flag = true; fLogConsoleFlag = true;
if (m.FindBool("log_file_flag", &log_file_flag) != B_OK) if (m.FindBool("fLogFileFlag", &fLogFileFlag) != B_OK)
log_file_flag = false; fLogFileFlag = false;
if (m.FindString("log_path", &log_path) != B_OK) if (m.FindString("fLogPath", &fLogPath) != B_OK)
log_path.SetTo(""); fLogPath.SetTo("");
//advance tab //advance tab
if (m.FindInt16("max_connections", &max_connections) != B_OK) if (m.FindInt16("fMaxConnections", &fMaxConnections) != B_OK)
max_connections = (int16)32; fMaxConnections = (int16)32;
//windows' position and size //windows' position and size
if (m.FindRect("frame", &frame) != B_OK) if (m.FindRect("frame", &fFrame) != B_OK)
frame.Set(82.0f, 30.0f, 400.0f, 350.0f); fFrame.Set(82.0f, 30.0f, 400.0f, 350.0f);
if (m.FindRect("setwindow_frame", &setwindow_frame) != B_OK) if (m.FindRect("fSetwindowFrame", &fSetwindowFrame) != B_OK)
setwindow_frame.Set(112.0f, 60.0f, 492.0f, 340.0f); fSetwindowFrame.Set(112.0f, 60.0f, 492.0f, 340.0f);
if (m.FindBool("is_zoomed", &is_zoomed) != B_OK) if (m.FindBool("fIsZoomed", &fIsZoomed) != B_OK)
is_zoomed = true; fIsZoomed = true;
if (m.FindFloat("last_width", &last_width) != B_OK) if (m.FindFloat("fLastWidth", &fLastWidth) != B_OK)
last_width = 318.0f; fLastWidth = 318.0f;
if (m.FindFloat("last_height", &last_height) != B_OK) if (m.FindFloat("fLastHeight", &fLastHeight) != B_OK)
last_height = 320.0f; fLastHeight = 320.0f;
is_zoomed?ResizeTo(last_width, last_height):ResizeTo(318, 53); fIsZoomed?ResizeTo(fLastWidth, fLastHeight):ResizeTo(318, 53);
MoveTo(frame.left, frame.top); MoveTo(fFrame.left, fFrame.top);
fLogFile = new BFile(log_path.String(), B_CREATE_FILE | B_WRITE_ONLY fLogFile = new BFile(fLogPath.String(), B_CREATE_FILE | B_WRITE_ONLY
| B_OPEN_AT_END); | B_OPEN_AT_END);
if (fLogFile->InitCheck() != B_OK) { if (fLogFile->InitCheck() != B_OK) {
log_file_flag = false; fLogFileFlag = false;
//log it to console, "log to file unavailable." //log it to console, "log to file unavailable."
return B_OK; return B_OK;
} }
SetDirLabel(web_directory.String()); SetDirLabel(fWebDirectory.String());
return B_OK; return B_OK;
} }
@@ -730,24 +661,24 @@ PoorManWindow::SaveSettings()
BMessage m(MSG_PREF_FILE); BMessage m(MSG_PREF_FILE);
//site tab //site tab
m.AddString("web_directory", web_directory); m.AddString("fWebDirectory", fWebDirectory);
m.AddString("index_file_name", index_file_name); m.AddString("fIndexFileName", fIndexFileName);
m.AddBool("dir_list_flag", dir_list_flag); m.AddBool("fDirListFlag", fDirListFlag);
//logging tab //logging tab
m.AddBool("log_console_flag", log_console_flag); m.AddBool("fLogConsoleFlag", fLogConsoleFlag);
m.AddBool("log_file_flag", log_file_flag); m.AddBool("fLogFileFlag", fLogFileFlag);
m.AddString("log_path", log_path); m.AddString("fLogPath", fLogPath);
//advance tab //advance tab
m.AddInt16("max_connections", max_connections); m.AddInt16("fMaxConnections", fMaxConnections);
//windows' position and size //windows' position and size
m.AddRect("frame", frame); m.AddRect("frame", fFrame);
m.AddRect("setwindow_frame", setwindow_frame); m.AddRect("fSetwindowFrame", fSetwindowFrame);
m.AddBool("is_zoomed", is_zoomed); m.AddBool("fIsZoomed", fIsZoomed);
m.AddFloat("last_width", last_width); m.AddFloat("fLastWidth", fLastWidth);
m.AddFloat("last_height", last_height); m.AddFloat("fLastHeight", fLastHeight);
if (find_directory(B_USER_SETTINGS_DIRECTORY, &p) != B_OK) if (find_directory(B_USER_SETTINGS_DIRECTORY, &p) != B_OK)
return B_ERROR; return B_ERROR;
@@ -768,18 +699,15 @@ status_t
PoorManWindow::StartServer() PoorManWindow::StartServer()
{ {
if (fServer == NULL) if (fServer == NULL)
fServer = new PoorManServer( fServer = new PoorManServer(fWebDirectory.String(), fMaxConnections,
web_directory.String(), fDirListFlag, fIndexFileName.String());
max_connections,
dir_list_flag,
index_file_name.String());
poorman_log(B_TRANSLATE("Starting up... ")); poorman_log(B_TRANSLATE("Starting up... "));
if (fServer->Run() != B_OK) { if (fServer->Run() != B_OK) {
return B_ERROR; return B_ERROR;
} }
status = true; fStatus = true;
UpdateStatusLabelAndMenuItem(); UpdateStatusLabelAndMenuItem();
poorman_log(B_TRANSLATE("done.\n"), false, INADDR_NONE, GREEN); poorman_log(B_TRANSLATE("done.\n"), false, INADDR_NONE, GREEN);
@@ -795,7 +723,7 @@ PoorManWindow::StopServer()
poorman_log(B_TRANSLATE("Shutting down.\n")); poorman_log(B_TRANSLATE("Shutting down.\n"));
fServer->Stop(); fServer->Stop();
status = false; fStatus = false;
UpdateStatusLabelAndMenuItem(); UpdateStatusLabelAndMenuItem();
return B_OK; return B_OK;
} }
@@ -804,7 +732,7 @@ PoorManWindow::StopServer()
void void
PoorManWindow::SetLogPath(const char* str) PoorManWindow::SetLogPath(const char* str)
{ {
if (!strcmp(log_path, str)) if (!strcmp(fLogPath, str))
return; return;
BFile* temp = new BFile(str, B_CREATE_FILE | B_WRITE_ONLY | B_OPEN_AT_END); BFile* temp = new BFile(str, B_CREATE_FILE | B_WRITE_ONLY | B_OPEN_AT_END);
@@ -823,5 +751,5 @@ PoorManWindow::SetLogPath(const char* str)
return; return;
} }
log_path.SetTo(str); fLogPath.SetTo(str);
} }
+54 -47
View File
@@ -46,7 +46,7 @@ virtual void Zoom(BPoint origin, float width, float height);
// Public PoorMan Window Methods // Public PoorMan Window Methods
void SetDirLabel(const char* name); void SetDirLabel(const char* name);
void SetHits(uint32 num); void SetHits(uint32 num);
uint32 GetHits() { return hits; } uint32 GetHits() { return fHits; }
status_t SaveConsole(BMessage* message, bool); status_t SaveConsole(BMessage* message, bool);
status_t SaveSettings(); status_t SaveSettings();
@@ -60,23 +60,35 @@ virtual void Zoom(BPoint origin, float width, float height);
// ------------------------------------------- // -------------------------------------------
// Preferences and Settings // Preferences and Settings
// Site Tab // Site Tab
bool DirListFlag() { return dir_list_flag; } bool DirListFlag()
void SetDirListFlag(bool flag) { dir_list_flag = flag; } { return fDirListFlag; }
const char * IndexFileName() { return index_file_name.String(); } void SetDirListFlag(bool flag)
void SetIndexFileName(const char * str) { index_file_name.SetTo(str); } { fDirListFlag = flag; }
const char * WebDir() { return web_directory.String(); } const char* IndexFileName()
void SetWebDir(const char * str) { web_directory.SetTo(str); } { return fIndexFileName.String(); }
void SetIndexFileName(const char* str)
{ fIndexFileName.SetTo(str); }
const char* WebDir()
{ return fWebDirectory.String(); }
void SetWebDir(const char* str)
{ fWebDirectory.SetTo(str); }
// Logging Tab // Logging Tab
bool LogConsoleFlag() { return log_console_flag; } bool LogConsoleFlag()
void SetLogConsoleFlag(bool flag) { log_console_flag = flag; } { return fLogConsoleFlag; }
bool LogFileFlag() { return log_file_flag; } void SetLogConsoleFlag(bool flag)
void SetLogFileFlag(bool flag) { log_file_flag = flag; } { fLogConsoleFlag = flag; }
const char * LogPath() { return log_path.String(); } bool LogFileFlag()
{ return fLogFileFlag; }
void SetLogFileFlag(bool flag)
{ fLogFileFlag = flag; }
const char* LogPath()
{ return fLogPath.String(); }
void SetLogPath(const char* str); void SetLogPath(const char* str);
// Advanced Tab // Advanced Tab
int16 MaxConnections() { return max_connections; } int16 MaxConnections()
void SetMaxConnections(int16 num) { max_connections = num; } { return fMaxConnections; }
void SetMaxConnections(int16 num)
{ fMaxConnections = num; }
private: private:
// ------------------------------------------- // -------------------------------------------
@@ -85,10 +97,6 @@ private:
void UpdateHitsLabel(); void UpdateHitsLabel();
private: private:
// -------------------------------------------
// PoorMan Window
PoorManView * mainView;
// ------------------------------------------- // -------------------------------------------
// Build Menu Methods // Build Menu Methods
BMenu* BuildFileMenu() const; BMenu* BuildFileMenu() const;
@@ -97,57 +105,56 @@ private:
// -------------------------------------------- // --------------------------------------------
// MenuBar & Menu items // MenuBar & Menu items
BMenuBar * FileMenuBar; BMenuBar* fFileMenuBar;
BMenu * FileMenu; BMenu* fFileMenu;
BMenu * EditMenu; BMenu* fEditMenu;
BMenu * ControlsMenu; BMenu* fControlsMenu;
// -------------------------------------------- // --------------------------------------------
// Status, Hits, Directory // Status, Hits, Directory
BStringView * statusView; BStringView* fStatusView;
BStringView * hitsView; BStringView* fHitsView;
BStringView * dirView; BStringView* fDirView;
bool status; bool fStatus;
uint32 hits; uint32 fHits;
char hitsLabel[25]; char fHitsLabel[25];
// -------------------------------------------- // --------------------------------------------
// Logging View // Logging View
BScrollView * scrollView; BScrollView* fScrollView;
BTextView * loggingView; BTextView* fLoggingView;
// use asctime() for format of [Date/Time]: // use asctime() for format of [Date/Time]:
// ------------------------------------------- // -------------------------------------------
// PoorMan Preference Window // PoorMan Preference Window
PoorManPreferencesWindow * prefWindow; PoorManPreferencesWindow * fPrefWindow;
// site tab // site tab
BString web_directory; BString fWebDirectory;
BString index_file_name; BString fIndexFileName;
bool dir_list_flag; bool fDirListFlag;
// logging tab // logging tab
bool log_console_flag; bool fLogConsoleFlag;
bool log_file_flag; bool fLogFileFlag;
BString log_path; BString fLogPath;
// advanced tab // advanced tab
int16 max_connections; int16 fMaxConnections;
bool is_zoomed; bool fIsZoomed;
float last_width; float fLastWidth;
float last_height; float fLastHeight;
BRect frame; BRect fFrame;
BRect setwindow_frame; BRect fSetwindowFrame;
// File Panels // File Panels
BFilePanel * saveConsoleFilePanel; BFilePanel* fSaveConsoleFilePanel;
BFilePanel * saveConsoleSelectionFilePanel; BFilePanel* fSaveConsoleSelectionFilePanel;
BFile* fLogFile; BFile* fLogFile;
BFont* fLogViewFont;
PoorManServer* fServer; PoorManServer* fServer;
+8 -20
View File
@@ -11,31 +11,19 @@
#include <stdio.h> #include <stdio.h>
StatusSlider::StatusSlider (BRect frame, StatusSlider::StatusSlider(const char* name, const char* label,
const char *name, char* statusPrefix, BMessage* message, int32 minValue, int32 maxValue)
const char *label, :
char *statusPrefix, BSlider(name, label, message, minValue, maxValue, B_HORIZONTAL),
BMessage *message, fStatusPrefix(statusPrefix)
int32 minValue,
int32 maxValue)
: BSlider(frame,
name,
label,
message,
minValue,
maxValue
),
StatusPrefix(statusPrefix)
{ {
temp = str; fTemp = fStr;
} }
const char* const char*
StatusSlider::UpdateText() const StatusSlider::UpdateText() const
{ {
sprintf(fTemp, "%ld %s", Value(), fStatusPrefix);
sprintf(temp, "%ld %s", Value(), StatusPrefix); return fTemp;
return temp;
} }
+7 -7
View File
@@ -13,21 +13,21 @@
#include <Slider.h> #include <Slider.h>
class StatusSlider: public BSlider class StatusSlider: public BSlider {
{
public: public:
StatusSlider(BRect frame, StatusSlider(const char* name,
const char *name,
const char* label, const char* label,
char* statusPrefix, char* statusPrefix,
BMessage* message, BMessage* message,
int32 minValue, int32 minValue,
int32 maxValue); int32 maxValue);
virtual const char* UpdateText() const; virtual const char* UpdateText() const;
private: private:
char * StatusPrefix; char* fStatusPrefix;
char * temp; char* fTemp;
char str[128]; char fStr[128];
}; };
#endif #endif