1
0
mirror of https://gitlab.com/kelteseth/ScreenPlay.git synced 2024-11-22 10:42:29 +01:00

Fix installed list sorting because of missing LastModified

Fix ScreenPlayItem isNew location
This commit is contained in:
Elias Steurer 2021-08-29 12:19:28 +02:00
parent 3675170d06
commit a8152b5ab0
5 changed files with 61 additions and 70 deletions

View File

@ -17,24 +17,24 @@ Item {
property var publishedFileID: 0 property var publishedFileID: 0
property int itemIndex property int itemIndex
property bool isScrolling: false property bool isScrolling: false
property bool isNew:false property bool isNew: false
Component.onCompleted:print(isNew)
signal openContextMenu(point position) signal openContextMenu(point position)
width: 320 width: 320
height: 180 height: 180
onTypeChanged: { onTypeChanged: {
if (JSUtil.isWidget(type)) { if (JSUtil.isWidget(type)) {
icnType.source = "qrc:/assets/icons/icon_widgets.svg"; icnType.source = "qrc:/assets/icons/icon_widgets.svg"
return ; return
} }
if (JSUtil.isScene(type)) { if (JSUtil.isScene(type)) {
icnType.source = "qrc:/assets/icons/icon_code.svg"; icnType.source = "qrc:/assets/icons/icon_code.svg"
return ; return
} }
if (JSUtil.isVideo(type)) { if (JSUtil.isVideo(type)) {
icnType.source = "qrc:/assets/icons/icon_movie.svg"; icnType.source = "qrc:/assets/icons/icon_movie.svg"
return ; return
} }
} }
@ -42,11 +42,11 @@ Item {
running: true running: true
onTriggered: showAnim.start() onTriggered: showAnim.start()
interval: { interval: {
var itemIndexMax = itemIndex; var itemIndexMax = itemIndex
if (itemIndex > 30) if (itemIndex > 30)
itemIndexMax = 3; itemIndexMax = 3
5 * itemIndexMax * Math.random(); 5 * itemIndexMax * Math.random()
} }
} }
@ -79,7 +79,6 @@ Item {
duration: 200 duration: 200
easing.type: Easing.OutCirc easing.type: Easing.OutCirc
} }
} }
OpacityAnimator { OpacityAnimator {
@ -89,7 +88,6 @@ Item {
duration: 800 duration: 800
easing.type: Easing.OutCirc easing.type: Easing.OutCirc
} }
} }
RectangularGlow { RectangularGlow {
@ -108,7 +106,6 @@ Item {
top: parent.top top: parent.top
topMargin: 3 topMargin: 3
} }
} }
Item { Item {
@ -175,7 +172,6 @@ Item {
left: parent.left left: parent.left
margins: 10 margins: 10
} }
} }
Rectangle { Rectangle {
@ -188,26 +184,30 @@ Item {
left: parent.left left: parent.left
bottom: parent.bottom bottom: parent.bottom
} }
} }
Image { Image {
id: new_banner id: newBanner
source: "qrc:/assets/icons/item_banner_new.svg" source: "qrc:/assets/icons/item_banner_new.svg"
visible: root.isNew visible: root.isNew
Text Text {
{ font.family: ScreenPlay.settings.font
font.bold: true
font.family:"Helvetica";font.bold: true;font.pointSize:9.5; font.italic: true font.pointSize: 10
color: "#AAffffff" color: "white"
text: qsTr("NEW") text: qsTr("NEW")
anchors{ smooth: true
right: new_banner.right antialiasing: true
top: new_banner.TopLeft
}
transform: Rotation{ origin.y:12; angle:45}
visible: root.isNew visible: root.isNew
anchors {
right: newBanner.right
top: newBanner.top
rightMargin: 3
topMargin: 10
}
transform: Rotation {
angle: 45
}
} }
} }
} }
@ -223,25 +223,23 @@ Item {
cursorShape: Qt.PointingHandCursor cursorShape: Qt.PointingHandCursor
acceptedButtons: Qt.LeftButton | Qt.RightButton acceptedButtons: Qt.LeftButton | Qt.RightButton
onEntered: { onEntered: {
root.state = "hover"; root.state = "hover"
screenPlayItemImage.state = "hover"; screenPlayItemImage.state = "hover"
screenPlayItemImage.enter(); screenPlayItemImage.enter()
} }
onExited: { onExited: {
root.state = ""; root.state = ""
screenPlayItemImage.state = "loaded"; screenPlayItemImage.state = "loaded"
screenPlayItemImage.exit(); screenPlayItemImage.exit()
} }
onClicked: { onClicked: {
if (mouse.button === Qt.LeftButton) if (mouse.button === Qt.LeftButton)
ScreenPlay.util.setSidebarItem(root.screenId, root.type); ScreenPlay.util.setSidebarItem(root.screenId, root.type)
else if (mouse.button === Qt.RightButton) else if (mouse.button === Qt.RightButton)
root.openContextMenu(Qt.point(mouseX, mouseY)); root.openContextMenu(Qt.point(mouseX, mouseY))
} }
} }
} }
} }
transitions: [ transitions: [
@ -276,7 +274,6 @@ Item {
from: 0.6 from: 0.6
to: 1 to: 1
} }
}, },
Transition { Transition {
from: "hover" from: "hover"
@ -309,7 +306,6 @@ Item {
from: 1 from: 1
to: 0.5 to: 0.5
} }
} }
] ]
} }

