/* -*- c++ -*- */ /*************************************************************************** * mainwindow.cc * * Sat Apr 23 18:59:48 CEST 2022 * Copyright 2022 Bent Bisballe Nyeng * deva@aasimon.org ****************************************************************************/ /* * This file is part of Qookie. * * Qookie is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * * Qookie is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Qookie; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ #include "mainwindow.h" #include #include #include #include #include #include #include "database.h" #include "viewer.h" MainWindow::MainWindow(Database& db) : db(db) { //connect(document, SIGNAL(documentStatusChanged(bool)), this, SLOT(updateDocumentStatus(bool))); //updateDocumentStatus(document->hasChanged()); // // 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"); listWidget = new QListWidget(this); listWidget->setIconSize({64, 64}); browser->setWidget(listWidget); // // 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); readDatabase(); } MainWindow::~MainWindow() { } //void MainWindow::updateDocumentStatus(bool changed) //{ // setWindowTitle(QString("foo bar") + (changed?"*":"")); //} void MainWindow::readDatabase() { auto items = db.getRecipes(); for(const auto& item : items) { QListWidgetItem* listItem = new QListWidgetItem(); listItem->setText(QString::fromUtf8(item.title.data())); if(!item.image.empty()) { QIcon icon; QImage image = QImage::fromData((const uchar*)item.image.data(), item.image.size()); icon.addPixmap(QPixmap::fromImage(image)); listItem->setIcon(icon); } else { QIcon icon; QImage image(QSize({1,1}), QImage::Format_RGBA8888); image.fill(0); icon.addPixmap(QPixmap::fromImage(image)); listItem->setIcon(icon); } listItem->setData(Qt::UserRole, item.id); listWidget->addItem(listItem); } } void MainWindow::itemChanged(int row) { auto item = listWidget->currentItem(); auto id = item->data(Qt::UserRole).toInt(); auto recipe = db.getRecipe(id); viewer->show(recipe); }