#include <stdio.h>
#include <stdlib.h>

#include "swis.h"

#include "tboxlibs/toolbox.h"
#include "tboxlibs/window.h"
#include "tboxlibs/event.h"
#include "tboxlibs/wimplib.h"

#include "confirm.h"
#include "pinboard.h"

typedef struct {
  ObjectId win;
  ConfirmFn *handler;
  void *handle;
  ObjectId parent;
} _ci;

static _ci _confirm_info={-1,NULL,NULL,0};

static int confirm_clicked(int event_code,ToolboxEvent *event,IdBlock *id,void *handle)
{
  ActionButtonSelectedEvent *e=(ActionButtonSelectedEvent *)event;
  IGNORE(event_code);
  IGNORE(handle);

  toolbox_hide_object(0,id->self_id);
  
  if (_confirm_info.handler) {
    if (e->hdr.flags & ActionButton_Selected_Default) {
      _confirm_info.handler(CONFIRM_ACTION_YES,_confirm_info.parent,_confirm_info.handle);
    } else {
      _confirm_info.handler(CONFIRM_ACTION_NO,_confirm_info.parent,_confirm_info.handle);
    }
  }


  return 1;
}

void confirm(char *message,char *yes,char *no,ConfirmFn *handler,ObjectId parent,void *handle)
{
  _confirm_info.handler=handler;
  _confirm_info.handle=handle;
  _confirm_info.parent=parent;

  button_set_value(0,_confirm_info.win,4,message);
  actionbutton_set_text(0,_confirm_info.win,1,yes);
  actionbutton_set_text(0,_confirm_info.win,2,no);
  
  toolbox_show_object(0,_confirm_info.win,Toolbox_ShowObject_Centre,NULL,0,0); // centre ideally later
}

void confirm_init(void)
{
  toolbox_create_object(0,"confirm",&_confirm_info.win);
  event_register_toolbox_handler(_confirm_info.win,ActionButton_Selected,confirm_clicked,NULL);
}
