Skip to content
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.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
88 changes: 52 additions & 36 deletions src/library/baseplaylistfeature.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -349,9 +349,10 @@ void BasePlaylistFeature::slotImportPlaylist() {
ConfigValue(fileName.dir().absolutePath()));

slotImportPlaylistFile(playlist_file);
activateChild(m_lastRightClickedIndex);
}

void BasePlaylistFeature::slotImportPlaylistFile(QString &playlist_file) {
void BasePlaylistFeature::slotImportPlaylistFile(const QString &playlist_file) {
// The user has picked a new directory via a file dialog. This means the
// system sandboxer (if we are sandboxed) has granted us permission to this
// folder. We don't need access to this file on a regular basis so we do not
Expand All @@ -375,53 +376,68 @@ void BasePlaylistFeature::slotImportPlaylistFile(QString &playlist_file) {

// Iterate over the List that holds URLs of playlist entires
m_pPlaylistTableModel->addTracks(QModelIndex(), entries);
activateChild(m_lastRightClickedIndex);

// delete the parser object
delete playlist_parser;
}
}

void BasePlaylistFeature::slotCreateImportPlaylist() {
if (!m_pPlaylistTableModel) return;
if (!m_pPlaylistTableModel) {
return;
}

// Get file to read
QString playlist_file = LibraryFeature::getPlaylistFile();
if (playlist_file.isEmpty()) return;

QFileInfo fileName(playlist_file);
QStringList playlist_files = LibraryFeature::getPlaylistFiles();
if (playlist_files.isEmpty()) {
return;
}

// Set last import directory
QFileInfo fileName(playlist_files.first());
m_pConfig->set(ConfigKey("[Library]","LastImportExportPlaylistDirectory"),
ConfigValue(fileName.dir().absolutePath()));

// Get a valid name
QString baseName = fileName.baseName();
QString name;
bool validNameGiven = false;
int i = 0;
while (!validNameGiven) {
name = baseName;
if (i != 0) name += QString::number(i);

// Check name
int existingId = m_playlistDao.getPlaylistIdFromName(name);

validNameGiven = (existingId == -1);
++i;
}

int playlistId = m_playlistDao.createPlaylist(name);
if (playlistId != -1) {
activatePlaylist(playlistId);
}
else {
QMessageBox::warning(NULL,
tr("Playlist Creation Failed"),
tr("An unknown error occurred while creating playlist: ")
+ name);
return;

int lastPlaylistId = -1;

// For each selected element create a different playlist.
for (const QString& playlistFile : playlist_files) {
fileName = QFileInfo(playlistFile);

// Get a valid name
QString baseName = fileName.baseName();
QString name;

bool validNameGiven = false;
int i = 0;
while (!validNameGiven) {
name = baseName;
if (i != 0) {
name += QString::number(i);
}

// Check name
int existingId = m_playlistDao.getPlaylistIdFromName(name);

validNameGiven = (existingId == -1);
++i;
}

lastPlaylistId = m_playlistDao.createPlaylist(name);
if (lastPlaylistId != -1 && m_pPlaylistTableModel) {
m_pPlaylistTableModel->setTableModel(lastPlaylistId);
}
else {
QMessageBox::warning(NULL,
tr("Playlist Creation Failed"),
tr("An unknown error occurred while creating playlist: ")
+ name);
return;
}

slotImportPlaylistFile(playlistFile);
}

slotImportPlaylistFile(playlist_file);
activatePlaylist(lastPlaylistId);
}

void BasePlaylistFeature::slotExportPlaylist() {
Expand Down
2 changes: 1 addition & 1 deletion src/library/baseplaylistfeature.h
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ class BasePlaylistFeature : public LibraryFeature {
void slotRenamePlaylist();
void slotTogglePlaylistLock();
void slotImportPlaylist();
void slotImportPlaylistFile(QString &playlist_file);
void slotImportPlaylistFile(const QString &playlist_file);
void slotCreateImportPlaylist();
void slotExportPlaylist();
// Copy all of the tracks in a playlist to a new directory.
Expand Down
90 changes: 53 additions & 37 deletions src/library/cratefeature.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ CrateFeature::CrateFeature(Library* pLibrary,

m_pCreateImportPlaylistAction = new QAction(tr("Import Crate"), this);
connect(m_pCreateImportPlaylistAction, SIGNAL(triggered()),
this, SLOT(slotCreateImportPlaylist()));
this, SLOT(slotCreateImportCrate()));

m_pExportPlaylistAction = new QAction(tr("Export Crate"), this);
connect(m_pExportPlaylistAction, SIGNAL(triggered()),
Expand Down Expand Up @@ -582,9 +582,10 @@ void CrateFeature::slotImportPlaylist() {
ConfigValue(fileName.dir().absolutePath()));

slotImportPlaylistFile(playlist_file);
activateChild(m_lastRightClickedIndex);
}

void CrateFeature::slotImportPlaylistFile(QString &playlist_file) {
void CrateFeature::slotImportPlaylistFile(const QString &playlist_file) {
// The user has picked a new directory via a file dialog. This means the
// system sandboxer (if we are sandboxed) has granted us permission to this
// folder. We don't need access to this file on a regular basis so we do not
Expand All @@ -610,51 +611,66 @@ void CrateFeature::slotImportPlaylistFile(QString &playlist_file) {

//Iterate over the List that holds URLs of playlist entires
m_crateTableModel.addTracks(QModelIndex(), entries);
activateChild(m_lastRightClickedIndex);

//delete the parser object
delete playlist_parser;
}
}

void CrateFeature::slotCreateImportPlaylist() {
void CrateFeature::slotCreateImportCrate() {

// Get file to read
QString playlist_file = getPlaylistFile();
if (playlist_file.isEmpty()) return;

QFileInfo fileName(playlist_file);
m_pConfig->set(ConfigKey("[Library]","LastImportExportCrateDirectory"),
ConfigValue(fileName.dir().absolutePath()));

// Get a valid name
QString baseName = fileName.baseName();
QString name;
bool validNameGiven = false;
int i = 0;
while (!validNameGiven) {
name = baseName;
if (i != 0) name += QString::number(i);

// Check name
int existingId = m_crateDao.getCrateIdByName(name);

validNameGiven = (existingId == -1);
++i;
QStringList playlist_files = LibraryFeature::getPlaylistFiles();
if (playlist_files.isEmpty()) {
return;
}

int playlistId = m_crateDao.createCrate(name);

if (playlistId != -1) activateCrate(playlistId);
else {
QMessageBox::warning(NULL,
tr("Playlist Creation Failed"),
tr("An unknown error occurred while creating playlist: ")
+ name);
return;


// Set last import directory
QFileInfo fileName(playlist_files.first());
m_pConfig->set(ConfigKey("[Library]","LastImportExportCrateDirectory"),
ConfigValue(fileName.dir().absolutePath()));

int lastCrateId = -1;

// For each selected file
for (const QString& playlistFile : playlist_files) {
fileName = QFileInfo(playlistFile);

// Get a valid name
QString baseName = fileName.baseName();
QString name;
bool validNameGiven = false;
int i = 0;
while (!validNameGiven) {
name = baseName;
if (i != 0) {
name += QString::number(i);
}

// Check name
int existingId = m_crateDao.getCrateIdByName(name);

validNameGiven = (existingId == -1);
++i;
}

lastCrateId = m_crateDao.createCrate(name);

if (lastCrateId != -1) {
m_crateTableModel.setTableModel(lastCrateId);
}
else {
QMessageBox::warning(NULL,
tr("Crate Creation Failed"),
tr("An unknown error occurred while creating crate: ")
+ name);
return;
}

slotImportPlaylistFile(playlistFile);
}

slotImportPlaylistFile(playlist_file);
activateCrate(lastCrateId);
}

void CrateFeature::slotAnalyzeCrate() {
Expand Down
4 changes: 2 additions & 2 deletions src/library/cratefeature.h
Original file line number Diff line number Diff line change
Expand Up @@ -58,8 +58,8 @@ class CrateFeature : public LibraryFeature {
void slotAutoDjTrackSourceChanged();
void slotToggleCrateLock();
void slotImportPlaylist();
void slotImportPlaylistFile(QString &playlist_file);
void slotCreateImportPlaylist();
void slotImportPlaylistFile(const QString &playlist_file);
void slotCreateImportCrate();
void slotExportPlaylist();
// Copy all of the tracks in a crate to a new directory (like a thumbdrive).
void slotExportTrackFiles();
Expand Down
8 changes: 4 additions & 4 deletions src/library/libraryfeature.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ LibraryFeature::~LibraryFeature() {

}

QString LibraryFeature::getPlaylistFile() {
QStringList LibraryFeature::getPlaylistFiles(QFileDialog::FileMode mode) {
QString lastPlaylistDirectory = m_pConfig->getValueString(
ConfigKey("[Library]", "LastImportExportPlaylistDirectory"),
QDesktopServices::storageLocation(QDesktopServices::MusicLocation));
Expand All @@ -30,10 +30,10 @@ QString LibraryFeature::getPlaylistFile() {
lastPlaylistDirectory,
tr("Playlist Files (*.m3u *.m3u8 *.pls *.csv)"));
dialogg.setAcceptMode(QFileDialog::AcceptOpen);
dialogg.setFileMode(QFileDialog::ExistingFile);
dialogg.setFileMode(mode);
dialogg.setModal(true);

// If the user refuses return
if (! dialogg.exec()) return QString();
return dialogg.selectedFiles().first();
if (! dialogg.exec()) return QStringList();
return dialogg.selectedFiles();
}
7 changes: 5 additions & 2 deletions src/library/libraryfeature.h
Original file line number Diff line number Diff line change
Expand Up @@ -65,8 +65,9 @@ class LibraryFeature : public QObject {
KeyboardEventFilter* /* keyboard */) {}
virtual TreeItemModel* getChildModel() = 0;

protected:
QString getPlaylistFile();
protected:
inline QStringList getPlaylistFiles() { return getPlaylistFiles(QFileDialog::ExistingFiles); }
inline QString getPlaylistFile() { return getPlaylistFiles(QFileDialog::ExistingFile).first(); }
UserSettingsPointer m_pConfig;

public slots:
Expand Down Expand Up @@ -107,6 +108,8 @@ class LibraryFeature : public QObject {
void enableCoverArtDisplay(bool);
void trackSelected(TrackPointer pTrack);

private:
QStringList getPlaylistFiles(QFileDialog::FileMode mode);

};

Expand Down