ChainsProxyPage::ChainsProxyPage(QWidget *parent) : ContentWidget(parent) { setTitle(tr("Application Proxy")); m_proxyType = new NextPageWidget; m_proxyType->setTitle(tr("Proxy Type")); m_addr = new LineEditWidget; m_addr->setTitle(tr("IP address")); m_addr->setPlaceholderText(tr("Required")); m_port = new LineEditWidget; m_port->setTitle(tr("Port")); m_port->setPlaceholderText(tr("Required")); m_username = new LineEditWidget; m_username->setTitle(tr("Username")); m_username->setPlaceholderText(tr("Optional")); m_password = new LineEditWidget; m_password->setTitle(tr("Password")); m_password->setPlaceholderText(tr("Optional")); m_password->textEdit()->setEchoMode(QLineEdit::Password); SettingsGroup *grp = new SettingsGroup; grp->appendItem(m_proxyType); grp->appendItem(m_addr); grp->appendItem(m_port); grp->appendItem(m_username); grp->appendItem(m_password); QVBoxLayout *layout = new QVBoxLayout; layout->setMargin(0); layout->setSpacing(10); layout->addSpacing(20); layout->addWidget(grp); QLabel *tip = new QLabel; tip->setText(tr("Check \"Use a proxy\" in application context menu in Launcher after configured")); tip->setWordWrap(true); layout->addWidget(tip); ButtonTuple *btns = new ButtonTuple; btns->leftButton()->setText(tr("Cancel")); btns->rightButton()->setText(tr("OK")); layout->addWidget(btns); layout->addStretch(); TranslucentFrame *w = new TranslucentFrame; w->setLayout(layout); setContent(w); connect(btns->leftButton(), &QPushButton::clicked, this, &ChainsProxyPage::back); connect(btns->rightButton(), &QPushButton::clicked, this, &ChainsProxyPage::onCheckValue); connect(m_proxyType, &NextPageWidget::clicked, this, &ChainsProxyPage::requestShowTypePage); }
CustomContent::CustomContent(ShortcutModel *model, QWidget *parent) : ContentWidget(parent) , m_conflict(nullptr) , m_model(model) , m_buttonTuple(new ButtonTuple) { setTitle(tr("Shortcuts")); TranslucentFrame *widget = new TranslucentFrame(); QVBoxLayout *layout = new QVBoxLayout(); layout->setMargin(0); layout->setSpacing(10); layout->addSpacing(10); m_commandGroup = new SettingsGroup(); m_name = new LineEditWidget(); m_name->setTitle(tr("Name")); m_name->setPlaceholderText(tr("Required")); m_command = new LineEditWidget(); m_command->setTitle(tr("Command")); m_command->setPlaceholderText(tr("Required")); QPushButton *pushbutton = new QPushButton("..."); pushbutton->setFixedWidth(50); m_command->addRightWidget(pushbutton); m_shortcut = new CustomItem; m_shortcut->setShortcut(""); m_commandGroup->appendItem(m_name); m_commandGroup->appendItem(m_command); m_commandGroup->appendItem(m_shortcut); layout->addWidget(m_commandGroup); QPushButton *cancel = m_buttonTuple->leftButton(); cancel->setText(tr("Cancel")); QPushButton *ok = m_buttonTuple->rightButton(); ok->setText(tr("Add")); m_bottomTip = new QLabel(); m_bottomTip->setWordWrap(true); m_bottomTip->hide(); layout->addWidget(m_buttonTuple); layout->addWidget(m_bottomTip); layout->addStretch(); widget->setLayout(layout); setContent(widget); connect(cancel, SIGNAL(clicked()), this, SIGNAL(back())); connect(ok, SIGNAL(clicked()), this, SLOT(onShortcut())); connect(pushbutton, &QPushButton::clicked, this, &CustomContent::onOpenFile); connect(m_shortcut, &CustomItem::requestUpdateKey, this, &CustomContent::updateKey); connect(model, &ShortcutModel::keyEvent, this, &CustomContent::keyEvent); }
keyboard::CustomEdit::CustomEdit(ShortcutModel *model, QWidget *parent): ContentWidget(parent), m_model(model), m_commandGroup(new SettingsGroup), m_name(new LineEditWidget), m_command(new LineEditWidget), m_short(new CustomItem(this)), m_tip(new QLabel), m_conflict(nullptr) { m_tip->setVisible(false); m_tip->setWordWrap(true); setTitle(tr("Shortcuts")); TranslucentFrame *widget = new TranslucentFrame; QVBoxLayout *mainlayout = new QVBoxLayout; QHBoxLayout *buttonlayout = new QHBoxLayout; mainlayout->setMargin(0); buttonlayout->setMargin(0); mainlayout->setSpacing(0); buttonlayout->setSpacing(1); m_command->setPlaceholderText(tr("Required")); QPushButton *pushbutton = new QPushButton("..."); pushbutton->setFixedWidth(50); m_command->addRightWidget(pushbutton); m_commandGroup->appendItem(m_name); m_commandGroup->appendItem(m_command); m_commandGroup->appendItem(m_short); QPushButton *cancelButton = new QPushButton(tr("Cancel")); QPushButton *okButton = new QPushButton(tr("Save")); buttonlayout->addWidget(cancelButton); buttonlayout->addWidget(okButton); mainlayout->addSpacing(10); mainlayout->addWidget(m_commandGroup); mainlayout->addWidget(m_tip); mainlayout->addSpacing(10); mainlayout->addLayout(buttonlayout); widget->setLayout(mainlayout); setContent(widget); connect(cancelButton, &QPushButton::clicked, this, &CustomEdit::back); connect(pushbutton, &QPushButton::clicked, this, &CustomEdit::onOpenFile); connect(m_short, &CustomItem::requestUpdateKey, this, &CustomEdit::onUpdateKey); connect(okButton, &QPushButton::clicked, this, &CustomEdit::onSaveAccels); connect(model, &ShortcutModel::keyEvent, this, &CustomEdit::keyEvent); }
UserLicense::UserLicense(QWidget *parent) : ContentWidget(parent) { setTitle(tr("End User License Agreement")); TranslucentFrame* widget = new TranslucentFrame; widget->setObjectName("copyrightWidget"); QVBoxLayout *layout =new QVBoxLayout(); m_body = new TipsLabel; m_body->setWordWrap(true); layout->addWidget(m_body); widget->setLayout(layout); setContent(widget); m_body->setText(getLicense(":/systeminfo/license/deepin-end-user-license-agreement_%1.txt", "title")); }
UpdateItem::UpdateItem(QFrame *parent) :SettingsItem(parent), m_appIcon(new SmallLabel), m_appName(new SmallLabel), m_appVersion(new SmallLabel), m_appChangelog(new SmallLabel), m_details(new QPushButton) { TranslucentFrame *iconContainer = new TranslucentFrame; iconContainer->setFixedWidth(36); m_iconLayout = new QVBoxLayout; m_iconLayout->setMargin(0); m_iconLayout->setSpacing(0); m_iconLayout->addWidget(m_appIcon, 0, Qt::AlignCenter); m_iconLayout->addStretch(); iconContainer->setLayout(m_iconLayout); m_appIcon->setFixedSize(36, 36); QFont changelogFont("Noto Mono"); changelogFont.setPointSize(10); m_appChangelog->setFont(changelogFont); m_appChangelog->setWordWrap(true); m_appChangelog->setTextFormat(Qt::RichText); m_appChangelog->setTextInteractionFlags(Qt::NoTextInteraction); m_appChangelog->setContextMenuPolicy(Qt::NoContextMenu); m_appChangelog->setOpenExternalLinks(true); m_appChangelog->setAlignment(Qt::AlignTop | Qt::AlignLeft); m_appChangelog->setFocusPolicy(Qt::NoFocus); m_appChangelog->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); m_details->setFlat(true); m_details->setText(tr("Details")); QHBoxLayout* logLayout = new QHBoxLayout; logLayout->setMargin(0); logLayout->setSpacing(0); logLayout->addWidget(m_appChangelog, 1); logLayout->addWidget(m_details); QHBoxLayout *nameLayout = new QHBoxLayout; nameLayout->setMargin(0); nameLayout->setSpacing(0); nameLayout->addWidget(m_appName); nameLayout->addSpacing(4); nameLayout->addWidget(m_appVersion); nameLayout->addStretch(); QVBoxLayout* rightLayout = new QVBoxLayout; rightLayout->setMargin(0); rightLayout->setSpacing(0); rightLayout->addStretch(); rightLayout->addLayout(nameLayout); rightLayout->addSpacing(1); rightLayout->addLayout(logLayout); rightLayout->addStretch(); QHBoxLayout* layout = new QHBoxLayout(); layout->setMargin(10); layout->setSpacing(0); layout->addWidget(iconContainer); layout->addSpacing(10); layout->addLayout(rightLayout, 1); setLayout(layout); connect(m_details, &QPushButton::clicked, [this] { m_details->hide(); // The point of this timer is that the calculation should be taken // after the relayout of this item caused by the hide of details button. QTimer::singleShot(0, this, &UpdateItem::expandChangelog); }); // connect(m_openWebsite, &QPushButton::clicked, [this] { // qDebug() << QString("open website %1 to see release notes of %2").arg(m_anchorAddress).arg(m_anchorName); // QDesktopServices::openUrl(m_anchorAddress); // }); setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Expanding); }