1 /* 2 * ModelView.h - declaration of ModelView base class 3 * 4 * Copyright (c) 2007-2014 Tobias Doerffel <tobydox/at/users.sourceforge.net> 5 * 6 * This file is part of LMMS - https://lmms.io 7 * 8 * This program is free software; you can redistribute it and/or 9 * modify it under the terms of the GNU General Public 10 * License as published by the Free Software Foundation; either 11 * version 2 of the License, or (at your option) any later version. 12 * 13 * This program is distributed in the hope that it will be useful, 14 * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 16 * General Public License for more details. 17 * 18 * You should have received a copy of the GNU General Public 19 * License along with this program (see COPYING); if not, write to the 20 * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 21 * Boston, MA 02110-1301 USA. 22 * 23 */ 24 25 #ifndef MODEL_VIEW_H 26 #define MODEL_VIEW_H 27 28 #include <QtCore/QPointer> 29 #include "Model.h" 30 31 32 class EXPORT ModelView 33 { 34 public: 35 ModelView( Model* model, QWidget* widget ); 36 virtual ~ModelView(); 37 38 virtual void setModel( Model* model, bool isOldModelValid = true ); 39 model()40 Model* model() 41 { 42 return m_model; 43 } 44 model()45 const Model* model() const 46 { 47 return m_model; 48 } 49 50 template<class T> castModel()51 T* castModel() 52 { 53 return dynamic_cast<T*>( model() ); 54 } 55 56 template<class T> castModel()57 const T* castModel() const 58 { 59 return dynamic_cast<const T*>( model() ); 60 } 61 62 63 protected: 64 // sub-classes can re-implement this to track model-changes modelChanged()65 virtual void modelChanged() 66 { 67 } 68 widget()69 QWidget* widget() 70 { 71 return m_widget; 72 } 73 74 virtual void doConnections(); 75 76 77 private: 78 QWidget* m_widget; 79 QPointer<Model> m_model; 80 81 } ; 82 83 84 #endif 85 86