Hook up preferences to load URLs from GetURL in new tabs or windows, and make UI for the 'load new tabs in background' pref (bug 150242). Also clarified the wording of the 'command-click opens new tab' pref.

This commit is contained in:
sfraser%netscape.com 2002-07-01 18:23:21 +00:00
Родитель e17057d531
Коммит b877548b33
20 изменённых файлов: 232 добавлений и 106 удалений

Просмотреть файл

@ -37,17 +37,22 @@
// get the pref that specifies if we want to re-use the existing window or // get the pref that specifies if we want to re-use the existing window or
// open a new one. There's really no point caching this pref. // open a new one. There's really no point caching this pref.
PRBool reuseWindow = PR_FALSE; PRBool reuseWindow = PR_FALSE;
PRBool loadInBackground = PR_FALSE;
nsCOMPtr<nsIPref> prefService ( do_GetService(NS_PREF_CONTRACTID) ); nsCOMPtr<nsIPref> prefService ( do_GetService(NS_PREF_CONTRACTID) );
if ( prefService ) if ( prefService ) {
prefService->GetBoolPref("browser.always_reuse_window", &reuseWindow); prefService->GetBoolPref("browser.always_reuse_window", &reuseWindow);
prefService->GetBoolPref("browser.tabs.loadInBackground", &loadInBackground);
}
// reuse the main window if there is one. The user may have closed all of // reuse the main window if there is one. The user may have closed all of
// them or we may get this event at startup before we've had time to load // them or we may get this event at startup before we've had time to load
// our window. // our window.
BrowserWindowController* controller = nsnull;
BrowserWindowController* controller = NULL;
if ( reuseWindow && [NSApp mainWindow] ) { if ( reuseWindow && [NSApp mainWindow] ) {
controller = [[NSApp mainWindow] windowController]; controller = [[NSApp mainWindow] windowController];
[controller loadURLString:[self directParameter]]; [controller openNewTabWithURL:[self directParameter] loadInBackground:loadInBackground];
} }
else else
controller = [[NSApp delegate] openBrowserWindowWithURL: [self directParameter]]; controller = [[NSApp delegate] openBrowserWindowWithURL: [self directParameter]];

Просмотреть файл

