[chronojump] EncoderConfiguration manage - SQL 80% gui 50%



commit 5616a101052a5837fba67d4b0e39a38b66879cbf
Author: Xavier de Blas <xaviblas gmail com>
Date:   Fri Dec 30 16:25:10 2016 +0100

    EncoderConfiguration manage - SQL 80% gui 50%

 glade/encoder_configuration.glade |  290 ++++++++++++++++++++++++++++++++-----
 src/constants.cs                  |    1 +
 src/encoder.cs                    |   51 +++++++-
 src/gui/encoder.cs                |    5 +-
 src/gui/encoderConfiguration.cs   |   72 +++++++++-
 src/sqlite/encoder.cs             |   81 ++++++++++-
 src/sqlite/main.cs                |   11 ++-
 7 files changed, 461 insertions(+), 50 deletions(-)
---
diff --git a/glade/encoder_configuration.glade b/glade/encoder_configuration.glade
index 42c63d3..d9c7555 100644
--- a/glade/encoder_configuration.glade
+++ b/glade/encoder_configuration.glade
@@ -229,12 +229,12 @@
                         <property name="visible">True</property>
                         <property name="can_focus">False</property>
                         <child>
-                          <widget class="GtkButton" id="button_load_save_show">
+                          <widget class="GtkButton" id="button_manage_show">
                             <property name="height_request">80</property>
                             <property name="visible">True</property>
                             <property name="can_focus">True</property>
                             <property name="receives_default">True</property>
-                            <signal name="clicked" handler="on_button_load_save_show_clicked" swapped="no"/>
+                            <signal name="clicked" handler="on_button_manage_show_clicked" swapped="no"/>
                             <child>
                               <widget class="GtkHBox" id="hbox9">
                                 <property name="visible">True</property>
@@ -242,33 +242,10 @@
                                 <property name="border_width">4</property>
                                 <property name="spacing">10</property>
                                 <child>
-                                  <widget class="GtkVBox" id="vbox11">
+                                  <widget class="GtkLabel" id="label24">
                                     <property name="visible">True</property>
                                     <property name="can_focus">False</property>
-                                    <child>
-                                      <widget class="GtkLabel" id="label24">
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">False</property>
-                                        <property name="label" translatable="yes">Load</property>
-                                      </widget>
-                                      <packing>
-                                        <property name="expand">True</property>
-                                        <property name="fill">True</property>
-                                        <property name="position">0</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <widget class="GtkLabel" id="label27">
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">False</property>
-                                        <property name="label" translatable="yes">Save</property>
-                                      </widget>
-                                      <packing>
-                                        <property name="expand">True</property>
-                                        <property name="fill">True</property>
-                                        <property name="position">1</property>
-                                      </packing>
-                                    </child>
+                                    <property name="label" translatable="yes">Manage</property>
                                   </widget>
                                   <packing>
                                     <property name="expand">True</property>
@@ -1243,12 +1220,45 @@ Eg. value = 2, means person does twice force at half speed.</property>
                   <widget class="GtkVBox" id="vbox12">
                     <property name="visible">True</property>
                     <property name="can_focus">False</property>
-                    <property name="spacing">10</property>
                     <child>
-                      <widget class="GtkLabel" id="label33">
+                      <widget class="GtkFrame" id="frame2">
                         <property name="visible">True</property>
                         <property name="can_focus">False</property>
-                        <property name="label" translatable="yes">Load configuration</property>
+                        <property name="label_xalign">0</property>
+                        <property name="label_yalign">0.69999998807907104</property>
+                        <property name="shadow_type">out</property>
+                        <child>
+                          <widget class="GtkHButtonBox" id="hbuttonbox3">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="border_width">8</property>
+                            <child>
+                              <widget class="GtkButton" id="button_import">
+                                <property name="label" translatable="yes">Import</property>
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="receives_default">True</property>
+                                <signal name="clicked" handler="on_button_import_clicked" swapped="no"/>
+                              </widget>
+                              <packing>
+                                <property name="expand">True</property>
+                                <property name="fill">True</property>
+                                <property name="position">0</property>
+                              </packing>
+                            </child>
+                          </widget>
+                        </child>
+                        <child>
+                          <widget class="GtkLabel" id="label27">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="label" translatable="yes">Import</property>
+                            <property name="use_markup">True</property>
+                          </widget>
+                          <packing>
+                            <property name="type">label_item</property>
+                          </packing>
+                        </child>
                       </widget>
                       <packing>
                         <property name="expand">False</property>
