root/src/add-ons/network_settings/dialup/ConnectionOptionsAddon.h
/*
 * Copyright 2003-2004 Waldemar Kornewald. All rights reserved.
 * Copyright 2017 Haiku, Inc. All rights reserved.
 * Distributed under the terms of the MIT License.
 */

//-----------------------------------------------------------------------
// ConnectionOptionsAddon saves the loaded settings.
// ConnectionOptionsView saves the current settings.
//-----------------------------------------------------------------------

#ifndef _CONNECTION_OPTIONS_ADDON__H
#define _CONNECTION_OPTIONS_ADDON__H

#include "DialUpAddon.h"

#include <CheckBox.h>
#include <RadioButton.h>

class ConnectionOptionsView;


class ConnectionOptionsAddon : public DialUpAddon {
        public:
                ConnectionOptionsAddon(BMessage *addons);
                virtual ~ConnectionOptionsAddon();

                bool IsNew() const
                        { return fIsNew; }

                bool DoesDialOnDemand() const
                        { return fDoesDialOnDemand; }
                bool AskBeforeDialing() const
                        { return fAskBeforeDialing; }
                bool DoesAutoRedial() const
                        { return fDoesAutoRedial; }

                BMessage *Settings() const
                        { return fSettings; }
                BMessage *Profile() const
                        { return fProfile; }

                virtual int32 Position() const
                        { return 50; }
                virtual bool LoadSettings(BMessage *settings, BMessage *profile, bool isNew);
                virtual void IsModified(bool *settings, bool *profile) const;
                virtual bool SaveSettings(BMessage *settings, BMessage *profile,
                        bool saveTemporary);
                virtual bool GetPreferredSize(float *width, float *height) const;
                virtual BView *CreateView();

        private:
                bool fIsNew;
                bool fDoesDialOnDemand, fAskBeforeDialing, fDoesAutoRedial;
                BMessage *fSettings, *fProfile;
                        // saves last settings state
                ConnectionOptionsView *fConnectionOptionsView;
};


class ConnectionOptionsView : public BView {
        public:
                ConnectionOptionsView(ConnectionOptionsAddon *addon);

                ConnectionOptionsAddon *Addon() const
                        { return fAddon; }
                void Reload();

                bool DoesDialOnDemand() const
                        { return fDialOnDemand->Value(); }
                bool AskBeforeDialing() const
                        { return fAskBeforeDialing->Value(); }
                bool DoesAutoRedial() const
                        { return fAutoRedial->Value(); }

                virtual void AttachedToWindow();
                virtual void MessageReceived(BMessage *message);

        private:
                void UpdateControls();

        private:
                ConnectionOptionsAddon *fAddon;
                BCheckBox *fDialOnDemand, *fAskBeforeDialing, *fAutoRedial;
};


#endif