TTKMusicPlayer  3.7.0.0
TTKMusicPlayer imitates Kugou UI, the music player uses of qmmp core library based on Qt for windows and linux
musicconnecttransferwidget.cpp
Go to the documentation of this file.
2 #include "ui_musicconnecttransferwidget.h"
4 #include "musicconnectionpool.h"
5 #include "musictoastlabel.h"
8 
9 #include <QButtonGroup>
10 
12  : MusicAbstractMoveDialog(parent),
14  m_ui(new Ui::MusicConnectTransferWidget),
15  m_currentIndex(-1),
16  m_currentDeviceItem(nullptr)
17 {
18  m_ui->setupUi(this);
19  setFixedSize(size());
20  setBackgroundLabel(m_ui->background);
21  setStyleSheet(TTK::UI::ScrollBarStyle01);
22 
23  m_songCountLabel = m_ui->songCountLabel->text();
24  m_selectCountLabel = m_ui->selectCountLabel->text();
25 
26  m_ui->topTitleCloseButton->setIcon(QIcon(":/functions/btn_close_hover"));
27  m_ui->topTitleCloseButton->setStyleSheet(TTK::UI::ToolButtonStyle04);
28  m_ui->topTitleCloseButton->setCursor(QCursor(Qt::PointingHandCursor));
29  m_ui->topTitleCloseButton->setToolTip(tr("Close"));
30  connect(m_ui->topTitleCloseButton, SIGNAL(clicked()), SLOT(close()));
31 
32  m_ui->allSelectedcheckBox->setStyleSheet(TTK::UI::CheckBoxStyle03);
33  m_ui->allSelectedcheckBox->setCursor(QCursor(Qt::PointingHandCursor));
34  m_ui->allSelectedcheckBox->setText(tr("All"));
35  connect(m_ui->allSelectedcheckBox, SIGNAL(clicked(bool)), SLOT(selectedAllItems(bool)));
36 
37  m_ui->transferUSBButton->setStyleSheet(TTK::UI::PushButtonStyle04);
38  m_ui->transferUSBButton->setCursor(QCursor(Qt::PointingHandCursor));
39  connect(m_ui->transferUSBButton, SIGNAL(clicked()), SLOT(startToTransferFiles()));
40 
41  m_ui->searchLineEdit->setStyleSheet(TTK::UI::LineEditStyle03);
42  connect(m_ui->searchLineEdit, SIGNAL(cursorPositionChanged(int,int)), SLOT(searchResultChanged(int,int)));
43 
45  connect(m_thread, SIGNAL(transferFileFinished(QString)), m_ui->completeTableWidget, SLOT(addCellItem(QString)));
46 
47 #ifdef Q_OS_UNIX
48  m_ui->allSelectedcheckBox->setFocusPolicy(Qt::NoFocus);
49  m_ui->transferUSBButton->setFocusPolicy(Qt::NoFocus);
50  m_ui->searchLineLabel->setFocusPolicy(Qt::NoFocus);
51 #endif
52 
54 
55  G_CONNECTION_PTR->setValue(className(), this);
56  G_CONNECTION_PTR->connect(className(), MusicSongsContainerWidget::className());
57 }
58 
60 {
61  G_CONNECTION_PTR->removeValue(this);
62  delete m_ui;
63  delete m_thread;
64 }
65 
67 {
68  m_currentDeviceItem = item;
69  m_ui->deviceInfoLabel->setToolTip(item->m_name + "(" + item->m_path + ")");
70  m_ui->deviceInfoLabel->setText(TTK::Widget::elidedText(m_ui->deviceInfoLabel->font(), m_ui->deviceInfoLabel->toolTip(), Qt::ElideRight, 220));
71 
72  m_ui->songCountLabel->setText(m_songCountLabel.arg(0));
73  m_ui->selectCountLabel->setText(m_selectCountLabel.arg(0).arg(0));
74 }
75 
77 {
78  MusicSongItemList songs;
79  Q_EMIT queryMusicItemList(songs);
80 
81  m_ui->playListLayoutWidget->setStyleSheet(TTK::UI::BackgroundStyle01);
82  QButtonGroup *buttonGroup = new QButtonGroup(this);
84 
85  for(int i = 0; i < songs.count(); ++i)
86  {
87  QPushButton *button = new QPushButton(QString("%1(%2)").arg(songs[i].m_itemName).arg(songs[i].m_songs.count()), this);
88  button->setStyleSheet(TTK::UI::PushButtonStyle04);
89  button->setCursor(QCursor(Qt::PointingHandCursor));
90  button->setFixedSize(120, 25);
91 #ifdef Q_OS_UNIX
92  button->setFocusPolicy(Qt::NoFocus);
93 #endif
94  m_ui->playListLayout->addWidget(button);
95  buttonGroup->addButton(button, i);
96  }
97 
98  int count = 0;
99  for(const MusicSongItem &item : qAsConst(songs))
100  {
101  count += item.m_songs.count();
102  }
103  m_ui->songCountLabel->setText(m_songCountLabel.arg(count));
104 }
105 
106 void MusicConnectTransferWidget::addCellItems(const MusicSongList &songs)
107 {
108  m_ui->listTableWidget->removeItems();
109  if(m_ui->allSelectedcheckBox->isChecked())
110  {
111  m_ui->allSelectedcheckBox->click();
112  }
113  m_ui->listTableWidget->addCellItems(songs);
114 }
115 
117 {
118  QStringList paths;
119  const TTKIntList &list = m_ui->listTableWidget->checkedIndexList();
120  if(list.isEmpty())
121  {
122  MusicToastLabel::popup(tr("Please select one item first"));
123  return paths;
124  }
125 
126  if(m_currentIndex == -1 || m_currentIndex > m_containerItems.count())
127  {
128  return paths;
129  }
130 
131  for(int row : qAsConst(list))
132  {
133  mappedSearchRow(m_ui->searchLineEdit->text().length(), row);
134  paths << m_containerItems[row].path();
135  }
136 
137  return paths;
138 }
139 
141 {
142  const TTKIntList &list = m_ui->listTableWidget->checkedIndexList();
143  qint64 size = 0;
144 
145  for(int i = 0; i < list.count(); ++i)
146  {
147  size += m_containerItems[list[i]].size();
148  }
149 
150  const double dSize = (size * TTK_RN_MAX / TTK_SN_MB2B) * 1.0 / TTK_RN_MAX;
151  m_ui->selectCountLabel->setText(m_selectCountLabel.arg(list.count()).arg(dSize));
152 }
153 
155 {
156  MusicSongItemList songs;
157  Q_EMIT queryMusicItemList(songs);
158 
159  if(index >= songs.count() || index < 0)
160  {
161  return;
162  }
163 
165  m_ui->searchLineEdit->clear();
166  m_containerItems = songs[m_currentIndex = index].m_songs;
168 }
169 
171 {
172  m_ui->listTableWidget->checkedItemsStatus(checked);
174 }
175 
177 {
178  const QStringList &names = selectedFiles();
179  if(names.isEmpty())
180  {
181  return;
182  }
183 
185  m_thread->start();
186 }
187 
189 {
190  TTKIntList result;
191  for(int i = 0; i < m_containerItems.count(); ++i)
192  {
193  if(m_containerItems[i].path().contains(m_ui->searchLineEdit->text(), Qt::CaseInsensitive))
194  {
195  result << i;
196  }
197  }
198 
199  MusicSongList data;
200  for(const int index : qAsConst(result))
201  {
202  data.append(m_containerItems[index]);
203  }
204 
205  m_searchResultLevel = column;
206  m_searchResultItems.insert(column, result);
207 
208  addCellItems(data);
209 }
void setBackgroundLabel(QLabel *label)
void queryMusicItemList(MusicSongItemList &songs)
static const QString CheckBoxStyle03
void mappedSearchRow(int pos, int &row) const
voidpf void uLong size
Definition: ioapi.h:136
#define G_CONNECTION_PTR
MusicConnectTransferWidget(QWidget *parent=nullptr)
void addCellItems(const MusicSongList &songs)
static const QString LineEditStyle03
#define TTK_RN_MAX
Definition: ttkglobal.h:359
The class of the system device info item.
The class of the connect transfer thread.
static void popup(const QString &text)
QList< int > TTKIntList
Definition: ttkqtglobal.h:188
#define qAsConst
Definition: ttkqtglobal.h:53
The class of the transfer file to mobile widget.
static const QString ScrollBarStyle01
ScrollBar.
#define TTK_SIGNLE_SHOT(...)
Definition: ttkqtglobal.h:177
static const QString BackgroundStyle01
Background.
Definition: musicuiobject.h:77
#define TTK_SEPARATOR
Definition: ttkglobal.h:195
static const QString PushButtonStyle04
TTK_MODULE_EXPORT QString elidedText(const QFont &font, const QString &text, Qt::TextElideMode mode, int width)
void setDeviceInfoItem(MusicDeviceInfoItem *item)
#define TTK_SLOT
Definition: ttkqtglobal.h:165
The class of the moving dialog base.
#define QtButtonGroupConnect(p, q, f, s)
Button group connect.
Definition: ttkqtcompat.h:101
void setFilePath(const QString &target, const QStringList &path)
void searchResultChanged(int row, int column)
The class of the music song item.
Definition: musicsong.h:161
Ui::MusicConnectTransferWidget * m_ui
#define TTK_SN_MB2B
Definition: ttkglobal.h:314
static const QString ToolButtonStyle04
MusicConnectTransferThread * m_thread
MusicDeviceInfoItem * m_currentDeviceItem