QsSkin.h 878 B

1234567891011121314151617181920212223242526272829303132333435
  1. #pragma once
  2. #include <QtWidgets/qwidget.h>
  3. #include <string>
  4. #include <Kaguya/kaguya.hpp>
  5. #include "yutil/json.h"
  6. #include "yqlua/QsBuffer.h"
  7. class QsWidget;
  8. class QsSkin
  9. {
  10. struct ResData {
  11. ylib::buffer data;
  12. std::string filename;
  13. };
  14. public:
  15. QsSkin();
  16. ~QsSkin();
  17. static void regist(kaguya::State& T);
  18. private:
  19. bool load(const std::string& filepath);
  20. QsWidget* widget(const std::string& name);
  21. std::string config(const std::string& name);
  22. int pageSize();
  23. std::string pageName(int index);
  24. bool existRes(const std::string& name);
  25. QsBuffer getResData(const std::string& name);
  26. std::string getResFilename(const std::string& name);
  27. private:
  28. std::vector<std::string> m_widget_names;
  29. std::map<std::string,QsWidget*> m_widgets;
  30. std::map<std::string,ylib::json*> m_widgets_config;
  31. std::map<std::string, std::shared_ptr<ResData>> m_res;
  32. ylib::json m_init_json;
  33. };