Chameleon Applications

Chameleon Applications Svn Source Tree

Root/trunk/ChameleonPrefPane/Sources/SmbiosController.mm

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"
12static SmbiosController *gInstance = NULL;
13
14@implementation SmbiosController
15//--------------------------------------------------------------------------
16- (id) init
17{
18self = [super init];
19return (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{
48static std::string path;
49path = BootProp::instance().propFilePath();
50if (fileExists(path.c_str()))
51return path.c_str();
52if (fileExists("/Extra/smbios.plist"))
53return "/Extra/smbios.plist";
54else if (fileExists("/smbios.plist"))
55return "/smbios.plist";
56
57return ""; //not found
58}
59
60- (const char *) getAppleSmbiosFilePath
61{
62SmbiosExtractor* smbe = [[[SmbiosExtractor alloc] init] autorelease];
63NSString* path = [NSString stringWithFormat:@"%@/%@", [kChameleonUserRootDir stringByExpandingTildeInPath],kAppleSmbiosFileName];
64[smbe save:path ];
65return [path UTF8String];
66}
67
68//--------------------------------------------------------------------------
69-(IBAction) onCheckButtonChange: (NSButton*) sender
70{
71if(sender == mEditSmbios)
72{
73std::string smbiosPath = [self getSmbiosFilePath ];
74AuthorizationRef auth = [[self chameleon] auth ];
75if (smbiosPath.length()==0 || auth==nil) return;
76
77std::string cmd = "/usr/bin/open \"" + smbiosPath +"\"";
78system(cmd.c_str());
79
80}
81else if(sender == mAppleSmbios)
82{
83std::string smbiosPath = [self getAppleSmbiosFilePath ];
84if (smbiosPath.length()==0) return;
85std::string cmd = "/usr/bin/open " + smbiosPath;
86system(cmd.c_str());
87
88}
89else if(sender == mExtractACPITables)
90{
91std::string cmd = "/bin/bash ";
92
93std::string path = [[self getResourcePath:@"extractAcpi" ofType:@"sh"] UTF8String];
94cmd += path;
95//[self executeTaskAndWaitForTermination: [[NSString alloc] initWithUTF8String:path.c_str()] ];
96cmd += " && /usr/bin/open ${HOME}/Desktop/Chameleon/ACPI";
97system(cmd.c_str());
98}
99else
100[self handleSender: sender];
101}
102
103//--------------------------------------------------------------------------
104-(IBAction) onTextFiedChange: (NSTextField*) sender
105{
106[self handleSender: sender];
107}
108
109+ (SmbiosController *)instance { return(gInstance);}
110
111@end
112

Archive Download this file

Revision: 436