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);
135 return (index != -1) ? songs[index].name() : QString();
154 return (index != -1) ? songs[index].path() : QString();
178 for(
const QString &format : formats)
180 path = prefixPath + format;
181 if(QFile::exists(path))
187 path = nativePath + format;
188 if(QFile::exists(path))
235 contains = QFile::exists(path);
249 const MusicSongList ¤tSongs = items[item.
m_playlistRow].m_songs;
252 return index != -1 ? loveSongs.contains(currentSongs[index]) :
false;
267 return loveSongs.contains(currentSongs[index]);
307 m_ui->musicTimeWidget->setValue(position);
324 m_ui->musicTimeWidget->setRange(0, duration);
329 m_ui->musicQualityLabel->updateQuality();
381 m_ui->musicPlayedList->selectCurrentIndex();
384 m_ui->musicSongTitle->setText(name);
385 m_ui->musicMoreFunction->setCurrentSongName(name);
441 m_ui->musicPlayedList->clearQueueState();
520 m_ui->musicSound->setValue(volume);
528 m_ui->musicSound->setValue(volume);
541 menu.addAction(tr(
"Files Drag Drop"))->setEnabled(
false);
544 menu.exec(QCursor::pos());
573 const QString &path = dialog.
text();
591 MusicSongItemList items;
605 if(index < 0 || index >= items.count())
670 if(0 <= index && index < items.count())
672 m_ui->musicPlayedList->append(items[index].m_songs);
688 if(0 <= index && index < items.count())
690 m_ui->musicPlayedList->append(items[index].m_songs);
731 bool contains =
true;
752 MusicToastLabel::popup(!contains ? tr(
"Add music to lovest list done") : tr(
"Remove music to lovest list done"));
771 QMenu *addNewFilesMenu = menu.addMenu(tr(
"Add New Files"));
777 QMenu *playbackModeMenu = menu.addMenu(tr(
"Playback Mode"));
779 QList<QAction*> actions;
780 actions << playbackModeMenu->addAction(tr(
"Play Once"),
this, SLOT(
playOnce()));
781 actions << playbackModeMenu->addAction(tr(
"Single Cycle"),
this, SLOT(
playOneLoop()));
782 actions << playbackModeMenu->addAction(tr(
"Order Play"),
this, SLOT(
playOrder()));
783 actions << playbackModeMenu->addAction(tr(
"List Cycle"),
this, SLOT(
playlistLoop()));
784 actions << playbackModeMenu->addAction(tr(
"Random Play"),
this, SLOT(
playRandom()));
799 actions[index]->setIcon(QIcon(
":/contextMenu/btn_selected"));
804 QMenu *remoteControlMenu = menu.addMenu(tr(
"Remote Control"));
805 remoteControlMenu->addAction(tr(
"Square Remote"),
m_topAreaWidget, SLOT(showSquareRemote()));
806 remoteControlMenu->addAction(tr(
"Rectangle Remote"),
m_topAreaWidget, SLOT(showRectangleRemote()));
807 remoteControlMenu->addAction(tr(
"Simple Style Remote"),
m_topAreaWidget, SLOT(showSimpleStyleRemote()));
808 remoteControlMenu->addAction(tr(
"Complex Style Remote"),
m_topAreaWidget, SLOT(showComplexStyleRemote()));
809 remoteControlMenu->addAction(tr(
"Ripple Remote"),
m_topAreaWidget, SLOT(showRippleRemote()));
810 remoteControlMenu->addAction(tr(
"Delete Remote"),
m_topAreaWidget, SLOT(deleteCurrentRemote()));
813 menu.addAction(QIcon(
":/contextMenu/btn_equalizer"), tr(
"Equalizer"),
m_applicationModule, SLOT(showEqualizerWidget()));
819 QAction *window = menu.addAction(tr(
"Window Top"),
m_applicationModule, SLOT(setWindowToTop()));
823 QMenu *downloadMenu = menu.addMenu(tr(
"Download"));
831 actions[index]->setIcon(QIcon(
":/contextMenu/btn_selected"));
836 menu.addAction(QIcon(
":/contextMenu/btn_update"), tr(
"New Version"),
m_applicationModule, SLOT(showVersionWidget()));
838 menu.addAction(QIcon(
":/contextMenu/btn_setting"), tr(
"Settings"),
this, SLOT(
showSettingWidget()));
840 QMenu *informationMenu = menu.addMenu(QIcon(
":/contextMenu/btn_about"), tr(
"About"));
841 informationMenu->addAction(QIcon(
":/contextMenu/btn_bug_reoprt"), tr(
"Bug Report"),
m_applicationModule, SLOT(showBugReportView()));
845 menu.addAction(QIcon(
":/contextMenu/btn_quit"), tr(
"Quit"),
this, SLOT(
quitWindow()));
846 menu.exec(QCursor::pos());
875 for(
const QString &p :
qAsConst(path))
892 std::sort(index.begin(), index.end());
894 bool contains =
false;
897 if(index.count() == 1 && index.front() == oldIndex)
902 for(
int i = index.count() - 1; i >= 0; --i)
904 m_ui->musicPlayedList->remove(index[i]);
905 if(i != 0 && !contains && oldIndex <= index[i] && oldIndex >= index[i - 1])
914 oldIndex -= index.count();
930 if(
remove && !QFile::remove(removeParh))
938 for(
const QString &p :
qAsConst(path))
940 m_ui->musicPlayedList->remove(playlistRow, p);
987 if(
m_ui->background->isRunning())
999 TTKAbstractMoveResizeWidget::resizeEvent(event);
1003 setMinimumSize(0, 0);
1004 m_ui->background->stop();
1011 TTKAbstractMoveResizeWidget::closeEvent(event);
1027 const int h =
event->pos().y();
1028 if(h < m_ui->topWidget->height() || h > height() -
m_ui->bottomWidget->height())
1030 TTKAbstractMoveResizeWidget::contextMenuEvent(event);
1041 TTKAbstractMoveResizeWidget::enterEvent(event);
1047 TTKAbstractMoveResizeWidget::leaveEvent(event);
1055 if(
m_ui->background->isRunning())
1063 setMaximumSize(size.width(), size.height());
1077 TTKAbstractMoveResizeWidget::mouseDoubleClickEvent(event);
1078 if(event->buttons() == Qt::LeftButton)
1080 isMaximized() ? showNormal() : showMaximized();
1091 if(
object ==
m_ui->centerWidget && (QEvent::ContextMenu == event->type() || QEvent::MouseButtonPress ==
event->type()))
1109 MusicSongItemList items;
1165 for(
int i = 0; i < hotkeys.count(); ++i)
1194 value = lastPlayIndex[1].toInt();
1198 m_ui->musicPlayedList->append(items[value].m_songs);
1203 if(success && lastPlayIndex[0] ==
"1")
1206 const int index = lastPlayIndex[2].toInt();
1211 m_ui->musicPlayedList->selectCurrentIndex();
1263 if(lastPlayIndex.isEmpty())
1265 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()
void setShuffleMode(bool shuffle) noexcept
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)
MusicPlayItem currentItem() const noexcept
bool fromFile(const QString &name)
virtual void leaveEvent(QEvent *event) overridefinal
virtual void mouseMoveEvent(QMouseEvent *event) overridefinal
void positionChanged(qint64 position)
bool isEmpty() const noexcept
TTK::PlayMode playbackMode() const noexcept
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
virtual bool eventFilter(QObject *object, QEvent *event) overridefinal
TTK::PlayMode playMode() const noexcept
MusicTopAreaWidget * m_topAreaWidget
void exportSongsItemList()
void setVolume(int volume)
static void popup(const QString &text)
TTK_MODULE_EXPORT void enableBreakPoint(bool enable) noexcept
virtual bool readBuffer(MusicSongItemList &items) overridefinal
void playedIndexBy(int row)
bool isMuted() const noexcept
TTK_MODULE_EXPORT QString getSaveFileName(QWidget *parent, const QString &filter="Image Files (*.png *.bmp *.jpg)")
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)
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
bool isPlaying() const noexcept
static constexpr int PLAY_NEXT_LEVEL
void setPlaybackMode(TTK::PlayMode mode) noexcept
void importSongsByOutside(const QString &path, bool play)
void setCurrentIndex(int index)
QString format() const noexcept
int count() const noexcept
static const QString MenuStyle02
static constexpr const char * TinyBtnPlay
bool windowToTop() const noexcept
bool checkMusicListCurrentIndex() const
void windowConciseChanged()
Enhance enhanced() const noexcept
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
int currentIndex() const noexcept
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 importSongsItemList()
The class of the music song info.
bool isValid() const noexcept
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
void readSystemConfigFromFile()
void windowCloseAnimation()
#define TTK_ERROR_STREAM(msg)
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