Merge branch 'work/redstrate/android' into 'master'
Draft: Android port See merge request redstrate/sukai!1
This commit is contained in:
commit
f968b092ef
7 changed files with 66 additions and 8 deletions
43
CMakeLists.txt
Normal file
43
CMakeLists.txt
Normal file
|
@ -0,0 +1,43 @@
|
|||
cmake_minimum_required(VERSION 3.19)
|
||||
project(Sukai)
|
||||
|
||||
set(CMAKE_AUTOMOC ON)
|
||||
set(CMAKE_CXX_STANDARD 20)
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
|
||||
find_package(ECM ${KF_MIN_VERSION} NO_MODULE REQUIRED)
|
||||
set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH} ${CMAKE_SOURCE_DIR}/cmake)
|
||||
|
||||
find_package(Qt6 COMPONENTS Core Gui Qml QuickControls2 QuickTest Test Widgets Quick Network REQUIRED)
|
||||
find_package(KF6CoreAddons REQUIRED)
|
||||
find_package(OpenSSL REQUIRED)
|
||||
|
||||
find_package(CxxQt QUIET)
|
||||
if(NOT CxxQt_FOUND)
|
||||
include(FetchContent)
|
||||
FetchContent_Declare(
|
||||
CxxQt
|
||||
GIT_REPOSITORY https://github.com/kdab/cxx-qt-cmake.git
|
||||
GIT_TAG main
|
||||
)
|
||||
|
||||
FetchContent_MakeAvailable(CxxQt)
|
||||
endif()
|
||||
|
||||
# Needed for Craft Android, otherwise it tries to use native tooling which is wrong
|
||||
#get_target_property(QMAKE_PATH Qt::qmake LOCATION)
|
||||
set(QMAKE_PATH "/home/user/CraftRoot/build/libs/qt6/qtbase/image-MinSizeRel-6.8.0/bin/qmake")
|
||||
message("Using ${QMAKE_PATH}")
|
||||
|
||||
cxx_qt_import_crate(
|
||||
MANIFEST_PATH Cargo.toml
|
||||
CRATES Sukai
|
||||
QT_MODULES Qt::Core Qt::Gui Qt::Qml Qt::QuickControls2 Qt::Widgets Qt::Quick Qt::Network
|
||||
QMAKE ${QMAKE_PATH})
|
||||
|
||||
cxx_qt_import_qml_module(sukai_module
|
||||
URI "com.redstrate.sukai"
|
||||
SOURCE_CRATE Sukai)
|
||||
|
||||
add_executable(sukai cpp/main.cpp)
|
||||
target_link_libraries(sukai PRIVATE sukai_module OpenSSL::Crypto OpenSSL::SSL)
|
11
Cargo.toml
11
Cargo.toml
|
@ -3,14 +3,17 @@ name = "Sukai"
|
|||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
|
||||
[lib]
|
||||
crate-type = ["staticlib"]
|
||||
|
||||
[build-dependencies]
|
||||
cxx-qt-build = { git = "https://github.com/redstrate/cxx-qt", branch = "work/josh/add-qdatetime-from-string"}
|
||||
cxx-qt-build = { git = "https://github.com/redstrate/cxx-qt", branch = "work/josh/cmake-qt-modules" }
|
||||
|
||||
[dependencies]
|
||||
cxx = "1.0.121"
|
||||
cxx-qt = { git = "https://github.com/redstrate/cxx-qt", branch = "work/josh/add-qdatetime-from-string" }
|
||||
cxx-qt-lib = { git = "https://github.com/redstrate/cxx-qt", branch = "work/josh/add-qdatetime-from-string", features = ["qt_qml", "serde", "qt_gui", "qt_quickcontrols"] }
|
||||
cxx-kde-frameworks = { path = "/home/josh/sources/cxx-kde-frameworks" }
|
||||
cxx-qt = { git = "https://github.com/redstrate/cxx-qt", branch = "work/josh/cmake-qt-modules" }
|
||||
cxx-qt-lib = { git = "https://github.com/redstrate/cxx-qt", branch = "work/josh/cmake-qt-modules", features = ["qt_qml", "serde", "qt_gui", "qt_quickcontrols"] }
|
||||
cxx-kde-frameworks = { git = "https://invent.kde.org/libraries/cxx-kde-frameworks", branch = "work/redstrate/cmake-qt-modules" }
|
||||
serde_json = "1.0"
|
||||
serde = { version = "1.0", features = ["derive"] }
|
||||
tokio = "1.41.1"
|
||||
|
|
3
build.rs
3
build.rs
|
@ -7,6 +7,9 @@ fn main() {
|
|||
CxxQtBuilder::new()
|
||||
.qt_module("Quick")
|
||||
.qt_module("Network")
|
||||
// TODO: why are these needed explicitly on Android?
|
||||
.qt_module("Qml")
|
||||
.qt_module("QuickControls2")
|
||||
.qml_module(QmlModule::<&str, &str> {
|
||||
uri: "com.redstrate.sukai.models",
|
||||
rust_files: &["src/models/timelinemodel.rs"],
|
||||
|
|
3
cpp/main.cpp
Normal file
3
cpp/main.cpp
Normal file
|
@ -0,0 +1,3 @@
|
|||
int main(int argc, char *argv[]) {
|
||||
return 0;
|
||||
}
|
5
src/lib.rs
Normal file
5
src/lib.rs
Normal file
|
@ -0,0 +1,5 @@
|
|||
mod accountmanager;
|
||||
mod entities;
|
||||
mod models;
|
||||
mod navigation;
|
||||
mod serde_utilities;
|
|
@ -56,7 +56,7 @@ fn main() {
|
|||
.as_mut()
|
||||
.load(&QUrl::from("qrc:/qt/qml/com/redstrate/sukai/ui/Main.qml"));
|
||||
|
||||
unsafe {
|
||||
/*unsafe {
|
||||
let account_manager = engine
|
||||
.singleton_instance::<AccountManager>(
|
||||
QAnyStringView::from("com.redstrate.sukai"),
|
||||
|
@ -65,7 +65,7 @@ fn main() {
|
|||
.unwrap();
|
||||
let mut pin: Pin<&mut AccountManager> = Pin::new_unchecked(account_manager);
|
||||
pin.as_mut().load_from_settings();
|
||||
}
|
||||
}*/
|
||||
}
|
||||
|
||||
if let Some(app) = app.as_mut() {
|
||||
|
|
|
@ -28,7 +28,8 @@ where
|
|||
D: Deserializer<'de>,
|
||||
{
|
||||
let s = QString::deserialize(deserializer)?;
|
||||
Ok(QDateTime::from_string(&s, DateFormat::ISODate).unwrap())
|
||||
//Ok(QDateTime::from_string(&s, DateFormat::ISODate).unwrap())
|
||||
Ok(QDateTime::default())
|
||||
}
|
||||
|
||||
pub fn parse_datetime_optional<'de, D>(deserializer: D) -> Result<Option<QDateTime>, D::Error>
|
||||
|
|
Reference in a new issue