mirror of
https://bitbucket.org/smil3y/kde-workspace.git
synced 2025-02-24 10:52:51 +00:00
143 lines
3.6 KiB
C++
143 lines
3.6 KiB
C++
|
|
/*
|
|
* infopanel.cpp
|
|
*
|
|
* Copyright (C) 2009 David Hubner <hubnerd@ntlworld.com>
|
|
*
|
|
* 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.
|
|
*
|
|
* This program 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 this program; if not, write to the Free Software
|
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
*
|
|
*/
|
|
|
|
#include "infopanel.h"
|
|
|
|
InfoPanel::InfoPanel(QWidget *parent, DevInfoPlugin *stat) :
|
|
QGroupBox(i18n("Device Information"),parent), status(stat)
|
|
{
|
|
setMinimumWidth(300);
|
|
|
|
setInfoPanelLayout();
|
|
setDefaultText();
|
|
adjustSize();
|
|
|
|
setWhatsThis(i18nc("Info Panel Whats This","Shows information about the currently selected device."));
|
|
}
|
|
|
|
InfoPanel::~InfoPanel()
|
|
{
|
|
delete top;
|
|
delete bottom;
|
|
}
|
|
|
|
void InfoPanel::setInfoPanelLayout()
|
|
{
|
|
vLayout = setAlignedLayout(this);
|
|
setLayout(vLayout);
|
|
setTopWidgetLayout(true);
|
|
|
|
setBottomWidgetLayout(new QVListLayout(),true);
|
|
}
|
|
|
|
void InfoPanel::setDefaultText()
|
|
{
|
|
QLabel *defaultText = new QLabel();
|
|
QFont font;
|
|
|
|
font.setBold(true);
|
|
|
|
defaultText->setAlignment(Qt::AlignHCenter);
|
|
defaultText->setFont(font);
|
|
defaultText->setText(i18n("\nSolid Based Device Viewer Module"));
|
|
|
|
QVBoxLayout *lay = static_cast<QVBoxLayout*>(top->layout());
|
|
|
|
lay->addWidget(setDevicesIcon(KIcon("kde")),0,Qt::AlignHCenter);
|
|
lay->addWidget(defaultText,0,Qt::AlignHCenter);
|
|
}
|
|
|
|
void InfoPanel::setTopWidgetLayout(const bool &isInit)
|
|
{
|
|
if(!isInit) delete top;
|
|
top = new QWidget(this);
|
|
|
|
vLayout->addWidget(top);
|
|
top->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Maximum);
|
|
top->setLayout(setAlignedLayout(top));
|
|
}
|
|
|
|
QVBoxLayout *InfoPanel::setAlignedLayout(QWidget *parent, const int &spacingHeight)
|
|
{
|
|
QVBoxLayout *lay = new QVBoxLayout(parent);
|
|
lay->insertSpacing(0,spacingHeight);
|
|
lay->setAlignment(Qt::AlignTop);
|
|
|
|
return lay;
|
|
}
|
|
|
|
void InfoPanel::setBottomWidgetLayout(QVListLayout *lay, const bool &isInit)
|
|
{
|
|
if(!isInit) delete bottom;
|
|
|
|
bottom = new QWidget(this);
|
|
vLayout->addWidget(bottom);
|
|
|
|
bottom->setLayout(lay);
|
|
}
|
|
|
|
void InfoPanel::setBottomInfo(QVListLayout *lay)
|
|
{
|
|
lay->setAlignment(Qt::AlignTop);
|
|
lay->insertSpacing(0,10);
|
|
setBottomWidgetLayout(lay);
|
|
}
|
|
|
|
QLabel *InfoPanel::setDevicesIcon(const QIcon &deviceIcon)
|
|
{
|
|
QLabel *iconLabel = new QLabel();
|
|
|
|
iconLabel->setPixmap(deviceIcon.pixmap(QSize(70,50)));
|
|
return iconLabel;
|
|
}
|
|
|
|
void InfoPanel::setTopInfo(const QIcon &deviceIcon, Solid::Device *device)
|
|
{
|
|
QList<QString> labels;
|
|
|
|
setTopWidgetLayout();
|
|
QVListLayout *tLayout = static_cast<QVListLayout *>(top->layout());
|
|
|
|
tLayout->addWidget(setDevicesIcon(deviceIcon),0,Qt::AlignHCenter);
|
|
|
|
labels << i18n("Product: ")
|
|
<< device->product()
|
|
<< i18n("Vendor: ")
|
|
<< friendlyString(device->vendor());
|
|
|
|
status->updateStatus(device->udi());
|
|
tLayout->applyQListToLayout(labels);
|
|
}
|
|
|
|
QString InfoPanel::friendlyString(const QString &input, const QString &blankName)
|
|
{
|
|
if(input.isEmpty()) return QString(blankName);
|
|
if(input.length() >= 40) return input.left(39);
|
|
|
|
return input;
|
|
}
|
|
|
|
QString InfoPanel::convertTf(const bool &b)
|
|
{
|
|
if(b) return i18n("Yes");
|
|
return i18n("No");
|
|
}
|