[chronojump] PersonSelect window adds "view all tests" and other improvements



commit 4e62d3c145c115c88330e8512a83afdc9e12d80e
Author: Xavier de Blas <xaviblas gmail com>
Date:   Tue Feb 20 15:40:03 2018 +0100

    PersonSelect window adds "view all tests" and other improvements

 glade/person_select_window.glade     |   26 +++++++++++--
 images/md/ic_select_blue_24dp_2x.png |  Bin 1100 -> 1056 bytes
 images/md/ic_select_blue_24dp_3x.png |  Bin 0 -> 2248 bytes
 src/Makefile.am                      |    2 +-
 src/gui/chronojump.cs                |    8 ++--
 src/gui/person.cs                    |    8 ++--
 src/gui/personSelect.cs              |   65 ++++++++++++++++++++++++---------
 src/utilGtk.cs                       |    5 +++
 8 files changed, 83 insertions(+), 31 deletions(-)
---
diff --git a/glade/person_select_window.glade b/glade/person_select_window.glade
index c70d3c3..e4f6e55 100644
--- a/glade/person_select_window.glade
+++ b/glade/person_select_window.glade
@@ -2431,6 +2431,18 @@
                     <child>
                       <placeholder/>
                     </child>
+                    <child>
+                      <placeholder/>
+                    </child>
+                    <child>
+                      <placeholder/>
+                    </child>
+                    <child>
+                      <placeholder/>
+                    </child>
+                    <child>
+                      <placeholder/>
+                    </child>
                   </widget>
                 </child>
               </widget>
@@ -2448,16 +2460,22 @@
             <property name="can_focus">False</property>
             <property name="spacing">30</property>
             <child>
-              <widget class="GtkVBox" id="vbox2">
+              <widget class="GtkVBox" id="vbox_person">
                 <property name="visible">True</property>
                 <property name="can_focus">False</property>
                 <property name="spacing">10</property>
                 <child>
-                  <widget class="GtkLabel" id="label_selected_person_name">
+                  <widget class="GtkViewport" id="viewport_person_name">
                     <property name="visible">True</property>
                     <property name="can_focus">False</property>
-                    <property name="wrap">True</property>
-                    <property name="width_chars">16</property>
+                    <child>
+                      <widget class="GtkLabel" id="label_selected_person_name">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="wrap">True</property>
+                        <property name="width_chars">16</property>
+                      </widget>
+                    </child>
                   </widget>
                   <packing>
                     <property name="expand">False</property>
diff --git a/images/md/ic_select_blue_24dp_2x.png b/images/md/ic_select_blue_24dp_2x.png
index b755c70..7211aa6 100644
Binary files a/images/md/ic_select_blue_24dp_2x.png and b/images/md/ic_select_blue_24dp_2x.png differ
diff --git a/images/md/ic_select_blue_24dp_3x.png b/images/md/ic_select_blue_24dp_3x.png
new file mode 100644
index 0000000..77889ba
Binary files /dev/null and b/images/md/ic_select_blue_24dp_3x.png differ
diff --git a/src/Makefile.am b/src/Makefile.am
index 2ad43a6..983cab6 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -398,7 +398,7 @@ RESOURCES = \
        ../images/md/ic_person_blue_24dp_1x.png,image_person.png \
        ../images/md/ic_person_logout_blue_24dp_1x.png,image_person_logout.png \
        ../images/md/ic_photo_camera_blue_24dp_2x.png,image_no_photo.png \
-       ../images/md/ic_select_blue_24dp_2x.png,image_selected.png \
+       ../images/md/ic_select_blue_24dp_3x.png,image_selected.png \
        ../images/md/ic_cached_blue_24dp_1x.png,image_recalculate.png \
        ../images/md/ic_delete_blue_24dp_1x.png,stock_delete.png \
        ../images/md/ic_create_new_folder_blue_24dp_2x.png,folder_new_big.png \
diff --git a/src/gui/chronojump.cs b/src/gui/chronojump.cs
index b18120f..e6ac7a1 100644
--- a/src/gui/chronojump.cs
+++ b/src/gui/chronojump.cs
@@ -2703,7 +2703,7 @@ public partial class ChronoJumpWindow
                ArrayList myPersons = SqlitePersonSession.SelectCurrentSessionPersons(
                                currentSession.UniqueID,
                                false); //means: do not returnPersonAndPSlist
-               personSelectWin.Update(myPersons);
+               personSelectWin.Update(myPersons, currentPerson);
        }
 
        //show spinbutton window asking for how many people to create   
@@ -2782,7 +2782,7 @@ public partial class ChronoJumpWindow
                                ArrayList myPersons = SqlitePersonSession.SelectCurrentSessionPersons(
                                                currentSession.UniqueID, 
                                                false); //means: do not returnPersonAndPSlist
