11 #if TTK_QT_VERSION_CHECK(5,0,0)
12 # include <QStandardPaths>
14 # include <QDesktopServices>
24 return v.isEmpty() ? QObject::tr(
"Various Artist") : v;
31 return v.isEmpty() ? QObject::tr(
"Various Album") : v;
38 return v.isEmpty() ? QObject::tr(
"Various Year") : v;
45 return v.isEmpty() ? QObject::tr(
"Various Genre") : v;
55 QHeaderView *headerView = horizontalHeader();
56 headerView->setVisible(
true);
57 headerView->resizeSection(0, 100);
58 headerView->resizeSection(1, 55);
60 setAlternatingRowColors(
true);
61 setFrameShape(QFrame::Box);
62 setTextElideMode(Qt::ElideRight);
66 setHorizontalScrollBarPolicy(Qt::ScrollBarAsNeeded);
77 setRowCount(song.count());
80 for(
auto it = song.constBegin(); it != song.constEnd(); ++it, ++index)
82 QTableWidgetItem *item =
new QTableWidgetItem;
83 item->setToolTip(it.key());
84 item->setText(item->toolTip());
86 setItem(index, 0, item);
88 item =
new QTableWidgetItem;
89 item->setToolTip(QString::number(it.value()));
90 item->setText(item->toolTip());
92 setItem(index, 1, item);
99 QHeaderView *headerView = horizontalHeader();
109 setSelectionMode(QAbstractItemView::ExtendedSelection);
112 QHeaderView *headerView = horizontalHeader();
113 headerView->setVisible(
true);
114 headerView->resizeSection(0, 200);
115 headerView->resizeSection(1, 100);
116 headerView->resizeSection(2, 100);
117 headerView->resizeSection(3, 40);
118 headerView->resizeSection(4, 100);
119 headerView->resizeSection(5, 100);
120 headerView->resizeSection(6, 200);
122 setAlternatingRowColors(
true);
123 setFrameShape(QFrame::Box);
124 setTextElideMode(Qt::ElideRight);
127 setHorizontalHeaderLabels({tr(
"Title"), tr(
"Artist"), tr(
"Album"), tr(
"Track"), tr(
"Year"), tr(
"Genre"), tr(
"Path")});
128 setHorizontalScrollBarPolicy(Qt::ScrollBarAsNeeded);
142 setRowCount(songs.count());
144 for(
int i = 0; i < songs.count(); ++i)
148 QTableWidgetItem *item =
new QTableWidgetItem;
150 item->setText(item->toolTip());
154 item =
new QTableWidgetItem;
156 item->setText(item->toolTip());
160 item =
new QTableWidgetItem;
162 item->setText(item->toolTip());
166 item =
new QTableWidgetItem;
168 item->setText(item->toolTip());
172 item =
new QTableWidgetItem;
173 item->setToolTip(v.
m_year);
174 item->setText(item->toolTip());
178 item =
new QTableWidgetItem;
180 item->setText(item->toolTip());
184 item =
new QTableWidgetItem;
185 item->setToolTip(v.
m_path);
186 item->setText(item->toolTip());
197 QHeaderView *headerView = horizontalHeader();
212 MusicAbstractSongsListTableWidget::contextMenuEvent(event);
216 menu.addAction(QIcon(
":/contextMenu/btn_play"), tr(
"Play"),
this, SLOT(
playClicked()));
223 menu.addAction(QIcon(
":/contextMenu/btn_local_file"), tr(
"Open File Dir"),
this, SLOT(
openFileDir()))->setEnabled(status);
224 menu.addAction(QIcon(
":/contextMenu/btn_ablum"), tr(
"Ablum"),
this, SLOT(
showAlbumQueryWidget()));
226 menu.exec(QCursor::pos());
236 QVBoxLayout *layout =
new QVBoxLayout(
this);
237 layout->setSpacing(0);
238 layout->setContentsMargins(0, 0, 0, 0);
241 QWidget *mainWidget =
new QWidget(
this);
242 QVBoxLayout *mainLayout =
new QVBoxLayout(mainWidget);
243 mainLayout->setSpacing(0);
244 mainLayout->setContentsMargins(20, 10, 20, 10);
245 mainWidget->setLayout(mainLayout);
246 layout->addWidget(mainWidget);
248 QWidget *topWidget =
new QWidget(mainWidget);
249 mainLayout->addWidget(topWidget);
251 QVBoxLayout *topLayout =
new QVBoxLayout(topWidget);
252 topLayout->setSpacing(0);
253 topLayout->setContentsMargins(0, 0, 0, 10);
254 topWidget->setLayout(topLayout);
256 QWidget *functionWidget =
new QWidget(topWidget);
257 QHBoxLayout *functionWidgetLayout =
new QHBoxLayout(functionWidget);
258 functionWidgetLayout->setContentsMargins(0, 0, 0, 10);
259 functionWidget->setLayout(functionWidgetLayout);
261 QLabel *pLabel =
new QLabel(tr(
"Media Library"), functionWidget);
262 QFont pLabelFont = pLabel->font();
263 pLabelFont.setPixelSize(33);
264 pLabel->setFont(pLabelFont);
266 functionWidgetLayout->addWidget(pLabel);
271 functionWidgetLayout->addStretch(1);
273 QPushButton *refresh =
new QPushButton(tr(
"Refresh"), functionWidget);
274 refresh->setIcon(QIcon(
":/functions/btn_similar_hover"));
275 refresh->setFixedSize(90, 30);
277 refresh->setCursor(QCursor(Qt::PointingHandCursor));
278 functionWidgetLayout->addWidget(refresh);
280 QPushButton *button =
new QPushButton(tr(
"Settings"), functionWidget);
281 button->setIcon(QIcon(
":/functions/btn_setting_hover"));
282 button->setFixedSize(90, 30);
284 button->setCursor(QCursor(Qt::PointingHandCursor));
285 functionWidgetLayout->addWidget(button);
289 topLayout->addWidget(functionWidget);
292 QWidget *tabWidget =
new QWidget(mainWidget);
293 QHBoxLayout *tabWidgetLayout =
new QHBoxLayout(tabWidget);
294 tabWidgetLayout->setSpacing(0);
295 tabWidgetLayout->setContentsMargins(0, 0, 0, 0);
296 tabWidget->setLayout(tabWidgetLayout);
297 mainLayout->addWidget(tabWidget);
305 refresh->setFocusPolicy(Qt::NoFocus);
306 button->setFocusPolicy(Qt::NoFocus);
309 QWidget *centerWidget =
new QWidget(mainWidget);
310 QHBoxLayout *centerWidgetLayout =
new QHBoxLayout(centerWidget);
311 centerWidgetLayout->setSpacing(2);
312 centerWidgetLayout->setContentsMargins(0, 5, 0, 0);
313 centerWidget->setLayout(centerWidgetLayout);
314 mainLayout->addWidget(centerWidget);
327 connect(refresh, SIGNAL(clicked()), SLOT(
refreshItems()));
353 case 0:
m_searchEdit->
editor()->setPlaceholderText(tr(
"Please input search song words"));
break;
354 case 1:
m_searchEdit->
editor()->setPlaceholderText(tr(
"Please input search artist words"));
break;
355 case 2:
m_searchEdit->
editor()->setPlaceholderText(tr(
"Please input search album words"));
break;
356 case 3:
m_searchEdit->
editor()->setPlaceholderText(tr(
"Please input search year words"));
break;
357 case 4:
m_searchEdit->
editor()->setPlaceholderText(tr(
"Please input search genre words"));
break;
385 #if TTK_QT_VERSION_CHECK(5,0,0)
386 path = QStandardPaths::writableLocation(QStandardPaths::MusicLocation) +
TTK_SEPARATOR;
388 path = QDesktopServices::storageLocation(QDesktopServices::MusicLocation) +
TTK_SEPARATOR;
395 m_sizeLabel->setText(tr(
" (Songs Totol: %1)").arg(files.size()));
399 for(
const QString &path :
qAsConst(files))
421 qApp->processEvents();
462 MusicSongInfoItemList items;
463 for(
const int index :
qAsConst(result))
485 QWidget::resizeEvent(event);
506 data = item.m_artist;
507 label = tr(
"Artist");
531 if(!statistic.contains(data))
533 statistic.insert(data, 1);
537 statistic.insert(data, statistic[data] + 1);
TTK_MODULE_EXPORT QString getExistingDirectory(QWidget *parent)
MusicSongInfoItemList m_containerItems
static QString generateYear(const QString &v) noexcept
static QString generateAlbum(const QString &v) noexcept
static const QString ScrollBarStyle04
#define QtItemSetTextAlignment(p, a)
Item text alignment.
void mappedSearchRow(int pos, int &row) const noexcept
TTKSearchItems m_searchResultItems
TTK_MODULE_EXPORT void enableBreakPoint(bool enable) noexcept
static const QString ColorStyle01
Color.
void clearSearchResult() noexcept
The class of the local song item information.
static const QString ColorStyle02
TTK_MODULE_EXPORT bool isNetworkUrl(const QString &path) noexcept
static const QString PushButtonStyle03
The namespace of the application object.
#define TTK_SIGNLE_SHOT(...)
TTK_MODULE_EXPORT bool isBreakPointEnabled() noexcept
static QString generateGenre(const QString &v) noexcept
static const QString BackgroundStyle01
Background.
MusicSearchEdit * editor() const noexcept
static const QString BackgroundStyle10
static const QString MenuStyle02
TTK_MODULE_EXPORT QStringList fileListByPath(const QString &dpath, const QStringList &filter={}, bool recursively=true)
The class of the music song info.
The class of the query line edit widget.
static QString generateArtist(const QString &v) noexcept
TTK_MODULE_EXPORT QString generateSongName(const QString &title, const QString &artist) noexcept