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

📄 dufilelight.cpp

📁 LINUX 下, 以 QT/KDE 写的档案管理员
💻 CPP
字号:
/***************************************************************************                       dufilelight.cpp  -  description                             -------------------    copyright            : (C) 2004 by Csaba Karai    e-mail               : krusader@users.sourceforge.net    web site             : http://krusader.sourceforge.net ---------------------------------------------------------------------------  Description ***************************************************************************  A     db   dD d8888b. db    db .d8888.  .d8b.  d8888b. d88888b d8888b.     88 ,8P' 88  `8D 88    88 88'  YP d8' `8b 88  `8D 88'     88  `8D     88,8P   88oobY' 88    88 `8bo.   88ooo88 88   88 88ooooo 88oobY'     88`8b   88`8b   88    88   `Y8b. 88~~~88 88   88 88~~~~~ 88`8b     88 `88. 88 `88. 88b  d88 db   8D 88   88 88  .8D 88.     88 `88.     YP   YD 88   YD ~Y8888P' `8888Y' YP   YP Y8888D' Y88888P 88   YD                                                     S o u r c e    F i l e *************************************************************************** *                                                                         * *   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.                                   * *                                                                         * ***************************************************************************/#include "dufilelight.h"#include "radialMap/radialMap.h"#include <kpopupmenu.h>#include <klocale.h>#include <kinputdialog.h>#define SCHEME_POPUP_ID    6730DUFilelight::DUFilelight( DiskUsage *usage, const char *name )  : RadialMap::Widget( usage, name ), diskUsage( usage ), currentDir( 0 ), refreshNeeded( true ){   setFocusPolicy( QWidget::StrongFocus );   connect( diskUsage, SIGNAL( enteringDirectory( Directory * ) ), this, SLOT( slotDirChanged( Directory * ) ) );   connect( diskUsage, SIGNAL( clearing() ), this, SLOT( clear() ) );   connect( diskUsage, SIGNAL( changed( File * ) ), this, SLOT( slotChanged( File * ) ) );   connect( diskUsage, SIGNAL( deleted( File * ) ), this, SLOT( slotChanged( File * ) ) );   connect( diskUsage, SIGNAL( changeFinished()  ), this, SLOT( slotRefresh() ) );   connect( diskUsage, SIGNAL( deleteFinished()  ), this, SLOT( slotRefresh() ) );   connect( diskUsage, SIGNAL( aboutToShow( QWidget * ) ), this, SLOT( slotAboutToShow( QWidget * ) ) );}void DUFilelight::slotDirChanged( Directory *dir ){  if( diskUsage->visibleWidget() != this )    return;      if( currentDir != dir )  {    currentDir = dir;        invalidate( false );    create( dir );    refreshNeeded = false;  }}void DUFilelight::clear(){  invalidate( false );  currentDir = 0;}File * DUFilelight::getCurrentFile(){  const RadialMap::Segment * focus = focusSegment();       if( !focus || focus->isFake() || focus->file() == currentDir )    return 0;      return (File *)focus->file();}void DUFilelight::mousePressEvent( QMouseEvent *event ){   if( event->button() == Qt::RightButton )   {     File * file = 0;          const RadialMap::Segment * focus = focusSegment();          if( focus && !focus->isFake() && focus->file() != currentDir )       file = (File *)focus->file();     KPopupMenu filelightPopup;     filelightPopup.insertItem( i18n("Zoom In"),  this, SLOT( zoomIn() ), Key_Plus );     filelightPopup.insertItem( i18n("Zoom Out"), this, SLOT( zoomOut() ), Key_Minus );          KPopupMenu schemePopup;                schemePopup.insertItem( i18n("Rainbow"),       this, SLOT( schemeRainbow() ) );     schemePopup.insertItem( i18n("High Contrast"), this, SLOT( schemeHighContrast() ) );     schemePopup.insertItem( i18n("KDE"),           this, SLOT( schemeKDE() ) );     filelightPopup.insertItem( QPixmap(), &schemePopup, SCHEME_POPUP_ID );     filelightPopup.changeItem( SCHEME_POPUP_ID, i18n( "Scheme" ) );          filelightPopup.insertItem( i18n("Increase contrast"), this, SLOT( increaseContrast() ) );     filelightPopup.insertItem( i18n("Decrease contrast"), this, SLOT( decreaseContrast() ) );               int aid = filelightPopup.insertItem( i18n("Use anti-aliasing" ), this, SLOT( changeAntiAlias() ) );     filelightPopup.setItemChecked( aid, Filelight::Config::antiAliasFactor > 1 );          int sid = filelightPopup.insertItem( i18n("Show small files" ), this, SLOT( showSmallFiles() ) );     filelightPopup.setItemChecked( sid, Filelight::Config::showSmallFiles );          int vid = filelightPopup.insertItem( i18n("Vary label font sizes" ), this, SLOT( varyLabelFontSizes() ) );     filelightPopup.setItemChecked( vid, Filelight::Config::varyLabelFontSizes );     filelightPopup.insertItem( i18n("Minimum font size"), this, SLOT( minFontSize() ) );                    diskUsage->rightClickMenu( file, &filelightPopup, i18n( "Filelight" ) );     return;        }else if( event->button() == Qt::LeftButton )   {     const RadialMap::Segment * focus = focusSegment();          if( focus && !focus->isFake() && focus->file() == currentDir )     {       diskUsage->dirUp();       return;     }     else if( focus && !focus->isFake() && focus->file()->isDir() )     {       diskUsage->changeDirectory( (Directory *)focus->file() );       return;     }   }      RadialMap::Widget::mousePressEvent( event );}  void DUFilelight::setScheme( Filelight::MapScheme scheme ){  Filelight::Config::scheme = scheme;  Filelight::Config::write();      slotRefresh();}void DUFilelight::increaseContrast(){  if( ( Filelight::Config::contrast += 10 ) > 100 )    Filelight::Config::contrast = 100;    Filelight::Config::write();      slotRefresh();}void DUFilelight::decreaseContrast(){  if( ( Filelight::Config::contrast -= 10 ) > 100 )    Filelight::Config::contrast = 0;    Filelight::Config::write();  slotRefresh();}void DUFilelight::changeAntiAlias(){  Filelight::Config::antiAliasFactor = 1 + ( Filelight::Config::antiAliasFactor == 1 );  Filelight::Config::write();      slotRefresh();}void DUFilelight::showSmallFiles(){  Filelight::Config::showSmallFiles = !Filelight::Config::showSmallFiles;  Filelight::Config::write();      slotRefresh();}void DUFilelight::varyLabelFontSizes(){  Filelight::Config::varyLabelFontSizes = !Filelight::Config::varyLabelFontSizes;  Filelight::Config::write();      slotRefresh();}void DUFilelight::minFontSize(){  bool ok = false;    int result = KInputDialog::getInteger( i18n( "Krusader::Filelight" ),    i18n( "Minimum font size" ), (int)Filelight::Config::minFontPitch, 1, 100, 1, &ok, this );  if ( ok )  {    Filelight::Config::minFontPitch = (uint)result;        Filelight::Config::write();        slotRefresh();  }}void DUFilelight::slotAboutToShow( QWidget *widget ){   if( widget == this && ( diskUsage->getCurrentDir() != currentDir || refreshNeeded ) )  {    refreshNeeded = false;    if( ( currentDir = diskUsage->getCurrentDir() ) != 0 )    {      invalidate( false );      create( currentDir );    }  }}void DUFilelight::slotRefresh() {   if( diskUsage->visibleWidget() != this )    return;  refreshNeeded = false;  if( currentDir && currentDir == diskUsage->getCurrentDir() )  {    invalidate( false );    create( currentDir );  }}void DUFilelight::slotChanged( File * ){   if( !refreshNeeded )     refreshNeeded = true;}#include "dufilelight.moc"

⌨️ 快捷键说明

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