some prelim enum stuff in service_item_model
This commit is contained in:
parent
eef6d6d15a
commit
ee9c1e82f4
1 changed files with 59 additions and 17 deletions
|
@ -43,6 +43,15 @@ mod service_item_model {
|
||||||
Id,
|
Id,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[qenum]
|
||||||
|
#[namespace = "Item"]
|
||||||
|
enum ItemType {
|
||||||
|
Song,
|
||||||
|
Video,
|
||||||
|
Image,
|
||||||
|
Presentation,
|
||||||
|
}
|
||||||
|
|
||||||
unsafe extern "RustQt" {
|
unsafe extern "RustQt" {
|
||||||
#[qobject]
|
#[qobject]
|
||||||
#[base = "QAbstractListModel"]
|
#[base = "QAbstractListModel"]
|
||||||
|
@ -119,7 +128,7 @@ mod service_item_model {
|
||||||
fn add_item(
|
fn add_item(
|
||||||
self: Pin<&mut ServiceItemModel>,
|
self: Pin<&mut ServiceItemModel>,
|
||||||
name: QString,
|
name: QString,
|
||||||
ty: QString,
|
ty: ItemType,
|
||||||
background: QString,
|
background: QString,
|
||||||
background_type: QString,
|
background_type: QString,
|
||||||
text: QStringList,
|
text: QStringList,
|
||||||
|
@ -139,7 +148,7 @@ mod service_item_model {
|
||||||
index: i32,
|
index: i32,
|
||||||
name: QString,
|
name: QString,
|
||||||
text: QStringList,
|
text: QStringList,
|
||||||
ty: QString,
|
ty: ItemType,
|
||||||
background: QString,
|
background: QString,
|
||||||
background_type: QString,
|
background_type: QString,
|
||||||
audio: QString,
|
audio: QString,
|
||||||
|
@ -294,7 +303,7 @@ use crate::obs::Obs;
|
||||||
use crate::service_item_model::service_item_model::QList_QString;
|
use crate::service_item_model::service_item_model::QList_QString;
|
||||||
use cxx_qt::{CxxQtType, Threading};
|
use cxx_qt::{CxxQtType, Threading};
|
||||||
use cxx_qt_lib::{
|
use cxx_qt_lib::{
|
||||||
QByteArray, QModelIndex, QString, QStringList, QUrl, QVariant,
|
QByteArray, QModelIndex, QString, QStringList, QUrl, QVariant, QVariantValue,
|
||||||
};
|
};
|
||||||
use dirs;
|
use dirs;
|
||||||
use serde_json::{json, Value};
|
use serde_json::{json, Value};
|
||||||
|
@ -308,18 +317,33 @@ use tar::{Archive, Builder};
|
||||||
use tracing::{debug, error};
|
use tracing::{debug, error};
|
||||||
use zstd::{Decoder, Encoder};
|
use zstd::{Decoder, Encoder};
|
||||||
use self::service_item_model::{
|
use self::service_item_model::{
|
||||||
QHash_i32_QByteArray, QMap_QString_QVariant, QVector_i32,
|
ItemType, QHash_i32_QByteArray, QMap_QString_QVariant, QVector_i32, ServiceRoles
|
||||||
ServiceRoles,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
use super::service_item_model::service_item_model::ServiceItemModel;
|
use super::service_item_model::service_item_model::ServiceItemModel;
|
||||||
|
|
||||||
#[derive(Clone, Debug)]
|
impl std::fmt::Debug for ItemType {
|
||||||
pub enum ItemType {
|
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||||
Song,
|
match self {
|
||||||
Video,
|
&ItemType::Song => write!(f, "Song"),
|
||||||
Image,
|
&ItemType::Image => write!(f, "Image"),
|
||||||
Presentation,
|
&ItemType::Video => write!(f, "Video"),
|
||||||
|
&ItemType::Presentation => write!(f, "Presentation"),
|
||||||
|
_ => write!(f, "Unknown"),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl std::fmt::Display for ItemType {
|
||||||
|
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||||
|
match self {
|
||||||
|
&ItemType::Song => write!(f, "Song"),
|
||||||
|
&ItemType::Image => write!(f, "Image"),
|
||||||
|
&ItemType::Video => write!(f, "Video"),
|
||||||
|
&ItemType::Presentation => write!(f, "Presentation"),
|
||||||
|
_ => write!(f, "Unknown"),
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Clone, Debug)]
|
#[derive(Clone, Debug)]
|
||||||
|
@ -449,7 +473,7 @@ impl service_item_model::ServiceItemModel {
|
||||||
pub fn add_item(
|
pub fn add_item(
|
||||||
mut self: Pin<&mut Self>,
|
mut self: Pin<&mut Self>,
|
||||||
name: QString,
|
name: QString,
|
||||||
ty: QString,
|
ty: ItemType,
|
||||||
background: QString,
|
background: QString,
|
||||||
background_type: QString,
|
background_type: QString,
|
||||||
text: QStringList,
|
text: QStringList,
|
||||||
|
@ -509,7 +533,7 @@ impl service_item_model::ServiceItemModel {
|
||||||
index: i32,
|
index: i32,
|
||||||
name: QString,
|
name: QString,
|
||||||
text: QStringList,
|
text: QStringList,
|
||||||
ty: QString,
|
ty: ItemType,
|
||||||
background: QString,
|
background: QString,
|
||||||
background_type: QString,
|
background_type: QString,
|
||||||
audio: QString,
|
audio: QString,
|
||||||
|
@ -1209,9 +1233,18 @@ impl service_item_model::ServiceItemModel {
|
||||||
let name = QString::from(
|
let name = QString::from(
|
||||||
obj.get("name").unwrap().as_str().unwrap(),
|
obj.get("name").unwrap().as_str().unwrap(),
|
||||||
);
|
);
|
||||||
let ty = QString::from(
|
let ty =
|
||||||
obj.get("type").unwrap().as_str().unwrap(),
|
obj.get("type").unwrap().as_str().unwrap();
|
||||||
);
|
let ty = match ty.to_lowercase().as_str() {
|
||||||
|
"image" => ItemType::Image,
|
||||||
|
"song" => ItemType::Song,
|
||||||
|
"video" => ItemType::Video,
|
||||||
|
"presentation" => ItemType::Presentation,
|
||||||
|
other => {
|
||||||
|
error!("ItemType doesn't match: {}", other);
|
||||||
|
ItemType::Image
|
||||||
|
},
|
||||||
|
};
|
||||||
// both audio and background will need to know if
|
// both audio and background will need to know if
|
||||||
// it exists on disk, if not use the flat version
|
// it exists on disk, if not use the flat version
|
||||||
let audio_string =
|
let audio_string =
|
||||||
|
@ -1397,7 +1430,16 @@ impl service_item_model::ServiceItemModel {
|
||||||
QVariant::from(&service_item.name)
|
QVariant::from(&service_item.name)
|
||||||
}
|
}
|
||||||
ServiceRoles::Type => {
|
ServiceRoles::Type => {
|
||||||
QVariant::from(&service_item.ty)
|
match &service_item.ty {
|
||||||
|
&ItemType::Image => QVariant::from(&QString::from("Image")),
|
||||||
|
&ItemType::Song => QVariant::from(&QString::from("Song")),
|
||||||
|
&ItemType::Video => QVariant::from(&QString::from("Video")),
|
||||||
|
&ItemType::Presentation => QVariant::from(&QString::from("Presentation")),
|
||||||
|
other => {
|
||||||
|
error!("{:?} is not a proper variant.", other);
|
||||||
|
QVariant::from(&QString::from(""))
|
||||||
|
},
|
||||||
|
}
|
||||||
}
|
}
|
||||||
ServiceRoles::Audio => {
|
ServiceRoles::Audio => {
|
||||||
QVariant::from(&service_item.audio)
|
QVariant::from(&service_item.audio)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue