From 20b9f2b42a3b58b6081af271774fbcc34025dccb Mon Sep 17 00:00:00 2001 From: Petr Mrázek Date: Sun, 25 Jul 2021 19:11:59 +0200 Subject: NOISSUE Flatten gui and logic libraries into MultiMC --- launcher/meta/BaseEntity.h | 67 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 launcher/meta/BaseEntity.h (limited to 'launcher/meta/BaseEntity.h') diff --git a/launcher/meta/BaseEntity.h b/launcher/meta/BaseEntity.h new file mode 100644 index 00000000..eff43879 --- /dev/null +++ b/launcher/meta/BaseEntity.h @@ -0,0 +1,67 @@ +/* Copyright 2015-2021 MultiMC Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#pragma once + +#include +#include +#include "QObjectPtr.h" + +#include "net/Mode.h" + +class Task; +namespace Meta +{ +class BaseEntity +{ +public: /* types */ + using Ptr = std::shared_ptr; + enum class LoadStatus + { + NotLoaded, + Local, + Remote + }; + enum class UpdateStatus + { + NotDone, + InProgress, + Failed, + Succeeded + }; + +public: + virtual ~BaseEntity(); + + virtual void parse(const QJsonObject &obj) = 0; + + virtual QString localFilename() const = 0; + virtual QUrl url() const; + + bool isLoaded() const; + bool shouldStartRemoteUpdate() const; + + void load(Net::Mode loadType); + shared_qobject_ptr getCurrentTask(); + +protected: /* methods */ + bool loadLocalFile(); + +private: + LoadStatus m_loadStatus = LoadStatus::NotLoaded; + UpdateStatus m_updateStatus = UpdateStatus::NotDone; + shared_qobject_ptr m_updateTask; +}; +} -- cgit