Enhance ProgressBar widget
authorsung-su.kim <sung-su.kim@samsung.com>
Fri, 19 May 2017 01:55:13 +0000 (10:55 +0900)
committersung-su.kim <sung-su.kim@samsung.com>
Fri, 19 May 2017 01:55:45 +0000 (10:55 +0900)
Change-Id: I7bcc55907f337e63581ad878d8169ba01d130e66

src/ElmSharp/ElmSharp/ProgressBar.cs
src/ElmSharp/Interop/Interop.Elementary.ProgressBar.cs
test/ElmSharp.Test/TC/ProgressBarTest1.cs

index 5ef887b..d0121e6 100755 (executable)
@@ -175,6 +175,26 @@ namespace ElmSharp
             Interop.Elementary.elm_progressbar_pulse(RealHandle, false);
         }
 
+        /// <summary>
+        /// Gets the part value of the given part of the Progressbar.
+        /// </summary>
+        /// <param name="part">Part of the Progressbar.</param>
+        /// <returns>Returns value range is from 0.0 to 1.0.</returns>
+        public double GetPartValue(string part)
+        {
+            return Interop.Elementary.elm_progressbar_part_value_get(RealHandle, part);
+        }
+
+        /// <summary>
+        /// Sets the part value of the give part of the Progressbar.
+        /// </summary>
+        /// <param name="part">Part of the Progressbar.</param>
+        /// <param name="value">Value range is from 0.0 to 1.0.</param>
+        public void SetPartValue(string part, double value)
+        {
+            Interop.Elementary.elm_progressbar_part_value_set(RealHandle, part, value);
+        }
+
         protected override IntPtr CreateHandle(EvasObject parent)
         {
             IntPtr handle = Interop.Elementary.elm_layout_add(parent.Handle);
@@ -186,4 +206,4 @@ namespace ElmSharp
             return handle;
         }
     }
-}
+}
\ No newline at end of file
index e171fdc..259b53f 100644 (file)
@@ -61,6 +61,9 @@ internal static partial class Interop
         internal static extern void elm_progressbar_part_value_set(IntPtr obj, string part, double val);
 
         [DllImport(Libraries.Elementary)]
+        internal static extern double elm_progressbar_part_value_get(IntPtr obj, string part);
+
+        [DllImport(Libraries.Elementary)]
         internal static extern void elm_progressbar_unit_format_set(IntPtr obj, string format);
 
         [DllImport(Libraries.Elementary)]
index 3e28ead..04a04cf 100644 (file)
@@ -54,9 +54,17 @@ namespace ElmSharp.Test
                 WeightY = 1
             };
 
+            Label lb2 = new Label(window)
+            {
+                AlignmentX = -1,
+                AlignmentY = 0,
+                WeightX = 1,
+                WeightY = 1
+            };
+
             Button bt1 = new Button(window)
             {
-                Text = "Increase",
+                Text = "Increase Value",
                 AlignmentX = -1,
                 AlignmentY = 0,
                 WeightX = 1,
@@ -65,38 +73,92 @@ namespace ElmSharp.Test
 
             Button bt2 = new Button(window)
             {
-                Text = "Decrease",
+                Text = "Decrease Value",
                 AlignmentX = -1,
                 AlignmentY = 0,
                 WeightX = 1,
                 WeightY = 1
             };
 
-            table.Pack(pb1, 1, 1, 2, 1);
-            table.Pack(lb1, 1, 2, 2, 1);
-            table.Pack(bt1, 1, 3, 1, 1);
-            table.Pack(bt2, 2, 3, 1, 1);
+            Button bt3 = new Button(window)
+            {
+                Text = "Increase PartValue",
+                AlignmentX = -1,
+                AlignmentY = 0,
+                WeightX = 1,
+                WeightY = 1
+            };
 
-            pb1.Show();
-            lb1.Show();
-            bt1.Show();
-            bt2.Show();
+            Button bt4 = new Button(window)
+            {
+                Text = "Decrease PartValue",
+                AlignmentX = -1,
+                AlignmentY = 0,
+                WeightX = 1,
+                WeightY = 1
+            };
+
+            string part = "elm.cur.progressbar";
+            double unit = 0.1;
+            double max = 1.0;
+            double min = 0;
+
+            pb1.ValueChanged += (s, e) =>
+            {
+                lb1.Text = string.Format("Value Changed: {0}", pb1.Value);
+                lb1.EdjeObject["elm.text"].TextStyle = "DEFAULT='color=#ffffff'";
+
+                lb2.Text = string.Format("PartValue Changed: {0}", pb1.GetPartValue(part));
+                lb2.EdjeObject["elm.text"].TextStyle = "DEFAULT='color=#ffffff'";
+            };
 
             bt1.Clicked += (s, e) =>
             {
-                pb1.Value += 0.1;
+                var val = pb1.Value + unit;
+                if (val <= max)
+                    pb1.Value = val;
             };
 
             bt2.Clicked += (s, e) =>
             {
-                pb1.Value -= 0.1;
+                var val = pb1.Value - unit;
+                if (val >= min)
+                {
+                    pb1.Value = val;
+                }
             };
 
-            pb1.ValueChanged += (s, e) =>
+            bt3.Clicked += (s, e) =>
             {
-                lb1.Text = string.Format("Value Changed: {0}", pb1.Value);
-                lb1.EdjeObject["elm.text"].TextStyle = "DEFAULT='color=#ffffff'";
+                var val = pb1.GetPartValue(part) + unit;
+                if (val <= max)
+                    pb1.SetPartValue(part, val);
             };
+
+            bt4.Clicked += (s, e) =>
+            {
+                var val = pb1.GetPartValue(part) - unit;
+                if (val >= min)
+                {
+                    pb1.SetPartValue(part, val);
+                }
+            };
+
+            table.Pack(pb1, 1, 1, 2, 1);
+            table.Pack(lb1, 1, 2, 2, 1);
+            table.Pack(lb2, 1, 3, 2, 1);
+            table.Pack(bt1, 1, 4, 1, 1);
+            table.Pack(bt2, 1, 5, 1, 1);
+            table.Pack(bt3, 1, 6, 1, 1);
+            table.Pack(bt4, 1, 7, 1, 1);
+
+            pb1.Show();
+            lb1.Show();
+            lb2.Show();
+            bt1.Show();
+            bt2.Show();
+            bt3.Show();
+            bt4.Show();
         }
     }
-}
+}
\ No newline at end of file