1/*
2** Copyright 2004-2006, the Haiku project. All rights reserved.
3** Distributed under the terms of the MIT License.
4**
5** Authors in chronological order:
6**  mccall@digitalparadise.co.uk
7**  J��r��me Duval
8**  Marcus Overhagen
9*/
10
11#include <FindDirectory.h>
12#include <File.h>
13#include <Path.h>
14#include "KeyboardSettings.h"
15
16KeyboardSettings::KeyboardSettings()
17{
18	BPath path;
19	BFile file;
20
21	if (find_directory(B_USER_SETTINGS_DIRECTORY, &path) < B_OK)
22		goto err;
23	if (path.Append(kb_settings_file) < B_OK)
24		goto err;
25	if (file.SetTo(path.Path(), B_READ_ONLY) < B_OK)
26		goto err;
27	if (file.Read(&fSettings, sizeof(kb_settings)) != sizeof(kb_settings))
28		goto err;
29
30	return;
31err:
32	fSettings.key_repeat_delay = kb_default_key_repeat_delay;
33	fSettings.key_repeat_rate  = kb_default_key_repeat_rate;
34}
35
36
37KeyboardSettings::~KeyboardSettings()
38{
39}
40
41
42void
43KeyboardSettings::SetKeyboardRepeatRate(int32 rate)
44{
45	fSettings.key_repeat_rate = rate;
46	Save();
47}
48
49
50void
51KeyboardSettings::SetKeyboardRepeatDelay(bigtime_t delay)
52{
53	fSettings.key_repeat_delay = delay;
54	Save();
55}
56
57
58void
59KeyboardSettings::Save()
60{
61	BPath path;
62	BFile file;
63
64	if (find_directory(B_USER_SETTINGS_DIRECTORY, &path) < B_OK)
65		return;
66	if (path.Append(kb_settings_file) < B_OK)
67		return;
68	if (file.SetTo(path.Path(), B_WRITE_ONLY | B_CREATE_FILE) < B_OK)
69		return;
70
71	file.Write(&fSettings, sizeof(kb_settings));
72}
73