Headers
App.h
#ifndef APP_H
#define APP_H
#include
class App : public BApplication
{
public:
App(void);
};
#endif
MainWindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include
#include
class MainWindow : public BWindow
{
public:
MainWindow(void);
void MessageReceived(BMessage *msg);
bool QuitRequested(void);
BView *view;
BButton *btnRead;
BButton *btnWrite;
BTextControl *txtResult;
void ReadButton(void);
void WriteButton(void);
private:
};
#endif
Implementation
App.cpp
#include "App.h"
#include "MainWindow.h"
App::App(void)
: BApplication("application/x-vnd.ReadWriteDemo")
{
MainWindow *mainwin = new MainWindow();
mainwin->Show();
}
int
main(void)
{
App *app = new App();
app->Run();
delete app;
return 0;
}
MainWindow.cpp
#include "MainWindow.h"
#include
#include
#include
#include
#include
#include
enum {
M_BUTTON_READ = 'brea',
M_BUTTON_WRITE = 'bwri',
TXT_RESULT = 'txtr'
};
void MainWindow::ReadButton(void) {
BFile file("/boot/common/cache/tmp/test.txt",B_READ_ONLY);
off_t fileSize = 0;
file.GetSize(&fileSize);
BString fileData;
char *buffer = fileData.LockBuffer(fileSize + 5);
file.Read(buffer, fileSize);
fileData.UnlockBuffer();
txtResult->SetText(fileData.String());
}
void MainWindow::WriteButton(void) {
BString someText;
someText.SetTo("HDU 2011\n");
BFile file("/boot/common/cache/tmp/test.txt",B_READ_WRITE | B_CREATE_FILE);
file.Write(someText.String(),someText.CountChars());
BAlert *alert;
alert = new BAlert("alert","File has been written.","Continue",NULL,NULL,B_WIDTH_FROM_WIDEST,B_INFO_ALERT);
alert->Go();
}
MainWindow::MainWindow(void)
: BWindow(BRect(100,100,314,180),"Read / Write Demo",B_TITLED_WINDOW, B_ASYNCHRONOUS_CONTROLS)
{
txtResult = new BTextControl(BRect(5,7,200,35),"txtResult","Result:","",new BMessage(TXT_RESULT));
btnRead = new BButton(BRect(30,40,20,20),"btnRead","Read",new BMessage(M_BUTTON_READ));
btnRead->ResizeToPreferred();
btnWrite = new BButton(BRect(110,40,20,20),"btnWrite","Write",new BMessage(M_BUTTON_WRITE));
btnWrite->ResizeToPreferred();
AddChild(btnRead);
AddChild(btnWrite);
// background view
view = new BView(BRect(0,0,300,160),"backgroundview",B_FOLLOW_ALL,B_WILL_DRAW);
AddChild(view);
view->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR));
view->Invalidate();
AddChild(txtResult);
//txtResult->MakeFocus();
txtResult->SetDivider(47);
}
void
MainWindow::MessageReceived(BMessage *msg)
{
switch (msg->what)
{
case M_BUTTON_READ:
{
MainWindow::ReadButton();
break;
}
case M_BUTTON_WRITE:
{
MainWindow::WriteButton();
break;
}
default:
{
BWindow::MessageReceived(msg);
break;
}
}
}
bool
MainWindow::QuitRequested(void)
{
be_app->PostMessage(B_QUIT_REQUESTED);
return true;
}