Ignore:
Timestamp:
May 5, 2011, 5:36:53 AM (14 years ago)
Author:
Dmitry A. Kuminov
Message:

trunk: Merged in qt 4.7.2 sources from branches/vendor/nokia/qt.

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk

  • trunk/src/gui/dialogs/qfiledialog_mac.mm

    r651 r846  
    11/****************************************************************************
    22**
    3 ** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
     3** Copyright (C) 201 Nokia Corporation and/or its subsidiary(-ies).
    44** All rights reserved.
    55** Contact: Nokia Corporation ([email protected])
     
    8383QT_USE_NAMESPACE
    8484
    85 @class QNSOpenSavePanelDelegate;
    86 
    87 @interface QNSOpenSavePanelDelegate : NSObject {
     85@class Q;
     86
     87@interface Q : NSObject {
    8888    @public
    8989    NSOpenPanel *mOpenPanel;
     
    120120- (void)createTextField;
    121121- (void)createPopUpButton:(const QString &)selectedFilter hideDetails:(BOOL)hideDetails;
     122
    122123- (void)createAccessory;
    123124
    124125@end
    125126
    126 @implementation QNSOpenSavePanelDelegate
     127@implementation Q
    127128
    128129- (id)initWithAcceptMode:(QT_PREPEND_NAMESPACE(QFileDialog::AcceptMode))acceptMode
    129130    title:(const QString &)title
    130     nameFilters:(const QStringList &)nameFilters
    131     selectedNameFilter:(const QString &)selectedNameFilter
    132131    hideNameFilterDetails:(bool)hideNameFilterDetails
    133132    qDirFilter:(QT_PREPEND_NAMESPACE(QDir::Filters))qDirFilter
     
    159158    mLastFilterCheckPath = new QString;
    160159    mQDirFilterEntryList = new QStringList;
    161     mNameFilterDropDownList = new QStringList(nameFilters);
    162     mSelectedNameFilter = new QStringList(qt_clean_filter_list(selectedNameFilter));
     160    mNameFilterDropDownList = new QStringList(priv->nameFilters);
     161    QString selectedVisualNameFilter = priv->qFileDialogUi->fileTypeCombo->currentText();
     162    mSelectedNameFilter = new QStringList([self findStrippedFilterWithVisualFilterName:selectedVisualNameFilter]);
     163
    163164    QFileInfo sel(selectFile);
    164165    if (sel.isDir()){
     
    169170        mCurrentSelection = new QString(sel.absoluteFilePath());
    170171    }
     172
    171173    [mSavePanel setTitle:qt_mac_QStringToNSString(title)];
    172     [self createPopUpButton:selectedNameFilter hideDetails:hideNameFilterDetails];
     174    [self createPopUpButton:selectedNameFilter hideDetails:hideNameFilterDetails];
    173175    [self createTextField];
    174176    [self createAccessory];
     
    285287        return NO;
    286288
     289
     290
     291
     292
     293
     294
     295
     296
     297
    287298    QString qtFileName = QT_PREPEND_NAMESPACE(qt_mac_NSStringToQString)(filename);
    288299    QFileInfo info(qtFileName.normalized(QT_PREPEND_NAMESPACE(QString::NormalizationForm_C)));
     
    295306    if (!mQDirFilterEntryList->contains(info.fileName()))
    296307        return NO;
    297 
    298     // Always accept directories regardless of their names:
    299     BOOL isDir;
    300     if ([[NSFileManager defaultManager] fileExistsAtPath:filename isDirectory:&isDir] && isDir)
    301         return YES;
    302308
    303309    // No filter means accept everything
     
    347353    Q_UNUSED(sender);
    348354    QString selection = mNameFilterDropDownList->value([mPopUpButton indexOfSelectedItem]);
    349     *mSelectedNameFilter = QT_PREPEND_NAMESPACE(qt_clean_filter_list)(selection);
     355    *mSelectedNameFilter = ;
    350356    [mSavePanel validateVisibleColumns];
    351357    [self updateProperties];
     
    490496            QString filter = hideDetails ? [self removeExtensions:filters->at(i)] : filters->at(i);
    491497            [mPopUpButton addItemWithTitle:QT_PREPEND_NAMESPACE(qt_mac_QStringToNSString)(filter)];
    492             if (filters->at(i) == selectedFilter)
     498            if (filters->at(i))
    493499                [mPopUpButton selectItemAtIndex:i];
    494500        }
    495501    }
     502
     503
     504
     505
     506
     507
     508
     509
     510
    496511}
    497512
     
    551566#else
    552567    QMacCocoaAutoReleasePool pool;
    553     QNSOpenSavePanelDelegate *delegate = static_cast<QNSOpenSavePanelDelegate *>(mDelegate);
     568    Q *>(mDelegate);
    554569    [delegate->mSavePanel setDirectory:qt_mac_QStringToNSString(directory)];
    555570#endif
     
    562577#else
    563578    QMacCocoaAutoReleasePool pool;
    564     QNSOpenSavePanelDelegate *delegate = static_cast<QNSOpenSavePanelDelegate *>(mDelegate);
     579    Q *>(mDelegate);
    565580    return qt_mac_NSStringToQString([delegate->mSavePanel directory]);
    566581#endif
     
    619634#else
    620635    QMacCocoaAutoReleasePool pool;
    621     QNSOpenSavePanelDelegate *delegate = static_cast<QNSOpenSavePanelDelegate *>(mDelegate);
     636    Q *>(mDelegate);
    622637    return [delegate selectedFiles];
    623638#endif
     
    630645#else
    631646    QMacCocoaAutoReleasePool pool;
    632     QNSOpenSavePanelDelegate *delegate = static_cast<QNSOpenSavePanelDelegate *>(mDelegate);
     647    Q *>(mDelegate);
    633648    bool hideDetails = q_func()->testOption(QFileDialog::HideNameFilterDetails);
    634649    [delegate setNameFilters:filters hideDetails:hideDetails];
     
    642657    Q_Q(QFileDialog);
    643658    QMacCocoaAutoReleasePool pool;
    644     QNSOpenSavePanelDelegate *delegate = static_cast<QNSOpenSavePanelDelegate *>(mDelegate);
     659    Q *>(mDelegate);
    645660    *(delegate->mQDirFilter) = model->filter();
    646661    delegate->mFileMode = fileMode;
     
    665680#else
    666681        QMacCocoaAutoReleasePool pool;
    667         QNSOpenSavePanelDelegate *delegate = static_cast<QNSOpenSavePanelDelegate *>(mDelegate);
     682        Q *>(mDelegate);
    668683        [delegate->mPopUpButton selectItemAtIndex:index];
    669684        [delegate filterChanged:nil];
     
    678693#else
    679694    QMacCocoaAutoReleasePool pool;
    680     QNSOpenSavePanelDelegate *delegate = static_cast<QNSOpenSavePanelDelegate *>(mDelegate);
     695    Q *>(mDelegate);
    681696    int index = [delegate->mPopUpButton indexOfSelectedItem];
    682697#endif
     
    693708#else
    694709    QMacCocoaAutoReleasePool pool;
    695     [reinterpret_cast<QNSOpenSavePanelDelegate *>(mDelegate) release];
     710    [reinterpret_cast<Q *>(mDelegate) release];
    696711    mDelegate = 0;
    697712#endif
     
    704719    if (!visible == q->isHidden())
    705720        return false;
     721
     722
     723
     724
     725
     726
     727
     728
    706729
    707730#ifndef QT_MAC_USE_COCOA
     
    726749    NavFileOrFolderInfo *theInfo = static_cast<NavFileOrFolderInfo *>(info);
    727750    QString file;
     751
    728752    const QtMacFilterName &fn
    729753           = fileDialogPrivate->filterInfo.filters.at(fileDialogPrivate->filterInfo.currentSelection);
     
    733757        UInt8 str_buffer[1024];
    734758        FSRefMakePath(&ref, str_buffer, 1024);
    735         file = QString::fromUtf8(reinterpret_cast<const char *>(str_buffer));
    736         int slsh = file.lastIndexOf(QLatin1Char('/'));
     759        = QString::fromUtf8(reinterpret_cast<const char *>(str_buffer));
     760        int slsh = .lastIndexOf(QLatin1Char('/'));
    737761        if (slsh != -1)
    738             file = file.right(file.length() - slsh - 1);
     762            file = path.right(path.length() - slsh - 1);
     763        else
     764            file = path;
    739765    }
    740766    QStringList reg = fn.regexp.split(QLatin1String(";"));
     
    748774            return true;
    749775    }
    750     return (theInfo->isFolder && !file.endsWith(QLatin1String(".app")));
     776
     777    if (theInfo->isFolder) {
     778        if ([[NSWorkspace sharedWorkspace] isFilePackageAtPath:qt_mac_QStringToNSString(path)])
     779            return false;
     780        return true;
     781    }
     782    return false;
    751783}
    752784
     
    770802                                                       fileDialogPrivate->filterInfo.currentSelection);
    771803            QStringList reg = fn.regexp.split(QLatin1String(";"), QString::SkipEmptyParts);
    772             QString r = reg.first();
    773             r  = r.right(r.length()-1);      // Strip the *
    774             base += r;                        //"." + QString::number(s->menuType);
     804            if (reg.count()) {
     805                QString r = reg.first();
     806                r  = r.right(r.length()-1);      // Strip the *
     807                base += r;                        //"." + QString::number(s->menuType);
     808            }
    775809            NavDialogSetSaveFileName(p->context, QCFString::toCFStringRef(base));
    776810        }
     
    10221056    bool selectDir = q->selectedFiles().isEmpty();
    10231057    QString selection(selectDir ? q->directory().absolutePath() : q->selectedFiles().value(0));
    1024     QNSOpenSavePanelDelegate *delegate = [[QNSOpenSavePanelDelegate alloc]
     1058    Q alloc]
    10251059        initWithAcceptMode:acceptMode
    10261060        title:q->windowTitle()
    1027         nameFilters:q->nameFilters()
    1028         selectedNameFilter:q->selectedNameFilter()
    10291061        hideNameFilterDetails:q->testOption(QFileDialog::HideNameFilterDetails)
    10301062        qDirFilter:model->filter()
     
    10431075    QMacCocoaAutoReleasePool pool;
    10441076    createNSOpenSavePanelDelegate();
    1045     QNSOpenSavePanelDelegate *delegate = static_cast<QNSOpenSavePanelDelegate *>(mDelegate);
     1077    Q *>(mDelegate);
    10461078    if (qt_mac_is_macsheet(q))
    10471079        [delegate showWindowModalSheet:q->parentWidget()];
     
    10591091    } else {
    10601092        QMacCocoaAutoReleasePool pool;
    1061         QNSOpenSavePanelDelegate *delegate = static_cast<QNSOpenSavePanelDelegate *>(mDelegate);
     1093        Q *>(mDelegate);
    10621094        [delegate closePanel];
    10631095        // Even when we hide it, we are still using a
     
    10921124    Q_Q(QFileDialog);
    10931125    QMacCocoaAutoReleasePool pool;
    1094     QNSOpenSavePanelDelegate *delegate = static_cast<QNSOpenSavePanelDelegate *>(mDelegate);
     1126    Q *>(mDelegate);
    10951127    [delegate runApplicationModalPanel];
    10961128    dialogResultCode_sys() == QDialog::Accepted ? q->accept() : q->reject();
     
    11071139        return QDialog::Accepted;
    11081140#else
    1109     QNSOpenSavePanelDelegate *delegate = static_cast<QNSOpenSavePanelDelegate *>(mDelegate);
     1141    Q *>(mDelegate);
    11101142    return [delegate dialogResultCode];
    11111143#endif
Note: See TracChangeset for help on using the changeset viewer.