[chronojump] Encoder data starts being saved



commit fc1bf829e7b66690fe874be9d3985284530a6e2d
Author: Xavier de Blas <xaviblas gmail com>
Date:   Tue Apr 10 19:14:45 2012 +0200

    Encoder data starts being saved

 diagrams/sqlite/chronojump_sqlite.dia |  Bin 12849 -> 12855 bytes
 diagrams/sqlite/chronojump_sqlite.png |  Bin 157555 -> 157806 bytes
 src/gui/encoder.cs                    |   50 +++++++++++++++++++++++++++++----
 src/gui/genericWindow.cs              |    4 ++
 src/sqlite/encoder.cs                 |    9 +++--
 src/util.cs                           |   15 ++++++++++
 6 files changed, 68 insertions(+), 10 deletions(-)
---
diff --git a/diagrams/sqlite/chronojump_sqlite.dia b/diagrams/sqlite/chronojump_sqlite.dia
index 7603870..67fbcc9 100644
Binary files a/diagrams/sqlite/chronojump_sqlite.dia and b/diagrams/sqlite/chronojump_sqlite.dia differ
diff --git a/diagrams/sqlite/chronojump_sqlite.png b/diagrams/sqlite/chronojump_sqlite.png
index 051de5e..dc74e49 100644
Binary files a/diagrams/sqlite/chronojump_sqlite.png and b/diagrams/sqlite/chronojump_sqlite.png differ
diff --git a/src/gui/encoder.cs b/src/gui/encoder.cs
index 02b6cc9..c12ceb0 100644
--- a/src/gui/encoder.cs
+++ b/src/gui/encoder.cs
@@ -25,6 +25,7 @@ using Gdk;
 using Glade;
 using System.Collections;
 using System.Threading;
+using Mono.Unix;
 
 
 public partial class ChronoJumpWindow 
@@ -69,6 +70,8 @@ public partial class ChronoJumpWindow
 	private string encoderAnalysis="powerBars";
 	enum encoderModes { CAPTURE, ANALYZE }
 	
+	GenericWindow genericWinForEncoder;
+	
 
 	//TODO: check all repetitive conditions areok on pyserial and on treeview
 	//TODO: fix spinbutton on repetitive conditions (page...) to ensure decimal can be selected
@@ -134,7 +137,7 @@ public partial class ChronoJumpWindow
 				(int) spin_encoder_capture_time.Value, 
 				(int) spin_encoder_capture_min_height.Value, 
 				!radiobutton_encoder_capture_bar.Active,
-				findMass(),
+				findMass(true),
 				Util.ConvertToPoint((double) spin_encoder_smooth.Value), //R decimal: '.'
 				findEccon(),
 				heightHigherCondition, heightLowerCondition,