View File

@ -1,6 +1,5 @@
#include "installedlistmodel.h" #include "installedlistmodel.h"
#include<QDebug> #include <QDebug>
namespace ScreenPlay { namespace ScreenPlay {
@ -115,12 +114,13 @@ QVariant InstalledListModel::data(const QModelIndex& index, int role) const
return m_screenPlayFiles.at(row).m_tags; return m_screenPlayFiles.at(row).m_tags;
case static_cast<int>(ScreenPlayItem::IsNew): case static_cast<int>(ScreenPlayItem::IsNew):
return m_screenPlayFiles.at(row).m_isNew; return m_screenPlayFiles.at(row).m_isNew;
case static_cast<int>(ScreenPlayItem::LastModified):
return m_screenPlayFiles.at(row).m_lastModified;
case static_cast<int>(ScreenPlayItem::SearchType): case static_cast<int>(ScreenPlayItem::SearchType):
return QVariant::fromValue(m_screenPlayFiles.at(row).m_searchType); return QVariant::fromValue(m_screenPlayFiles.at(row).m_searchType);
default:
return QVariant();
} }
qWarning() << "Unable to fetch value for row type:" << role;
return QVariant(); return QVariant();
} }
@ -140,18 +140,18 @@ QHash<int, QByteArray> InstalledListModel::roleNames() const
{ static_cast<int>(ScreenPlayItem::PublishedFileID), "m_publishedFileID" }, { static_cast<int>(ScreenPlayItem::PublishedFileID), "m_publishedFileID" },
{ static_cast<int>(ScreenPlayItem::Tags), "m_tags" }, { static_cast<int>(ScreenPlayItem::Tags), "m_tags" },
{ static_cast<int>(ScreenPlayItem::SearchType), "m_searchType" }, { static_cast<int>(ScreenPlayItem::SearchType), "m_searchType" },
{ static_cast<int>(ScreenPlayItem::IsNew), "m_isNew" } { static_cast<int>(ScreenPlayItem::IsNew), "m_isNew" },
{ static_cast<int>(ScreenPlayItem::LastModified), "m_lastModified" }
}; };
} }
/*! /*!
\brief Append an ProjectFile to the list. \brief Append an ProjectFile to the list.
*/ */
void InstalledListModel::append(const QJsonObject& obj, const QString& folderName, const bool isNew) void InstalledListModel::append(const QJsonObject& obj, const QString& folderName, const bool isNew, const QDateTime& lastModified)
{ {
beginInsertRows(QModelIndex(), m_screenPlayFiles.size(), m_screenPlayFiles.size()); beginInsertRows(QModelIndex(), m_screenPlayFiles.size(), m_screenPlayFiles.size());
m_screenPlayFiles.append(ProjectFile(obj, folderName, m_globalVariables->localStoragePath(), isNew)); m_screenPlayFiles.append(ProjectFile(obj, folderName, m_globalVariables->localStoragePath(), isNew, lastModified));
endInsertRows(); endInsertRows();
} }
@ -168,16 +168,12 @@ void InstalledListModel::loadInstalledContent()
const QString absoluteFilePath = m_globalVariables->localStoragePath().toLocalFile() + "/" + item.baseName() + "/project.json"; const QString absoluteFilePath = m_globalVariables->localStoragePath().toLocalFile() + "/" + item.baseName() + "/project.json";
if (!QFile::exists(absoluteFilePath)) if (!QFile::exists(absoluteFilePath))
continue; continue;
bool isNew=false;
QDateTime date=QDateTime::currentDateTime(); bool isNew = false;
qDebug()<<date.date();
if(item.birthTime().date()==date.date()) if (item.birthTime().date() == QDateTime::currentDateTime().date())
{ isNew = true;
qDebug()<<item.birthTime()<<date.date();
isNew=true;
qDebug()<<isNew;
}
if (auto obj = ScreenPlayUtil::openJsonFileToObject(absoluteFilePath)) { if (auto obj = ScreenPlayUtil::openJsonFileToObject(absoluteFilePath)) {
@ -189,15 +185,12 @@ void InstalledListModel::loadInstalledContent()
if (ScreenPlayUtil::getAvailableTypes().contains(obj->value("type").toString())) { if (ScreenPlayUtil::getAvailableTypes().contains(obj->value("type").toString())) {
if (ScreenPlayUtil::getAvailableTypes().contains(obj->value("type").toString(), Qt::CaseInsensitive)) { if (ScreenPlayUtil::getAvailableTypes().contains(obj->value("type").toString(), Qt::CaseInsensitive)) {
append(*obj, item.baseName(),isNew); append(*obj, item.baseName(), isNew, item.lastModified());
} }
counter += 1; counter += 1;
} }
} }
} }
setCount(counter); setCount(counter);
emit installedLoadingFinished(); emit installedLoadingFinished();
@ -224,7 +217,8 @@ QVariantMap InstalledListModel::get(const QString& folderId) const
map.insert("m_type", QVariant::fromValue(m_screenPlayFiles[i].m_type)); map.insert("m_type", QVariant::fromValue(m_screenPlayFiles[i].m_type));
map.insert("m_absoluteStoragePath", m_screenPlayFiles[i].m_absoluteStoragePath); map.insert("m_absoluteStoragePath", m_screenPlayFiles[i].m_absoluteStoragePath);
map.insert("m_publishedFileID", m_screenPlayFiles[i].m_publishedFileID); map.insert("m_publishedFileID", m_screenPlayFiles[i].m_publishedFileID);
map.insert("m_isNew",m_screenPlayFiles[i].m_isNew); map.insert("m_isNew", m_screenPlayFiles[i].m_isNew);
map.insert("m_lastModified", m_screenPlayFiles[i].m_lastModified);
return map; return map;
} }
} }

