⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 storage.cpp

📁 QT与C++写的任务管理器
💻 CPP
字号:
/************************************************************************ Copyright (C) 2000-2002 Trolltech AS.  All rights reserved.**** This file is part of the Qtopia Environment.**** This file may be distributed and/or modified under the terms of the** GNU General Public License version 2 as published by the Free Software** Foundation and appearing in the file LICENSE.GPL included in the** packaging of this file.**** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.**** See http://www.trolltech.com/gpl/ for GPL licensing information.**** Contact info@trolltech.com if any conditions of this licensing are** not clear to you.************************************************************************/#include <qlabel.h>#include <qlayout.h>#include <qtimer.h>#include <qvbox.h>#include "graph.h"#include "storage.h"#include <qtopia/storage.h>#include <stdio.h>#if defined(_OS_LINUX_) || defined(Q_OS_LINUX)#include <sys/vfs.h>#include <mntent.h>#include <errno.h>#endifStorageInfoView::StorageInfoView( QWidget *parent, const char *name )    : QWidget( parent, name ), vb(0){    sinfo = new StorageInfo(this);    vb = 0;    updateMounts();    connect(sinfo, SIGNAL(disksChanged()), this, SLOT(updateMounts()));    startTimer(5000);}void StorageInfoView::timerEvent(QTimerEvent*){    sinfo->update();    emit updated();}void StorageInfoView::resizeEvent(QResizeEvent*){    if ( vb )	setVBGeom();}void StorageInfoView::setVBGeom(){    vb->setGeometry(4,0,width()-8,height());}QSize StorageInfoView::sizeHint() const{    QSize s = vb ? vb->sizeHint() : QSize();    return QSize( s.width()+8, s.height() );}void StorageInfoView::updateMounts(){    const QList<FileSystem>& sifs(sinfo->fileSystems());    QListIterator<FileSystem> sit(sifs);    int n = sifs.count();    delete vb;    vb = new QVBox( this );    vb->setSpacing( n > 3 ? 1 : 5 );    bool frst=TRUE;    FileSystem* fs;    for ( ; (fs=sit.current()); ++sit ) {	if ( !frst ) {	    QFrame *f = new QFrame( vb );	    f->setFrameStyle( QFrame::HLine | QFrame::Sunken );	    f->show();	} else frst=FALSE;	MountInfo* mi = new MountInfo(fs, vb);	connect(this, SIGNAL(updated()), mi, SLOT(refresh()));    }    if ( n < 3 ) // add a filler	(new QWidget(vb))->setSizePolicy(QSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding));    setVBGeom();    updateGeometry();    vb->show();}MountInfo::MountInfo( const FileSystem* f, QWidget *parent, const char *name )    : QWidget( parent, name ), title(f->name()){    fs = f;    QVBoxLayout *vb = new QVBoxLayout( this, 3 );    totalSize = new QLabel( this );    vb->addWidget( totalSize );    data = new GraphData();    graph = new BarGraph( this );    graph->setFrameStyle( QFrame::Panel | QFrame::Sunken );    vb->addWidget( graph, 1 );    graph->setData( data );    legend = new GraphLegend( this );    vb->addWidget( legend );    legend->setData( data );    refresh();}MountInfo::~MountInfo(){    delete data;}void MountInfo::refresh(){    long mult = 0;    long div = 0;    if ( fs->blockSize() ) {	mult = fs->blockSize() / 1024;	div = 1024 / fs->blockSize();    }    if ( !mult ) mult = 1;    if ( !div ) div = 1;    long total = fs->totalBlocks() * mult / div;    long avail = fs->availBlocks() * mult / div;    long used = total - avail;    totalSize->setText( title + tr(" total: %1 kB").arg( total ) );    data->clear();    data->addItem( tr("Used (%1 kB)").arg(used), used );    data->addItem( tr("Available (%1 kB)").arg(avail), avail );    graph->repaint( FALSE );    legend->update();    graph->show();    legend->show();}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -