* Copyright 2006-2011, Haiku.
* Distributed under the terms of the MIT License.
*
* Authors:
* Stephan Aßmus <superstippi@gmx.de>
*/
#ifndef STYLE_VIEW_H
#define STYLE_VIEW_H
#include "IconBuild.h"
#include "Observer.h"
#include <Referenceable.h>
#include <View.h>
class BMenu;
class BMenuField;
class CommandStack;
class CurrentColor;
class GradientControl;
_BEGIN_ICON_NAMESPACE
class Gradient;
class Style;
_END_ICON_NAMESPACE
_USING_ICON_NAMESPACE
enum {
MSG_STYLE_TYPE_CHANGED = 'stch',
};
class StyleView : public BView, public Observer {
public:
StyleView(BRect frame);
virtual ~StyleView();
virtual void AttachedToWindow();
virtual void FrameResized(float width, float height);
virtual void MessageReceived(BMessage* message);
virtual BSize MinSize();
virtual void ObjectChanged(const Observable* object);
void SetStyle(Style* style);
void SetCommandStack(CommandStack* stack);
void SetCurrentColor(CurrentColor* color);
private:
void _SetGradient(Gradient* gradient,
bool forceControlUpdate = false,
bool sendMessage = false);
void _MarkType(BMenu* menu, int32 type) const;
void _SetStyleType(int32 type);
void _SetGradientType(int32 type);
void _AdoptCurrentColor(rgb_color color);
void _TransferGradientStopColor();
private:
CommandStack* fCommandStack;
CurrentColor* fCurrentColor;
Style* fStyle;
BReference<Gradient> fGradient;
bool fIgnoreCurrentColorNotifications;
bool fIgnoreControlGradientNotifications;
GradientControl* fGradientControl;
BMenuField* fStyleType;
BMenuField* fGradientType;
BRect fPreviousBounds;
};
#endif