diff --git a/libs/taxidermy/QWidgetBuilder.cpp b/libs/taxidermy/QWidgetBuilder.cpp index fc3af9a0b2ba9436f0ba4db81cfca1a1f7e07016..b91588b248907d614ef8d8c2a899d7d8061a1933 100644 --- a/libs/taxidermy/QWidgetBuilder.cpp +++ b/libs/taxidermy/QWidgetBuilder.cpp @@ -29,6 +29,7 @@ taxidermy::QWidgetBuilder::QWidgetBuilder() : WidgetBuilder("QWidget") , mWidget(NULL) , mPosSet(false) + , mSizeSet(false) {} void @@ -42,9 +43,22 @@ taxidermy::QWidgetBuilder::load(const QMap< QString, QString > &values) mY = (*ypos).toInt(); } - QMap< QString, QString >::ConstIterator background = values.find("background"); - if(background != values.end()) { - mBackground = qtutils::transparize(*background); + 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 bimage = values.find("bImage"); + if(bimage != values.end()) { + mBackgroundImage = qtutils::transparize(*bimage); + } + + QMap< QString, QString >::ConstIterator bcolor = values.find("bColor"); + if(bcolor != values.end()) { + mBackgroundColor = QColor(*bcolor); } } @@ -64,12 +78,21 @@ taxidermy::QWidgetBuilder::update(QWidget *widget) mWidget->move(mX, mY); } - if(!mBackground.isNull()) { - mWidget->setPaletteBackgroundPixmap(mBackground); - if(mBackground.hasAlpha()) { - mWidget->setMask(*mBackground.mask()); + if(!mBackgroundImage.isNull()) { + mWidget->setPaletteBackgroundPixmap(mBackgroundImage); + if(mBackgroundImage.hasAlpha()) { + mWidget->setMask(*mBackgroundImage.mask()); } - mWidget->resize(mBackground.size()); + 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); } } } diff --git a/libs/taxidermy/QWidgetBuilder.hpp b/libs/taxidermy/QWidgetBuilder.hpp index ae93df067ce6fc3eb67116b74ff1afffeb818d3c..8d3a58f3519ee473b5abea22ecefe9ced27adeb5 100644 --- a/libs/taxidermy/QWidgetBuilder.hpp +++ b/libs/taxidermy/QWidgetBuilder.hpp @@ -21,6 +21,7 @@ #ifndef __TAXIDERMY_QWIDGET_BUILDER_HPP__ #define __TAXIDERMY_QWIDGET_BUILDER_HPP__ +#include <qcolor.h> #include <qpixmap.h> #include <qwidget.h> @@ -40,8 +41,14 @@ namespace taxidermy int mX; int mY; + //Size + bool mSizeSet; + int mWidth; + int mHeight; + //Images - QPixmap mBackground; + QPixmap mBackgroundImage; + QColor mBackgroundColor; public: QWidgetBuilder(); diff --git a/libs/taxidermy/qtutils.cpp b/libs/taxidermy/qtutils.cpp index 331fb591e0c3099ef2c497bee75e1315226a3f39..68b9d7d0908fb42c9e456616c78b7e6340a7be46 100644 --- a/libs/taxidermy/qtutils.cpp +++ b/libs/taxidermy/qtutils.cpp @@ -33,7 +33,7 @@ taxidermy::qtutils::addFilePath(const QString &path) } QPixmap -taxidermy::qtutils::transparize(const QString &image) +taxidermy::qtutils::transparize(const QString &image, bool hard) { #ifdef QT3_SUPPORT QPixmap p(retreive(image)); @@ -55,7 +55,7 @@ taxidermy::qtutils::transparize(const QString &image) if (img.hasAlphaBuffer()) { bm = img.createAlphaMask(); } - else { + else if(hard) { bm = img.createHeuristicMask(); } p.setMask(bm); diff --git a/libs/taxidermy/qtutils.hpp b/libs/taxidermy/qtutils.hpp index 6361b4a2de1197d0c8a1c012677ed34fa19455cb..6d5c4f4a47121efbc5dd916a732fa2b43bbfbe0a 100644 --- a/libs/taxidermy/qtutils.hpp +++ b/libs/taxidermy/qtutils.hpp @@ -24,7 +24,7 @@ namespace taxidermy { namespace qtutils { - QPixmap transparize(const QString &image); + QPixmap transparize(const QString &image, bool hard = false); void addFilePath(const QString &path); }; diff --git a/skins/gmetal.ini b/skins/gmetal.ini index a464e6eedfefbcc384a09ab4fef26f2e4453e74c..33bc6b86bee5fa2572dd52f071ac5a1c764b31cb 100644 --- a/skins/gmetal.ini +++ b/skins/gmetal.ini @@ -168,6 +168,22 @@ pressed=redial_on.png released=redial_off.png paint=1 +[main] +type=QWidget +bImage=main.png + +[screen] +type=QWidget +x=22 +y=44 +bImage=screen_green.png +bColor=gray + +[overscreen] +type=QWidget +bImage=overscreen.png + + # DTMF Keypad #dtmf_1=12,22 #dtmf_2=58,22 diff --git a/skins/gmetal/main.png b/skins/gmetal/main.png new file mode 100644 index 0000000000000000000000000000000000000000..ddf434171b5f5b93f31616615a603bbb593b4475 Binary files /dev/null and b/skins/gmetal/main.png differ diff --git a/images/overscreen.png b/skins/gmetal/overscreen.png similarity index 100% rename from images/overscreen.png rename to skins/gmetal/overscreen.png diff --git a/images/screen_green.png b/skins/gmetal/screen_green.png similarity index 68% rename from images/screen_green.png rename to skins/gmetal/screen_green.png index 6b7ffadd9f338753a1742f24f886887e2d92de7e..4ab465eea11116d8d9ffeb9b8122af743ee340c0 100644 Binary files a/images/screen_green.png and b/skins/gmetal/screen_green.png differ diff --git a/skins/metal.ini b/skins/metal.ini index d4267b9c028579fbc808081acff14aa2bd4469a7..ea15fd6195767255577e33e76cf8edd99bd4eba9 100644 --- a/skins/metal.ini +++ b/skins/metal.ini @@ -170,8 +170,19 @@ paint=1 [main] type=QWidget -background=main.png +bImage=main.png +[screen] +type=QWidget +x=22 +y=44 +width=184 +height=98 +bImage=screen_main.png + +[overscreen] +type=QWidget +bImage=overscreen.png # DTMF Keypad #dtmf_1=12,22 diff --git a/skins/metal/l1_off.png b/skins/metal/l1_off.png new file mode 100644 index 0000000000000000000000000000000000000000..864c2556cdfd48c1717d01ac1ee2da0bba9c64d0 Binary files /dev/null and b/skins/metal/l1_off.png differ diff --git a/skins/metal/l2_off.png b/skins/metal/l2_off.png new file mode 100644 index 0000000000000000000000000000000000000000..c770ff6bce5cb7458b4b5d018e1d6a729d7a6d5d Binary files /dev/null and b/skins/metal/l2_off.png differ diff --git a/skins/metal/l3_off.png b/skins/metal/l3_off.png new file mode 100644 index 0000000000000000000000000000000000000000..345206f17d79376685c24ad9970ca157c8b0b25b Binary files /dev/null and b/skins/metal/l3_off.png differ diff --git a/skins/metal/l4_off.png b/skins/metal/l4_off.png new file mode 100644 index 0000000000000000000000000000000000000000..bef390ac4082e50f4934ca6b947e4f558493daf2 Binary files /dev/null and b/skins/metal/l4_off.png differ diff --git a/skins/metal/l5_off.png b/skins/metal/l5_off.png new file mode 100644 index 0000000000000000000000000000000000000000..1303ed2ce264f2d335f79e04fb5ec6738b0cdea4 Binary files /dev/null and b/skins/metal/l5_off.png differ diff --git a/skins/metal/l6_off.png b/skins/metal/l6_off.png new file mode 100644 index 0000000000000000000000000000000000000000..d5e7ec474e364a66ee009cfbbcdeb50e9be651f5 Binary files /dev/null and b/skins/metal/l6_off.png differ diff --git a/skins/metal/overscreen.png b/skins/metal/overscreen.png new file mode 100644 index 0000000000000000000000000000000000000000..704cbbdbac5174e79260c345834cf47c78984134 Binary files /dev/null and b/skins/metal/overscreen.png differ diff --git a/images/screen_main.png b/skins/metal/screen_main.png similarity index 100% rename from images/screen_main.png rename to skins/metal/screen_main.png diff --git a/src/gui/qt/SFLLcd.cpp b/src/gui/qt/SFLLcd.cpp index 4051cf666e6100740da9adc8614ed96e7c13500a..b44bc8311a51604961e8831c8c42d477319515bc 100644 --- a/src/gui/qt/SFLLcd.cpp +++ b/src/gui/qt/SFLLcd.cpp @@ -42,9 +42,8 @@ #define OVERSCREEN "overscreen.png" SFLLcd::SFLLcd(QWidget *parent) - : QLabel(parent, "SFLLcd", Qt::WNoAutoErase) - , mScreen(TransparentWidget::retreive(SCREEN)) - , mOverscreen(TransparentWidget::retreive(OVERSCREEN)) + : QLabel(parent, "screen", Qt::WNoAutoErase) + , mOverscreen(parent, "overscreen") , mGlobalStatusPos(-1) , mUnselectedLineStatusPos(-1) , mLineStatusPos(-1) @@ -53,9 +52,9 @@ SFLLcd::SFLLcd(QWidget *parent) , mIsTimed(false) , mFont(FONT_FAMILY, FONT_SIZE) { - resize(mScreen.size()); - move(22,44); - + setPaletteBackgroundColor(QColor("gray")); + mOverscreen.setPaletteBackgroundColor(QColor("gray")); + //mOverscreen.hide(); mUnselectedLineTimer = new QTimer(this); QObject::connect(mUnselectedLineTimer, SIGNAL(timeout()), this, SLOT(updateGlobalText())); @@ -195,7 +194,7 @@ void SFLLcd::paintEvent(QPaintEvent *event) { static QPixmap pixmap(size()); - + pixmap.resize(size()); QRect rect = event->rect(); QSize newSize = rect.size().expandedTo(pixmap.size()); pixmap.resize(newSize); @@ -218,7 +217,8 @@ SFLLcd::paintEvent(QPaintEvent *event) int margin = 2; p.setFont(mFont); - p.drawPixmap(0,0, mScreen); + QPoint pointtest(margin, fm.height()); + p.drawText(QPoint(margin, fm.height()), extractVisibleText(globalStatus, *globalStatusPos)); p.drawText(QPoint(margin, 2*fm.height()), @@ -228,11 +228,14 @@ SFLLcd::paintEvent(QPaintEvent *event) p.drawText(QPoint(margin, 4*fm.height()), extractVisibleText(mBufferStatus, mBufferStatusPos)); - p.drawText(QPoint(margin, mScreen.size().height() - margin), getTimeStatus()); - p.drawPixmap(0,0, mOverscreen); + p.drawText(QPoint(margin, pixmap.size().height() - margin), getTimeStatus()); + const QPixmap *pix = mOverscreen.paletteBackgroundPixmap(); + if(pix != NULL && !pix->isNull()) { + p.drawPixmap(0,0, *pix); + } p.end(); - bitBlt(this, event->rect().topLeft(), &pixmap); + bitBlt(this, QPoint(0,0), &pixmap); } bool @@ -240,7 +243,7 @@ SFLLcd::textIsTooBig(const QString &text) { QFontMetrics fm(mFont); - int screenWidth = mScreen.width() - 4; + int screenWidth = width() - 4; int textWidth = fm.boundingRect(text).width(); if(textWidth > screenWidth) { diff --git a/src/gui/qt/SFLLcd.hpp b/src/gui/qt/SFLLcd.hpp index 878e426c42d00ecabcf518ea57bc10a2db462a4c..00772c5291679bb4b4f5b60c24dfd72b1b0ccfc9 100644 --- a/src/gui/qt/SFLLcd.hpp +++ b/src/gui/qt/SFLLcd.hpp @@ -63,8 +63,7 @@ private: void dragEnterEvent(QDragEnterEvent* event); void dropEvent(QDropEvent* event); - QPixmap mScreen; - QPixmap mOverscreen; + QLabel mOverscreen; QString mGlobalStatus; QString mUnselectedLineStatus;