TTKMusicPlayer  3.7.0.0
TTKMusicPlayer imitates Kugou UI, the music player uses of qmmp core library based on Qt for windows and linux
musicfileassociationwidget.cpp
Go to the documentation of this file.
2 #include "ui_musicfileassociationwidget.h"
3 #include "musicsettingwidget.h"
4 #include "musicformats.h"
5 
8 {
9  setAttribute(Qt::WA_TranslucentBackground, false);
10  setSelectionMode(QAbstractItemView::ExtendedSelection);
11  setColumnCount(2);
12 
13  QHeaderView *headerView = horizontalHeader();
14  headerView->resizeSection(0, 30);
15 #ifdef Q_OS_UNIX
16  headerView->resizeSection(1, 219);
17 #else
18  headerView->resizeSection(1, 222);
19 #endif
20  verticalScrollBar()->setStyleSheet(TTK::UI::ScrollBarStyle01);
21 
22  addCellItems();
23 }
24 
26 {
27  QStringList formats;
28  const TTKIntList &unsupports = uncheckedIndexList();
29 
30  for(int i = 0; i < unsupports.count(); ++i)
31  {
32  const QTableWidgetItem *it = item(unsupports[i], 1);
33  if(it)
34  {
35  formats << it->text();
36  }
37  }
38 
39  G_SETTING_PTR->setValue(MusicSettingManager::FileAssociationValue, formats.join(","));
40 }
41 
43 {
44  Q_UNUSED(column);
45  QTableWidgetItem *it = nullptr;
46 
47  it = item(row, 0);
48  const Qt::CheckState status = TTKStaticCast(Qt::CheckState, it->data(TTK_CHECKED_ROLE).toInt());
49  it->setData(TTK_CHECKED_ROLE, status == Qt::Checked ? Qt::Unchecked : Qt::Checked);
50 
51  it = item(row, 1);
52  it->setForeground(status == Qt::Checked ? Qt::gray : QColor(0xE6, 0x73, 0x00));
53 }
54 
56 {
58 
59  for(int i = 0; i < rowCount(); ++i)
60  {
61  item(i, 1)->setForeground(!checked ? Qt::gray : QColor(0xE6, 0x73, 0x00));
62  }
63 }
64 
66 {
67  QStringList formats = MusicFormats::supportMusicFormats();
68  setRowCount(formats.count());
69  std::sort(formats.begin(), formats.end());
70 
71  const QString &fileAssociationValue = G_SETTING_PTR->value(MusicSettingManager::FileAssociationValue).toString();
72  const QStringList &unsupports = fileAssociationValue.split(",");
73 
74  for(int i = 0; i < formats.count(); ++i)
75  {
76  const bool v = unsupports.contains(formats[i]);
77 
78  QTableWidgetItem *item = new QTableWidgetItem;
79  item->setData(TTK_CHECKED_ROLE, v ? Qt::Unchecked : Qt::Checked);
80  setItem(i, 0, item);
81 
82  item = new QTableWidgetItem;
83  item->setText(formats[i]);
84  item->setForeground(v ? Qt::gray : QColor(0xE6, 0x73, 0x00));
85  QtItemSetTextAlignment(item, Qt::AlignLeft | Qt::AlignVCenter);
86  setItem(i, 1, item);
87  }
88 }
89 
90 
91 
93  : MusicAbstractMoveDialog(parent),
95 {
96  m_ui->setupUi(this);
97  setFixedSize(size());
98  setBackgroundLabel(m_ui->background);
99 
100  m_ui->topTitleCloseButton->setIcon(QIcon(":/functions/btn_close_hover"));
101  m_ui->topTitleCloseButton->setStyleSheet(TTK::UI::ToolButtonStyle04);
102  m_ui->topTitleCloseButton->setCursor(QCursor(Qt::PointingHandCursor));
103  m_ui->topTitleCloseButton->setToolTip(tr("Close"));
104  connect(m_ui->topTitleCloseButton, SIGNAL(clicked()), SLOT(close()));
105 
106  m_ui->confirmButton->setStyleSheet(TTK::UI::PushButtonStyle04);
107  m_ui->selectAllCheckButton->setStyleSheet(TTK::UI::CheckBoxStyle01);
108 #ifdef Q_OS_UNIX
109  m_ui->confirmButton->setFocusPolicy(Qt::NoFocus);
110  m_ui->selectAllCheckButton->setFocusPolicy(Qt::NoFocus);
111 #endif
112 
113  connect(m_ui->confirmButton, SIGNAL(clicked()), SLOT(confirmButtonClicked()));
114  connect(m_ui->selectAllCheckButton, SIGNAL(clicked(bool)), m_ui->itemTableWidget, SLOT(checkedItemsStatus(bool)));
115 }
116 
118 {
119  m_ui->itemTableWidget->uncheckedDataList();
120  accept();
121 }
122 
123 
124 
126 {
127  QStringList formats = MusicFormats::supportMusicFormats();
128 
129  for(const QString &unsupport : TTK::unsupportAssociations())
130  {
131  if(formats.contains(unsupport))
132  {
133  formats.removeOne(unsupport);
134  }
135  }
136  return formats;
137 }
138 
140 {
141  return G_SETTING_PTR->value(MusicSettingManager::FileAssociationValue).toString().split(",");
142 }
The class of the file association widget.
#define TTKStaticCast(x, y)
Definition: ttkglobal.h:159
void setBackgroundLabel(QLabel *label)
static const QString CheckBoxStyle01
CheckBox.
voidpf void uLong size
Definition: ioapi.h:136
MusicFileAssociationTableWidget(QWidget *parent=nullptr)
#define QtItemSetTextAlignment(p, a)
Item text alignment.
Definition: ttkqtcompat.h:45
The class of the fill item table widget.
TTK_MODULE_EXPORT QStringList supportAssociations()
QList< int > TTKIntList
Definition: ttkqtglobal.h:188
static const QString ScrollBarStyle01
ScrollBar.
static QStringList supportMusicFormats()
static const QString PushButtonStyle04
TTK_MODULE_EXPORT QStringList unsupportAssociations()
MusicFileAssociationWidget(QWidget *parent=nullptr)
The class of the moving dialog base.
TTKIntList uncheckedIndexList() const
Ui::MusicFileAssociationWidget * m_ui
static const QString ToolButtonStyle04
virtual void itemCellClicked(int row, int column) override
#define TTK_CHECKED_ROLE
#define G_SETTING_PTR