TTKMusicPlayer  4.1.3.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 "musictoastlabel.h"
7 
8 #include <QButtonGroup>
9 
11  : MusicAbstractMoveDialog(parent),
13  m_ui(new Ui::MusicConnectTransferWidget),
14  m_currentIndex(-1),
15  m_currentDeviceItem(nullptr)
16 {
17  m_ui->setupUi(this);
18  setFixedSize(size());
19  setBackgroundLabel(m_ui->background);
20  setStyleSheet(TTK::UI::ScrollBarStyle01);
21 
22  m_songCountLabel = m_ui->songCountLabel->text();
23  m_selectCountLabel = m_ui->selectCountLabel->text();
24 
25  m_ui->topTitleCloseButton->setIcon(QIcon(":/functions/btn_close_hover"));
26  m_ui->topTitleCloseButton->setStyleSheet(TTK::UI::ToolButtonStyle04);
27  m_ui->topTitleCloseButton->setCursor(QCursor(Qt::PointingHandCursor));
28  m_ui->topTitleCloseButton->setToolTip(tr("Close"));
29  connect(m_ui->topTitleCloseButton, SIGNAL(clicked()), SLOT(close()));
30 
31  m_ui->allSelectedcheckBox->setStyleSheet(TTK::UI::CheckBoxStyle03);
32  m_ui->allSelectedcheckBox->setCursor(QCursor(Qt::PointingHandCursor));
33  m_ui->allSelectedcheckBox->setText(tr("All"));
34  connect(m_ui->allSelectedcheckBox, SIGNAL(clicked(bool)), SLOT(selectedAllItems(bool)));
35 
36  m_ui->transferUSBButton->setStyleSheet(TTK::UI::PushButtonStyle04);
37  m_ui->transferUSBButton->setCursor(QCursor(Qt::PointingHandCursor));
38  connect(m_ui->transferUSBButton, SIGNAL(clicked()), SLOT(startToTransferFiles()));
39 
40  m_ui->searchLineEdit->setStyleSheet(TTK::UI::LineEditStyle03);
41  connect(m_ui->searchLineEdit, SIGNAL(cursorPositionChanged(int,int)), SLOT(searchResultChanged(int,int)));
42 
44  connect(m_thread, SIGNAL(transferFileFinished(QString)), m_ui->completeTableWidget, SLOT(addCellItem(QString)));
45 
46 #ifdef Q_OS_UNIX
47  m_ui->allSelectedcheckBox->setFocusPolicy(Qt::NoFocus);
48  m_ui->transferUSBButton->setFocusPolicy(Qt::NoFocus);
49  m_ui->searchLineLabel->setFocusPolicy(Qt::NoFocus);
50 #endif
51 
53 }
54 
56 {
57  delete m_ui;
58  delete m_thread;
59 }
60 
62 {
63  m_currentDeviceItem = item;
64  m_ui->deviceInfoLabel->setToolTip(item->m_name + "(" + item->m_path + ")");
65  m_ui->deviceInfoLabel->setText(TTK::Widget::elidedText(m_ui->deviceInfoLabel->font(), m_ui->deviceInfoLabel->toolTip(), Qt::ElideRight, 220));
66 
67  m_ui->songCountLabel->setText(m_songCountLabel.arg(0));
68  m_ui->selectCountLabel->setText(m_selectCountLabel.arg(0).arg(0));
69 }
70 
72 {
73  MusicSongItemList items;
75 
76  m_ui->playListLayoutWidget->setStyleSheet(TTK::UI::BackgroundStyle01);
77  QButtonGroup *buttonGroup = new QButtonGroup(this);
79 
80  for(int i = 0; i < items.count(); ++i)
81  {
82  QPushButton *button = new QPushButton(QString("%1(%2)").arg(items[i].m_itemName).arg(items[i].m_songs.count()), this);
83  button->setStyleSheet(TTK::UI::PushButtonStyle04);
84  button->setCursor(QCursor(Qt::PointingHandCursor));
85  button->setFixedSize(120, 25);
86 #ifdef Q_OS_UNIX
87  button->setFocusPolicy(Qt::NoFocus);
88 #endif
89  m_ui->playListLayout->addWidget(button);
90  buttonGroup->addButton(button, i);
91  }
92 
93  int count = 0;
94  for(const MusicSongItem &item : qAsConst(items))
95  {
96  count += item.m_songs.count();
97  }
98  m_ui->songCountLabel->setText(m_songCountLabel.arg(count));
99 }
100 
101 void MusicConnectTransferWidget::addCellItems(const MusicSongList &songs)
102 {
103  m_ui->listTableWidget->removeItems();
104  if(m_ui->allSelectedcheckBox->isChecked())
105  {
106  m_ui->allSelectedcheckBox->click();
107  }
108  m_ui->listTableWidget->addCellItems(songs);
109 }
110 
112 {
113  QStringList paths;
114  const TTKIntList &list = m_ui->listTableWidget->checkedIndexList();
115  if(list.isEmpty())
116  {
117  MusicToastLabel::popup(tr("Please select one item first"));
118  return paths;
119  }
120 
121  if(m_currentIndex == -1 || m_currentIndex > m_containerItems.count())
122  {
123  return paths;
124  }
125 
126  for(int row : qAsConst(list))
127  {
128  mappedSearchRow(m_ui->searchLineEdit->text().length(), row);
129  paths << m_containerItems[row].path();
130  }
131 
132  return paths;
133 }
134 
136 {
137  const TTKIntList &list = m_ui->listTableWidget->checkedIndexList();
138  qint64 size = 0;
139 
140  for(int i = 0; i < list.count(); ++i)
141  {
142  size += m_containerItems[list[i]].size();
143  }
144 
145  const double dSize = (size * TTK_RN_MAX / TTK_SN_MB2B) * 1.0 / TTK_RN_MAX;
146  m_ui->selectCountLabel->setText(m_selectCountLabel.arg(list.count()).arg(dSize));
147 }
148 
150 {
151  MusicSongItemList items;
153 
154  if(index >= items.count() || index < 0)
155  {
156  return;
157  }
158 
160  m_ui->searchLineEdit->clear();
161  m_containerItems = items[m_currentIndex = index].m_songs;
163 }
164 
166 {
167  m_ui->listTableWidget->checkedItemsStatus(checked);
169 }
170 
172 {
173  const QStringList &names = selectedFiles();
174  if(names.isEmpty())
175  {
176  return;
177  }
178 
180  m_thread->start();
181 }
182 
184 {
185  TTKIntList result;
186  for(int i = 0; i < m_containerItems.count(); ++i)
187  {
188  if(m_containerItems[i].path().contains(m_ui->searchLineEdit->text(), Qt::CaseInsensitive))
189  {
190  result << i;
191  }
192  }
193 
194  MusicSongList data;
195  for(const int index : qAsConst(result))
196  {
197  data.append(m_containerItems[index]);
198  }
199 
200  m_searchResultLevel = column;
201  m_searchResultItems.insert(column, result);
202 
203  addCellItems(data);
204 }
void setBackgroundLabel(QLabel *label)
static const QString CheckBoxStyle03
void mappedSearchRow(int pos, int &row) const
voidpf void uLong size
Definition: ioapi.h:136
MusicConnectTransferWidget(QWidget *parent=nullptr)
void addCellItems(const MusicSongList &songs)
static const QString LineEditStyle03
#define TTK_RN_MAX
Definition: ttkglobal.h:364
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:204
#define qAsConst
Definition: ttkqtglobal.h:51
The class of the transfer file to mobile widget.
static const QString ScrollBarStyle01
ScrollBar.
#define TTK_SIGNLE_SHOT(...)
Definition: ttkqtglobal.h:193
static const QString BackgroundStyle01
Background.
Definition: musicuiobject.h:77
#define TTK_SEPARATOR
Definition: ttkglobal.h:196
static const QString PushButtonStyle04
static MusicSongsContainerWidget * instance()
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:181
void querySongItemList(MusicSongItemList &songs)
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:319
static const QString ToolButtonStyle04
MusicConnectTransferThread * m_thread
MusicDeviceInfoItem * m_currentDeviceItem