Source Code (Use browser search to find items of interest.)

Class Index

kscd'LedLamp (./kdemultimedia/kscd/ledlamp.h:29)

class LedLamp : public QFrame
{
  Q_OBJECT
public:

  enum Type { Rect, Loop };

  LedLamp(QWidget *parent=0, Type t=Rect);

  enum State { On, Off };


  State state() const { return s; }
  

  void setState(State state) { s= state; repaint(false); }


  void toggleState() { if (s == On) s= Off; else if (s == Off) s= On; repaint(false); }
public slots:
  void toggle() { toggleState(); };
  void on() { setState(On); };
  void off() { setState(Off); };
protected:
  void drawContents(QPainter *);
private:
  const int width;
  const int height;
  const int dx;
  State s;
  int ledtype;
};


kscd'LedLamp::LedLamp() (./kdemultimedia/kscd/ledlamp.cpp:30)

LedLamp::LedLamp(QWidget *parent, Type t) : QFrame(parent),
  width( 10 ), height( 7 ), dx( 4 )
{
  // Make sure we're in a sane state
  s = Off;

  // Set the frame style
  //  setFrameStyle(Sunken | Box);
  setGeometry(0,0,height+1,width+1);
  ledtype = t;
} // LedLamp

void 

kscd'LedLamp::drawContents() (./kdemultimedia/kscd/ledlamp.cpp:43)

LedLamp::drawContents(QPainter *painter)
{

  QBrush lightBrush(this->foregroundColor());
  QBrush darkBrush(this->backgroundColor());

  //  QColor redColor(255,100,100);
  //  QBrush redBrush(redColor);

  QPen darkPen(this->backgroundColor(),1);
  QPen lightPen(this->foregroundColor(), 1);

  switch(s) 
    {
    case On:
      painter->setBrush(lightBrush);
      switch (ledtype)
	{
	case Rect:
	  painter->drawRect(1,1,width-3, height-2);
	  break;
	case Loop:
	  painter->setBrush(lightBrush);
	  painter->setPen(lightPen);

	  //	  painter->drawRect(0,0,width,height);

	  painter->drawLine(0, 2, 0, height-2); //  |
	  painter->drawLine(1, 1, width-4, 1); // ~
	  painter->drawLine(width-3, 2, width-3, height-2); // |
	  painter->drawLine(2, height-2, width-3, height-2); //_
	  painter->drawLine(width-6,0,width-6,2); // ---+
	  painter->drawLine(3,height-2,3,height); // +---
	  break;
	}
      break;
      
    case Off:
      painter->setBrush(darkBrush);
      switch (ledtype)
	{
	case Rect:
	  painter->drawRect(1,1,width-3, height-2);
	  break;
	case Loop:
	  painter->setBrush(darkBrush);
	  painter->setPen(darkPen);

	  painter->drawLine(0, 2, 0, height-2); //  |
	  painter->drawLine(1, 1, width-4, 1); // ~
	  painter->drawLine(width-3, 2, width-3, height-2); // |
	  painter->drawLine(2, height-2, width-3, height-2); //_
	  painter->drawLine(width-6,0,width-6,2); // ---+
	  painter->drawLine(3,height-2,3,height); // +---
	  break;
	}
      //      painter->setPen(pen);
      //    painter->drawLine(2,2,width-2, 2);
      //painter->drawLine(2,height-2,width-2,height-2);
      // Draw verticals
      //int i;
      //for (i= 2; i < width-1; i+= dx)
      //painter->drawLine(i,2,i,height-2);
      break;
      
    default:
    fprintf(stderr, "LedLamp: INVALID State (%d)\n", s);
    
    }
} // drawContents