2 #include "ui_musicqmmppluginwidget.h"
3 #include "ui_musicserverpluginwidget.h"
37 property.m_type = path;
48 property.m_type = path;
59 property.m_type = path;
70 property.m_type = path;
81 property.m_type = path;
103 default:
return false;
109 QDialog *dialog =
nullptr;
124 dialog->deleteLater();
163 setIcon(3, QIcon(
":/contextMenu/btn_setting"));
166 const QColor &color = enabled ? (state ? QColor(0xE6, 0x73, 0x00) : QColor(0x00, 0x00, 0x00)) : QColor(0xBB, 0xBB, 0xBB);
167 setData(1, Qt::ForegroundRole, color);
168 setData(2, Qt::ForegroundRole, color);
183 setFixedSize(
size());
186 m_ui->topTitleCloseButton->setIcon(QIcon(
":/functions/btn_close_hover"));
188 m_ui->topTitleCloseButton->setCursor(QCursor(Qt::PointingHandCursor));
189 m_ui->topTitleCloseButton->setToolTip(tr(
"Close"));
190 connect(
m_ui->topTitleCloseButton, SIGNAL(clicked()), SLOT(close()));
192 #if TTK_QT_VERSION_CHECK(5,0,0)
193 m_ui->treeWidget->header()->setSectionsMovable(
false);
194 m_ui->treeWidget->header()->setSectionResizeMode(0, QHeaderView::Fixed);
196 m_ui->treeWidget->header()->setMovable(
false);
197 m_ui->treeWidget->header()->setResizeMode(0, QHeaderView::Fixed);
199 m_ui->treeWidget->setHeaderLabels({{}, tr(
"Description"), tr(
"Name"), {}});
204 m_ui->treeWidget->setItemDelegateForColumn(0, delegateCheck);
208 delegateTitle->
setAlignment(Qt::AlignLeft | Qt::AlignVCenter);
210 m_ui->treeWidget->setItemDelegateForColumn(1, delegateTitle);
214 delegateName->
setAlignment(Qt::AlignLeft | Qt::AlignVCenter);
216 m_ui->treeWidget->setItemDelegateForColumn(2, delegateName);
218 QItemDelegate *delegateSetting =
new QItemDelegate(
this);
219 m_ui->treeWidget->setItemDelegateForColumn(3, delegateSetting);
221 m_ui->treeWidget->setColumnWidth(0, 65);
222 m_ui->treeWidget->setColumnWidth(1, 210);
223 m_ui->treeWidget->setColumnWidth(2, 120);
224 m_ui->treeWidget->setColumnWidth(3, 70);
230 m_ui->treeWidget->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
232 m_ui->treeWidget->setFocusPolicy(Qt::NoFocus);
237 connect(
m_ui->treeWidget, SIGNAL(itemClicked(QTreeWidgetItem*,
int)), SLOT(
pluginItemChanged(QTreeWidgetItem*,
int)));
246 QTreeWidgetItem *parent = item->parent();
252 for(
int i = 0; i < parent->childCount(); ++i)
254 QTreeWidgetItem *it = parent->child(i);
256 it->setData(1, Qt::ForegroundRole, QColor(0x00, 0x00, 0x00));
257 it->setData(2, Qt::ForegroundRole, QColor(0x00, 0x00, 0x00));
262 item->setData(column,
TTK_CHECKED_ROLE, status == Qt::Checked ? Qt::Unchecked : Qt::Checked);
265 const QColor &color = (status != Qt::Checked) ? QColor(0xE6, 0x73, 0x00) : QColor(0x00, 0x00, 0x00);
266 item->setData(1, Qt::ForegroundRole, color);
267 item->setData(2, Qt::ForegroundRole, color);
285 m_ui->treeWidget->blockSignals(
true);
287 QTreeWidgetItem *item =
nullptr;
288 item =
new QTreeWidgetItem(
m_ui->treeWidget, {tr(
"Decoder")});
289 item->setFirstColumnSpanned(
true);
290 item->setExpanded(
true);
295 m_ui->treeWidget->addTopLevelItem(item);
297 item =
new QTreeWidgetItem(
m_ui->treeWidget, {tr(
"Effect")});
298 item->setFirstColumnSpanned(
true);
299 item->setExpanded(
true);
304 m_ui->treeWidget->addTopLevelItem(item);
306 item =
new QTreeWidgetItem(
m_ui->treeWidget, {tr(
"Visualization")});
307 item->setFirstColumnSpanned(
true);
308 item->setExpanded(
true);
313 m_ui->treeWidget->addTopLevelItem(item);
315 item =
new QTreeWidgetItem(
m_ui->treeWidget, {tr(
"Transport")});
316 item->setFirstColumnSpanned(
true);
317 item->setExpanded(
true);
322 m_ui->treeWidget->addTopLevelItem(item);
324 item =
new QTreeWidgetItem(
m_ui->treeWidget, {tr(
"Output")});
325 item->setFirstColumnSpanned(
true);
326 item->setExpanded(
true);
331 m_ui->treeWidget->addTopLevelItem(item);
333 m_ui->treeWidget->blockSignals(
false);
342 setAttribute(Qt::WA_TranslucentBackground,
false);
343 setSelectionMode(QAbstractItemView::ExtendedSelection);
346 QHeaderView *headerView = horizontalHeader();
347 headerView->resizeSection(0, 30);
349 headerView->resizeSection(1, 219);
351 headerView->resizeSection(1, 222);
362 if(file.open(QIODevice::ReadOnly))
365 bytes = file.readAll();
378 QVariantList datas = json.
toVariant().toList();
379 for(
int i = 0; i < datas.count(); ++i)
381 QVariant &var = datas[i];
382 QTableWidgetItem *it = item(i, 0);
384 if(var.isNull() || !it)
389 QVariantMap value = var.toMap();
394 if(!file.open(QIODevice::WriteOnly))
401 #if TTK_QT_VERSION_CHECK(5,0,0) && !TTK_QT_VERSION_CHECK(5,1,0)
402 const qint64 ok = file.write(json.
toJson());
407 TTK_INFO_STREAM(
"Save server unity plugins" << (ok ?
"ok" :
"failed"));
414 QTableWidgetItem *it =
nullptr;
418 it->setData(
TTK_CHECKED_ROLE, status == Qt::Checked ? Qt::Unchecked : Qt::Checked);
421 it->setForeground(status == Qt::Checked ? Qt::gray : QColor(0xE6, 0x73, 0x00));
428 for(
int i = 0; i < rowCount(); ++i)
430 item(i, 1)->setForeground(!checked ? Qt::gray : QColor(0xE6, 0x73, 0x00));
438 if(file.open(QIODevice::ReadOnly))
441 bytes = file.readAll();
455 const QVariantList &datas = json.
toVariant().toList();
456 setRowCount(datas.count());
458 for(
const QVariant &var :
qAsConst(datas))
465 const QVariantMap &value = var.toMap();
466 const bool option = value[
"option"].toBool();
467 const QString &
name = value[
"name"].toString();
468 const QString &tips = value[
"description"].toString() +
TTK_SPACE + value[
"version"].toString();
470 QTableWidgetItem *item =
new QTableWidgetItem;
472 setItem(index, 0, item);
474 item =
new QTableWidgetItem;
477 item->setToolTip(tips);
480 item->setForeground(option ? QColor(0xE6, 0x73, 0x00) : Qt::gray);
482 setItem(index++, 1, item);
494 setFixedSize(
size());
497 m_ui->topTitleCloseButton->setIcon(QIcon(
":/functions/btn_close_hover"));
499 m_ui->topTitleCloseButton->setCursor(QCursor(Qt::PointingHandCursor));
500 m_ui->topTitleCloseButton->setToolTip(tr(
"Close"));
501 connect(
m_ui->topTitleCloseButton, SIGNAL(clicked()), SLOT(close()));
506 m_ui->confirmButton->setFocusPolicy(Qt::NoFocus);
507 m_ui->selectAllCheckButton->setFocusPolicy(Qt::NoFocus);
511 connect(
m_ui->selectAllCheckButton, SIGNAL(clicked(
bool)),
m_ui->itemTableWidget, SLOT(checkedItemsStatus(
bool)));
516 m_ui->itemTableWidget->save();
static QJsonDocument fromVariant(const QVariant &variant)
#define TTKStaticCast(x, y)
static QList< VisualFactory * > factories()
virtual OutputProperties properties() const =0
The class of the label item delegate.
The class of the qmmp plugin item widget.
QVariant toVariant() const
static QJsonDocument fromJson(const QByteArray &json, QJsonParseError *error=0)
MusicQmmpPluginItem(QTreeWidgetItem *parent, InputSourceFactory *factory, const QString &path)
static const QString CheckBoxStyle01
CheckBox.
static const QString SliderStyle06
void setStyleSheet(const QString &style) const
static bool isEnabled(const DecoderFactory *factory)
static const QString PushButtonStyle12
void setEnabled(bool enabled)
virtual EffectProperties properties() const =0
#define QtItemSetTextAlignment(p, a)
Item text alignment.
static void setCurrentFactory(const OutputFactory *factory)
static OutputFactory * currentFactory()
Effect plugin interface (effect factory).
static QList< OutputFactory * > factories()
static QString file(const DecoderFactory *factory)
static bool isEnabled(const VisualFactory *factory)
void setAlignment(Qt::Alignment alignment) const
static const QString ScrollBarStyle03
#define APPCACHE_DIR_FULL
static const QString GroupBoxStyle01
GroupBox.
static const QString ScrollBarStyle01
ScrollBar.
static const QString PushButtonStyle03
Input plugin interface (decoder factory).
#define TTK_INFO_STREAM(msg)
void initialize(bool state, bool enabled, const MusicPluginProperty &property)
static const QString SpinBoxStyle01
SpinBox.
static bool isEnabled(const EffectFactory *factory)
virtual DecoderProperties properties() const =0
static const QString BackgroundStyle01
Background.
void setModuleMode(TTKUInt8 mode) noexcept
static const QString PushButtonStyle04
MusicQmmpPluginItem(QTreeWidgetItem *parent, DecoderFactory *factory, const QString &path)
MusicQmmpPluginItem(QTreeWidgetItem *parent, EffectFactory *factory, const QString &path)
static QList< EffectFactory * > factories()
static QString file(const OutputFactory *factory)
The class of the moving dialog base.
static QString file(const EffectFactory *factory)
static void setEnabled(DecoderFactory *factory, bool enable=true)
static const QString LineEditStyle01
LineEdit.
Visual plugin interface (visual factory).
static const QString ToolButtonStyle04
static const QString RadioButtonStyle01
RadioButton.
static QList< DecoderFactory * > factories()
virtual VisualProperties properties() const =0
The class of the checkbox item delegate.
static const QString ComboBoxStyle01
ComboBox.
Output plugin interface (output factory).
#define TTK_ERROR_STREAM(msg)
QByteArray toJson(JsonFormat format=Indented) const
static QString file(const VisualFactory *factory)
The class of the plugin property.
MusicQmmpPluginItem(QTreeWidgetItem *parent, VisualFactory *factory, const QString &path)
#define TTKDynamicCast(x, y)
void showSettingWidget() const
MusicQmmpPluginItem(QTreeWidgetItem *parent, OutputFactory *factory, const QString &path)