2024-04-12 22:08:54 +01:00
/*
2024-04-15 00:53:43 +01:00
* data_transfer_progress_display . hpp
2024-04-12 22:08:54 +01:00
*
* Copyright ( c ) 2020 - 2024 , DarkMatterCore < pabloacurielz @ gmail . com > .
*
* This file is part of nxdumptool ( https : //github.com/DarkMatterCore/nxdumptool).
*
* nxdumptool is free software : you can redistribute it and / or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation , either version 3 of the License , or
* ( at your option ) any later version .
*
* nxdumptool is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU General Public License for more details .
*
* You should have received a copy of the GNU General Public License
* along with this program . If not , see < https : //www.gnu.org/licenses/>.
*/
# pragma once
2024-04-15 00:53:43 +01:00
# ifndef __DATA_TRANSFER_PROGRESS_DISPLAY_HPP__
# define __DATA_TRANSFER_PROGRESS_DISPLAY_HPP__
2024-04-12 22:08:54 +01:00
2024-04-15 00:53:43 +01:00
# include "data_transfer_task.hpp"
2024-04-12 22:08:54 +01:00
namespace nxdt : : views
{
2024-04-15 00:53:43 +01:00
/* Used to display the progress of an ongoing data transfer task. Shows a progress bar, a spinner, a percentage value, the process speed and an ETA value. */
class DataTransferProgressDisplay : public brls : : View
2024-04-12 22:08:54 +01:00
{
private :
brls : : ProgressDisplay * progress_display = nullptr ;
brls : : Label * size_lbl = nullptr , * speed_eta_lbl = nullptr ;
std : : string GetFormattedSizeString ( double size ) ;
protected :
void draw ( NVGcontext * vg , int x , int y , unsigned width , unsigned height , brls : : Style * style , brls : : FrameContext * ctx ) override ;
void layout ( NVGcontext * vg , brls : : Style * style , brls : : FontStash * stash ) override ;
public :
2024-04-15 00:53:43 +01:00
DataTransferProgressDisplay ( void ) ;
~ DataTransferProgressDisplay ( void ) ;
2024-04-12 22:08:54 +01:00
2024-04-15 00:53:43 +01:00
void setProgress ( const nxdt : : tasks : : DataTransferProgress & progress ) ;
2024-04-12 22:08:54 +01:00
void willAppear ( bool resetState = false ) override ;
void willDisappear ( bool resetState = false ) override ;
} ;
}
2024-04-15 00:53:43 +01:00
# endif /* __DATA_TRANSFER_PROGRESS_DISPLAY_HPP__ */