Moving Deskbar options to a dedicated preferences window. Adding a preference application that simply tells Deskbar to open that window. Adjusting default settings Recent Folders from off to 10, and Auto-raise from on to off.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33363 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Jonas Sundström
2009-09-29 21:47:45 +00:00
parent 920de8e31b
commit 21f3e082b1
12 changed files with 551 additions and 126 deletions
+4 -3
View File
@@ -68,9 +68,10 @@ SYSTEM_APPS = AboutSystem ActivityMonitor CharacterMap CodyCam DeskCalc DiskProb
PackageInstaller People PoorMan PowerStatus ProcessController Screenshot PackageInstaller People PoorMan PowerStatus ProcessController Screenshot
ShowImage SoundRecorder StyledEdit Terminal TextSearch TV Workspaces ShowImage SoundRecorder StyledEdit Terminal TextSearch TV Workspaces
; ;
SYSTEM_PREFERENCES = Appearance Backgrounds CPUFrequency DataTranslations E-mail SYSTEM_PREFERENCES = Appearance Backgrounds CPUFrequency DataTranslations
FileTypes Fonts Keyboard Keymap Locale Media Mouse Network OpenGL Printers <preference>Deskbar E-mail FileTypes Fonts Keyboard Keymap Locale Media
Screen ScreenSaver Sounds Time Touchpad <preference>Tracker VirtualMemory Mouse Network OpenGL Printers Screen ScreenSaver Sounds Time Touchpad
<preference>Tracker VirtualMemory
; ;
SYSTEM_DEMOS = BSnow Chart Clock Cortex FontDemo SYSTEM_DEMOS = BSnow Chart Clock Cortex FontDemo
GLTeapot Haiku3d Mandelbrot Pairs Playground Pulse Sudoku Gradients GLTeapot Haiku3d Mandelbrot Pairs Playground Pulse Sudoku Gradients
+29 -39
View File
@@ -51,8 +51,6 @@ All rights reserved.
# include <RosterPrivate.h> # include <RosterPrivate.h>
#endif #endif
#include "FavoritesConfig.h"
#include "icons.h" #include "icons.h"
#include "tracker_private.h" #include "tracker_private.h"
#include "BarApp.h" #include "BarApp.h"
@@ -101,7 +99,7 @@ main()
TBarApp::TBarApp() TBarApp::TBarApp()
: BApplication(kDeskbarSignature), : BApplication(kDeskbarSignature),
fSettingsFile(NULL), fSettingsFile(NULL),
fConfigWindow(NULL) fPreferencesWindow(NULL)
{ {
InitSettings(); InitSettings();
InitIconPreloader(); InitIconPreloader();
@@ -164,9 +162,23 @@ TBarApp::~TBarApp()
bool bool
TBarApp::QuitRequested() TBarApp::QuitRequested()
{ {
if (CurrentMessage() && CurrentMessage()->FindBool("shortcut")) // don't allow user quitting
// don't allow user quitting if (CurrentMessage() && CurrentMessage()->FindBool("shortcut")) {
// but allow quitting to hide fPreferencesWindow
int32 index = 0;
BWindow* window = NULL;
while ((window = WindowAt(index++)) != NULL) {
if (window == fPreferencesWindow) {
if (fPreferencesWindow->Lock()) {
if (fPreferencesWindow->IsActive())
fPreferencesWindow->PostMessage(B_QUIT_REQUESTED);
fPreferencesWindow->Unlock();
}
break;
}
}
return false; return false;
}
// system quitting, call inherited to notify all loopers // system quitting, call inherited to notify all loopers
fBarWindow->SaveSettings(); fBarWindow->SaveSettings();
@@ -221,7 +233,7 @@ TBarApp::InitSettings()
settings.recentDocsCount = 10; settings.recentDocsCount = 10;
settings.timeShowSeconds = false; settings.timeShowSeconds = false;
settings.timeShowMil = false; settings.timeShowMil = false;
settings.recentFoldersCount = 0; // default is hidden settings.recentFoldersCount = 10;
settings.timeShowEuro = false; settings.timeShowEuro = false;
settings.alwaysOnTop = false; settings.alwaysOnTop = false;
settings.timeFullDate = false; settings.timeFullDate = false;
@@ -229,7 +241,7 @@ TBarApp::InitSettings()
settings.sortRunningApps = false; settings.sortRunningApps = false;
settings.superExpando = false; settings.superExpando = false;
settings.expandNewTeams = false; settings.expandNewTeams = false;
settings.autoRaise = true; settings.autoRaise = false;
BPath dirPath; BPath dirPath;
const char *settingsFileName = "Deskbar_settings"; const char *settingsFileName = "Deskbar_settings";
@@ -316,13 +328,7 @@ TBarApp::MessageReceived(BMessage *message)
break; break;
case kConfigShow: case kConfigShow:
if (message->FindInt32("count", &count) == B_OK) ShowPreferencesWindow();
fSettings.recentDocsCount = count;
break;
case kUpdateAppsCount:
if (message->FindInt32("count", &count) == B_OK)
fSettings.recentAppsCount = count;
break; break;
case kShowBeMenu: case kShowBeMenu:
@@ -339,19 +345,17 @@ TBarApp::MessageReceived(BMessage *message)
} }
break; break;
case msg_config_db: case kUpdateRecentCounts:
ShowConfigWindow();
break;
case kConfigClose:
if (message->FindInt32("applications", &count) == B_OK) if (message->FindInt32("applications", &count) == B_OK)
fSettings.recentAppsCount = count; fSettings.recentAppsCount = count;
if (message->FindInt32("folders", &count) == B_OK) if (message->FindInt32("folders", &count) == B_OK)
fSettings.recentFoldersCount = count; fSettings.recentFoldersCount = count;
if (message->FindInt32("documents", &count) == B_OK) if (message->FindInt32("documents", &count) == B_OK)
fSettings.recentDocsCount = count; fSettings.recentDocsCount = count;
break;
fConfigWindow = NULL; case kConfigClose:
fPreferencesWindow = NULL;
break; break;
case B_SOME_APP_LAUNCHED: case B_SOME_APP_LAUNCHED:
@@ -691,27 +695,13 @@ TBarApp::RemoveTeam(team_id team)
void void
TBarApp::ShowConfigWindow() TBarApp::ShowPreferencesWindow()
{ {
if (fConfigWindow) if (fPreferencesWindow)
fConfigWindow->Activate(); fPreferencesWindow->Activate();
else { else {
// always start at top, could be cached and we could start fPreferencesWindow = new PreferencesWindow(BRect(0, 0, 320, 240));
// where we left off. fPreferencesWindow->Show();
BPath path;
find_directory (B_USER_DESKBAR_DIRECTORY, &path);
entry_ref startref;
get_ref_for_path(path.Path(), &startref);
fConfigWindow = new TFavoritesConfigWindow(BRect(0, 0, 320, 240),
#ifdef __HAIKU__
"Configure Deskbar Menu", false, B_ANY_NODE,
#else
"Configure Be Menu", false, B_ANY_NODE,
#endif
BMessenger(this), &startref,
fSettings.recentAppsCount, fSettings.recentDocsCount,
fSettings.recentFoldersCount);
} }
} }
+4 -7
View File
@@ -38,6 +38,7 @@ All rights reserved.
#include <Application.h> #include <Application.h>
#include <List.h> #include <List.h>
#include "BarWindow.h" #include "BarWindow.h"
#include "PreferencesWindow.h"
/* ------------------------------------ */ /* ------------------------------------ */
@@ -68,7 +69,6 @@ const uint32 msg_Mac = 'WcOS';
const uint32 msg_Be = 'Tabs'; const uint32 msg_Be = 'Tabs';
const uint32 msg_AlwaysTop = 'TTop'; const uint32 msg_AlwaysTop = 'TTop';
const uint32 msg_ToggleDraggers = 'TDra'; const uint32 msg_ToggleDraggers = 'TDra';
const uint32 msg_config_db = 'cnfg';
const uint32 msg_Unsubscribe = 'Unsb'; const uint32 msg_Unsubscribe = 'Unsb';
const uint32 msg_AddTeam = 'AdTm'; const uint32 msg_AddTeam = 'AdTm';
const uint32 msg_RemoveTeam = 'RmTm'; const uint32 msg_RemoveTeam = 'RmTm';
@@ -131,10 +131,6 @@ const uint32 kValidSettingsSize10 = sizeof(bool) + kValidSettingsSize9;
class TBarView; class TBarView;
class BFile; class BFile;
namespace BPrivate {
class TFavoritesConfigWindow;
}
using namespace BPrivate; using namespace BPrivate;
class TBarApp : public BApplication { class TBarApp : public BApplication {
@@ -163,7 +159,7 @@ class TBarApp : public BApplication {
void InitSettings(); void InitSettings();
void SaveSettings(); void SaveSettings();
void ShowConfigWindow(); void ShowPreferencesWindow();
TBarWindow *fBarWindow; TBarWindow *fBarWindow;
BMessenger fSwitcherMessenger; BMessenger fSwitcherMessenger;
@@ -171,7 +167,7 @@ class TBarApp : public BApplication {
BFile *fSettingsFile; BFile *fSettingsFile;
desk_settings fSettings; desk_settings fSettings;
TFavoritesConfigWindow *fConfigWindow; PreferencesWindow* fPreferencesWindow;
static BLocker sSubscriberLock; static BLocker sSubscriberLock;
static BList sBarTeamInfoList; static BList sBarTeamInfoList;
@@ -179,3 +175,4 @@ class TBarApp : public BApplication {
}; };
#endif // BAR_APP_H #endif // BAR_APP_H
+1
View File
@@ -134,6 +134,7 @@ class TBarView : public BView {
TExpandoMenuBar *ExpandoMenuBar() const; TExpandoMenuBar *ExpandoMenuBar() const;
TBarMenuBar *BarMenuBar() const; TBarMenuBar *BarMenuBar() const;
friend class TBeMenu; friend class TBeMenu;
friend class PreferencesWindow;
private: private:
status_t SendDragMessage(const char *signature, entry_ref *ref = NULL); status_t SendDragMessage(const char *signature, entry_ref *ref = NULL);
+4 -77
View File
@@ -255,83 +255,10 @@ TBeMenu::AddStandardBeMenuItems()
AddItem(mountMenu); AddItem(mountMenu);
#endif #endif
// insert preferences menu item = new BMenuItem("Deskbar Preferences" B_UTF8_ELLIPSIS,
BMenu *subMenu = new BMenu("Deskbar Settings"); new BMessage(kConfigShow));
subMenu->SetEnabled(!dragging);
#ifdef __HAIKU__
item = new BMenuItem("Configure Deskbar Menu"B_UTF8_ELLIPSIS, new BMessage(msg_config_db));
#else
item = new BMenuItem("Configure Be Menu"B_UTF8_ELLIPSIS, new BMessage(msg_config_db));
#endif
item->SetTarget(be_app); item->SetTarget(be_app);
subMenu->AddItem(item); AddItem(item);
item = new BMenuItem("Always on Top", new BMessage(msg_AlwaysTop));
item->SetTarget(be_app);
// set checkbox based on current state of Deskbar's main window feel
if (BWindow *window = static_cast<TBarApp *>(be_app)->BarWindow())
item->SetMarked((window->Feel() & B_FLOATING_ALL_WINDOW_FEEL) != 0);
subMenu->AddItem(item);
item = new BMenuItem("Auto Raise", new BMessage(msg_AutoRaise));
item->SetTarget(be_app);
item->SetMarked(static_cast<TBarApp *>(be_app)->Settings()->autoRaise);
subMenu->AddItem(item);
item = new BMenuItem("Sort Running Applications", new BMessage(msg_sortRunningApps));
item->SetTarget(be_app);
item->SetMarked(static_cast<TBarApp *>(be_app)->Settings()->sortRunningApps);
subMenu->AddItem(item);
item = new BMenuItem("Tracker Always First", new BMessage(msg_trackerFirst));
item->SetTarget(be_app);
item->SetMarked(static_cast<TBarApp *>(be_app)->Settings()->trackerAlwaysFirst);
subMenu->AddItem(item);
subMenu->AddSeparatorItem();
TReplicantTray *replicantTray = ((TBarApp *)be_app)->BarView()->fReplicantTray;
item = new BMenuItem("24 Hour Clock", new BMessage(kMsgMilTime));
item->SetTarget(replicantTray);
item->SetEnabled(((TBarApp *)be_app)->BarView()->ShowingClock());
item->SetMarked(replicantTray->ShowingMiltime());
subMenu->AddItem(item);
item = new BMenuItem("Show Seconds", new BMessage(kMsgShowSeconds));
item->SetTarget(replicantTray);
item->SetEnabled(((TBarApp *)be_app)->BarView()->ShowingClock());
item->SetMarked(replicantTray->ShowingSeconds());
subMenu->AddItem(item);
item = new BMenuItem("European Date", new BMessage(kMsgEuroDate));
item->SetTarget(replicantTray);
item->SetEnabled(((TBarApp *)be_app)->BarView()->ShowingClock());
item->SetMarked(replicantTray->ShowingEuroDate());
subMenu->AddItem(item);
item = new BMenuItem("Full Date", new BMessage(kMsgFullDate));
item->SetTarget(replicantTray);
item->SetEnabled(replicantTray->CanShowFullDate());
item->SetMarked(replicantTray->ShowingFullDate());
subMenu->AddItem(item);
subMenu->AddSeparatorItem();
item = new BMenuItem("Show Application Expander", new BMessage(msg_superExpando));
item->SetTarget(be_app);
item->SetMarked(static_cast<TBarApp *>(be_app)->Settings()->superExpando);
subMenu->AddItem(item);
item = new BMenuItem("Expand New Applications", new BMessage(msg_expandNewTeams));
item->SetTarget(be_app);
item->SetMarked(static_cast<TBarApp *>(be_app)->Settings()->expandNewTeams);
item->SetEnabled(static_cast<TBarApp *>(be_app)->Settings()->superExpando);
subMenu->AddItem(item);
subMenu->SetFont(be_plain_font);
AddItem(subMenu);
#ifndef __HAIKU__ #ifndef __HAIKU__
if ((modifiers() & (B_LEFT_SHIFT_KEY|B_LEFT_CONTROL_KEY|B_LEFT_COMMAND_KEY)) if ((modifiers() & (B_LEFT_SHIFT_KEY|B_LEFT_CONTROL_KEY|B_LEFT_COMMAND_KEY))
@@ -448,7 +375,7 @@ TBeMenu::ResetTargets()
break; break;
case msg_ToggleDraggers: case msg_ToggleDraggers:
case msg_config_db: case kConfigShow:
case msg_AlwaysTop: case msg_AlwaysTop:
case kMsgShowSeconds: case kMsgShowSeconds:
case kMsgMilTime: case kMsgMilTime:
+2
View File
@@ -3,6 +3,7 @@ SubDir HAIKU_TOP src apps deskbar ;
SetSubDirSupportedPlatformsBeOSCompatible ; SetSubDirSupportedPlatformsBeOSCompatible ;
UsePrivateHeaders app interface shared tracker ; UsePrivateHeaders app interface shared tracker ;
UsePrivateHeaders private shared ;
SubDirHdrs $(HAIKU_TOP) src kits tracker ; SubDirHdrs $(HAIKU_TOP) src kits tracker ;
AddResources Deskbar : Deskbar.rdef icon-freelogo.rdef icons.rdef ; AddResources Deskbar : Deskbar.rdef icon-freelogo.rdef icons.rdef ;
@@ -33,6 +34,7 @@ Application Deskbar :
CalendarMenuItem.cpp CalendarMenuItem.cpp
DeskBarUtils.cpp DeskBarUtils.cpp
ExpandoMenuBar.cpp ExpandoMenuBar.cpp
PreferencesWindow.cpp
ShowHideMenuItem.cpp ShowHideMenuItem.cpp
StatusView.cpp StatusView.cpp
StatusViewShelf.cpp StatusViewShelf.cpp
+348
View File
@@ -0,0 +1,348 @@
/*
* Copyright 2009 Haiku, Inc.
* All Rights Reserved. Distributed under the terms of the MIT License.
*
* Authors:
* Jonas Sundström, jonas@kirilla.com
*/
#include "PreferencesWindow.h"
#include <CheckBox.h>
#include <GroupLayout.h>
#include <LayoutBuilder.h>
#include <OpenWithTracker.h>
#include <RadioButton.h>
#include <SeparatorView.h>
#include <ctype.h>
#include "BarApp.h"
#include "StatusView.h"
PreferencesWindow::PreferencesWindow(BRect frame)
:
BWindow(frame, "Deskbar Preferences", B_TITLED_WINDOW, B_NOT_RESIZABLE
| B_AUTO_UPDATE_SIZE_LIMITS | B_NOT_ZOOMABLE)
{
// Controls
fMenuRecentDocuments = new BCheckBox("Recent Documents:",
new BMessage(kUpdateRecentCounts));
fMenuRecentApplications = new BCheckBox("Recent Applications:",
new BMessage(kUpdateRecentCounts));
fMenuRecentFolders = new BCheckBox("Recent Folders:",
new BMessage(kUpdateRecentCounts));
fMenuRecentDocumentCount = new BTextControl(NULL, NULL,
new BMessage(kUpdateRecentCounts));
fMenuRecentApplicationCount = new BTextControl(NULL, NULL,
new BMessage(kUpdateRecentCounts));
fMenuRecentFolderCount = new BTextControl(NULL, NULL,
new BMessage(kUpdateRecentCounts));
fAppsSort = new BCheckBox("Sort Running Applications",
new BMessage(msg_sortRunningApps));
fAppsSortTrackerFirst = new BCheckBox("Tracker Always First",
new BMessage(msg_trackerFirst));
fAppsShowExpanders = new BCheckBox("Show Application Expander",
new BMessage(msg_superExpando));
fAppsExpandNew = new BCheckBox("Expand New Applications",
new BMessage(msg_expandNewTeams));
fClock24Hours = new BCheckBox("24 Hour Clock", new BMessage(kMsgMilTime));
fClockSeconds = new BCheckBox("Show Seconds",
new BMessage(kMsgShowSeconds));
fClockEuropeanDate = new BCheckBox("European Date",
new BMessage(kMsgEuroDate));
fClockFullDate = new BCheckBox("Full Date", new BMessage(kMsgFullDate));
fWindowAlwaysOnTop = new BCheckBox("Always On Top",
new BMessage(msg_AlwaysTop));
fWindowAutoRaise = new BCheckBox("Auto-raise", new BMessage(msg_AutoRaise));
BTextView* docTextView = fMenuRecentDocumentCount->TextView();
BTextView* appTextView = fMenuRecentApplicationCount->TextView();
BTextView* folderTextView = fMenuRecentFolderCount->TextView();
for (int32 i = 0; i < 256; i++) {
if (!isdigit(i)) {
docTextView->DisallowChar(i);
appTextView->DisallowChar(i);
folderTextView->DisallowChar(i);
}
}
docTextView->SetMaxBytes(4);
appTextView->SetMaxBytes(4);
folderTextView->SetMaxBytes(4);
// Values
TBarApp* barApp = static_cast<TBarApp*>(be_app);
desk_settings* appSettings = barApp->Settings();;
fAppsSort->SetValue(appSettings->sortRunningApps);
fAppsSortTrackerFirst->SetValue(appSettings->trackerAlwaysFirst);
fAppsShowExpanders->SetValue(appSettings->superExpando);
fAppsExpandNew->SetValue(appSettings->expandNewTeams);
fMenuRecentDocuments->SetValue(false);
fMenuRecentApplications->SetValue(false);
fMenuRecentFolders->SetValue(false);
fMenuRecentDocumentCount->SetEnabled(false);
fMenuRecentApplicationCount->SetEnabled(false);
fMenuRecentFolderCount->SetEnabled(false);
int32 docCount = appSettings->recentDocsCount;
int32 appCount = appSettings->recentAppsCount;
int32 folderCount = appSettings->recentFoldersCount;
if (docCount > 0) {
fMenuRecentDocuments->SetValue(true);
fMenuRecentDocumentCount->SetEnabled(true);
}
if (appCount > 0) {
fMenuRecentApplications->SetValue(true);
fMenuRecentApplicationCount->SetEnabled(true);
}
if (folderCount > 0) {
fMenuRecentFolders->SetValue(true);
fMenuRecentFolderCount->SetEnabled(true);
}
BString docString;
BString appString;
BString folderString;
docString << docCount;
appString << appCount;
folderString << folderCount;
fMenuRecentDocumentCount->SetText(docString.String());
fMenuRecentApplicationCount->SetText(appString.String());
fMenuRecentFolderCount->SetText(folderString.String());
TReplicantTray* replicantTray = barApp->BarView()->fReplicantTray;
fClock24Hours->SetValue(replicantTray->ShowingMiltime());
fClockSeconds->SetValue(replicantTray->ShowingSeconds());
fClockEuropeanDate->SetValue(replicantTray->ShowingEuroDate());
fClockFullDate->SetValue(replicantTray->ShowingFullDate());
bool showingClock = barApp->BarView()->ShowingClock();
fClock24Hours->SetEnabled(showingClock);
fClockSeconds->SetEnabled(showingClock);
fClockEuropeanDate->SetEnabled(showingClock);
fClockFullDate->SetEnabled(replicantTray->CanShowFullDate());
fWindowAlwaysOnTop->SetValue(appSettings->alwaysOnTop);
fWindowAutoRaise->SetValue(appSettings->autoRaise);
_EnableDisableDependentItems();
// Targets
fAppsSort->SetTarget(be_app);
fAppsSortTrackerFirst->SetTarget(be_app);
fAppsExpandNew->SetTarget(be_app);
fClock24Hours->SetTarget(replicantTray);
fClockSeconds->SetTarget(replicantTray);
fClockEuropeanDate->SetTarget(replicantTray);
fClockFullDate->SetTarget(replicantTray);
fWindowAlwaysOnTop->SetTarget(be_app);
fWindowAutoRaise->SetTarget(be_app);
// Layout
fMenuBox = new BBox("fMenuBox");
fAppsBox = new BBox("fAppsBox");
fClockBox = new BBox("fClockBox");
fWindowBox = new BBox("fWindowBox");
BStringView* menuString = new BStringView(NULL, "Menu");
BStringView* appsString = new BStringView(NULL, "Applications");
BStringView* clockString = new BStringView(NULL, "Clock");
BStringView* windowString = new BStringView(NULL, "Window");
BFont font;
menuString->GetFont(&font);
font.SetFace(B_BOLD_FACE);
menuString->SetFont(&font, B_FONT_FACE);
appsString->SetFont(&font, B_FONT_FACE);
clockString->SetFont(&font, B_FONT_FACE);
windowString->SetFont(&font, B_FONT_FACE);
fMenuBox->SetLabel(menuString);
fAppsBox->SetLabel(appsString);
fClockBox->SetLabel(clockString);
fWindowBox->SetLabel(windowString);
BView* view;
view = BLayoutBuilder::Group<>()
.AddGroup(B_VERTICAL, 10)
.AddGroup(B_HORIZONTAL, 10)
.AddGroup(B_VERTICAL, 10)
.Add(fMenuRecentDocuments)
.Add(fMenuRecentFolders)
.Add(fMenuRecentApplications)
.End()
.AddGroup(B_VERTICAL, 10)
.Add(fMenuRecentDocumentCount)
.Add(fMenuRecentApplicationCount)
.Add(fMenuRecentFolderCount)
.End()
.End()
.Add(new BButton("Edit Menu" B_UTF8_ELLIPSIS,
new BMessage(kEditMenuInTracker)))
.SetInsets(14, 14, 14, 14)
.End()
.View();
fMenuBox->AddChild(view);
view = BLayoutBuilder::Group<>()
.AddGroup(B_VERTICAL, 10)
.Add(fAppsSort)
.Add(fAppsSortTrackerFirst)
.Add(fAppsShowExpanders)
.AddGroup(B_HORIZONTAL, 0)
.SetInsets(20, 0, 0, 0)
.Add(fAppsExpandNew)
.End()
.SetInsets(14, 14, 14, 14)
.End()
.View();
fAppsBox->AddChild(view);
view = BLayoutBuilder::Group<>()
.AddGroup(B_VERTICAL, 10)
.Add(fClock24Hours)
.Add(fClockSeconds)
.Add(fClockEuropeanDate)
.Add(fClockFullDate)
.SetInsets(14, 14, 14, 14)
.End()
.View();
fClockBox->AddChild(view);
view = BLayoutBuilder::Group<>()
.AddGroup(B_VERTICAL, 10)
.Add(fWindowAlwaysOnTop)
.Add(fWindowAutoRaise)
.SetInsets(14, 14, 14, 14)
.End()
.View();
fWindowBox->AddChild(view);
BLayoutBuilder::Group<>(this)
.AddGroup(B_VERTICAL, 10)
.Add(fMenuBox)
.Add(fWindowBox)
.Add(fAppsBox)
.Add(fClockBox)
.SetInsets(14, 14, 14, 14)
.End()
.End();
CenterOnScreen();
}
PreferencesWindow::~PreferencesWindow()
{
_UpdateRecentCounts();
be_app->PostMessage(kConfigClose);
}
void
PreferencesWindow::MessageReceived(BMessage* message)
{
switch (message->what) {
case kEditMenuInTracker:
OpenWithTracker(B_USER_DESKBAR_DIRECTORY);
break;
case kUpdateRecentCounts:
_UpdateRecentCounts();
break;
case msg_superExpando:
_EnableDisableDependentItems();
be_app->PostMessage(message);
break;
default:
BWindow::MessageReceived(message);
break;
}
}
void
PreferencesWindow::_UpdateRecentCounts()
{
BMessage message(kUpdateRecentCounts);
int32 docCount = atoi(fMenuRecentDocumentCount->Text());
int32 appCount = atoi(fMenuRecentApplicationCount->Text());
int32 folderCount = atoi(fMenuRecentFolderCount->Text());
if (docCount <= 0 || fMenuRecentDocuments->Value() == false)
message.AddInt32("documents", 0);
else
message.AddInt32("documents", docCount);
if (appCount <= 0 || fMenuRecentApplications->Value() == false)
message.AddInt32("applications", 0);
else
message.AddInt32("applications", appCount);
if (folderCount <= 0 || fMenuRecentFolders->Value() == false)
message.AddInt32("folders", 0);
else
message.AddInt32("folders", folderCount);
be_app->PostMessage(&message);
_EnableDisableDependentItems();
}
void
PreferencesWindow::_EnableDisableDependentItems()
{
if (fAppsShowExpanders->Value())
fAppsExpandNew->SetEnabled(true);
else
fAppsExpandNew->SetEnabled(false);
if (fMenuRecentDocuments->Value())
fMenuRecentDocumentCount->SetEnabled(true);
else
fMenuRecentDocumentCount->SetEnabled(false);
if (fMenuRecentApplications->Value())
fMenuRecentApplicationCount->SetEnabled(true);
else
fMenuRecentApplicationCount->SetEnabled(false);
if (fMenuRecentFolders->Value())
fMenuRecentFolderCount->SetEnabled(true);
else
fMenuRecentFolderCount->SetEnabled(false);
}
void
PreferencesWindow::WindowActivated(bool active)
{
if (!active && IsMinimized())
PostMessage(B_QUIT_REQUESTED);
}
+65
View File
@@ -0,0 +1,65 @@
/*
* Copyright 2009 Haiku, Inc.
* All Rights Reserved. Distributed under the terms of the MIT License.
*/
#ifndef _PREFERENCES_WINDOW_H
#define _PREFERENCES_WINDOW_H
#include <Box.h>
#include <Button.h>
#include <CheckBox.h>
#include <RadioButton.h>
#include <StringView.h>
#include <TextControl.h>
#include <Window.h>
const uint32 kConfigShow = 'show';
const uint32 kConfigClose = 'canc';
const uint32 kUpdateRecentCounts = 'upct';
const uint32 kEditMenuInTracker = 'mtrk';
class PreferencesWindow : public BWindow
{
public:
PreferencesWindow(BRect frame);
~PreferencesWindow();
virtual void MessageReceived(BMessage* message);
virtual void WindowActivated(bool active);
private:
void _UpdateRecentCounts();
void _EnableDisableDependentItems();
BBox* fMenuBox;
BBox* fAppsBox;
BBox* fClockBox;
BBox* fWindowBox;
BCheckBox* fMenuRecentDocuments;
BCheckBox* fMenuRecentApplications;
BCheckBox* fMenuRecentFolders;
BTextControl* fMenuRecentDocumentCount;
BTextControl* fMenuRecentApplicationCount;
BTextControl* fMenuRecentFolderCount;
BCheckBox* fAppsSort;
BCheckBox* fAppsSortTrackerFirst;
BCheckBox* fAppsShowExpanders;
BCheckBox* fAppsExpandNew;
BCheckBox* fClock24Hours;
BCheckBox* fClockSeconds;
BCheckBox* fClockEuropeanDate;
BCheckBox* fClockFullDate;
BCheckBox* fWindowAlwaysOnTop;
BCheckBox* fWindowAutoRaise;
};
#endif // _PREFERENCES_WINDOW_H
+2
View File
@@ -5,6 +5,7 @@ SubInclude HAIKU_TOP src preferences backgrounds ;
SubInclude HAIKU_TOP src preferences bluetooth ; SubInclude HAIKU_TOP src preferences bluetooth ;
SubInclude HAIKU_TOP src preferences cpufrequency ; SubInclude HAIKU_TOP src preferences cpufrequency ;
SubInclude HAIKU_TOP src preferences datatranslations ; SubInclude HAIKU_TOP src preferences datatranslations ;
SubInclude HAIKU_TOP src preferences deskbar ;
SubInclude HAIKU_TOP src preferences devices ; SubInclude HAIKU_TOP src preferences devices ;
#SubInclude HAIKU_TOP src preferences dun ; #SubInclude HAIKU_TOP src preferences dun ;
SubInclude HAIKU_TOP src preferences filetypes ; SubInclude HAIKU_TOP src preferences filetypes ;
@@ -26,3 +27,4 @@ SubInclude HAIKU_TOP src preferences time ;
SubInclude HAIKU_TOP src preferences touchpad ; SubInclude HAIKU_TOP src preferences touchpad ;
SubInclude HAIKU_TOP src preferences tracker ; SubInclude HAIKU_TOP src preferences tracker ;
SubInclude HAIKU_TOP src preferences virtualmemory ; SubInclude HAIKU_TOP src preferences virtualmemory ;
@@ -0,0 +1,23 @@
/*
* Copyright 2009, Haiku Inc.
* Distributed under the terms of the MIT License.
*
* Authors:
* Jonas Sundström, jonas@kirilla.com
*/
#include "PreferencesWindow.h"
#include <Application.h>
#include <Roster.h>
int
main(int argc, char **argv)
{
BApplication app("application/x-vnd.Haiku-DeskbarPreferences");
be_roster->Launch("application/x-vnd.Be-TSKB", new BMessage(kConfigShow));
return 0;
}
@@ -0,0 +1,59 @@
resource app_signature "application/x-vnd.Haiku-DeskbarPreferences";
resource app_version {
major = 1,
middle = 0,
minor = 0,
/* 0 = development 1 = alpha 2 = beta
3 = gamma 4 = golden master 5 = final */
variety = 0,
internal = 0,
short_info = "Deskbar Preferences",
long_info = "Deskbar Preferences ©2009 Haiku Inc."
};
resource app_flags B_SINGLE_LAUNCH | B_BACKGROUND_APP;
resource vector_icon {
$"6E6369661C050004006B020006023A498437D931BA09203C6B6D4B49E74A11B7"
$"01663300FF9B663203603307020006023393B0B84A2E3B59D6369E0646DFD84A"
$"A888007C3F03FF66330003CB986702000602B2F596355C9ABD515DBAEBB14A33"
$"354A96BF00A8733FFFD69E6803986432020006023E20000000000000003D8000"
$"49C00046000000FFEDDCFFFFCB98020006023A498437D931BA09203C6B6D4B39"
$"E749636E0089511AFF98622D05FF020116023C0F0A0000000000003C2F0A4AB5"
$"5C4766660080FF000201160338A28F00000000000038228F4AE1D748575C00FF"
$"54FFFF80020016023400000000000000003800004B0000478D1E00FFFF800201"
$"06023C7FE93652B8B419503A42244A941840DDAF0000FF00FF108E35050003EC"
$"666603FFACAC02000602391C19387422BA98E03B4AAA4B7CB44814B800A3043C"
$"FFFF90AF0500020016023B36393B4D9CBB8E093B74DE49CD5749A86B00EDFFA5"
$"05FF0200160232A2B43A4A46BDFF62364CDF49944E49622E0091FFB502001602"
$"3A77F53CD3D5BF3B3C3CD23D4AD98548BAB300FFFFE90200060234298D3A09A0"
$"BB2AE6355C88480B804842B500FFEA00FFFFB8300381A4E40200060239F67037"
$"5210BA15E43C7D2149DBC6B9D8AC00E3EDFFFF9EC2FF030039B01C0A032E5438"
$"54384A0A0746605A4A5A47604A5A5258524C6008092638264E2E52364A3A4C3A"
$"58465E5A495A390A062234223748485E375E3438280A04465E5A495A3846490A"
$"05382822344844C5C2BF4AC878B9F20A032E462E52364A0A083A5846CBAD46C2"
$"8926BD5B264E2E522E463AC4870A04465446523A4C3A4E0A0428C2772CC3432C"
$"C42728C35B0A0429C38E2CC4272CC4A529C40C0A04484448485E375E340A0422"
$"342237484848440A074E3EC631BEF95E34C887B9F73E363E3B463B0A062E282E"
$"343A394232422636B3F20A042E282E343A393A2C0A042E283A2C422636B3F20A"
$"043A2C3A39423242260A06422C42384E3D5636562A4AB58A0A04422C42384E3D"
$"4E300A04422C4E30562A4AB58A0A044E304E3D5636562A0A0622483A523A392C"
$"352C30222E0A04223222483A523A390A06374D25462447384F383B373D0A0624"
$"35244725462537373D383B0A0425372546374D373D0A04222E22332C362C302D"
$"0A01020100000A0001021001178400040A020104000A040106000A060107000A"
$"070108000A03010928362215FF0A03010928362C15FF0A08010A28362215FF0A"
$"08010A28362C15FF0A0001031815FF01178400040A0001031800150117860004"
$"0A080105000A05010C000A09010B000A0500000A0A00000A0000000A0400000A"
$"05010D000A0B001001178400040A0C00000A0D00000A00001815FF0117840204"
$"0A000018001501178502040A0E00000A0F010E1001178400040A19010F000A1B"
$"0111000A1A0110000A0F01121001178400040A100113000A120115000A110114"
$"000A13011630241801178402040A1401172024180A1501182024180A16011920"
$"24180A18011B2024180A1301161001178402040A140117000A150118000A1601"
$"19000A17011A000A18011B00"
};
+10
View File
@@ -0,0 +1,10 @@
SubDir HAIKU_TOP src preferences deskbar ;
SubDirSysHdrs $(HAIKU_TOP) src apps deskbar ;
Preference <preference>Deskbar :
DeskbarPreferences.cpp
: be
: DeskbarPreferences.rdef
;