summaryrefslogtreecommitdiffstats
path: root/src/thememoodin.h
blob: 39f4798e11241b9cc23e1b0a727ee5a132260429 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
/***************************************************************************
 *   Copyright (C) by                                                      *
 *     - 2005: Christian Leh <moodwrod@web.de>                             *
 *                                                                         *
 *   This program is free software; you can redistribute it and/or modify  *
 *   it under the terms of the GNU General Public License as published by  *
 *   the Free Software Foundation; either version 2 of the License, or     *
 *   (at your option) any later version.                                   *
 *                                                                         *
 ***************************************************************************/

#ifndef THEMEMOODIN_H
#define THEMEMOODIN_H

#include <qptrlist.h>

#include <kdebug.h>
#include <kpixmap.h>

#include <themeengine.h>
#include <objkstheme.h>

#include "scaler.h"
#include "cache.h"
#include "effectwidget.h"

typedef QPtrList<EffectWidget> EffectWidgetList;
typedef QValueList<QPoint> CoordsList;
typedef QValueList<QColor> ColorList;
typedef QValueList<QFont> FontList;
typedef QPtrList<QImage> ImageList;

class ThemeMoodin: public ThemeEngine
{
  Q_OBJECT

public:
  ThemeMoodin(QWidget *parent, const char *name, const QStringList& flags);

  inline const QString name() { return QString("Moodin"); }
  inline const int version() { return 0x042; }

  static QStringList names()
  {
    QStringList l;

    l << "Moodin";

    return l;
  };

  static QStringList statusPixmaps()
  {
    QStringList l;

    l << "filetypes"; // 1 filetypes
    l << "exec"; // 2 exec
    l << "key_bindings"; // 3 key_bindings
    l << "window_list"; // 4 window_list
    l << "desktop"; // 5 desktop
    l << "style"; // 6 style
    l << "kcmsystem"; // 7 kcmsystem
    l << "go"; // 8 go

    return l;
  };

public slots:
  void slotSetText(const QString& s);
  void slotSetPixmap(const QString&);

private:
  bool mUseIconSet;
  bool mLabelShadow;
  bool mShowStatusText;
  bool mAppendX;
  bool mUsersBackground;
  bool mTranslate;
  bool mLineUpImages;
  bool mKubuntuStyle;
  int mAnimationLength;
  int mAnimationDelay;
  int mIconSetSize;
  int mCurrentStatusIndex;
  int mImageSpacer;
  int mLabelCount;
  float mBeginOpacity;

  QString mCurrentAction;
  QString mBackgroundImage;
  QStringList mStatusIcons;
  QStringList mStatusMessages;
  QStringList mLabels;
  QColor mStatusColor;
  QColor mLabelShadowColor;
  QFont mStatusFont;
  QPoint mStatusCoords;
  QPoint mLabelShadowOffset;
  QWidget* mContainer;
  QSize mBaseResolution;
  QRect mSplashRect;

  KPixmap* mBG;

  Scaler* mScaler;
  Cache* mCache;

  EffectWidgetList mEffectWidgets;
  CoordsList mStatusIconCoords;
  CoordsList mStatusImageOffsets;
  CoordsList mLabelCoords;
  ColorList mLabelColors;
  FontList mLabelFonts;
  ImageList mImages;

  void init();
  void initBackground(QPainter* p);
  void initEffectWidgets();
  void initLabels(QPainter* p);

  void paintEvent(QPaintEvent* pe);
  void readSettings();
  void arrangeWidget(QWidget* me, const int index);
  void updateStatus();

  EffectWidget* createEffectWidget(QWidget *parent, QImage *image);
};

#endif