22 m_openFileWidget(nullptr),
23 m_songsInfoWidget(nullptr),
24 m_songsPlayWidget(nullptr),
25 m_mouseLeftPressed(false),
26 m_renameActived(false),
27 m_deleteItemWithFile(false),
28 m_renameItem(nullptr),
29 m_renameEditDelegate(nullptr),
32 setSelectionMode(QAbstractItemView::ExtendedSelection);
33 setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
36 QHeaderView *headerView = horizontalHeader();
37 headerView->resizeSection(0, 20);
38 headerView->resizeSection(1, 187);
39 headerView->resizeSection(2, 20);
40 headerView->resizeSection(3, 20);
41 headerView->resizeSection(4, 20);
42 headerView->resizeSection(5, 45);
67 const int count = rowCount();
68 setRowCount(songs.count());
69 QHeaderView *headerView = horizontalHeader();
71 for(
int i = count; i < songs.count(); ++i)
75 QTableWidgetItem *item =
new QTableWidgetItem;
78 item =
new QTableWidgetItem;
84 item =
new QTableWidgetItem;
87 item =
new QTableWidgetItem;
90 item =
new QTableWidgetItem;
93 item =
new QTableWidgetItem(v.
duration());
112 for(
int i = 0; i < columnCount(); ++i)
114 delete takeItem(index, i);
117 QString durationLabel;
119 const QString &path = !
m_songs->isEmpty() ?
m_songs->at(index).path() : QString();
133 setSpan(index, 0, 1, 6);
144 if(songs->count() == result.count())
153 m_songs->append(songs->at(index));
199 QHeaderView *headerView = horizontalHeader();
200 QTableWidgetItem *item =
new QTableWidgetItem;
203 item =
new QTableWidgetItem(
TTK::Widget::elidedText(font(), name, Qt::ElideRight, headerView->sectionSize(1) - 10));
257 it->setIcon(QIcon());
263 it->setIcon(QIcon());
269 it->setIcon(QIcon());
275 it->setIcon(QIcon());
281 it->setIcon(QIcon());
286 if(it = item(row, 0))
288 it->setIcon(QIcon(
":/tiny/btn_play_later_normal"));
291 if(it = item(row, 2))
293 it->setIcon(QIcon(
":/tiny/btn_mv_normal"));
296 if(it = item(row, 3))
299 it->setIcon(QIcon(contains ?
":/tiny/btn_loved_normal" :
":/tiny/btn_unloved_normal"));
302 if(it = item(row, 4))
304 it->setIcon(QIcon(
":/tiny/btn_delete_normal"));
307 if(it = item(row, 5))
310 it->setIcon(QIcon(
":/tiny/btn_more_normal"));
315 setCursor(QCursor(Qt::PointingHandCursor));
365 QTableWidgetItem *it = item(row, 3);
368 it->setIcon(QIcon(contains ?
":/tiny/btn_loved_normal" :
":/tiny/btn_unloved_normal"));
389 menu.exec(QCursor::pos());
419 message.
setText(tr(
"Are you sure to delete?"));
427 if(deletedList.isEmpty())
434 progress.
setTitle(tr(
"Delete file mode"));
435 progress.setRange(0, deletedList.count() / 3 * 2);
437 for(
int i = 0; i < deletedList.count(); ++i)
441 progress.setValue(i / 3);
450 for(
int i = deletedList.count() - 1; i >= 0; --i)
452 const int index = deletedList[i];
454 progress.setValue(deletedList.count() * 2 - i);
516 if(action->data().isNull())
527 if(rowCount() == 0 || row < 0)
537 const int row = currentRow();
538 if(rowCount() == 0 || row < 0)
558 const int newType = action->data().toInt();
559 if(newType < 0 || newType > 5)
592 m_songsInfoWidget->move(mapToGlobal(QPoint(width(), 0)).x() + 8, QCursor::pos().y());
608 MusicAbstractSongsListTableWidget::mousePressEvent(event);
611 if(event->button() == Qt::LeftButton)
621 MusicAbstractSongsListTableWidget::mouseMoveEvent(event);
625 setCursor(QCursor(QPixmap(
":/functions/lb_drag_cursor")));
631 MusicAbstractSongsListTableWidget::mouseReleaseEvent(event);
636 setCursor(QCursor(Qt::ArrowCursor));
660 menu.addAction(QIcon(
":/contextMenu/btn_play"), tr(
"Play"),
this, SLOT(
playClicked()));
666 QMenu sortFiles(tr(
"Sort"), &menu);
667 sortFiles.addAction(tr(
"Sort By FileName"))->setData(0);
668 sortFiles.addAction(tr(
"Sort By Singer"))->setData(1);
669 sortFiles.addAction(tr(
"Sort By FileSize"))->setData(2);
670 sortFiles.addAction(tr(
"Sort By AddTime"))->setData(3);
671 sortFiles.addAction(tr(
"Sort By Duration"))->setData(4);
672 sortFiles.addAction(tr(
"Sort By PlayCount"))->setData(5);
674 connect(&sortFiles, SIGNAL(triggered(QAction*)), SLOT(
songListSortBy(QAction*)));
678 const QList<QAction*> actions(sortFiles.actions());
682 actions[
m_songSort->
m_type]->setIcon(QIcon(asc ?
":/tiny/lb_sort_asc" :
":/tiny/lb_sort_desc"));
685 menu.addMenu(&sortFiles);
692 QMenu toolMenu(tr(
"Tools"), &menu);
695 menu.addMenu(&toolMenu);
700 menu.addAction(QIcon(
":/contextMenu/btn_local_file"), tr(
"Open File Dir"),
this, SLOT(
openFileDir()))->setEnabled(status);
701 menu.addAction(QIcon(
":/contextMenu/btn_ablum"), tr(
"Ablum"),
this, SLOT(
showAlbumQueryWidget()));
706 menu.addAction(tr(
"Rename"),
this, SLOT(
setChangSongName()))->setEnabled(status);
707 menu.addAction(QIcon(
":/contextMenu/btn_delete"), tr(
"Delete"),
this, SLOT(
removeItemAt()))->setEnabled(status);
708 menu.addAction(tr(
"Delete With File"),
this, SLOT(
removeItemWithFile()))->setEnabled(status);
709 menu.addAction(tr(
"Delete All"),
this, SLOT(
clearItems()))->setEnabled(status);
714 menu.addAction(tr(
"Search '%1'").arg(name))->setData(name);
717 for(
int i = 0; i < artists.count(); ++i)
719 name = artists[i].trimmed();
720 menu.addAction(tr(
"Search '%1'").arg(name))->setData(name);
722 menu.addAction(tr(
"Search '%1'").arg(songName))->setData(songName);
725 menu.exec(QCursor::pos());
744 QHeaderView *headerView = horizontalHeader();
766 const int end = currentRow();
775 index = (start > end) ? (end + 1) : (end - 1);
790 for(
int i = qMin(start, end); i <= qMax(start, end); ++i)
797 QHeaderView *headerView = horizontalHeader();
799 item(i, 5)->setText(songs[i].duration());
bool containsLovestItem() const
TTK_MODULE_EXPORT QString generateSongArtist(const QString &name, const QString &key=TTK_DEFAULT_STR)
static MusicApplication * instance()
void setText(const QString &text) const
TTK_MODULE_EXPORT bool playlistRowValid(int index)
The class of the messagebox widget.
TTK_MODULE_EXPORT QString generateSongTitle(const QString &name, const QString &key=TTK_DEFAULT_STR)
#define QtItemSetTextAlignment(p, a)
Item text alignment.
The class of the song ringtone maker widget.
#define TTK_ITEM_SIZE_2XL
The class of the lineedit item delegate.
TTK_MODULE_EXPORT QStringList split(const QString &value, const QString &key=TTK_DEFAULT_STR)
QString duration() const noexcept
QString name() const noexcept
static const QString MenuStyle02
void setDuration(const QString &t) noexcept
static constexpr unsigned int Color01
Color QRgb.
The class of the music song info.
TTK_MODULE_EXPORT bool isNetworkUrl(const QString &path)
#define TTKObjectCast(x, y)
#define LEFT_SIDE_WIDTH_MIN