This application is a thorough example of the progress bar widget, consisting of a window with various progress bars, each with a given look/style one can give to those widgets.

With two auxiliary buttons, one can start or stop a timer which will fill in the bars in synchrony, simulating an underlying task being completed.

We create {\bfseries{seven}} progress bars, being three of them horizontal, three vertical and a final one under the \char`\"{}wheel\char`\"{} alternate style.

For the first one, we add a progress bar on total pristine state, with no other call than the \mbox{\hyperlink{group__Elm__Progressbar_ga8daa7a9ecec49c66f2e8fd5235cb3b0f}{elm\+\_\+progressbar\+\_\+add()}} one\+:  
\begin{DoxyCodeInclude}{0}
\DoxyCodeLine{   \textcolor{comment}{/* pb with no label, default unit label and no icon */}}
\DoxyCodeLine{   pb = \mbox{\hyperlink{group__Elm__Progressbar_ga8daa7a9ecec49c66f2e8fd5235cb3b0f}{elm\_progressbar\_add}}(win);}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Object__Group_ga9379629ad8ad2860aa786d838a4a106a}{evas\_object\_size\_hint\_weight\_set}}(pb, \mbox{\hyperlink{Evas__Common_8h_aa47c85083d3dae0111c21ec49359306a}{EVAS\_HINT\_EXPAND}}, \mbox{\hyperlink{Evas__Common_8h_aa47c85083d3dae0111c21ec49359306a}{EVAS\_HINT\_EXPAND}});}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Object__Group_gaaf1d3e26e36b316977336066b6f56632}{evas\_object\_size\_hint\_align\_set}}(pb, \mbox{\hyperlink{Evas__Common_8h_aecbac710f36d52911fc34dcdaf8e729c}{EVAS\_HINT\_FILL}}, 0.5);}
\DoxyCodeLine{   \mbox{\hyperlink{group__Elm__Box__Group_ga66a10dd861578521af2ab7b8c2ca65c5}{elm\_box\_pack\_end}}(bx, pb);}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Object__Group__Basic_ga07208fcafd4739de606bc35fff684bf5}{evas\_object\_show}}(pb);}
\DoxyCodeLine{   example\_data.pb1 = pb;}

\end{DoxyCodeInclude}
See, than, that the defaults of a progress bar are\+:
\begin{DoxyItemize}
\item no primary label shown,
\item unit label set to {\ttfamily \char`\"{}\%.\+0f \%\%\char`\"{}},
\item no icon set
\end{DoxyItemize}

The second progress bar is given a primary label, {\ttfamily \char`\"{}\+Infinite bounce\char`\"{}}, and, besides, it\textquotesingle{}s set to {\bfseries{pulse}}. See how, after one starts the progress timer, with the \char`\"{}\+Start\char`\"{} button, it animates differently than the previous one. It won\textquotesingle{}t account for the progress, itself, and just dumbly animate a small bar within its bar region.  
\begin{DoxyCodeInclude}{0}
\DoxyCodeLine{   \textcolor{comment}{/* pb with label, and set to pulse */}}
\DoxyCodeLine{   pb = \mbox{\hyperlink{group__Elm__Progressbar_ga8daa7a9ecec49c66f2e8fd5235cb3b0f}{elm\_progressbar\_add}}(win);}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Object__Group_gaaf1d3e26e36b316977336066b6f56632}{evas\_object\_size\_hint\_align\_set}}(pb, \mbox{\hyperlink{Evas__Common_8h_aecbac710f36d52911fc34dcdaf8e729c}{EVAS\_HINT\_FILL}}, 0.5);}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Object__Group_ga9379629ad8ad2860aa786d838a4a106a}{evas\_object\_size\_hint\_weight\_set}}(pb, \mbox{\hyperlink{Evas__Common_8h_aa47c85083d3dae0111c21ec49359306a}{EVAS\_HINT\_EXPAND}}, \mbox{\hyperlink{Evas__Common_8h_aa47c85083d3dae0111c21ec49359306a}{EVAS\_HINT\_EXPAND}});}
\DoxyCodeLine{   elm\_object\_text\_set(pb, \textcolor{stringliteral}{"{}Infinite bounce"{}});}
\DoxyCodeLine{   \mbox{\hyperlink{group__Elm__Progressbar_gac3cab76a1bb90d2763b76256a178a044}{elm\_progressbar\_pulse\_set}}(pb, \mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\_TRUE}});}
\DoxyCodeLine{   \mbox{\hyperlink{group__Elm__Box__Group_ga66a10dd861578521af2ab7b8c2ca65c5}{elm\_box\_pack\_end}}(bx, pb);}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Object__Group__Basic_ga07208fcafd4739de606bc35fff684bf5}{evas\_object\_show}}(pb);}
\DoxyCodeLine{   example\_data.pb2 = pb;}

