зеркало из https://github.com/mozilla/pjs.git
Fixing bug 154203 -- implement a checkbox to use the system home page preference (Internet Config), but keep this preference separate from mozilla's home page pref.
This commit is contained in:
Родитель
a54925283f
Коммит
d87d58ada0
|
@ -91,7 +91,7 @@ app_getModuleInfo(nsStaticModuleInfo **info, PRUint32 *count);
|
|||
- (BOOL) initInternetConfig
|
||||
{
|
||||
OSStatus error;
|
||||
error = ICStart (&internetConfig, '????');
|
||||
error = ICStart (&internetConfig, 'CHIM');
|
||||
if (error != noErr) {
|
||||
// XXX throw here?
|
||||
NSLog(@"Error initializing IC.\n");
|
||||
|
@ -150,7 +150,6 @@ app_getModuleInfo(nsStaticModuleInfo **info, PRUint32 *count);
|
|||
rv = profileService->SetCurrentProfile(newProfileName.get());
|
||||
if (NS_FAILED(rv)) {
|
||||
if (rv == NS_ERROR_FILE_ACCESS_DENIED) {
|
||||
//horrible, horrible, bad, fixed strings. need localization string file.
|
||||
NSString *alert = NSLocalizedString(@"AlreadyRunningAlert",@"");
|
||||
NSString *message = NSLocalizedString(@"AlreadyRunningMsg",@"");
|
||||
NSString *quit = NSLocalizedString(@"AlreadyRunningButton",@"");
|
||||
|
@ -172,7 +171,6 @@ app_getModuleInfo(nsStaticModuleInfo **info, PRUint32 *count);
|
|||
CFStringRef cfString;
|
||||
char strbuf[1024];
|
||||
int numbuf;
|
||||
NSString *string;
|
||||
|
||||
nsCOMPtr<nsIPref> prefs(do_GetService(NS_PREF_CONTRACTID));
|
||||
if (!prefs) {
|
||||
|
@ -194,12 +192,6 @@ app_getModuleInfo(nsStaticModuleInfo **info, PRUint32 *count);
|
|||
prefs->SetIntPref(kCookieBehaviorPref, acceptCookies);
|
||||
}
|
||||
|
||||
// get home page from Internet Config
|
||||
string = [self getICStringPref:kICWWWHomePage];
|
||||
if (string) {
|
||||
prefs->SetCharPref("browser.startup.homepage", [string cString]);
|
||||
}
|
||||
|
||||
// get proxies from SystemConfiguration
|
||||
prefs->SetIntPref("network.proxy.type", 0); // 0 == no proxies
|
||||
prefs->ClearUserPref("network.proxy.http");
|
||||
|
@ -302,6 +294,25 @@ app_getModuleInfo(nsStaticModuleInfo **info, PRUint32 *count);
|
|||
}
|
||||
}
|
||||
|
||||
// convenience routines for mozilla prefs
|
||||
- (NSString*)getMozillaPrefString: (const char*)prefName
|
||||
{
|
||||
NSMutableString *prefValue = [[[NSMutableString alloc] init] autorelease];
|
||||
|
||||
nsCOMPtr<nsIPref> prefs(do_GetService(NS_PREF_CONTRACTID));
|
||||
if (prefs) {
|
||||
char *buf = nsnull;
|
||||
nsresult rv = prefs->GetCharPref(prefName, &buf);
|
||||
if (NS_SUCCEEDED(rv) && buf) {
|
||||
[prefValue setString:[NSString stringWithCString:buf]];
|
||||
free(buf);
|
||||
}
|
||||
}
|
||||
|
||||
return prefValue;
|
||||
}
|
||||
|
||||
|
||||
//- (BOOL) getICBoolPref:(ConstStr255Param) prefKey;
|
||||
//{
|
||||
// ICAttr dummy;
|
||||
|
@ -355,7 +366,6 @@ app_getModuleInfo(nsStaticModuleInfo **info, PRUint32 *count);
|
|||
if (!prefs)
|
||||
return @"about:blank";
|
||||
|
||||
NSString *url = nil;
|
||||
PRInt32 mode = 1;
|
||||
|
||||
// In some cases, we need to check browser.startup.page to see if
|
||||
|
@ -367,16 +377,16 @@ app_getModuleInfo(nsStaticModuleInfo **info, PRUint32 *count);
|
|||
if ( checkStartupPagePref )
|
||||
rv = prefs->GetIntPref("browser.startup.page", &mode);
|
||||
if (NS_FAILED(rv) || mode == 1) {
|
||||
char *buf = nsnull;
|
||||
prefs->GetCharPref("browser.startup.homepage", &buf);
|
||||
if (buf && *buf)
|
||||
url = [NSString stringWithCString:buf];
|
||||
else
|
||||
url = @"about:blank";
|
||||
free (buf);
|
||||
return url;
|
||||
// see which home page to use
|
||||
PRBool boolPref;
|
||||
if (NS_SUCCEEDED(prefs->GetBoolPref("chimera.use_system_home_page", &boolPref)) && boolPref)
|
||||
return [self getICStringPref:kICWWWHomePage];
|
||||
|
||||
NSString* homepagePref = [self getMozillaPrefString:"browser.startup.homepage"];
|
||||
if ([homepagePref length] > 0)
|
||||
return homepagePref;
|
||||
}
|
||||
else
|
||||
|
||||
return @"about:blank";
|
||||
}
|
||||
|
||||
|
|
|
@ -1676,6 +1676,7 @@
|
|||
F52627DC027E9CCD01000102,
|
||||
F52627DD027E9CCD01000102,
|
||||
F52627DE027EA5BE01000102,
|
||||
F5421B0802CFEAB4011C94A4,
|
||||
);
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
name = "Frameworks & Libraries";
|
||||
|
@ -2515,6 +2516,12 @@
|
|||
settings = {
|
||||
};
|
||||
};
|
||||
F5421B0802CFEAB4011C94A4 = {
|
||||
fileRef = F52D5CDB027D412A01A80166;
|
||||
isa = PBXBuildFile;
|
||||
settings = {
|
||||
};
|
||||
};
|
||||
F54AD84402C115D901A967F3 = {
|
||||
isa = PBXFileReference;
|
||||
name = liboji.a;
|
||||
|
|
|
@ -47,4 +47,9 @@ class nsIPref;
|
|||
- (IBAction)historyDaysModified:(id)sender;
|
||||
- (IBAction)clearGlobalHistory:(id)sender;
|
||||
|
||||
- (NSString*)getSystemHomePage;
|
||||
- (NSString*)getCurrentHomePage;
|
||||
|
||||
- (NSString*)getPrefString: (const char*)prefName;
|
||||
- (void)setPref: (const char*)prefName toString:(NSString*)value;
|
||||
@end
|
||||
|
|
|
@ -21,7 +21,10 @@
|
|||
* william@dell.wisner.name (William Dell Wisner)
|
||||
*/
|
||||
|
||||
#import <Carbon/Carbon.h>
|
||||
|
||||
#import "Navigation.h"
|
||||
|
||||
#include "nsIServiceManager.h"
|
||||
#include "nsIPrefBranch.h"
|
||||
#include "nsIPref.h"
|
||||
|
@ -75,13 +78,26 @@ const int kDefaultExpireDays = 9;
|
|||
if (NS_SUCCEEDED(rv) && boolPref == PR_TRUE)
|
||||
[checkboxOpenTabs setState:YES];
|
||||
|
||||
char *buf = nsnull;
|
||||
rv = mPrefService->GetCharPref("browser.startup.homepage", &buf);
|
||||
if (NS_SUCCEEDED(rv) && buf)
|
||||
{
|
||||
[textFieldHomePage setStringValue:[NSString stringWithCString:buf]];
|
||||
free(buf);
|
||||
}
|
||||
BOOL useSystemHomePage = NO;
|
||||
rv = mPrefService->GetBoolPref("chimera.use_system_home_page", &boolPref);
|
||||
if (NS_SUCCEEDED(rv) && boolPref == PR_TRUE)
|
||||
useSystemHomePage = YES;
|
||||
|
||||
if (useSystemHomePage)
|
||||
[textFieldHomePage setEnabled:NO];
|
||||
|
||||
[checkboxUseSystemHomePage setState:useSystemHomePage];
|
||||
[textFieldHomePage setStringValue: [self getCurrentHomePage]];
|
||||
}
|
||||
|
||||
- (void) didUnselect
|
||||
{
|
||||
if (!mPrefService)
|
||||
return;
|
||||
|
||||
// only save the home page pref if it's not the system one
|
||||
if (![checkboxUseSystemHomePage state])
|
||||
[self setPref: "browser.startup.homepage" toString: [textFieldHomePage stringValue]];
|
||||
|
||||
}
|
||||
|
||||
|
@ -103,7 +119,19 @@ const int kDefaultExpireDays = 9;
|
|||
|
||||
- (IBAction)checkboxUseSystemHomePageClicked:(id)sender
|
||||
{
|
||||
NSLog(@"Homepage clicked");
|
||||
if (!mPrefService)
|
||||
return;
|
||||
|
||||
BOOL useSystemHomePage = [sender state];
|
||||
|
||||
// save the mozilla pref
|
||||
if (useSystemHomePage)
|
||||
[self setPref: "browser.startup.homepage" toString: [textFieldHomePage stringValue]];
|
||||
|
||||
mPrefService->SetBoolPref("chimera.use_system_home_page", useSystemHomePage ? PR_TRUE : PR_FALSE);
|
||||
|
||||
[textFieldHomePage setStringValue: [self getCurrentHomePage]];
|
||||
[textFieldHomePage setEnabled:!useSystemHomePage];
|
||||
}
|
||||
|
||||
- (IBAction)checkboxStartPageClicked:(id)sender
|
||||
|
@ -158,4 +186,67 @@ const int kDefaultExpireDays = 9;
|
|||
hist->RemoveAllPages();
|
||||
}
|
||||
|
||||
- (NSString*) getSystemHomePage
|
||||
{
|
||||
NSMutableString* homePageString = [[[NSMutableString alloc] init] autorelease];
|
||||
|
||||
ICInstance icInstance = NULL;
|
||||
OSStatus error;
|
||||
|
||||
// it would be nice to use CHPreferenceManager, but I don't want to drag
|
||||
// all that code into the plugin
|
||||
error = ICStart(&icInstance, 'CHIM');
|
||||
if (error != noErr) {
|
||||
NSLog(@"Error from ICStart");
|
||||
return @"";
|
||||
}
|
||||
|
||||
ICAttr dummyAttr;
|
||||
Str255 homePagePStr;
|
||||
long prefSize = sizeof(homePagePStr);
|
||||
error = ICGetPref(icInstance, kICWWWHomePage, &dummyAttr, homePagePStr, &prefSize);
|
||||
if (error == noErr)
|
||||
[homePageString setString: [NSString stringWithCString: (const char*)&homePagePStr[1] length:homePagePStr[0]]];
|
||||
else
|
||||
NSLog(@"Error getting home page from Internet Config");
|
||||
|
||||
ICStop(icInstance);
|
||||
|
||||
return homePageString;
|
||||
}
|
||||
|
||||
- (NSString*) getCurrentHomePage
|
||||
{
|
||||
BOOL useSystemHomePage = NO;
|
||||
PRBool boolPref;
|
||||
nsresult rv = mPrefService->GetBoolPref("chimera.use_system_home_page", &boolPref);
|
||||
if (NS_SUCCEEDED(rv) && boolPref == PR_TRUE)
|
||||
return [self getSystemHomePage];
|
||||
|
||||
return [self getPrefString: "browser.startup.homepage"];
|
||||
}
|
||||
|
||||
// convenience routines for mozilla prefs
|
||||
- (NSString*)getPrefString: (const char*)prefName
|
||||
{
|
||||
NSMutableString *prefValue = [[[NSMutableString alloc] init] autorelease];
|
||||
|
||||
char *buf = nsnull;
|
||||
nsresult rv = mPrefService->GetCharPref(prefName, &buf);
|
||||
if (NS_SUCCEEDED(rv) && buf) {
|
||||
[prefValue setString:[NSString stringWithCString:buf]];
|
||||
free(buf);
|
||||
}
|
||||
|
||||
return prefValue;
|
||||
}
|
||||
|
||||
- (void)setPref: (const char*)prefName toString:(NSString*)value
|
||||
{
|
||||
if (mPrefService) {
|
||||
mPrefService->SetCharPref(prefName, [value cString]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@end
|
||||
|
|
|
@ -1676,6 +1676,7 @@
|
|||
F52627DC027E9CCD01000102,
|
||||
F52627DD027E9CCD01000102,
|
||||
F52627DE027EA5BE01000102,
|
||||
F5421B0802CFEAB4011C94A4,
|
||||
);
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
name = "Frameworks & Libraries";
|
||||
|
@ -2515,6 +2516,12 @@
|
|||
settings = {
|
||||
};
|
||||
};
|
||||
F5421B0802CFEAB4011C94A4 = {
|
||||
fileRef = F52D5CDB027D412A01A80166;
|
||||
isa = PBXBuildFile;
|
||||
settings = {
|
||||
};
|
||||
};
|
||||
F54AD84402C115D901A967F3 = {
|
||||
isa = PBXFileReference;
|
||||
name = liboji.a;
|
||||
|
|
|
@ -91,7 +91,7 @@ app_getModuleInfo(nsStaticModuleInfo **info, PRUint32 *count);
|
|||
- (BOOL) initInternetConfig
|
||||
{
|
||||
OSStatus error;
|
||||
error = ICStart (&internetConfig, '????');
|
||||
error = ICStart (&internetConfig, 'CHIM');
|
||||
if (error != noErr) {
|
||||
// XXX throw here?
|
||||
NSLog(@"Error initializing IC.\n");
|
||||
|
@ -150,7 +150,6 @@ app_getModuleInfo(nsStaticModuleInfo **info, PRUint32 *count);
|
|||
rv = profileService->SetCurrentProfile(newProfileName.get());
|
||||
if (NS_FAILED(rv)) {
|
||||
if (rv == NS_ERROR_FILE_ACCESS_DENIED) {
|
||||
//horrible, horrible, bad, fixed strings. need localization string file.
|
||||
NSString *alert = NSLocalizedString(@"AlreadyRunningAlert",@"");
|
||||
NSString *message = NSLocalizedString(@"AlreadyRunningMsg",@"");
|
||||
NSString *quit = NSLocalizedString(@"AlreadyRunningButton",@"");
|
||||
|
@ -172,7 +171,6 @@ app_getModuleInfo(nsStaticModuleInfo **info, PRUint32 *count);
|
|||
CFStringRef cfString;
|
||||
char strbuf[1024];
|
||||
int numbuf;
|
||||
NSString *string;
|
||||
|
||||
nsCOMPtr<nsIPref> prefs(do_GetService(NS_PREF_CONTRACTID));
|
||||
if (!prefs) {
|
||||
|
@ -194,12 +192,6 @@ app_getModuleInfo(nsStaticModuleInfo **info, PRUint32 *count);
|
|||
prefs->SetIntPref(kCookieBehaviorPref, acceptCookies);
|
||||
}
|
||||
|
||||
// get home page from Internet Config
|
||||
string = [self getICStringPref:kICWWWHomePage];
|
||||
if (string) {
|
||||
prefs->SetCharPref("browser.startup.homepage", [string cString]);
|
||||
}
|
||||
|
||||
// get proxies from SystemConfiguration
|
||||
prefs->SetIntPref("network.proxy.type", 0); // 0 == no proxies
|
||||
prefs->ClearUserPref("network.proxy.http");
|
||||
|
@ -302,6 +294,25 @@ app_getModuleInfo(nsStaticModuleInfo **info, PRUint32 *count);
|
|||
}
|
||||
}
|
||||
|
||||
// convenience routines for mozilla prefs
|
||||
- (NSString*)getMozillaPrefString: (const char*)prefName
|
||||
{
|
||||
NSMutableString *prefValue = [[[NSMutableString alloc] init] autorelease];
|
||||
|
||||
nsCOMPtr<nsIPref> prefs(do_GetService(NS_PREF_CONTRACTID));
|
||||
if (prefs) {
|
||||
char *buf = nsnull;
|
||||
nsresult rv = prefs->GetCharPref(prefName, &buf);
|
||||
if (NS_SUCCEEDED(rv) && buf) {
|
||||
[prefValue setString:[NSString stringWithCString:buf]];
|
||||
free(buf);
|
||||
}
|
||||
}
|
||||
|
||||
return prefValue;
|
||||
}
|
||||
|
||||
|
||||
//- (BOOL) getICBoolPref:(ConstStr255Param) prefKey;
|
||||
//{
|
||||
// ICAttr dummy;
|
||||
|
@ -355,7 +366,6 @@ app_getModuleInfo(nsStaticModuleInfo **info, PRUint32 *count);
|
|||
if (!prefs)
|
||||
return @"about:blank";
|
||||
|
||||
NSString *url = nil;
|
||||
PRInt32 mode = 1;
|
||||
|
||||
// In some cases, we need to check browser.startup.page to see if
|
||||
|
@ -367,16 +377,16 @@ app_getModuleInfo(nsStaticModuleInfo **info, PRUint32 *count);
|
|||
if ( checkStartupPagePref )
|
||||
rv = prefs->GetIntPref("browser.startup.page", &mode);
|
||||
if (NS_FAILED(rv) || mode == 1) {
|
||||
char *buf = nsnull;
|
||||
prefs->GetCharPref("browser.startup.homepage", &buf);
|
||||
if (buf && *buf)
|
||||
url = [NSString stringWithCString:buf];
|
||||
else
|
||||
url = @"about:blank";
|
||||
free (buf);
|
||||
return url;
|
||||
// see which home page to use
|
||||
PRBool boolPref;
|
||||
if (NS_SUCCEEDED(prefs->GetBoolPref("chimera.use_system_home_page", &boolPref)) && boolPref)
|
||||
return [self getICStringPref:kICWWWHomePage];
|
||||
|
||||
NSString* homepagePref = [self getMozillaPrefString:"browser.startup.homepage"];
|
||||
if ([homepagePref length] > 0)
|
||||
return homepagePref;
|
||||
}
|
||||
else
|
||||
|
||||
return @"about:blank";
|
||||
}
|
||||
|
||||
|
|
|
@ -91,7 +91,7 @@ app_getModuleInfo(nsStaticModuleInfo **info, PRUint32 *count);
|
|||
- (BOOL) initInternetConfig
|
||||
{
|
||||
OSStatus error;
|
||||
error = ICStart (&internetConfig, '????');
|
||||
error = ICStart (&internetConfig, 'CHIM');
|
||||
if (error != noErr) {
|
||||
// XXX throw here?
|
||||
NSLog(@"Error initializing IC.\n");
|
||||
|
@ -150,7 +150,6 @@ app_getModuleInfo(nsStaticModuleInfo **info, PRUint32 *count);
|
|||
rv = profileService->SetCurrentProfile(newProfileName.get());
|
||||
if (NS_FAILED(rv)) {
|
||||
if (rv == NS_ERROR_FILE_ACCESS_DENIED) {
|
||||
//horrible, horrible, bad, fixed strings. need localization string file.
|
||||
NSString *alert = NSLocalizedString(@"AlreadyRunningAlert",@"");
|
||||
NSString *message = NSLocalizedString(@"AlreadyRunningMsg",@"");
|
||||
NSString *quit = NSLocalizedString(@"AlreadyRunningButton",@"");
|
||||
|
@ -172,7 +171,6 @@ app_getModuleInfo(nsStaticModuleInfo **info, PRUint32 *count);
|
|||
CFStringRef cfString;
|
||||
char strbuf[1024];
|
||||
int numbuf;
|
||||
NSString *string;
|
||||
|
||||
nsCOMPtr<nsIPref> prefs(do_GetService(NS_PREF_CONTRACTID));
|
||||
if (!prefs) {
|
||||
|
@ -194,12 +192,6 @@ app_getModuleInfo(nsStaticModuleInfo **info, PRUint32 *count);
|
|||
prefs->SetIntPref(kCookieBehaviorPref, acceptCookies);
|
||||
}
|
||||
|
||||
// get home page from Internet Config
|
||||
string = [self getICStringPref:kICWWWHomePage];
|
||||
if (string) {
|
||||
prefs->SetCharPref("browser.startup.homepage", [string cString]);
|
||||
}
|
||||
|
||||
// get proxies from SystemConfiguration
|
||||
prefs->SetIntPref("network.proxy.type", 0); // 0 == no proxies
|
||||
prefs->ClearUserPref("network.proxy.http");
|
||||
|
@ -302,6 +294,25 @@ app_getModuleInfo(nsStaticModuleInfo **info, PRUint32 *count);
|
|||
}
|
||||
}
|
||||
|
||||
// convenience routines for mozilla prefs
|
||||
- (NSString*)getMozillaPrefString: (const char*)prefName
|
||||
{
|
||||
NSMutableString *prefValue = [[[NSMutableString alloc] init] autorelease];
|
||||
|
||||
nsCOMPtr<nsIPref> prefs(do_GetService(NS_PREF_CONTRACTID));
|
||||
if (prefs) {
|
||||
char *buf = nsnull;
|
||||
nsresult rv = prefs->GetCharPref(prefName, &buf);
|
||||
if (NS_SUCCEEDED(rv) && buf) {
|
||||
[prefValue setString:[NSString stringWithCString:buf]];
|
||||
free(buf);
|
||||
}
|
||||
}
|
||||
|
||||
return prefValue;
|
||||
}
|
||||
|
||||
|
||||
//- (BOOL) getICBoolPref:(ConstStr255Param) prefKey;
|
||||
//{
|
||||
// ICAttr dummy;
|
||||
|
@ -355,7 +366,6 @@ app_getModuleInfo(nsStaticModuleInfo **info, PRUint32 *count);
|
|||
if (!prefs)
|
||||
return @"about:blank";
|
||||
|
||||
NSString *url = nil;
|
||||
PRInt32 mode = 1;
|
||||
|
||||
// In some cases, we need to check browser.startup.page to see if
|
||||
|
@ -367,16 +377,16 @@ app_getModuleInfo(nsStaticModuleInfo **info, PRUint32 *count);
|
|||
if ( checkStartupPagePref )
|
||||
rv = prefs->GetIntPref("browser.startup.page", &mode);
|
||||
if (NS_FAILED(rv) || mode == 1) {
|
||||
char *buf = nsnull;
|
||||
prefs->GetCharPref("browser.startup.homepage", &buf);
|
||||
if (buf && *buf)
|
||||
url = [NSString stringWithCString:buf];
|
||||
else
|
||||
url = @"about:blank";
|
||||
free (buf);
|
||||
return url;
|
||||
// see which home page to use
|
||||
PRBool boolPref;
|
||||
if (NS_SUCCEEDED(prefs->GetBoolPref("chimera.use_system_home_page", &boolPref)) && boolPref)
|
||||
return [self getICStringPref:kICWWWHomePage];
|
||||
|
||||
NSString* homepagePref = [self getMozillaPrefString:"browser.startup.homepage"];
|
||||
if ([homepagePref length] > 0)
|
||||
return homepagePref;
|
||||
}
|
||||
else
|
||||
|
||||
return @"about:blank";
|
||||
}
|
||||
|
||||
|
|
|
@ -1676,6 +1676,7 @@
|
|||
F52627DC027E9CCD01000102,
|
||||
F52627DD027E9CCD01000102,
|
||||
F52627DE027EA5BE01000102,
|
||||
F5421B0802CFEAB4011C94A4,
|
||||
);
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
name = "Frameworks & Libraries";
|
||||
|
@ -2515,6 +2516,12 @@
|
|||
settings = {
|
||||
};
|
||||
};
|
||||
F5421B0802CFEAB4011C94A4 = {
|
||||
fileRef = F52D5CDB027D412A01A80166;
|
||||
isa = PBXBuildFile;
|
||||
settings = {
|
||||
};
|
||||
};
|
||||
F54AD84402C115D901A967F3 = {
|
||||
isa = PBXFileReference;
|
||||
name = liboji.a;
|
||||
|
|
|
@ -47,4 +47,9 @@ class nsIPref;
|
|||
- (IBAction)historyDaysModified:(id)sender;
|
||||
- (IBAction)clearGlobalHistory:(id)sender;
|
||||
|
||||
- (NSString*)getSystemHomePage;
|
||||
- (NSString*)getCurrentHomePage;
|
||||
|
||||
- (NSString*)getPrefString: (const char*)prefName;
|
||||
- (void)setPref: (const char*)prefName toString:(NSString*)value;
|
||||
@end
|
||||
|
|
|
@ -21,7 +21,10 @@
|
|||
* william@dell.wisner.name (William Dell Wisner)
|
||||
*/
|
||||
|
||||
#import <Carbon/Carbon.h>
|
||||
|
||||
#import "Navigation.h"
|
||||
|
||||
#include "nsIServiceManager.h"
|
||||
#include "nsIPrefBranch.h"
|
||||
#include "nsIPref.h"
|
||||
|
@ -75,13 +78,26 @@ const int kDefaultExpireDays = 9;
|
|||
if (NS_SUCCEEDED(rv) && boolPref == PR_TRUE)
|
||||
[checkboxOpenTabs setState:YES];
|
||||
|
||||
char *buf = nsnull;
|
||||
rv = mPrefService->GetCharPref("browser.startup.homepage", &buf);
|
||||
if (NS_SUCCEEDED(rv) && buf)
|
||||
{
|
||||
[textFieldHomePage setStringValue:[NSString stringWithCString:buf]];
|
||||
free(buf);
|
||||
}
|
||||
BOOL useSystemHomePage = NO;
|
||||
rv = mPrefService->GetBoolPref("chimera.use_system_home_page", &boolPref);
|
||||
if (NS_SUCCEEDED(rv) && boolPref == PR_TRUE)
|
||||
useSystemHomePage = YES;
|
||||
|
||||
if (useSystemHomePage)
|
||||
[textFieldHomePage setEnabled:NO];
|
||||
|
||||
[checkboxUseSystemHomePage setState:useSystemHomePage];
|
||||
[textFieldHomePage setStringValue: [self getCurrentHomePage]];
|
||||
}
|
||||
|
||||
- (void) didUnselect
|
||||
{
|
||||
if (!mPrefService)
|
||||
return;
|
||||
|
||||
// only save the home page pref if it's not the system one
|
||||
if (![checkboxUseSystemHomePage state])
|
||||
[self setPref: "browser.startup.homepage" toString: [textFieldHomePage stringValue]];
|
||||
|
||||
}
|
||||
|
||||
|
@ -103,7 +119,19 @@ const int kDefaultExpireDays = 9;
|
|||
|
||||
- (IBAction)checkboxUseSystemHomePageClicked:(id)sender
|
||||
{
|
||||
NSLog(@"Homepage clicked");
|
||||
if (!mPrefService)
|
||||
return;
|
||||
|
||||
BOOL useSystemHomePage = [sender state];
|
||||
|
||||
// save the mozilla pref
|
||||
if (useSystemHomePage)
|
||||
[self setPref: "browser.startup.homepage" toString: [textFieldHomePage stringValue]];
|
||||
|
||||
mPrefService->SetBoolPref("chimera.use_system_home_page", useSystemHomePage ? PR_TRUE : PR_FALSE);
|
||||
|
||||
[textFieldHomePage setStringValue: [self getCurrentHomePage]];
|
||||
[textFieldHomePage setEnabled:!useSystemHomePage];
|
||||
}
|
||||
|
||||
- (IBAction)checkboxStartPageClicked:(id)sender
|
||||
|
@ -158,4 +186,67 @@ const int kDefaultExpireDays = 9;
|
|||
hist->RemoveAllPages();
|
||||
}
|
||||
|
||||
- (NSString*) getSystemHomePage
|
||||
{
|
||||
NSMutableString* homePageString = [[[NSMutableString alloc] init] autorelease];
|
||||
|
||||
ICInstance icInstance = NULL;
|
||||
OSStatus error;
|
||||
|
||||
// it would be nice to use CHPreferenceManager, but I don't want to drag
|
||||
// all that code into the plugin
|
||||
error = ICStart(&icInstance, 'CHIM');
|
||||
if (error != noErr) {
|
||||
NSLog(@"Error from ICStart");
|
||||
return @"";
|
||||
}
|
||||
|
||||
ICAttr dummyAttr;
|
||||
Str255 homePagePStr;
|
||||
long prefSize = sizeof(homePagePStr);
|
||||
error = ICGetPref(icInstance, kICWWWHomePage, &dummyAttr, homePagePStr, &prefSize);
|
||||
if (error == noErr)
|
||||
[homePageString setString: [NSString stringWithCString: (const char*)&homePagePStr[1] length:homePagePStr[0]]];
|
||||
else
|
||||
NSLog(@"Error getting home page from Internet Config");
|
||||
|
||||
ICStop(icInstance);
|
||||
|
||||
return homePageString;
|
||||
}
|
||||
|
||||
- (NSString*) getCurrentHomePage
|
||||
{
|
||||
BOOL useSystemHomePage = NO;
|
||||
PRBool boolPref;
|
||||
nsresult rv = mPrefService->GetBoolPref("chimera.use_system_home_page", &boolPref);
|
||||
if (NS_SUCCEEDED(rv) && boolPref == PR_TRUE)
|
||||
return [self getSystemHomePage];
|
||||
|
||||
return [self getPrefString: "browser.startup.homepage"];
|
||||
}
|
||||
|
||||
// convenience routines for mozilla prefs
|
||||
- (NSString*)getPrefString: (const char*)prefName
|
||||
{
|
||||
NSMutableString *prefValue = [[[NSMutableString alloc] init] autorelease];
|
||||
|
||||
char *buf = nsnull;
|
||||
nsresult rv = mPrefService->GetCharPref(prefName, &buf);
|
||||
if (NS_SUCCEEDED(rv) && buf) {
|
||||
[prefValue setString:[NSString stringWithCString:buf]];
|
||||
free(buf);
|
||||
}
|
||||
|
||||
return prefValue;
|
||||
}
|
||||
|
||||
- (void)setPref: (const char*)prefName toString:(NSString*)value
|
||||
{
|
||||
if (mPrefService) {
|
||||
mPrefService->SetCharPref(prefName, [value cString]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@end
|
||||
|
|
|
@ -1676,6 +1676,7 @@
|
|||
F52627DC027E9CCD01000102,
|
||||
F52627DD027E9CCD01000102,
|
||||
F52627DE027EA5BE01000102,
|
||||
F5421B0802CFEAB4011C94A4,
|
||||
);
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
name = "Frameworks & Libraries";
|
||||
|
@ -2515,6 +2516,12 @@
|
|||
settings = {
|
||||
};
|
||||
};
|
||||
F5421B0802CFEAB4011C94A4 = {
|
||||
fileRef = F52D5CDB027D412A01A80166;
|
||||
isa = PBXBuildFile;
|
||||
settings = {
|
||||
};
|
||||
};
|
||||
F54AD84402C115D901A967F3 = {
|
||||
isa = PBXFileReference;
|
||||
name = liboji.a;
|
||||
|
|
|
@ -91,7 +91,7 @@ app_getModuleInfo(nsStaticModuleInfo **info, PRUint32 *count);
|
|||
- (BOOL) initInternetConfig
|
||||
{
|
||||
OSStatus error;
|
||||
error = ICStart (&internetConfig, '????');
|
||||
error = ICStart (&internetConfig, 'CHIM');
|
||||
if (error != noErr) {
|
||||
// XXX throw here?
|
||||
NSLog(@"Error initializing IC.\n");
|
||||
|
@ -150,7 +150,6 @@ app_getModuleInfo(nsStaticModuleInfo **info, PRUint32 *count);
|
|||
rv = profileService->SetCurrentProfile(newProfileName.get());
|
||||
if (NS_FAILED(rv)) {
|
||||
if (rv == NS_ERROR_FILE_ACCESS_DENIED) {
|
||||
//horrible, horrible, bad, fixed strings. need localization string file.
|
||||
NSString *alert = NSLocalizedString(@"AlreadyRunningAlert",@"");
|
||||
NSString *message = NSLocalizedString(@"AlreadyRunningMsg",@"");
|
||||
NSString *quit = NSLocalizedString(@"AlreadyRunningButton",@"");
|
||||
|
@ -172,7 +171,6 @@ app_getModuleInfo(nsStaticModuleInfo **info, PRUint32 *count);
|
|||
CFStringRef cfString;
|
||||
char strbuf[1024];
|
||||
int numbuf;
|
||||
NSString *string;
|
||||
|
||||
nsCOMPtr<nsIPref> prefs(do_GetService(NS_PREF_CONTRACTID));
|
||||
if (!prefs) {
|
||||
|
@ -194,12 +192,6 @@ app_getModuleInfo(nsStaticModuleInfo **info, PRUint32 *count);
|
|||
prefs->SetIntPref(kCookieBehaviorPref, acceptCookies);
|
||||
}
|
||||
|
||||
// get home page from Internet Config
|
||||
string = [self getICStringPref:kICWWWHomePage];
|
||||
if (string) {
|
||||
prefs->SetCharPref("browser.startup.homepage", [string cString]);
|
||||
}
|
||||
|
||||
// get proxies from SystemConfiguration
|
||||
prefs->SetIntPref("network.proxy.type", 0); // 0 == no proxies
|
||||
prefs->ClearUserPref("network.proxy.http");
|
||||
|
@ -302,6 +294,25 @@ app_getModuleInfo(nsStaticModuleInfo **info, PRUint32 *count);
|
|||
}
|
||||
}
|
||||
|
||||
// convenience routines for mozilla prefs
|
||||
- (NSString*)getMozillaPrefString: (const char*)prefName
|
||||
{
|
||||
NSMutableString *prefValue = [[[NSMutableString alloc] init] autorelease];
|
||||
|
||||
nsCOMPtr<nsIPref> prefs(do_GetService(NS_PREF_CONTRACTID));
|
||||
if (prefs) {
|
||||
char *buf = nsnull;
|
||||
nsresult rv = prefs->GetCharPref(prefName, &buf);
|
||||
if (NS_SUCCEEDED(rv) && buf) {
|
||||
[prefValue setString:[NSString stringWithCString:buf]];
|
||||
free(buf);
|
||||
}
|
||||
}
|
||||
|
||||
return prefValue;
|
||||
}
|
||||
|
||||
|
||||
//- (BOOL) getICBoolPref:(ConstStr255Param) prefKey;
|
||||
//{
|
||||
// ICAttr dummy;
|
||||
|
@ -355,7 +366,6 @@ app_getModuleInfo(nsStaticModuleInfo **info, PRUint32 *count);
|
|||
if (!prefs)
|
||||
return @"about:blank";
|
||||
|
||||
NSString *url = nil;
|
||||
PRInt32 mode = 1;
|
||||
|
||||
// In some cases, we need to check browser.startup.page to see if
|
||||
|
@ -367,16 +377,16 @@ app_getModuleInfo(nsStaticModuleInfo **info, PRUint32 *count);
|
|||
if ( checkStartupPagePref )
|
||||
rv = prefs->GetIntPref("browser.startup.page", &mode);
|
||||
if (NS_FAILED(rv) || mode == 1) {
|
||||
char *buf = nsnull;
|
||||
prefs->GetCharPref("browser.startup.homepage", &buf);
|
||||
if (buf && *buf)
|
||||
url = [NSString stringWithCString:buf];
|
||||
else
|
||||
url = @"about:blank";
|
||||
free (buf);
|
||||
return url;
|
||||
// see which home page to use
|
||||
PRBool boolPref;
|
||||
if (NS_SUCCEEDED(prefs->GetBoolPref("chimera.use_system_home_page", &boolPref)) && boolPref)
|
||||
return [self getICStringPref:kICWWWHomePage];
|
||||
|
||||
NSString* homepagePref = [self getMozillaPrefString:"browser.startup.homepage"];
|
||||
if ([homepagePref length] > 0)
|
||||
return homepagePref;
|
||||
}
|
||||
else
|
||||
|
||||
return @"about:blank";
|
||||
}
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче