From a6ca214a99cd2fd0ea0d71992f829ff66923eec7 Mon Sep 17 00:00:00 2001 From: Jim Evins Date: Sun, 8 Dec 2013 00:01:09 -0500 Subject: [PATCH] Initial skeletal View implementation. --- app/CMakeLists.txt | 2 ++ app/LabelModel.cpp | 12 ++++----- app/LabelModel.h | 5 ++-- app/LabelModelBoxObject.cpp | 2 ++ app/MainWindow.cpp | 29 +++++++++++++++++++-- app/View.cpp | 45 ++++++++++++++++++++++++++++++++ app/View.h | 52 +++++++++++++++++++++++++++++++++++++ 7 files changed, 137 insertions(+), 10 deletions(-) create mode 100644 app/View.cpp create mode 100644 app/View.h diff --git a/app/CMakeLists.txt b/app/CMakeLists.txt index 27f74bc..4df608e 100644 --- a/app/CMakeLists.txt +++ b/app/CMakeLists.txt @@ -20,6 +20,7 @@ set (glabels_sources TextNode.cpp NewLabelDialog.cpp SimplePreview.cpp + View.cpp ) set (glabels_qobject_headers @@ -30,6 +31,7 @@ set (glabels_qobject_headers TemplatePicker.h NewLabelDialog.h SimplePreview.h + View.h ) set (glabels_forms diff --git a/app/LabelModel.cpp b/app/LabelModel.cpp index 3a17b04..248af6b 100644 --- a/app/LabelModel.cpp +++ b/app/LabelModel.cpp @@ -42,8 +42,8 @@ namespace glabels object->setParent( this ); mObjectList << object; - connect( object, SIGNAL(changed()), this, SLOT(objectChanged(LabelModelObject*)) ); - connect( object, SIGNAL(moved()), this, SLOT(objectMoved(LabelModelObject*)) ); + connect( object, SIGNAL(changed()), this, SLOT(onObjectChanged()) ); + connect( object, SIGNAL(moved()), this, SLOT(onObjectMoved()) ); mModified = true; @@ -52,20 +52,20 @@ namespace glabels } - void LabelModel::onObjectChanged( LabelModelObject* object ) + void LabelModel::onObjectChanged() { mModified = true; - emit objectChanged( object ); + emit objectChanged( qobject_cast(sender()) ); emit changed(); } - void LabelModel::onObjectMoved( LabelModelObject* object ) + void LabelModel::onObjectMoved() { mModified = true; - emit objectMoved( object ); + emit objectMoved( qobject_cast(sender()) ); emit changed(); } diff --git a/app/LabelModel.h b/app/LabelModel.h index bc8a5f5..bbf5edd 100644 --- a/app/LabelModel.h +++ b/app/LabelModel.h @@ -158,12 +158,13 @@ namespace glabels void setSelectionLineColorNode( ColorNode lineColorNode ); void setSelectionFillColorNode( ColorNode fillColorNode ); + ///////////////////////////////// // Slots ///////////////////////////////// private slots: - void onObjectChanged( LabelModelObject* object ); - void onObjectMoved( LabelModelObject* object ); + void onObjectChanged(); + void onObjectMoved(); ///////////////////////////////// diff --git a/app/LabelModelBoxObject.cpp b/app/LabelModelBoxObject.cpp index 37dab7b..03f9fca 100644 --- a/app/LabelModelBoxObject.cpp +++ b/app/LabelModelBoxObject.cpp @@ -37,6 +37,7 @@ namespace glabels rectItem->setBrush( brush ); QPen pen( lineColorNode().color() ); + pen.setJoinStyle( Qt::MiterJoin ); pen.setWidthF( lineWidth() ); rectItem->setPen( pen ); @@ -59,6 +60,7 @@ namespace glabels rectItem->setBrush( brush ); QPen pen( lineColorNode().color() ); + pen.setJoinStyle( Qt::MiterJoin ); pen.setWidthF( lineWidth() ); rectItem->setPen( pen ); diff --git a/app/MainWindow.cpp b/app/MainWindow.cpp index 1699402..2560f53 100644 --- a/app/MainWindow.cpp +++ b/app/MainWindow.cpp @@ -26,9 +26,13 @@ #include +#include "libglabels/Db.h" +#include "LabelModelBoxObject.h" #include "Icons.h" #include "File.h" #include "Help.h" +#include "View.h" + namespace glabels { @@ -36,8 +40,29 @@ namespace glabels MainWindow::MainWindow() { /////////////// TEMPORARY TESTING /////////////// -#if 1 - QLabel *tmp = new QLabel( "Coming Soon..." ); +#if 0 + QLabel* tmp = new QLabel( "Coming Soon..." ); +#else + LabelModel* model = new LabelModel(); + const libglabels::Template* tmplate = libglabels::Db::lookupTemplateFromName( "Avery 3612" ); + model->setTmplate( tmplate ); + LabelModelBoxObject* object = new LabelModelBoxObject(); + object->setW( 36 ); + object->setH( 36 ); + object->setX0( 72 ); + object->setY0( 72 ); + object->setFillColorNode( ColorNode( QColor( 0, 255, 0 ) ) ); + object->setLineColorNode( ColorNode( QColor( 0, 0, 0 ) ) ); + object->setLineWidth( 4 ); + object->setShadowColorNode( ColorNode( QColor( 0, 0, 0 ) ) ); + object->setShadowOpacity( 0.25 ); + object->setShadowX( 5 ); + object->setShadowY( 5 ); + object->setShadow( true ); + model->addObject( object ); + + View* tmp = new View(); + tmp->setModel( model ); #endif setCentralWidget( tmp ); ///////////////////////////////////////////////// diff --git a/app/View.cpp b/app/View.cpp new file mode 100644 index 0000000..51d6681 --- /dev/null +++ b/app/View.cpp @@ -0,0 +1,45 @@ +/* View.cpp + * + * Copyright (C) 2013 Jim Evins + * + * This file is part of gLabels-qt. + * + * gLabels-qt 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. + * + * gLabels-qt 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 gLabels-qt. If not, see . + */ + +#include "View.h" + + +namespace glabels +{ + + View::View( QWidget *parent ) : QGraphicsView(parent), mScale(1), mModel(0) + { + mScene = new QGraphicsScene(); + setScene( mScene ); + } + + + void View::setModel( LabelModel* model ) + { + mModel = model; + + foreach (LabelModelObject* object, model->objectList() ) + { + QGraphicsItem* item = object->createGraphicsItem(); + mScene->addItem( item ); + } + } + +} diff --git a/app/View.h b/app/View.h new file mode 100644 index 0000000..faec66a --- /dev/null +++ b/app/View.h @@ -0,0 +1,52 @@ +/* View.h + * + * Copyright (C) 2013 Jim Evins + * + * This file is part of gLabels-qt. + * + * gLabels-qt 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. + * + * gLabels-qt 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 gLabels-qt. If not, see . + */ + +#ifndef glabels_View_h +#define glabels_View_h + +#include +#include + +#include "LabelModel.h" + + +namespace glabels +{ + + class View : public QGraphicsView + { + Q_OBJECT + + public: + View( QWidget *parent = 0 ); + + void setModel( LabelModel* model ); + + private: + QGraphicsScene* mScene; + double mScale; + + LabelModel* mModel; + + }; + +} + +#endif // glabels_View_h