1 /*#############################################################################
3 # Pakfire - The IPFire package management system #
4 # Copyright (C) 2023 Pakfire development team #
6 # This program is free software: you can redistribute it and/or modify #
7 # it under the terms of the GNU General Public License as published by #
8 # the Free Software Foundation, either version 3 of the License, or #
9 # (at your option) any later version. #
11 # This program is distributed in the hope that it will be useful, #
12 # but WITHOUT ANY WARRANTY; without even the implied warranty of #
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
14 # GNU General Public License for more details. #
16 # You should have received a copy of the GNU General Public License #
17 # along with this program. If not, see <http://www.gnu.org/licenses/>. #
19 #############################################################################*/
21 #ifndef PAKFIRE_PROGRESS_H
22 #define PAKFIRE_PROGRESS_H
26 struct pakfire_progress
;
28 enum pakfire_progress_flags
{
29 PAKFIRE_PROGRESS_NO_PROGRESS
= (1 << 0),
30 PAKFIRE_PROGRESS_SHOW_PERCENTAGE
= (1 << 1),
31 PAKFIRE_PROGRESS_SHOW_BYTES_TRANSFERRED
= (1 << 2),
32 PAKFIRE_PROGRESS_SHOW_COUNTER
= (1 << 3),
33 PAKFIRE_PROGRESS_SHOW_ELAPSED_TIME
= (1 << 4),
34 PAKFIRE_PROGRESS_SHOW_ETA
= (1 << 5),
35 PAKFIRE_PROGRESS_SHOW_TRANSFER_SPEED
= (1 << 6),
38 int pakfire_progress_has_flag(struct pakfire_progress
* p
, int flag
);
43 typedef int (*pakfire_progress_start_callback
)
44 (struct pakfire
* pakfire
, struct pakfire_progress
* progress
, void* data
, unsigned long int value
);
45 typedef int (*pakfire_progress_finish_callback
)
46 (struct pakfire
* pakfire
, struct pakfire_progress
* progress
, void* data
);
47 typedef int (*pakfire_progress_update_callback
)
48 (struct pakfire
* pakfire
, struct pakfire_progress
* progress
, void* data
, unsigned long int value
);
49 typedef void (*pakfire_progress_free_callback
)
50 (struct pakfire
* pakfire
, struct pakfire_progress
* progress
, void* data
);
52 void pakfire_progress_set_callback_data(struct pakfire_progress
* p
, void* data
);
54 void pakfire_progress_set_start_callback(
55 struct pakfire_progress
* p
, pakfire_progress_start_callback callback
);
56 void pakfire_progress_set_finish_callback(
57 struct pakfire_progress
* p
, pakfire_progress_finish_callback callback
);
58 void pakfire_progress_set_update_callback(
59 struct pakfire_progress
* p
, pakfire_progress_update_callback callback
);
60 void pakfire_progress_set_free_callback(
61 struct pakfire_progress
* p
, pakfire_progress_free_callback callback
);
63 unsigned long int pakfire_progress_get_value(struct pakfire_progress
* p
);
64 unsigned long int pakfire_progress_get_max_value(struct pakfire_progress
* p
);
65 const char* pakfire_progress_get_title(struct pakfire_progress
* p
);
66 double pakfire_progress_get_percentage(struct pakfire_progress
* p
);
67 time_t pakfire_progress_get_elapsed_time(struct pakfire_progress
* p
);
68 time_t pakfire_progress_get_eta(struct pakfire_progress
* p
);
69 double pakfire_progress_get_transfer_speed(struct pakfire_progress
* p
);
71 #ifdef PAKFIRE_PRIVATE
73 #include <pakfire/pakfire.h>
75 int pakfire_progress_create(struct pakfire_progress
** progress
,
76 struct pakfire
* pakfire
, int flags
);
78 struct pakfire_progress
* pakfire_progress_ref(struct pakfire_progress
* p
);
79 struct pakfire_progress
* pakfire_progress_unref(struct pakfire_progress
* p
);
81 int pakfire_progress_start(struct pakfire_progress
* p
, unsigned long int value
);
82 int pakfire_progress_finish(struct pakfire_progress
* p
);
83 int pakfire_progress_update(struct pakfire_progress
* p
, unsigned long int value
);
84 int pakfire_progress_increment(struct pakfire_progress
* p
, unsigned long int value
);
86 int pakfire_progress_set_title(struct pakfire_progress
* p
, const char* format
, ...);
90 #endif /* PAKFIRE_PROGRESS_H */