@ -24,9 +24,11 @@
CLASS = OrgMozillaChimeraPreferenceNavigation; CLASS = OrgMozillaChimeraPreferenceNavigation;
LANGUAGE = ObjC; LANGUAGE = ObjC;
OUTLETS = { OUTLETS = {
checkboxLoadTabsInBackground = NSButton;
checkboxNewTabBlank = NSButton; checkboxNewTabBlank = NSButton;
checkboxNewWindowBlank = NSButton; checkboxNewWindowBlank = NSButton;
checkboxOpenTabs = NSButton; checkboxOpenTabs = NSButton;
checkboxOpenTabsForAEs = NSButton;
checkboxUseSystemHomePage = NSButton; checkboxUseSystemHomePage = NSButton;
sliderHistoryDays = NSSlider; sliderHistoryDays = NSSlider;
textFieldHistoryDays = NSTextField; textFieldHistoryDays = NSTextField;

Просмотреть файл

@ -3,7 +3,7 @@
<plist version="0.9"> <plist version="0.9">
<dict> <dict>
<key>IBDocumentLocation</key> <key>IBDocumentLocation</key>
<string>36 50 356 240 0 0 1152 746 </string> <string>34 65 407 279 0 0 1152 746 </string>
<key>IBFramework Version</key> <key>IBFramework Version</key>
<string>248.0</string> <string>248.0</string>
<key>IBGroupedObjects</key> <key>IBGroupedObjects</key>

Двоичные данные
camino/PreferencePanes/Navigation/English.lproj/Navigation.nib/objects.nib сгенерированный

Двоичный файл не отображается.

Просмотреть файл

@ -30,10 +30,15 @@ class nsIPref;
{ {
// IBOutlet NSButton *buttonSystemPreferences; // IBOutlet NSButton *buttonSystemPreferences;
IBOutlet NSTextField *textFieldHomePage; IBOutlet NSTextField *textFieldHomePage;
IBOutlet NSButton *checkboxUseSystemHomePage; IBOutlet NSButton *checkboxUseSystemHomePage;
IBOutlet NSButton *checkboxNewTabBlank; IBOutlet NSButton *checkboxNewTabBlank;
IBOutlet NSButton *checkboxNewWindowBlank; IBOutlet NSButton *checkboxNewWindowBlank;
IBOutlet NSButton *checkboxOpenTabs; IBOutlet NSButton *checkboxOpenTabs;
IBOutlet NSButton *checkboxOpenTabsForAEs;
IBOutlet NSButton *checkboxLoadTabsInBackground;
IBOutlet NSSlider *sliderHistoryDays; IBOutlet NSSlider *sliderHistoryDays;
IBOutlet NSTextField *textFieldHistoryDays; IBOutlet NSTextField *textFieldHistoryDays;
@ -50,6 +55,12 @@ class nsIPref;
- (NSString*)getSystemHomePage; - (NSString*)getSystemHomePage;
- (NSString*)getCurrentHomePage; - (NSString*)getCurrentHomePage;
- (NSString*)getPrefString: (const char*)prefName; - (NSString*)getStringPref: (const char*)prefName withSuccess:(BOOL*)outSuccess;
- (BOOL)getBooleanPref: (const char*)prefName withSuccess:(BOOL*)outSuccess;
- (int)getIntPref: (const char*)prefName withSuccess:(BOOL*)outSuccess;
- (void)setPref: (const char*)prefName toString:(NSString*)value; - (void)setPref: (const char*)prefName toString:(NSString*)value;
- (void)setPref: (const char*)prefName toBoolean:(BOOL)value;
- (void)setPref: (const char*)prefName toInt:(int)value;
@end @end

Просмотреть файл

@ -56,33 +56,27 @@ const int kDefaultExpireDays = 9;
if (!mPrefService) if (!mPrefService)
return; return;
PRBool boolPref; BOOL gotPref;
PRInt32 intPref;
nsresult rv = mPrefService->GetIntPref("browser.startup.page", &intPref);
// Check for NS_FAILED because we don't want to falsely interpret
// a failure as a preference set to 0.
if (NS_SUCCEEDED(rv) && intPref == 0)
[checkboxNewWindowBlank setState:YES];
rv = mPrefService->GetIntPref("browser.tabs.startPage", &intPref);
if (NS_SUCCEEDED(rv) && intPref == 0)
[checkboxNewTabBlank setState:YES];
rv = mPrefService->GetIntPref("browser.history_expire_days", &intPref);
if (NS_FAILED(rv))
intPref = kDefaultExpireDays;
[textFieldHistoryDays setIntValue:intPref];
[sliderHistoryDays setIntValue:intPref];
rv = mPrefService->GetBoolPref("browser.tabs.opentabfor.middleclick", &boolPref);
if (NS_SUCCEEDED(rv) && boolPref == PR_TRUE)
[checkboxOpenTabs setState:YES];
BOOL useSystemHomePage = NO;
rv = mPrefService->GetBoolPref("chimera.use_system_home_page", &boolPref);
if (NS_SUCCEEDED(rv) && boolPref == PR_TRUE)
useSystemHomePage = YES;
if (([self getIntPref:"browser.startup.page" withSuccess:&gotPref] == 0) && gotPref)
[checkboxNewWindowBlank setState:YES];
if (([self getIntPref:"browser.tabs.startPage" withSuccess:&gotPref] == 0) && gotPref)
[checkboxNewTabBlank setState:YES];
int expireDays = [self getIntPref:"browser.history_expire_days" withSuccess:&gotPref];
if (!gotPref)
expireDays = kDefaultExpireDays;
[textFieldHistoryDays setIntValue:expireDays];
[sliderHistoryDays setIntValue:expireDays];
[checkboxOpenTabs setState:[self getBooleanPref:"browser.tabs.opentabfor.middleclick" withSuccess:&gotPref]];
[checkboxOpenTabsForAEs setState:[self getBooleanPref:"browser.always_reuse_window" withSuccess:&gotPref]];
[checkboxLoadTabsInBackground setState:[self getBooleanPref:"browser.tabs.loadInBackground" withSuccess:&gotPref]];
BOOL useSystemHomePage = [self getBooleanPref:"chimera.use_system_home_page" withSuccess:&gotPref] && gotPref;
if (useSystemHomePage) if (useSystemHomePage)
[textFieldHomePage setEnabled:NO]; [textFieldHomePage setEnabled:NO];
@ -111,10 +105,18 @@ const int kDefaultExpireDays = 9;
- (IBAction)checkboxClicked:(id)sender - (IBAction)checkboxClicked:(id)sender
{ {
if (!mPrefService || sender != checkboxOpenTabs) if (!mPrefService)
return; return;
mPrefService->SetBoolPref("browser.tabs.opentabfor.middleclick", [sender state] ? PR_TRUE : PR_FALSE); if (sender == checkboxOpenTabs) {
[self setPref:"browser.tabs.opentabfor.middleclick" toBoolean:[sender state]];
}
else if (sender == checkboxOpenTabsForAEs) {
[self setPref:"browser.always_reuse_window" toBoolean:[sender state]];
}
else if (sender == checkboxLoadTabsInBackground) {
[self setPref:"browser.tabs.loadInBackground" toBoolean:[sender state]];
}
} }
- (IBAction)checkboxUseSystemHomePageClicked:(id)sender - (IBAction)checkboxUseSystemHomePageClicked:(id)sender
@ -128,8 +130,7 @@ const int kDefaultExpireDays = 9;
if (useSystemHomePage) if (useSystemHomePage)
[self setPref: "browser.startup.homepage" toString: [textFieldHomePage stringValue]]; [self setPref: "browser.startup.homepage" toString: [textFieldHomePage stringValue]];
mPrefService->SetBoolPref("chimera.use_system_home_page", useSystemHomePage ? PR_TRUE : PR_FALSE); [self setPref:"chimera.use_system_home_page" toBoolean: useSystemHomePage];
[textFieldHomePage setStringValue: [self getCurrentHomePage]]; [textFieldHomePage setStringValue: [self getCurrentHomePage]];
[textFieldHomePage setEnabled:!useSystemHomePage]; [textFieldHomePage setEnabled:!useSystemHomePage];
} }
@ -144,11 +145,9 @@ const int kDefaultExpireDays = 9;
prefName = "browser.tabs.page"; prefName = "browser.tabs.page";
else if (sender == checkboxNewWindowBlank) else if (sender == checkboxNewWindowBlank)
prefName = "browser.startup.page"; prefName = "browser.startup.page";
else
return;
if (prefName) if (prefName)
mPrefService->SetIntPref(prefName, [sender state] ? 0 : 1); [self setPref:prefName toInt: [sender state] ? 0 : 1];
} }
- (IBAction)historyDaysModified:(id)sender - (IBAction)historyDaysModified:(id)sender
@ -161,16 +160,19 @@ const int kDefaultExpireDays = 9;
else if (sender == textFieldHistoryDays) { else if (sender == textFieldHistoryDays) {
// If any non-numeric characters were entered make some noise and spit it out. // If any non-numeric characters were entered make some noise and spit it out.
if (([[textFieldHistoryDays stringValue] rangeOfCharacterFromSet:[[NSCharacterSet decimalDigitCharacterSet] invertedSet]]).length) { if (([[textFieldHistoryDays stringValue] rangeOfCharacterFromSet:[[NSCharacterSet decimalDigitCharacterSet] invertedSet]]).length) {
PRInt32 intPref = kDefaultExpireDays; BOOL gotPref;
mPrefService->GetIntPref("browser.history_expire_days", &intPref); int prefValue = [self getIntPref:"browser.history_expire_days" withSuccess:&gotPref];
[textFieldHistoryDays setIntValue:intPref]; if (!gotPref)
prefValue = kDefaultExpireDays;
[textFieldHistoryDays setIntValue:prefValue];
[sliderHistoryDays setIntValue:prefValue];
NSBeep (); NSBeep ();
return; return;
} else } else
[sliderHistoryDays setIntValue:[textFieldHistoryDays intValue]]; [sliderHistoryDays setIntValue:[textFieldHistoryDays intValue]];
} }
mPrefService->SetIntPref("browser.history_expire_days", [sender intValue]); [self setPref:"browser.history_expire_days" toInt:[sender intValue]];
} }
@ -217,17 +219,16 @@ const int kDefaultExpireDays = 9;
- (NSString*) getCurrentHomePage - (NSString*) getCurrentHomePage
{ {
BOOL useSystemHomePage = NO; BOOL gotPref;
PRBool boolPref;
nsresult rv = mPrefService->GetBoolPref("chimera.use_system_home_page", &boolPref); if ([self getBooleanPref:"chimera.use_system_home_page" withSuccess:&gotPref] && gotPref)
if (NS_SUCCEEDED(rv) && boolPref == PR_TRUE)
return [self getSystemHomePage]; return [self getSystemHomePage];
return [self getPrefString: "browser.startup.homepage"]; return [self getStringPref: "browser.startup.homepage" withSuccess:&gotPref];
} }
// convenience routines for mozilla prefs // convenience routines for mozilla prefs
- (NSString*)getPrefString: (const char*)prefName - (NSString*)getStringPref: (const char*)prefName withSuccess:(BOOL*)outSuccess
{ {
NSMutableString *prefValue = [[[NSMutableString alloc] init] autorelease]; NSMutableString *prefValue = [[[NSMutableString alloc] init] autorelease];
@ -236,11 +237,34 @@ const int kDefaultExpireDays = 9;
if (NS_SUCCEEDED(rv) && buf) { if (NS_SUCCEEDED(rv) && buf) {
[prefValue setString:[NSString stringWithCString:buf]]; [prefValue setString:[NSString stringWithCString:buf]];
free(buf); free(buf);
if (outSuccess) *outSuccess = YES;
} else {
if (outSuccess) *outSuccess = NO;
} }
return prefValue; return prefValue;
} }
// convenience routines for mozilla prefs
- (BOOL)getBooleanPref: (const char*)prefName withSuccess:(BOOL*)outSuccess
{
PRBool boolPref = PR_FALSE;
nsresult rv = mPrefService->GetBoolPref(prefName, &boolPref);
if (outSuccess)
*outSuccess = NS_SUCCEEDED(rv);
return boolPref ? YES : NO;
}
- (int)getIntPref: (const char*)prefName withSuccess:(BOOL*)outSuccess
{
PRInt32 intPref = 0;
nsresult rv = mPrefService->GetBoolPref(prefName, &intPref);
if (outSuccess)
*outSuccess = NS_SUCCEEDED(rv);
return intPref;
}
- (void)setPref: (const char*)prefName toString:(NSString*)value - (void)setPref: (const char*)prefName toString:(NSString*)value
{ {
if (mPrefService) { if (mPrefService) {
@ -248,5 +272,19 @@ const int kDefaultExpireDays = 9;
} }
} }
- (void)setPref: (const char*)prefName toBoolean:(BOOL)value
{
if (mPrefService) {
mPrefService->SetBoolPref(prefName, value ? PR_TRUE : PR_FALSE);
}
}
- (void)setPref: (const char*)prefName toInt:(int)value
{
if (mPrefService) {
PRInt32 prefValue = value;
mPrefService->SetIntPref(prefName, prefValue);
}
}
@end @end