\end{DoxyCodeInclude}
 Next, comes a progress bar with an {\bfseries{icon}}, a primary label and a unit label {\bfseries{function}} set. It\textquotesingle{}s also made to grow its bar in an {\bfseries{inverted}} manner, so check that out during the timer\textquotesingle{}s progression\+:  
\begin{DoxyCodeInclude}{0}
\DoxyCodeLine{   ic1 = \mbox{\hyperlink{group__Elm__Icon_gac369f2d67be417e5cff81e8f001ff326}{elm\_icon\_add}}(win);}
\DoxyCodeLine{   snprintf(buf, \textcolor{keyword}{sizeof}(buf), \textcolor{stringliteral}{"{}\%s/images/logo\_small.png"{}}, \mbox{\hyperlink{group__Elm__App_gab10cf98c5aa3936dfda01d6bca366d09}{elm\_app\_data\_dir\_get}}());}
\DoxyCodeLine{   \mbox{\hyperlink{group__Elm__Image_gad1a96ede5f513042cef3c1dac4572f73}{elm\_image\_file\_set}}(ic1, buf, NULL);}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Object__Group_gab09d6bf93b5435230b41ceca2abe783a}{evas\_object\_size\_hint\_aspect\_set}}(ic1, \mbox{\hyperlink{Evas__Common_8h_ac68b577b7c0b79c356f01926e4a8099faeaf1e019f2dbfbbc2da9ab1fe1f175f6}{EVAS\_ASPECT\_CONTROL\_VERTICAL}}, 1, 1);}
\DoxyCodeLine{}
\DoxyCodeLine{   \textcolor{comment}{/* pb with label, icon, custom unit label function and span size set */}}
\DoxyCodeLine{   pb = \mbox{\hyperlink{group__Elm__Progressbar_ga8daa7a9ecec49c66f2e8fd5235cb3b0f}{elm\_progressbar\_add}}(win);}
\DoxyCodeLine{   elm\_object\_text\_set(pb, \textcolor{stringliteral}{"{}Label"{}});}
\DoxyCodeLine{   \mbox{\hyperlink{group__Elm__General_ga0531ec8867c72def7c780601764ca642}{elm\_object\_part\_content\_set}}(pb, \textcolor{stringliteral}{"{}icon"{}}, ic1);}
\DoxyCodeLine{   \mbox{\hyperlink{group__Elm__Progressbar_ga6dcd3a314d99d2fc9df2cc74259a0128}{elm\_progressbar\_inverted\_set}}(pb, \mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\_TRUE}});}
\DoxyCodeLine{   \mbox{\hyperlink{group__Elm__Progressbar_ga702ae4ddbb0bb36a39d382d235cd03b4}{elm\_progressbar\_unit\_format\_function\_set}}(pb, \_progress\_format\_cb,}
\DoxyCodeLine{                                            \_progress\_format\_free);}
\DoxyCodeLine{   \mbox{\hyperlink{group__Elm__Progressbar_ga0fcab656cc093c7a8e2db9c7d62c4edf}{elm\_progressbar\_span\_size\_set}}(pb, 200);}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Object__Group_gaaf1d3e26e36b316977336066b6f56632}{evas\_object\_size\_hint\_align\_set}}(pb, \mbox{\hyperlink{Evas__Common_8h_aecbac710f36d52911fc34dcdaf8e729c}{EVAS\_HINT\_FILL}}, 0.5);}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Object__Group_ga9379629ad8ad2860aa786d838a4a106a}{evas\_object\_size\_hint\_weight\_set}}(pb, \mbox{\hyperlink{Evas__Common_8h_aa47c85083d3dae0111c21ec49359306a}{EVAS\_HINT\_EXPAND}}, \mbox{\hyperlink{Evas__Common_8h_aa47c85083d3dae0111c21ec49359306a}{EVAS\_HINT\_EXPAND}});}
\DoxyCodeLine{   \mbox{\hyperlink{group__Elm__Box__Group_ga66a10dd861578521af2ab7b8c2ca65c5}{elm\_box\_pack\_end}}(bx, pb);}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Object__Group__Basic_ga07208fcafd4739de606bc35fff684bf5}{evas\_object\_show}}(ic1);}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Object__Group__Basic_ga07208fcafd4739de606bc35fff684bf5}{evas\_object\_show}}(pb);}
\DoxyCodeLine{   example\_data.pb3 = pb;}

