xref: /haiku/src/apps/haikudepot/ui_generic/support.cpp (revision cbe0a0c436162d78cc3f92a305b64918c839d079)
1 /*
2  * Copyright 2006, 2011, 2013 Stephan Aßmus <superstippi@gmx.de>
3  * All rights reserved. Distributed under the terms of the MIT License.
4  */
5 
6 #include "support.h"
7 
8 #include <algorithm>
9 #include <stdio.h>
10 #include <string.h>
11 
12 #include <Application.h>
13 #include <Directory.h>
14 #include <File.h>
15 #include <FindDirectory.h>
16 #include <Font.h>
17 #include <Path.h>
18 #include <Resources.h>
19 #include <Roster.h>
20 #include <Screen.h>
21 #include <View.h>
22 
23 
24 status_t
25 load_settings(BMessage* message, const char* fileName, const char* folder)
26 {
27 	if (message == NULL || fileName == NULL || fileName[0] == '\0')
28 		return B_BAD_VALUE;
29 
30 	BPath path;
31 	status_t ret = find_directory(B_USER_SETTINGS_DIRECTORY, &path);
32 	if (ret != B_OK)
33 		return ret;
34 
35 	// passing folder is optional
36 	if (folder != NULL)
37 		ret = path.Append(folder);
38 
39 	if (ret == B_OK && (ret = path.Append(fileName)) == B_OK ) {
40 		BFile file(path.Path(), B_READ_ONLY);
41 		ret = file.InitCheck();
42 		if (ret == B_OK)
43 			ret = message->Unflatten(&file);
44 	}
45 
46 	return ret;
47 }
48 
49 
50 status_t
51 save_settings(const BMessage* message, const char* fileName, const char* folder)
52 {
53 	if (message == NULL || fileName == NULL || fileName[0] == '\0')
54 		return B_BAD_VALUE;
55 
56 	BPath path;
57 	status_t ret = find_directory(B_USER_SETTINGS_DIRECTORY, &path);
58 	if (ret != B_OK)
59 		return ret;
60 
61 	// passing folder is optional
62 	if (folder != NULL)
63 		ret = path.Append(folder);
64 
65 	if (ret == B_OK)
66 		ret = create_directory(path.Path(), 0777);
67 
68 	if (ret == B_OK)
69 		ret = path.Append(fileName);
70 
71 	if (ret == B_OK) {
72 		BFile file(path.Path(), B_WRITE_ONLY | B_CREATE_FILE | B_ERASE_FILE);
73 		ret = file.InitCheck();
74 		if (ret == B_OK)
75 			ret = message->Flatten(&file);
76 	}
77 
78 	return ret;
79 }
80 
81 
82 status_t
83 get_app_resources(BResources& resources)
84 {
85 	app_info info;
86 	status_t status = be_app->GetAppInfo(&info);
87 	if (status != B_OK)
88 		return status;
89 
90 	return resources.SetTo(&info.ref);
91 }
92 
93 
94 void
95 set_small_font(BView* view)
96 {
97 	BFont font;
98 	view->GetFont(&font);
99 	font.SetSize(ceilf(font.Size() * 0.8));
100 	view->SetFont(&font);
101 }
102 
103 
104 
105 
106