mirror of
https://codeberg.org/vyn/mirai.git
synced 2025-07-02 01:13: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/Tag.h src/Tag.cpp
|
||||
src/TasksFile.h src/TasksFile.cpp
|
||||
src/AndroidFileResource.h
|
||||
RESOURCES
|
||||
src/images/calendar.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 "AndroidFileResource.h"
|
||||
#include "TaskItem.h"
|
||||
#include "core/StdFileResource.h"
|
||||
#include "core/TaskItem.h"
|
||||
|
@ -50,7 +51,7 @@ Backend::Backend() : todoView(&mirai)
|
|||
for (const QJsonValueRef &filePath : jsonFilesPath.toArray()) {
|
||||
cpputils::debug::Timer loadingFileDuration;
|
||||
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()
|
||||
});
|
||||
mirai.loadResource(std::move(fileResource));
|
||||
|
@ -306,7 +307,7 @@ void Backend::saveFilesPath(QVariant modifiedFilesPath)
|
|||
continue;
|
||||
}
|
||||
auto fileResource =
|
||||
std::make_unique<mirai::StdFileResource>(mirai::BaseFileResourceConstructor{
|
||||
std::make_unique<mirai::AndroidFileResource>(mirai::BaseFileResourceConstructor{
|
||||
.name = "[Can't load path]", .path = path.toStdString()
|
||||
});
|
||||
mirai.loadResource(std::move(fileResource));
|
||||
|
|
|
@ -25,9 +25,6 @@ class BaseFileResource : public BaseResource
|
|||
|
||||
BaseFileResource(BaseFileResource &) = delete;
|
||||
BaseFileResource(BaseFileResource &&) = delete;
|
||||
BaseFileResource operator=(BaseFileResource &) = delete;
|
||||
BaseFileResource operator=(BaseFileResource &&) = delete;
|
||||
|
||||
~BaseFileResource() override = default;
|
||||
|
||||
const std::string &getPath() const
|
||||
|
|
|
@ -21,8 +21,6 @@ class BaseResource
|
|||
BaseResource(std::string name) : name(name){};
|
||||
BaseResource(BaseResource &) = delete;
|
||||
BaseResource(BaseResource &&) = delete;
|
||||
BaseResource operator=(BaseResource &) = delete;
|
||||
BaseResource operator=(BaseResource &&) = delete;
|
||||
|
||||
virtual ~BaseResource() = default;
|
||||
virtual void save() = 0;
|
||||
|
|
|
@ -10,13 +10,13 @@ import QtQuick.Controls
|
|||
import Mirai
|
||||
|
||||
TextField {
|
||||
color: MiraiColorPalette.text
|
||||
placeholderTextColor: MiraiColorPalette.textPlaceholder
|
||||
leftPadding: 10
|
||||
implicitHeight: 32
|
||||
color: MiraiColorPalette.text
|
||||
placeholderTextColor: MiraiColorPalette.textPlaceholder
|
||||
leftPadding: 10
|
||||
implicitHeight: 32
|
||||
|
||||
background: Rectangle {
|
||||
color: MiraiColorPalette.fieldBackground
|
||||
radius: 4
|
||||
}
|
||||
background: Rectangle {
|
||||
color: MiraiColorPalette.fieldBackground
|
||||
radius: 4
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue