diff options
| -rw-r--r-- | src/mainwindow.cc | 109 | ||||
| -rw-r--r-- | src/mainwindow.h | 3 | ||||
| -rw-r--r-- | src/qookie-cast-client.cc | 1 | ||||
| -rw-r--r-- | src/viewer.cc | 48 | ||||
| -rw-r--r-- | src/viewer.h | 10 | 
5 files changed, 117 insertions, 54 deletions
| diff --git a/src/mainwindow.cc b/src/mainwindow.cc index 30680de..1e988bf 100644 --- a/src/mainwindow.cc +++ b/src/mainwindow.cc @@ -36,6 +36,7 @@  #include <QPainter>  #include <QVBoxLayout>  #include <QLineEdit> +#include <QAction>  #include "database.h"  #include "viewer.h" @@ -43,53 +44,71 @@  MainWindow::MainWindow(Database& db)  	: db(db)  { -	//connect(document, SIGNAL(documentStatusChanged(bool)), this, SLOT(updateDocumentStatus(bool))); -	//updateDocumentStatus(document->hasChanged()); -  	setWindowTitle("Qookie"); -	// -	// Create the toolbar -	// -	QToolBar *toolbar = new QToolBar("A toolbar"); -	/* -	QAction *act_load = toolbar->addAction("Load"); -	//  connect(act_load, SIGNAL(triggered()), &document, SLOT(load())); - -	QAction *act_save = toolbar->addAction("Save"); -	//  connect(act_save, SIGNAL(triggered()), &document, SLOT(save())); -	*/ -	// -	// Create the browser docking widget -	// -	QDockWidget *browser = new QDockWidget("Browser"); -	auto w = new QWidget(); -	auto layout = new QVBoxLayout(); -	w->setLayout(layout); - -	auto e = new QLineEdit(); -	layout->addWidget(e); -	connect(e, &QLineEdit::textChanged, this, &MainWindow::filterChanged); - -	listWidget = new QListWidget(this); -	listWidget->setIconSize({64, 64}); -	layout->addWidget(listWidget); - -	browser->setWidget(w); - -	// -	// Create the viewer -	// -	viewer = new Viewer(); -	setCentralWidget(viewer); - -	addToolBar(Qt::TopToolBarArea, toolbar); -	addDockWidget(Qt::LeftDockWidgetArea, browser); - -	QObject::connect(listWidget, &QListWidget::currentRowChanged, -	                 this, &MainWindow::itemChanged); - -	listWidget->setSortingEnabled(true); +	//client.connectToHost("127.0.0.1"); +	client.connectToHost("nanny"); + +	{ +		auto toolbar = new QToolBar(); + +		{ +			auto act = toolbar->addAction("New Scratch Pad"); +			connect(act, &QAction::triggered, +			        [&]() +			        { +				        viewer->scratchPad(); +			        }); +		} + +		{ +			auto spacer = new QWidget(); +			spacer->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); +			toolbar->addWidget(spacer); +		} + +		{ +			auto act = toolbar->addAction("🍪ookie-Cast"); +			connect(act, &QAction::triggered, +			        [&]() +			        { +				        const auto& title = viewer->getTitle(); +				        const auto& html = viewer->getHtml(); +				        client.writeData(title, html.toUtf8()); +			        }); +		} + +		addToolBar(Qt::TopToolBarArea, toolbar); +	} + +	{ +		auto browser = new QDockWidget("Recipes"); +		browser->setFeatures(QDockWidget::DockWidgetMovable | QDockWidget::DockWidgetFloatable); +		auto w = new QWidget(); +		auto layout = new QVBoxLayout(); +		w->setLayout(layout); + +		auto e = new QLineEdit(); +		layout->addWidget(e); +		connect(e, &QLineEdit::textChanged, this, &MainWindow::filterChanged); + +		listWidget = new QListWidget(this); +		listWidget->setIconSize({64, 64}); +		QObject::connect(listWidget, &QListWidget::currentRowChanged, +		                 this, &MainWindow::itemChanged); +		listWidget->setSortingEnabled(true); +		layout->addWidget(listWidget); + +		browser->setWidget(w); + +		addDockWidget(Qt::LeftDockWidgetArea, browser); +	} + +	{ +		viewer = new Viewer(); +		setCentralWidget(viewer); +	} +  	readDatabase();  } diff --git a/src/mainwindow.h b/src/mainwindow.h index 3588a19..ece4a85 100644 --- a/src/mainwindow.h +++ b/src/mainwindow.h @@ -29,6 +29,8 @@  #include <QMainWindow>  #include <QListWidget> +#include "client.h" +  class QListWidget;  class QListWidgetItem;  class Database; @@ -52,4 +54,5 @@ private:  	QListWidget *listWidget;  	Database& db;  	Viewer* viewer{nullptr}; +	Client client;  }; diff --git a/src/qookie-cast-client.cc b/src/qookie-cast-client.cc index 04e254d..e33edfd 100644 --- a/src/qookie-cast-client.cc +++ b/src/qookie-cast-client.cc @@ -77,6 +77,7 @@ void Server::readyRead()  		auto webview = new WebView();  		webview->setHtml(QString::fromUtf8(html)); +		webview->setReadOnly(true);  		tabs.addTab(webview, QString::fromUtf8(title));  		payload_size = -1;  		// Store remainder (ie. skip, title_size, title and html) diff --git a/src/viewer.cc b/src/viewer.cc index b0b6f35..43b82dd 100644 --- a/src/viewer.cc +++ b/src/viewer.cc @@ -29,23 +29,33 @@  #include <iostream>  #include <QTextEdit> -#include <QHBoxLayout> +#include <QLineEdit> +#include <QVBoxLayout>  #include "recipe.h"  #include "client.h"  Viewer::Viewer()  { -	setLayout(new QHBoxLayout()); +	setLayout(new QVBoxLayout()); + +	lineEdit = new QLineEdit(); +	lineEdit->setVisible(false); +	layout()->addWidget(lineEdit); +  	textEdit = new QTextEdit(); -	layout()->addWidget(textEdit);  	textEdit->setReadOnly(true); -	//client.connectToHost("127.0.0.1"); -	client.connectToHost("nanny"); +	textEdit->setVisible(false); +	layout()->addWidget(textEdit);  }  void Viewer::show(const Recipe& recipe)  { +	textEdit->setReadOnly(true); +	textEdit->setVisible(true); +	lineEdit->setVisible(false); + +	title = QString::fromUtf8(recipe.title.data());  	auto instructions = QString::fromUtf8(recipe.instructions.data());  	instructions.replace("\n", "<br/>"); @@ -99,7 +109,7 @@ void Viewer::show(const Recipe& recipe)  		break;  	} -	QString html = +	html =  		"<center><strong style=\"font-size:28px;\">" + QString::fromUtf8(recipe.title.data()) + "</strong></center><br/>"  		"<table>"  		"<tr>" @@ -125,6 +135,30 @@ void Viewer::show(const Recipe& recipe)  		"<p>" + instructions + "</p>"  		;  	textEdit->setHtml(html); +} + +void Viewer::scratchPad() +{ +	textEdit->setReadOnly(false); +	textEdit->setVisible(true); +	textEdit->setHtml(""); -	client.writeData(QString::fromUtf8(recipe.title.data()), html.toUtf8()); +	lineEdit->setVisible(true); +	lineEdit->setText(""); +} + +const QString& Viewer::getTitle() +{ +	if(lineEdit->isVisible()) +	{ +		title = lineEdit->text(); +	} + +	return title; +} + +const QString& Viewer::getHtml() +{ +	html = textEdit->toHtml(); +	return html;  } diff --git a/src/viewer.h b/src/viewer.h index 8788d45..83ef9a5 100644 --- a/src/viewer.h +++ b/src/viewer.h @@ -29,9 +29,9 @@  #include <QWidget>  #include "recipe.h" -#include "client.h"  class QTextEdit; +class QLineEdit;  class Viewer  	: public QWidget @@ -41,8 +41,14 @@ public:  	Viewer();  	void show(const Recipe& recipe); +	void scratchPad(); + +	const QString& getTitle(); +	const QString& getHtml();  private: +	QLineEdit* lineEdit{nullptr};  	QTextEdit* textEdit{nullptr}; -	Client client; +	QString html; +	QString title;  }; | 