\end{DoxyCodeInclude}
Another important thing in this one is the call to \mbox{\hyperlink{group__Elm__Progressbar_ga0fcab656cc093c7a8e2db9c7d62c4edf}{elm\+\_\+progressbar\+\_\+span\+\_\+size\+\_\+set()}} -- this is how we forcefully set a minimum horizontal size to our whole window! We\textquotesingle{}re not resizing it manually, as you can see in the \mbox{\hyperlink{progressbar_example_c}{complete code}}.

The format callback is a simple function that gets passed the progress value and returns a string. A free function should be provided as well, if the format callback allocates memory.  
\begin{DoxyCodeInclude}{0}
\DoxyCodeLine{\textcolor{comment}{/* Format callback */}}
\DoxyCodeLine{\textcolor{keyword}{static} \textcolor{keywordtype}{char} *}
\DoxyCodeLine{\_progress\_format\_cb(\textcolor{keywordtype}{double} val)}
\DoxyCodeLine{\{}
\DoxyCodeLine{   \textcolor{keyword}{static} \textcolor{keywordtype}{char} buf[30];}
\DoxyCodeLine{   \textcolor{keywordtype}{int} files = (1-\/val)*14000;}
\DoxyCodeLine{   \textcolor{keywordflow}{if} (snprintf(buf, 30, \textcolor{stringliteral}{"{}\%i files left"{}}, files) > 0)}
\DoxyCodeLine{     \textcolor{keywordflow}{return} strdup(buf);}
\DoxyCodeLine{   \textcolor{keywordflow}{return} NULL;}
\DoxyCodeLine{\}}
\DoxyCodeLine{}
\DoxyCodeLine{\textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\_progress\_format\_free(\textcolor{keywordtype}{char} *str)}
\DoxyCodeLine{\{}
\DoxyCodeLine{   free(str);}
\DoxyCodeLine{\}}

\end{DoxyCodeInclude}
 The last horizontal progress bar has a callback that gets called when its value is {\bfseries{changed}}. This callback updates a label to provide an estimate when the operation finishes.  
\begin{DoxyCodeInclude}{0}
\DoxyCodeLine{   \textcolor{comment}{/* pb with label and changed trigger  */}}
\DoxyCodeLine{   pb = \mbox{\hyperlink{group__Elm__Progressbar_ga8daa7a9ecec49c66f2e8fd5235cb3b0f}{elm\_progressbar\_add}}(win);}
\DoxyCodeLine{   elm\_object\_text\_set(pb, \textcolor{stringliteral}{"{}Label"{}});}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Object__Group_gaaf1d3e26e36b316977336066b6f56632}{evas\_object\_size\_hint\_align\_set}}(pb, \mbox{\hyperlink{Evas__Common_8h_aecbac710f36d52911fc34dcdaf8e729c}{EVAS\_HINT\_FILL}}, 0.5);}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Object__Group_ga9379629ad8ad2860aa786d838a4a106a}{evas\_object\_size\_hint\_weight\_set}}(pb, \mbox{\hyperlink{Evas__Common_8h_aa47c85083d3dae0111c21ec49359306a}{EVAS\_HINT\_EXPAND}}, \mbox{\hyperlink{Evas__Common_8h_aa47c85083d3dae0111c21ec49359306a}{EVAS\_HINT\_EXPAND}});}
\DoxyCodeLine{   \mbox{\hyperlink{group__Elm__Box__Group_ga66a10dd861578521af2ab7b8c2ca65c5}{elm\_box\_pack\_end}}(bx, pb);}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Object__Group__Basic_ga07208fcafd4739de606bc35fff684bf5}{evas\_object\_show}}(pb);}
\DoxyCodeLine{}
\DoxyCodeLine{   label = \mbox{\hyperlink{group__Elm__Label__Group_ga39a584d245f8a4b18d742e3ede702507}{elm\_label\_add}}(win);}
\DoxyCodeLine{   elm\_object\_text\_set(label, \textcolor{stringliteral}{"{}ETA: N/A"{}});}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Object__Group_gaaf1d3e26e36b316977336066b6f56632}{evas\_object\_size\_hint\_align\_set}}(label, 0.5, 0.5);}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Object__Group_ga9379629ad8ad2860aa786d838a4a106a}{evas\_object\_size\_hint\_weight\_set}}(label, \mbox{\hyperlink{Evas__Common_8h_aa47c85083d3dae0111c21ec49359306a}{EVAS\_HINT\_EXPAND}}, \mbox{\hyperlink{Evas__Common_8h_aa47c85083d3dae0111c21ec49359306a}{EVAS\_HINT\_EXPAND}});}
\DoxyCodeLine{   \mbox{\hyperlink{group__Elm__Box__Group_ga66a10dd861578521af2ab7b8c2ca65c5}{elm\_box\_pack\_end}}(bx, label);}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Object__Group__Basic_ga07208fcafd4739de606bc35fff684bf5}{evas\_object\_show}}(label);}
\DoxyCodeLine{}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Smart__Object__Group_gac12dd6655f488cc47ce6cf00eb7d12b2}{evas\_object\_smart\_callback\_add}}(pb, \textcolor{stringliteral}{"{}changed"{}}, \_on\_changed, label);}
\DoxyCodeLine{   example\_data.pb4 = pb;}