-                               personSelectWin.Update(myPersons);
+                               personSelectWin.Update(myPersons, currentPerson);
                        }
                }
        }
@@ -2838,7 +2838,7 @@ public partial class ChronoJumpWindow
                                currentSession.UniqueID, 
                                false); //means: do not returnPersonAndPSlist
 
-               personSelectWin = PersonSelectWindow.Show(app1, myPersons);
+               personSelectWin = PersonSelectWindow.Show(app1, myPersons, currentPerson);
                personSelectWin.FakeButtonAddPerson.Clicked += new 
EventHandler(on_button_top_person_add_person);
                personSelectWin.FakeButtonLoadPerson.Clicked += new 
EventHandler(on_button_top_person_load_person);
                personSelectWin.FakeButtonEditPerson.Clicked += new 
EventHandler(on_button_top_person_edit_person);
@@ -2878,7 +2878,7 @@ public partial class ChronoJumpWindow
                ArrayList myPersons = SqlitePersonSession.SelectCurrentSessionPersons(
                                currentSession.UniqueID, 
                                false); //means: do not returnPersonAndPSlist
-               personSelectWin.Update(myPersons);
+               personSelectWin.Update(myPersons, currentPerson);
                personSelectWin.Button_delete_confirm_focus(false, false);
        }
        private void on_button_top_person_change_done(object o, EventArgs args)
diff --git a/src/gui/person.cs b/src/gui/person.cs
index 47e18dd..9fab353 100644
--- a/src/gui/person.cs
+++ b/src/gui/person.cs
@@ -2497,7 +2497,7 @@ public class PersonShowAllEventsWindow
        [Widget] Gtk.Window person_show_all_events;
 
        [Widget] Gtk.CheckButton checkbutton_only_current_session;
-       [Widget] Gtk.Label label_person;
+       [Widget] Gtk.Label label_person_name;
 
        [Widget] Gtk.TreeView treeview_person_show_all_events;
        [Widget] Gtk.Box hbox_combo_persons;
@@ -2523,7 +2523,7 @@ public class PersonShowAllEventsWindow
                this.sessionID = sessionID;
                this.currentPerson = currentPerson;
 
