propertymachinefactory.h
Go to the documentation of this file.00001 /*************************************************************************** 00002 * Copyright (C) 2004 by Alexander Dymo * 00003 * cloudtemple@mskat.net * 00004 * * 00005 * This program is free software; you can redistribute it and/or modify * 00006 * it under the terms of the GNU Library General Public License as * 00007 * published by the Free Software Foundation; either version 2 of the * 00008 * License, or (at your option) any later version. * 00009 * * 00010 * This program is distributed in the hope that it will be useful, * 00011 * but WITHOUT ANY WARRANTY; without even the implied warranty of * 00012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 00013 * GNU General Public License for more details. * 00014 * * 00015 * You should have received a copy of the GNU Library General Public * 00016 * License along with this program; if not, write to the * 00017 * Free Software Foundation, Inc., * 00018 * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * 00019 ***************************************************************************/ 00020 #ifndef PROPERTYMACHINEFACTORY_H 00021 #define PROPERTYMACHINEFACTORY_H 00022 00023 #include <qmap.h> 00024 00025 #include "propertywidget.h" 00026 00027 class QWidget; 00028 00029 namespace PropertyLib{ 00030 00031 class Property; 00032 class MultiProperty; 00033 class ChildProperty; 00034 00046 struct Machine{ 00047 Machine() 00048 { 00049 } 00050 Machine(PropertyWidget *widget) 00051 { 00052 propertyEditor = widget; 00053 } 00054 ~Machine() 00055 { 00056 delete propertyEditor; 00057 } 00058 00060 PropertyWidget *propertyEditor; 00061 }; 00062 00064 typedef Machine *(*createMachine)(); 00065 00069 class PropertyMachineFactory{ 00070 public: 00074 void registerEditor(int type, createMachine creator); 00075 00079 Machine *machineForProperty(MultiProperty *property); 00080 bool hasDetailedEditors(int type); 00081 00083 static PropertyMachineFactory *getInstance(); 00084 00085 static PropertyMachineFactory *m_factory; 00086 00087 private: 00088 PropertyMachineFactory(); 00089 virtual ~PropertyMachineFactory(); 00090 00091 //registered machines for property types 00092 QMap<int, createMachine > m_registeredForType; 00093 }; 00094 00095 } 00096 00097 #endif