C++ apps: templated scene controller (#517)
* C++ apps: templated scene controller * templated app: fix type names * templated app: text store component * Applications: add "Templated Scene" application * templated app: refractoring * Gui module byte input: fix docs * templated app: new byte input scene * templated app: dialog ex view module * templated app: popup view module * templated app: dialog-ex view module, fix docs * templated app: text input view module * Gui module text input: fix docs * Furi: duplicated include * templated app: record holder (controller) class * templated app: view modules can now be accessed via cast * templated app: remove unused includes * templated app: fix return code
This commit is contained in:
46
lib/app-scened-template/record-controller.hpp
Normal file
46
lib/app-scened-template/record-controller.hpp
Normal file
@@ -0,0 +1,46 @@
|
||||
#pragma once
|
||||
#include <furi/record.h>
|
||||
|
||||
/**
|
||||
* @brief Class for opening, casting, holding and closing records
|
||||
*
|
||||
* @tparam TRecordClass record class
|
||||
*/
|
||||
template <typename TRecordClass> class RecordController {
|
||||
public:
|
||||
/**
|
||||
* @brief Construct a new Record Controller object for record with record name
|
||||
*
|
||||
* @param record_name record name
|
||||
*/
|
||||
RecordController(const char* record_name) {
|
||||
name = record_name;
|
||||
value = static_cast<TRecordClass*>(furi_record_open(name));
|
||||
};
|
||||
|
||||
~RecordController() {
|
||||
furi_record_close(name);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Record getter
|
||||
*
|
||||
* @return TRecordClass* record value
|
||||
*/
|
||||
TRecordClass* get() {
|
||||
return value;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Record getter (by cast)
|
||||
*
|
||||
* @return TRecordClass* record value
|
||||
*/
|
||||
operator TRecordClass*() const {
|
||||
return value;
|
||||
}
|
||||
|
||||
private:
|
||||
const char* name;
|
||||
TRecordClass* value;
|
||||
};
|
Reference in New Issue
Block a user