File kdeutils-3.5.8-alt-create-password-zip-rar-7zip.patch of Package kdeutils3
--- kdeutils-3.5.8/ark/ark.kcfg~ 2005-09-10 12:21:35 +0400
+++ kdeutils-3.5.8/ark/ark.kcfg 2007-11-15 16:29:05 +0300
@@ -18,6 +18,11 @@
<whatsthis>Overwrite any files that have matching names on disk with the one from the archive</whatsthis>
<default>false</default>
</entry>
+ <entry name="askCreatePassword" type="Bool">
+ <label>Ask for password when create archive if possible</label>
+ <whatsthis>Ask for password when create archive if possible</whatsthis>
+ <default>true</default>
+ </entry>
</group>
<group name="Tar">
<entry name="preservePerms" type="Bool">
--- kdeutils-3.5.8/ark/addition.ui~ 2005-09-10 12:21:35 +0400
+++ kdeutils-3.5.8/ark/addition.ui 2007-11-15 16:31:35 +0300
@@ -16,6 +16,15 @@
<property name="name">
<cstring>unnamed</cstring>
</property>
+
+ <widget class="QCheckBox">
+ <property name="name">
+ <cstring>kcfg_askCreatePassword</cstring>
+ </property>
+ <property name="text">
+ <string>Ask for &password when create archive if possible</string>
+ </property>
+ </widget>
<widget class="QCheckBox">
<property name="name">
<cstring>kcfg_replaceOnlyWithNewer</cstring>
--- kdeutils-3.5.8~/ark/arch.h 2007-11-02 14:06:05 +0300
+++ kdeutils-3.5.8/ark/arch.h 2007-11-02 14:08:34 +0300
@@ -149,6 +149,9 @@ class Arch : public QObject
static Arch *archFactory( ArchType aType, ArkWidget *parent,
const QString &filename,
const QString &openAsMimeType = QString::null );
+ QString password() { return m_password; }
+ void setPassword(const QString & pw) { m_password = pw.local8Bit(); }
+ virtual void createPassword() {}
protected slots:
void slotOpenExited( KProcess* );
--- kdeutils-3.5.8~/ark/arkwidget.cpp 2007-11-02 14:06:05 +0300
+++ kdeutils-3.5.8/ark/arkwidget.cpp 2007-11-02 14:08:34 +0300
@@ -732,7 +732,10 @@ ArkWidget::file_open(const KURL& url)
m_url = url;
//arch->clearShellOutput();
- openArchive( strFile );
+ if( url.hasPass() )
+ openArchive( strFile, url.pass() );
+ else
+ openArchive( strFile );
}
@@ -1177,6 +1180,8 @@ ArkWidget::slotAddDone(bool _bSuccess)
//simulate reload
KURL u;
u.setPath( arch->fileName() );
+ if( !arch->password().isEmpty() )
+ u.setPass( arch->password() );
file_close();
file_open( u );
emit setWindowCaption( u.path() );
@@ -2095,6 +2100,7 @@ ArkWidget::slotCreate(Arch * _newarch, b
m_bIsSimpleCompressedFile =
(m_archType == COMPRESSED_FORMAT);
fixEnables();
+ arch->createPassword();
}
else
{
@@ -2108,7 +2114,7 @@ ArkWidget::slotCreate(Arch * _newarch, b
//////////////////////////////////////////////////////////////////////
void
-ArkWidget::openArchive( const QString & _filename )
+ArkWidget::openArchive( const QString & _filename, const QString & _password )
{
Arch *newArch = 0;
ArchType archtype;
@@ -2165,6 +2171,7 @@ ArkWidget::openArchive( const QString &
busy( i18n( "Opening the archive..." ) );
m_fileListView->setUpdatesEnabled( false );
arch = newArch;
+ newArch->setPassword(_password);
newArch->open();
emit addRecentURL( m_url );
}
--- kdeutils-3.5.8~/ark/arkwidget.h 2007-11-02 14:06:05 +0300
+++ kdeutils-3.5.8/ark/arkwidget.h 2007-11-02 14:08:34 +0300
@@ -234,7 +234,7 @@ protected:
void createFileListView();
bool createArchive(const QString & name);
- void openArchive(const QString & name);
+ void openArchive(const QString & name, const QString & pass = "");
void showCurrentFile();
--- kdeutils-3.5.8~/ark/rar.cpp 2007-11-02 14:06:05 +0300
+++ kdeutils-3.5.8/ark/rar.cpp 2007-11-02 14:08:34 +0300
@@ -163,6 +163,12 @@ void RarArch::create()
Arch::Extract | Arch::Delete | Arch::Add | Arch::View );
}
+void RarArch::createPassword()
+{
+ if( m_password.isEmpty() && ArkSettings::askCreatePassword() )
+ KPasswordDialog::getNewPassword( m_password, i18n("Warning!\nUsing KGpg for encryption is more secure.\nCancel this dialog or enter password for %1 archiver:").arg(m_archiver_program) );
+}
+
void RarArch::addDir( const QString & _dirName )
{
if ( !_dirName.isEmpty() )
@@ -190,6 +196,9 @@ void RarArch::addFile( const QStringList
if ( ArkSettings::rarRecurseSubdirs() )
*kp << "-r";
+ if ( !m_password.isEmpty() )
+ *kp << "-p"+m_password;
+
*kp << m_filename;
KURL dir( urls.first() );
--- kdeutils-3.5.8~/ark/rar.h 2007-11-02 14:06:05 +0300
+++ kdeutils-3.5.8/ark/rar.h 2007-11-02 14:08:34 +0300
@@ -48,6 +48,7 @@ class RarArch : public Arch
virtual void remove( QStringList * );
virtual void unarchFileInternal();
virtual bool passwordRequired();
+ virtual void createPassword();
protected slots:
virtual bool processLine( const QCString & );
--- kdeutils-3.5.8~/ark/sevenzip.cpp 2007-11-02 14:06:05 +0300
+++ kdeutils-3.5.8/ark/sevenzip.cpp 2007-11-02 14:08:52 +0300
@@ -120,6 +120,12 @@ void SevenZipArch::create()
Arch::Extract | Arch::Delete | Arch::Add | Arch::View );
}
+void SevenZipArch::createPassword()
+{
+ if( m_password.isEmpty() && ArkSettings::askCreatePassword() )
+ KPasswordDialog::getNewPassword( m_password, i18n("Warning!\nUsing KGpg for encryption is more secure.\nCancel this dialog or enter password for %1 archiver:").arg(m_archiver_program) );
+}
+
void SevenZipArch::addFile( const QStringList & urls )
{
KProcess *kp = m_currentProcess = new KProcess;
@@ -127,6 +133,9 @@ void SevenZipArch::addFile( const QStrin
kp->clearArguments();
*kp << m_archiver_program << "a" ;
+ if ( !m_password.isEmpty() )
+ *kp << "-p" + m_password;
+
KURL url( urls.first() );
QDir::setCurrent( url.directory() );
@@ -163,6 +172,11 @@ void SevenZipArch::addDir( const QString
}
}
+bool SevenZipArch::passwordRequired()
+{
+ return m_lastShellOutput.find("Enter password") >= 0;
+}
+
void SevenZipArch::remove( QStringList *list )
{
if ( !list )
@@ -212,6 +226,9 @@ void SevenZipArch::unarchFileInternal( )
//*kp << "-ao";
}
+ if ( !m_password.isEmpty() )
+ *kp << "-p" + m_password;
+
*kp << m_filename;
// if the file list is empty, no filenames go on the command line,
bool SevenZipArch::processLine( const QCString& _line )
{
QCString line( _line );
--- kdeutils-3.5.8~/ark/sevenzip.h 2007-11-02 14:06:05 +0300
+++ kdeutils-3.5.8/ark/sevenzip.h 2007-11-02 14:08:34 +0300
@@ -41,7 +41,9 @@ class SevenZipArch : public Arch
virtual void remove( QStringList * );
virtual void unarchFileInternal( );
+ virtual bool passwordRequired();
+ virtual void createPassword();
protected slots:
virtual bool processLine( const QCString& line );
virtual void slotReceivedTOC( KProcess*, char*, int );
--- kdeutils-3.5.8~/ark/zip.cpp 2007-11-02 14:06:05 +0300
+++ kdeutils-3.5.8/ark/zip.cpp 2007-11-02 14:08:34 +0300
@@ -35,6 +35,7 @@
#include <klocale.h>
#include <kmessagebox.h>
#include <kprocess.h>
+#include <kpassdlg.h>
// ark includes
#include "zip.h"
@@ -115,6 +116,12 @@ void ZipArch::create()
Arch::Extract | Arch::Delete | Arch::Add | Arch::View );
}
+void ZipArch::createPassword()
+{
+ if( m_password.isEmpty() && ArkSettings::askCreatePassword() )
+ KPasswordDialog::getNewPassword( m_password, i18n("Warning!\nUsing KGpg for encryption is more secure.\nCancel this dialog or enter password for %1 archiver:").arg(m_archiver_program) );
+}
+
void ZipArch::addDir( const QString & _dirName )
{
if ( !_dirName.isEmpty() )
--- kdeutils-3.5.8~/ark/zip.h 2007-11-02 14:06:05 +0300
+++ kdeutils-3.5.8/ark/zip.h 2007-11-02 14:08:34 +0300
@@ -51,6 +51,7 @@ class ZipArch : public Arch
virtual void remove( QStringList * );
virtual void unarchFileInternal();
virtual bool passwordRequired();
+ virtual void createPassword();
private:
void setHeaders();
};