mirror of
https://gitlab.gnome.org/GNOME/gitg
synced 2024-10-14 11:52:29 +00:00
Add avatar support on OS X
This commit is contained in:
parent
0e4057e95f
commit
7c563465d9
19
configure.ac
19
configure.ac
|
@ -323,6 +323,25 @@ fi
|
||||||
|
|
||||||
AM_CONDITIONAL(ENABLE_PYTHON, test x"$enable_python" = "xyes")
|
AM_CONDITIONAL(ENABLE_PYTHON, test x"$enable_python" = "xyes")
|
||||||
|
|
||||||
|
dnl check for native osx
|
||||||
|
gdk_targets=`$PKG_CONFIG --variable=targets gdk-3.0`
|
||||||
|
PLATFORM_NAME="other"
|
||||||
|
|
||||||
|
for target in $gdk_targets;
|
||||||
|
do
|
||||||
|
case "$target" in
|
||||||
|
quartz)
|
||||||
|
PLATFORM_NAME=osx
|
||||||
|
;;
|
||||||
|
win32)
|
||||||
|
PLATFORM_NAME=win32
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
AC_SUBST(PLATFORM_NAME)
|
||||||
|
AM_CONDITIONAL(PLATFORM_OSX, test x"$PLATFORM_NAME" = "xosx")
|
||||||
|
|
||||||
dnl libgd
|
dnl libgd
|
||||||
LIBGD_INIT([
|
LIBGD_INIT([
|
||||||
tagged-entry
|
tagged-entry
|
||||||
|
|
|
@ -24,6 +24,7 @@ libgitg_libgitg_1_0_la_LIBADD = \
|
||||||
if GDK_WINDOWING_QUARTZ
|
if GDK_WINDOWING_QUARTZ
|
||||||
libgitg_libgitg_1_0_la_LIBADD += -lobjc
|
libgitg_libgitg_1_0_la_LIBADD += -lobjc
|
||||||
libgitg_libgitg_1_0_la_CFLAGS += -xobjective-c
|
libgitg_libgitg_1_0_la_CFLAGS += -xobjective-c
|
||||||
|
libgitg_libgitg_1_0_la_LDFLAGS += -framework Foundation
|
||||||
endif
|
endif
|
||||||
|
|
||||||
libgitg_libgitg_1_0_la_VALAFLAGS = \
|
libgitg_libgitg_1_0_la_VALAFLAGS = \
|
||||||
|
@ -36,6 +37,7 @@ libgitg_libgitg_1_0_la_VALAFLAGS = \
|
||||||
--pkg gdesktop-enums-3.0 \
|
--pkg gdesktop-enums-3.0 \
|
||||||
--pkg libsoup-2.4 \
|
--pkg libsoup-2.4 \
|
||||||
--pkg gtksourceview-3.0 \
|
--pkg gtksourceview-3.0 \
|
||||||
|
--pkg gitg-platform-support \
|
||||||
$(GITG_VALAFLAGS) \
|
$(GITG_VALAFLAGS) \
|
||||||
--vapidir $(top_srcdir)/vapi \
|
--vapidir $(top_srcdir)/vapi \
|
||||||
--includedir libgitg \
|
--includedir libgitg \
|
||||||
|
@ -84,11 +86,17 @@ libgitg_libgitg_1_0_la_VALASOURCES = \
|
||||||
libgitg/gitg-utils.vala \
|
libgitg/gitg-utils.vala \
|
||||||
libgitg/gitg-when-mapped.vala
|
libgitg/gitg-when-mapped.vala
|
||||||
|
|
||||||
libgitg_libgitg_1_0_la_SOURCES = \
|
libgitg_libgitg_1_0_la_SOURCES = \
|
||||||
$(libgitg_libgitg_1_0_la_VALASOURCES) \
|
$(libgitg_libgitg_1_0_la_VALASOURCES) \
|
||||||
libgitg/gitg-platform-support.c \
|
|
||||||
libgitg/gitg-resources.c
|
libgitg/gitg-resources.c
|
||||||
|
|
||||||
|
if PLATFORM_OSX
|
||||||
|
libgitg_libgitg_1_0_la_SOURCES += libgitg/gitg-platform-support-osx.c
|
||||||
|
else
|
||||||
|
libgitg_libgitg_1_0_la_SOURCES += libgitg/gitg-platform-support.c
|
||||||
|
endif
|
||||||
|
|
||||||
|
|
||||||
libgitg_libgitg_1_0_la_headerdir = $(prefix)/include/libgitg-1.0/libgitg
|
libgitg_libgitg_1_0_la_headerdir = $(prefix)/include/libgitg-1.0/libgitg
|
||||||
libgitg_libgitg_1_0_la_header_HEADERS = libgitg/libgitg.h
|
libgitg_libgitg_1_0_la_header_HEADERS = libgitg/libgitg.h
|
||||||
|
|
||||||
|
|
|
@ -71,7 +71,7 @@ public class Gitg.AvatarCache : Object
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
stream = yield file.read_async(Priority.LOW, cancellable);
|
stream = yield Gitg.PlatformSupport.http_get(file, cancellable);
|
||||||
}
|
}
|
||||||
catch
|
catch
|
||||||
{
|
{
|
||||||
|
|
67
libgitg/gitg-platform-support-osx.c
Normal file
67
libgitg/gitg-platform-support-osx.c
Normal file
|
@ -0,0 +1,67 @@
|
||||||
|
#include "gitg-platform-support.h"
|
||||||
|
|
||||||
|
#include <gdk/gdkquartz.h>
|
||||||
|
|
||||||
|
gboolean
|
||||||
|
gitg_platform_support_use_native_window_controls (GdkDisplay *display)
|
||||||
|
{
|
||||||
|
if (display == NULL)
|
||||||
|
{
|
||||||
|
display = gdk_display_get_default ();
|
||||||
|
}
|
||||||
|
|
||||||
|
return GDK_IS_QUARTZ_DISPLAY (display);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
gitg_platform_support_http_get (GFile *file,
|
||||||
|
GCancellable *cancellable,
|
||||||
|
GAsyncReadyCallback callback,
|
||||||
|
gpointer user_data)
|
||||||
|
{
|
||||||
|
NSURLSessionDataTask *downloadTask;
|
||||||
|
NSString *dataUrl;
|
||||||
|
NSURL *url;
|
||||||
|
GTask *task;
|
||||||
|
|
||||||
|
dataUrl = [NSString stringWithUTF8String:g_file_get_uri (file)];
|
||||||
|
url = [NSURL URLWithString:dataUrl];
|
||||||
|
|
||||||
|
task = g_task_new (file, cancellable, callback, user_data);
|
||||||
|
|
||||||
|
downloadTask = [[NSURLSession sharedSession] dataTaskWithURL:url completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
|
||||||
|
if (g_task_return_error_if_cancelled (task))
|
||||||
|
{
|
||||||
|
}
|
||||||
|
else if (error)
|
||||||
|
{
|
||||||
|
const gchar *message;
|
||||||
|
|
||||||
|
message = [[error localizedDescription] UTF8String];
|
||||||
|
g_task_return_new_error (task, G_IO_ERROR, G_IO_ERROR_FAILED, "%s", message);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
GInputStream *stream;
|
||||||
|
GBytes *bytes;
|
||||||
|
|
||||||
|
bytes = g_bytes_new ([data bytes], [data length]);
|
||||||
|
|
||||||
|
stream = g_memory_input_stream_new_from_bytes (bytes);
|
||||||
|
g_bytes_unref (bytes);
|
||||||
|
|
||||||
|
g_task_return_pointer (task, stream, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
g_object_unref (task);
|
||||||
|
}];
|
||||||
|
|
||||||
|
[downloadTask resume];
|
||||||
|
}
|
||||||
|
|
||||||
|
GInputStream *
|
||||||
|
gitg_platform_support_http_get_finish (GAsyncResult *result,
|
||||||
|
GError **error)
|
||||||
|
{
|
||||||
|
return g_task_propagate_pointer (G_TASK (result), error);
|
||||||
|
}
|
|
@ -1,20 +1,23 @@
|
||||||
#include "gitg-platform-support.h"
|
#include "gitg-platform-support.h"
|
||||||
|
|
||||||
#ifdef GDK_WINDOWING_QUARTZ
|
|
||||||
#include <gdk/gdkquartz.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
gboolean
|
gboolean
|
||||||
gitg_platform_support_use_native_window_controls (GdkDisplay *display)
|
gitg_platform_support_use_native_window_controls (GdkDisplay *display)
|
||||||
{
|
{
|
||||||
#ifdef GDK_WINDOWING_QUARTZ
|
|
||||||
if (display == NULL)
|
|
||||||
{
|
|
||||||
display = gdk_display_get_default ();
|
|
||||||
}
|
|
||||||
|
|
||||||
return GDK_IS_QUARTZ_DISPLAY (display);
|
|
||||||
#else
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
#endif
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
gitg_platform_support_http_get (GFile *file,
|
||||||
|
GCancellable *cancellable,
|
||||||
|
GAsyncReadyCallback callback,
|
||||||
|
gpointer user_data)
|
||||||
|
{
|
||||||
|
g_file_read_async (file, G_PRIORITY_DEFAULT, cancellable, callback, user_data);
|
||||||
|
}
|
||||||
|
|
||||||
|
GInputStream *
|
||||||
|
gitg_platform_support_http_get_finish (GAsyncResult *result,
|
||||||
|
GError **error)
|
||||||
|
{
|
||||||
|
return G_INPUT_STREAM (g_file_read_async_finish (g_async_result_get_source_object (result), result, error);
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,5 +5,13 @@
|
||||||
|
|
||||||
gboolean gitg_platform_support_use_native_window_controls (GdkDisplay *display);
|
gboolean gitg_platform_support_use_native_window_controls (GdkDisplay *display);
|
||||||
|
|
||||||
|
void gitg_platform_support_http_get (GFile *file,
|
||||||
|
GCancellable *cancellable,
|
||||||
|
GAsyncReadyCallback callback,
|
||||||
|
gpointer user_data);
|
||||||
|
|
||||||
|
GInputStream *gitg_platform_support_http_get_finish (GAsyncResult *result,
|
||||||
|
GError **error);
|
||||||
|
|
||||||
#endif /* __GITG_PLATFORM_SUPPORT_H__ */
|
#endif /* __GITG_PLATFORM_SUPPORT_H__ */
|
||||||
|
|
||||||
|
|
|
@ -4,5 +4,6 @@ namespace Gitg
|
||||||
public class PlatformSupport
|
public class PlatformSupport
|
||||||
{
|
{
|
||||||
public static bool use_native_window_controls(Gdk.Display? display = null);
|
public static bool use_native_window_controls(Gdk.Display? display = null);
|
||||||
|
public static async GLib.InputStream http_get(GLib.File url, GLib.Cancellable? cancellable = null) throws GLib.IOError;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue