Init
This commit is contained in:
+1
-1
@@ -103,7 +103,7 @@ QPixmap cImageList::get(cImage::MEDIATYPE mediaType, cImage::TYPE type, qint32 i
|
||||
return(QPixmap());
|
||||
}
|
||||
|
||||
QPixmap cImage::downloadFile(const QString& szFileName)
|
||||
QPixmap cImage::downloadFile(const QString& /*szFileName*/)
|
||||
{
|
||||
QPixmap pixmap;
|
||||
|
||||
|
||||
@@ -76,7 +76,9 @@ bool cKodiLibrary::init()
|
||||
|
||||
m_lpKodiTexturesLibrary = new cKodiTexturesLibrary(m_szTextures);
|
||||
if(m_lpKodiTexturesLibrary->init() != -1)
|
||||
{
|
||||
;
|
||||
}
|
||||
|
||||
m_lpImageList = new cImageList(m_lpKodiVideoLibrary, m_lpKodiTexturesLibrary, m_szPath);
|
||||
|
||||
|
||||
@@ -61,6 +61,28 @@ qint16 cKodiVideoLibrary::version()
|
||||
}
|
||||
|
||||
qint32 cKodiVideoLibrary::load()
|
||||
{
|
||||
loadActors();
|
||||
return(loadVideos());
|
||||
}
|
||||
|
||||
qint32 cKodiVideoLibrary::loadActors()
|
||||
{
|
||||
QSqlQuery query(m_db);
|
||||
|
||||
query.exec("SELECT actor_id, name, art_urls FROM actor ORDER BY name;");
|
||||
while(query.next())
|
||||
{
|
||||
m_videosActorList.add(
|
||||
query.value("actor_id").toInt(),
|
||||
query.value("name").toString(),
|
||||
query.value("art_urls").toString());
|
||||
|
||||
}
|
||||
return(m_videosActorList.count());
|
||||
}
|
||||
|
||||
qint32 cKodiVideoLibrary::loadVideos()
|
||||
{
|
||||
QSqlQuery query(m_db);
|
||||
|
||||
@@ -200,3 +222,11 @@ void cKodiVideoLibrary::fillVideoList(QStandardItemModel* lpModel)
|
||||
lpModel->appendRow(lpItem);
|
||||
}
|
||||
}
|
||||
|
||||
void cKodiVideoLibrary::fillActorList(QTreeWidget* lpList, cMyVideos* lpVideos)
|
||||
{
|
||||
lpList->clear();
|
||||
|
||||
lpVideos->loadActors(m_db, m_videosActorList);
|
||||
lpVideos->fillActorsList(lpList);
|
||||
}
|
||||
|
||||
+16
-10
@@ -9,6 +9,7 @@
|
||||
#include <QStatusBar>
|
||||
|
||||
#include <QStandardItemModel>
|
||||
#include <QTreeWidget>
|
||||
|
||||
|
||||
class cKodiVideoLibrary
|
||||
@@ -17,20 +18,25 @@ public:
|
||||
cKodiVideoLibrary(const QString& szFileName);
|
||||
~cKodiVideoLibrary();
|
||||
|
||||
qint16 init();
|
||||
qint16 version();
|
||||
qint16 init();
|
||||
qint16 version();
|
||||
|
||||
qint32 load();
|
||||
bool art(const QString& szMediaType, const QString& szType, qint32 idMovie, qint32& artID, QString& szURL);
|
||||
qint32 load();
|
||||
bool art(const QString& szMediaType, const QString& szType, qint32 idMovie, qint32& artID, QString& szURL);
|
||||
|
||||
void fillVideoList(QStandardItemModel* lpModel);
|
||||
void fillVideoList(QStandardItemModel* lpModel);
|
||||
void fillActorList(QTreeWidget* lpList, cMyVideos* lpVideos);
|
||||
private:
|
||||
QSqlDatabase m_db;
|
||||
QString m_szFileName;
|
||||
bool m_bConnected;
|
||||
qint16 m_iVersion;
|
||||
QSqlDatabase m_db;
|
||||
QString m_szFileName;
|
||||
bool m_bConnected;
|
||||
qint16 m_iVersion;
|
||||
|
||||
cMyVideosList m_videosList;
|
||||
cMyVideosActorList m_videosActorList;
|
||||
cMyVideosList m_videosList;
|
||||
|
||||
qint32 loadActors();
|
||||
qint32 loadVideos();
|
||||
};
|
||||
|
||||
#endif // CKODIVIDEOLIBRARY_H
|
||||
|
||||
+196
@@ -1,5 +1,172 @@
|
||||
#include "cmyvideos.h"
|
||||
|
||||
#include <QSqlQuery>
|
||||
#include <QTreeWidgetItem>
|
||||
|
||||
|
||||
cMyVideosActorValues::cMyVideosActorValues() :
|
||||
m_actorID(-1),
|
||||
m_szName("UNSET"),
|
||||
m_szArtURLs("UNSET")
|
||||
{
|
||||
}
|
||||
|
||||
cMyVideosActorValues::cMyVideosActorValues(qint32 actorID, const QString& szName, const QString& szArtURLs) :
|
||||
m_actorID(actorID),
|
||||
m_szName(szName),
|
||||
m_szArtURLs(szArtURLs)
|
||||
{
|
||||
}
|
||||
|
||||
void cMyVideosActorValues::set(qint32 actorID, const QString& szName, const QString& szArtURLs)
|
||||
{
|
||||
m_actorID = actorID;
|
||||
m_szName = szName;
|
||||
m_szArtURLs = szArtURLs;
|
||||
}
|
||||
|
||||
inline bool cMyVideosActorValues::operator==(const cMyVideosActorValues b) const
|
||||
{
|
||||
if(m_actorID != b.m_actorID) return(false);
|
||||
if(m_szName != b.m_szName) return(false);
|
||||
if(m_szArtURLs != b.m_szArtURLs) return(false);
|
||||
return(true);
|
||||
}
|
||||
|
||||
inline bool cMyVideosActorValues::operator!=(const cMyVideosActorValues b) const
|
||||
{
|
||||
if(m_actorID != b.m_actorID
|
||||
|| m_szName != b.m_szName
|
||||
|| m_szArtURLs != b.m_szArtURLs)
|
||||
return(true);
|
||||
return(false);
|
||||
}
|
||||
|
||||
cMyVideosActor::cMyVideosActor(qint32 actorID, const QString& szName, const QString& szArtUrls) :
|
||||
m_values(actorID, szName, szArtUrls)
|
||||
{
|
||||
m_oValues = m_values;
|
||||
}
|
||||
|
||||
qint32 cMyVideosActor::actorID()
|
||||
{
|
||||
return(m_values.m_actorID);
|
||||
}
|
||||
|
||||
QString cMyVideosActor::name()
|
||||
{
|
||||
return(m_values.m_szName);
|
||||
}
|
||||
|
||||
QString cMyVideosActor::szArtURLs()
|
||||
{
|
||||
return(m_values.m_szArtURLs);
|
||||
}
|
||||
|
||||
bool cMyVideosActor::isNew()
|
||||
{
|
||||
if(m_values.m_actorID == -1)
|
||||
return(true);
|
||||
return(false);
|
||||
}
|
||||
|
||||
bool cMyVideosActor::isChanged()
|
||||
{
|
||||
if(m_values != m_oValues)
|
||||
return(true);
|
||||
return(false);
|
||||
}
|
||||
|
||||
cMyVideosActorList::cMyVideosActorList()
|
||||
{
|
||||
}
|
||||
|
||||
cMyVideosActor* cMyVideosActorList::add(qint32 actorID, const QString& szName, const QString& szArtURLs)
|
||||
{
|
||||
cMyVideosActor* lpNew = new cMyVideosActor(actorID, szName, szArtURLs);
|
||||
append(lpNew);
|
||||
return(lpNew);
|
||||
}
|
||||
|
||||
cMyVideosActor* cMyVideosActorList::find(qint32 actorID)
|
||||
{
|
||||
for(int z = 0;z < count();z++)
|
||||
{
|
||||
if(at(z)->actorID() == actorID)
|
||||
return(at(z));
|
||||
}
|
||||
return(0);
|
||||
}
|
||||
|
||||
cMyVideosActorLinkValues::cMyVideosActorLinkValues() :
|
||||
m_lpActor(0),
|
||||
m_szRole("UNSET"),
|
||||
m_castOrder(-1)
|
||||
{
|
||||
}
|
||||
|
||||
cMyVideosActorLinkValues::cMyVideosActorLinkValues(cMyVideosActor* lpActor, const QString& szRole, qint32 castOrder) :
|
||||
m_lpActor(lpActor),
|
||||
m_szRole(szRole),
|
||||
m_castOrder(castOrder)
|
||||
{
|
||||
}
|
||||
|
||||
void cMyVideosActorLinkValues::set(cMyVideosActor* lpActor, const QString& szRole, qint32 castOrder)
|
||||
{
|
||||
m_lpActor = lpActor;
|
||||
m_szRole = szRole;
|
||||
m_castOrder = castOrder;
|
||||
}
|
||||
|
||||
inline bool cMyVideosActorLinkValues::operator==(const cMyVideosActorLinkValues b) const
|
||||
{
|
||||
if(m_lpActor != b.m_lpActor) return(false);
|
||||
if(m_szRole != b.m_szRole) return(false);
|
||||
if(m_castOrder != b.m_castOrder) return(false);
|
||||
return(true);
|
||||
}
|
||||
|
||||
inline bool cMyVideosActorLinkValues::operator!=(const cMyVideosActorLinkValues b) const
|
||||
{
|
||||
if(m_lpActor != b.m_lpActor
|
||||
|| m_szRole != b.m_szRole
|
||||
|| m_castOrder != b.m_castOrder)
|
||||
return(true);
|
||||
return(false);
|
||||
}
|
||||
|
||||
cMyVideosActorLink::cMyVideosActorLink(cMyVideosActor *lpActor, const QString& szRole, qint32 cast_order) :
|
||||
m_values(lpActor, szRole, cast_order)
|
||||
{
|
||||
m_oValues = m_values;
|
||||
}
|
||||
|
||||
cMyVideosActor* cMyVideosActorLink::actor()
|
||||
{
|
||||
return(m_values.m_lpActor);
|
||||
}
|
||||
|
||||
QString cMyVideosActorLink::role()
|
||||
{
|
||||
return(m_values.m_szRole);
|
||||
}
|
||||
|
||||
qint32 cMyVideosActorLink::castOrder()
|
||||
{
|
||||
return(m_values.m_castOrder);
|
||||
}
|
||||
|
||||
cMyVideosActorLinkList::cMyVideosActorLinkList()
|
||||
{
|
||||
}
|
||||
|
||||
cMyVideosActorLink* cMyVideosActorLinkList::add(cMyVideosActor *lpActor, const QString& szRole, qint32 cast_order)
|
||||
{
|
||||
cMyVideosActorLink* lpNew = new cMyVideosActorLink(lpActor, szRole, cast_order);
|
||||
append(lpNew);
|
||||
return(lpNew);
|
||||
}
|
||||
|
||||
cMyVideosValues::cMyVideosValues() :
|
||||
m_idMovie(-1), m_idFile(-1), m_szLocalMovieTitle("UNSET"), m_szMoviePlot("UNSET"), m_szMoviePlotOutline("UNSET"),
|
||||
@@ -198,6 +365,35 @@ cMyVideos* cMyVideosList::add(qint32 idMovie, qint32 idFile, const QString& szLo
|
||||
return(lpNew);
|
||||
}
|
||||
|
||||
void cMyVideos::loadActors(QSqlDatabase& m_db, cMyVideosActorList videosActorList)
|
||||
{
|
||||
if(m_values.m_actors.count())
|
||||
return;
|
||||
|
||||
QSqlQuery query(m_db);
|
||||
query.exec(QString("SELECT actor_id, role, cast_order FROM actor_link WHERE media_id=%1 AND media_type='movie' ORDER BY cast_order;").arg(m_values.m_idMovie));
|
||||
while(query.next())
|
||||
{
|
||||
cMyVideosActor* lpActor = videosActorList.find(query.value("actor_id").toInt());
|
||||
if(lpActor)
|
||||
m_values.m_actors.add(lpActor, query.value("role").toString(), query.value("cast_order").toInt());
|
||||
}
|
||||
m_oValues.m_actors = m_values.m_actors;
|
||||
}
|
||||
|
||||
void cMyVideos::fillActorsList(QTreeWidget* lpWidget)
|
||||
{
|
||||
for(int z = 0;z < m_values.m_actors.count();z++)
|
||||
{
|
||||
QTreeWidgetItem* lpItem = new QTreeWidgetItem(lpWidget);
|
||||
lpItem->setText(0, m_values.m_actors.at(z)->actor()->name());
|
||||
lpItem->setText(1, m_values.m_actors.at(z)->role());
|
||||
lpWidget->addTopLevelItem(lpItem);
|
||||
}
|
||||
lpWidget->resizeColumnToContents(0);
|
||||
lpWidget->resizeColumnToContents(1);
|
||||
}
|
||||
|
||||
qint32 cMyVideos::idMovie()
|
||||
{
|
||||
return(m_values.m_idMovie);
|
||||
|
||||
+99
@@ -7,6 +7,17 @@
|
||||
#include <QList>
|
||||
#include <QMetaType>
|
||||
|
||||
#include <QSqlDatabase>
|
||||
#include <QTreeWidget>
|
||||
|
||||
|
||||
enum STATE
|
||||
{
|
||||
STATE_unknown = 0,
|
||||
STATE_original = 1,
|
||||
STATE_new = 2,
|
||||
STATE_deleted = 3,
|
||||
};
|
||||
|
||||
typedef struct tagSTRING2
|
||||
{
|
||||
@@ -14,6 +25,90 @@ typedef struct tagSTRING2
|
||||
QString _2;
|
||||
} STRING2;
|
||||
|
||||
class cMyVideosActorValues
|
||||
{
|
||||
public:
|
||||
cMyVideosActorValues();
|
||||
cMyVideosActorValues(qint32 actorID, const QString& szName, const QString& szArtURLs);
|
||||
|
||||
void set(qint32 actorID, const QString& szName, const QString& szArtURLs);
|
||||
|
||||
inline bool operator==(const cMyVideosActorValues b) const;
|
||||
inline bool operator!=(const cMyVideosActorValues b) const;
|
||||
|
||||
qint32 m_actorID;
|
||||
QString m_szName;
|
||||
QString m_szArtURLs;
|
||||
};
|
||||
|
||||
class cMyVideosActor
|
||||
{
|
||||
public:
|
||||
cMyVideosActor(qint32 actorID, const QString& szName, const QString& szArtUrls);
|
||||
|
||||
qint32 actorID();
|
||||
QString name();
|
||||
QString szArtURLs();
|
||||
|
||||
bool isNew();
|
||||
bool isChanged();
|
||||
private:
|
||||
cMyVideosActorValues m_values;
|
||||
cMyVideosActorValues m_oValues;
|
||||
};
|
||||
|
||||
Q_DECLARE_METATYPE(cMyVideosActor*)
|
||||
|
||||
class cMyVideosActorList : public QList<cMyVideosActor*>
|
||||
{
|
||||
public:
|
||||
cMyVideosActorList();
|
||||
cMyVideosActor* add(qint32 actorID, const QString& szName, const QString& szArtURLs);
|
||||
cMyVideosActor* find(qint32 actorID);
|
||||
private:
|
||||
};
|
||||
|
||||
class cMyVideosActorLinkValues
|
||||
{
|
||||
public:
|
||||
cMyVideosActorLinkValues();
|
||||
cMyVideosActorLinkValues(cMyVideosActor* lpActor, const QString& szRole, qint32 castOrder);
|
||||
|
||||
void set(cMyVideosActor* lpActor, const QString& szRole, qint32 castOrder);
|
||||
|
||||
inline bool operator==(const cMyVideosActorLinkValues b) const;
|
||||
inline bool operator!=(const cMyVideosActorLinkValues b) const;
|
||||
|
||||
cMyVideosActor* m_lpActor;
|
||||
QString m_szRole;
|
||||
qint32 m_castOrder;
|
||||
};
|
||||
|
||||
class cMyVideosActorLink
|
||||
{
|
||||
public:
|
||||
cMyVideosActorLink(cMyVideosActor* lpActor, const QString& szRole, qint32 cast_order);
|
||||
|
||||
cMyVideosActor* actor();
|
||||
QString role();
|
||||
qint32 castOrder();
|
||||
|
||||
bool isNew();
|
||||
bool isChanged();
|
||||
private:
|
||||
cMyVideosActorLinkValues m_values;
|
||||
cMyVideosActorLinkValues m_oValues;
|
||||
};
|
||||
|
||||
Q_DECLARE_METATYPE(cMyVideosActorLink*)
|
||||
|
||||
class cMyVideosActorLinkList : public QList<cMyVideosActorLink*>
|
||||
{
|
||||
public:
|
||||
cMyVideosActorLinkList();
|
||||
cMyVideosActorLink *add(cMyVideosActor* lpActor, const QString& szRole, qint32 cast_order);
|
||||
};
|
||||
|
||||
class cMyVideosValues
|
||||
{
|
||||
public:
|
||||
@@ -75,6 +170,7 @@ public:
|
||||
QDateTime m_dateAdded; // dateAdded
|
||||
qreal m_dResumeTimeInSeconds; // resumeTimeInSeconds
|
||||
qreal m_dTotalTimeInSeconds; // totalTimeInSeconds
|
||||
cMyVideosActorLinkList m_actors;
|
||||
};
|
||||
|
||||
class cMyVideos
|
||||
@@ -89,6 +185,9 @@ public:
|
||||
const QString& szFileName, const QString& szPathURL, qint32 iPlayCount, const QDateTime& lastPlayed, const QDateTime& dateAdded,
|
||||
qreal dResumeTimeInSeconds, qreal dTotalTimeInSeconds);
|
||||
|
||||
void loadActors(QSqlDatabase& m_db, cMyVideosActorList videosActorList);
|
||||
void fillActorsList(QTreeWidget* lpWidget);
|
||||
|
||||
qint32 idMovie();
|
||||
qint32 idFile();
|
||||
QString localMovieTitle();
|
||||
|
||||
@@ -99,6 +99,7 @@ void cVideoWidget::selectionChanged(const QItemSelection& /*newSelection*/, cons
|
||||
// Crew Tab
|
||||
ui->m_lpDirector->addItems(lpVideos->director());
|
||||
ui->m_lpWriter->addItems(lpVideos->writers());
|
||||
m_lpVideoLibrary->fillActorList(ui->m_lpCast, lpVideos);
|
||||
|
||||
if(m_lpVideoModel->itemFromIndex(index)->hasChildren())
|
||||
{
|
||||
|
||||
+54
-7
@@ -73,7 +73,7 @@
|
||||
<item>
|
||||
<widget class="QTabWidget" name="m_lpInformationTab">
|
||||
<property name="currentIndex">
|
||||
<number>1</number>
|
||||
<number>2</number>
|
||||
</property>
|
||||
<widget class="QWidget" name="m_lpInformationTabBasic">
|
||||
<attribute name="title">
|
||||
@@ -571,7 +571,7 @@
|
||||
<layout class="QGridLayout" name="gridLayout_10">
|
||||
<item row="0" column="0">
|
||||
<layout class="QGridLayout" name="gridLayout_9">
|
||||
<item row="0" column="0">
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="label_19">
|
||||
<property name="text">
|
||||
<string>Director</string>
|
||||
@@ -581,10 +581,14 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="QListWidget" name="m_lpDirector"/>
|
||||
<item row="1" column="1">
|
||||
<widget class="QListWidget" name="m_lpDirector">
|
||||
<property name="alternatingRowColors">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<item row="2" column="0">
|
||||
<widget class="QLabel" name="label_20">
|
||||
<property name="text">
|
||||
<string>Writer</string>
|
||||
@@ -594,8 +598,51 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QListWidget" name="m_lpWriter"/>
|
||||
<item row="2" column="1">
|
||||
<widget class="QListWidget" name="m_lpWriter">
|
||||
<property name="alternatingRowColors">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="label_11">
|
||||
<property name="text">
|
||||
<string>Cast</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="QTreeWidget" name="m_lpCast">
|
||||
<property name="editTriggers">
|
||||
<set>QAbstractItemView::NoEditTriggers</set>
|
||||
</property>
|
||||
<property name="alternatingRowColors">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="rootIsDecorated">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="columnCount">
|
||||
<number>2</number>
|
||||
</property>
|
||||
<attribute name="headerVisible">
|
||||
<bool>false</bool>
|
||||
</attribute>
|
||||
<column>
|
||||
<property name="text">
|
||||
<string notr="true">1</string>
|
||||
</property>
|
||||
</column>
|
||||
<column>
|
||||
<property name="text">
|
||||
<string notr="true">2</string>
|
||||
</property>
|
||||
</column>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
|
||||
Reference in New Issue
Block a user