#ifndef __settings_h
#define __settings_h

#include "pager.h"

#define CAROUSEL_TIME_DEFAULT 300

typedef enum {
  BACKDROP_STANDARD,
  BACKDROP_CUSTOM,
  BACKDROP_PLAIN
} image_type;

typedef enum {
  CUSTOM_SCALED,
  CUSTOM_CENTRED,
  CUSTOM_TILED,
  CUSTOM_FULLSCREEN
} custom_type;

typedef enum {
  APPEARANCE_THEME,
  APPEARANCE_BLENDED,
  APPEARANCE_OUTLINE
} appearance_type;

typedef enum {
  ICONSIZE_NORMAL,
  ICONSIZE_LARGE,
  ICONSIZE_SMALL
} iconsize_type;

typedef enum {
  ICONIZE_BUTTON,
  ICONIZE_ICONBAR,
  ICONIZE_TOPLEFT,
  ICONIZE_TOPRIGHT,
  ICONIZE_BOTTOMLEFT,
  ICONIZE_BOTTOMRIGHT
} iconize_type;

typedef enum {
  TIDY_TOPLEFT,
  TIDY_TOPRIGHT,
  TIDY_BOTTOMLEFT,
  TIDY_BOTTOMRIGHT
} tidy_type;

typedef enum {
  HORIZONTAL,
  VERTICAL
} stack_type;

typedef enum {
  AUTOSAVE_OFF,
  AUTOSAVE_CONFIRM,
  AUTOSAVE_ALWAYS
} autosave_type;

typedef enum {
  OVERWRITE_ALWAYS,
  OVERWRITE_RENAME,
  OVERWRITE_CONFIRM
} overwrite_type;

typedef enum {
  WATERMARK_TOPLEFT,
  WATERMARK_TOPCENTRE,
  WATERMARK_TOPRIGHT,
  WATERMARK_LEFT,
  WATERMARK_CENTRE,
  WATERMARK_RIGHT,
  WATERMARK_BOTTOMLEFT,
  WATERMARK_BOTTOMCENTRE,
  WATERMARK_BOTTOMRIGHT
} watermark_type;

typedef struct {
  // background
  image_type background_type;
  BOOL lighter;
  BOOL random;
  int standard_image_ref;
  int standard_image_max;

  char *custom_image_filename;
  int filetype;

  custom_type custom_image_type;
  BOOL cache;
  int carousel_time;

  unsigned int background_colour;

  // pin appearance
  unsigned int icon_text_colour;
  appearance_type icon_appearance;
  unsigned int outline_colour;
  iconsize_type iconsize;
  
  // pin arrangement
  iconize_type iconize_dest;
  stack_type iconize_stack;
  tidy_type tidy_dest;
  stack_type tidy_stack;
  BOOL snap_to_grid;

  // sticky defaults
  char *sticky_font;
  int sticky_height;
  int sticky_aspect;
  char *sticky_filename;

  // storage
  char *savedfiles_path;
  autosave_type autosave;
  overwrite_type overwrite;

  // watermark
  BOOL watermark_enabled;
  char *watermark_filename;
  int x_offset,y_offset;
  int wm_scale_x,wm_scale_y;
  int wm_display_scale;
  watermark_type watermark_location;

  // window toggle
  char showall_key;
  int showall_modifiers;

  int disable_adjust;

  int dclick_hold;

  int menu_info;

  int delete_confirm;

  int opacity;
} settings;

#include "mystringset.h"

void settings_init(pager *p);
void settings_copy(settings *dest,settings *source);
void settings_update_windows(pager *p, settings *s);
void settings_set_default(settings *s);

extern settings current_settings;
extern settings edited_settings;
extern const s_match iconsize_strings[];
extern const s_match iconize_strings[];
extern const s_match stack_strings[];
extern const s_match tidy_strings[];
extern const s_match autosave_strings[];
extern const s_match overwrite_strings[];

#define PINSETUP_FILE "Choices:Boot.Tasks.PinSetup"

extern BOOL settings_tried;
void settings_try(settings *s);
int settings_write(settings *current,settings *edited);

#endif
