68 lines
1.9 KiB
C++
68 lines
1.9 KiB
C++
|
#ifndef _MODULES_BATTERY_HPP_
|
||
|
#define _MODULES_BATTERY_HPP_
|
||
|
|
||
|
#include <memory>
|
||
|
#include <string>
|
||
|
#include <mutex>
|
||
|
|
||
|
#include "modules/base.hpp"
|
||
|
#include "drawtypes/animation.hpp"
|
||
|
#include "drawtypes/icon.hpp"
|
||
|
#include "drawtypes/label.hpp"
|
||
|
#include "drawtypes/ramp.hpp"
|
||
|
|
||
|
namespace modules
|
||
|
{
|
||
|
enum BatteryState
|
||
|
{
|
||
|
UNKNOWN = 1 << 1,
|
||
|
CHARGING = 1 << 2,
|
||
|
DISCHARGING = 1 << 4,
|
||
|
FULL = 1 << 8,
|
||
|
};
|
||
|
|
||
|
DefineModule(BatteryModule, InotifyModule)
|
||
|
{
|
||
|
const char *FORMAT_CHARGING = "format:charging";
|
||
|
const char *FORMAT_DISCHARGING = "format:discharging";
|
||
|
const char *FORMAT_FULL = "format:full";
|
||
|
|
||
|
const char *TAG_ANIMATION_CHARGING = "<animation:charging>";
|
||
|
const char *TAG_BAR_CAPACITY = "<bar:capacity>";
|
||
|
const char *TAG_RAMP_CAPACITY = "<ramp:capacity>";
|
||
|
const char *TAG_LABEL_CHARGING = "<label:charging>";
|
||
|
const char *TAG_LABEL_DISCHARGING = "<label:discharging>";
|
||
|
const char *TAG_LABEL_FULL = "<label:full>";
|
||
|
|
||
|
// std::mutex ev_mtx;
|
||
|
// std::condition_variable cv;
|
||
|
|
||
|
std::unique_ptr<drawtypes::Animation> animation_charging;
|
||
|
std::unique_ptr<drawtypes::Ramp> ramp_capacity;
|
||
|
std::unique_ptr<drawtypes::Bar> bar_capacity;
|
||
|
std::unique_ptr<drawtypes::Label> label_charging;
|
||
|
std::unique_ptr<drawtypes::Label> label_charging_tokenized;
|
||
|
std::unique_ptr<drawtypes::Label> label_discharging;
|
||
|
std::unique_ptr<drawtypes::Label> label_discharging_tokenized;
|
||
|
std::unique_ptr<drawtypes::Label> label_full;
|
||
|
std::unique_ptr<drawtypes::Label> label_full_tokenized;
|
||
|
|
||
|
std::string battery, adapter;
|
||
|
concurrency::Atomic<int> state;
|
||
|
// std::atomic<int> state;
|
||
|
std::atomic<int> percentage;
|
||
|
int full_at;
|
||
|
|
||
|
void animation_thread_runner();
|
||
|
|
||
|
public:
|
||
|
BatteryModule(const std::string& name);
|
||
|
|
||
|
bool on_event(InotifyEvent *event);
|
||
|
std::string get_format();
|
||
|
bool build(Builder *builder, const std::string& tag);
|
||
|
};
|
||
|
}
|
||
|
|
||
|
#endif
|