mirror of
https://codeberg.org/vyn/mirai.git
synced 2025-07-03 01:33:19 +00:00
Add support for Android file system
This commit is contained in:
parent
ca34562a1c
commit
66c4048b60
6 changed files with 74 additions and 15 deletions
|
@ -67,6 +67,7 @@ qt_add_qml_module(mirai
|
||||||
src/TaskItem.h src/TaskItem.cpp
|
src/TaskItem.h src/TaskItem.cpp
|
||||||
src/Tag.h src/Tag.cpp
|
src/Tag.h src/Tag.cpp
|
||||||
src/TasksFile.h src/TasksFile.cpp
|
src/TasksFile.h src/TasksFile.cpp
|
||||||
|
src/AndroidFileResource.h
|
||||||
RESOURCES
|
RESOURCES
|
||||||
src/images/calendar.png
|
src/images/calendar.png
|
||||||
src/images/add.png
|
src/images/add.png
|
||||||
|
|
62
src/AndroidFileResource.h
Normal file
62
src/AndroidFileResource.h
Normal file
|
@ -0,0 +1,62 @@
|
||||||
|
/*
|
||||||
|
* Mirai. Copyright (C) 2024 Vyn
|
||||||
|
* This file is licensed under version 3 of the GNU General Public License (GPL-3.0-only)
|
||||||
|
* The license can be found in the LICENSE file or at https://www.gnu.org/licenses/gpl-3.0.txt
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef MIRAI_ANDROID_FILE_RESOURCE_H
|
||||||
|
#define MIRAI_ANDROID_FILE_RESOURCE_H
|
||||||
|
|
||||||
|
#include "QFile"
|
||||||
|
#include "QDebug"
|
||||||
|
#include "core/BaseFileResource.h"
|
||||||
|
#include "core/TodoMd.h"
|
||||||
|
|
||||||
|
namespace mirai
|
||||||
|
{
|
||||||
|
|
||||||
|
class AndroidFileResource : public BaseFileResource
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
AndroidFileResource(BaseFileResourceConstructor data) : BaseFileResource(data){};
|
||||||
|
AndroidFileResource(AndroidFileResource &) = delete;
|
||||||
|
AndroidFileResource(AndroidFileResource &&) = delete;
|
||||||
|
AndroidFileResource operator=(AndroidFileResource &) = delete;
|
||||||
|
AndroidFileResource operator=(AndroidFileResource &&) = delete;
|
||||||
|
|
||||||
|
~AndroidFileResource() override = default;
|
||||||
|
|
||||||
|
void save() override
|
||||||
|
{
|
||||||
|
QFile file(QString::fromStdString(getPath()));
|
||||||
|
if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) {
|
||||||
|
throw std::runtime_error("can't create " + getPath());
|
||||||
|
}
|
||||||
|
|
||||||
|
const std::string content = TodoMdFormat::stringifyTasks(getName(), getTasks());
|
||||||
|
|
||||||
|
file.write(content.c_str());
|
||||||
|
file.close();
|
||||||
|
};
|
||||||
|
|
||||||
|
void load() override
|
||||||
|
{
|
||||||
|
qDebug() << "Reading " << QString::fromStdString(getPath());
|
||||||
|
QFile file(QString::fromStdString(getPath()));
|
||||||
|
if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) {
|
||||||
|
qDebug() << "Can't read";
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
QString content = file.readAll();
|
||||||
|
qDebug() << "Content " << content;
|
||||||
|
file.close();
|
||||||
|
|
||||||
|
auto result = TodoMdFormat::parse(content.toStdString());
|
||||||
|
for (const auto &task : result.tasks) {
|
||||||
|
addTask(task);
|
||||||
|
}
|
||||||
|
setName(result.name);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
} // namespace mirai
|
||||||
|
#endif
|
|
@ -5,6 +5,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "Backend.h"
|
#include "Backend.h"
|
||||||
|
#include "AndroidFileResource.h"
|
||||||
#include "TaskItem.h"
|
#include "TaskItem.h"
|
||||||
#include "core/StdFileResource.h"
|
#include "core/StdFileResource.h"
|
||||||
#include "core/TaskItem.h"
|
#include "core/TaskItem.h"
|
||||||
|
@ -50,7 +51,7 @@ Backend::Backend() : todoView(&mirai)
|
||||||
for (const QJsonValueRef &filePath : jsonFilesPath.toArray()) {
|
for (const QJsonValueRef &filePath : jsonFilesPath.toArray()) {
|
||||||
cpputils::debug::Timer loadingFileDuration;
|
cpputils::debug::Timer loadingFileDuration;
|
||||||
auto fileResource =
|
auto fileResource =
|
||||||
std::make_unique<mirai::StdFileResource>(mirai::BaseFileResourceConstructor{
|
std::make_unique<mirai::AndroidFileResource>(mirai::BaseFileResourceConstructor{
|
||||||
.name = "[Can't load path]", .path = filePath.toString().toStdString()
|
.name = "[Can't load path]", .path = filePath.toString().toStdString()
|
||||||
});
|
});
|
||||||
mirai.loadResource(std::move(fileResource));
|
mirai.loadResource(std::move(fileResource));
|
||||||
|
@ -306,7 +307,7 @@ void Backend::saveFilesPath(QVariant modifiedFilesPath)
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
auto fileResource =
|
auto fileResource =
|
||||||
std::make_unique<mirai::StdFileResource>(mirai::BaseFileResourceConstructor{
|
std::make_unique<mirai::AndroidFileResource>(mirai::BaseFileResourceConstructor{
|
||||||
.name = "[Can't load path]", .path = path.toStdString()
|
.name = "[Can't load path]", .path = path.toStdString()
|
||||||
});
|
});
|
||||||
mirai.loadResource(std::move(fileResource));
|
mirai.loadResource(std::move(fileResource));
|
||||||
|
|
|
@ -25,9 +25,6 @@ class BaseFileResource : public BaseResource
|
||||||
|
|
||||||
BaseFileResource(BaseFileResource &) = delete;
|
BaseFileResource(BaseFileResource &) = delete;
|
||||||
BaseFileResource(BaseFileResource &&) = delete;
|
BaseFileResource(BaseFileResource &&) = delete;
|
||||||
BaseFileResource operator=(BaseFileResource &) = delete;
|
|
||||||
BaseFileResource operator=(BaseFileResource &&) = delete;
|
|
||||||
|
|
||||||
~BaseFileResource() override = default;
|
~BaseFileResource() override = default;
|
||||||
|
|
||||||
const std::string &getPath() const
|
const std::string &getPath() const
|
||||||
|
|
|
@ -21,8 +21,6 @@ class BaseResource
|
||||||
BaseResource(std::string name) : name(name){};
|
BaseResource(std::string name) : name(name){};
|
||||||
BaseResource(BaseResource &) = delete;
|
BaseResource(BaseResource &) = delete;
|
||||||
BaseResource(BaseResource &&) = delete;
|
BaseResource(BaseResource &&) = delete;
|
||||||
BaseResource operator=(BaseResource &) = delete;
|
|
||||||
BaseResource operator=(BaseResource &&) = delete;
|
|
||||||
|
|
||||||
virtual ~BaseResource() = default;
|
virtual ~BaseResource() = default;
|
||||||
virtual void save() = 0;
|
virtual void save() = 0;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue