* Added General page in Settings window with option to specify the maximum
age (in days) of items in the browsing history. git-svn-id: http://svn.haiku-os.org/webpositive/webkit/trunk@336 94f232f2-1747-11df-bad5-a5bfde151594
This commit is contained in:
parent
e91fdd924a
commit
aa5ba348ea
@ -177,6 +177,7 @@ BrowsingHistory::BrowsingHistory()
|
||||
:
|
||||
BLocker("browsing history"),
|
||||
fHistoryItems(64),
|
||||
fMaxHistoryItemAge(7),
|
||||
fSettingsLoaded(false)
|
||||
{
|
||||
}
|
||||
@ -241,6 +242,24 @@ BrowsingHistory::Clear()
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
BrowsingHistory::SetMaxHistoryItemAge(int32 days)
|
||||
{
|
||||
BAutolock _(this);
|
||||
if (fMaxHistoryItemAge != days) {
|
||||
fMaxHistoryItemAge = days;
|
||||
_SaveSettings();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
int32
|
||||
BrowsingHistory::MaxHistoryItemAge() const
|
||||
{
|
||||
return fMaxHistoryItemAge;
|
||||
}
|
||||
|
||||
|
||||
// #pragma mark - private
|
||||
|
||||
|
||||
@ -303,11 +322,20 @@ BrowsingHistory::_LoadSettings()
|
||||
if (_OpenSettingsFile(settingsFile, B_READ_ONLY)) {
|
||||
BMessage settingsArchive;
|
||||
settingsArchive.Unflatten(&settingsFile);
|
||||
if (settingsArchive.FindInt32("max history item age",
|
||||
&fMaxHistoryItemAge) != B_OK) {
|
||||
fMaxHistoryItemAge = 7;
|
||||
}
|
||||
BDateTime oldestAllowedDateTime
|
||||
= BDateTime::CurrentDateTime(B_LOCAL_TIME);
|
||||
oldestAllowedDateTime.Date().AddDays(-fMaxHistoryItemAge);
|
||||
|
||||
BMessage historyItemArchive;
|
||||
for (int32 i = 0; settingsArchive.FindMessage("history item", i,
|
||||
&historyItemArchive) == B_OK; i++) {
|
||||
_AddItem(BrowsingHistoryItem(&historyItemArchive), true);
|
||||
BrowsingHistoryItem item(&historyItemArchive);
|
||||
if (oldestAllowedDateTime < item.DateTime())
|
||||
_AddItem(item, true);
|
||||
historyItemArchive.MakeEmpty();
|
||||
}
|
||||
}
|
||||
@ -321,6 +349,7 @@ BrowsingHistory::_SaveSettings()
|
||||
if (_OpenSettingsFile(settingsFile,
|
||||
B_CREATE_FILE | B_ERASE_FILE | B_WRITE_ONLY)) {
|
||||
BMessage settingsArchive;
|
||||
settingsArchive.AddInt32("max history item age", fMaxHistoryItemAge);
|
||||
BMessage historyItemArchive;
|
||||
int32 count = CountItems();
|
||||
for (int32 i = 0; i < count; i++) {
|
||||
|
@ -84,6 +84,9 @@ public:
|
||||
BrowsingHistoryItem HistoryItemAt(int32 index) const;
|
||||
void Clear();
|
||||
|
||||
void SetMaxHistoryItemAge(int32 days);
|
||||
int32 MaxHistoryItemAge() const;
|
||||
|
||||
private:
|
||||
BrowsingHistory();
|
||||
virtual ~BrowsingHistory();
|
||||
@ -98,8 +101,9 @@ private:
|
||||
|
||||
private:
|
||||
BList fHistoryItems;
|
||||
int32 fMaxHistoryItemAge;
|
||||
|
||||
static BrowsingHistory sDefaultInstance;
|
||||
static BrowsingHistory sDefaultInstance;
|
||||
bool fSettingsLoaded;
|
||||
};
|
||||
|
||||
|
@ -38,10 +38,15 @@
|
||||
#include <ScrollView.h>
|
||||
#include <SeparatorView.h>
|
||||
#include <SpaceLayoutItem.h>
|
||||
#include <TabView.h>
|
||||
#include <TextControl.h>
|
||||
#include <debugger.h>
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "BrowserApp.h"
|
||||
#include "BrowsingHistory.h"
|
||||
#include "FontSelectionView.h"
|
||||
#include "SettingsMessage.h"
|
||||
#include "WebSettings.h"
|
||||
@ -56,6 +61,9 @@ enum {
|
||||
MSG_REVERT = 'rvrt',
|
||||
MSG_STANDARD_FONT_SIZE_SELECTED = 'sfss',
|
||||
MSG_FIXED_FONT_SIZE_SELECTED = 'ffss',
|
||||
MSG_DOWNLOAD_FOLDER_CHANGED = 'dnfc',
|
||||
MSG_NEW_PAGE_BEHAVIOR_CHANGED = 'npbc',
|
||||
MSG_GO_MENU_DAYS_CHANGED = 'digm',
|
||||
};
|
||||
|
||||
static const int32 kDefaultFontSize = 14;
|
||||
@ -69,68 +77,28 @@ SettingsWindow::SettingsWindow(BRect frame, SettingsMessage* settings)
|
||||
{
|
||||
SetLayout(new BGroupLayout(B_VERTICAL));
|
||||
|
||||
fStandardFontView = new FontSelectionView("standard", "Standard font:",
|
||||
true, be_plain_font);
|
||||
BFont defaultSerifFont = _FindDefaultSerifFont();
|
||||
fSerifFontView = new FontSelectionView("serif", "Serif font:", true,
|
||||
&defaultSerifFont);
|
||||
fSansSerifFontView = new FontSelectionView("sans serif", "Sans serif font:",
|
||||
true, be_plain_font);
|
||||
fFixedFontView = new FontSelectionView("fixed", "Fixed font:", true,
|
||||
be_fixed_font);
|
||||
|
||||
fStandardSizesMenu = new BMenuField("standard font size",
|
||||
TR("Default standard font size:"), new BPopUpMenu("sizes"), NULL);
|
||||
_BuildSizesMenu(fStandardSizesMenu->Menu(), MSG_STANDARD_FONT_SIZE_SELECTED);
|
||||
|
||||
fFixedSizesMenu = new BMenuField("fixed font size",
|
||||
TR("Default fixed font size:"), new BPopUpMenu("sizes"), NULL);
|
||||
_BuildSizesMenu(fFixedSizesMenu->Menu(), MSG_FIXED_FONT_SIZE_SELECTED);
|
||||
|
||||
fApplyButton = new BButton("Apply", new BMessage(MSG_APPLY));
|
||||
fCancelButton = new BButton("Cancel", new BMessage(MSG_CANCEL));
|
||||
fRevertButton = new BButton("Revert", new BMessage(MSG_REVERT));
|
||||
fApplyButton = new BButton(TR("Apply"), new BMessage(MSG_APPLY));
|
||||
fCancelButton = new BButton(TR("Cancel"), new BMessage(MSG_CANCEL));
|
||||
fRevertButton = new BButton(TR("Revert"), new BMessage(MSG_REVERT));
|
||||
|
||||
float spacing = be_control_look->DefaultItemSpacing();
|
||||
|
||||
AddChild(BGroupLayoutBuilder(B_VERTICAL)
|
||||
.Add(BGridLayoutBuilder(spacing / 2, spacing / 2)
|
||||
.Add(fStandardFontView->CreateFontsLabelLayoutItem(), 0, 0)
|
||||
.Add(fStandardFontView->CreateFontsMenuBarLayoutItem(), 1, 0)
|
||||
.Add(fStandardFontView->PreviewBox(), 0, 1, 2)
|
||||
.Add(BSpaceLayoutItem::CreateHorizontalStrut(spacing), 0, 2, 2)
|
||||
BTabView* tabView = new BTabView("settings pages", B_WIDTH_FROM_LABEL);
|
||||
|
||||
.Add(fSerifFontView->CreateFontsLabelLayoutItem(), 0, 3)
|
||||
.Add(fSerifFontView->CreateFontsMenuBarLayoutItem(), 1, 3)
|
||||
.Add(fSerifFontView->PreviewBox(), 0, 4, 2)
|
||||
.Add(BSpaceLayoutItem::CreateHorizontalStrut(spacing), 0, 5, 2)
|
||||
|
||||
.Add(fSansSerifFontView->CreateFontsLabelLayoutItem(), 0, 6)
|
||||
.Add(fSansSerifFontView->CreateFontsMenuBarLayoutItem(), 1, 6)
|
||||
.Add(fSansSerifFontView->PreviewBox(), 0, 7, 2)
|
||||
.Add(BSpaceLayoutItem::CreateHorizontalStrut(spacing), 0, 8, 2)
|
||||
|
||||
.Add(fFixedFontView->CreateFontsLabelLayoutItem(), 0, 9)
|
||||
.Add(fFixedFontView->CreateFontsMenuBarLayoutItem(), 1, 9)
|
||||
.Add(fFixedFontView->PreviewBox(), 0, 10, 2)
|
||||
.Add(BSpaceLayoutItem::CreateHorizontalStrut(spacing), 0, 11, 2)
|
||||
|
||||
.Add(fStandardSizesMenu->CreateLabelLayoutItem(), 0, 12)
|
||||
.Add(fStandardSizesMenu->CreateMenuBarLayoutItem(), 1, 12)
|
||||
.Add(fFixedSizesMenu->CreateLabelLayoutItem(), 0, 13)
|
||||
.Add(fFixedSizesMenu->CreateMenuBarLayoutItem(), 1, 13)
|
||||
.SetInsets(spacing, spacing, spacing, spacing)
|
||||
)
|
||||
.Add(new BSeparatorView(B_HORIZONTAL, B_PLAIN_BORDER))
|
||||
AddChild(BGroupLayoutBuilder(B_VERTICAL, spacing)
|
||||
.Add(tabView)
|
||||
.Add(BGroupLayoutBuilder(B_HORIZONTAL, spacing)
|
||||
.Add(fRevertButton)
|
||||
.AddGlue()
|
||||
.Add(fCancelButton)
|
||||
.Add(fApplyButton)
|
||||
.SetInsets(spacing, spacing, spacing, spacing)
|
||||
)
|
||||
.SetInsets(spacing, spacing, spacing, spacing)
|
||||
);
|
||||
|
||||
tabView->AddTab(_CreateGeneralPage(spacing));
|
||||
tabView->AddTab(_CreateFontsPage(spacing));
|
||||
|
||||
AddHandler(fStandardFontView);
|
||||
fStandardFontView->AttachedToLooper();
|
||||
|
||||
@ -229,6 +197,118 @@ SettingsWindow::Show()
|
||||
// #pragma mark - private
|
||||
|
||||
|
||||
BView*
|
||||
SettingsWindow::_CreateGeneralPage(float spacing)
|
||||
{
|
||||
fDownloadFolderControl = new BTextControl("download folder",
|
||||
TR("Download folder:"), "", new BMessage(MSG_DOWNLOAD_FOLDER_CHANGED));
|
||||
fDownloadFolderControl->SetEnabled(false);
|
||||
|
||||
fNewPageBehaviorCloneCurrentItem = new BMenuItem(TR("Clone current page"),
|
||||
NULL);
|
||||
fNewPageBehaviorCloneCurrentItem->SetEnabled(false);
|
||||
fNewPageBehaviorOpenHomeItem = new BMenuItem(TR("Open home page"), NULL);
|
||||
fNewPageBehaviorOpenHomeItem->SetEnabled(false);
|
||||
fNewPageBehaviorOpenSearchItem = new BMenuItem(TR("Open search page"),
|
||||
NULL);
|
||||
fNewPageBehaviorOpenSearchItem->SetEnabled(false);
|
||||
fNewPageBehaviorOpenBlankItem = new BMenuItem(TR("Open blank page"), NULL);
|
||||
fNewPageBehaviorOpenBlankItem->SetMarked(true);
|
||||
|
||||
BPopUpMenu* newPageBehaviorMenu = new BPopUpMenu("New pages");
|
||||
newPageBehaviorMenu->AddItem(fNewPageBehaviorCloneCurrentItem);
|
||||
newPageBehaviorMenu->AddItem(fNewPageBehaviorOpenHomeItem);
|
||||
newPageBehaviorMenu->AddItem(fNewPageBehaviorOpenSearchItem);
|
||||
newPageBehaviorMenu->AddItem(fNewPageBehaviorOpenBlankItem);
|
||||
fNewPageBehaviorMenu = new BMenuField("new page behavior",
|
||||
TR("New pages:"), newPageBehaviorMenu,
|
||||
new BMessage(MSG_NEW_PAGE_BEHAVIOR_CHANGED));
|
||||
fNewPageBehaviorMenu->SetEnabled(false);
|
||||
|
||||
fDaysInGoMenuControl = new BTextControl("days in go menu",
|
||||
TR("Number of days to keep links in Go menu:"), "",
|
||||
new BMessage(MSG_GO_MENU_DAYS_CHANGED));
|
||||
BString maxHistoryAge;
|
||||
maxHistoryAge << BrowsingHistory::DefaultInstance()->MaxHistoryItemAge();
|
||||
fDaysInGoMenuControl->SetText(maxHistoryAge.String());
|
||||
for (uchar i = 0; i < '0'; i++)
|
||||
fDaysInGoMenuControl->TextView()->DisallowChar(i);
|
||||
for (uchar i = '9' + 1; i <= 128; i++)
|
||||
fDaysInGoMenuControl->TextView()->DisallowChar(i);
|
||||
|
||||
BView* view = BGridLayoutBuilder(spacing / 2, spacing / 2)
|
||||
.Add(fDownloadFolderControl->CreateLabelLayoutItem(), 0, 1)
|
||||
.Add(fDownloadFolderControl->CreateTextViewLayoutItem(), 1, 1)
|
||||
|
||||
.Add(fNewPageBehaviorMenu->CreateLabelLayoutItem(), 0, 2)
|
||||
.Add(fNewPageBehaviorMenu->CreateMenuBarLayoutItem(), 1, 2)
|
||||
|
||||
.Add(fDaysInGoMenuControl->CreateLabelLayoutItem(), 0, 3)
|
||||
.Add(fDaysInGoMenuControl->CreateTextViewLayoutItem(), 1, 3)
|
||||
|
||||
.Add(BSpaceLayoutItem::CreateHorizontalStrut(spacing), 0, 4, 2)
|
||||
|
||||
.SetInsets(spacing, spacing, spacing, spacing)
|
||||
;
|
||||
view->SetName("General");
|
||||
return view;
|
||||
}
|
||||
|
||||
|
||||
BView*
|
||||
SettingsWindow::_CreateFontsPage(float spacing)
|
||||
{
|
||||
fStandardFontView = new FontSelectionView("standard", TR("Standard font:"),
|
||||
true, be_plain_font);
|
||||
BFont defaultSerifFont = _FindDefaultSerifFont();
|
||||
fSerifFontView = new FontSelectionView("serif", TR("Serif font:"), true,
|
||||
&defaultSerifFont);
|
||||
fSansSerifFontView = new FontSelectionView("sans serif",
|
||||
TR("Sans serif font:"), true, be_plain_font);
|
||||
fFixedFontView = new FontSelectionView("fixed", TR("Fixed font:"), true,
|
||||
be_fixed_font);
|
||||
|
||||
fStandardSizesMenu = new BMenuField("standard font size",
|
||||
TR("Default standard font size:"), new BPopUpMenu("sizes"), NULL);
|
||||
_BuildSizesMenu(fStandardSizesMenu->Menu(), MSG_STANDARD_FONT_SIZE_SELECTED);
|
||||
|
||||
fFixedSizesMenu = new BMenuField("fixed font size",
|
||||
TR("Default fixed font size:"), new BPopUpMenu("sizes"), NULL);
|
||||
_BuildSizesMenu(fFixedSizesMenu->Menu(), MSG_FIXED_FONT_SIZE_SELECTED);
|
||||
|
||||
BView* view = BGridLayoutBuilder(spacing / 2, spacing / 2)
|
||||
.Add(fStandardFontView->CreateFontsLabelLayoutItem(), 0, 0)
|
||||
.Add(fStandardFontView->CreateFontsMenuBarLayoutItem(), 1, 0)
|
||||
.Add(fStandardFontView->PreviewBox(), 0, 1, 2)
|
||||
.Add(BSpaceLayoutItem::CreateHorizontalStrut(spacing), 0, 2, 2)
|
||||
|
||||
.Add(fSerifFontView->CreateFontsLabelLayoutItem(), 0, 3)
|
||||
.Add(fSerifFontView->CreateFontsMenuBarLayoutItem(), 1, 3)
|
||||
.Add(fSerifFontView->PreviewBox(), 0, 4, 2)
|
||||
.Add(BSpaceLayoutItem::CreateHorizontalStrut(spacing), 0, 5, 2)
|
||||
|
||||
.Add(fSansSerifFontView->CreateFontsLabelLayoutItem(), 0, 6)
|
||||
.Add(fSansSerifFontView->CreateFontsMenuBarLayoutItem(), 1, 6)
|
||||
.Add(fSansSerifFontView->PreviewBox(), 0, 7, 2)
|
||||
.Add(BSpaceLayoutItem::CreateHorizontalStrut(spacing), 0, 8, 2)
|
||||
|
||||
.Add(fFixedFontView->CreateFontsLabelLayoutItem(), 0, 9)
|
||||
.Add(fFixedFontView->CreateFontsMenuBarLayoutItem(), 1, 9)
|
||||
.Add(fFixedFontView->PreviewBox(), 0, 10, 2)
|
||||
.Add(BSpaceLayoutItem::CreateHorizontalStrut(spacing), 0, 11, 2)
|
||||
|
||||
.Add(fStandardSizesMenu->CreateLabelLayoutItem(), 0, 12)
|
||||
.Add(fStandardSizesMenu->CreateMenuBarLayoutItem(), 1, 12)
|
||||
.Add(fFixedSizesMenu->CreateLabelLayoutItem(), 0, 13)
|
||||
.Add(fFixedSizesMenu->CreateMenuBarLayoutItem(), 1, 13)
|
||||
|
||||
.SetInsets(spacing, spacing, spacing, spacing)
|
||||
;
|
||||
view->SetName("Fonts");
|
||||
return view;
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
SettingsWindow::_ApplySettings()
|
||||
{
|
||||
@ -255,6 +335,16 @@ SettingsWindow::_ApplySettings()
|
||||
// This will find all currently instantiated page settings and apply
|
||||
// the default values, unless the page settings have local overrides.
|
||||
BWebSettings::Default()->Apply();
|
||||
|
||||
int32 maxHistoryAge = atoi(fDaysInGoMenuControl->Text());
|
||||
if (maxHistoryAge <= 0)
|
||||
maxHistoryAge = 1;
|
||||
if (maxHistoryAge >= 35)
|
||||
maxHistoryAge = 35;
|
||||
BString text;
|
||||
text << maxHistoryAge;
|
||||
fDaysInGoMenuControl->SetText(text.String());
|
||||
BrowsingHistory::DefaultInstance()->SetMaxHistoryItemAge(maxHistoryAge);
|
||||
}
|
||||
|
||||
|
||||
|
@ -32,6 +32,8 @@
|
||||
class BButton;
|
||||
class BMenu;
|
||||
class BMenuField;
|
||||
class BMenuItem;
|
||||
class BTextControl;
|
||||
class FontSelectionView;
|
||||
class SettingsMessage;
|
||||
|
||||
@ -48,6 +50,9 @@ public:
|
||||
virtual void Show();
|
||||
|
||||
private:
|
||||
BView* _CreateGeneralPage(float spacing);
|
||||
BView* _CreateFontsPage(float spacing);
|
||||
|
||||
void _ApplySettings();
|
||||
void _RevertSettings();
|
||||
|
||||
@ -61,6 +66,14 @@ private:
|
||||
private:
|
||||
SettingsMessage* fSettings;
|
||||
|
||||
BTextControl* fDownloadFolderControl;
|
||||
BMenuField* fNewPageBehaviorMenu;
|
||||
BMenuItem* fNewPageBehaviorCloneCurrentItem;
|
||||
BMenuItem* fNewPageBehaviorOpenHomeItem;
|
||||
BMenuItem* fNewPageBehaviorOpenSearchItem;
|
||||
BMenuItem* fNewPageBehaviorOpenBlankItem;
|
||||
BTextControl* fDaysInGoMenuControl;
|
||||
|
||||
FontSelectionView* fStandardFontView;
|
||||
FontSelectionView* fSerifFontView;
|
||||
FontSelectionView* fSansSerifFontView;
|
||||
|
Loading…
Reference in New Issue
Block a user