\end{DoxyCodeInclude}
 The \char`\"{}changed\char`\"{} signal is emitted every time the progressbar value is updated through \mbox{\hyperlink{group__Elm__Progressbar_ga06299da7deaa70dd1181477157fd5701}{elm\+\_\+progressbar\+\_\+value\+\_\+set()}}. This callback calculates and displays the ETA based on the progress and time that has passed.  
\begin{DoxyCodeInclude}{0}
\DoxyCodeLine{\textcolor{comment}{/* Callback for "{}changed"{} signal */}}
\DoxyCodeLine{\textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\_on\_changed(\textcolor{keywordtype}{void}        *data,}
\DoxyCodeLine{            \mbox{\hyperlink{group__Evas__Object__Group_ga9e19e6dd1f517a0ba437c0114d3e7c97}{Evas\_Object}} *obj,}
\DoxyCodeLine{            \textcolor{keywordtype}{void}        *event\_info \mbox{\hyperlink{group__Eina__Types__Group_ga82d751be730f849719ca292f9558be87}{EINA\_UNUSED}})}
\DoxyCodeLine{\{}
\DoxyCodeLine{   \textcolor{keyword}{static} \textcolor{keywordtype}{char} buf[30];}
\DoxyCodeLine{   \textcolor{keyword}{static} time\_t tstart = 0;}
\DoxyCodeLine{   \textcolor{keyword}{static} \textcolor{keywordtype}{double} eta = 0;}
\DoxyCodeLine{   time\_t tdiff;}
\DoxyCodeLine{   \textcolor{keywordtype}{double} val;}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Object__Group_ga9e19e6dd1f517a0ba437c0114d3e7c97}{Evas\_Object}} *label =  (\mbox{\hyperlink{group__Evas__Object__Group_ga9e19e6dd1f517a0ba437c0114d3e7c97}{Evas\_Object}} *)data;}
\DoxyCodeLine{}
\DoxyCodeLine{   val = \mbox{\hyperlink{group__Elm__Progressbar_ga87c65ecf41baee9f861f426072cb69ae}{elm\_progressbar\_value\_get}}(obj);}
\DoxyCodeLine{   \textcolor{keywordflow}{if} (\mbox{\hyperlink{group__Eina__Tools__Group_ga6bee37244b675b83d6a4f044a7a3d1e8}{EINA\_DBL\_EQ}}(val, 0))}
\DoxyCodeLine{     \{}
\DoxyCodeLine{        tstart = 0;}
\DoxyCodeLine{        elm\_object\_text\_set(label, \textcolor{stringliteral}{"{}ETA: N/A"{}});}
\DoxyCodeLine{        \textcolor{keywordflow}{return};}
\DoxyCodeLine{     \}}
\DoxyCodeLine{}
\DoxyCodeLine{   \textcolor{comment}{/* First invocation */}}
\DoxyCodeLine{   \textcolor{keywordflow}{if} (tstart == 0)}
\DoxyCodeLine{     \{}
\DoxyCodeLine{        tstart = time(NULL);}
\DoxyCodeLine{     \}}
\DoxyCodeLine{}
\DoxyCodeLine{   \textcolor{comment}{/* Calculate ETA and update */}}
\DoxyCodeLine{   tdiff = time(NULL) -\/ tstart;}
\DoxyCodeLine{   eta = 0.3*eta + 0.7*(tdiff/val)*(1-\/val);}
\DoxyCodeLine{   snprintf(buf, 30, \textcolor{stringliteral}{"{}ETA: \%.0fs"{}}, eta);}
\DoxyCodeLine{   elm\_object\_text\_set(label, buf);}
\DoxyCodeLine{\}}

