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

WIP: working on support for autosave with multiple instances #355

Open
wants to merge 9 commits into
base: develop
Choose a base branch
from
Prev Previous commit
cleanup
  • Loading branch information
nolyn committed Apr 21, 2021
commit 30d1626a9eac2f071050aaeae1f257d4cabcb81c
50 changes: 0 additions & 50 deletions YUViewLib/src/common/YUViewInstanceInfo.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -96,26 +96,6 @@ void YUViewInstanceInfo::autoSavePlaylist(const QByteArray &newCompressedPlaylis
return;
}

//void YUViewInstanceInfo::loadAutosavedPlaylist()
//{
// QSettings settings;

// for( auto instance : crashedInstances)
// {
// // take the first in the list
// QString playlist_name = "Autosaveplaylist-" + instance;
// if (settings.contains(playlist_name))
// {
// QByteArray compressedPlaylist = settings.value(playlist_name).toByteArray();
// QByteArray uncompressedPlaylist = qUncompress(compressedPlaylist);
// loadPlaylistFromByteArray(uncompressedPlaylist, QDir::current().absolutePath());
// dropAutosavedPlaylist(instance);
// break;
// }

// }
//}

void YUViewInstanceInfo::dropAutosavedPlaylist()
{
// replace saved on with emtpy playlist
Expand Down Expand Up @@ -306,39 +286,9 @@ YUViewInstanceInfoList YUViewInstanceInfo::getYUViewInstancesInQSettings()
return instancesInQSettings;
}

//const QString YUViewInstanceInfo::getKeyOfInstance()
//{
// return this->uuid.toString() + ";" + QString::number(this->pid);
//}

//YUViewInstanceInfo YUViewInstanceInfo::fromQList(const QList<QVariant> list)
//{
// YUViewInstanceInfo instanceInfo;
// instanceInfo.uuid = list.at(0).toUuid();
// instanceInfo.pid = list.at(1).toLongLong();
// instanceInfo.compressedPlaylist = list.at(2).toByteArray();
// return instanceInfo;
//}

//QList<QVariant> YUViewInstanceInfo::toQList()
//{
// QList<QVariant> list;
// list.append(this->uuid);
// list.append(this->pid);
// list.append(this->compressedPlaylist);
// return list;
//}

QByteArray YUViewInstanceInfo::getCompressedPlaylist() const
{
return compressedPlaylist;
}

//void YUViewInstanceInfo::keyToUuidAndPid(const QString key, QUuid &uuid, qint64 &pid)
//{
// QStringList instance_uuid_and_pid = key.split(';');
// uuid = QUuid(instance_uuid_and_pid.at(0));
// QString instance_pid_str = instance_uuid_and_pid.at(1);
// pid = instance_pid_str.toLongLong();
//}

14 changes: 4 additions & 10 deletions YUViewLib/src/common/YUViewInstanceInfo.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@
#include <QUuid>
#include <QList>

class YUViewInstanceInfo;
typedef QList<YUViewInstanceInfo> YUViewInstanceInfoList;

class YUViewInstanceInfo
{
public:
Expand All @@ -14,11 +17,8 @@ class YUViewInstanceInfo
YUViewInstanceInfo(const YUViewInstanceInfo &) = default;
YUViewInstanceInfo &operator=(const YUViewInstanceInfo &) = default;

// YUViewInstanceInfo(const QString &body, const QStringList &headers);

void initializeAsNewInstance();
void autoSavePlaylist(const QByteArray &newCompressedPlaylist);
// void loadAutosavedPlaylist();
void dropAutosavedPlaylist();
void removeInstanceFromQSettings();
YUViewInstanceInfo getAutosavedPlaylist();
Expand All @@ -31,21 +31,15 @@ class YUViewInstanceInfo
friend QDataStream& (operator>>) (QDataStream &ds, YUViewInstanceInfo &outObj);
private:
static QList<qint64> getRunningYUViewInstances();
static QList<YUViewInstanceInfo> getYUViewInstancesInQSettings();
// const QString getKeyOfInstance();
// static YUViewInstanceInfo fromQList(const QList<QVariant> list);
// QList<QVariant> toQList();
static YUViewInstanceInfoList getYUViewInstancesInQSettings();

qint64 pid;
QUuid uuid;
QByteArray compressedPlaylist;

// static void keyToUuidAndPid( const QString key, QUuid &uuid, qint64 &pid);
static const QString instanceInfoKey; // key used for QSettings
};

typedef QList<YUViewInstanceInfo> YUViewInstanceInfoList;

QDataStream& operator<<(QDataStream &ds, const YUViewInstanceInfo &inObj);
QDataStream& operator>>(QDataStream &ds, YUViewInstanceInfo &outObj);
QDataStream& operator<<(QDataStream &ds, const YUViewInstanceInfoList &inObj);
Expand Down
7 changes: 3 additions & 4 deletions YUViewLib/src/ui/mainwindow.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -197,9 +197,6 @@ MainWindow::MainWindow(bool useAlternativeSources, QWidget *parent) : QMainWindo
// Give the playlist a pointer to the state handler so it can save the states ti playlist
ui.playlistTreeWidget->setViewStateHandler(&stateHandler);

instance_uuid = QUuid::createUuid();
instance_pid = QCoreApplication::applicationPid();

QStringList crashedInstances;
YUViewInstanceInfo autosaveCandidateInstance = ui.playlistTreeWidget->getInstanceInfo().getAutosavedPlaylist();
if( autosaveCandidateInstance.isValid())
Expand All @@ -209,7 +206,9 @@ MainWindow::MainWindow(bool useAlternativeSources, QWidget *parent) : QMainWindo
"Restore Playlist",
tr("It looks like YUView crashed the last time you used it. We are "
"sorry about that. However, we have an autosave of the playlist "
"you were working with. Do you want to resotre this playlist?\n"),
"you were working with. Do you want to restore this playlist? If"
" you had more than one YUView instance, opening more instances "
"will allow you to restore other playlists as well.\n"),
QMessageBox::Yes | QMessageBox::No,
QMessageBox::No);
if (resBtn == QMessageBox::Yes)
Expand Down
2 changes: 0 additions & 2 deletions YUViewLib/src/ui/mainwindow.h
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,4 @@ private slots:
SeparateWindow separateViewWindow;
bool showNormalMaximized; // When going to full screen: Was this windows maximized?
bool panelsVisible[5] {false}; // Which panels are visible when going to full-screen mode?
QUuid instance_uuid;
qint64 instance_pid;
};
1 change: 1 addition & 0 deletions YUViewLib/src/ui/widgets/PlaylistTreeWidget.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -155,6 +155,7 @@ PlaylistTreeWidget::PlaylistTreeWidget(QWidget *parent) : QTreeWidget(parent)
// This does not work here. Don't know why. Setting it every time a new item is added, however,
// works.
// header()->resizeSection(1, 10);

connect(this,
&PlaylistTreeWidget::itemSelectionChanged,
this,
Expand Down
1 change: 0 additions & 1 deletion YUViewLib/src/ui/widgets/PlaylistTreeWidget.h
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,6 @@ class PlaylistTreeWidget : public QTreeWidget

void loadAutosavedPlaylist(const YUViewInstanceInfo &crashedInstance);
void dropAutosavedPlaylist();
void dropAutosavedPlaylists(QStringList &crashedInstances);
void startAutosaveTimer();

YUViewInstanceInfo getInstanceInfo() const;
Expand Down