|
|
|
/***************************************************************************
|
|
|
|
* Copyright (C) 2005 by Pawel Nawrocki *
|
|
|
|
* pnawrocki@interia.pl *
|
|
|
|
* *
|
|
|
|
* 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 "netlistviewitem.h"
|
|
|
|
|
|
|
|
#include <iostream>
|
|
|
|
|
|
|
|
#include <kiconloader.h>
|
|
|
|
#include <kiconeffect.h>
|
|
|
|
#include <kdeversion.h>
|
|
|
|
|
|
|
|
void NetListViewItem::paintCell(TQPainter *p, const TQColorGroup &cg, int column, int width, int tqalignment)
|
|
|
|
{
|
|
|
|
/// HACK fixes: higher item (connected) is drawn using regular height upon widget change (widgetStack);
|
|
|
|
if ( height()!=mHeight )
|
|
|
|
setHeight( mHeight );
|
|
|
|
|
|
|
|
/// PREPARE COLORS ///
|
|
|
|
TQColor bgColor, fgColor;
|
|
|
|
/// colors of selected item
|
|
|
|
if ( listView()->isSelected(this) ) {
|
|
|
|
bgColor = cg.color( TQColorGroup::Highlight ); /// settings for selected item;
|
|
|
|
fgColor = cg.color( TQColorGroup::HighlightedText );
|
|
|
|
/// colors of deselected item`
|
|
|
|
} else {
|
|
|
|
if (mConnected)
|
|
|
|
bgColor = cg.color( TQColorGroup::Background);
|
|
|
|
else {
|
|
|
|
#if KDE_IS_VERSION(3,4,0)
|
|
|
|
bgColor = ((KListViewItem*)this)->backgroundColor(column);
|
|
|
|
#else
|
|
|
|
|
|
|
|
bgColor = ((KListViewItem*)this)->backgroundColor();
|
|
|
|
#endif
|
|
|
|
|
|
|
|
}
|
|
|
|
fgColor = cg.color( TQColorGroup::Text);
|
|
|
|
if (mQuality<8)
|
|
|
|
fgColor = fgColor.light();
|
|
|
|
}
|
|
|
|
|
|
|
|
/// DRAW BACKGROUND ///
|
|
|
|
p->fillRect(0,0,width,height(),bgColor);
|
|
|
|
if (mConnected) {
|
|
|
|
/// draw a line separating connectedItem from the rest of the list.
|
|
|
|
p->setPen( bgColor.dark(130) );
|
|
|
|
p->drawLine(0, height()-1, width, height()-1);
|
|
|
|
}
|
|
|
|
|
|
|
|
switch (column) {
|
|
|
|
|
|
|
|
/// DRAW TQUALITY ///
|
|
|
|
case mQualityColumn: {
|
|
|
|
TQPixmap qualityIcon = SmallIcon("knewstuff");
|
|
|
|
TQPixmap qualityIconGray = KIconEffect().apply( qualityIcon, KIconEffect::ToGray, 1, TQt::black, true );
|
|
|
|
int barWidth = int(mQuality/8)*8;
|
|
|
|
if (mQuality>0)
|
|
|
|
barWidth+=8; //add 8 (half a star) b/c int rounds down.
|
|
|
|
if (barWidth>96)
|
|
|
|
barWidth=96;
|
|
|
|
int icoTop = int( ( this->height()-16 )/2 );
|
|
|
|
p->drawTiledPixmap(listView()->itemMargin(),icoTop,6*16, 16, qualityIconGray );
|
|
|
|
p->drawTiledPixmap(listView()->itemMargin(),icoTop,barWidth, 16, qualityIcon );
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
|
|
|
/// DRAW ENCRYPTION ///
|
|
|
|
case mEncColumn: {
|
|
|
|
if (mEnc) {
|
|
|
|
int icoTop = int( ( this->height()-16 )/2 );
|
|
|
|
int icoLeft = int( ( width-listView()->itemMargin()-16 )/2 );
|
|
|
|
TQPixmap encIcon = SmallIcon("encrypted");
|
|
|
|
p->drawPixmap(icoLeft,icoTop, encIcon );
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
|
|
|
/// DRAW ESSID ///
|
|
|
|
case mEssidColumn: {
|
|
|
|
/// draw icon and its shadow.
|
|
|
|
if (mConnected) {
|
|
|
|
TQPixmap connectedIcon;
|
|
|
|
connectedIcon = SmallIcon("forward");
|
|
|
|
int icoTop = int( ( this->height()-16 )/2 );
|
|
|
|
p->drawPixmap(listView()->itemMargin(),icoTop, connectedIcon );
|
|
|
|
}
|
|
|
|
|
|
|
|
TQFont mFont = listView()->font();
|
|
|
|
if (mConnected)
|
|
|
|
mFont.setBold( true );
|
|
|
|
if (mHidden)
|
|
|
|
mFont.setItalic( true );
|
|
|
|
p->setFont( mFont );
|
|
|
|
/// draw shadow + essid name(not connected)
|
|
|
|
if (mConnected) {
|
|
|
|
p->setPen( bgColor.dark(130) );
|
|
|
|
p->drawText(16+(listView()->itemMargin()*2),0,width, height(), AlignVCenter, mEssid);
|
|
|
|
p->setPen( bgColor.dark(220) );
|
|
|
|
p->drawText(16+(listView()->itemMargin()*2)-1,-1,width, height(), AlignVCenter, mEssid);
|
|
|
|
p->setPen( fgColor );
|
|
|
|
p->drawText(16+(listView()->itemMargin()*2)-2,-2,width, height(), AlignVCenter, mEssid);
|
|
|
|
|
|
|
|
} else {
|
|
|
|
/// draw essid name (not connected)
|
|
|
|
p->setPen( fgColor );
|
|
|
|
p->drawText(listView()->itemMargin(),0,width, height(), AlignVCenter, mEssid);
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
|
|
|
/// DRAW CHANNEL ///
|
|
|
|
case mChanColumn: {
|
|
|
|
TQFont mFont = listView()->font();
|
|
|
|
mFont.setItalic(true);
|
|
|
|
if (mConnected)
|
|
|
|
mFont.setBold( true );
|
|
|
|
p->setFont( mFont );
|
|
|
|
if (mConnected) {
|
|
|
|
p->setPen( bgColor.dark(130) );
|
|
|
|
p->drawText(listView()->itemMargin(),0,width, height(), AlignCenter, mChannel);
|
|
|
|
p->setPen( bgColor.dark(220) );
|
|
|
|
p->drawText(listView()->itemMargin()-1,-1,width, height(), AlignCenter, mChannel);
|
|
|
|
} else {
|
|
|
|
p->setPen( bgColor.dark(220) );
|
|
|
|
p->drawText(listView()->itemMargin(),0,width, height(), AlignCenter, mChannel);
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
/// DRAW ACCESS POINT ///
|
|
|
|
case mAPColumn: {
|
|
|
|
TQFont mFont = listView()->font();
|
|
|
|
if (mHidden)
|
|
|
|
mFont.setItalic( true );
|
|
|
|
if (mConnected)
|
|
|
|
mFont.setBold( true );
|
|
|
|
p->setFont( mFont );
|
|
|
|
if (mConnected) {
|
|
|
|
p->setPen( bgColor.dark(130) );
|
|
|
|
p->drawText(listView()->itemMargin(),0,width, height(), AlignVCenter, mAP);
|
|
|
|
p->setPen( bgColor.dark(220) );
|
|
|
|
p->drawText(listView()->itemMargin()-1,-1,width, height(), AlignVCenter, mAP);
|
|
|
|
|
|
|
|
} else {
|
|
|
|
p->setPen( bgColor.dark(220) );
|
|
|
|
p->drawText(listView()->itemMargin(),0,width, height(), AlignVCenter, mAP);
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
|
|
|
default:
|
|
|
|
KListViewItem::paintCell(p, cg, column, width, tqalignment);
|
|
|
|
|
|
|
|
} //switch
|
|
|
|
}
|
|
|
|
|
|
|
|
int NetListViewItem::width(const TQFontMetrics &fm, const TQListView *lv, int column) const
|
|
|
|
{
|
|
|
|
int w;
|
|
|
|
TQFont mFont = listView()->font();
|
|
|
|
if (mConnected)
|
|
|
|
mFont.setBold(true);
|
|
|
|
if (mHidden)
|
|
|
|
mFont.setItalic(true);
|
|
|
|
TQFontMetrics mFm( mFont );
|
|
|
|
|
|
|
|
if (column == mQualityColumn)
|
|
|
|
w = 6*16 + (lv->itemMargin()*2);
|
|
|
|
else if (column == mEncColumn)
|
|
|
|
w = 16 + (lv->itemMargin()*2);
|
|
|
|
else if (column == mChanColumn)
|
|
|
|
w = mFm.width( mChannel ) + (lv->itemMargin()*2);
|
|
|
|
else if (column == mEssidColumn)
|
|
|
|
w = mFm.width( mEssid ) + (lv->itemMargin()*2);
|
|
|
|
else if (column == mAPColumn)
|
|
|
|
w = mFm.width( mAP ) + (lv->itemMargin()*2);
|
|
|
|
/*else if (column == mModeColumn)
|
|
|
|
w = fm.width( mMode ) + (lv->itemMargin()*2);*/
|
|
|
|
|
|
|
|
else
|
|
|
|
w = 0;
|
|
|
|
|
|
|
|
int headerw = fm.width( listView()->columnText(column) ) + (lv->itemMargin()*2);
|
|
|
|
if (w < headerw)
|
|
|
|
w = headerw;
|
|
|
|
|
|
|
|
return w;
|
|
|
|
}
|
|
|
|
|
|
|
|
TQString NetListViewItem::key( int column, bool ascending ) const
|
|
|
|
{
|
|
|
|
if (mConnected) { // make sure that connected item is always 1st.
|
|
|
|
if (ascending)
|
|
|
|
return "0";
|
|
|
|
else
|
|
|
|
return "ZZZ";
|
|
|
|
}
|
|
|
|
TQString t = TQString();
|
|
|
|
if (column == mQualityColumn) {
|
|
|
|
t = TQString::number( mQuality );
|
|
|
|
if (mQuality < 10)
|
|
|
|
t.prepend("0");
|
|
|
|
} else if (column == mEncColumn) {
|
|
|
|
if (mEnc)
|
|
|
|
t = "1";
|
|
|
|
else
|
|
|
|
t="0";
|
|
|
|
} else if (column == mEssidColumn) {
|
|
|
|
t = mEssid.upper(); // add .upper() to make it case-insensitive;
|
|
|
|
} else if (column == mChanColumn) {
|
|
|
|
t = mChannel;
|
|
|
|
if ( mChannel.length() == 1 )
|
|
|
|
t.prepend("0");
|
|
|
|
} else if (column == mAPColumn) {
|
|
|
|
t = mAP.upper();
|
|
|
|
/*} else if (column == mModeColumn) {
|
|
|
|
t = mMode.upper();*/
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return t;
|
|
|
|
}
|