1 | //␊ |
2 | // EfiInject.mm␊ |
3 | // ChameleonPrefPane␊ |
4 | //␊ |
5 | // Created by Rekursor on 1/26/10.␊ |
6 | //␊ |
7 | ␊ |
8 | #import "SmbiosController.h"␊ |
9 | #import <ApplicationServices/ApplicationServices.h>␊ |
10 | #import "SmbiosExtractor.h"␊ |
11 | #import "PreferencesControllerBase.h"␊ |
12 | static SmbiosController *gInstance = NULL;␊ |
13 | ␊ |
14 | @implementation SmbiosController␊ |
15 | //--------------------------------------------------------------------------␊ |
16 | - (id) init␊ |
17 | {␊ |
18 | ␉self = [super init];␊ |
19 | ␉return (gInstance = self);␊ |
20 | }␉␊ |
21 | ␊ |
22 | //--------------------------------------------------------------------------␊ |
23 | - (void) addOptionsDesc␊ |
24 | {␊ |
25 | ␉// Add future smbios options here␊ |
26 | ␉// BootProp::instance().addOptionDesc(mEfiInject, mEfiInjectText, OptionString, "device-properties", "");␊ |
27 | }␊ |
28 | ␊ |
29 | //--------------------------------------------------------------------------␊ |
30 | -(void) setDefaultsValues: (NSMutableDictionary*) dict␊ |
31 | {␊ |
32 | }␊ |
33 | ␊ |
34 | //--------------------------------------------------------------------------␊ |
35 | - (void) refreshLockStates␊ |
36 | {␊ |
37 | ␉[PreferencesControllerBase refreshLockState: mEditSmbios];␊ |
38 | // [PreferencesControllerBase refreshLockState: mExtractACPITables ];␊ |
39 | }␊ |
40 | ␊ |
41 | //--------------------------------------------------------------------------␊ |
42 | -(void) loadOptionsFromPreferencesFile: (NSMutableDictionary*) dict␊ |
43 | {␊ |
44 | ␉␊ |
45 | }␊ |
46 | - (const char *) getSmbiosFilePath␊ |
47 | {␊ |
48 | ␉static std::string path;␊ |
49 | ␉path = BootProp::instance().propFilePath();␊ |
50 | ␉if (fileExists(path.c_str()))␊ |
51 | ␉{␊ |
52 | ␉␉path = string_dir_from(path) + "smbios.plist";␊ |
53 | ␉␉if (fileExists(path.c_str()))␊ |
54 | ␉␉␉return path.c_str();␊ |
55 | ␉}␊ |
56 | ␊ |
57 | ␉if (fileExists("/Extra/smbios.plist"))␊ |
58 | ␉␉return "/Extra/smbios.plist";␊ |
59 | ␉else if (fileExists("/smbios.plist"))␊ |
60 | ␉␉return "/smbios.plist";␊ |
61 | ␉␊ |
62 | ␉return ""; //not found␊ |
63 | }␊ |
64 | ␊ |
65 | - (const char *) getAppleSmbiosFilePath␊ |
66 | {␊ |
67 | ␉SmbiosExtractor* smbe = [[[SmbiosExtractor alloc] init] autorelease];␊ |
68 | ␉NSString* path = [NSString stringWithFormat:@"%@/%@", [kChameleonUserRootDir stringByExpandingTildeInPath],kAppleSmbiosFileName];␊ |
69 | ␉[smbe save:path ];␊ |
70 | ␉return [path UTF8String];␊ |
71 | }␊ |
72 | ␊ |
73 | //--------------------------------------------------------------------------␊ |
74 | -(IBAction) onCheckButtonChange: (NSButton*) sender␊ |
75 | {␊ |
76 | ␉if(sender == mEditSmbios)␊ |
77 | ␉{␊ |
78 | ␉␉std::string smbiosPath = [self getSmbiosFilePath ];␊ |
79 | ␉␉AuthorizationRef auth = [[self chameleon] auth ];␊ |
80 | ␉␉if (smbiosPath.length()==0 || auth==nil) return;␊ |
81 | ␉␉␊ |
82 | ␉␉std::string cmd = "/usr/bin/open \"" + smbiosPath +"\"";␊ |
83 | ␉␉system(cmd.c_str());␊ |
84 | ␉␉␊ |
85 | ␉}␊ |
86 | ␉else if(sender == mAppleSmbios)␊ |
87 | ␉{␊ |
88 | ␉␉std::string smbiosPath = [self getAppleSmbiosFilePath ];␊ |
89 | ␉␉if (smbiosPath.length()==0) return;␊ |
90 | ␉␉std::string cmd = "/usr/bin/open " + smbiosPath;␊ |
91 | ␉␉system(cmd.c_str());␊ |
92 | ␉␉␊ |
93 | ␉}␊ |
94 | ␉else if(sender == mExtractACPITables)␊ |
95 | ␉{␊ |
96 | ␉␉std::string cmd = "/bin/bash ";␊ |
97 | ␉␉␊ |
98 | ␉␉std::string path = [[self getResourcePath:@"extractAcpi" ofType:@"sh"] UTF8String];␊ |
99 | ␉␉cmd += path;␊ |
100 | //␉␉[self executeTaskAndWaitForTermination: [[NSString alloc] initWithUTF8String:path.c_str()] ];␊ |
101 | ␉␉cmd += " && /usr/bin/open ${HOME}/Desktop/Chameleon/ACPI";␊ |
102 | ␉␉system(cmd.c_str());␊ |
103 | ␉}␊ |
104 | ␉else␊ |
105 | ␉␉[self handleSender: sender];␊ |
106 | }␊ |
107 | ␊ |
108 | //--------------------------------------------------------------------------␊ |
109 | -(IBAction) onTextFiedChange: (NSTextField*) sender␊ |
110 | {␊ |
111 | ␉[self handleSender: sender];␊ |
112 | }␊ |
113 | ␊ |
114 | + (SmbiosController *)instance { return(gInstance);}␊ |
115 | ␊ |
116 | @end␊ |
117 | |