WidgetFactory.cpp 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. #include "WidgetFactory.h"
  2. #include "ComboBoxWidgetFactory.h"
  3. #include "LineEditWidgetFactory.h"
  4. #include "PathSelectorWidgetFactory.h"
  5. #include "TagEditWidgetFactory.h"
  6. #include "AutoCompleteTagEditWidgetFactory.h"
  7. #include "DateTimeWidgetFactory.h"
  8. #include "AutoCompleteComBoxWidgetFactory.h"
  9. #include "CheckComboBoxWidgetFactory.h"
  10. WidgetFactory::WidgetFactory(QObject *parent)
  11. : QObject(parent)
  12. {
  13. init();
  14. }
  15. WidgetFactory::~WidgetFactory()
  16. {
  17. }
  18. void WidgetFactory::init()
  19. {
  20. factorys << std::make_shared<LineEditWidgetFactory>() //默认第一个为输入框
  21. << std::make_shared<ComboBoxWidgetFactory>()
  22. << std::make_shared<CheckComboBoxWidgetFactory>()
  23. << std::make_shared<AutoCompleteComBoxWidgetFactory>()
  24. << std::make_shared<DateTimeWidgetFactory>()
  25. << std::make_shared<TagEditWidgetFactory>()
  26. << std::make_shared<AutoCompleteTagEditWidgetFactory>()
  27. << std::make_shared<PathSelectorWidgetFactory>();
  28. }
  29. IxWidgetFactory_ptr WidgetFactory::getFactory(const QString &type)
  30. {
  31. IxWidgetFactory_ptr widgetFactory = nullptr;
  32. if (type.isEmpty())
  33. {
  34. widgetFactory = factorys.at(0);
  35. }
  36. else
  37. {
  38. foreach(IxWidgetFactory_ptr factory, factorys)
  39. {
  40. if (factory->type() == type)
  41. {
  42. widgetFactory = factory;
  43. break;
  44. }
  45. }
  46. }
  47. return widgetFactory;
  48. }
  49. WidgetFactory& WidgetFactory::operator<<(IxWidgetFactory_ptr widgetFactory)
  50. {
  51. factorys << widgetFactory;
  52. return *this;
  53. }
  54. IxWidgetFactory_ptr WidgetFactory::getFactory(qx::IxDataMember *dataMember)
  55. {
  56. return getFactory(getFactoryType(dataMember));
  57. }
  58. QString WidgetFactory::getFactoryType(qx::IxDataMember *dataMember)
  59. {
  60. QString type;
  61. type = dataMember->getPropertyBag("type").toString();
  62. if (dataMember->getType() == "QDateTime")
  63. type = "DateTime";
  64. return type;
  65. }