[chronojump] force sensor: Loading set selects the person if at session and more params
- From: Xavier de Blas <xaviblas src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [chronojump] force sensor: Loading set selects the person if at session and more params
- Date: Wed, 17 Jul 2019 11:38:11 +0000 (UTC)
commit 67f039ed75b7094881f5083f3e0b9be634f595e6
Author: Xavier de Blas <xaviblas gmail com>
Date: Wed Jul 17 13:37:22 2019 +0200
force sensor: Loading set selects the person if at session and more params
src/constants.cs | 7 ++++-
src/forceSensor.cs | 81 ++++++++++++++++++++++++++++++++++++++++++++++++++
src/gui/forceSensor.cs | 40 +++++++++++++++++++++++--
src/sqlite/person.cs | 3 ++
4 files changed, 127 insertions(+), 4 deletions(-)
---
diff --git a/src/constants.cs b/src/constants.cs
index 553daa3e..0db2712c 100644
--- a/src/constants.cs
+++ b/src/constants.cs
@@ -940,7 +940,12 @@ public class Constants
public enum Encoder1RMMethod { NONWEIGHTED, WEIGHTED, WEIGHTED2, WEIGHTED3 }
public enum ContextMenu { NONE, EDITDELETE, DELETE }
-
+
+ //on glade/app1 using the same names
+ public const string ForceSensorLateralityBoth = "Both";
+ public const string ForceSensorLateralityLeft = "Left";
+ public const string ForceSensorLateralityRight = "Right";
+
public enum EncoderAutoSaveCurve { ALL, NONE, BEST, FROM4TOPENULTIMATE } //note last mode not need to
be 4 because DB 1.63 introduces the config of this value
//BIGGEST_TC will be the default mode.
diff --git a/src/forceSensor.cs b/src/forceSensor.cs
index 82888bbf..a00b1d0c 100644
--- a/src/forceSensor.cs
+++ b/src/forceSensor.cs
@@ -1029,3 +1029,84 @@ public class ForceSensorAnalyzeInstant
}
}
+
+//we need this class because we started using foresensor without database (only text files)
+public class ForceSensorLoadTryToAssignPersonAndMore
+{
+ private string filename; //filename comes without extension
+ private int currentSessionID; //we get a person if already exists on that session
+ public string Exercise;
+ public string Laterality;
+ public string Comment;
+
+ public ForceSensorLoadTryToAssignPersonAndMore(string filename, int currentSessionID)
+ {
+ this.filename = filename;
+ this.currentSessionID = currentSessionID;
+
+ Exercise = "";
+ Laterality = "";
+ Comment = "";
+ }
+
+ public Person GetPerson()
+ {
+ string personName = getNameAndMore();
+ if(personName == "")
+ return new Person(-1);
+
+ Person p = SqlitePerson.SelectByName(personName);
+ if(SqlitePersonSession.PersonSelectExistsInSession(p.UniqueID, currentSessionID))
+ return p;
+
+ return new Person(-1);
+ }
+
+ private string getNameAndMore()
+ {
+ string [] strFull = filename.Split(new char[] {'_'});
+
+ /*
+ * At 1.8.1-95 filename was: personName_date_hour
+ * Later filename was:
+ * personName_exercisename_laterality_date_hour
+ * or
+ * personName_exercisename_laterality_comment_date_hour
+ * note comment can have more _ so it can be
+ * personName_exercisename_laterality_mycomment_with_some_underscores_date_hour
+ */
+ if(strFull.Length == 3)
+ return strFull[0];
+ else if(strFull.Length >= 5)
+ {
+ //strFull[1] is the exercise, but check that it existst on database
+ if(Sqlite.Exists(false, Constants.ForceSensorExerciseTable, strFull[1]))
+ Exercise = strFull[1];
+
+ if(
+ strFull[2] == Catalog.GetString(Constants.ForceSensorLateralityBoth)
||
+ strFull[2] == Catalog.GetString(Constants.ForceSensorLateralityLeft)
||
+ strFull[2] == Catalog.GetString(Constants.ForceSensorLateralityRight)
)
+ Laterality = strFull[2];
+
+ if(strFull.Length == 6)
+ Comment = strFull[3];
+ else if(strFull.Length > 6) //comments with underscores
+ {
+ string myComment = "";
+ string sep = "";
+ for(int i = 3; i <= strFull.Length -3; i ++)
+ {
+ myComment += sep + strFull[i];
+ sep = "_";
+ }
+
+ Comment = myComment;
+ }
+
+ return strFull[0];
+ }
+
+ return "";
+ }
+}
diff --git a/src/gui/forceSensor.cs b/src/gui/forceSensor.cs
index 7bf62c74..d1122148 100644
--- a/src/gui/forceSensor.cs
+++ b/src/gui/forceSensor.cs
@@ -1204,6 +1204,31 @@ LogB.Information(" re R ");
if (filechooser.Run () == (int)ResponseType.Accept)
{
lastForceSensorFile =
Util.RemoveExtension(Util.GetLastPartOfPath(filechooser.Filename));
+
+ //try to change currentPerson on loading set
+ ForceSensorLoadTryToAssignPersonAndMore fslt = new
ForceSensorLoadTryToAssignPersonAndMore(lastForceSensorFile, currentSession.UniqueID);
+ Person p = fslt.GetPerson();
+ if(p.UniqueID != -1)
+ {
+ currentPerson = p;
+ currentPersonSession = SqlitePersonSession.Select(currentPerson.UniqueID,
currentSession.UniqueID);
+ if(fslt.Exercise != "")
+ combo_force_sensor_exercise.Active =
UtilGtk.ComboMakeActive(combo_force_sensor_exercise, fslt.Exercise);
+ if(fslt.Laterality != "")
+ setLaterality(fslt.Laterality);
+ if(fslt.Comment != "")
+ textview_force_sensor_capture_comment.Buffer.Text = fslt.Comment;
+
+ int rowToSelect = myTreeViewPersons.FindRow(p.UniqueID);
+ if(rowToSelect != -1) {
+ //this will update also currentPerson
+ selectRowTreeView_persons(treeview_persons, rowToSelect);
+ }
+
+ label_person_change();
+ personChanged();
+ }
+
lastForceSensorFullPath = filechooser.Filename; //used on recalculate
forceSensorCopyTempAndDoGraphs();
@@ -1924,11 +1949,20 @@ LogB.Information(" re R ");
private string getLaterality()
{
if(radio_force_sensor_laterality_both.Active)
- return Catalog.GetString("Both");
+ return Catalog.GetString(Constants.ForceSensorLateralityBoth);
else if(radio_force_sensor_laterality_l.Active)
- return Catalog.GetString("Left");
+ return Catalog.GetString(Constants.ForceSensorLateralityLeft);
else //if(radio_force_sensor_laterality_r.Active)
- return Catalog.GetString("Right");
+ return Catalog.GetString(Constants.ForceSensorLateralityRight);
+ }
+ private void setLaterality(string s)
+ {
+ if(s == Catalog.GetString(Constants.ForceSensorLateralityBoth))
+ radio_force_sensor_laterality_both.Active = true;
+ else if(s == Catalog.GetString(Constants.ForceSensorLateralityLeft))
+ radio_force_sensor_laterality_l.Active = true;
+ else if(s == Catalog.GetString(Constants.ForceSensorLateralityRight))
+ radio_force_sensor_laterality_r.Active = true;
}
private string getCaptureComment()
diff --git a/src/sqlite/person.cs b/src/sqlite/person.cs
index e1bb6891..3659c813 100644
--- a/src/sqlite/person.cs
+++ b/src/sqlite/person.cs
@@ -94,6 +94,9 @@ class SqlitePerson : Sqlite
public static Person Select(int uniqueID) {
return Select(false, " WHERE uniqueID = " + uniqueID);
}
+ public static Person SelectByName(string name) {
+ return Select(false, " WHERE name = \"" + name + "\"");
+ }
public static Person SelectByRFID(string rfid) {
return Select(false, " WHERE future1 = \"" + rfid + "\"");
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]