Changeset 12

Show
Ignore:
Timestamp:
11/08/06 15:26:02 (2 years ago)
Author:
inz
Message:

First try for geoclue support.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • maemo-blog/trunk/Makefile

    r8 r12  
    4545maemo_blog_CFLAGS += $(shell if pkg-config libgnomeui-2.0 --exists; then pkg-config libgnomeui-2.0 --cflags; echo -DHAVE_VFS_UTIL; fi) 
    4646maemo_blog_LDFLAGS += $(shell if pkg-config libgnomeui-2.0 --exists; then pkg-config libgnomeui-2.0 --libs; fi) 
     47maemo_blog_CFLAGS += $(shell if pkg-config geoclue --exists; then pkg-config geoclue --cflags; echo -DGEOCLUE; fi) 
     48maemo_blog_LDFLAGS += $(shell if pkg-config geoclue --exists; then pkg-config geoclue --libs; fi) 
    4749 
    4850maemo_blog_CFLAGS += `pkg-config gconf-2.0 gtk+-2.0 --cflags` \ 
  • maemo-blog/trunk/blog-metaweblog.c

    r10 r12  
    293293{ 
    294294        xmlrpc_value *array; 
     295        xmlrpc_value *stru; 
    295296        GSList *iter; 
    296297        struct BlogMetaweblogPostedClosure *clo; 
     
    308309        clo->user_data = user_data; 
    309310 
    310         array = xmlrpc_build_value(&data->env, "()"); 
     311        array = xmlrpc_array_new(&data->env); 
    311312        die_if_fault_occurred(&data->env); 
    312313 
     
    321322        } 
    322323 
     324        stru = xmlrpc_struct_new(&data->env); 
     325        xmlrpc_struct_set_value(&data->env, 
     326                        stru, 
     327                        "title", 
     328                        xmlrpc_string_new(&data->env, post->title)); 
     329        xmlrpc_struct_set_value(&data->env, 
     330                        stru, 
     331                        "description", 
     332                        xmlrpc_string_new(&data->env, post->content)); 
     333        xmlrpc_struct_set_value(&data->env, 
     334                        stru, 
     335                        "category", 
     336                        array); 
     337        xmlrpc_struct_set_value(&data->env, 
     338                        stru, 
     339                        "categories", 
     340                        array); 
     341        for (iter = post->extra_fields; iter; iter = iter->next) { 
     342                BlogParameter *parm = iter->data; 
     343                xmlrpc_value *value = NULL; 
     344                switch (G_VALUE_TYPE(&parm->value)) { 
     345                        case G_TYPE_STRING: 
     346                                value = xmlrpc_string_new(&data->env, 
     347                                                g_value_get_string( 
     348                                                        &parm->value)); 
     349                                break; 
     350                        case G_TYPE_INT: 
     351                                value = xmlrpc_int_new(&data->env, 
     352                                                g_value_get_int( 
     353                                                        &parm->value)); 
     354                                break; 
     355                        case G_TYPE_UINT: 
     356                                value = xmlrpc_int_new(&data->env, 
     357                                                (int)g_value_get_uint( 
     358                                                        &parm->value)); 
     359                                break; 
     360                        case G_TYPE_BOOLEAN: 
     361                                value = xmlrpc_bool_new(&data->env, 
     362                                                g_value_get_boolean( 
     363                                                        &parm->value)); 
     364                                break; 
     365                        default: 
     366                                break; 
     367                } 
     368                if (value) { 
     369                        xmlrpc_struct_set_value(&data->env, 
     370                                        stru, 
     371                                        parm->name, 
     372                                        value); 
     373                } 
     374        } 
     375 
    323376        xmlrpc_client_start_rpcf(&data->env, 
    324377                        data->client, 
     
    326379                        _blog_metaweblog_posted, 
    327380                        clo, 
    328                         (char *)"(sss{s:s,s:s,s:V,s:V}b)", 
     381                        (char *)"(sssVb)", 
    329382                        blog->id, 
    330383                        blog->user, 
    331384                        blog->pass, 
    332                         "title", 
    333                         post->title, 
    334                         "description", 
    335                         post->content, 
    336                         "category", 
    337                         array, 
    338                         "categories", 
    339                         array, 
     385                        stru, 
    340386                        publish); 
    341387 
  • maemo-blog/trunk/blog.c

    r2 r12  
    11#include "blog.h" 
     2 
     3void blog_parameter_free(BlogParameter *param) 
     4{ 
     5        g_free(param->name); 
     6        g_value_unset(&param->value); 
     7        g_free(param); 
     8} 
    29 
    310void blog_post_free(BlogPost *post) 
     
    613        g_free(post->title); 
    714        g_free(post->content); 
     15        g_slist_foreach(post->extra_fields, (GFunc)blog_parameter_free, NULL); 
     16        g_free(post); 
    817} 
    918 
     
    1221        g_free(category->name); 
    1322        g_free(category->id); 
     23        g_free(category); 
    1424} 
    1525 
  • maemo-blog/trunk/blog.h

    r2 r12  
    33 
    44#include <glib.h> 
     5#include <glib-object.h> 
    56 
    67typedef struct _Blog Blog; 
    78typedef struct _BlogCategory BlogCategory; 
    89typedef struct _BlogPost BlogPost; 
     10typedef struct _BlogParameter BlogParameter; 
    911 
    1012#include "blog-plugin.h" 
     
    3032        gchar *title; 
    3133        GSList *categories; 
     34        GSList *extra_fields; 
    3235        gchar *content; 
    3336}; 
    3437 
     38struct _BlogParameter { 
     39        gchar *name; 
     40        GValue value; 
     41}; 
     42 
     43void blog_parameter_free(BlogParameter *param); 
    3544void blog_post_free(BlogPost *post); 
    3645void blog_category_free(BlogCategory *category); 
  • maemo-blog/trunk/debian/changelog

    r11 r12  
     1maemo-blog (0.1.4) mistral; urgency=low 
     2 
     3  * First try for geoclue support. 
     4 
     5 -- Santtu Lakkala <inz@localhost.localdomain>  Wed,  8 Nov 2006 15:25:03 +0200 
     6 
    17maemo-blog (0.1.3) mistral; urgency=low 
    28 
  • maemo-blog/trunk/gui.c

    r8 r12  
    1414#ifdef HAVE_VFS_UTIL 
    1515#include <libgnomeui/gnome-vfs-util.h> 
     16#endif 
     17#ifdef GEOCLUE 
     18#include <geoclue/position.h> 
    1619#endif 
    1720#include "blog-plugin.h" 
     
    254257        gtk_widget_destroy(dialog); 
    255258} 
     259 
     260#ifdef GEOCLUE 
     261static void _geo(GObject *object, GObject *window) 
     262{ 
     263        gdouble lat, lon; 
     264 
     265        (void)object; 
     266 
     267        geoclue_position_init(); 
     268        geoclue_position_current_position(&lat, &lon); 
     269        g_object_set_data_full(window, "position", 
     270                        g_strdup_printf("%f %f", lat, lon), 
     271                        g_free); 
     272        fprintf(stderr, "Position now: %s\n", (gchar *)g_object_get_data(window, "position")); 
     273} 
     274#endif 
    256275 
    257276static void _send(GObject *object, GObject *window) 
     
    282301        gchar *pos; 
    283302        guint image_count, i; 
     303        gchar *position = g_object_get_data(window, "position"); 
    284304 
    285305        (void)object; 
     
    376396                                g_slist_append(post->categories, category); 
    377397                } 
     398        } 
     399 
     400        if (position) { 
     401                BlogParameter *parm = g_new0(BlogParameter, 1); 
     402 
     403                parm->name = g_strdup("georss:point"); 
     404                g_value_init(&parm->value, G_TYPE_STRING); 
     405                g_value_set_string(&parm->value, position); 
     406                post->extra_fields = g_slist_append(post->extra_fields, 
     407                                parm); 
    378408        } 
    379409         
     
    10071037        gtk_container_add(GTK_CONTAINER(toolbar), GTK_WIDGET(button)); 
    10081038        g_signal_connect(button, "clicked", G_CALLBACK(_img), gtk_text_view_get_buffer(GTK_TEXT_VIEW(view))); 
     1039#ifdef GEOCLUE 
     1040        button = gtk_tool_button_new(NULL, "Geo"); 
     1041        gtk_container_add(GTK_CONTAINER(toolbar), GTK_WIDGET(button)); 
     1042        g_signal_connect(button, "clicked", G_CALLBACK(_geo), window); 
     1043#endif 
    10091044#ifdef HILDON 
    10101045        button = gtk_toggle_tool_button_new();