/*
- * Claws Mail -- A GTK+ based, lightweight, and fast e-mail client
+ * Claws Mail -- A GTK based, lightweight, and fast e-mail client
* Copyright(C) 2019 the Claws Mail Team
*
* This program is free software; you can redistribute it and/or modify
return viewer->vbox;
}
-static gchar *get_utf8_string(const gchar *string) {
- gchar *utf8 = NULL;
- gsize length;
- GError *error = NULL;
- gchar *locale = NULL;
-
- if (!g_utf8_validate(string, -1, NULL)) {
- const gchar *cur_locale = conv_get_current_locale();
- gchar* split = g_strstr_len(cur_locale, -1, ".");
- if (split) {
- locale = ++split;
- } else {
- locale = (gchar *) cur_locale;
- }
- debug_print("Try converting to UTF-8 from %s\n", locale);
- if (g_ascii_strcasecmp("utf-8", locale) != 0) {
- utf8 = g_convert(string, -1, "utf-8", locale, NULL, &length, &error);
- if (error) {
- debug_print("Failed convertion to current locale: %s\n", error->message);
- g_clear_error(&error);
- }
- }
- if (!utf8) {
- debug_print("Use iso-8859-1 as last resort\n");
- utf8 = g_convert(string, -1, "utf-8", "iso-8859-1", NULL, &length, &error);
- if (error) {
- debug_print("Charset detection failed. Use text as is\n");
- utf8 = g_strdup(string);
- g_clear_error(&error);
- }
- }
- } else {
- utf8 = g_strdup(string);
- }
-
- return utf8;
-}
-
static void lh_show_mimepart(MimeViewer *_viewer, const gchar *infile,
MimeInfo *partinfo)
{
LHViewer *viewer = (LHViewer *)_viewer;
gchar *string = procmime_get_part_as_string(partinfo, TRUE);
gchar *utf8 = NULL;
+ const gchar *charset;
if (string == NULL) {
- g_warning("LH: couldn't get MIME part file\n");
+ g_warning("LH: couldn't get MIME part file");
return;
}
- gchar *charset = procmime_mimeinfo_get_parameter(partinfo, "charset");
+ charset = procmime_mimeinfo_get_parameter(partinfo, "charset");
if (charset != NULL && g_ascii_strcasecmp("utf-8", charset) != 0) {
gsize length;
GError *error = NULL;
if (error) {
g_warning("LH: failed mimepart conversion to UTF-8: %s", error->message);
g_free(string);
+ g_error_free(error);
return;
}
debug_print("LH: successfully converted %" G_GSIZE_FORMAT " bytes\n", length);
g_free(viewer);
}
+/*
static void lh_print_viewer (MimeViewer *_viewer)
{
debug_print("LH: print_viewer\n");
LHViewer* viewer = (LHViewer *) _viewer;
lh_widget_print(viewer->widget);
}
+*/
+
+
+static gboolean lh_scroll_page(MimeViewer *_viewer, gboolean up)
+{
+ LHViewer *viewer = (LHViewer *)_viewer;
+ GtkAdjustment *vadj = NULL;
+
+ if (!viewer || (viewer->widget == NULL))
+ return FALSE;
+
+ vadj = gtk_scrolled_window_get_vadjustment(
+ GTK_SCROLLED_WINDOW(lh_widget_get_widget(viewer->widget)));
+ return gtkutils_scroll_page(lh_widget_get_widget(viewer->widget), vadj, up);
+}
+
+static void lh_scroll_one_line(MimeViewer *_viewer, gboolean up)
+{
+ LHViewer *viewer = (LHViewer *)_viewer;
+ GtkAdjustment *vadj = NULL;
+
+ if (!viewer || (viewer->widget == NULL))
+ return;
+
+ vadj = gtk_scrolled_window_get_vadjustment(
+ GTK_SCROLLED_WINDOW(lh_widget_get_widget(viewer->widget)));
+ gtkutils_scroll_one_line(lh_widget_get_widget(viewer->widget), vadj, up);
+}
/***************************************************************/
MimeViewer *lh_viewer_create()
viewer->mimeviewer.clear_viewer = lh_clear_viewer;
viewer->mimeviewer.destroy_viewer = lh_destroy_viewer;
-
- viewer->mimeviewer.print = lh_print_viewer;
- viewer->vbox = gtk_vbox_new(FALSE, 0);
+ viewer->mimeviewer.scroll_page = lh_scroll_page;
+ viewer->mimeviewer.scroll_one_line = lh_scroll_one_line;
+
+ viewer->vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
+ gtk_widget_set_name(GTK_WIDGET(viewer->vbox), "litehtml_viewer");
GtkWidget *w = lh_widget_get_widget(viewer->widget);
gtk_box_pack_start(GTK_BOX(viewer->vbox), w,