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;
}