\end{DoxyCodeInclude}
 The next three progress bars are just variants on the ones already shown, but now all being {\bfseries{vertical}}. Another time we use one of than to give the window a minimum vertical size, with \mbox{\hyperlink{group__Elm__Progressbar_ga0fcab656cc093c7a8e2db9c7d62c4edf}{elm\+\_\+progressbar\+\_\+span\+\_\+size\+\_\+set()}}. To demonstrate this trick once more, the fifth one, which is also set to pulse, has a smaller hardcoded span size\+:  
\begin{DoxyCodeInclude}{0}
\DoxyCodeLine{   \textcolor{comment}{/* vertical pb, with pulse and custom (small) span size */}}
\DoxyCodeLine{   pb = \mbox{\hyperlink{group__Elm__Progressbar_ga8daa7a9ecec49c66f2e8fd5235cb3b0f}{elm\_progressbar\_add}}(win);}
\DoxyCodeLine{   \mbox{\hyperlink{group__Elm__Progressbar_ga41dd83f3eab54cf82e49515b09c18069}{elm\_progressbar\_horizontal\_set}}(pb, \mbox{\hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{EINA\_FALSE}});}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Object__Group_gaaf1d3e26e36b316977336066b6f56632}{evas\_object\_size\_hint\_align\_set}}(pb, \mbox{\hyperlink{Evas__Common_8h_aecbac710f36d52911fc34dcdaf8e729c}{EVAS\_HINT\_FILL}}, 0.5);}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Object__Group_ga9379629ad8ad2860aa786d838a4a106a}{evas\_object\_size\_hint\_weight\_set}}(pb, \mbox{\hyperlink{Evas__Common_8h_aa47c85083d3dae0111c21ec49359306a}{EVAS\_HINT\_EXPAND}}, \mbox{\hyperlink{Evas__Common_8h_aa47c85083d3dae0111c21ec49359306a}{EVAS\_HINT\_EXPAND}});}
\DoxyCodeLine{   \mbox{\hyperlink{group__Elm__Progressbar_ga0fcab656cc093c7a8e2db9c7d62c4edf}{elm\_progressbar\_span\_size\_set}}(pb, 80);}
\DoxyCodeLine{   \mbox{\hyperlink{group__Elm__Progressbar_gac3cab76a1bb90d2763b76256a178a044}{elm\_progressbar\_pulse\_set}}(pb, \mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\_TRUE}});}
\DoxyCodeLine{   \mbox{\hyperlink{group__Elm__Progressbar_gab3b04eea0c8c842668faa3bfdcb0c78c}{elm\_progressbar\_unit\_format\_set}}(pb, NULL);}
\DoxyCodeLine{   elm\_object\_text\_set(pb, \textcolor{stringliteral}{"{}Infinite bounce"{}});}
\DoxyCodeLine{   \mbox{\hyperlink{group__Elm__Box__Group_ga66a10dd861578521af2ab7b8c2ca65c5}{elm\_box\_pack\_end}}(hbx, pb);}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Object__Group__Basic_ga07208fcafd4739de606bc35fff684bf5}{evas\_object\_show}}(pb);}
\DoxyCodeLine{   example\_data.pb6 = pb;}

