TTKMusicPlayer  3.7.0.0
TTKMusicPlayer imitates Kugou UI, the music player uses of qmmp core library based on Qt for windows and linux
musicsongsearchinterioredit.cpp
Go to the documentation of this file.
6 
8  : MusicSearchEdit(parent),
9  m_popWidget(nullptr),
10  m_suggestRequest(nullptr)
11 {
12  connect(this, SIGNAL(textChanged(QString)), SLOT(textChanged(QString)));
13 
14  m_discoverRequest = G_DOWNLOAD_QUERY_PTR->makeDiscoverListRequest(this);
15  connect(m_discoverRequest, SIGNAL(downLoadDataChanged(QString)), SLOT(discoverInfoFinished(QString)));
17 }
18 
20 {
21  delete m_discoverRequest;
22  delete m_suggestRequest;
23 }
24 
26 {
27  setFocus(Qt::MouseFocusReason);
28  setFocusPolicy(Qt::ClickFocus);
29 
31  setPopWidgetVisible(false);
32 }
33 
34 void MusicSongSearchInteriorEdit::setText(const QString &text)
35 {
36  blockSignals(true);
37  MusicSearchEdit::setText(text);
38  blockSignals(false);
39 
40  setPopWidgetVisible(false);
41 }
42 
44 {
45  delete m_suggestRequest;
47  connect(m_suggestRequest, SIGNAL(downLoadDataChanged(QString)), SLOT(suggestDataChanged()));
49 
50  if(text.trimmed().isEmpty())
51  {
52  m_popWidget->initialize(this);
53  }
54 
55  if(m_popWidget->height() != 0)
56  {
57  setPopWidgetVisible(true);
58  }
59 }
60 
61 void MusicSongSearchInteriorEdit::selectedTextChanged(const QString &text, bool update)
62 {
63  if(update)
64  {
65  setText(text);
66  }
67  else
68  {
69  blockSignals(true);
70  MusicSearchEdit::setText(text);
71  blockSignals(false);
72  }
73 }
74 
76 {
77  if(!m_popWidget)
78  {
79  return;
80  }
81 
82  QStringList names;
83  for(const MusicResultDataItem &item : m_suggestRequest->items())
84  {
85  names << item.m_name;
86  }
87 
88  if(text().trimmed().isEmpty())
89  {
90  // workaround to clear border stylesheet
91  QWidget *widget = TTKStaticCast(QWidget*, m_popWidget->parent());
92  const QSize &size = widget->size();
93  widget->resize(size.width(), size.height() + 1);
94  widget->resize(size.width(), size.height());
95  }
96  else
97  {
98  if(names.isEmpty())
99  {
100  setPopWidgetVisible(false);
101  }
102  else if(!m_popWidget->isVisible())
103  {
104  setPopWidgetVisible(true);
105  }
106 
107  m_popWidget->addCellItems(names);
108  }
109 }
110 
112 {
113  setPlaceholderText(bytes);
114 }
115 
117 {
118  switch(event->key())
119  {
120  case Qt::Key_Return:
121  case Qt::Key_Enter:
122  {
123  clearFocus();
124  break;
125  }
126  case Qt::Key_Up:
127  {
128  m_popWidget->selectRow(true);
129  break;
130  }
131  case Qt::Key_Down:
132  {
133  m_popWidget->selectRow(false);
134  break;
135  }
136  default: break;
137  }
138 
140 }
141 
143 {
144  MusicSearchEdit::mousePressEvent(event);
145  if(m_popWidget && !m_popWidget->isVisible())
146  {
147  textChanged(text());
148  }
149 }
150 
152 {
153  MusicSearchEdit::focusOutEvent(event);
154  if(m_popWidget && m_popWidget->isVisible())
155  {
156  m_popWidget->close();
157  }
158 }
159 
161 {
162  if(show)
163  {
164  m_popWidget->raise();
165  m_popWidget->show();
166  }
167  else
168  {
169  m_popWidget->lower();
170  m_popWidget->hide();
171  }
172 }
MusicSongSearchInteriorEdit(QWidget *parent=nullptr)
#define TTKStaticCast(x, y)
Definition: ttkglobal.h:159
The class of the search line edit widget.
The class of the search result data item.
MusicDiscoverListRequest * m_discoverRequest
void addCellItems(const QStringList &names)
virtual void keyReleaseEvent(QKeyEvent *event) override
voidpf void uLong size
Definition: ioapi.h:136
virtual void startToSearch()=0
void discoverInfoFinished(const QString &bytes)
virtual void focusOutEvent(QFocusEvent *event) overridefinal
The class of the query suggest download data from net.
const MusicResultDataItemList & items() const
virtual void startToSearch(const QString &value)
The class of the search history Config.
MusicSongSuggestRequest * m_suggestRequest
#define G_DOWNLOAD_QUERY_PTR
virtual void mousePressEvent(QMouseEvent *event) overridefinal
virtual void keyReleaseEvent(QKeyEvent *event) overridefinal
MusicSongSearchPopWidget * m_popWidget
void selectedTextChanged(const QString &text, bool update)