root/src/apps/deskbar/PreferencesWindow.h
/*
 * Copyright 2009 Haiku, Inc.
 * All Rights Reserved. Distributed under the terms of the MIT License.
 */
#ifndef _PREFERENCES_WINDOW_H
#define _PREFERENCES_WINDOW_H


#include <Window.h>

#include "BarSettings.h"


const uint32 kConfigShow                        = 'PrSh';
const uint32 kConfigQuit                        = 'PrQt';
const uint32 kUpdateRecentCounts        = 'upct';
const uint32 kEditInTracker                     = 'etrk';

const uint32 kTrackerFirst                      = 'TkFt';
const uint32 kSortRunningApps           = 'SAps';
const uint32 kSuperExpando                      = 'SprE';
const uint32 kExpandNewTeams            = 'ExTm';
const uint32 kHideLabels                        = 'hLbs';
const uint32 kResizeTeamIcons           = 'RTIs';
const uint32 kAutoRaise                         = 'AtRs';
const uint32 kAutoHide                          = 'AtHd';

const uint32 kDefaults                          = 'dflt';
const uint32 kRevert                            = 'rvrt';


class BCheckBox;
class BControl;
class BFile;
class BMessage;
class BRadioButton;
class BSlider;
class BSpinner;

class PreferencesWindow : public BWindow
{
public:
                                                        PreferencesWindow(BRect frame);
                                                        ~PreferencesWindow();

        virtual void                    MessageReceived(BMessage* message);
        virtual bool                    QuitRequested();
        virtual void                    Show();

private:
                        void                    _EnableDisableDependentItems();

                        bool                    _IsDefaultable();
                        bool                    _IsRevertable();

                        status_t                _InitSettingsFile(BFile* file, bool write);
                        status_t                _LoadSettings(BMessage* settings);
                        status_t                _SaveSettings(BMessage* settings);

                        void                    _SetInitialSettings();

                        void                    _UpdateButtons();
                        void                    _UpdatePreferences(desk_settings* settings);
                        void                    _UpdateRecentCounts();

private:
                        BCheckBox*              fMenuRecentDocuments;
                        BCheckBox*              fMenuRecentApplications;
                        BCheckBox*              fMenuRecentFolders;

                        BSpinner*               fMenuRecentDocumentCount;
                        BSpinner*               fMenuRecentApplicationCount;
                        BSpinner*               fMenuRecentFolderCount;

                        BCheckBox*              fAppsSort;
                        BCheckBox*              fAppsSortTrackerFirst;
                        BCheckBox*              fAppsShowExpanders;
                        BCheckBox*              fAppsExpandNew;
                        BCheckBox*              fAppsHideLabels;
                        BSlider*                fAppsIconSizeSlider;


                        BControl*               fWindowLocation;
                        BCheckBox*              fWindowAlwaysOnTop;
                        BCheckBox*              fWindowAutoRaise;
                        BCheckBox*              fWindowAutoHide;

                        BButton*                fDefaultsButton;
                        BButton*                fRevertButton;

private:
                        desk_settings   fSettings;
};


#endif  // _PREFERENCES_WINDOW_H