/*

 Owner: Stefan Neumärker <stefan@boinx.com>
 Company: Boinx Software Ltd., Germany
 Projects: BXServices

 Abstract: Class decides on circumstances like app launches, crashes, ect. if to show a feedback assistant. Trigger decision with -triggerFeedback: method.	

 Related: 

 Documentation: 

*/


extern NSString * const BXAppStoreFeedbackSuppressAssistantKey;
extern NSString * const BXAppStoreFeedbackAssistantClosedKey;
extern NSString * const BXAppStoreFeedbackVersionCheckedKey;


@class BXEmbossedButton, BXEmbossedTextField, BXGradientView;


@interface BXAppStoreFeedbackController : NSWindowController
{
	BXGradientView *_backgroundGradientViewOutlet;
	BXEmbossedTextField *_feedbackControllerTitleOutlet;
	BXEmbossedTextField *_upperTextFieldOutlet;
	BXEmbossedTextField *_middleTextFieldOutlet;
	BXEmbossedTextField *_lowerTextFieldOutlet;
	NSButton *_upperButtonOutlet;
	NSButton *_middleButtonOutlet;
	NSButton *_lowerButtonOutlet;
	NSButton *_closeButtonOutlet;
	BXEmbossedButton *_reminderCheckBoxOutlet;
	
	NSURL *_appStoreURL;
	NSMutableData *_appStoreData;
	
	BOOL _enforce;
	BOOL _enforceCrashReport;
	BOOL _checkForCrashesOnly;
}

@property (nonatomic, retain) IBOutlet BXGradientView *backgroundGradientViewOutlet;
@property (nonatomic, retain) IBOutlet BXEmbossedTextField *feedbackControllerTitleOutlet;
@property (nonatomic, retain) IBOutlet BXEmbossedTextField *upperTextFieldOutlet;
@property (nonatomic, retain) IBOutlet BXEmbossedTextField *middleTextFieldOutlet;
@property (nonatomic, retain) IBOutlet BXEmbossedTextField *lowerTextFieldOutlet;
@property (nonatomic, retain) IBOutlet NSButton *upperButtonOutlet;
@property (nonatomic, retain) IBOutlet NSButton *middleButtonOutlet;
@property (nonatomic, retain) IBOutlet NSButton *lowerButtonOutlet;
@property (nonatomic, retain) IBOutlet NSButton *closeButtonOutlet;
@property (nonatomic, retain) IBOutlet BXEmbossedButton *reminderCheckBoxOutlet;

@property (retain) NSURL *appStoreURL;
@property (retain) NSMutableData *appStoreData;

@property (assign) BOOL enforce;
@property (assign) BOOL enforceCrashReport;
@property (assign) BOOL checkForCrashesOnly;

- (BOOL)triggerFeedback:(id)inSender;

- (IBAction)boinxLogoClicked:(id)inSender;
- (IBAction)feedbackButtonClicked:(id)inSender;
- (IBAction)feedbackButtonClickedCrashReport:(id)inSender;
- (IBAction)forumButtonClicked:(id)inSender;
- (IBAction)appStoreButtonClicked:(id)inSender;
- (IBAction)closeButtonClicked:(id)inSender;

@end
