summaryrefslogtreecommitdiffstats
path: root/src/app/Splitter/splittergui.cpp
diff options
context:
space:
mode:
authorMichele Calgaro <michele.calgaro@yahoo.it>2025-08-28 22:44:34 +0900
committerMichele Calgaro <michele.calgaro@yahoo.it>2025-08-31 23:30:34 +0900
commitf9abd9d505434c9244c03eac708e29a0ca042f6b (patch)
tree30a197ab4c413849188bc131ff859212e636c821 /src/app/Splitter/splittergui.cpp
parent14d42d284de233f9937becf3fc9ee0dabede3b21 (diff)
downloadkrusader-r14.1.x.tar.gz
krusader-r14.1.x.zip
Restructure source foldersr14.1.x
Signed-off-by: Michele Calgaro <michele.calgaro@yahoo.it> (cherry picked from commit 086012dcad8a976a0dabbb7cbc20c9cb612cdfa9)
Diffstat (limited to 'src/app/Splitter/splittergui.cpp')
-rw-r--r--src/app/Splitter/splittergui.cpp213
1 files changed, 213 insertions, 0 deletions
diff --git a/src/app/Splitter/splittergui.cpp b/src/app/Splitter/splittergui.cpp
new file mode 100644
index 0000000..d2a4def
--- /dev/null
+++ b/src/app/Splitter/splittergui.cpp
@@ -0,0 +1,213 @@
+/***************************************************************************
+ splittergui.cpp - description
+ -------------------
+ copyright : (C) 2003 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 "splittergui.h"
+#include "../VFS/vfs.h"
+#include <tdelocale.h>
+#include <tqlayout.h>
+#include <tqlabel.h>
+#include <tdemessagebox.h>
+
+PredefinedDevice SplitterGUI::predefinedDevices[] = {
+ {i18n( "1.44 MB (3.5\")" ), 1457664},
+ {i18n( "1.2 MB (5.25\")" ), 1213952},
+ {i18n( "720 kB (3.5\")" ), 730112},
+ {i18n( "360 kB (5.25\")" ), 362496},
+ {i18n( "100 MB (ZIP)" ), 100431872},
+ {i18n( "250 MB (ZIP)" ), 250331136},
+ {i18n( "650 MB (CD-R)" ), 650*0x100000},
+ {i18n( "700 MB (CD-R)" ), 700*0x100000}
+ };
+
+SplitterGUI::SplitterGUI( TQWidget* parent, KURL fileURL, KURL defaultDir ) :
+ TQDialog( parent, "Krusader::SplitterGUI", true, 0 ),
+ userDefinedSize ( 0x100000 ), lastSelectedDevice( 0 ), resultCode( TQDialog::Rejected )
+{
+ predefinedDeviceNum = sizeof( predefinedDevices ) / sizeof( PredefinedDevice );
+
+ TQGridLayout *grid = new TQGridLayout( this );
+ grid->setSpacing( 6 );
+ grid->setMargin( 11 );
+
+ TQLabel *splitterLabel = new TQLabel( this, "SplitterLabel" );
+ splitterLabel->setText( i18n( "Split the file %1 to directory:" ).arg( vfs::pathOrURL( fileURL ) ) );
+ splitterLabel->setMinimumWidth( 400 );
+ grid->addWidget( splitterLabel,0 ,0 );
+
+ urlReq = new KURLRequester( this, "DestinationDirectory" );
+ urlReq->setURL( vfs::pathOrURL( defaultDir ) );
+ urlReq->setMode( KFile::Directory );
+ grid->addWidget( urlReq, 1 ,0 );
+
+ TQHBox *splitSizeLine = new TQHBox( this, "splitSizeLine" );
+
+ deviceCombo = new TQComboBox( splitSizeLine, "deviceCombo" );
+ for( int i=0; i != predefinedDeviceNum; i++ )
+ deviceCombo->insertItem( predefinedDevices[i].name );
+ deviceCombo->insertItem( i18n( "User Defined" ) );
+
+ TQLabel *spacer = new TQLabel( splitSizeLine );
+ spacer->setText( " " );
+ spacer->setSizePolicy( TQSizePolicy::Expanding, TQSizePolicy::Minimum );
+
+ TQLabel *bytesPerFile = new TQLabel( splitSizeLine, "BytesPerFile" );
+ bytesPerFile->setText( i18n( "Max file size:" ) );
+
+ spinBox = new SplitterSpinBox( splitSizeLine, "spinbox" );
+ spinBox->setMinimumWidth( 85 );
+ spinBox->setEnabled( false );
+
+ sizeCombo = new TQComboBox( splitSizeLine, "sizeCombo" );
+ sizeCombo->insertItem( i18n( "Byte" ) );
+ sizeCombo->insertItem( i18n( "kByte" ) );
+ sizeCombo->insertItem( i18n( "MByte" ) );
+ sizeCombo->insertItem( i18n( "GByte" ) );
+
+ grid->addWidget( splitSizeLine,2 ,0 );
+
+ TQFrame *separator = new TQFrame( this, "separatorLine" );
+ separator->setFrameStyle( TQFrame::HLine | TQFrame::Sunken );
+ separator->setFixedHeight( separator->sizeHint().height() );
+
+ grid->addWidget( separator,3 ,0 );
+
+ TQHBoxLayout *splitButtons = new TQHBoxLayout;
+ splitButtons->setSpacing( 6 );
+ splitButtons->setMargin( 0 );
+
+ TQSpacerItem* spacer2 = new TQSpacerItem( 0, 0, TQSizePolicy::Expanding, TQSizePolicy::Minimum );
+ splitButtons->addItem( spacer2 );
+
+ TQPushButton *splitBtn = new TQPushButton( this, "splitBtn" );
+ splitBtn->setText( i18n("&Split") );
+ splitButtons->addWidget( splitBtn );
+
+ TQPushButton *cancelBtn = new TQPushButton( this, "cancelBtn" );
+ cancelBtn->setText( i18n("&Cancel") );
+ splitButtons->addWidget( cancelBtn );
+
+ grid->addLayout( splitButtons,4 ,0 );
+
+ setCaption(i18n("Krusader::Splitter"));
+
+ connect( sizeCombo, TQ_SIGNAL( activated(int) ), this, TQ_SLOT( sizeComboActivated( int ) ) );
+ connect( deviceCombo, TQ_SIGNAL( activated(int) ), this, TQ_SLOT( predefinedComboActivated( int ) ) );
+ connect( cancelBtn, TQ_SIGNAL( clicked() ), this, TQ_SLOT( reject() ) );
+ connect( splitBtn , TQ_SIGNAL( clicked() ), this, TQ_SLOT( splitPressed() ) );
+
+ predefinedComboActivated( 0 );
+ resultCode = exec();
+}
+
+void SplitterGUI::sizeComboActivated( int item )
+{
+ switch ( item )
+ {
+ case 0:
+ spinBox->setDivision( 1 ); /* byte */
+ break;
+ case 1:
+ spinBox->setDivision( 0x400 ); /* kbyte */
+ break;
+ case 2:
+ spinBox->setDivision( 0x100000 ); /* Mbyte */
+ break;
+ case 3:
+ spinBox->setDivision( 0x40000000 ); /* Gbyte */
+ break;
+ }
+}
+
+void SplitterGUI::predefinedComboActivated( int item )
+{
+ int capacity = userDefinedSize;
+
+ if( item < predefinedDeviceNum )
+ {
+ if( lastSelectedDevice == predefinedDeviceNum )
+ userDefinedSize = spinBox->longValue();
+
+ spinBox->setEnabled( false );
+ capacity = predefinedDevices[item].capacity;
+ }
+ else
+ spinBox->setEnabled( true );
+
+ spinBox->setLongValue( capacity );
+
+ if( capacity >= 0x40000000 ) /* Gbyte */
+ {
+ sizeCombo->setCurrentItem( 3 );
+ spinBox->setDivision( 0x40000000 );
+ }
+ else if( capacity >= 0x100000 ) /* Mbyte */
+ {
+ sizeCombo->setCurrentItem( 2 );
+ spinBox->setDivision( 0x100000 );
+ }
+ else if( capacity >= 0x400 ) /* kbyte */
+ {
+ sizeCombo->setCurrentItem( 1 );
+ spinBox->setDivision( 0x400 );
+ }
+ else
+ {
+ sizeCombo->setCurrentItem( 0 ); /* byte */
+ spinBox->setDivision( 1 );
+ }
+
+ lastSelectedDevice = item;
+}
+
+void SplitterGUI::splitPressed()
+{
+ if( !vfs::fromPathOrURL( urlReq->url() ).isValid() )
+ {
+ KMessageBox::error( this, i18n("The directory path URL is malformed!") );
+ return;
+ }
+
+ emit accept();
+}
+
+void SplitterGUI::keyPressEvent( TQKeyEvent *e )
+{
+ switch ( e->key() )
+ {
+ case Key_Enter :
+ case Key_Return :
+ emit splitPressed();
+ return;
+ default:
+ TQDialog::keyPressEvent( e );
+ }
+}
+
+#include "splittergui.moc"