@@ -1257,15 +1267,80 @@ Eg. value = 2, means person does twice force at half speed.</property>
                       </packing>
                     </child>
                     <child>
-                      <widget class="GtkScrolledWindow" id="scr_treeview_load">
+                      <widget class="GtkAlignment" id="alignment6">
                         <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="border_width">4</property>
-                        <property name="shadow_type">in</property>
+                        <property name="can_focus">False</property>
+                        <property name="top_padding">10</property>
+                        <property name="bottom_padding">5</property>
                         <child>
-                          <widget class="GtkTreeView" id="treeview_load">
+                          <widget class="GtkVBox" id="vbox11">
                             <property name="visible">True</property>
-                            <property name="can_focus">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="spacing">2</property>
+                            <child>
+                              <widget class="GtkLabel" id="label33">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="xalign">0</property>
+                                <property name="label" translatable="yes">Select</property>
+                              </widget>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">False</property>
+                                <property name="position">0</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <widget class="GtkScrolledWindow" id="scr_treeview_select">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="shadow_type">in</property>
+                                <child>
+                                  <widget class="GtkTreeView" id="treeview_select">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                  </widget>
+                                </child>
+                              </widget>
+                              <packing>
+                                <property name="expand">True</property>
+                                <property name="fill">True</property>
+                                <property name="position">1</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <widget class="GtkHBox" id="hbox12">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <child>
+                                  <widget class="GtkButton" id="button_delete">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                    <property name="receives_default">True</property>
+                                    <signal name="clicked" handler="on_button_delete_clicked" swapped="no"/>
+                                    <child>
+                                      <widget class="GtkImage" id="image_delete">
+                                        <property name="visible">True</property>
+                                        <property name="can_focus">False</property>
+                                        <property name="stock">gtk-missing-image</property>
+                                        <property name="icon-size">2</property>
+                                      </widget>
+                                    </child>
+                                  </widget>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">False</property>
+                                    <property name="pack_type">end</property>
+                                    <property name="position">0</property>
+                                  </packing>
+                                </child>
+                              </widget>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">False</property>
+                                <property name="position">2</property>
+                              </packing>
+                            </child>
                           </widget>
                         </child>
                       </widget>
@@ -1276,7 +1351,148 @@ Eg. value = 2, means person does twice force at half speed.</property>
                       </packing>
                     </child>
                     <child>