Просмотреть файл

@ -24,9 +24,11 @@
CLASS = OrgMozillaChimeraPreferenceNavigation; CLASS = OrgMozillaChimeraPreferenceNavigation;
LANGUAGE = ObjC; LANGUAGE = ObjC;
OUTLETS = { OUTLETS = {
checkboxLoadTabsInBackground = NSButton;
checkboxNewTabBlank = NSButton; checkboxNewTabBlank = NSButton;
checkboxNewWindowBlank = NSButton; checkboxNewWindowBlank = NSButton;
checkboxOpenTabs = NSButton; checkboxOpenTabs = NSButton;
checkboxOpenTabsForAEs = NSButton;
checkboxUseSystemHomePage = NSButton; checkboxUseSystemHomePage = NSButton;
sliderHistoryDays = NSSlider; sliderHistoryDays = NSSlider;
textFieldHistoryDays = NSTextField; textFieldHistoryDays = NSTextField;

Просмотреть файл

@ -3,7 +3,7 @@
<plist version="0.9"> <plist version="0.9">
<dict> <dict>
<key>IBDocumentLocation</key> <key>IBDocumentLocation</key>
<string>36 50 356 240 0 0 1152 746 </string> <string>34 65 407 279 0 0 1152 746 </string>
<key>IBFramework Version</key> <key>IBFramework Version</key>
<string>248.0</string> <string>248.0</string>
<key>IBGroupedObjects</key> <key>IBGroupedObjects</key>

Двоичные данные
camino/PreferencePanes/Navigation/Navigation.nib/objects.nib сгенерированный

Двоичный файл не отображается.

Просмотреть файл

@ -37,17 +37,22 @@
// get the pref that specifies if we want to re-use the existing window or // get the pref that specifies if we want to re-use the existing window or
// open a new one. There's really no point caching this pref. // open a new one. There's really no point caching this pref.
PRBool reuseWindow = PR_FALSE; PRBool reuseWindow = PR_FALSE;
PRBool loadInBackground = PR_FALSE;
nsCOMPtr<nsIPref> prefService ( do_GetService(NS_PREF_CONTRACTID) ); nsCOMPtr<nsIPref> prefService ( do_GetService(NS_PREF_CONTRACTID) );
if ( prefService ) if ( prefService ) {
prefService->GetBoolPref("browser.always_reuse_window", &reuseWindow); prefService->GetBoolPref("browser.always_reuse_window", &reuseWindow);
prefService->GetBoolPref("browser.tabs.loadInBackground", &loadInBackground);
}
// reuse the main window if there is one. The user may have closed all of // reuse the main window if there is one. The user may have closed all of
// them or we may get this event at startup before we've had time to load // them or we may get this event at startup before we've had time to load
// our window. // our window.
BrowserWindowController* controller = nsnull;
BrowserWindowController* controller = NULL;
if ( reuseWindow && [NSApp mainWindow] ) { if ( reuseWindow && [NSApp mainWindow] ) {
controller = [[NSApp mainWindow] windowController]; controller = [[NSApp mainWindow] windowController];
[controller loadURLString:[self directParameter]]; [controller openNewTabWithURL:[self directParameter] loadInBackground:loadInBackground];
} }
else else
controller = [[NSApp delegate] openBrowserWindowWithURL: [self directParameter]]; controller = [[NSApp delegate] openBrowserWindowWithURL: [self directParameter]];

Просмотреть файл

@ -37,17 +37,22 @@
// get the pref that specifies if we want to re-use the existing window or // get the pref that specifies if we want to re-use the existing window or
// open a new one. There's really no point caching this pref. // open a new one. There's really no point caching this pref.
PRBool reuseWindow = PR_FALSE; PRBool reuseWindow = PR_FALSE;
PRBool loadInBackground = PR_FALSE;
nsCOMPtr<nsIPref> prefService ( do_GetService(NS_PREF_CONTRACTID) ); nsCOMPtr<nsIPref> prefService ( do_GetService(NS_PREF_CONTRACTID) );
if ( prefService ) if ( prefService ) {
prefService->GetBoolPref("browser.always_reuse_window", &reuseWindow); prefService->GetBoolPref("browser.always_reuse_window", &reuseWindow);
prefService->GetBoolPref("browser.tabs.loadInBackground", &loadInBackground);
}
// reuse the main window if there is one. The user may have closed all of // reuse the main window if there is one. The user may have closed all of
// them or we may get this event at startup before we've had time to load // them or we may get this event at startup before we've had time to load
// our window. // our window.
BrowserWindowController* controller = nsnull;
BrowserWindowController* controller = NULL;
if ( reuseWindow && [NSApp mainWindow] ) { if ( reuseWindow && [NSApp mainWindow] ) {
controller = [[NSApp mainWindow] windowController]; controller = [[NSApp mainWindow] windowController];
[controller loadURLString:[self directParameter]]; [controller openNewTabWithURL:[self directParameter] loadInBackground:loadInBackground];
} }
else else
controller = [[NSApp delegate] openBrowserWindowWithURL: [self directParameter]]; controller = [[NSApp delegate] openBrowserWindowWithURL: [self directParameter]];

Просмотреть файл

@ -24,9 +24,11 @@
CLASS = OrgMozillaChimeraPreferenceNavigation; CLASS = OrgMozillaChimeraPreferenceNavigation;
LANGUAGE = ObjC; LANGUAGE = ObjC;
OUTLETS = { OUTLETS = {
checkboxLoadTabsInBackground = NSButton;
checkboxNewTabBlank = NSButton; checkboxNewTabBlank = NSButton;
checkboxNewWindowBlank = NSButton; checkboxNewWindowBlank = NSButton;
checkboxOpenTabs = NSButton; checkboxOpenTabs = NSButton;
checkboxOpenTabsForAEs = NSButton;
checkboxUseSystemHomePage = NSButton; checkboxUseSystemHomePage = NSButton;
sliderHistoryDays = NSSlider; sliderHistoryDays = NSSlider;
textFieldHistoryDays = NSTextField; textFieldHistoryDays = NSTextField;

Просмотреть файл

@ -3,7 +3,7 @@
<plist version="0.9"> <plist version="0.9">
<dict> <dict>
<key>IBDocumentLocation</key> <key>IBDocumentLocation</key>
<string>36 50 356 240 0 0 1152 746 </string> <string>34 65 407 279 0 0 1152 746 </string>
<key>IBFramework Version</key> <key>IBFramework Version</key>
<string>248.0</string> <string>248.0</string>
<key>IBGroupedObjects</key> <key>IBGroupedObjects</key>

Двоичные данные
chimera/PreferencePanes/Navigation/English.lproj/Navigation.nib/objects.nib сгенерированный

Двоичный файл не отображается.

Просмотреть файл

@ -30,10 +30,15 @@ class nsIPref;
{ {
// IBOutlet NSButton *buttonSystemPreferences; // IBOutlet NSButton *buttonSystemPreferences;
IBOutlet NSTextField *textFieldHomePage; IBOutlet NSTextField *textFieldHomePage;
IBOutlet NSButton *checkboxUseSystemHomePage; IBOutlet NSButton *checkboxUseSystemHomePage;
IBOutlet NSButton *checkboxNewTabBlank; IBOutlet NSButton *checkboxNewTabBlank;
IBOutlet NSButton *checkboxNewWindowBlank; IBOutlet NSButton *checkboxNewWindowBlank;
IBOutlet NSButton *checkboxOpenTabs; IBOutlet NSButton *checkboxOpenTabs;
IBOutlet NSButton *checkboxOpenTabsForAEs;
IBOutlet NSButton *checkboxLoadTabsInBackground;
IBOutlet NSSlider *sliderHistoryDays; IBOutlet NSSlider *sliderHistoryDays;
IBOutlet NSTextField *textFieldHistoryDays; IBOutlet NSTextField *textFieldHistoryDays;
@ -50,6 +55,12 @@ class nsIPref;
- (NSString*)getSystemHomePage; - (NSString*)getSystemHomePage;
- (NSString*)getCurrentHomePage; - (NSString*)getCurrentHomePage;
- (NSString*)getPrefString: (const char*)prefName; - (NSString*)getStringPref: (const char*)prefName withSuccess:(BOOL*)outSuccess;
- (BOOL)getBooleanPref: (const char*)prefName withSuccess:(BOOL*)outSuccess;
- (int)getIntPref: (const char*)prefName withSuccess:(BOOL*)outSuccess;
- (void)setPref: (const char*)prefName toString:(NSString*)value; - (void)setPref: (const char*)prefName toString:(NSString*)value;
- (void)setPref: (const char*)prefName toBoolean:(BOOL)value;
- (void)setPref: (const char*)prefName toInt:(int)value;
@end @end

Просмотреть файл

@ -56,33 +56,27 @@ const int kDefaultExpireDays = 9;
if (!mPrefService) if (!mPrefService)
return; return;
PRBool boolPref; BOOL gotPref;
PRInt32 intPref;
nsresult rv = mPrefService->GetIntPref("browser.startup.page", &intPref);
// Check for NS_FAILED because we don't want to falsely interpret
// a failure as a preference set to 0.
if (NS_SUCCEEDED(rv) && intPref == 0)
[checkboxNewWindowBlank setState:YES];
rv = mPrefService->GetIntPref("browser.tabs.startPage", &intPref);
if (NS_SUCCEEDED(rv) && intPref == 0)
[checkboxNewTabBlank setState:YES];
rv = mPrefService->GetIntPref("browser.history_expire_days", &intPref);
if (NS_FAILED(rv))
intPref = kDefaultExpireDays;
[textFieldHistoryDays setIntValue:intPref];
[sliderHistoryDays setIntValue:intPref];
rv = mPrefService->GetBoolPref("browser.tabs.opentabfor.middleclick", &boolPref);
if (NS_SUCCEEDED(rv) && boolPref == PR_TRUE)
[checkboxOpenTabs setState:YES];
BOOL useSystemHomePage = NO;
rv = mPrefService->GetBoolPref("chimera.use_system_home_page", &boolPref);
if (NS_SUCCEEDED(rv) && boolPref == PR_TRUE)
useSystemHomePage = YES;
if (([self getIntPref:"browser.startup.page" withSuccess:&gotPref] == 0) && gotPref)
[checkboxNewWindowBlank setState:YES];
if (([self getIntPref:"browser.tabs.startPage" withSuccess:&gotPref] == 0) && gotPref)
[checkboxNewTabBlank setState:YES];
int expireDays = [self getIntPref:"browser.history_expire_days" withSuccess:&gotPref];
if (!gotPref)
expireDays = kDefaultExpireDays;
[textFieldHistoryDays setIntValue:expireDays];
[sliderHistoryDays setIntValue:expireDays];
[checkboxOpenTabs setState:[self getBooleanPref:"browser.tabs.opentabfor.middleclick" withSuccess:&gotPref]];
[checkboxOpenTabsForAEs setState:[self getBooleanPref:"browser.always_reuse_window" withSuccess:&gotPref]];
[checkboxLoadTabsInBackground setState:[self getBooleanPref:"browser.tabs.loadInBackground" withSuccess:&gotPref]];
BOOL useSystemHomePage = [self getBooleanPref:"chimera.use_system_home_page" withSuccess:&gotPref] && gotPref;
if (useSystemHomePage) if (useSystemHomePage)
[textFieldHomePage setEnabled:NO]; [textFieldHomePage setEnabled:NO];
@ -111,10 +105,18 @@ const int kDefaultExpireDays = 9;
- (IBAction)checkboxClicked:(id)sender - (IBAction)checkboxClicked:(id)sender
{ {
if (!mPrefService || sender != checkboxOpenTabs) if (!mPrefService)
return; return;
mPrefService->SetBoolPref("browser.tabs.opentabfor.middleclick", [sender state] ? PR_TRUE : PR_FALSE); if (sender == checkboxOpenTabs) {
[self setPref:"browser.tabs.opentabfor.middleclick" toBoolean:[sender state]];
}
else if (sender == checkboxOpenTabsForAEs) {
[self setPref:"browser.always_reuse_window" toBoolean:[sender state]];
}
else if (sender == checkboxLoadTabsInBackground) {
[self setPref:"browser.tabs.loadInBackground" toBoolean:[sender state]];
}
} }
- (IBAction)checkboxUseSystemHomePageClicked:(id)sender - (IBAction)checkboxUseSystemHomePageClicked:(id)sender
@ -128,8 +130,7 @@ const int kDefaultExpireDays = 9;
if (useSystemHomePage) if (useSystemHomePage)
[self setPref: "browser.startup.homepage" toString: [textFieldHomePage stringValue]]; [self setPref: "browser.startup.homepage" toString: [textFieldHomePage stringValue]];
mPrefService->SetBoolPref("chimera.use_system_home_page", useSystemHomePage ? PR_TRUE : PR_FALSE); [self setPref:"chimera.use_system_home_page" toBoolean: useSystemHomePage];
[textFieldHomePage setStringValue: [self getCurrentHomePage]]; [textFieldHomePage setStringValue: [self getCurrentHomePage]];
[textFieldHomePage setEnabled:!useSystemHomePage]; [textFieldHomePage setEnabled:!useSystemHomePage];
} }
@ -144,11 +145,9 @@ const int kDefaultExpireDays = 9;
prefName = "browser.tabs.page"; prefName = "browser.tabs.page";
else if (sender == checkboxNewWindowBlank) else if (sender == checkboxNewWindowBlank)
prefName = "browser.startup.page"; prefName = "browser.startup.page";
else
return;
if (prefName) if (prefName)
mPrefService->SetIntPref(prefName, [sender state] ? 0 : 1); [self setPref:prefName toInt: [sender state] ? 0 : 1];
} }
- (IBAction)historyDaysModified:(id)sender - (IBAction)historyDaysModified:(id)sender
@ -161,16 +160,19 @@ const int kDefaultExpireDays = 9;
else if (sender == textFieldHistoryDays) { else if (sender == textFieldHistoryDays) {
// If any non-numeric characters were entered make some noise and spit it out. // If any non-numeric characters were entered make some noise and spit it out.
if (([[textFieldHistoryDays stringValue] rangeOfCharacterFromSet:[[NSCharacterSet decimalDigitCharacterSet] invertedSet]]).length) { if (([[textFieldHistoryDays stringValue] rangeOfCharacterFromSet:[[NSCharacterSet decimalDigitCharacterSet] invertedSet]]).length) {
PRInt32 intPref = kDefaultExpireDays; BOOL gotPref;
mPrefService->GetIntPref("browser.history_expire_days", &intPref); int prefValue = [self getIntPref:"browser.history_expire_days" withSuccess:&gotPref];
[textFieldHistoryDays setIntValue:intPref]; if (!gotPref)
prefValue = kDefaultExpireDays;
[textFieldHistoryDays setIntValue:prefValue];
[sliderHistoryDays setIntValue:prefValue];
NSBeep (); NSBeep ();
return; return;
} else } else
[sliderHistoryDays setIntValue:[textFieldHistoryDays intValue]]; [sliderHistoryDays setIntValue:[textFieldHistoryDays intValue]];
} }
mPrefService->SetIntPref("browser.history_expire_days", [sender intValue]); [self setPref:"browser.history_expire_days" toInt:[sender intValue]];
} }
@ -217,17 +219,16 @@ const int kDefaultExpireDays = 9;
- (NSString*) getCurrentHomePage - (NSString*) getCurrentHomePage
{ {
BOOL useSystemHomePage = NO; BOOL gotPref;
PRBool boolPref;
nsresult rv = mPrefService->GetBoolPref("chimera.use_system_home_page", &boolPref); if ([self getBooleanPref:"chimera.use_system_home_page" withSuccess:&gotPref] && gotPref)
if (NS_SUCCEEDED(rv) && boolPref == PR_TRUE)
return [self getSystemHomePage]; return [self getSystemHomePage];
return [self getPrefString: "browser.startup.homepage"]; return [self getStringPref: "browser.startup.homepage" withSuccess:&gotPref];
} }
// convenience routines for mozilla prefs // convenience routines for mozilla prefs
- (NSString*)getPrefString: (const char*)prefName - (NSString*)getStringPref: (const char*)prefName withSuccess:(BOOL*)outSuccess
{ {
NSMutableString *prefValue = [[[NSMutableString alloc] init] autorelease]; NSMutableString *prefValue = [[[NSMutableString alloc] init] autorelease];
@ -236,11 +237,34 @@ const int kDefaultExpireDays = 9;
if (NS_SUCCEEDED(rv) && buf) { if (NS_SUCCEEDED(rv) && buf) {
[prefValue setString:[NSString stringWithCString:buf]]; [prefValue setString:[NSString stringWithCString:buf]];
free(buf); free(buf);
if (outSuccess) *outSuccess = YES;
} else {
if (outSuccess) *outSuccess = NO;
} }
return prefValue; return prefValue;
} }
// convenience routines for mozilla prefs
- (BOOL)getBooleanPref: (const char*)prefName withSuccess:(BOOL*)outSuccess
{
PRBool boolPref = PR_FALSE;
nsresult rv = mPrefService->GetBoolPref(prefName, &boolPref);
if (outSuccess)
*outSuccess = NS_SUCCEEDED(rv);
return boolPref ? YES : NO;
}
- (int)getIntPref: (const char*)prefName withSuccess:(BOOL*)outSuccess
{
PRInt32 intPref = 0;
nsresult rv = mPrefService->GetBoolPref(prefName, &intPref);
if (outSuccess)
*outSuccess = NS_SUCCEEDED(rv);
return intPref;
}
- (void)setPref: (const char*)prefName toString:(NSString*)value - (void)setPref: (const char*)prefName toString:(NSString*)value
{ {
if (mPrefService) { if (mPrefService) {
@ -248,5 +272,19 @@ const int kDefaultExpireDays = 9;
} }
} }
- (void)setPref: (const char*)prefName toBoolean:(BOOL)value
{
if (mPrefService) {
mPrefService->SetBoolPref(prefName, value ? PR_TRUE : PR_FALSE);
}
}
- (void)setPref: (const char*)prefName toInt:(int)value
{
if (mPrefService) {
PRInt32 prefValue = value;
mPrefService->SetIntPref(prefName, prefValue);
}
}
@end @end

