Skip to content
Snippets Groups Projects
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
QWidgetBuilder.cpp 2.98 KiB
/*
 * Copyright (C) 2004-2005 Savoir-Faire Linux inc.
 * Author: Jean-Philippe Barrette-LaPierre
 *            (jean-philippe.barrette-lapierre@savoirfairelinux.com)
 *
 * This 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,
 * or (at your option) any later version.
 *
 * This is distributed in the hope that it will be useful, but
 * WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public
 * License along with dpkg; if not, write to the Free Software
 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 */

#include <iostream>
#include <qpainter.h>

#include "PaintEventFilter.hpp"
#include "QWidgetBuilder.hpp"
#include "qtutils.hpp"

taxidermy::QWidgetBuilder::QWidgetBuilder()
  : WidgetBuilder("QWidget")
  , mWidget(NULL)
  , mPosSet(false)
  , mSizeSet(false)
{}

void
taxidermy::QWidgetBuilder::load(const QMap< QString, QString > &values)
{
  QMap< QString, QString >::ConstIterator xpos = values.find("x");
  QMap< QString, QString >::ConstIterator ypos = values.find("y");
  if(xpos != values.end() && ypos != values.end()) {
    mPosSet = true;
    mX = (*xpos).toInt();
    mY = (*ypos).toInt();
  }

  QMap< QString, QString >::ConstIterator height = values.find("height");
  QMap< QString, QString >::ConstIterator width = values.find("width");
  if(height != values.end() && width != values.end()) {
    mSizeSet = true;
    mHeight = (*height).toInt();
    mWidth = (*width).toInt();
  }

  QMap< QString, QString >::ConstIterator transparent = values.find("transparent");
  QMap< QString, QString >::ConstIterator bimage = values.find("bImage");
  if(bimage != values.end()) {
    if(transparent == values.end() || (*transparent).toInt()) {
      mBackgroundImage = qtutils::transparize(*bimage);
    }
    else {
      std::cout << *bimage << " is not trans\n";
      qtutils::retreive(*bimage, mBackgroundImage);
    }
  }

  QMap< QString, QString >::ConstIterator bcolor = values.find("bColor");
  if(bcolor != values.end()) {
    mBackgroundColor = QColor(*bcolor);
  }
}

void
taxidermy::QWidgetBuilder::update()
{
  update(mWidget);
}

void
taxidermy::QWidgetBuilder::update(QWidget *widget)
{  
  mWidget = widget;

  if(mWidget) {
    if(mPosSet) {
      mWidget->move(mX, mY);
    }

    if(!mBackgroundImage.isNull()) {
      mWidget->setPaletteBackgroundPixmap(mBackgroundImage);
      if(mBackgroundImage.hasAlpha()) {
	mWidget->setMask(*mBackgroundImage.mask());
      }
      mWidget->resize(mBackgroundImage.size());
    }
    else if(mBackgroundColor.isValid()) {
      mWidget->setPaletteBackgroundColor(mBackgroundColor);
    }

    //If the user took the energy to specify the size,
    //Then we must use this size.
    if(mSizeSet) {
      mWidget->resize(mWidth, mHeight);
    }
  }
}