View File

@ -102,7 +102,7 @@ public slots:
QVariantMap get(const QString& folderId) const; QVariantMap get(const QString& folderId) const;
void loadInstalledContent(); void loadInstalledContent();
void append(const QJsonObject&, const QString&,const bool isNew); void append(const QJsonObject&, const QString&, const bool isNew, const QDateTime& lastModified);
void reset(); void reset();
void init(); void init();
bool deinstallItemAt(const int index); bool deinstallItemAt(const int index);

View File

@ -34,6 +34,7 @@
#pragma once #pragma once
#include <QDateTime>
#include <QDebug> #include <QDebug>
#include <QJsonArray> #include <QJsonArray>
#include <QJsonObject> #include <QJsonObject>
@ -42,7 +43,6 @@
#include <QUrl> #include <QUrl>
#include <QVariant> #include <QVariant>
#include <QVariantList> #include <QVariantList>
#include <QDateTime>
#include "ScreenPlayUtil/util.h" #include "ScreenPlayUtil/util.h"
@ -59,7 +59,8 @@ struct ProjectFile {
const QJsonObject& obj, const QJsonObject& obj,
const QString& folderName, const QString& folderName,
const QUrl& absolutePath, const QUrl& absolutePath,
const bool isNew) const bool isNew,
const QDateTime& lastModified)
{ {
if (obj.contains("description")) if (obj.contains("description"))
@ -101,8 +102,6 @@ struct ProjectFile {
m_folderId = folderName; m_folderId = folderName;
if (!obj.contains("type")) if (!obj.contains("type"))
return; return;
@ -118,6 +117,7 @@ struct ProjectFile {
} }
m_searchType = ScreenPlayUtil::getSearchTypeFromInstalledType(m_type); m_searchType = ScreenPlayUtil::getSearchTypeFromInstalledType(m_type);
m_isNew = isNew; m_isNew = isNew;
m_lastModified = lastModified;
} }
ProjectFile() { } ProjectFile() { }
@ -139,5 +139,6 @@ struct ProjectFile {
InstalledType::InstalledType m_type = InstalledType::InstalledType::Unknown; InstalledType::InstalledType m_type = InstalledType::InstalledType::Unknown;
SearchType::SearchType m_searchType = SearchType::SearchType::All; SearchType::SearchType m_searchType = SearchType::SearchType::All;
bool m_isNew = false; bool m_isNew = false;
QDateTime m_lastModified;
}; };
} }

View File

@ -82,7 +82,7 @@ QHash<int, QByteArray> InstalledListModel::roleNames() const
void InstalledListModel::append(const QJsonObject& obj, const QString& folderName, const QDateTime& lastModified) void InstalledListModel::append(const QJsonObject& obj, const QString& folderName, const QDateTime& lastModified)
{ {
beginInsertRows(QModelIndex(), m_screenPlayFiles.size(), m_screenPlayFiles.size()); beginInsertRows(QModelIndex(), m_screenPlayFiles.size(), m_screenPlayFiles.size());
m_screenPlayFiles.append(ScreenPlay::ProjectFile(obj, folderName, m_absoluteStoragePath, lastModified)); m_screenPlayFiles.append(ScreenPlay::ProjectFile(obj, folderName, m_absoluteStoragePath, false, lastModified));
endInsertRows(); endInsertRows();
} }