\end{DoxyCodeInclude}
 We end the widget demonstration by showing a progress bar with the special {\bfseries{\char`\"{}wheel\char`\"{}}} progress bar style. One does {\bfseries{not}} need to set it to pulse, with \mbox{\hyperlink{group__Elm__Progressbar_gac3cab76a1bb90d2763b76256a178a044}{elm\+\_\+progressbar\+\_\+pulse\+\_\+set()}}, explicitly, because its theme does not take it in account\+:  
\begin{DoxyCodeInclude}{0}
\DoxyCodeLine{   \textcolor{comment}{/* "{}wheel"{} style progress bar */}}
\DoxyCodeLine{   pb = \mbox{\hyperlink{group__Elm__Progressbar_ga8daa7a9ecec49c66f2e8fd5235cb3b0f}{elm\_progressbar\_add}}(win);}
\DoxyCodeLine{   \mbox{\hyperlink{group__Elm__Styles_ga7fc2d1f9ba723470da7a05799c49f7fe}{elm\_object\_style\_set}}(pb, \textcolor{stringliteral}{"{}wheel"{}});}
\DoxyCodeLine{   elm\_object\_text\_set(pb, \textcolor{stringliteral}{"{}Style: wheel"{}});}
\DoxyCodeLine{   \mbox{\hyperlink{group__Elm__Progressbar_gac3cab76a1bb90d2763b76256a178a044}{elm\_progressbar\_pulse\_set}}(pb, \mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\_TRUE}});}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Object__Group_gaaf1d3e26e36b316977336066b6f56632}{evas\_object\_size\_hint\_align\_set}}(pb, \mbox{\hyperlink{Evas__Common_8h_aecbac710f36d52911fc34dcdaf8e729c}{EVAS\_HINT\_FILL}}, 0.5);}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Object__Group_ga9379629ad8ad2860aa786d838a4a106a}{evas\_object\_size\_hint\_weight\_set}}(pb, \mbox{\hyperlink{Evas__Common_8h_aa47c85083d3dae0111c21ec49359306a}{EVAS\_HINT\_EXPAND}}, \mbox{\hyperlink{Evas__Common_8h_aa47c85083d3dae0111c21ec49359306a}{EVAS\_HINT\_EXPAND}});}
\DoxyCodeLine{   \mbox{\hyperlink{group__Elm__Box__Group_ga66a10dd861578521af2ab7b8c2ca65c5}{elm\_box\_pack\_end}}(bx, pb);}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Object__Group__Basic_ga07208fcafd4739de606bc35fff684bf5}{evas\_object\_show}}(pb);}
\DoxyCodeLine{   example\_data.pb8 = pb;}

\end{DoxyCodeInclude}
 The two buttons exercising the bars, the facto, follow\+:  
\begin{DoxyCodeInclude}{0}
\DoxyCodeLine{   bt = \mbox{\hyperlink{group__Elm__Button_gaf5caf46d74c4e122a18da323935d25e4}{elm\_button\_add}}(win);}
\DoxyCodeLine{   elm\_object\_text\_set(bt, \textcolor{stringliteral}{"{}Start"{}});}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Smart__Object__Group_gac12dd6655f488cc47ce6cf00eb7d12b2}{evas\_object\_smart\_callback\_add}}(bt, \textcolor{stringliteral}{"{}clicked"{}}, \_progressbar\_example\_start,}
\DoxyCodeLine{                                  NULL);}
\DoxyCodeLine{   \mbox{\hyperlink{group__Elm__Box__Group_ga66a10dd861578521af2ab7b8c2ca65c5}{elm\_box\_pack\_end}}(bt\_bx, bt);}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Object__Group__Basic_ga07208fcafd4739de606bc35fff684bf5}{evas\_object\_show}}(bt);}
\DoxyCodeLine{}
\DoxyCodeLine{   bt = \mbox{\hyperlink{group__Elm__Button_gaf5caf46d74c4e122a18da323935d25e4}{elm\_button\_add}}(win);}
\DoxyCodeLine{   elm\_object\_text\_set(bt, \textcolor{stringliteral}{"{}Stop"{}});}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Smart__Object__Group_gac12dd6655f488cc47ce6cf00eb7d12b2}{evas\_object\_smart\_callback\_add}}(bt, \textcolor{stringliteral}{"{}clicked"{}}, \_progressbar\_example\_stop,}
\DoxyCodeLine{                                  NULL);}
\DoxyCodeLine{   \mbox{\hyperlink{group__Elm__Box__Group_ga66a10dd861578521af2ab7b8c2ca65c5}{elm\_box\_pack\_end}}(bt\_bx, bt);}
\DoxyCodeLine{   \mbox{\hyperlink{group__Evas__Object__Group__Basic_ga07208fcafd4739de606bc35fff684bf5}{evas\_object\_show}}(bt);}