-                      <placeholder/>
+                      <widget class="GtkFrame" id="frame1">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label_xalign">0</property>
+                        <property name="label_yalign">0.69999998807907104</property>
+                        <property name="shadow_type">out</property>
+                        <child>
+                          <widget class="GtkVBox" id="vbox13">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="border_width">8</property>
+                            <property name="spacing">8</property>
+                            <child>
+                              <widget class="GtkVBox" id="vbox14">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="spacing">2</property>
+                                <child>
+                                  <widget class="GtkLabel" id="label35">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <property name="xalign">0</property>
+                                    <property name="label" translatable="yes">Name</property>
+                                  </widget>
+                                  <packing>
+                                    <property name="expand">True</property>
+                                    <property name="fill">True</property>
+                                    <property name="position">0</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <widget class="GtkEntry" id="entry_save_name">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                    <property name="invisible_char">●</property>
+                                    <property name="primary_icon_activatable">False</property>
+                                    <property name="secondary_icon_activatable">False</property>
+                                    <property name="primary_icon_sensitive">True</property>
+                                    <property name="secondary_icon_sensitive">True</property>
+                                    <signal name="changed" handler="on_entry_save_name_changed" 
swapped="no"/>
+                                  </widget>
+                                  <packing>
+                                    <property name="expand">True</property>
+                                    <property name="fill">True</property>
+                                    <property name="position">1</property>
+                                  </packing>
+                                </child>
+                              </widget>
+                              <packing>
+                                <property name="expand">True</property>
+                                <property name="fill">True</property>
+                                <property name="position">0</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <widget class="GtkVBox" id="vbox15">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="spacing">2</property>
+                                <child>
+                                  <widget class="GtkLabel" id="label36">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <property name="xalign">0</property>
+                                    <property name="label" translatable="yes">Description</property>
+                                  </widget>
+                                  <packing>
+                                    <property name="expand">True</property>
+                                    <property name="fill">True</property>
+                                    <property name="position">0</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <widget class="GtkEntry" id="entry_save_description">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                    <property name="invisible_char">●</property>
+                                    <property name="invisible_char_set">True</property>
+                                    <property name="primary_icon_activatable">False</property>
+                                    <property name="secondary_icon_activatable">False</property>
+                                    <property name="primary_icon_sensitive">True</property>
+                                    <property name="secondary_icon_sensitive">True</property>
+                                    <signal name="changed" handler="on_entry_save_description_changed" 
swapped="no"/>
+                                  </widget>
+                                  <packing>
+                                    <property name="expand">True</property>
+                                    <property name="fill">True</property>
+                                    <property name="position">1</property>
+                                  </packing>
+                                </child>
+                              </widget>
+                              <packing>
+                                <property name="expand">True</property>
+                                <property name="fill">True</property>
+                                <property name="position">1</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <widget class="GtkHButtonBox" id="hbuttonbox2">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="spacing">20</property>
+                                <child>
+                                  <widget class="GtkButton" id="button_save">
+                                    <property name="label" translatable="yes">Save</property>
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                    <property name="receives_default">True</property>
+                                    <signal name="clicked" handler="on_button_save_clicked" swapped="no"/>
+                                  </widget>
+                                  <packing>
+                                    <property name="expand">True</property>
+                                    <property name="fill">True</property>
+                                    <property name="position">0</property>
+                                  </packing>
+                                </child>
+                              </widget>
+                              <packing>
+                                <property name="expand">True</property>
+                                <property name="fill">True</property>
+                                <property name="position">2</property>
+                              </packing>
+                            </child>
+                          </widget>
+                        </child>
+                        <child>
+                          <widget class="GtkLabel" id="label34">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="label" translatable="yes">Save</property>
+                            <property name="use_markup">True</property>
+                          </widget>
+                          <packing>
+                            <property name="type">label_item</property>
+                          </packing>
+                        </child>
+                      </widget>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">2</property>
+                      </packing>
                     </child>
                   </widget>
                 </child>
diff --git a/src/constants.cs b/src/constants.cs
index 1dcd788..d7ee70a 100644
--- a/src/constants.cs
+++ b/src/constants.cs
@@ -136,6 +136,7 @@ public class Constants
        public const string MultiChronopicTable = "multiChronopic";
        public const string TempMultiChronopicTable = "tempMultiChronopic"; //TODO
        public const string EncoderTable = "encoder";
+       public const string EncoderConfigurationTable = "encoderConfiguration";
        public const string EncoderSignalCurveTable = "encoderSignalCurve";
        public const string EncoderExerciseTable = "encoderExercise";
        public const string Encoder1RMTable = "encoder1RM";
diff --git a/src/encoder.cs b/src/encoder.cs
index 6cf6bed..71e0637 100644
--- a/src/encoder.cs
+++ b/src/encoder.cs
@@ -1037,7 +1037,56 @@ public class EncoderBarsData {
        ~EncoderBarsData() {}
 }
 
