mail-notification

Fork of Jean-Yves Lefort's mail-notification, a tray icon to notify of new mail
git clone https://code.djc.id.au/git/mail-notification/

src/mn-evolution-mailbox-properties.gob (4241B) - raw

      1 /*
      2  * Mail Notification
      3  * Copyright (C) 2003-2008 Jean-Yves Lefort <jylefort@brutele.be>
      4  *
      5  * This program is free software; you can redistribute it and/or modify
      6  * it under the terms of the GNU General Public License as published by
      7  * the Free Software Foundation; either version 3 of the License, or
      8  * (at your option) any later version.
      9  *
     10  * This program is distributed in the hope that it will be useful,
     11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
     12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13  * GNU General Public License for more details.
     14  *
     15  * You should have received a copy of the GNU General Public License along
     16  * with this program; if not, write to the Free Software Foundation, Inc.,
     17  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
     18  */
     19 
     20 %headertop{
     21 #include "mn-mailbox-properties.h"
     22 %}
     23 
     24 %privateheader{
     25 #include "mn-evolution-client.h"
     26 %}
     27 
     28 %{
     29 #include <glib/gi18n.h>
     30 #include "mn-evolution-mailbox.h"
     31 #include "mn-stock.h"
     32 #include "mn-mailbox-properties-private.h"
     33 #include "mn-shell.h"
     34 #include "mn-evolution-client-dbus.h"
     35 #include "mn-util.h"
     36 #include "mn-evolution-folder-tree-client.h"
     37 %}
     38 
     39 class MN:Evolution:Mailbox:Properties from MN:Mailbox:Properties
     40 {
     41   private GtkWidget *tree;
     42 
     43   private char *name destroywith g_free;
     44 
     45   property BOOLEAN complete (override)
     46     get
     47     {
     48       MNEvolutionFolderTreeClient *tree = MN_EVOLUTION_FOLDER_TREE_CLIENT(selfp->tree);
     49       g_value_set_boolean(VAL, mn_evolution_folder_tree_client_get_connected(tree) && tree->selected_uri != NULL);
     50     };
     51 
     52   property STRING default_name (override)
     53     get { g_value_set_string(VAL, selfp->name); };
     54 
     55   class_init (class)
     56   {
     57     MNMailboxPropertiesClass *p_class = MN_MAILBOX_PROPERTIES_CLASS(class);
     58 
     59     p_class->type = "evolution";
     60     p_class->stock_id = MN_STOCK_EVOLUTION_MAILBOX;
     61     p_class->combo_label = "Evolution";
     62     p_class->enable_check_delay = FALSE;
     63   }
     64 
     65   init (self)
     66   {
     67     MNMailboxProperties *properties = MN_MAILBOX_PROPERTIES(self);
     68     GtkWidget *vbox;
     69 
     70     /* translators: header capitalization */
     71     vbox = mn_mailbox_properties_add_general_section(properties, _("Folder"));
     72 
     73     selfp->tree = mn_evolution_folder_tree_client_new();
     74     gtk_box_pack_start(GTK_BOX(vbox), selfp->tree, TRUE, TRUE, 0);
     75     gtk_widget_show(selfp->tree);
     76 
     77     g_object_connect(selfp->tree,
     78 		     "swapped-signal::notify::connected", mn_mailbox_properties_notify_complete, self,
     79 		     "signal::notify::selected-uri", self_notify_selected_uri_h, self,
     80 		     "signal::folder-activated", self_folder_activated_h, self,
     81 		     NULL);
     82   }
     83 
     84   private void
     85     notify_selected_uri_h (GObject *object, GParamSpec *pspec, gpointer user_data)
     86   {
     87     Self *self = user_data;
     88     MNEvolutionClient *client;
     89     char *name = NULL;
     90 
     91     client = mn_evolution_client_get();
     92     if (client->proxy)
     93       org_gnome_MailNotification_Evolution_get_folder_name(client->proxy, MN_EVOLUTION_FOLDER_TREE_CLIENT(selfp->tree)->selected_uri, &name, NULL);
     94 
     95     g_free(selfp->name);
     96     selfp->name = name;
     97 
     98     g_object_notify(G_OBJECT(self), "complete");
     99     g_object_notify(G_OBJECT(self), "default-name");
    100   }
    101 
    102   private void
    103     folder_activated_h (MNEvolutionFolderTreeClient *client, gpointer user_data)
    104   {
    105     Self *self = user_data;
    106 
    107     gtk_window_activate_default(GTK_WINDOW(MN_MAILBOX_PROPERTIES(self)->dialog));
    108   }
    109 
    110   override (MN:Mailbox:Properties) void
    111     set_mailbox (MNMailboxProperties *properties, MNMailbox *mailbox)
    112   {
    113     Self *self = SELF(properties);
    114     MNEvolutionMailbox *evolution_mailbox = MN_EVOLUTION_MAILBOX(mailbox);
    115 
    116     mn_evolution_folder_tree_client_set_selected_uri(MN_EVOLUTION_FOLDER_TREE_CLIENT(selfp->tree), evolution_mailbox->uri);
    117 
    118     g_free(selfp->name);
    119     selfp->name = g_strdup(evolution_mailbox->folder_name);
    120   }
    121 
    122   override (MN:Mailbox:Properties) MNMailbox *
    123     get_mailbox (MNMailboxProperties *properties)
    124   {
    125     Self *self = SELF(properties);
    126     MNMailbox *mailbox;
    127 
    128     mailbox = PARENT_HANDLER(properties);
    129 
    130     g_object_set(mailbox,
    131 		 MN_EVOLUTION_MAILBOX_PROP_URI(MN_EVOLUTION_FOLDER_TREE_CLIENT(selfp->tree)->selected_uri),
    132 		 MN_EVOLUTION_MAILBOX_PROP_FOLDER_NAME(selfp->name),
    133 		 NULL);
    134 
    135     return mailbox;
    136   }
    137 }