view include/gui/ui_utils.h @ 11:fc1bf97c528b

*: use C++11 standard I've been meaning to do this for a while, but I didn't want to reimplement the filesystem code. Now we are on C++11 and most compilers from the past 5 centuries should support this now
author Paper <mrpapersonic@gmail.com>
date Sun, 17 Sep 2023 06:14:30 -0400
parents 5c0397762b53
children cde8f67a7c7d
line wrap: on
line source

#ifndef __gui__ui_utils_h
#define __gui__ui_utils_h
#include <QFrame>
#include <QLabel>
#include <QPlainTextEdit>
#include <QSize>
#include <QString>
#include <QWidget>
namespace UiUtils {
bool IsInDarkMode();
void SetPlainTextEditData(QPlainTextEdit* text_edit, QString data);

class Header : public QWidget {
		Q_OBJECT

	public:
		Header(QString title, QWidget* parent = nullptr);
		void SetTitle(QString title);

	private:
		QLabel* static_text_title;
		QFrame* static_text_line;
};

class Paragraph : public QPlainTextEdit {
		Q_OBJECT

	public:
		Paragraph(QString text, QWidget* parent = nullptr);
		QSize minimumSizeHint() const override;
		QSize sizeHint() const override;
};

/* technically a paragraph and a heading is actually a
   "section", but that name is equally as confusing as
   "text paragraph". */
class TextParagraph : public QWidget {
		Q_OBJECT

	public:
		TextParagraph(QString title, QString data, QWidget* parent = nullptr);
		Header* GetHeader();
		Paragraph* GetParagraph();

	private:
		Header* header;
		Paragraph* paragraph;
};

class LabelledTextParagraph : public QWidget {
		Q_OBJECT

	public:
		LabelledTextParagraph(QString title, QString label, QString data, QWidget* parent = nullptr);
		Header* GetHeader();
		Paragraph* GetLabels();
		Paragraph* GetParagraph();

	private:
		Header* header;
		Paragraph* labels;
		Paragraph* paragraph;
};

class SelectableTextParagraph : public QWidget {
		Q_OBJECT

	public:
		SelectableTextParagraph(QString title, QString data, QWidget* parent = nullptr);
		Header* GetHeader();
		Paragraph* GetParagraph();

	private:
		Header* header;
		Paragraph* paragraph;
};
};	   // namespace UiUtils
#endif // __gui__ui_utils_h