diff options
Diffstat (limited to 'krusader/Dialogs/packgui.cpp')
-rw-r--r-- | krusader/Dialogs/packgui.cpp | 120 |
1 files changed, 120 insertions, 0 deletions
diff --git a/krusader/Dialogs/packgui.cpp b/krusader/Dialogs/packgui.cpp new file mode 100644 index 0000000..7036a3e --- /dev/null +++ b/krusader/Dialogs/packgui.cpp @@ -0,0 +1,120 @@ +/*************************************************************************** + packgui.cpp + ------------------- + copyright : (C) 2000 by Shie Erlich & Rafi Yanai + 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 "packgui.h" +#include <kfiledialog.h> +#include "../krusader.h" +#include "../defaults.h" +#include <qlineedit.h> +#include <qcheckbox.h> +#include <qstringlist.h> +#include <qlabel.h> +#include <qpushbutton.h> + +#define PS(x) lst.contains(x)>0 + +// clear the statics first +QString PackGUI::filename=0; +QString PackGUI::destination=0; +QString PackGUI::type=0; +QMap<QString, QString> PackGUI::extraProps; + +PackGUI::PackGUI(QString defaultName, QString defaultPath, int noOfFiles, QString filename) : + PackGUIBase(0,0,true) { + // first, fill the WhatToPack textfield with information + if(noOfFiles == 1) + TextLabel1->setText( i18n("Pack %1").arg(filename) ); + else + TextLabel1->setText( i18n("Pack %n file", "Pack %n files", noOfFiles) ); + + // now, according to the Konfigurator, fill the combobox with the information + // about what kind of packing we can do + krConfig->setGroup("Archives"); + QStringList lst=krConfig->readListEntry("Supported Packers"); + // now, clear the type combo and begin... + typeData->clear(); + if (PS("tar")) typeData->insertItem("tar"); + if (PS("tar") && PS("gzip")) typeData->insertItem("tar.gz"); + if (PS("tar") && PS("bzip2")) typeData->insertItem("tar.bz2"); + if (PS("zip")) typeData->insertItem("zip"); + if (PS("rar")) typeData->insertItem("rar"); + if (PS("lha")) typeData->insertItem("lha"); + if (PS("arj")) typeData->insertItem("arj"); + if (PS("7z")) typeData->insertItem("7z"); + // set the last used packer as the top one + QString tmp=krConfig->readEntry("lastUsedPacker",QString::null); + if (tmp!=QString::null) { + for (unsigned int i=0; i< typeData->listBox()->count(); ++i) + if (typeData->listBox()->item(i)->text() == tmp) { + typeData->listBox()->removeItem(i); + typeData->listBox()->insertItem(tmp,0); + break; + } + } + checkConsistency(); + + // and go on with the normal stuff + dirData->setText(defaultPath); + nameData->setText(defaultName); + nameData->setFocus(); + if (typeData->listBox()->count()==0) // if no packers are availble + okButton->setEnabled(false); + setGeometry(krApp->x()+krApp->width()/2-width()/2,krApp->y()+krApp->height()/2-height()/2,width(),height()); + exec(); +} + +void PackGUI::browse() { + QString temp=KFileDialog::getExistingDirectory(dirData->text(),0,i18n("Please select a directory")); + if (temp != QString::null) + dirData->setText(temp); +} + +void PackGUI::accept() { + if( !extraProperties( extraProps ) ) + return; + + filename=nameData->text(); + destination=dirData->text(); + type=typeData->currentText(); + // write down the packer chosen, to be lastUsedPacker + krConfig->setGroup("Archives"); + krConfig->writeEntry("lastUsedPacker",type); + krConfig->sync(); + PackGUIBase::accept(); +} + +void PackGUI::reject() { + filename=QString::null; + destination=QString::null; + type=QString::null; + PackGUIBase::reject(); +} + +#include "packgui.moc" |