Share the love

This commit is contained in:
dmdmdm 2020-07-26 14:38:14 -04:00 committed by John Maguire
parent 68d375c43c
commit 75264f314d
3 changed files with 37 additions and 5 deletions

View File

@ -337,6 +337,7 @@ set(SOURCES
ui/console.cpp
ui/coverfromurldialog.cpp
ui/edittagdialog.cpp
ui/lovedialog.cpp
ui/equalizer.cpp
ui/flowlayout.cpp
ui/globalshortcutgrabber.cpp
@ -624,6 +625,7 @@ set(HEADERS
ui/console.h
ui/coverfromurldialog.h
ui/edittagdialog.h
ui/lovedialog.h
ui/equalizer.h
ui/globalshortcutgrabber.h
ui/globalshortcutssettingspage.h
@ -751,6 +753,7 @@ set(UI
ui/console.ui
ui/coverfromurldialog.ui
ui/edittagdialog.ui
ui/lovedialog.ui
ui/equalizer.ui
ui/globalshortcutgrabber.ui
ui/globalshortcutssettingspage.ui

View File

@ -105,6 +105,7 @@
#include "ui/albumcovermanager.h"
#include "ui/console.h"
#include "ui/edittagdialog.h"
#include "ui/lovedialog.h"
#include "ui/equalizer.h"
#include "ui/iconloader.h"
#include "ui/organisedialog.h"
@ -170,6 +171,7 @@ MainWindow::MainWindow(Application* app, SystemTrayIcon* tray_icon, OSD* osd,
tray_icon_(tray_icon),
osd_(osd),
edit_tag_dialog_(std::bind(&MainWindow::CreateEditTagDialog, this)),
love_dialog_(std::bind(&MainWindow::CreateLoveDialog, this)),
stream_discoverer_(std::bind(&MainWindow::CreateStreamDiscoverer, this)),
global_shortcuts_(new GlobalShortcuts(this)),
global_search_view_(new GlobalSearchView(app_, this)),
@ -1169,9 +1171,11 @@ void MainWindow::MediaPlaying() {
PlaylistItem::SeekDisabled);
ui_->track_slider->SetCanSeek(can_seek);
// We now always enable Love when playing since it works for local files
ui_->action_love->setEnabled(true);
#ifdef HAVE_LIBLASTFM
bool enable_love = app_->scrobbler()->IsScrobblingEnabled();
ui_->action_love->setEnabled(enable_love);
if (tray_icon_) {
tray_icon_->LastFMButtonLoveStateChanged(enable_love);
tray_icon_->SetPlaying(enable_play_pause, enable_love);
@ -1582,13 +1586,28 @@ void MainWindow::ScrobbledRadioStream() {
ui_->action_love->setEnabled(true);
if (tray_icon_) tray_icon_->LastFMButtonLoveStateChanged(true);
}
#endif
void MainWindow::Love() {
app_->scrobbler()->Love();
ui_->action_love->setEnabled(false);
if (tray_icon_) tray_icon_->LastFMButtonLoveStateChanged(false);
Playlist* activePlaylist = app_->playlist_manager()->active();
PlaylistItemPtr item = activePlaylist->current_item();
if (!item) {
// Don't make a big deal about it
qLog(Warning) << "Love: nothing playing so can't love it";
return;
}
if (item->IsLocalLibraryItem()) {
Song song = item->Metadata();
love_dialog_->SetSong(song);
love_dialog_->show();
}
else {
app_->scrobbler()->Love();
ui_->action_love->setEnabled(false);
if (tray_icon_) tray_icon_->LastFMButtonLoveStateChanged(false);
}
}
#endif
void MainWindow::ApplyAddBehaviour(MainWindow::AddBehaviour b,
MimeData* data) const {
@ -2671,6 +2690,13 @@ EditTagDialog* MainWindow::CreateEditTagDialog() {
return edit_tag_dialog;
}
LoveDialog* MainWindow::CreateLoveDialog() {
LoveDialog* dialog = new LoveDialog(app_);
connect(dialog, SIGNAL(Error(QString)),
SLOT(ShowErrorDialog(QString)));
return dialog;
}
StreamDiscoverer* MainWindow::CreateStreamDiscoverer() {
StreamDiscoverer* discoverer = new StreamDiscoverer();
connect(discoverer, SIGNAL(DataReady(StreamDetails)),

View File

@ -50,6 +50,7 @@ class DeviceManager;
class DeviceView;
class DeviceViewContainer;
class EditTagDialog;
class LoveDialog;
class Equalizer;
class ErrorDialog;
class FileView;
@ -263,6 +264,7 @@ signals:
void ShowVisualisations();
SettingsDialog* CreateSettingsDialog();
EditTagDialog* CreateEditTagDialog();
LoveDialog* CreateLoveDialog();
StreamDiscoverer* CreateStreamDiscoverer();
void OpenSettingsDialog();
void OpenSettingsDialogAtPage(SettingsDialog::Page page);
@ -311,6 +313,7 @@ signals:
SystemTrayIcon* tray_icon_;
OSD* osd_;
Lazy<EditTagDialog> edit_tag_dialog_;
Lazy<LoveDialog> love_dialog_;
Lazy<About> about_dialog_;
Lazy<StreamDiscoverer> stream_discoverer_;