Pith - wedge
#include "WedgeCrypto.h"
#include "WedgeStyle.h"
#include <QFormLayout>
#include <QFrame>
#include <QHBoxLayout>
#include <QLabel>
#include <QSizePolicy>
#include <QSpacerItem>
#include <QVBoxLayout>
#include <QWidget>

static QSpacerItem* makeSpacer(int height) {
	return new QSpacerItem(0, height, QSizePolicy::Minimum, QSizePolicy::Fixed);
}

static QWidget* makeSectionHeader(const QString &title) {
	auto *w = new QWidget();
	auto *h = new QHBoxLayout(w);
	h->setContentsMargins(0, 0, 0, 0);
	h->setSpacing(8);

	auto *label = new QLabel(title);
	label->setStyleSheet("color: #999999; font-size: 8pt;");
	label->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Fixed);
	h->addWidget(label);

	auto *hr = new QFrame();
	hr->setFrameShape(QFrame::HLine);
	hr->setFrameShadow(QFrame::Plain);
	hr->setStyleSheet("color: #cccccc; background-color: #cccccc;");
	hr->setFixedHeight(1);
	hr->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
	h->addWidget(hr, 1);

	return w;
}

CryptoWindow::CryptoWindow(Mode mode, QWidget *parent) : QDialog(parent) {

	setWindowTitle("");
	setFixedWidth(333);
	setStyleSheet(WedgeStyle::sheet());

	auto *layout = new QHBoxLayout(this);
	layout->setContentsMargins(16, 14, 16, 14);
	layout->setSpacing(8);

	phraseEdit = new QLineEdit(this);
	phraseEdit->setEchoMode(QLineEdit::Password);
	phraseEdit->setPlaceholderText("Phrase");
	phraseEdit->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);

	actionBtn = new QPushButton(mode == Encrypt ? "Encrypt" : "Decrypt", this);
	actionBtn->setDefault(true);

	layout->addWidget(phraseEdit);
	layout->addWidget(actionBtn);

	auto submit = [this]() {
		if (!phraseEdit->text().isEmpty()) {
			emit phraseSubmitted(phraseEdit->text());
		}
	};

	connect(actionBtn, &QPushButton::clicked, this, submit);
	connect(phraseEdit, &QLineEdit::returnPressed, this, submit);
}