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