Esempio n. 1
0
static void add_button(gpointer compose)
{
	GtkWidget *toolbar;
	PrefsCommon *prefs;
	gint n = 0;
	GtkToolItem *item;
	GtkWidget *icon;
	GdkPixbuf *pixbuf;

	if (!config.enable_autoenc) {
		debug_print("autoenc: autoenc is disabled\n");
		return;
	}

	toolbar = syl_plugin_compose_get_toolbar(compose);
	//n = gtk_toolbar_get_n_items(GTK_TOOLBAR(toolbar));

	prefs = prefs_common_get();
	if (prefs->compose_toolbar_setting) {
		gint i;
		gchar **namev;

		namev = g_strsplit(prefs->compose_toolbar_setting, ",", -1);
		for (i = 0; namev[i] != NULL; i++) {
			if (!strcmp(namev[i], "send")) {
				debug_print("send pos: %d\n", i);
				n = i + 1;
				break;
			}
		}
		g_strfreev(namev);
	} else {
		/* send,send-later,draft,... */
		n = 1;
	}

	//icon = stock_pixbuf_widget_for_toolbar(STOCK_PIXMAP_MAIL_SEND);
	pixbuf = gdk_pixbuf_new_from_inline(sizeof(send_enc), send_enc,
					    FALSE, NULL);
	icon = gtk_image_new_from_pixbuf(pixbuf);
	item = gtk_tool_button_new(icon, _("Send with encryption"));
	gtk_tool_item_set_is_important(item, TRUE);
	gtk_toolbar_insert(GTK_TOOLBAR(toolbar), item, n);
	//gtk_widget_show_all(GTK_WIDGET(toolbar));
	gtk_widget_show_all(GTK_WIDGET(item));

	g_object_set_data(G_OBJECT(toolbar), "send-enc-button", item);

	g_signal_connect(G_OBJECT(item), "clicked",
			 G_CALLBACK(send_encryption_clicked), compose);

	change_button_sensitive(compose, GTK_WIDGET(item));
}
Esempio n. 2
0
void exec_autoforward_cb(GObject *obj, FolderItem *item, const gchar *file, guint num)
{
  PrefsCommon *prefs_common;
  PrefsAccount *ac;

  gchar *rcpath;
  GSList* to_list=NULL;

  gchar *to;
  GError *errval;
  gboolean forward_all;

  gsize gz=0;
  gchar **folders;
  gboolean bmatch;
  int nindex;
  
  if (g_enable!=TRUE){
    return;
  }
  if (item->stype != F_NORMAL && item->stype != F_INBOX){
    return;
  }

  prefs_common = prefs_common_get();
  if (prefs_common->online_mode != TRUE){
    return;
  }

  ac = (PrefsAccount*)account_get_default();
  g_return_if_fail(ac != NULL);

  /* check item->path for filter */
  g_print("[DEBUG] %s:%s name:%s\n", G_STRLOC, G_STRFUNC, item->name);
  g_print("[DEBUG] %s:%s path:%s\n", G_STRLOC, G_STRFUNC,  item->path);

#if 0
  MsgInfo *msginfo = folder_item_get_msginfo(item, num);
  debug_print("[DEBUG] flags:%08x UNREAD:%08x NEW:%08x MARKED:%08x ", msginfo->flags, MSG_UNREAD, MSG_NEW, MSG_MARKED);
  debug_print("[DEBUG] perm_flags:%08x \n", msginfo->flags.perm_flags);
  debug_print("[DEBUG] tmp_flags:%08x \n", msginfo->flags.tmp_flags);
  if ( g_unreadonly_flg != FALSE){
    debug_print("[DEBUG] unreadonly flag:%s\n", g_unreadonly_flg ? "true" : "false");
    if (MSG_IS_UNREAD(msginfo->flags)){
      debug_print("[DEBUG] MSG_IS_UNREAD:true");
    } else {
      return;
    }
  }
#endif    

  rcpath = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, "autoforwardrc", NULL);

  g_keyfile = g_key_file_new();
  g_key_file_load_from_file(g_keyfile, rcpath, G_KEY_FILE_KEEP_COMMENTS, NULL);
  
  to=g_key_file_get_string (g_keyfile, "forward", "to", NULL);
  debug_print("[DEBUG] to:%s", to);
  to_list = address_list_append(to_list, to);


  forward_all = g_key_file_get_boolean (g_keyfile, "forward", "all", &errval);
  if (forward_all != TRUE){
    if (errval) {
      switch (errval->code){
      case G_KEY_FILE_ERROR_INVALID_VALUE:
      case G_KEY_FILE_ERROR_KEY_NOT_FOUND:
        forward_all=TRUE;
        break;
      default:
        break;
      }
    }
  }

  bmatch = FALSE;
  if (forward_all != TRUE){
    folders = g_key_file_get_string_list(g_keyfile, "forward", "folder", &gz, NULL);
    if (gz != 0) {
      /* match or not */
      nindex = 0;
      for (nindex = 0; nindex < gz; nindex++){
        if (g_strcmp0(folders[nindex], item->path) == 0){
          bmatch = TRUE;
          debug_print("[DEBUG] %s %s => match\n", folders[nindex], item->path);
        }
      }
    } else {
      bmatch = FALSE;
    }
  }else{
    bmatch = TRUE;
  }
  g_free(rcpath);
  g_return_if_fail(to_list != NULL);

  g_print("[DEBUG] item->path:%s\n", item->path);
  g_print("[DEBUG] bmatch:%d\n", bmatch);
    
  g_return_if_fail(bmatch == TRUE);

  syl_plugin_send_message_set_forward_flags(ac->address);
  syl_plugin_send_message(file, ac, to_list);
}