v0.2.2 release
[yandexfotkisp] / src / plugin.c
diff --git a/src/plugin.c b/src/plugin.c
new file mode 100644 (file)
index 0000000..ece06af
--- /dev/null
@@ -0,0 +1,184 @@
+/*
+ * This file is part of sharing-plugin-template
+ *
+ * Copyright (C) 2008-2009 Nokia Corporation. All rights reserved.
+ *
+ * This maemo code example is licensed under a MIT-style license,
+ * that can be found in the file called "COPYING" in the root
+ * directory.
+ *
+ */
+
+#include <gtk/gtk.h>
+#include <glib.h>
+
+// Somehow garage builder doesn't have normal libsharing headers
+#include "libsharing/sharing-plugin-interface.h"
+#include "libsharing/sharing-transfer.h"
+#include "libsharing/sharing-service-option.h"
+
+#include <conicconnection.h>
+#include <osso-log.h>
+#include <stdlib.h>
+
+#include "send.h"
+#include "validate.h"
+#include "common.h"
+
+guint sharing_plugin_interface_init (gboolean* dead_mans_switch);
+guint sharing_plugin_interface_uninit (gboolean* dead_mans_switch);
+SharingPluginInterfaceSendResult sharing_plugin_interface_send(SharingTransfer* transfer, ConIcConnection* con, gboolean* dead_mans_switch);
+SharingPluginInterfaceAccountSetupResult sharing_plugin_interface_account_setup(GtkWindow* parent, SharingService* service, SharingAccount** worked_on,osso_context_t* osso);
+SharingPluginInterfaceAccountValidateResult sharing_plugin_interface_account_validate (SharingAccount* account, ConIcConnection* con, gboolean *cont, gboolean* dead_mans_switch);
+SharingPluginInterfaceEditAccountResult sharing_plugin_interface_edit_account (GtkWindow* parent, SharingAccount* account, ConIcConnection* con, gboolean* dead_mans_switch);
+gboolean sharing_plugin_interface_update_options(SharingAccount* account, ConIcConnection* con, gboolean* cont, gboolean* dead_mans_switch, UpdateOptionsCallback cb_func, gpointer cb_data);
+
+/**
+ * sharing_plugin_interface_init:
+ * @dead_mans_switch: What?
+ *
+ * Initialize interface
+ *
+ * Returns: 0
+ */
+guint sharing_plugin_interface_init (gboolean* dead_mans_switch)
+{
+    ULOG_DEBUG_L("sharing_manager_plugin_interface_init");
+    return 0;
+}
+
+/**
+ * sharing_plugin_interface_uninit:
+ * @dead_mans_switch: What?
+ *
+ * Uninitialize interface
+ *
+ * Returns: 0
+ */
+guint sharing_plugin_interface_uninit (gboolean* dead_mans_switch)
+{
+    ULOG_DEBUG_L("sharing_manager_plugin_interface_uninit");
+    return 0;
+}
+
+/**
+ * sharing_plugin_interface_send:
+ * @transfer: Transfer to be send
+ * @con: Connection used
+ * @dead_mans_switch:
+ *
+ * Send interface.
+ *
+ * Returns: Result of send
+ */
+SharingPluginInterfaceSendResult sharing_plugin_interface_send
+    (SharingTransfer* transfer, ConIcConnection* con,
+    gboolean* dead_mans_switch)
+{
+    ULOG_DEBUG_L ("sharing_plugin_interface_send");
+    SharingPluginInterfaceSendResult ret_val = SHARING_SEND_ERROR_UNKNOWN;
+    ret_val = share_item (transfer, con, dead_mans_switch);
+    return ret_val;
+}
+
+/**
+ * sharing_plugin_interface_account_setup:
+ * @transfer: #SharingTransfer send
+ * @service: #SharingService
+ * @worked_on: Connection used
+ * @osso_context_t: Osso context
+ *
+ * Send interface
+ *
+ * Returns: Result of account setup
+ */
+SharingPluginInterfaceAccountSetupResult sharing_plugin_interface_account_setup
+    (GtkWindow* parent, SharingService* service, SharingAccount** worked_on,
+    osso_context_t* osso)
+{
+    ULOG_DEBUG_L ("sharing_plugin_interface_account_setup");
+    SharingPluginInterfaceAccountSetupResult ret = 0;
+    return ret;
+}
+
+/**
+ * sharing_manager_plugin_interface_account_validate:
+ * @account: Account tested
+ * @con: Connection used to test account
+ * @dead_mans_switch:
+ *
+ * Validates account information.
+ *
+ * Returns: Result of account validation
+ */
+SharingPluginInterfaceAccountValidateResult
+sharing_plugin_interface_account_validate (SharingAccount* account,
+    ConIcConnection* con, gboolean *cont, gboolean* dead_mans_switch)
+{
+    ULOG_DEBUG_L ("sharing_plugin_interface_account_validate");
+    SharingPluginInterfaceAccountValidateResult ret_val = 0;
+    ret_val = validate (account, con, cont, dead_mans_switch);
+    return ret_val;
+}
+
+/**
+ * sharing_plugin_interface_edit_account:
+ * @account: Account tested
+ * @con: Connection used to test account
+ * @dead_mans_switch:
+ *
+ * Edit account plugin implementation.
+ *
+ * Returns: Result of account edit
+ */
+SharingPluginInterfaceEditAccountResult
+    sharing_plugin_interface_edit_account (GtkWindow* parent,
+    SharingAccount* account, ConIcConnection* con, gboolean* dead_mans_switch)
+{
+    SharingPluginInterfaceEditAccountResult ret = 0;
+    ULOG_DEBUG_L ("sharing_plugin_interface_edit_account");
+    return ret;
+}
+
+gboolean sharing_plugin_interface_update_options(
+        SharingAccount* account, ConIcConnection* con, gboolean* cont,
+        gboolean* dead_mans_switch, UpdateOptionsCallback cb_func,
+        gpointer cb_data) {
+       gboolean ret = TRUE;
+       SharingPluginInterfaceUpdateOptionsResult updateResult = SHARING_UPDATE_OPTIONS_ERROR_UNKNOWN;
+
+    char* sessionKey = NULL;
+    char* sessionRequestId = NULL;
+    char* token = NULL;
+
+    *dead_mans_switch = FALSE;
+    if (yandexGetSessionKey(&sessionKey, &sessionRequestId) == YANDEX_GET_SESSION_KEY_SUCCESS) {
+       *dead_mans_switch = FALSE;
+       if (YANDEX_GET_AUTH_TOKEN_SUCCESS == yandexGetAuthToken(sessionRequestId, sessionKey,
+                                                          sharing_account_get_username(account), sharing_account_get_password(account),
+                                                          &token)) {
+               GSList* albumsList = NULL;
+               *dead_mans_switch = FALSE;
+               if (YANDEX_GET_ALBUM_LIST_SUCCESS == yandexGetAlbumsList(token,sharing_account_get_username(account),&albumsList) && albumsList) {
+                       sharing_account_set_option_values(account,"album",albumsList);
+                       updateResult = SHARING_UPDATE_OPTIONS_SUCCESS;
+               }
+               *dead_mans_switch = FALSE;
+               if (albumsList) sharing_service_option_values_free(albumsList);
+       }
+       *dead_mans_switch = FALSE;
+    }
+    *dead_mans_switch = FALSE;
+
+    if (token) free(token);
+    if (sessionKey) free(sessionKey);
+    if (sessionRequestId) free(sessionRequestId);
+
+       if (cb_func != NULL) {
+               void (*fp) (SharingPluginInterfaceUpdateOptionsResult, gpointer);
+               fp = cb_func;
+               fp(updateResult, cb_data);
+       }
+
+       return ret;
+}