Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix crashes and clean up the UI #1

Merged
merged 2 commits into from Feb 13, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
6 changes: 4 additions & 2 deletions qml/components/PlaylistItem.qml
Expand Up @@ -9,8 +9,10 @@ ListViewItemWithActions{
width: parent.width
height: Theme.itemHeightHuge

icon: cover
label: artist+" - "+title
icon: cover != "" ? cover : "image://theme/music"
label: title
description: artist
showNext: false

actions: Rectangle {
id: playListItemActions
Expand Down
4 changes: 2 additions & 2 deletions qml/pages/ArtistsPage.qml
Expand Up @@ -13,7 +13,7 @@ Item{
id: artistModel
}

signal viewTracks(int artist_id)
signal viewTracks(int artist_id, string artist_name)

ListView{
id: artistListView
Expand All @@ -26,7 +26,7 @@ Item{
iconVisible: false

onClicked: {
viewTracks(artist_id)
viewTracks(artist_id, name)
}
}
clip: true
Expand Down
4 changes: 2 additions & 2 deletions qml/pages/LibraryPage.qml
Expand Up @@ -23,13 +23,13 @@ Page {
title: "Artists"
ArtistsPage{
onViewTracks: {
pageStack.push(Qt.resolvedUrl("/usr/share/glacier-music/qml/pages/TracksPage.qml"), {artistId: artist_id});
pageStack.push(Qt.resolvedUrl("/usr/share/glacier-music/qml/pages/TracksPage.qml"), {artistId: artist_id, artistName: artist_name});
}
}
}
Tab {
title: "Tracks"
//TracksPage{}
TracksPage{}
}
}
}
34 changes: 32 additions & 2 deletions qml/pages/TracksPage.qml
Expand Up @@ -9,10 +9,11 @@ import org.glacier.music.trackmodel 1.0
Page {
id: artistPage
property int artistId: 0
property string artistName: ""

headerTools: HeaderToolsLayout {
id: tools
title: qsTr("Tracks")
title: artistId == 0 ? qsTr("Tracks") : qsTr(artistName)
showBackButton: true;
}

Expand All @@ -26,7 +27,36 @@ Page {
width: parent.width
height: parent.height
delegate: ListViewItemWithActions{
label: artist_name+" "+title;
id: trackItem
label: artistId == 0 ? artist_name+" "+title : title
description: track+" - "+album
icon: "image://theme/music"
showNext: false

onClicked: nextTrackModel.addItem(track_id, 0)

actions: Rectangle {
id: trackItemActions
width: trackItem.height
height: trackItem.height

color: "transparent"

Image{
id: editButton
width: parent.height*0.6
height: width

anchors{
left: parent.left
leftMargin: parent.height*0.2
top: parent.top
topMargin: parent.height*0.2
}

source: "image://theme/edit"
}
}
}
clip: true
}
Expand Down
38 changes: 26 additions & 12 deletions src/audiofile.cpp
Expand Up @@ -7,34 +7,32 @@
#include <QIODevice>
#include <QDebug>

AudioFile::AudioFile(QString audiofile, QObject *parent) : QObject(parent)
AudioFile::AudioFile(QString audiofile, QObject *parent) : QObject(parent),
fileuri(audiofile)
{
mediaFile = new QFile(audiofile);
mediaFile = new QFile(fileuri);
isValid = false;
if(!mediaFile->exists())
{
isValid = false;
qDebug() << "FNF:" << audiofile;
qDebug() << "FNF:" << fileuri;
emit fileNotFound();
}
else
{
if(mediaFile->open(QIODevice::ReadWrite))
if(mediaFile->open(QIODevice::ReadOnly))
{
isValid = true;
tagFile = new TagLib::FileRef(audiofile.toUtf8());
if(tagFile->isNull())
{
return;
}
loadTags();
}
else
{
qDebug() << "Cant open file in r/w mode:" << audiofile;
qDebug() << "Cant open file:" << fileuri;
isValid = false;
}
}

mediaFile->close();
}

void AudioFile::loadTags()
Expand All @@ -43,6 +41,14 @@ void AudioFile::loadTags()
{
return;
}

QScopedPointer<TagLib::FileRef> tagFile(new TagLib::FileRef(fileuri.toUtf8()));

if(tagFile->isNull())
{
return;
}

TagLib::String t_artist = tagFile->tag()->artist();
TagLib::String t_title = tagFile->tag()->title();
TagLib::String t_album = tagFile->tag()->album();
Expand All @@ -64,12 +70,12 @@ void AudioFile::loadTags()

if(artist.length() < 1)
{
artist = "Unknow Artist";
artist = "Unknown Artist";
}

if(title.length() < 1)
{
title = "Unknow Track";
title = "Unknown Track";
}
}

Expand All @@ -79,6 +85,14 @@ bool AudioFile::sync()
{
return false;
}

QScopedPointer<TagLib::FileRef> tagFile(new TagLib::FileRef(fileuri.toUtf8()));

if(tagFile->isNull())
{
return false;
}

tagFile->tag()->setAlbum(album.toStdWString());
tagFile->tag()->setArtist(artist.toStdWString());
tagFile->tag()->setComment(comment.toStdWString());
Expand Down
3 changes: 2 additions & 1 deletion src/audiofile.h
Expand Up @@ -12,6 +12,8 @@ class AudioFile : public QObject
explicit AudioFile(QString audiofile, QObject *parent = 0);
~AudioFile();

QString fileuri;

QString artist;
QString title;
QString album;
Expand All @@ -26,7 +28,6 @@ class AudioFile : public QObject

private:
QFile *mediaFile;
TagLib::FileRef *tagFile;
void loadTags();

signals:
Expand Down
3 changes: 1 addition & 2 deletions src/models/tracksqlmodel.cpp
Expand Up @@ -10,7 +10,7 @@ TrackSqlModel::TrackSqlModel(QObject *parent) : QSqlQueryModel(parent)
hash.insert(Qt::UserRole+3,QByteArray("album"));
hash.insert(Qt::UserRole+4,QByteArray("comment"));
hash.insert(Qt::UserRole+5,QByteArray("genre"));
hash.insert(Qt::UserRole+6,QByteArray("tarck"));
hash.insert(Qt::UserRole+6,QByteArray("track"));
hash.insert(Qt::UserRole+7,QByteArray("year"));
hash.insert(Qt::UserRole+8,QByteArray("filename"));
hash.insert(Qt::UserRole+9,QByteArray("artist_name"));
Expand Down Expand Up @@ -76,7 +76,6 @@ void TrackSqlModel::setArtist(const int artist_id)
WHERE artist_id = %1 ORDER BY artist_name ASC").arg(artist_id).toUtf8());
}


void TrackSqlModel::cleanQuery()
{
this->setQuery("SELECT tracks.id as track_id, \
Expand Down