\end{DoxyCodeInclude}
 The first of the callbacks will, for the progress bars set to pulse, start the pulsing animation at that time. For the others, a timer callback will take care of updating the values\+:  
\begin{DoxyCodeInclude}{0}
\DoxyCodeLine{\textcolor{keyword}{static} \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\_Bool}}}
\DoxyCodeLine{\_progressbar\_example\_value\_set(\textcolor{keywordtype}{void} *data \mbox{\hyperlink{group__Eina__Types__Group_ga82d751be730f849719ca292f9558be87}{EINA\_UNUSED}})}
\DoxyCodeLine{\{}
\DoxyCodeLine{   \textcolor{keywordtype}{double} progress;}
\DoxyCodeLine{}
\DoxyCodeLine{   progress = \mbox{\hyperlink{group__Elm__Progressbar_ga87c65ecf41baee9f861f426072cb69ae}{elm\_progressbar\_value\_get}}(example\_data.pb1);}
\DoxyCodeLine{   \textcolor{keywordflow}{if} (progress < 1.0) progress += 0.0123;}
\DoxyCodeLine{   \textcolor{keywordflow}{else} progress = 0.0;}
\DoxyCodeLine{}
\DoxyCodeLine{   \textcolor{comment}{/* just the non-\/pulsing ones need an update */}}
\DoxyCodeLine{   \mbox{\hyperlink{group__Elm__Progressbar_ga06299da7deaa70dd1181477157fd5701}{elm\_progressbar\_value\_set}}(example\_data.pb1, progress);}
\DoxyCodeLine{   \mbox{\hyperlink{group__Elm__Progressbar_ga06299da7deaa70dd1181477157fd5701}{elm\_progressbar\_value\_set}}(example\_data.pb3, progress);}
\DoxyCodeLine{   \mbox{\hyperlink{group__Elm__Progressbar_ga06299da7deaa70dd1181477157fd5701}{elm\_progressbar\_value\_set}}(example\_data.pb4, progress);}
\DoxyCodeLine{   \mbox{\hyperlink{group__Elm__Progressbar_ga06299da7deaa70dd1181477157fd5701}{elm\_progressbar\_value\_set}}(example\_data.pb5, progress);}
\DoxyCodeLine{   \mbox{\hyperlink{group__Elm__Progressbar_ga06299da7deaa70dd1181477157fd5701}{elm\_progressbar\_value\_set}}(example\_data.pb7, progress);}
\DoxyCodeLine{}
\DoxyCodeLine{   \textcolor{keywordflow}{if} (progress < 1.0) \textcolor{keywordflow}{return} \mbox{\hyperlink{group__Ecore__Main__Loop__Group_ga1ee9db07f9a46a8b20fb83e1c6dbed09}{ECORE\_CALLBACK\_RENEW}};}
\DoxyCodeLine{}
\DoxyCodeLine{   example\_data.run = 0;}
\DoxyCodeLine{   \textcolor{keywordflow}{return} \mbox{\hyperlink{group__Ecore__Main__Loop__Group_gae0c653baad8836232c0dc27f91f875d6}{ECORE\_CALLBACK\_CANCEL}};}
\DoxyCodeLine{\}}
\DoxyCodeLine{}
\DoxyCodeLine{\textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\_progressbar\_example\_start(\textcolor{keywordtype}{void}        *data \mbox{\hyperlink{group__Eina__Types__Group_ga82d751be730f849719ca292f9558be87}{EINA\_UNUSED}},}
\DoxyCodeLine{                           \mbox{\hyperlink{group__Evas__Object__Group_ga9e19e6dd1f517a0ba437c0114d3e7c97}{Evas\_Object}} *obj \mbox{\hyperlink{group__Eina__Types__Group_ga82d751be730f849719ca292f9558be87}{EINA\_UNUSED}},}
\DoxyCodeLine{                           \textcolor{keywordtype}{void}        *event\_info \mbox{\hyperlink{group__Eina__Types__Group_ga82d751be730f849719ca292f9558be87}{EINA\_UNUSED}})}
\DoxyCodeLine{\{}
\DoxyCodeLine{   \mbox{\hyperlink{group__Elm__Progressbar_ga220f1159a4ab9ecfb333841e8b6db5de}{elm\_progressbar\_pulse}}(example\_data.pb2, \mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\_TRUE}});}
\DoxyCodeLine{   \mbox{\hyperlink{group__Elm__Progressbar_ga220f1159a4ab9ecfb333841e8b6db5de}{elm\_progressbar\_pulse}}(example\_data.pb6, \mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\_TRUE}});}
\DoxyCodeLine{   \mbox{\hyperlink{group__Elm__Progressbar_ga220f1159a4ab9ecfb333841e8b6db5de}{elm\_progressbar\_pulse}}(example\_data.pb8, \mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\_TRUE}});}
\DoxyCodeLine{}
\DoxyCodeLine{   \textcolor{keywordflow}{if} (!example\_data.run)}
\DoxyCodeLine{     \{}
\DoxyCodeLine{        example\_data.timer = \mbox{\hyperlink{group__Ecore__Timer__Group_ga926423e464d7ef71105dd822d90e1187}{ecore\_timer\_add}}(}
\DoxyCodeLine{           0.1, \_progressbar\_example\_value\_set, NULL);}
\DoxyCodeLine{        example\_data.run = \mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\_TRUE}};}
\DoxyCodeLine{     \}}
\DoxyCodeLine{\}}

