#pragma once

#include <memory>
#include <string>

namespace rmrf::ui {

/**
 * This class is used to share progress information on running tasks. 
 */
class progress_indicator {
public:
	/**
	 * Query the progress state
	 * @return The current progress in percent
	 */
	virtual int get_progress();
	/**
	 * This method shall be used in order to obtain
	 * the total amount of steps to be done.
	 */
	virtual int get_total_work();
	/**
	 * This method shall be used to retrieve the
	 * current progress as a number of finished jobs.
	 */
	virtual int get_current_work();
	/**
	 * This method shall be used in order to obtain the
	 * description of the total operation.
	 */
	virtual shared_ptr<string> get_operation_description();
	/**
	 * This method shall be used in order to retrieve a
	 * description of the current step.
	 */
	virtual shared_ptr<string> get_current_job_description();
};

}