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

Class Index

kiconedit'KCustomColors (./kdegraphics/kiconedit/kiconcolors.h:49)

class KCustomColors : public KDrawColors
{
  Q_OBJECT
public:
  KCustomColors(QWidget *parent);
  ~KCustomColors();

  void addColor(uint);
  void clear();

protected:
  virtual void mouseDoubleClickEvent(QMouseEvent*);
  int getFreeCell();
  void freeAllCells();

protected:
  bool *freecells;
  QPopupMenu *popup;
};


kiconedit'KCustomColors::KCustomColors() (./kdegraphics/kiconedit/kiconcolors.cpp:80)

KCustomColors::KCustomColors(QWidget *parent) : KDrawColors(parent)
{
  debug("KCustomColors - constructor");
  setNumRows(3);
  setNumCols(6);
  fill(TRANSPARENT|OPAQUE_MASK);
  setFixedSize(numCols()*cellSize(), numRows()*cellSize());
  freecells = new bool[numRows()*numCols()];
  for(int i = 0; i < numRows()*numCols(); i++)
    freecells[i] = true;
  debug("KCustomColors - constructor - done");
}


kiconedit'KCustomColors::~KCustomColors() (./kdegraphics/kiconedit/kiconcolors.cpp:93)

KCustomColors::~KCustomColors()
{
  delete [] freecells;
}


kiconedit'KCustomColors::mouseDoubleClickEvent() (./kdegraphics/kiconedit/kiconcolors.cpp:98)

void KCustomColors::mouseDoubleClickEvent(QMouseEvent *e)
{
  int row = findRow( e->pos().y() );
  int col = findCol( e->pos().x() );
  int cell = row * numCols() + col;

  QColor color;
  KColorDialog *cdlg = new KColorDialog;
  cdlg->setColor(colorAt(cell));
  if(cdlg->getColor(color))
  {
    setColor(cell, color.rgb());
    emit newcolor(color.rgb()|OPAQUE_MASK);
    freecells[cell] = false;
  }
  delete cdlg;
}


kiconedit'KCustomColors::addColor() (./kdegraphics/kiconedit/kiconcolors.cpp:116)

void KCustomColors::addColor(uint c)
{
  if(!contains(c))
  {
    int f = getFreeCell();
    if(f != -1)
    {
      QColor color(c);
      if(!color.isValid())
      {
        debug("KCustomColors::addColor: Not a valid color: %u", c);
        return;
      }
      //debug("KCustomColors::addColor: Adding color: %u - %d %d %d", c, qRed(c), qGreen(c), qBlue(c));
      setColor(f, c);
      freecells[f] = false;
    }
  }
}


kiconedit'KCustomColors::getFreeCell() (./kdegraphics/kiconedit/kiconcolors.cpp:136)

int KCustomColors::getFreeCell()
{
  for (int i = 0; i < numRows()*numCols(); i++)
  {
    if(freecells[i])
    {
      if(i+1 < numRows()*numCols())
        freecells[i+1] = true;
      else
        freecells[0] = true;
      return i;
      break;
    } 
  }
  freeAllCells(); // start over again - not very elegant
  return 0;
}


kiconedit'KCustomColors::freeAllCells() (./kdegraphics/kiconedit/kiconcolors.cpp:154)

void KCustomColors::freeAllCells()
{
  for (int i = 0; i < numRows()*numCols(); i++)
    freecells[i] = true;
}


kiconedit'KCustomColors::clear() (./kdegraphics/kiconedit/kiconcolors.cpp:160)

void KCustomColors::clear()
{
  fill(TRANSPARENT);
  freeAllCells();
  update();
}