Source Code (Use browser search to find items of interest.)
Class Index
kdf'DockWidget (./kdeutils/kdf/kwikdisk.h:86)
class DockWidget : public QLabel
{
Q_OBJECT
public:
DockWidget(QWidget *parent=0, const char *name=0);
~DockWidget( void );
public slots:
void loadSettings();
private slots:
void criticallyFull(DiskEntry *disk);
void toggleMount( void );
void settingsBtnClicked( void );
void invokeHTMLHelp( void );
void quit( void );
void startKDF( void );
void updateDF( void );
void updateDFDone( void );
void setUpdateFrequency( int frequency );
void sysCallError(DiskEntry *disk, int errno);
protected:
void mousePressEvent(QMouseEvent *);
void timerEvent( QTimerEvent * );
private:
DiskEntry *selectedDisk( void );
void showPopupMenu( void );
signals:
void quitProgram( void );
private:
MyPopupMenu *mPopupMenu;
COptionDialog *mOptionDialog;
bool mReadingDF;
bool mDirty;
DiskList mDiskList;
CStdOption mStd;
};
/***************************************************************/
kdf'DockWidget::DockWidget() (./kdeutils/kdf/kwikdisk.cpp:167)
DockWidget::DockWidget(QWidget *parent, const char *name)
: QLabel(parent,name), mPopupMenu(0), mOptionDialog(0), mReadingDF(false),
mDirty(true)
{
connect( &mDiskList, SIGNAL(readDFDone()), this, SLOT(updateDFDone()) );
connect( &mDiskList , SIGNAL(criticallyFull(DiskEntry*)),
this, SLOT(criticallyFull(DiskEntry*)) );
loadSettings();
}
kdf'DockWidget::~DockWidget() (./kdeutils/kdf/kwikdisk.cpp:178)
DockWidget::~DockWidget( void )
{
delete mPopupMenu;
}
/***************************************************************************
* reads the KConfig
**/
kdf'DockWidget::loadSettings() (./kdeutils/kdf/kwikdisk.cpp:188)
void DockWidget::loadSettings( void )
{
mStd.updateConfiguration();
setUpdateFrequency( mStd.updateFrequency() );
}
/**************************************************************************
* connected with diskList
**/
kdf'DockWidget::criticallyFull() (./kdeutils/kdf/kwikdisk.cpp:198)
void DockWidget::criticallyFull( DiskEntry *disk )
{
if( mStd.popupIfFull() == true )
{
QString msg = i18n("Device [%1] on [%1] is getting critically full!").
arg(disk->deviceName()).arg(disk->mountPoint());
KMessageBox::sorry( this, msg, i18n("Warning"));
}
}
kdf'DockWidget::selectedDisk() (./kdeutils/kdf/kwikdisk.cpp:210)
DiskEntry *DockWidget::selectedDisk( void )
{
if( mPopupMenu == 0 || mPopupMenu->activeIndex() == -1 )
{
return( 0 );
}
return( mDiskList.at(mPopupMenu->activeIndex()) );
}
/***************************************************************************
* resets the timer for automatic df-refreshes
**/
kdf'DockWidget::setUpdateFrequency() (./kdeutils/kdf/kwikdisk.cpp:225)
void DockWidget::setUpdateFrequency(int frequency )
{
//
// Kill current timer and restart it if the frequency is
// larger than zero.
//
killTimers();
if( frequency > 0 )
{
startTimer( frequency * 1000 );
}
}
/***************************************************************************
* Mark the list as dirty thus forcing a reload the next time the
* popup menu is about to become visible. Note: A current visible popup
* will not be update now.
**/
kdf'DockWidget::timerEvent() (./kdeutils/kdf/kwikdisk.cpp:243)
void DockWidget::timerEvent(QTimerEvent *)
{
mDirty = true;
}
kdf'DockWidget::startKDF() (./kdeutils/kdf/kwikdisk.cpp:249)
void DockWidget::startKDF( void )
{
system("kdf &");
}
kdf'DockWidget::mousePressEvent() (./kdeutils/kdf/kwikdisk.cpp:255)
void DockWidget::mousePressEvent( QMouseEvent * )
{
if( mPopupMenu != 0 && mDirty == false )
{
showPopupMenu();
}
else
{
updateDF();
}
}
kdf'DockWidget::sysCallError() (./kdeutils/kdf/kwikdisk.cpp:268)
void DockWidget::sysCallError( DiskEntry *disk, int errno )
{
if( errno != 0 )
{
KMessageBox::sorry( this, disk->lastSysError() );
}
}
/***************************************************************************
* checks fstab & df
**/
kdf'DockWidget::updateDF() (./kdeutils/kdf/kwikdisk.cpp:280)
void DockWidget::updateDF( void )
{
mReadingDF = true;
mDiskList.readFSTAB();
mDiskList.readDF();
}
kdf'DockWidget::toggleMount() (./kdeutils/kdf/kwikdisk.cpp:288)
void DockWidget::toggleMount( void )
{
DiskEntry *disk = selectedDisk();
if( disk == 0 )
{
return;
}
int val = disk->toggleMount();
if( val != 0 )
{
KMessageBox::error( this, disk->lastSysError() );
}
else if( mStd.openFileManager() == true && disk->mounted() == false )
{
if( mStd.fileManager().isEmpty() == false )
{
QString cmd = mStd.fileManager();
int pos = cmd.find("%m");
if( pos > 0 )
{
cmd = cmd.replace( pos, 2, disk->mountPoint() ) + " &";
}
else
{
cmd += " " + disk->mountPoint() +" &";
}
system( cmd.latin1() );
}
}
mDirty = true;
}
kdf'DockWidget::updateDFDone() (./kdeutils/kdf/kwikdisk.cpp:322)
void DockWidget::updateDFDone( void )
{
mReadingDF = false;
mDirty = false;
if (mPopupMenu!=0) delete mPopupMenu;
mPopupMenu = new MyPopupMenu; CHECK_PTR(mPopupMenu);
for( DiskEntry *disk = mDiskList.first(); disk!=0; disk = mDiskList.next())
{
QString *toolTipText = new QString( i18n("%1 (%2) %3 on %4").
arg( disk->mounted() ? i18n("Unmount") : i18n("Mount")).
arg(disk->fsType()).arg(disk->deviceName()).arg(disk->mountPoint()) );
if( toolTipText == 0 ) { return; }
QString entryName = disk->mountPoint();
if( disk->mounted() )
{
entryName += QString(" [%1]").arg(disk->prettyKBAvail());
}
int id = mPopupMenu->insertItem("",this, SLOT(toggleMount()) );
QPixmap *pix = new QPixmap(SmallIcon(disk->iconName()));
if( getuid() !=0 && disk->mountOptions().find("user",0, false) == -1 )
{
//
// Special root icon, normal user canīt mount.
//
// 2000-01-23 Espen Sand
// Careful here: If the mask has not been defined we can
// not use QPixmap::mask() because it returns 0 => segfault
//
if( pix->mask() != 0 )
{
QBitmap *bm = new QBitmap(*(pix->mask()));
if( bm != 0 )
{
QPainter qp( bm );
qp.setPen(QPen(white,1));
qp.drawRect(0,0,bm->width(),bm->height());
qp.end();
pix->setMask(*bm);
}
QPainter qp( pix );
qp.setPen(QPen(red,1));
qp.drawRect(0,0,pix->width(),pix->height());
qp.end();
}
mPopupMenu->disconnectItem(id,disk,SLOT(toggleMount()));
*toolTipText = i18n("Sorry, you must be root to mount this disk");
}
mPopupMenu->changeItem(*pix,entryName,id);
// mPopupMenu->changeItem(DevIcon(disk->iconName()),entryName,id);
connect(disk, SIGNAL(sysCallError(DiskEntry *, int) ),
this, SLOT(sysCallError(DiskEntry *, int)) );
mPopupMenu->setToolTip(id, toolTipText );
}
mPopupMenu->insertSeparator();
mPopupMenu->insertItem(
UserIcon( "kdf" ),
i18n("&Start KDiskFree"), this, SLOT(startKDF()),0);
mPopupMenu->insertItem(
BarIcon( "options" ),
i18n("&Customize"), this, SLOT(settingsBtnClicked()),0);
mPopupMenu->insertItem(
BarIcon( "help" ),
i18n("&Help"), this, SLOT(invokeHTMLHelp()),0);
mPopupMenu->insertSeparator();
mPopupMenu->insertItem(
BarIcon( "exit" ),
i18n("&Quit"), this, SLOT(quit()) );
mPopupMenu->move(-1000,-1000);
showPopupMenu();
setCursor(ArrowCursor);
}
kdf'DockWidget::showPopupMenu() (./kdeutils/kdf/kwikdisk.cpp:409)
void DockWidget::showPopupMenu( void )
{
if( mPopupMenu == 0 )
{
return;
}
QRect g = KWM::geometry( winId() );
QSize s = mPopupMenu->sizeHint();
if( g.x() > QApplication::desktop()->width()/2 &&
g.y() + s.height() > QApplication::desktop()->height() )
{
mPopupMenu->popup(QPoint( g.x(), g.y() - s.height()));
}
else
{
mPopupMenu->popup(QPoint( g.x() + g.width(), g.y() + g.height()));
}
}
/***************************************************************************
* pops up the SettingsBox if the settingsBtn is clicked
**/
kdf'DockWidget::settingsBtnClicked() (./kdeutils/kdf/kwikdisk.cpp:437)
void DockWidget::settingsBtnClicked( void )
{
if( mOptionDialog == 0 )
{
mOptionDialog = new COptionDialog( this, "options", false );
if( mOptionDialog == 0 ) { return; }
connect( mOptionDialog, SIGNAL(valueChanged()),
this, SLOT(loadSettings()) );
}
mOptionDialog->show();
}
kdf'DockWidget::invokeHTMLHelp() (./kdeutils/kdf/kwikdisk.cpp:450)
void DockWidget::invokeHTMLHelp( void )
{
kapp->invokeHTMLHelp("kcontrol/kdf/index.html","");
}
kdf'DockWidget::quit() (./kdeutils/kdf/kwikdisk.cpp:456)
void DockWidget::quit( void )
{
emit quitProgram();
}
/***************************************************************/