-public class EncoderConfiguration {
+public class EncoderConfigurationSQLObject
+{
+       public int uniqueID;
+       public string customName;
+       public EncoderConfiguration encoderConfiguration;
+       public string description;
+
+       public EncoderConfigurationSQLObject(int uniqueID, string customName,
+                       EncoderConfiguration encoderConfiguration,
+                       string description)
+       {
+               this.uniqueID = uniqueID;
+               this.customName = customName;
+               this.encoderConfiguration = encoderConfiguration;
+               this.description = description;
+       }
+
+       //converts encoderConfiguration string from SQL
+       public EncoderConfigurationSQLObject(int uniqueID, string customName,
+                       string encoderConfigurationString,
+                       string description)
+       {
+               string [] strFull = encoderConfigurationString.Split(new char[] {':'});
+               EncoderConfiguration econf = new EncoderConfiguration(
+                               (Constants.EncoderConfigurationNames)
+                               Enum.Parse(typeof(Constants.EncoderConfigurationNames), strFull[0]) );
+               econf.ReadParamsFromSQL(strFull);
+
+               this.uniqueID = uniqueID;
+               this.customName = customName;
+               this.encoderConfiguration = econf;
+               this.description = description;
+       }
+
+       public string ToSQLInsert()
+       {
+                string idStr = uniqueID.ToString();
+                if(idStr == "-1")
+                        idStr = "NULL";
+
+                return idStr +
+                        ", \"" + customName + "\"" +
+                        ", \"" + encoderConfiguration.ToStringOutput(EncoderConfiguration.Outputs.SQL) + 
"\"" +
+                        ", \"" + description + "\"" +
+                        ", \"\", \"\", \"\""; //future1, future2, future3
+       }
+}
+
+public class EncoderConfiguration
+{
        public Constants.EncoderConfigurationNames name;
        public Constants.EncoderType type;
        public int position; //used to find values on the EncoderConfigurationList. Numeration changes on 
every encoder and on not inertial/inertial
diff --git a/src/gui/encoder.cs b/src/gui/encoder.cs
index dc3a57e..05009eb 100644
--- a/src/gui/encoder.cs
+++ b/src/gui/encoder.cs
@@ -374,14 +374,15 @@ public partial class ChronoJumpWindow
        
 
 
-       private void encoderInitializeStuff() {
+       private void encoderInitializeStuff()
+       {
                encoder_pulsebar_capture.Fraction = 1;
                encoder_pulsebar_capture.Text = "";
                encoder_pulsebar_analyze.Fraction = 1;
                encoder_pulsebar_analyze.Text = "";
 
                //read from SQL
-               encoderConfigurationCurrent = SqliteEncoder.LoadEncoderConfiguration();
+               encoderConfigurationCurrent = SqliteEncoder.LoadEncoderConfiguration(false);
                
                encoderCaptureListStore = new Gtk.ListStore (typeof (EncoderCurve));
                
diff --git a/src/gui/encoderConfiguration.cs b/src/gui/encoderConfiguration.cs
index 011ed6a..ecfcfea 100644
--- a/src/gui/encoderConfiguration.cs
+++ b/src/gui/encoderConfiguration.cs
@@ -93,6 +93,13 @@ public class EncoderConfigurationWindow
        [Widget] Gtk.Box vbox_select_encoder;
        [Widget] Gtk.VSeparator vseparator;
        [Widget] Gtk.Notebook notebook_side;
+       [Widget] Gtk.TreeView treeview_select;
+       [Widget] Gtk.Image image_delete;
+
+       [Widget] Gtk.Entry entry_save_name;
+       [Widget] Gtk.Button button_save;
+       [Widget] Gtk.Button button_delete;
+
        [Widget] Gtk.SpinButton spin_im_weight_calcule;
        [Widget] Gtk.SpinButton spin_im_length_calcule;
        //[Widget] Gtk.SpinButton spin_im_duration_calcule;
@@ -188,7 +195,10 @@ public class EncoderConfigurationWindow
                        EncoderConfigurationWindowBox.alignment_options.Visible = false;
                        EncoderConfigurationWindowBox.vbox_inertia_calcule.Visible = false;
                }
-       
+
+               EncoderConfigurationWindowBox.createAndFillTreeView(
+                               SqliteEncoder.SelectAllEncoderConfiguration(false, ! gravitatory));
+
                EncoderConfigurationWindowBox.encoder_configuration.Show ();
                return EncoderConfigurationWindowBox;
        }
@@ -482,15 +492,15 @@ public class EncoderConfigurationWindow
         * ------------------- side content stuff ----------------->
         */
 
-       private enum sideModes { HIDDEN, LOADSAVE, CAPTUREINERTIAL }
+       private enum sideModes { HIDDEN, MANAGE, CAPTUREINERTIAL }
        private sideModes sideMode = sideModes.HIDDEN;
 
-       void on_button_load_save_show_clicked (object o, EventArgs args)
+       void on_button_manage_show_clicked (object o, EventArgs args)
        {
-               if(sideMode == sideModes.LOADSAVE)
+               if(sideMode == sideModes.MANAGE)
                        showHideSide(sideModes.HIDDEN);
                else
-                       showHideSide(sideModes.LOADSAVE);
+                       showHideSide(sideModes.MANAGE);
        }
        void on_button_encoder_capture_inertial_show_clicked (object o, EventArgs args)
        {
@@ -517,7 +527,7 @@ public class EncoderConfigurationWindow
                //change gui
                vseparator.Visible = (sideMode != sideModes.HIDDEN);
 
-               if(sideMode == sideModes.LOADSAVE)
+               if(sideMode == sideModes.MANAGE)
                        notebook_side.CurrentPage = 0;
                else if(sideMode == sideModes.CAPTUREINERTIAL)
                        notebook_side.CurrentPage = 1;
@@ -544,6 +554,56 @@ public class EncoderConfigurationWindow
         * <--------------- side content area / load-save ---->
         */
 
+       private void createAndFillTreeView(List<EncoderConfigurationSQLObject> list)
+       {
+               createTreeView();
+               TreeStore store = getStore();
+               treeview_select.Model = store;
+
+               foreach (EncoderConfigurationSQLObject econfSO in list)
+                       store.AppendValues (new string[]{econfSO.customName, econfSO.description});
+
+               Pixbuf pixbuf = new Pixbuf (null, Util.GetImagePath(false) + "stock_delete.png");
+               image_delete.Pixbuf = pixbuf;
+       }
+       private void createTreeView()
+       {
+               treeview_select.HeadersVisible=true;
+               int count = 0;
+               treeview_select.AppendColumn (Catalog.GetString ("Name"), new CellRendererText(), "text", 
count++);
+               treeview_select.AppendColumn (Catalog.GetString ("Description"), new CellRendererText(), 
"text", count++);
+       }
+       private TreeStore getStore()
+       {
+               return new TreeStore(typeof (string), typeof (string));
+       }
+
+
+       void on_entry_save_name_changed (object o, EventArgs args)
+       {
+               button_save.Sensitive = (entry_save_name.Text.ToString().Length > 0);
+
+               //TODO: button delete sensitivity depends on being on the treeview
+       }
+
+       void on_entry_save_description_changed (object o, EventArgs args)
+       {
+       }
+
+       void on_button_import_clicked (object o, EventArgs args)
+       {
+       }
+
+       void on_button_save_clicked (object o, EventArgs args)
+       {
+               //save_update when changing any value
+               //and when exiting with ok dialogMessage asking for save
+       }
+
+       void on_button_delete_clicked (object o, EventArgs args)
+       {
+       }
+
        /*
         * <--------------- end of side content area / load-save ----
         */
diff --git a/src/sqlite/encoder.cs b/src/sqlite/encoder.cs
index c107955..77f893c 100644
--- a/src/sqlite/encoder.cs
+++ b/src/sqlite/encoder.cs
@@ -1113,9 +1113,9 @@ class SqliteEncoder : Sqlite
         */
 
        //called on startup to load last encoderConfiguration
-       public static EncoderConfiguration LoadEncoderConfiguration()
+       public static EncoderConfiguration LoadEncoderConfiguration(bool dbconOpened)
        {
-               string ecStr = SqlitePreferences.Select("encoderConfiguration", false);
+               string ecStr = SqlitePreferences.Select("encoderConfiguration", dbconOpened);
                
                //1.5.1 and previous don't store encoderConfiguration on SqlitePreferences
                if(ecStr == null || ecStr.Length == 0 || ecStr == "0" || ecStr == "")
@@ -1133,5 +1133,80 @@ class SqliteEncoder : Sqlite
 
                return ec;
        }
-       
+
+
+       /*
+        * EncoderConfiguration table
+        */
+
+       protected internal static void createTableEncoderConfiguration()
+       {
+               dbcmd.CommandText =
+                       "CREATE TABLE " + Constants.EncoderConfigurationTable + " ( " +
+                       "uniqueID INTEGER PRIMARY KEY, " +
+                       "customName TEXT, " +           //name given by the user
+                       "encoderConfiguration TEXT, " + //text separated by ':'
+                       "description TEXT, " +
+                       "future1 TEXT, " +
+                       "future2 TEXT, " +
+                       "future3 TEXT )";
+               dbcmd.ExecuteNonQuery();
+
+               //on convert database sets the sqlite/preferences/encoderConfiguration as "default" encoder 
configuration
+               EncoderConfiguration econfOnPreferences = LoadEncoderConfiguration(true);
+
+               InsertEncoderConfiguration(true,
+                               new EncoderConfigurationSQLObject(
+                                       -1 , Catalog.GetString("Default"), econfOnPreferences, "")
+                               );
+       }
+
+       public static void InsertEncoderConfiguration(bool dbconOpened, EncoderConfigurationSQLObject econfSO)
+       {
+               openIfNeeded(dbconOpened);
+
+               dbcmd.CommandText = "INSERT INTO " + Constants.EncoderConfigurationTable +
+                       " (uniqueID, customName, encoderConfiguration, description, future1, future2, 
future3)" +
+                       " VALUES (" + econfSO.ToSQLInsert() + ")";
+               LogB.SQL(dbcmd.CommandText.ToString());
+               dbcmd.ExecuteNonQuery();
+
+               closeIfNeeded(dbconOpened);
+       }
+
+       public static List<EncoderConfigurationSQLObject> SelectAllEncoderConfiguration(bool dbconOpened, 
bool inertial)
+       {
+               openIfNeeded(dbconOpened);
+
+               dbcmd.CommandText = "SELECT * FROM " + Constants.EncoderConfigurationTable;
+               LogB.SQL(dbcmd.CommandText.ToString());
+               dbcmd.ExecuteNonQuery();
+
+               List<EncoderConfigurationSQLObject> list = new List<EncoderConfigurationSQLObject>();
+               SqliteDataReader reader;
+               reader = dbcmd.ExecuteReader();
+               while(reader.Read())
+               {
+                       string [] strFull = reader[2].ToString().Split(new char[] {':'});
+                       EncoderConfiguration econf = new EncoderConfiguration(
+                                       (Constants.EncoderConfigurationNames)
+                                       Enum.Parse(typeof(Constants.EncoderConfigurationNames), strFull[0]) );
+                       econf.ReadParamsFromSQL(strFull);
+
+                       EncoderConfigurationSQLObject econfSO = new EncoderConfigurationSQLObject(
+                                       Convert.ToInt32(reader[0].ToString()),  //uniqueID
+                                       reader[1].ToString(),                   //customName
+                                       econf,                                  //encoderConfiguration
+                                       reader[3].ToString()                    //description
+                                       );
+
+                       if(inertial == econf.has_inertia)
+                               list.Add(econfSO);
+               }
+
+               reader.Close();
+               closeIfNeeded(dbconOpened);
+
+               return list;
+       }
 }
diff --git a/src/sqlite/main.cs b/src/sqlite/main.cs
index 66b93b1..5af9bae 100644
--- a/src/sqlite/main.cs
+++ b/src/sqlite/main.cs
@@ -123,7 +123,7 @@ class Sqlite
        /*
         * Important, change this if there's any update to database
         */
-       static string lastChronojumpDatabaseVersion = "1.34";
+       static string lastChronojumpDatabaseVersion = "1.35";
 
        public Sqlite() {
        }
@@ -2002,6 +2002,13 @@ class Sqlite
 
                                currentVersion = updateVersion("1.34");
                        }
+                       if(currentVersion == "1.34") {
+                               LogB.SQL("Added encoderConfiguration table");
+
+                               SqliteEncoder.createTableEncoderConfiguration();
+
+                               currentVersion = updateVersion("1.35");
+                       }
 
 
 
@@ -2141,6 +2148,7 @@ class Sqlite
                SqliteEncoder.createTableEncoderExercise();
                SqliteEncoder.initializeTableEncoderExercise();
                SqliteEncoder.createTable1RM();
+               SqliteEncoder.createTableEncoderConfiguration();
 
                //sports
                creationRate ++;
@@ -2168,6 +2176,7 @@ class Sqlite
                SqliteChronopicRegister.createTableChronopicRegister();
 
                //changes [from - to - desc]
+               //1.34 - 1.35 Converted DB to 1.35 Added encoderConfiguration table
                //1.33 - 1.34 Converted DB to 1.34 Added thresholdJumps, thresholdRuns, thresholdOther to 
preferences
                //1.32 - 1.33 Converted DB to 1.33 Added chronopicRegister table
                //1.31 - 1.32 Converted DB to 1.32 encoderCaptureOptionsWin -> preferences


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