TTKMusicPlayer  4.1.3.0
TTKMusicPlayer imitates Kugou UI, the music player uses of qmmp core library based on Qt for windows and linux
musiccloudtablewidget.cpp
Go to the documentation of this file.
2 #include "musicconnectionpool.h"
3 #include "musicnumberutils.h"
4 #include "musictoastlabel.h"
5 
6 Q_DECLARE_METATYPE(MusicCloudDataItem)
7 
10 {
11  setColumnCount(4);
12 
13  QHeaderView *headerView = horizontalHeader();
14  headerView->resizeSection(0, 10);
15  headerView->resizeSection(1, 168);
16  headerView->resizeSection(2, 83);
17  headerView->resizeSection(3, 50);
18 
20  setItemDelegateForColumn(2, m_progressBarDelegate);
21  setSelectionMode(QAbstractItemView::ExtendedSelection);
22 
24  verticalScrollBar()->setStyleSheet(TTK::UI::ScrollBarStyle03);
25 
26  setFixedHeight(0);
27 
28  G_CONNECTION_PTR->setValue(className(), this);
29 }
30 
32 {
33  G_CONNECTION_PTR->removeValue(this);
34 }
35 
37 {
38  QHeaderView *headerView = horizontalHeader();
39  QTableWidgetItem *item = new QTableWidgetItem;
40  setItem(index, 0, item);
41 
42  item = new QTableWidgetItem;
43  item->setToolTip(record.name());
44  item->setText(TTK::Widget::elidedText(font(), item->toolTip(), Qt::ElideRight, headerView->sectionSize(1) - 20));
45  item->setForeground(QColor(TTK::UI::Color01));
46  QtItemSetTextAlignment(item, Qt::AlignLeft | Qt::AlignVCenter);
47  setItem(index, 1, item);
48 
49  item = new QTableWidgetItem;
50  item->setData(TTK_PROGRESS_ROLE, 100);
51  setItem(index, 2, item);
52 
53  item = new QTableWidgetItem(record.sizeStr());
54  item->setForeground(QColor(TTK::UI::Color01));
55  QtItemSetTextAlignment(item, Qt::AlignRight | Qt::AlignVCenter);
56  item->setData(TTK_TIME_ROLE, record.addTimeStr());
57  setItem(index, 3, item);
58 
59  setFixedHeight(totalHeight());
60 }
61 
62 
65 {
66  setColumnCount(3);
67 
68  QHeaderView *headerView = horizontalHeader();
69  headerView->resizeSection(0, 10);
70  headerView->resizeSection(1, 251);
71  headerView->resizeSection(2, 50);
72 
74  setSelectionMode(QAbstractItemView::ExtendedSelection);
75 
77  verticalScrollBar()->setStyleSheet(TTK::UI::ScrollBarStyle03);
78 
79  setFixedHeight(0);
80 }
81 
83 {
84  const int count = rowCount() + 1;
85  setRowCount(count);
86 
87  MusicSong record;
88  record.setName(item.m_data.m_name);
89  record.setPath(item.m_path);
91 
92  addCellItem(count - 1, record);
93 }
94 
96 {
97  if(!isValid())
98  {
99  MusicToastLabel::popup(tr("Please select one item first"));
100  return;
101  }
102 
103  QTableWidgetItem *it = item(currentRow(), 0);
104  if(it == nullptr)
105  {
106  return;
107  }
108 
109  const QString data(it->data(TTK_DATA_ROLE).toString());
110  if(!data.isEmpty())
111  {
112  Q_EMIT reuploadFilesToServer({data});
113  }
114 }
115 
117 {
118  if(!isValid())
119  {
120  MusicToastLabel::popup(tr("Please select one item first"));
121  return;
122  }
123 
124  QStringList datas;
125  for(const int index : selectedIndexList())
126  {
127  QTableWidgetItem *it = item(index, 0);
128  if(it == nullptr)
129  {
130  continue;
131  }
132 
133  const QString data(it->data(TTK_DATA_ROLE).toString());
134  if(!data.isEmpty())
135  {
136  datas << data;
137  }
138  }
139 
140  if(!datas.isEmpty())
141  {
142  Q_EMIT reuploadFilesToServer(datas);
143  }
144 }
145 
147 {
148  QHeaderView *headerView = horizontalHeader();
149  QTableWidgetItem *item = new QTableWidgetItem;
150  item->setData(TTK_DATA_ROLE, record.path());
151  setItem(index, 0, item);
152 
153  item = new QTableWidgetItem;
154  item->setToolTip(record.name());
155  item->setText(TTK::Widget::elidedText(font(), item->toolTip(), Qt::ElideRight, headerView->sectionSize(1) - 20));
156  item->setForeground(QColor(TTK::UI::Color01));
157  QtItemSetTextAlignment(item, Qt::AlignLeft | Qt::AlignVCenter);
158  setItem(index, 1, item);
159 
160  item = new QTableWidgetItem(record.sizeStr());
161  item->setForeground(QColor(TTK::UI::Color01));
162  QtItemSetTextAlignment(item, Qt::AlignRight | Qt::AlignVCenter);
163  item->setData(TTK_TIME_ROLE, record.addTimeStr());
164  setItem(index, 2, item);
165 
166  setFixedHeight(totalHeight());
167 }
168 
169 void MusicCloudUploadTableWidget::contextMenuEvent(QContextMenuEvent *event)
170 {
171  Q_UNUSED(event);
172  QMenu menu(this);
173  menu.setStyleSheet(TTK::UI::MenuStyle02);
174 
175  const bool status = !(m_songs->isEmpty() || TTK::String::isNetworkUrl(currentSongPath()));
176  menu.addAction(tr("Song Info..."), this, SLOT(showFileInformation()))->setEnabled(status);
177  menu.addAction(QIcon(":/contextMenu/btn_local_file"), tr("Open File Dir"), this, SLOT(openFileDir()))->setEnabled(status);
178  menu.addSeparator();
179 
180  menu.addAction(QIcon(":/contextMenu/btn_delete"), tr("Delete"), this, SLOT(removeItemAt()))->setEnabled(status);
181  menu.addAction(tr("Delete All"), this, SLOT(clearItems()))->setEnabled(status);
182  menu.addSeparator();
183 
184  menu.addAction(tr("Reupload"), this, SLOT(reuploadFile()))->setEnabled(status);
185  menu.addAction(tr("Reupload All"), this, SLOT(reuploadFiles()))->setEnabled(status);
186  menu.addSeparator();
187  menu.exec(QCursor::pos());
188 }
QString sizeStr() const noexcept
Definition: musicsong.h:73
QString path() const noexcept
Definition: musicsong.h:90
The class of the cloud shared song download table widget.
virtual void contextMenuEvent(QContextMenuEvent *event) overridefinal
#define TTK_PROGRESS_ROLE
#define QtItemSetTextAlignment(p, a)
Item text alignment.
Definition: ttkqtcompat.h:45
TTK_MODULE_EXPORT QString sizeByteToLabel(qint64 size)
QString m_name
Definition: qsyncdataitem.h:29
#define G_CONNECTION_PTR
void setName(const QString &n) noexcept
Definition: musicsong.h:78
static void popup(const QString &text)
virtual void addCellItem(int index, const MusicSong &record) overridefinal
static const QString ScrollBarStyle03
The class of the cloud data item.
void uploadFileError(const MusicCloudDataItem &item)
virtual void addCellItem(int index, const MusicSong &record) overridefinal
TTK_MODULE_EXPORT void setTransparent(QWidget *widget, int alpha)
void setSizeStr(const QString &s) noexcept
Definition: musicsong.h:69
TTK_MODULE_EXPORT QString elidedText(const QFont &font, const QString &text, Qt::TextElideMode mode, int width)
The class of the download abstract table widget.
MusicCloudUploadTableWidget(QWidget *parent=nullptr)
QString name() const noexcept
Definition: musicsong.h:82
static const QString MenuStyle02
QString addTimeStr() const noexcept
Definition: musicsong.h:65
TTKIntList selectedIndexList() const
static constexpr unsigned int Color01
Color QRgb.
Definition: musicuiobject.h:32
The class of the music song info.
Definition: musicsong.h:28
void setPath(const QString &p) noexcept
Definition: musicsong.h:86
#define TTK_TIME_ROLE
void reuploadFilesToServer(const QStringList &items)
#define TTK_DATA_ROLE
TTK_MODULE_EXPORT bool isNetworkUrl(const QString &path)