~ubuntu-branches/ubuntu/lucid/kdebase/lucid

« back to all changes in this revision

Viewing changes to apps/lib/konq/konq_operations.cpp

  • Committer: Bazaar Package Importer
  • Author(s): Jonathan Thomas
  • Date: 2009-12-02 13:28:20 UTC
  • mto: This revision was merged to the branch mainline in revision 258.
  • Revision ID: james.westby@ubuntu.com-20091202132820-tpxn348l9frx5zd5
Tags: upstream-4.3.80
ImportĀ upstreamĀ versionĀ 4.3.80

Show diffs side-by-side

added added

removed removed

Lines of Context:
45
45
#include <kio/copyjob.h>
46
46
#include <kio/paste.h>
47
47
#include <kio/renamedialog.h>
48
 
#include <kfileitemlistproperties.h>
49
48
#include <kdirnotify.h>
50
49
#include <kuiserverjobtracker.h>
51
50
#include <kstandarddirs.h>
512
511
            return;
513
512
        }
514
513
 
 
514
        bool enableLinking = true;                      // for now, but see below
 
515
 
515
516
        // We don't want to offer "move" for temp files. They might come from
516
517
        // kmail using a tempfile for attachments, or ark using a tempdir for
517
518
        // extracting an archive -- in all cases, we can't implement a real move,
518
519
        // it's just a copy of the tempfile [and the source app will delete it later].
519
520
        // https://www.intevation.de/roundup/kolab/issue2026
 
521
        //
 
522
        // Similarly, linking to a temp file is pointless.
520
523
        if (url.isLocalFile() && url.toLocalFile().startsWith(KStandardDirs::locateLocal("tmp", QString()))) {
521
524
            sMoving = false;
522
525
            sDeleting = false;
 
526
            enableLinking = false;
523
527
        }
524
528
 
525
529
        QMenu popup;
560
564
        if ( sReading && !linkOnly)
561
565
            popup.addAction(popupCopyAction);
562
566
 
563
 
        popup.addAction(popupLinkAction);
 
567
        if ( enableLinking )
 
568
            popup.addAction(popupLinkAction);
564
569
 
565
570
#if 0
566
571
        if (bSetWallpaper)
802
807
    rename( parent, oldurl, newurl );
803
808
}
804
809
 
805
 
KIO::SimpleJob* KonqOperations::newDir( QWidget * parent, const KUrl & baseUrl )
806
 
{
 
810
// Duplicated in libkfile's KDirOperator
 
811
static bool confirmCreatingHiddenDir(const QString& name, QWidget* parent)
 
812
{
 
813
    KGuiItem continueGuiItem(KStandardGuiItem::cont());
 
814
    continueGuiItem.setText(i18nc("@action:button", "Create directory"));
 
815
    KGuiItem cancelGuiItem(KStandardGuiItem::cancel());
 
816
    cancelGuiItem.setText(i18nc("@action:button", "Enter a different name"));
 
817
    return KMessageBox::warningContinueCancel(
 
818
        parent,
 
819
        i18n("The name \"%1\" starts with a dot, so the directory will be hidden by default.", name),
 
820
        i18n("Create hidden directory?"),
 
821
        continueGuiItem,
 
822
        cancelGuiItem,
 
823
        "confirm_create_hidden_dir") == KMessageBox::Continue;
 
824
}
 
825
 
 
826
KIO::SimpleJob* KonqOperations::newDir(QWidget * parent, const KUrl & baseUrl)
 
827
{
 
828
    return newDir(parent, baseUrl, NewDirFlags());
 
829
}
 
830
 
 
831
KIO::SimpleJob* KonqOperations::newDir(QWidget * parent, const KUrl & baseUrl, NewDirFlags flags)
 
832
{
 
833
    // Notice that kfile's KDirOperator::mkdir() is somewhat similar
807
834
    bool ok;
808
835
    QString name = i18n( "New Folder" );
809
836
    if ( baseUrl.isLocalFile() && QFileInfo( baseUrl.toLocalFile( KUrl::AddTrailingSlash ) + name ).exists() )
810
 
        name = KIO::RenameDialog::suggestName( baseUrl, i18n( "New Folder" ) );
 
837
        name = KIO::RenameDialog::suggestName(baseUrl, name);
811
838
 
812
 
    name = KInputDialog::getText ( i18n( "New Folder" ),
813
 
        i18n( "Enter folder name:" ), name, &ok, parent );
814
 
    if ( ok && !name.isEmpty() )
815
 
    {
816
 
        KUrl url;
817
 
        if ((name[0] == '/') || (name[0] == '~'))
818
 
        {
819
 
           url.setPath(KShell::tildeExpand(name));
820
 
        }
821
 
        else
822
 
        {
823
 
           name = KIO::encodeFileName( name );
824
 
           url = baseUrl;
825
 
           url.addPath( name );
826
 
        }
827
 
        return KonqOperations::mkdir( parent, url );
828
 
    }
 
839
    bool askAgain;
 
840
    do {
 
841
        askAgain = false;
 
842
        name = KInputDialog::getText ( i18n( "New Folder" ),
 
843
                                       i18n( "Enter folder name:" ), name, &ok, parent );
 
844
        if ( ok && !name.isEmpty() ) {
 
845
            KUrl url;
 
846
            if ((name[0] == '/') || (name[0] == '~')) {
 
847
                url.setPath(KShell::tildeExpand(name));
 
848
            } else {
 
849
                const bool viewShowsHiddenFiles = (flags & ViewShowsHiddenFile);
 
850
                if (!viewShowsHiddenFiles && name.startsWith('.')) {
 
851
                    if (!confirmCreatingHiddenDir(name, parent)) {
 
852
                        askAgain = true;
 
853
                        continue;
 
854
                    }
 
855
                }
 
856
                name = KIO::encodeFileName( name );
 
857
                url = baseUrl;
 
858
                url.addPath( name );
 
859
            }
 
860
            return KonqOperations::mkdir( parent, url );
 
861
        }
 
862
    } while (askAgain);
829
863
    return 0;
830
864
}
831
865