tomboy r2078 - in trunk: . Tomboy/Addins/VoiceNotes



Author: nshmyrev
Date: Tue Aug 12 22:07:11 2008
New Revision: 2078
URL: http://svn.gnome.org/viewvc/tomboy?rev=2078&view=rev

Log:
2008-08-13  Gabriel Marcondes <gabrielgeraldo gmail com>
	
	* Tomboy/Addins/VoiceNotes/Makefile.am,
	  Tomboy/Addins/VoiceNotes/VoiceNote.cs,
	  Tomboy/Addins/VoiceNotes/voicenote-22.png,
	  Tomboy/Addins/VoiceNotes/voicenotemedia.c: Speech
	  data is deleted when note is deleted, status of the
	  stop button is set properly. Icon for for notes with
	  recording is added.



Added:
   trunk/Tomboy/Addins/VoiceNotes/voicenote-22.png   (contents, props changed)
Modified:
   trunk/ChangeLog
   trunk/Tomboy/Addins/VoiceNotes/Makefile.am
   trunk/Tomboy/Addins/VoiceNotes/VoiceNote.cs
   trunk/Tomboy/Addins/VoiceNotes/voicenotemedia.c

Modified: trunk/Tomboy/Addins/VoiceNotes/Makefile.am
==============================================================================
--- trunk/Tomboy/Addins/VoiceNotes/Makefile.am	(original)
+++ trunk/Tomboy/Addins/VoiceNotes/Makefile.am	Tue Aug 12 22:07:11 2008
@@ -17,7 +17,8 @@
 CSFILES = \
 	$(srcdir)/VoiceNote.cs
 RESOURCES = \
-	-resource:$(srcdir)/$(ADDIN_NAME).addin.xml
+	-resource:$(srcdir)/$(ADDIN_NAME).addin.xml \
+	-resource:$(srcdir)/voicenote-22.png,voicenote.png
 
 $(TARGET): $(CSFILES) $(top_builddir)/Tomboy/Tomboy.exe
 	$(CSC) -out:$@ $(CSFLAGS) $(ASSEMBLIES) $(CSFILES) $(RESOURCES)
@@ -29,7 +30,8 @@
 
 EXTRA_DIST = \
 	$(CSFILES) \
-	$(srcdir)/$(ADDIN_NAME).addin.xml
+	$(srcdir)/$(ADDIN_NAME).addin.xml \
+	$(srcdir)/voicenote-22.png
 
 CLEANFILES = \
 	$(TARGET).mdb \

Modified: trunk/Tomboy/Addins/VoiceNotes/VoiceNote.cs
==============================================================================
--- trunk/Tomboy/Addins/VoiceNotes/VoiceNote.cs	(original)
+++ trunk/Tomboy/Addins/VoiceNotes/VoiceNote.cs	Tue Aug 12 22:07:11 2008
@@ -16,10 +16,14 @@
 		InterruptableTimeout button_manager;
 		String voice_note_path;
 		bool has_voice_note;
+		bool pipeline_set = false;
+		static Gdk.Pixbuf icon = null;
 
 		
 		static VoiceNote ()
 		{
+			icon = GuiUtils.GetIcon (System.Reflection.Assembly.GetExecutingAssembly (),
+				"voicenote", 22);
 		}		
 
 		[DllImport("libvoicenote")]
@@ -56,6 +60,12 @@
 			record_button.Clicked -= OnRecordButtonClicked;
 			play_button.Clicked -= OnPlayButtonClicked;
 			stop_button.Clicked -= OnStopButtonClicked;
+			
+			// Stop if streaming, and delete the voice note
+			if (pipeline_set)
+				stop_stream ();
+			if (has_voice_note)				
+				File.Delete (voice_note_path);
 		}
 
 
@@ -63,6 +73,11 @@
 		{
 			voice_note_path = Note.FilePath + ".ogg";
 			has_voice_note = voice_note_exists ();
+			//set the icon if there is a voice note
+			if (has_voice_note) {
+				Window.Icon = icon;
+			}
+			
 			separator.Show ();
 			record_button.Show ();
 			play_button.Sensitive = has_voice_note; 
@@ -74,6 +89,10 @@
 			AddToolItem (play_button, -1);
 			AddToolItem (stop_button, -1);
 			
+			// This has to be done here and not in initialize,
+			//otherwise the button's layout becomes disformed
+			Window.Hidden += OnNoteClosed;
+			
 			button_manager = new InterruptableTimeout ();
 			button_manager.Timeout += UpdateButtons;
 		}
@@ -82,14 +101,29 @@
 		void OnRecordButtonClicked (object sender, EventArgs args)
 		{
 			start_record (voice_note_path);
-			button_manager.Reset (100);
+			pipeline_set = true;
+			record_button.Sensitive = false;
+			play_button.Sensitive = false;
+			stop_button.Sensitive = true;
+
+			// If there was not, now there is...
+			if (!has_voice_note) {
+				has_voice_note = true;
+				Window.Icon = icon;
+			}
+			
+			button_manager.Reset (500);
 		}
 
 
 		void OnPlayButtonClicked (object sender, EventArgs args)
 		{
-			start_play (voice_note_path);
-			button_manager.Reset (100);
+			start_play (voice_note_path);	
+			pipeline_set = true;
+			record_button.Sensitive = false;
+			play_button.Sensitive = false;
+			stop_button.Sensitive = true;
+			button_manager.Reset (500);
 		}
 		
 		void OnStopButtonClicked (object sender, EventArgs args)
@@ -97,20 +131,24 @@
 			stop_stream ();
 		}
 		
+		void OnNoteClosed (object sender, EventArgs args)
+		{
+			// Stop streaming before hide the window
+			if (pipeline_set)
+				stop_stream ();
+		}
+		
 		void UpdateButtons (object sender, EventArgs args)
 		{
 			int media_state = get_state ();
 			switch (media_state) {
-			case 0: //Stopped
+			case 0: //Stopped, back to initial state
 				record_button.Sensitive = true;
 				play_button.Sensitive = true;
 				stop_button.Sensitive = false;
 				break;
-			case 1: //Streaming
-				record_button.Sensitive = false;
-				play_button.Sensitive = false;
-				stop_button.Sensitive = true;
-				button_manager.Reset (100);
+			case 1: //Still streaming, don't change
+				button_manager.Reset (500);
 				break;
 			default: //should not happen!!!
 				break;				
@@ -119,13 +157,8 @@
 
 		bool voice_note_exists ()
 		{
-			FileStream voice_note_file;
-			try{
-				voice_note_file = File.Open (voice_note_path, FileMode.Open);
-			}
-			catch (Exception except) {
-				return false;
-			}
+			try{ File.Open (voice_note_path, FileMode.Open); }
+			catch (Exception except) { return false; }
 			return true;
 		}
 	}

Added: trunk/Tomboy/Addins/VoiceNotes/voicenote-22.png
==============================================================================
Binary file. No diff available.

Modified: trunk/Tomboy/Addins/VoiceNotes/voicenotemedia.c
==============================================================================
--- trunk/Tomboy/Addins/VoiceNotes/voicenotemedia.c	(original)
+++ trunk/Tomboy/Addins/VoiceNotes/voicenotemedia.c	Tue Aug 12 22:07:11 2008
@@ -20,7 +20,6 @@
   switch (GST_MESSAGE_TYPE (message)) {
     case GST_MESSAGE_EOS: {
       gst_element_set_state (GST_ELEMENT (pipeline), GST_STATE_READY);
-      printf ("Finished?");
       break;
     }
     default:



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]