-               label_person.Text = currentPerson.Name;
+               label_person_name.Text = currentPerson.Name;
                createComboPersons(sessionID, currentPerson.UniqueID.ToString(), currentPerson.Name);
                createTreeView(treeview_person_show_all_events);
                store = new TreeStore( typeof (string), typeof (string), typeof (string), typeof (string), 
@@ -2543,11 +2543,11 @@ public class PersonShowAllEventsWindow
                {
                        PersonShowAllEventsWindowBox.checkbutton_only_current_session.Visible = true;
                        PersonShowAllEventsWindowBox.hbox_combo_persons.Visible = true;
-                       PersonShowAllEventsWindowBox.label_person.Visible = false;
+                       PersonShowAllEventsWindowBox.label_person_name.Visible = false;
                } else {
                        PersonShowAllEventsWindowBox.checkbutton_only_current_session.Visible = false;
                        PersonShowAllEventsWindowBox.hbox_combo_persons.Visible = false;
-                       PersonShowAllEventsWindowBox.label_person.Visible = true;
+                       PersonShowAllEventsWindowBox.label_person_name.Visible = true;
                }
 
                PersonShowAllEventsWindowBox.person_show_all_events.Show ();
diff --git a/src/gui/personSelect.cs b/src/gui/personSelect.cs
index 25c892b..0204125 100644
--- a/src/gui/personSelect.cs
+++ b/src/gui/personSelect.cs
@@ -30,6 +30,7 @@ public class PersonSelectWindow
 {
        [Widget] Gtk.Window person_select_window;
        [Widget] Gtk.Viewport viewport1;
+       [Widget] Gtk.Viewport viewport_person_name;
        [Widget] Gtk.Table table1;
        [Widget] Gtk.Button button_edit;
        [Widget] Gtk.Button button_show_all_events;
@@ -75,6 +76,8 @@ public class PersonSelectWindow
                FakeButtonDeletePerson = new Gtk.Button();
                FakeButtonDone = new Gtk.Button();
 
+               UtilGtk.ViewportColor(viewport_person_name, UtilGtk.YELLOW);
+
                Pixbuf pixbuf = new Pixbuf (null, Util.GetImagePath(false) + "image_person_add.png");
                image_person_new.Pixbuf = pixbuf;
                pixbuf = new Pixbuf (null, Util.GetImagePath(false) + "image_person_outline.png");
@@ -83,14 +86,15 @@ public class PersonSelectWindow
                image_all_persons_events.Pixbuf = pixbuf;
        }
        
-       static public PersonSelectWindow Show (Gtk.Window parent, ArrayList persons)
+       static public PersonSelectWindow Show (Gtk.Window parent, ArrayList persons, Person currentPerson)
        {
                if (PersonSelectWindowBox == null) {
                        PersonSelectWindowBox = new PersonSelectWindow (parent);
                }
 
                PersonSelectWindowBox.persons = persons;
-               
+               PersonSelectWindowBox.SelectedPerson = currentPerson;
+
                PersonSelectWindowBox.createTable();
                
                PersonSelectWindowBox.person_select_window.Show ();
@@ -98,9 +102,14 @@ public class PersonSelectWindow
                return PersonSelectWindowBox;
        }
 
-       public void Update(ArrayList persons) {
+       public void Update(ArrayList persons, Person currentPerson)
+       {
                this.persons = persons;
-               
+               SelectedPerson = currentPerson;
+
+               if(currentPerson != null)
+                       assignPersonSelectedStuff(currentPerson);
+
                LogB.Debug("Removing table");
                table1.Visible = false;
                removeTable();
@@ -124,16 +133,24 @@ public class PersonSelectWindow
                uint cols = 4; //each row has 4 columns
                uint rows = Convert.ToUInt32(Math.Floor(persons.Count / (1.0 * cols) ) +1);
                int count = 0;
-               
-               label_selected_person_name.Text = "";
-               SelectedPerson = null;
-               selectedFirstClickPersonID = -1;
+
+               if(SelectedPerson == null)
+               {
+                       selectedFirstClickPersonID = -1;
+                       label_selected_person_name.Text = "";
+               }
+               else {
+                       selectedFirstClickPersonID = SelectedPerson.UniqueID;
+                       label_selected_person_name.Text = SelectedPerson.Name;
+               }
+
                personButtonsSensitive(false);
                vbox_button_delete_confirm.Visible = false;
                list_ppb = new List<PersonPhotoButton>();
 
-               for (int row_i = 0; row_i < rows; row_i ++) {
-                       for (int col_i = 0; col_i < cols; col_i ++) 
+               for (int row_i = 0; row_i < rows; row_i ++)
+               {
+                       for (int col_i = 0; col_i < cols; col_i ++)
                        {
                                if(count >= persons.Count)
                                        return;
@@ -141,6 +158,14 @@ public class PersonSelectWindow
                                Person p = (Person) persons[count ++];
 
                                PersonPhotoButton ppb = new PersonPhotoButton(p.UniqueID, p.Name); //creates 
the button
+
+                               //select currentPerson
+                               if(selectedFirstClickPersonID != -1 && selectedFirstClickPersonID == 
p.UniqueID)
+                               {
+                                       ppb.Select(true);
+                                       assignPersonSelectedStuff(p);
+                               }
+
                                list_ppb.Add(ppb);
                                Gtk.Button b = ppb.Button;
 
@@ -181,19 +206,23 @@ public class PersonSelectWindow
 
                                foreach(Person p in persons)
                                        if(p.UniqueID == ppb.PersonID)
-                                       {
-                                               SelectedPerson = p;
-                                               label_selected_person_name.Text = "<b>" + p.Name + "</b>";
-                                               label_selected_person_name.UseMarkup = true;
-                                               personButtonsSensitive(true);
-                                               selectedFirstClickPersonID = p.UniqueID;
-                                       }
+                                               assignPersonSelectedStuff(p);
                        }
                        else if(ppb.Selected)
                                ppb.Select(false);
                }
        }
-       
+
+       private void assignPersonSelectedStuff(Person p)
+       {
+               SelectedPerson = p;
+               selectedFirstClickPersonID = p.UniqueID;
+
+               label_selected_person_name.Text = "<b>" + p.Name + "</b>";
+               label_selected_person_name.UseMarkup = true;
+               personButtonsSensitive(true);
+       }
+
        private void personButtonsSensitive(bool sensitive)
        {
                button_edit.Sensitive = sensitive;
diff --git a/src/utilGtk.cs b/src/utilGtk.cs
index 96a1c83..9f24c27 100644
--- a/src/utilGtk.cs
+++ b/src/utilGtk.cs
@@ -527,6 +527,11 @@ public class UtilGtk
                }
        }
 
+       public static void ViewportColor(Gtk.Viewport v, Gdk.Color color)
+       {
+               v.ModifyBg(StateType.Normal, color);
+       }
+
        public static void ChronopicColors(Gtk.Viewport v, Gtk.Label l1, Gtk.Label l2, bool connected) {
                //if(! v.Style.Background(StateType.Normal).Equal(BLUE))
                if(! v.Style.Background(StateType.Normal).Equal(v.Style.Background(StateType.Selected)))


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