summaryrefslogtreecommitdiffstats
path: root/src/app/DiskUsage/diskusagegui.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/app/DiskUsage/diskusagegui.cpp')
-rw-r--r--src/app/DiskUsage/diskusagegui.cpp227
1 files changed, 227 insertions, 0 deletions
diff --git a/src/app/DiskUsage/diskusagegui.cpp b/src/app/DiskUsage/diskusagegui.cpp
new file mode 100644
index 0000000..28b52ce
--- /dev/null
+++ b/src/app/DiskUsage/diskusagegui.cpp
@@ -0,0 +1,227 @@
+/***************************************************************************
+ diskusagegui.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 "diskusagegui.h"
+#include "../kicons.h"
+#include "../krusader.h"
+#include "../VFS/vfs.h"
+#include "../Dialogs/krdialogs.h"
+
+#include <tqtimer.h>
+#include <tqhbox.h>
+#include <tdelocale.h>
+#include <tqtooltip.h>
+
+DiskUsageGUI::DiskUsageGUI( KURL openDir, TQWidget* parent, const char *name )
+ : TQDialog( parent, name, false, 0 ), exitAtFailure( true )
+{
+ setCaption( i18n("Krusader::Disk Usage") );
+
+ baseDirectory = openDir;
+ if( !newSearch() )
+ return;
+
+ TQGridLayout *duGrid = new TQGridLayout( this );
+ duGrid->setSpacing( 6 );
+ duGrid->setMargin( 11 );
+
+ TQHBox *duTools = new TQHBox( this, "duTools" );
+ duTools->setSizePolicy( TQSizePolicy::Fixed, TQSizePolicy::Fixed );
+
+ btnNewSearch = new TQToolButton( duTools, "btnNewSearch" );
+ btnNewSearch->setIconSet( TQIconSet(krLoader->loadIcon("document-open",TDEIcon::Desktop)) );
+ TQToolTip::add( btnNewSearch, i18n( "Start new disk usage search" ) );
+
+ btnRefresh = new TQToolButton( duTools, "btnRefresh" );
+ btnRefresh->setIconSet( TQIconSet(krLoader->loadIcon("reload",TDEIcon::Desktop)) );
+ TQToolTip::add( btnRefresh, i18n( "Refresh" ) );
+
+ btnDirUp = new TQToolButton( duTools, "btnDirUp" );
+ btnDirUp->setIconSet( TQIconSet(krLoader->loadIcon("go-up",TDEIcon::Desktop)) );
+ TQToolTip::add( btnDirUp, i18n( "Parent directory" ) );
+
+ TQWidget * separatorWidget = new TQWidget( duTools, "separatorWidget" );
+ separatorWidget->setMinimumWidth( 10 );
+
+ btnLines = new TQToolButton( duTools, "btnLines" );
+ btnLines->setIconSet( TQIconSet(krLoader->loadIcon("format-justify-left",TDEIcon::Desktop)) );
+ btnLines->setToggleButton( true );
+ TQToolTip::add( btnLines, i18n( "Line view" ) );
+
+ btnDetailed = new TQToolButton( duTools, "btnDetailed" );
+ btnDetailed->setIconSet( TQIconSet(krLoader->loadIcon("view_detailed",TDEIcon::Desktop)) );
+ btnDetailed->setToggleButton( true );
+ TQToolTip::add( btnDetailed, i18n( "Detailed view" ) );
+
+ btnFilelight = new TQToolButton( duTools, "btnFilelight" );
+ btnFilelight->setIconSet( TQIconSet(krLoader->loadIcon("kr_diskusage",TDEIcon::Desktop)) );
+ btnFilelight->setToggleButton( true );
+ TQToolTip::add( btnFilelight, i18n( "Filelight view" ) );
+
+ TQWidget *spacerWidget = new TQWidget( duTools, "spacerWidget" );
+ TQHBoxLayout *hboxlayout = new TQHBoxLayout( spacerWidget );
+ TQSpacerItem* spacer = new TQSpacerItem( 0, 0, TQSizePolicy::Expanding, TQSizePolicy::Fixed );
+ hboxlayout->addItem( spacer );
+
+ duGrid->addWidget( duTools, 0, 0 );
+
+ diskUsage = new DiskUsage( "DiskUsage", this );
+ duGrid->addWidget( diskUsage, 1, 0 );
+
+ status = new KSqueezedTextLabel( this );
+ status->setFrameShape( TQLabel::StyledPanel );
+ status->setFrameShadow( TQLabel::Sunken );
+ duGrid->addWidget( status, 2, 0 );
+
+ connect( diskUsage, TQ_SIGNAL( status( TQString ) ), this, TQ_SLOT( setStatus( TQString ) ) );
+ connect( diskUsage, TQ_SIGNAL( viewChanged( int ) ), this, TQ_SLOT( slotViewChanged( int ) ) );
+ connect( diskUsage, TQ_SIGNAL( newSearch() ), this, TQ_SLOT( newSearch() ) );
+ connect( diskUsage, TQ_SIGNAL( loadFinished( bool ) ), this, TQ_SLOT( slotLoadFinished( bool ) ) );
+ connect( btnNewSearch, TQ_SIGNAL( clicked() ), this, TQ_SLOT( newSearch() ) );
+ connect( btnRefresh, TQ_SIGNAL( clicked() ), this, TQ_SLOT( loadUsageInfo() ) );
+ connect( btnDirUp, TQ_SIGNAL( clicked() ), diskUsage, TQ_SLOT( dirUp() ) );
+ connect( btnLines, TQ_SIGNAL( clicked() ), this, TQ_SLOT( selectLinesView() ) );
+ connect( btnDetailed, TQ_SIGNAL( clicked() ), this, TQ_SLOT( selectListView() ) );
+ connect( btnFilelight, TQ_SIGNAL( clicked() ), this, TQ_SLOT( selectFilelightView() ) );
+
+ krConfig->setGroup( "DiskUsage" );
+
+ int view = krConfig->readNumEntry( "View", VIEW_LINES );
+ if( view < VIEW_LINES || view > VIEW_FILELIGHT )
+ view = VIEW_LINES;
+ diskUsage->setView( view );
+
+ sizeX = krConfig->readNumEntry( "Window Width", TQFontMetrics(font()).width("W") * 70 );
+ sizeY = krConfig->readNumEntry( "Window Height", TQFontMetrics(font()).height() * 25 );
+ resize( sizeX, sizeY );
+
+ if( krConfig->readBoolEntry( "Window Maximized", false ) )
+ showMaximized();
+ else
+ show();
+
+ exec();
+}
+
+DiskUsageGUI::~DiskUsageGUI()
+{
+}
+
+void DiskUsageGUI::slotLoadFinished( bool result )
+{
+ if( exitAtFailure && !result )
+ reject();
+ else
+ exitAtFailure = false;
+}
+
+void DiskUsageGUI::enableButtons( bool isOn )
+{
+ btnNewSearch->setEnabled( isOn );
+ btnRefresh->setEnabled( isOn );
+ btnDirUp->setEnabled( isOn );
+ btnLines->setEnabled( isOn );
+ btnDetailed->setEnabled( isOn );
+ btnFilelight->setEnabled( isOn );
+}
+
+void DiskUsageGUI::resizeEvent( TQResizeEvent *e )
+{
+ if( !isMaximized() )
+ {
+ sizeX = e->size().width();
+ sizeY = e->size().height();
+ }
+ TQDialog::resizeEvent( e );
+}
+
+void DiskUsageGUI::reject()
+{
+ krConfig->setGroup( "DiskUsage" );
+ krConfig->writeEntry("Window Width", sizeX );
+ krConfig->writeEntry("Window Height", sizeY );
+ krConfig->writeEntry("Window Maximized", isMaximized() );
+ krConfig->writeEntry("View", diskUsage->getActiveView() );
+
+ TQDialog::reject();
+}
+
+void DiskUsageGUI::loadUsageInfo()
+{
+ diskUsage->load( baseDirectory );
+}
+
+void DiskUsageGUI::setStatus( TQString stat )
+{
+ status->setText( stat );
+}
+
+void DiskUsageGUI::slotViewChanged( int view )
+{
+ if( view == VIEW_LOADER )
+ {
+ enableButtons( false );
+ return;
+ }
+ enableButtons( true );
+
+ btnLines->setOn( false );
+ btnDetailed->setOn( false );
+ btnFilelight->setOn( false );
+
+ switch( view )
+ {
+ case VIEW_LINES:
+ btnLines->setOn( true );
+ break;
+ case VIEW_DETAILED:
+ btnDetailed->setOn( true );
+ break;
+ case VIEW_FILELIGHT:
+ btnFilelight->setOn( true );
+ break;
+ case VIEW_LOADER:
+ break;
+ }
+}
+
+bool DiskUsageGUI::newSearch()
+{
+ // ask the user for the copy dest
+
+ KURL tmp = KChooseDir::getDir(i18n( "Viewing the usage of directory:" ), baseDirectory, baseDirectory);
+ if (tmp.isEmpty()) return false;
+ baseDirectory = tmp;
+
+ TQTimer::singleShot( 0, this, TQ_SLOT( loadUsageInfo() ) );
+ return true;
+}
+
+#include "diskusagegui.moc"