@@ -189,7 +192,7 @@ public partial class ChronoJumpWindow
 		EncoderParams ep = new EncoderParams(
 				(int) spin_encoder_capture_min_height.Value, 
 				!radiobutton_encoder_capture_bar.Active,
-				findMass(),
+				findMass(true),
 				findEccon(), "curves",
 				Util.ConvertToPoint((double) spin_encoder_smooth.Value), //R decimal: '.'
 			       	0, 			//curve is not used here
@@ -207,7 +210,39 @@ public partial class ChronoJumpWindow
 
 	void on_button_encoder_save_clicked (object o, EventArgs args) 
 	{
+		genericWinForEncoder = GenericWindow.Show(Catalog.GetString("Add an optional description"), Constants.GenericWindowShow.TEXTVIEW);
+		genericWinForEncoder.SetTextview("");
+		genericWinForEncoder.SetButtonAcceptLabel(Catalog.GetString("Save"));
+
+		genericWinForEncoder.Button_accept.Clicked += new EventHandler(on_save_description_add_accepted);
 	}
+	
+	private void on_save_description_add_accepted (object o, EventArgs args) {
+		genericWinForEncoder.Button_accept.Clicked -= new EventHandler(on_save_description_add_accepted);
+		string desc = genericWinForEncoder.TextviewSelected;
+		
+		Log.WriteLine(desc);
+	
+		//Saving file
+		//Util.MoveTempEncoderData (currentSession.UniqueID, currentPerson.UniqueID);
+		Util.CopyTempEncoderData (currentSession.UniqueID, currentPerson.UniqueID);
+
+		//Adding on SQL
+		SqliteEncoder.Insert(false, "-1", 
+				currentPerson.UniqueID, currentSession.UniqueID, 
+				"put an automatic name",	//TODO: using uniqueID and a counter, or maybe it's sql id autoincrement
+				Util.GetEncoderSessionDataDir(currentSession.UniqueID),	//url
+				(! radiobutton_encoder_capture_bar.Active).ToString(),
+				findMass(false), //when save on sql, do not include person weight
+				findEccon(),
+				(int) spin_encoder_capture_time.Value, 
+				(int) spin_encoder_capture_min_height.Value, 
+				(double) spin_encoder_smooth.Value,
+				desc);
+		
+		encoder_pulsebar_capture.Text = "Saved.";
+	}
+
 	void on_button_encoder_load_clicked (object o, EventArgs args) 
 	{
 	}
@@ -225,7 +260,7 @@ public partial class ChronoJumpWindow
 		EncoderParams ep = new EncoderParams(
 				(int) spin_encoder_capture_min_height.Value, 
 				!radiobutton_encoder_capture_bar.Active,
-				findMass(),
+				findMass(true),
 				findEccon(), encoderAnalysis,
 				Util.ConvertToPoint((double) spin_encoder_smooth.Value), //R decimal: '.'
 				(int) spin_encoder_analyze_curve_num.Value, 
@@ -264,12 +299,15 @@ public partial class ChronoJumpWindow
 		encoderAnalysis="powerBars";
 	}
 
-	private string findMass() {
+	private string findMass(bool includePerson) {
 		double mass = 0;
 		if(radiobutton_encoder_capture_bar.Active)
 			mass = spin_encoder_bar_limit.Value;
-		else
-			mass = Convert.ToDouble(label_encoder_person_weight.Text) + spin_encoder_jump_limit.Value;
+		else {
+			mass = spin_encoder_jump_limit.Value;
+			if(includePerson)
+				mass += Convert.ToDouble(label_encoder_person_weight.Text);
+		}
 
 		return Util.ConvertToPoint(mass); //R decimal: '.'
 	}
diff --git a/src/gui/genericWindow.cs b/src/gui/genericWindow.cs
index deb025e..4e2404a 100644
--- a/src/gui/genericWindow.cs
+++ b/src/gui/genericWindow.cs
@@ -94,6 +94,10 @@ public class GenericWindow
 		tb.Text = str;
 		textview.Buffer = tb;
 	}
+	
+	public void SetButtonAcceptLabel(string str) {
+		button_accept.Label=str;
+	}
 
 
 	protected void on_button_cancel_clicked (object o, EventArgs args)
diff --git a/src/sqlite/encoder.cs b/src/sqlite/encoder.cs
index 91cce3c..18febd6 100644
--- a/src/sqlite/encoder.cs
+++ b/src/sqlite/encoder.cs
@@ -43,6 +43,7 @@ class SqliteEncoder : Sqlite
 			"uniqueID INTEGER PRIMARY KEY, " +
 			"personID INT, " +
 			"sessionID INT, " +
+			"name TEXT, " +
 			"url TEXT, " +
 			"type TEXT, " +		//"bar" or "jump"
 			"extraWeight TEXT, " +	//string because can contain "33%" or "50Kg"
@@ -59,7 +60,7 @@ class SqliteEncoder : Sqlite
 	 * Encoder class methods
 	 */
 	
-	public static int Insert(bool dbconOpened, string tableName, string uniqueID, int personID, int sessionID, string url, string type, string extraWeight, string eccon, int time, int minHeight, float smooth, string description)
+	public static int Insert(bool dbconOpened, string uniqueID, int personID, int sessionID, string name, string url, string type, string extraWeight, string eccon, int time, int minHeight, double smooth, string description)
 	{
 		if(! dbconOpened)
 			dbcon.Open();
@@ -67,10 +68,10 @@ class SqliteEncoder : Sqlite
 		if(uniqueID == "-1")
 			uniqueID = "NULL";
 
-		dbcmd.CommandText = "INSERT INTO " + tableName +  
-				" (uniqueID, personID, sessionID, url, type, extraWeight, econ, time, minHeight, smooth, description)" +
+		dbcmd.CommandText = "INSERT INTO " + Constants.EncoderTable +  
+				" (uniqueID, personID, sessionID, name, url, type, extraWeight, eccon, time, minHeight, smooth, description)" +
 				" VALUES (" + uniqueID + ", "
-				+ personID + ", " + sessionID + ", '" + url + "', '" + type + "', '" 
+				+ personID + ", " + sessionID + ", '" + name + "', '" + url + "', '" + type + "', '" 
 				+ extraWeight + "', '" + eccon + "', " + time + ", " + minHeight + ", " 
 				+ Util.ConvertToPoint(smooth) + ", '" + description + "')" ;
 		Log.WriteLine(dbcmd.CommandText.ToString());
diff --git a/src/util.cs b/src/util.cs
index e034dcd..ac2949c 100644
--- a/src/util.cs
+++ b/src/util.cs
@@ -844,6 +844,21 @@ public class Util
 		return Path.Combine(Path.GetTempPath(), Constants.EncoderGraphTemp);
 	}
 
+//	public static void MoveTempEncoderData(int sessionID, int uniqueID) {
+	public static void CopyTempEncoderData(int sessionID, int uniqueID) {
+		if(File.Exists(GetEncoderDataTempFileName())) {
+			CreateEncoderSessionDirsIfNeeded(sessionID);
+//			try {
+//				File.Move(GetEncoderDataTempFileName(), GetEncoderSessionDataDir(sessionID));
+//			} catch {
+				File.Copy(GetEncoderDataTempFileName(), 
+						GetEncoderSessionDataDir(sessionID) + 
+						Path.DirectorySeparatorChar + 
+						"encoder-copied.txt");
+//			}
+		}
+	}
+	
 	
 	/********** end of encoder paths ************/
 



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