adium 3043:cd0d54bfe668: Set the type of media (audio or video) ...
commits at adium.im
commits at adium.im
Thu Dec 10 07:30:35 UTC 2009
details: http://hg.adium.im/adium/rev/cd0d54bfe668
revision: 3043:cd0d54bfe668
author: Zachary West <zacw at adium.im>
date: Thu Dec 10 02:30:27 2009 -0500
Set the type of media (audio or video) for each AIMedia.
diffs (222 lines):
diff -r b4714680eb6a -r cd0d54bfe668 Frameworks/Adium Framework/Source/AIMedia.h
--- a/Frameworks/Adium Framework/Source/AIMedia.h Thu Dec 10 02:24:36 2009 -0500
+++ b/Frameworks/Adium Framework/Source/AIMedia.h Thu Dec 10 02:30:27 2009 -0500
@@ -18,11 +18,13 @@
CGFloat sendProgress;
CGFloat receiveProgress;
+ AIMediaType mediaType;
AIMediaState mediaState;
}
@property (assign, nonatomic) id protocolInfo;
+ at property (readwrite, nonatomic) AIMediaType mediaType;
@property (readwrite, nonatomic) AIMediaState mediaState;
@property (readwrite, nonatomic) CGFloat sendProgress;
@property (readwrite, nonatomic) CGFloat receiveProgress;
diff -r b4714680eb6a -r cd0d54bfe668 Frameworks/Adium Framework/Source/AIMedia.m
--- a/Frameworks/Adium Framework/Source/AIMedia.m Thu Dec 10 02:24:36 2009 -0500
+++ b/Frameworks/Adium Framework/Source/AIMedia.m Thu Dec 10 02:30:27 2009 -0500
@@ -24,7 +24,7 @@
onAccount:inAccount] autorelease];
}
- at synthesize listContact, mediaState, account, protocolInfo, sendProgress, receiveProgress;
+ at synthesize listContact, mediaType, mediaState, account, protocolInfo, sendProgress, receiveProgress;
- (id)initWithContact:(AIListContact *)inListContact
onAccount:(AIAccount *)inAccount
diff -r b4714680eb6a -r cd0d54bfe668 Frameworks/Adium Framework/Source/AIMediaControllerProtocol.h
--- a/Frameworks/Adium Framework/Source/AIMediaControllerProtocol.h Thu Dec 10 02:24:36 2009 -0500
+++ b/Frameworks/Adium Framework/Source/AIMediaControllerProtocol.h Thu Dec 10 02:30:27 2009 -0500
@@ -9,6 +9,11 @@
#import <Adium/AIControllerProtocol.h>
typedef enum {
+ AIMediaTypeAudio,
+ AIMediaTypeVideo
+} AIMediaType;
+
+typedef enum {
AIMediaStateWaiting = 1, /* Waiting for response */
AIMediaStateRequested, /* Got request */
AIMediaStateAccepted, /* Accepted call */
diff -r b4714680eb6a -r cd0d54bfe668 Plugins/Purple Service/adiumPurpleMedia.m
--- a/Plugins/Purple Service/adiumPurpleMedia.m Thu Dec 10 02:24:36 2009 -0500
+++ b/Plugins/Purple Service/adiumPurpleMedia.m Thu Dec 10 02:30:27 2009 -0500
@@ -54,7 +54,7 @@
typedef struct
{
- AdiumMedia *gtkmedia;
+ AIMedia *adiumMedia;
gchar *session_id;
gchar *participant;
} AdiumMediaRealizeData;
@@ -106,110 +106,11 @@
#error error message
}
-static GtkWidget *
-adium_media_add_audio_widget(AdiumMedia *gtkmedia,
- PurpleMediaSessionType type)
-{
- GtkWidget *volume_widget, *progress_parent, *volume, *progress;
- double value;
-
- if (type & PURPLE_MEDIA_SEND_AUDIO) {
- value = purple_prefs_get_int(
- "/purple/media/audio/volume/input");
- } else if (type & PURPLE_MEDIA_RECV_AUDIO) {
- value = purple_prefs_get_int(
- "/purple/media/audio/volume/output");
- } else
- g_return_val_if_reached(NULL);
-
-#if GTK_CHECK_VERSION(2,12,0)
- /* Setup widget structure */
- volume_widget = gtk_hbox_new(FALSE, ADIUM_HIG_BOX_SPACE);
- progress_parent = gtk_vbox_new(FALSE, 0);
- gtk_box_pack_start(GTK_BOX(volume_widget),
- progress_parent, TRUE, TRUE, 0);
-
- /* Volume button */
- volume = gtk_volume_button_new();
- gtk_scale_button_set_value(GTK_SCALE_BUTTON(volume), value/100.0);
- gtk_box_pack_end(GTK_BOX(volume_widget),
- volume, FALSE, FALSE, 0);
-#else
- /* Setup widget structure */
- volume_widget = gtk_vbox_new(FALSE, 0);
- progress_parent = volume_widget;
-
- /* Volume slider */
- volume = gtk_hscale_new_with_range(0.0, 100.0, 5.0);
- gtk_range_set_increments(GTK_RANGE(volume), 5.0, 25.0);
- gtk_range_set_value(GTK_RANGE(volume), value);
- gtk_scale_set_draw_value(GTK_SCALE(volume), FALSE);
- gtk_box_pack_end(GTK_BOX(volume_widget),
- volume, TRUE, FALSE, 0);
-#endif
-
- /* Volume level indicator */
- progress = gtk_progress_bar_new();
- gtk_widget_set_size_request(progress, 250, 10);
- gtk_box_pack_end(GTK_BOX(progress_parent), progress, TRUE, FALSE, 0);
-
- if (type & PURPLE_MEDIA_SEND_AUDIO) {
- g_signal_connect (G_OBJECT(volume), "value-changed",
- G_CALLBACK(adium_media_input_volume_changed),
- gtkmedia->priv->media);
- gtkmedia->priv->send_progress = progress;
- } else if (type & PURPLE_MEDIA_RECV_AUDIO) {
- g_signal_connect (G_OBJECT(volume), "value-changed",
- G_CALLBACK(adium_media_output_volume_changed),
- gtkmedia->priv->media);
- gtkmedia->priv->recv_progress = progress;
- }
-
- gtk_widget_show_all(volume_widget);
-
- return volume_widget;
-}
-
static void
adium_media_ready_cb(PurpleMedia *media, AIMedia *adiumMedia, const gchar *sid)
{
PurpleMediaSessionType type = purple_media_get_session_type(media, sid);
-
- if (gtkmedia->priv->recv_widget == NULL
- && type & (PURPLE_MEDIA_RECV_VIDEO |
- PURPLE_MEDIA_RECV_AUDIO)) {
- recv_widget = gtk_vbox_new(FALSE, ADIUM_HIG_BOX_SPACE);
- gtk_box_pack_start(GTK_BOX(gtkmedia->priv->display),
- recv_widget, TRUE, TRUE, 0);
- gtk_widget_show(recv_widget);
- } else
- recv_widget = gtkmedia->priv->recv_widget;
- if (gtkmedia->priv->send_widget == NULL
- && type & (PURPLE_MEDIA_SEND_VIDEO |
- PURPLE_MEDIA_SEND_AUDIO)) {
- send_widget = gtk_vbox_new(FALSE, ADIUM_HIG_BOX_SPACE);
- gtk_box_pack_start(GTK_BOX(gtkmedia->priv->display),
- send_widget, TRUE, TRUE, 0);
- button_widget = gtk_hbox_new(FALSE, ADIUM_HIG_BOX_SPACE);
- gtk_box_pack_end(GTK_BOX(send_widget), button_widget,
- FALSE, FALSE, 0);
- gtk_widget_show(GTK_WIDGET(button_widget));
- gtk_widget_show(send_widget);
-
- /* Hold button */
- gtkmedia->priv->hold =
- gtk_toggle_button_new_with_mnemonic("_Hold");
- g_signal_connect(gtkmedia->priv->hold, "toggled",
- G_CALLBACK(adium_media_hold_toggled),
- gtkmedia);
- gtk_box_pack_end(GTK_BOX(button_widget), gtkmedia->priv->hold,
- FALSE, FALSE, 0);
- gtk_widget_show(gtkmedia->priv->hold);
- } else {
- send_widget = gtkmedia->priv->send_widget;
- button_widget = gtkmedia->priv->button_widget;
- }
-
+
if (type & PURPLE_MEDIA_RECV_VIDEO) {
AdiumMediaRealizeData *data;
GtkWidget *aspect;
@@ -236,6 +137,7 @@
gtkmedia->priv->remote_video = remote_video;
}
+
if (type & PURPLE_MEDIA_SEND_VIDEO) {
AdiumMediaRealizeData *data;
GtkWidget *aspect;
@@ -301,34 +203,16 @@
gtkmedia);
}
- if (send_widget != NULL)
- gtkmedia->priv->send_widget = send_widget;
- if (recv_widget != NULL)
- gtkmedia->priv->recv_widget = recv_widget;
- if (button_widget != NULL)
- gtkmedia->priv->button_widget = button_widget;
-
if (purple_media_is_initiator(media, sid, NULL) == FALSE) {
#error XXX Add something to accept or reject this media
}
/* set the window icon according to the type */
if (type & PURPLE_MEDIA_VIDEO) {
- icon = gtk_widget_render_icon(GTK_WIDGET(gtkmedia),
- ADIUM_STOCK_TOOLBAR_VIDEO_CALL,
- gtk_icon_size_from_name(ADIUM_ICON_SIZE_TANGO_LARGE), NULL);
+ adiumMedia.mediaType = AIMediaTypeVideo;
} else if (type & PURPLE_MEDIA_AUDIO) {
- icon = gtk_widget_render_icon(GTK_WIDGET(gtkmedia),
- ADIUM_STOCK_TOOLBAR_AUDIO_CALL,
- gtk_icon_size_from_name(ADIUM_ICON_SIZE_TANGO_LARGE), NULL);
+ adiumMedia.mediaType = AIMediaTypeAudio;
}
-
- if (icon) {
- gtk_window_set_icon(GTK_WINDOW(gtkmedia), icon);
- g_object_unref(icon);
- }
-
- gtk_widget_show(gtkmedia->priv->display);
}
static void
@@ -354,7 +238,7 @@
#warning Check for pending accept/deny
adiumMedia.mediaState = AIMediaStateAccepted;
- adium_media_emit_message(gtkmedia, _("Call in progress."));
+#error adium_media_emit_message(gtkmedia, _("Call in progress."));
}
}
More information about the commits
mailing list