/* AbiWord
 * Copyright (C) Ben Martin 2012.
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version 2
 * of the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
 * 02110-1301 USA.
 */

#include "ap_RDFEventGTK.h"
#include "xap_App.h"
#include "xap_UnixDialogHelper.h"
#include "ut_std_string.h"

AP_RDFEventGTK::AP_RDFEventGTK( PD_DocumentRDFHandle rdf, PD_ResultBindings_t::iterator& it )
    : AP_RDFSemanticItemGTKInjected< AP_RDFEvent >( rdf, it )
{
}

AP_RDFEventGTK::~AP_RDFEventGTK()
{
}
    
void*
AP_RDFEventGTK::createEditor()
{
#if GTK_CHECK_VERSION(3,0,0)
	GtkBuilder* builder = newDialogBuilder("pd_RDFEvent.ui");
#else
	GtkBuilder* builder = newDialogBuilder("pd_RDFEvent-2.ui");
#endif
    UT_DEBUGMSG(("createEditor()\n"));
    
	m_mainWidget = GTK_WIDGET(gtk_builder_get_object(builder, "mainWidget"));
//	w_name       = GTK_ENTRY(gtk_builder_get_object(builder, "name"));
	w_summary    = GTK_ENTRY(gtk_builder_get_object(builder, "summary"));
	w_location   = GTK_ENTRY(gtk_builder_get_object(builder, "location"));
	w_desc       = GTK_ENTRY(gtk_builder_get_object(builder, "desc"));
	w_dtstart    = GTK_ENTRY(gtk_builder_get_object(builder, "dtstart"));
	w_dtend      = GTK_ENTRY(gtk_builder_get_object(builder, "dtend"));

//    setEntry( w_name,     m_name );
    setEntry( w_summary,  m_summary );
    setEntry( w_location, m_location );
    setEntry( w_desc,     m_desc );
    setEntry( w_dtstart,  m_dtstart );
    setEntry( w_dtend,    m_dtend );

    g_object_unref((GObject*)builder);
    
    return m_mainWidget;
}



void
AP_RDFEventGTK::updateFromEditorData( PD_DocumentRDFMutationHandle m )
{
    if (m_linkingSubject.toString().empty())
    {
        std::string uuid = XAP_App::getApp()->createUUIDString();
        m_linkingSubject = uuid;
    }

    // UT_DEBUGMSG(("updateFromEditorData() name:%s new-name:%s\n",
    //              m_name.c_str(), tostr(GTK_ENTRY(w_name)).c_str() ));
    
    std::string predBase = "http://www.w3.org/2002/12/cal/icaltzd#";
    setRDFType(   m, predBase + "Vevent" );
    updateTriple( m, m_uid,      m_uid, predBase + "uid");
//    updateTriple( m, m_name,       tostr(GTK_ENTRY(w_name)),    predBase + "name");
    updateTriple( m, m_summary,    tostr(GTK_ENTRY(w_summary)), predBase + "summary");
    updateTriple( m, m_location,   tostr(GTK_ENTRY(w_location)),predBase + "location");
    updateTriple( m, m_desc,       tostr(GTK_ENTRY(w_desc)),    predBase + "description");
//    updateTriple( m, m_uid,        tostr(GTK_ENTRY(w_uid)),     predBase + "uid");
    updateTriple( m, m_dtstart,    parseTimeString(tostr(GTK_ENTRY(w_dtstart))), predBase + "dtstart");
    updateTriple( m, m_dtend,      parseTimeString(tostr(GTK_ENTRY(w_dtend))),   predBase + "dtend");
    
    if (getRDF())
    {
//        getRDF()->emitSemanticObjectUpdated(this);
    }
    
}