update copyright year
[claws.git] / src / plugins / litehtml_viewer / lh_viewer.c
index bf6435bb3f2c05614d4d52673ddf98758a812454..b6109fd478c79f41d94ac9920017e22291d58414 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * 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
@@ -43,44 +43,6 @@ static GtkWidget *lh_get_widget(MimeViewer *_viewer)
        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)
 {
@@ -88,13 +50,14 @@ static void lh_show_mimepart(MimeViewer *_viewer, const gchar *infile,
        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;
@@ -103,6 +66,7 @@ static void lh_show_mimepart(MimeViewer *_viewer, const gchar *infile,
                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);
@@ -130,6 +94,7 @@ static void lh_destroy_viewer(MimeViewer *_viewer)
        g_free(viewer);
 }
 
+/*
 static void lh_print_viewer (MimeViewer *_viewer)
 {
     debug_print("LH: print_viewer\n");
@@ -137,6 +102,34 @@ static void lh_print_viewer (MimeViewer *_viewer)
     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()
@@ -152,10 +145,12 @@ 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,