2 #include "ui_musicapplication.h"
32 m_quitWindowMode(false),
46 setMaximumSize(size.width(), size.height());
65 m_player->setVolume(100);
71 connect(
m_ui->musicDesktopLrc, SIGNAL(clicked(
bool)),
m_rightAreaWidget, SLOT(setDestopLrcVisible(
bool)));
73 m_ui->musicKey->setFocus();
74 m_ui->lrcDisplayAllButton->hide();
77 m_ui->musicTimeWidget->setInputModule(
this);
127 return (index != -1) ? songs[index].name() : QString();
146 return (index != -1) ? songs[index].path() : QString();
166 QString path = prefixPath +
LRC_FILE;
168 if(!QFile::exists(path))
173 if(!QFile::exists(path))
175 const QString &nativePath = QFileInfo(
currentFilePath()).absoluteDir().absolutePath() + fileName;
179 if(!QFile::exists(path))
225 contains = QFile::exists(path);
239 const MusicSongList ¤tSongs = items[item.
m_playlistRow].m_songs;
242 return index != -1 ? loveSongs.contains(currentSongs[index]) :
false;
257 return loveSongs.contains(currentSongs[index]);
297 m_ui->musicTimeWidget->setValue(position);
314 m_ui->musicTimeWidget->setRange(0, duration);
319 m_ui->musicQualityLabel->updateQuality();
371 m_ui->musicPlayedList->selectCurrentIndex();
374 m_ui->musicSongTitle->setText(name);
375 m_ui->musicMoreFunction->setCurrentSongName(name);
431 m_ui->musicPlayedList->clearQueueState();
488 m_ui->musicSound->setValue(volume);
496 m_ui->musicSound->setValue(volume);
509 menu.addAction(tr(
"Files Drag Drop"))->setEnabled(
false);
512 menu.exec(QCursor::pos());
541 const QString &path = dialog.
text();
559 MusicSongItemList items;
573 if(index < 0 || index >= items.count())
638 if(0 <= index && index < items.count())
640 m_ui->musicPlayedList->append(items[index].m_songs);
656 if(0 <= index && index < items.count())
658 m_ui->musicPlayedList->append(items[index].m_songs);
721 bool contains =
true;
742 MusicToastLabel::popup(!contains ? tr(
"Add music to lovest list done") : tr(
"Remove music to lovest list done"));
761 QMenu addNewFiles(tr(
"Add New Files"), &menu);
762 menu.addMenu(&addNewFiles);
768 QMenu playbackMode(tr(
"Playback Mode"), &menu);
769 menu.addMenu(&playbackMode);
771 QList<QAction*> actions;
772 actions << playbackMode.addAction(tr(
"Play Once"),
this, SLOT(
playOnce()));
773 actions << playbackMode.addAction(tr(
"Single Cycle"),
this, SLOT(
playOneLoop()));
774 actions << playbackMode.addAction(tr(
"Order Play"),
this, SLOT(
playOrder()));
775 actions << playbackMode.addAction(tr(
"List Cycle"),
this, SLOT(
playlistLoop()));
776 actions << playbackMode.addAction(tr(
"Random Play"),
this, SLOT(
playRandom()));
791 actions[index]->setIcon(QIcon(
":/contextMenu/btn_selected"));
795 QMenu remoteControl(tr(
"Remote Control"), &menu);
796 menu.addMenu(&remoteControl);
797 remoteControl.addAction(tr(
"Square Remote"),
m_topAreaWidget, SLOT(showSquareRemote()));
798 remoteControl.addAction(tr(
"Rectangle Remote"),
m_topAreaWidget, SLOT(showRectangleRemote()));
799 remoteControl.addAction(tr(
"Simple Style Remote"),
m_topAreaWidget, SLOT(showSimpleStyleRemote()));
800 remoteControl.addAction(tr(
"Complex Style Remote"),
m_topAreaWidget, SLOT(showComplexStyleRemote()));
801 remoteControl.addAction(tr(
"Ripple Remote"),
m_topAreaWidget, SLOT(showRippleRemote()));
802 remoteControl.addAction(tr(
"Delete Remote"),
m_topAreaWidget, SLOT(deleteCurrentRemote()));
805 menu.addAction(QIcon(
":/contextMenu/btn_equalizer"), tr(
"Equalizer"),
m_applicationModule, SLOT(showEqualizerWidget()));
811 QAction *window = menu.addAction(tr(
"Window Top"),
m_applicationModule, SLOT(setWindowToTop()));
815 QMenu download(tr(
"Download"), &menu);
816 menu.addMenu(&download);
823 actions[index]->setIcon(QIcon(
":/contextMenu/btn_selected"));
828 menu.addAction(QIcon(
":/contextMenu/btn_update"), tr(
"New Version"),
m_applicationModule, SLOT(showVersionWidget()));
830 menu.addAction(QIcon(
":/contextMenu/btn_setting"), tr(
"Settings"),
this, SLOT(
showSettingWidget()));
832 QMenu information(tr(
"About"), &menu);
833 menu.addMenu(&information)->setIcon(QIcon(
":/contextMenu/btn_about"));
834 information.addAction(QIcon(
":/contextMenu/btn_bug_reoprt"), tr(
"Bug Report"),
m_applicationModule, SLOT(showBugReportView()));
838 menu.addAction(QIcon(
":/contextMenu/btn_quit"), tr(
"Quit"),
this, SLOT(
quitWindow()));
839 menu.exec(QCursor::pos());
868 for(
const QString &p :
qAsConst(path))
885 std::sort(index.begin(), index.end());
887 bool contains =
false;
890 if(index.count() == 1 && index.front() == oldIndex)
895 for(
int i = index.count() - 1; i >= 0; --i)
897 m_ui->musicPlayedList->remove(index[i]);
898 if(i != 0 && !contains && oldIndex <= index[i] && oldIndex >= index[i - 1])
907 oldIndex -= index.count();
923 if(
remove && !QFile::remove(removeParh))
931 for(
const QString &p :
qAsConst(path))
933 m_ui->musicPlayedList->remove(playlistRow, p);
980 if(
m_ui->background->isRunning())
992 TTKAbstractMoveResizeWidget::resizeEvent(event);
996 setMinimumSize(0, 0);
997 m_ui->background->stop();
1004 TTKAbstractMoveResizeWidget::closeEvent(event);
1020 const int h =
event->pos().y();
1021 if(h < m_ui->topWidget->height() || h > height() -
m_ui->bottomWidget->height())
1023 TTKAbstractMoveResizeWidget::contextMenuEvent(event);
1034 TTKAbstractMoveResizeWidget::enterEvent(event);
1040 TTKAbstractMoveResizeWidget::leaveEvent(event);
1048 if(
m_ui->background->isRunning())
1056 setMaximumSize(size.width(), size.height());
1070 TTKAbstractMoveResizeWidget::mouseDoubleClickEvent(event);
1071 if(event->buttons() == Qt::LeftButton)
1073 isMaximized() ? showNormal() : showMaximized();
1084 if(
object ==
m_ui->centerWidget && (QEvent::ContextMenu == event->type() || QEvent::MouseButtonPress ==
event->type()))
1102 MusicSongItemList songs;
1157 for(
int i = 0; i < hotkeys.count(); ++i)
1186 value = lastPlayIndex[1].toInt();
1190 m_ui->musicPlayedList->append(songs[value].m_songs);
1195 if(success && lastPlayIndex[0] ==
"1")
1198 const int index = lastPlayIndex[2].toInt();
1203 m_ui->musicPlayedList->selectCurrentIndex();
1254 if(lastPlayIndex.isEmpty())
1256 lastPlayIndex <<
"1" <<
"-1" <<
"-1";
bool containsLovestItem() const
void currentPlayLocation()
void loadCurrentSongLrc()
MusicBottomAreaWidget * m_bottomAreaWidget
#define QtEnterEvent
Event enter.
TTK_MODULE_EXPORT QString getExistingDirectory(QWidget *parent)
#define TTKStaticCast(x, y)
The class of the music play item.
The class of the app object module.
void setEqualizerConfig()
static MusicApplication * instance()
QRect readWindowGeometry() const
#define MUSIC_SEARCH_PAGE
#define PLAYLIST_PATH_FULL
void sideAnimationByOff()
void addSongToLovestList(bool state=true)
MusicApplication(QWidget *parent=nullptr)
void setPlaySongChanged(int index)
TTK::PlayMode playMode() const
bool fromFile(const QString &name)
TTK_MODULE_EXPORT void enableBreakPoint(bool enable)
virtual void leaveEvent(QEvent *event) overridefinal
virtual void mouseMoveEvent(QMouseEvent *event) overridefinal
void positionChanged(qint64 position)
void playIndexBy(int row)
static constexpr const char * BtnUnDownload
The class of the app main widget.
void setEnhanced(Enhance type)
virtual void mouseReleaseEvent(QMouseEvent *event) overridefinal
void updateCurrentArtist()
void loadNetWorkSetting()
void setPosition(qint64 position)
The class of the playlist manager.
The class of the xml config manager.
void volumeChanged(int volume)
int find(const MusicPlayItem &item) const
static constexpr const char * BtnPlay
void writeSystemConfigToFile()
The class of the music player.
void removeItemAt(const QStringList &path, bool remove, bool current, int playlistRow)
void importSongsByDir(int index=TTK_LOW_LEVEL)
Ui::MusicApplication * m_ui
void playAnyTimeAt(int time)
void add(int playlistRow, const QString &content)
virtual void mouseDoubleClickEvent(QMouseEvent *event) overridefinal
TTK::PlayMode playbackMode() const
virtual bool eventFilter(QObject *object, QEvent *event) overridefinal
MusicTopAreaWidget * m_topAreaWidget
void exportSongsItemList()
void setVolume(int volume)
static void popup(const QString &text)
virtual bool readBuffer(MusicSongItemList &items) overridefinal
void playedIndexBy(int row)
TTK_MODULE_EXPORT QString getSaveFileName(QWidget *parent, const QString &filter="Image Files (*.png *.bmp *.jpg)")
MusicPlayItem currentItem() const
static constexpr int PLAY_PREVIOUS_LEVEL
static constexpr const char * TinyBtnPause
MusicRightAreaWidget * m_rightAreaWidget
void writeSongItem(const QString &path, const MusicSongItemList &item)
TTK_MODULE_EXPORT QString generateNetworkSongPath(const QString &path)
virtual void enterEvent(QtEnterEvent *event) overridefinal
MusicSongsContainerWidget * m_songTreeWidget
bool isLastedVersion() const
static constexpr const char * BtnDownload
#define TTK_SIGNLE_SHOT(...)
void soundEffectChanged()
void importSongsByFiles(int index=TTK_LOW_LEVEL)
MusicPlaylist * m_playlist
void durationChanged(qint64 duration)
void currentPlaylist(QStringList &list)
void setPlaybackMode(TTK::PlayMode mode)
TTK_MODULE_EXPORT QString lrcDirPrefix()
void playIndexClicked(int row, int column)
void updateCurrentTime(qint64 pos)
QString currentFilePath() const
#define TTK_VERSION_TIME_STR
MusicLeftAreaWidget * m_leftAreaWidget
static constexpr int PLAY_NEXT_LEVEL
void importSongsByOutside(const QString &path, bool play)
void setCurrentIndex(int index)
QString format() const noexcept
static const QString MenuStyle02
static constexpr const char * TinyBtnPlay
bool checkMusicListCurrentIndex() const
void windowConciseChanged()
The class of the tkpl config manager.
void exportSongsItem(int index)
#define MUSIC_NETWORK_LIST
bool load(const QString &name)
#define MUSIC_LOVEST_LIST
virtual void contextMenuEvent(QContextMenuEvent *event) overridefinal
virtual void closeEvent(QCloseEvent *event) overridefinal
static constexpr const char * BtnLove
void readSongItems(const QStringList &paths, MusicSongItemList &items)
static MusicApplication * m_instance
void enhancedSongChanged(int type)
QString containsDownloadItem(bool &contains) const
TTK_MODULE_EXPORT QStringList getOpenFileNames(QWidget *parent, const QString &filter="Image Files (*.png *.bmp *.jpg)")
static constexpr const char * BtnPause
void setShuffleMode(bool shuffle)
void importSongsItemList()
The class of the music song info.
void removeLoveItemAt(const QString &path, bool current)
virtual void resizeEvent(QResizeEvent *event) overridefinal
void playerStateChanged(TTK::PlayState state)
The class of the music play list.
#define MUSIC_NORMAL_LIST
int m_currentSongTreeIndex
void readSystemConfigFromFile()
void windowCloseAnimation()
void resetCurrentSongLrcIndex()
void setMuted(bool muted)
QPoint readShowDesktopLrcGeometry() const
#define WINDOW_HEIGHT_MIN
virtual bool writeBuffer(const MusicSongItemList &items) overridefinal
static constexpr const char * BtnUnLove
static qint64 formatDuration(const QString &time) noexcept
MusicApplicationModule * m_applicationModule
QString currentFileName() const