12 #include <QButtonGroup>
13 #if TTK_QT_VERSION_CHECK(5,0,0)
14 # include <QStandardPaths>
16 # include <QDesktopServices>
26 return v.isEmpty() ? QObject::tr(
"Various Artist") : v;
33 return v.isEmpty() ? QObject::tr(
"Various Album") : v;
40 return v.isEmpty() ? QObject::tr(
"Various Year") : v;
47 return v.isEmpty() ? QObject::tr(
"Various Genre") : v;
57 QHeaderView *headerView = horizontalHeader();
58 headerView->setVisible(
true);
59 headerView->resizeSection(0, 100);
60 headerView->resizeSection(1, 55);
62 setAlternatingRowColors(
true);
63 setFrameShape(QFrame::Box);
64 setTextElideMode(Qt::ElideRight);
68 setHorizontalScrollBarPolicy(Qt::ScrollBarAsNeeded);
79 setRowCount(song.count());
82 for(
auto it = song.constBegin(); it != song.constEnd(); ++it, ++index)
84 QTableWidgetItem *item =
new QTableWidgetItem;
85 item->setToolTip(it.key());
86 item->setText(item->toolTip());
88 setItem(index, 0, item);
90 item =
new QTableWidgetItem;
91 item->setToolTip(QString::number(it.value()));
92 item->setText(item->toolTip());
94 setItem(index, 1, item);
101 QHeaderView *headerView = horizontalHeader();
111 setSelectionMode(QAbstractItemView::ExtendedSelection);
114 QHeaderView *headerView = horizontalHeader();
115 headerView->setVisible(
true);
116 headerView->resizeSection(0, 200);
117 headerView->resizeSection(1, 100);
118 headerView->resizeSection(2, 100);
119 headerView->resizeSection(3, 40);
120 headerView->resizeSection(4, 100);
121 headerView->resizeSection(5, 100);
122 headerView->resizeSection(6, 200);
124 setAlternatingRowColors(
true);
125 setFrameShape(QFrame::Box);
126 setTextElideMode(Qt::ElideRight);
129 setHorizontalHeaderLabels({tr(
"Title"), tr(
"Artist"), tr(
"Album"), tr(
"Track"), tr(
"Year"), tr(
"Genre"), tr(
"Path")});
130 setHorizontalScrollBarPolicy(Qt::ScrollBarAsNeeded);
144 setRowCount(songs.count());
146 for(
int i = 0; i < songs.count(); ++i)
150 QTableWidgetItem *item =
new QTableWidgetItem;
152 item->setText(item->toolTip());
156 item =
new QTableWidgetItem;
158 item->setText(item->toolTip());
162 item =
new QTableWidgetItem;
164 item->setText(item->toolTip());
168 item =
new QTableWidgetItem;
170 item->setText(item->toolTip());
174 item =
new QTableWidgetItem;
175 item->setToolTip(v.
m_year);
176 item->setText(item->toolTip());
180 item =
new QTableWidgetItem;
182 item->setText(item->toolTip());
186 item =
new QTableWidgetItem;
187 item->setToolTip(v.
m_path);
188 item->setText(item->toolTip());
199 QHeaderView *headerView = horizontalHeader();
214 MusicAbstractSongsListTableWidget::contextMenuEvent(event);
218 menu.addAction(QIcon(
":/contextMenu/btn_play"), tr(
"Play"),
this, SLOT(
playClicked()));
225 menu.addAction(QIcon(
":/contextMenu/btn_local_file"), tr(
"Open File Dir"),
this, SLOT(
openFileDir()))->setEnabled(status);
226 menu.addAction(QIcon(
":/contextMenu/btn_ablum"), tr(
"Ablum"),
this, SLOT(
showAlbumQueryWidget()));
229 menu.exec(QCursor::pos());
239 QVBoxLayout *layout =
new QVBoxLayout(
this);
240 layout->setSpacing(0);
241 layout->setContentsMargins(0, 0, 0, 0);
244 QWidget *mainWidget =
new QWidget(
this);
245 QVBoxLayout *mainLayout =
new QVBoxLayout(mainWidget);
246 mainLayout->setSpacing(0);
247 mainLayout->setContentsMargins(20, 10, 20, 10);
248 mainWidget->setLayout(mainLayout);
249 layout->addWidget(mainWidget);
251 QWidget *topWidget =
new QWidget(mainWidget);
252 mainLayout->addWidget(topWidget);
254 QVBoxLayout *topLayout =
new QVBoxLayout(topWidget);
255 topLayout->setSpacing(0);
256 topLayout->setContentsMargins(0, 0, 0, 10);
257 topWidget->setLayout(topLayout);
259 QWidget *functionWidget =
new QWidget(topWidget);
260 QHBoxLayout *functionWidgetLayout =
new QHBoxLayout(functionWidget);
261 functionWidgetLayout->setContentsMargins(0, 0, 0, 10);
262 functionWidget->setLayout(functionWidgetLayout);
264 QLabel *pLabel =
new QLabel(tr(
"Media Library"), functionWidget);
265 QFont pLabelFont = pLabel->font();
266 pLabelFont.setPixelSize(33);
267 pLabel->setFont(pLabelFont);
269 functionWidgetLayout->addWidget(pLabel);
274 functionWidgetLayout->addStretch(1);
276 QPushButton *refresh =
new QPushButton(tr(
"Refresh"), functionWidget);
277 refresh->setIcon(QIcon(
":/functions/btn_similar_hover"));
278 refresh->setFixedSize(90, 30);
280 refresh->setCursor(QCursor(Qt::PointingHandCursor));
281 functionWidgetLayout->addWidget(refresh);
283 QPushButton *button =
new QPushButton(tr(
"Settings"), functionWidget);
284 button->setIcon(QIcon(
":/functions/btn_setting_hover"));
285 button->setFixedSize(90, 30);
287 button->setCursor(QCursor(Qt::PointingHandCursor));
288 functionWidgetLayout->addWidget(button);
292 topLayout->addWidget(functionWidget);
295 QWidget *tabWidget =
new QWidget(mainWidget);
296 QHBoxLayout *tabWidgetLayout =
new QHBoxLayout(tabWidget);
297 tabWidgetLayout->setSpacing(0);
298 tabWidgetLayout->setContentsMargins(0, 0, 0, 0);
299 tabWidget->setLayout(tabWidgetLayout);
300 mainLayout->addWidget(tabWidget);
308 refresh->setFocusPolicy(Qt::NoFocus);
309 button->setFocusPolicy(Qt::NoFocus);
312 QWidget *centerWidget =
new QWidget(mainWidget);
313 QHBoxLayout *centerWidgetLayout =
new QHBoxLayout(centerWidget);
314 centerWidgetLayout->setSpacing(2);
315 centerWidgetLayout->setContentsMargins(0, 5, 0, 0);
316 centerWidget->setLayout(centerWidgetLayout);
317 mainLayout->addWidget(centerWidget);
330 connect(refresh, SIGNAL(clicked()), SLOT(
refreshItems()));
336 G_CONNECTION_PTR->connect(className(), MusicSongsContainerWidget::className());
360 case 0:
m_searchEdit->
editor()->setPlaceholderText(tr(
"Please input search song words"));
break;
361 case 1:
m_searchEdit->
editor()->setPlaceholderText(tr(
"Please input search artist words"));
break;
362 case 2:
m_searchEdit->
editor()->setPlaceholderText(tr(
"Please input search album words"));
break;
363 case 3:
m_searchEdit->
editor()->setPlaceholderText(tr(
"Please input search year words"));
break;
364 case 4:
m_searchEdit->
editor()->setPlaceholderText(tr(
"Please input search genre words"));
break;
392 #if TTK_QT_VERSION_CHECK(5,0,0)
393 path = QStandardPaths::writableLocation(QStandardPaths::MusicLocation) +
TTK_SEPARATOR;
395 path = QDesktopServices::storageLocation(QDesktopServices::MusicLocation) +
TTK_SEPARATOR;
402 m_sizeLabel->setText(tr(
" (Songs Totol: %1)").arg(files.size()));
406 for(
const QString &path :
qAsConst(files))
428 qApp->processEvents();
469 MusicSongInfoItemList data;
470 for(
const int index :
qAsConst(result))
492 QWidget::resizeEvent(event);
513 data = item.m_artist;
514 label = tr(
"Artist");
538 if(!statistic.contains(data))
540 statistic.insert(data, 1);
544 statistic.insert(data, statistic[data] + 1);
TTK_MODULE_EXPORT QString getExistingDirectory(QWidget *parent)
TTK_MODULE_EXPORT QString generateSongName(const QString &title, const QString &artist)
MusicSongInfoItemList m_containerItems
static QString generateYear(const QString &v)
TTK_MODULE_EXPORT void enableBreakPoint(bool enable)
void mappedSearchRow(int pos, int &row) const
static const QString ScrollBarStyle04
#define QtItemSetTextAlignment(p, a)
Item text alignment.
static QString generateAlbum(const QString &v)
TTKSearchItems m_searchResultItems
MusicSearchEdit * editor() const
static const QString ColorStyle01
Color.
The class of the local song item information.
static const QString ColorStyle02
static const QString PushButtonStyle03
The namespace of the process utils.
#define TTK_SIGNLE_SHOT(...)
static QString generateArtist(const QString &v)
TTK_MODULE_EXPORT bool isBreakPointEnabled()
static const QString BackgroundStyle01
Background.
static QString generateGenre(const QString &v)
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.
TTK_MODULE_EXPORT bool isNetworkUrl(const QString &path)