diff --git a/src/prefs/keyboard/Jamfile b/src/prefs/keyboard/Jamfile index fc651a7db6..20606dc999 100644 --- a/src/prefs/keyboard/Jamfile +++ b/src/prefs/keyboard/Jamfile @@ -1,7 +1,7 @@ -SubDir OBOS_TOP src prefs keyboard ; +SubDir OBOS_TOP src prefs time ; -AddResources Keyboard : Keyboard.rsrc ; +AddResources Time : Time.rsrc ; -Preference Keyboard : Keyboard.cpp KeyboardSettings.cpp KeyboardView.cpp KeyboardWindow.cpp ; +Preference Time : Time.cpp TimeSettings.cpp TimeView.cpp TimeWindow.cpp ; -LinkSharedOSLibs Keyboard : translation be root ; +LinkSharedOSLibs Time : translation be root ; diff --git a/src/prefs/keyboard/Time.cpp b/src/prefs/keyboard/Time.cpp new file mode 100644 index 0000000000..68f2de2777 --- /dev/null +++ b/src/prefs/keyboard/Time.cpp @@ -0,0 +1,70 @@ +/* + * Time.cpp + * Time mccall@digitalparadise.co.uk + * + */ + +#include +#include + +#include "Time.h" +#include "TimeWindow.h" +#include "TimeSettings.h" +#include "TimeMessages.h" + +const char TimeApplication::kTimeApplicationSig[] = "application/x-vnd.OpenBeOS-TIME"; + +int main(int, char**) +{ + TimeApplication myApplication; + + myApplication.Run(); + + return(0); +} + +TimeApplication::TimeApplication() + :BApplication(kTimeApplicationSig) +{ + + TimeWindow *window; + + fSettings = new TimeSettings(); + + window = new TimeWindow(); + +} + +void +TimeApplication::MessageReceived(BMessage *message) +{ + switch(message->what) { + case ERROR_DETECTED: + { + BAlert *errorAlert = new BAlert("Error", "Something has gone wrong!","OK",NULL,NULL,B_WIDTH_AS_USUAL, B_OFFSET_SPACING, B_WARNING_ALERT); + errorAlert->Go(); + be_app->PostMessage(B_QUIT_REQUESTED); + } + break; + default: + BApplication::MessageReceived(message); + break; + } +} + +void +TimeApplication::SetWindowCorner(BPoint corner) +{ + fSettings->SetWindowCorner(corner); +} + +void +TimeApplication::AboutRequested(void) +{ + (new BAlert("about", "...by Andrew Edward McCall", "Dig Deal"))->Go(); +} + +TimeApplication::~TimeApplication() +{ + delete fSettings; +} \ No newline at end of file diff --git a/src/prefs/keyboard/Time.h b/src/prefs/keyboard/Time.h new file mode 100644 index 0000000000..680d1dc627 --- /dev/null +++ b/src/prefs/keyboard/Time.h @@ -0,0 +1,29 @@ +#ifndef TIME_H +#define TIME_H + +#include + +#include "TimeWindow.h" +#include "TimeSettings.h" + +class TimeApplication : public BApplication +{ +public: + TimeApplication(); + virtual ~TimeApplication(); + + void MessageReceived(BMessage *message); + BPoint WindowCorner() const {return fSettings->WindowCorner(); } + void SetWindowCorner(BPoint corner); + + void AboutRequested(void); + +private: + + static const char kTimeApplicationSig[]; + + TimeSettings *fSettings; + +}; + +#endif \ No newline at end of file diff --git a/src/prefs/keyboard/Time.rsrc b/src/prefs/keyboard/Time.rsrc new file mode 100644 index 0000000000..6abd9c5ae7 Binary files /dev/null and b/src/prefs/keyboard/Time.rsrc differ diff --git a/src/prefs/keyboard/TimeMessages.h b/src/prefs/keyboard/TimeMessages.h new file mode 100644 index 0000000000..a4b737168a --- /dev/null +++ b/src/prefs/keyboard/TimeMessages.h @@ -0,0 +1,17 @@ +/* + + TimeMessages.h + +*/ + +#ifndef TIME_MESSAGES_H +#define TIME_MESSAGES_H + +const uint32 BUTTON_DEFAULTS = 'BTde'; +const uint32 BUTTON_REVERT = 'BTre'; +const uint32 SLIDER_REPEAT_RATE = 'SLrr'; +const uint32 SLIDER_DELAY_RATE = 'SLdr'; + +const uint32 ERROR_DETECTED = 'ERor'; + +#endif //TIME_MESSAGES_H \ No newline at end of file diff --git a/src/prefs/keyboard/TimeSettings.cpp b/src/prefs/keyboard/TimeSettings.cpp new file mode 100644 index 0000000000..5b1556566e --- /dev/null +++ b/src/prefs/keyboard/TimeSettings.cpp @@ -0,0 +1,63 @@ +/* + * TimeSettings.cpp + * Time mccall@digitalparadise.co.uk + * + */ + +#include +#include +#include +#include +#include +#include + +#include "TimeSettings.h" +#include "TimeMessages.h" + +const char TimeSettings::kTimeSettingsFile[] = "Time_settings"; + +TimeSettings::TimeSettings() +{ + BPath path; + + if (find_directory(B_USER_SETTINGS_DIRECTORY,&path) == B_OK) { + path.Append(kTimeSettingsFile); + BFile file(path.Path(), B_READ_ONLY); + if (file.InitCheck() == B_OK) { + // Now read in the data + if (file.Read(&fCorner, sizeof(BPoint)) != sizeof(BPoint)) { + fCorner.x=50; + fCorner.y=50; + }; + } + else { + fCorner.x=50; + fCorner.y=50; + } + } + else + be_app->PostMessage(ERROR_DETECTED); +} + +TimeSettings::~TimeSettings() +{ + BPath path; + + if (find_directory(B_USER_SETTINGS_DIRECTORY,&path) < B_OK) + return; + + path.Append(kTimeSettingsFile); + + BFile file(path.Path(), B_WRITE_ONLY | B_CREATE_FILE); + if (file.InitCheck() == B_OK) { + file.Write(&fCorner, sizeof(BPoint)); + } + + +} + +void +TimeSettings::SetWindowCorner(BPoint corner) +{ + fCorner=corner; +} \ No newline at end of file diff --git a/src/prefs/keyboard/TimeSettings.h b/src/prefs/keyboard/TimeSettings.h new file mode 100644 index 0000000000..3668fbc7ff --- /dev/null +++ b/src/prefs/keyboard/TimeSettings.h @@ -0,0 +1,20 @@ +#ifndef TIME_SETTINGS_H_ +#define TIME_SETTINGS_H_ + +#include + +class TimeSettings{ +public : + TimeSettings(); + ~TimeSettings(); + + BPoint WindowCorner() const { return fCorner; } + void SetWindowCorner(BPoint corner); + +private: + static const char kTimeSettingsFile[]; + BPoint fCorner; + +}; + +#endif \ No newline at end of file diff --git a/src/prefs/keyboard/TimeView.cpp b/src/prefs/keyboard/TimeView.cpp new file mode 100644 index 0000000000..8cb8d72e42 --- /dev/null +++ b/src/prefs/keyboard/TimeView.cpp @@ -0,0 +1,25 @@ +/* + + TimeView.cpp + +*/ +#include + +#include "TimeView.h" +#include "TimeMessages.h" + +TimeView::TimeView(BRect rect) + : BBox(rect, "time_view", + B_FOLLOW_ALL, B_WILL_DRAW | B_FRAME_EVENTS | B_NAVIGABLE_JUMP, + B_PLAIN_BORDER) +{ + + SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + +} + +void TimeView::Draw(BRect updateFrame) +{ + inherited::Draw(updateFrame); + +} \ No newline at end of file diff --git a/src/prefs/keyboard/TimeView.h b/src/prefs/keyboard/TimeView.h new file mode 100644 index 0000000000..9ca86d85e0 --- /dev/null +++ b/src/prefs/keyboard/TimeView.h @@ -0,0 +1,25 @@ +/* + + TimeView.h + +*/ + +#ifndef TIME_VIEW_H +#define TIME_VIEW_H + + +#include + +class TimeView : public BBox +{ +public: + typedef BBox inherited; + + TimeView(BRect frame); + virtual void Draw(BRect frame); + +private: + ; +}; + +#endif diff --git a/src/prefs/keyboard/TimeWindow.cpp b/src/prefs/keyboard/TimeWindow.cpp new file mode 100644 index 0000000000..87482e6c98 --- /dev/null +++ b/src/prefs/keyboard/TimeWindow.cpp @@ -0,0 +1,70 @@ +/* + * TimeWindow.cpp + * Time mccall@digitalparadise.co.uk + * + */ + +#include +#include +#include + +#include "TimeMessages.h" +#include "TimeWindow.h" +#include "TimeView.h" +#include "Time.h" + +#define TIME_WINDOW_RIGHT 332 +#define TIME_WINDOW_BOTTTOM 208 + +TimeWindow::TimeWindow() + : BWindow(BRect(0,0,TIME_WINDOW_RIGHT,TIME_WINDOW_BOTTTOM), "Time & Date", B_TITLED_WINDOW, B_NOT_RESIZABLE | B_NOT_ZOOMABLE ) +{ + BScreen screen; + BSlider *slider=NULL; + + MoveTo(dynamic_cast(be_app)->WindowCorner()); + + // Code to make sure that the window doesn't get drawn off screen... + if (!(screen.Frame().right >= Frame().right && screen.Frame().bottom >= Frame().bottom)) + MoveTo((screen.Frame().right-Bounds().right)*.5,(screen.Frame().bottom-Bounds().bottom)*.5); + + BuildView(); + AddChild(fView); + + Show(); + +} + +void +TimeWindow::BuildView() +{ + fView = new TimeView(Bounds()); +} + +bool +TimeWindow::QuitRequested() +{ + + dynamic_cast(be_app)->SetWindowCorner(BPoint(Frame().left,Frame().top)); + + be_app->PostMessage(B_QUIT_REQUESTED); + + return(true); +} + +void +TimeWindow::MessageReceived(BMessage *message) +{ + + switch(message->what) { + default: + BWindow::MessageReceived(message); + break; + } + +} + +TimeWindow::~TimeWindow() +{ + +} \ No newline at end of file diff --git a/src/prefs/keyboard/TimeWindow.h b/src/prefs/keyboard/TimeWindow.h new file mode 100644 index 0000000000..f615d417d7 --- /dev/null +++ b/src/prefs/keyboard/TimeWindow.h @@ -0,0 +1,24 @@ +#ifndef TIME_WINDOW_H +#define TIME_WINDOW_H + +#include + +#include "TimeSettings.h" +#include "TimeView.h" + +class TimeWindow : public BWindow +{ +public: + TimeWindow(); + ~TimeWindow(); + + bool QuitRequested(); + void MessageReceived(BMessage *message); + void BuildView(); + +private: + TimeView *fView; + +}; + +#endif