\end{DoxyCodeInclude}
 Finally, the callback to stop the progress timer will stop the pulsing on the pulsing progress bars and, for the others, to delete the timer which was acting on their values\+:  
\begin{DoxyCodeInclude}{0}
\DoxyCodeLine{\textcolor{comment}{/* end of show */}}
\DoxyCodeLine{\textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\_progressbar\_example\_stop(\textcolor{keywordtype}{void}        *data \mbox{\hyperlink{group__Eina__Types__Group_ga82d751be730f849719ca292f9558be87}{EINA\_UNUSED}},}
\DoxyCodeLine{                          \mbox{\hyperlink{group__Evas__Object__Group_ga9e19e6dd1f517a0ba437c0114d3e7c97}{Evas\_Object}} *obj \mbox{\hyperlink{group__Eina__Types__Group_ga82d751be730f849719ca292f9558be87}{EINA\_UNUSED}},}
\DoxyCodeLine{                          \textcolor{keywordtype}{void}        *event\_info \mbox{\hyperlink{group__Eina__Types__Group_ga82d751be730f849719ca292f9558be87}{EINA\_UNUSED}})}
\DoxyCodeLine{\{}
\DoxyCodeLine{   \mbox{\hyperlink{group__Elm__Progressbar_ga220f1159a4ab9ecfb333841e8b6db5de}{elm\_progressbar\_pulse}}(example\_data.pb2, \mbox{\hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{EINA\_FALSE}});}
\DoxyCodeLine{   \mbox{\hyperlink{group__Elm__Progressbar_ga220f1159a4ab9ecfb333841e8b6db5de}{elm\_progressbar\_pulse}}(example\_data.pb6, \mbox{\hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{EINA\_FALSE}});}
\DoxyCodeLine{   \mbox{\hyperlink{group__Elm__Progressbar_ga220f1159a4ab9ecfb333841e8b6db5de}{elm\_progressbar\_pulse}}(example\_data.pb8, \mbox{\hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{EINA\_FALSE}});}
\DoxyCodeLine{}
\DoxyCodeLine{   \textcolor{keywordflow}{if} (example\_data.run)}
\DoxyCodeLine{     \{}
\DoxyCodeLine{        \mbox{\hyperlink{group__Ecore__Timer__Group_ga7c118b6a6d232b63a6500e599d2a1b47}{ecore\_timer\_del}}(example\_data.timer);}
\DoxyCodeLine{        example\_data.run = \mbox{\hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{EINA\_FALSE}};}
\DoxyCodeLine{     \}}
\DoxyCodeLine{\}}

\end{DoxyCodeInclude}
 This is how the example program\textquotesingle{}s window looks like\+:  
\begin{DoxyImageNoCaption}
  \mbox{\includegraphics[width=\textwidth]{screenshots/progressbar_example}}
\end{DoxyImageNoCaption}


See the full \mbox{\hyperlink{progressbar_example_c}{source code}} for this example. 