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 &amp;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();
 };
openSUSE Build Service is sponsored by