adium 3041:3bf34a76df9d: Incoming/outgoing progress indicator me...

commits at adium.im commits at adium.im
Thu Dec 10 07:04:18 UTC 2009


details:	http://hg.adium.im/adium/rev/3bf34a76df9d
revision:	3041:3bf34a76df9d
author:		Zachary West <zacw at adium.im>
date:		Thu Dec 10 02:04:11 2009 -0500

Incoming/outgoing progress indicator methods.

diffs (143 lines):

diff -r 8dc9314899cd -r 3bf34a76df9d Frameworks/Adium Framework/Source/AIMedia.h
--- a/Frameworks/Adium Framework/Source/AIMedia.h	Thu Dec 10 01:49:48 2009 -0500
+++ b/Frameworks/Adium Framework/Source/AIMedia.h	Thu Dec 10 02:04:11 2009 -0500
@@ -15,12 +15,17 @@
 	AIListContact	*listContact;
 	id				protocolInfo;
 	
+	CGFloat			sendProgress;
+	CGFloat			receiveProgress;
+	
 	AIMediaState	mediaState;
 }
 
 @property (assign, nonatomic) id protocolInfo;
 
 @property (readwrite, nonatomic) AIMediaState mediaState;
+ at property (readwrite, nonatomic) CGFloat sendProgress;
+ at property (readwrite, nonatomic) CGFloat receiveProgress;
 @property (readwrite, retain, nonatomic) AIAccount *account;
 @property (readwrite, retain, nonatomic) AIListContact *listContact;
 
diff -r 8dc9314899cd -r 3bf34a76df9d Frameworks/Adium Framework/Source/AIMedia.m
--- a/Frameworks/Adium Framework/Source/AIMedia.m	Thu Dec 10 01:49:48 2009 -0500
+++ b/Frameworks/Adium Framework/Source/AIMedia.m	Thu Dec 10 02:04:11 2009 -0500
@@ -24,7 +24,7 @@
 								onAccount:inAccount] autorelease];
 }
 
- at synthesize listContact, mediaState, account, protocolInfo;
+ at synthesize listContact, mediaState, account, protocolInfo, sendProgress, receiveProgress;
 
 - (id)initWithContact:(AIListContact *)inListContact
 			  onAccount:(AIAccount *)inAccount
diff -r 8dc9314899cd -r 3bf34a76df9d Plugins/Purple Service/adiumPurpleCore.m
--- a/Plugins/Purple Service/adiumPurpleCore.m	Thu Dec 10 01:49:48 2009 -0500
+++ b/Plugins/Purple Service/adiumPurpleCore.m	Thu Dec 10 02:04:11 2009 -0500
@@ -30,6 +30,7 @@
 #import "adiumPurpleSignals.h"
 #import "adiumPurpleWebcam.h"
 #import "adiumPurpleCertificateTrustWarning.h"
+#import "adiumPurpleMedia.h"
 
 #import <AdiumLibpurple/SLPurpleCocoaAdapter.h>
 #import "AILibpurplePlugin.h"
@@ -217,9 +218,7 @@
 	
 	adiumPurpleConversation_init();
 
-#if	ENABLE_WEBCAM
-	initPurpleWebcamSupport();
-#endif
+	adiumPurpleMedia_init();
 	
 	load_external_plugins();
 }
diff -r 8dc9314899cd -r 3bf34a76df9d Plugins/Purple Service/adiumPurpleMedia.h
--- a/Plugins/Purple Service/adiumPurpleMedia.h	Thu Dec 10 01:49:48 2009 -0500
+++ b/Plugins/Purple Service/adiumPurpleMedia.h	Thu Dec 10 02:04:11 2009 -0500
@@ -14,4 +14,4 @@
  * write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
  */
 
-void adium_medias_init(void);
\ No newline at end of file
+void adiumPurpleMedia_init(void);
diff -r 8dc9314899cd -r 3bf34a76df9d Plugins/Purple Service/adiumPurpleMedia.m
--- a/Plugins/Purple Service/adiumPurpleMedia.m	Thu Dec 10 01:49:48 2009 -0500
+++ b/Plugins/Purple Service/adiumPurpleMedia.m	Thu Dec 10 02:04:11 2009 -0500
@@ -27,63 +27,31 @@
 
 static void
 level_message_cb(PurpleMedia *media, gchar *session_id, gchar *participant,
-		double level, AdiumMedia *gtkmedia)
+		double level, AIMedia *adiumMedia)
 {
-	GtkWidget *progress;
-	if (participant == NULL)
-		progress = gtkmedia->priv->send_progress;
-	else
-		progress = gtkmedia->priv->recv_progress;
-	gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(progress), level);
+	if (participant == NULL) {
+		// Send progress
+		[adiumMedia setSendProgress:(CGFloat)level];
+	} else {
+		// Receive progress
+		[adiumMedia setReceiveProgress:(CGFloat)level];
+	}
 }
 
-
+#error Must be called when destroying AIMedia
 static void
-adium_media_disconnect_levels(PurpleMedia *media, AdiumMedia *gtkmedia)
+adium_media_disconnect_levels(PurpleMedia *media, AIMedia *adiumMedia)
 {
 	PurpleMediaManager *manager = purple_media_get_manager(media);
 	GstElement *element = purple_media_manager_get_pipeline(manager);
 	gulong handler_id = g_signal_handler_find(G_OBJECT(gst_pipeline_get_bus(GST_PIPELINE(element))),
 						  G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, 0, 0, 
-						  NULL, G_CALLBACK(level_message_cb), gtkmedia);
+						  NULL, G_CALLBACK(level_message_cb), adiumMedia);
 	if (handler_id)
 		g_signal_handler_disconnect(G_OBJECT(gst_pipeline_get_bus(GST_PIPELINE(element))),
 					    handler_id);
 }
 
-static void
-adium_media_dispose(GObject *media)
-{
-	AdiumMedia *gtkmedia = ADIUM_MEDIA(media);
-	purple_debug_info("gtkmedia", "adium_media_dispose\n");
-
-	if (gtkmedia->priv->media) {
-		purple_request_close_with_handle(gtkmedia);
-		purple_media_remove_output_windows(gtkmedia->priv->media);
-		adium_media_disconnect_levels(gtkmedia->priv->media, gtkmedia);
-		g_object_unref(gtkmedia->priv->media);
-		gtkmedia->priv->media = NULL;
-	}
-
-	if (gtkmedia->priv->item_factory) {
-		g_object_unref(gtkmedia->priv->item_factory);
-		gtkmedia->priv->item_factory = NULL;
-	}
-
-	G_OBJECT_CLASS(parent_class)->dispose(media);
-}
-
-static void
-adium_media_emit_message(AdiumMedia *gtkmedia, const char *msg)
-{
-	PurpleConversation *conv = purple_find_conversation_with_account(
-			PURPLE_CONV_TYPE_ANY, gtkmedia->priv->screenname,
-			purple_media_get_account(gtkmedia->priv->media));
-	if (conv != NULL)
-		purple_conversation_write(conv, NULL, msg,
-				PURPLE_MESSAGE_SYSTEM, time(NULL));
-}
-
 typedef struct
 {
 	AdiumMedia *gtkmedia;




More information about the commits mailing list