celsplashscreen.h
上传用户:center1979
上传日期:2022-07-26
资源大小:50633k
文件大小:2k
源码类别:

OpenGL

开发平台:

Visual C++

  1. /***************************************************************************
  2.                           celsplashscreen.h  -  description
  3.                              -------------------
  4.     begin                : Tue Jan 03 23:27:30 CET 2006
  5.     copyright            : (C) 2006 by Christophe Teyssier
  6.     email                : chris@teyssier.org
  7.  ***************************************************************************/
  8. /***************************************************************************
  9.  *                                                                         *
  10.  *   This program is free software; you can redistribute it and/or modify  *
  11.  *   it under the terms of the GNU General Public License as published by  *
  12.  *   the Free Software Foundation; either version 2 of the License, or     *
  13.  *   (at your option) any later version.                                   *
  14.  *                                                                         *
  15.  ***************************************************************************/
  16. #include <vector>
  17. #include <qpainter.h>
  18. #include <qwidget.h>
  19. #include <qstring.h>
  20. #include <qpixmap.h>
  21. #include <qrect.h>
  22. #include <qcolor.h>
  23. #include <qfont.h>
  24. #include <kfilemetainfo.h>
  25. #include <celestiacore.h>
  26. class TextItem {
  27. public:
  28.     TextItem();
  29.     QRect& getRect() { return rect; }
  30.     void set(const QString& prefix, const KFileMetaInfoGroup& info);
  31.     void setFlags(int f) { flags = f; };
  32.     void setColor(const QString& rgb);
  33.     void setFont(const QFont& _font) { font = _font; }
  34.     void setContent(const QString& value) { content = value; }
  35.     virtual ~TextItem() {};
  36.     virtual void draw(QPainter* painter) const;
  37. protected:
  38.     bool disable;
  39.     QRect rect;
  40.     int flags;
  41.     QColor color;
  42.     QFont font;
  43.     QString content;
  44.     QString insertBefore;
  45.     bool showBox;
  46. };
  47. class CelSplashScreen:public QWidget, virtual public ProgressNotifier
  48. {
  49. Q_OBJECT
  50. public:
  51.     CelSplashScreen(const QString& filename, QWidget* parent);
  52.     virtual ~CelSplashScreen() {};
  53.     void setPixmap( const QString &filename );
  54.     virtual void update(const string& message);
  55.     void repaint();
  56.     void finish( QWidget *w );
  57. protected:
  58.     virtual void drawContents(QPainter *painter);
  59.     void mousePressEvent( QMouseEvent * );
  60. private:
  61.     void drawContents();
  62.     QPixmap pixmap;
  63.     QWidget* parent;
  64.     TextItem version;
  65.     TextItem status;
  66.     std::vector<TextItem> extraText;
  67. };