Просмотреть файл

@ -24,9 +24,11 @@
CLASS = OrgMozillaChimeraPreferenceNavigation; CLASS = OrgMozillaChimeraPreferenceNavigation;
LANGUAGE = ObjC; LANGUAGE = ObjC;
OUTLETS = { OUTLETS = {
checkboxLoadTabsInBackground = NSButton;
checkboxNewTabBlank = NSButton; checkboxNewTabBlank = NSButton;
checkboxNewWindowBlank = NSButton; checkboxNewWindowBlank = NSButton;
checkboxOpenTabs = NSButton; checkboxOpenTabs = NSButton;
checkboxOpenTabsForAEs = NSButton;
checkboxUseSystemHomePage = NSButton; checkboxUseSystemHomePage = NSButton;
sliderHistoryDays = NSSlider; sliderHistoryDays = NSSlider;
textFieldHistoryDays = NSTextField; textFieldHistoryDays = NSTextField;

Просмотреть файл

@ -3,7 +3,7 @@
<plist version="0.9"> <plist version="0.9">
<dict> <dict>
<key>IBDocumentLocation</key> <key>IBDocumentLocation</key>
<string>36 50 356 240 0 0 1152 746 </string> <string>34 65 407 279 0 0 1152 746 </string>
<key>IBFramework Version</key> <key>IBFramework Version</key>
<string>248.0</string> <string>248.0</string>
<key>IBGroupedObjects</key> <key>IBGroupedObjects</key>

Двоичные данные
chimera/PreferencePanes/Navigation/Navigation.nib/objects.nib сгенерированный

Двоичный файл не отображается.

Просмотреть файл

@ -37,17 +37,22 @@
// get the pref that specifies if we want to re-use the existing window or // get the pref that specifies if we want to re-use the existing window or
// open a new one. There's really no point caching this pref. // open a new one. There's really no point caching this pref.
PRBool reuseWindow = PR_FALSE; PRBool reuseWindow = PR_FALSE;
PRBool loadInBackground = PR_FALSE;
nsCOMPtr<nsIPref> prefService ( do_GetService(NS_PREF_CONTRACTID) ); nsCOMPtr<nsIPref> prefService ( do_GetService(NS_PREF_CONTRACTID) );
if ( prefService ) if ( prefService ) {
prefService->GetBoolPref("browser.always_reuse_window", &reuseWindow); prefService->GetBoolPref("browser.always_reuse_window", &reuseWindow);
prefService->GetBoolPref("browser.tabs.loadInBackground", &loadInBackground);
}
// reuse the main window if there is one. The user may have closed all of // reuse the main window if there is one. The user may have closed all of
// them or we may get this event at startup before we've had time to load // them or we may get this event at startup before we've had time to load
// our window. // our window.
BrowserWindowController* controller = nsnull;
BrowserWindowController* controller = NULL;
if ( reuseWindow && [NSApp mainWindow] ) { if ( reuseWindow && [NSApp mainWindow] ) {
controller = [[NSApp mainWindow] windowController]; controller = [[NSApp mainWindow] windowController];
[controller loadURLString:[self directParameter]]; [controller openNewTabWithURL:[self directParameter] loadInBackground:loadInBackground];
} }
else else
controller = [[NSApp delegate] openBrowserWindowWithURL: [self directParameter]]; controller = [[NSApp delegate] openBrowserWindowWithURL: [self directParameter]];