/***************************************************************************
 *   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 <tqptrlist.h>

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

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

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

typedef TQPtrList<EffectWidget> EffectWidgetList;
typedef TQValueList<TQPoint> CoordsList;
typedef TQValueList<TQColor> ColorList;
typedef TQValueList<TQFont> FontList;
typedef TQPtrList<TQImage> ImageList;

class ThemeMoodin: public ThemeEngine
{
  Q_OBJECT
  TQ_OBJECT

public:
  ThemeMoodin(TQWidget *parent, const char *name, const TQStringList& flags);

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

  static TQStringList names()
  {
    TQStringList l;

    l << "Moodin";

    return l;
  };

  static TQStringList statusPixmaps()
  {
    TQStringList 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 TQString& s);
  void slotSetPixmap(const TQString&);

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;

  TQString mCurrentAction;
  TQString mBackgroundImage;
  TQStringList mStatusIcons;
  TQStringList mStatusMessages;
  TQStringList mLabels;
  TQColor mStatusColor;
  TQColor mLabelShadowColor;
  TQFont mStatusFont;
  TQPoint mStatusCoords;
  TQPoint mLabelShadowOffset;
  TQWidget* mContainer;
  TQSize mBaseResolution;
  TQRect 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(TQPainter* p);
  void initEffectWidgets();
  void initLabels(TQPainter* p);

  void paintEvent(TQPaintEvent* pe);
  void readSettings();
  void arrangeWidget(TQWidget* me, const int index);
  void updateStatus();

  EffectWidget* createEffectWidget(TQWidget *parent, TQImage *image);
};

#endif