findicondialog.cpp

来自「奇趣公司比较新的qt/emd版本」· C++ 代码 · 共 598 行 · 第 1/2 页

CPP
598
字号
        m_file_data.file = path;    updateButtons();}void FindIconDialog::itemChanged( const QString &file_name){    if (activeBox() != LanguageBox)        return;    m_language_data.file = file_name;    updateButtons();}void FindIconDialog::itemActivated(const QString &file_name){    if (activeBox() != LanguageBox)        return;    itemChanged(file_name);    if (isIconValid(file_name))        accept();    updateButtons();}void FindIconDialog::setViewDir(const QString &path){    static const QIcon dir_icon(style()->standardPixmap(QStyle::SP_DirClosedIcon));#ifdef Q_OS_WIN    static const QIcon drive_icon(style()->standardPixmap(QStyle::SP_DriveHDIcon));    if(!isRoot)#endif    {        if (path == m_view_dir.path() || !QFile::exists(path))            return;    }    m_view_dir.setPath(path);    ui->m_icon_view->clear();    QStringList subdir_list;    const QString wildcard = QString(QLatin1Char('*'));    const QStringList wildcardList = QStringList(wildcard);    #ifdef Q_OS_WIN    if (isRoot) {        QFileInfoList qFIL = QDir::drives();        foreach(const QFileInfo &info, qFIL)             subdir_list.append(info.path());    } else        subdir_list = m_view_dir.entryList(wildcardList, QDir::Dirs | QDir::NoDotAndDotDot);    foreach (const QString &subdir, subdir_list)        createListWidgetItem((isRoot ? drive_icon : dir_icon), subdir, g_dir_item_id, ui->m_icon_view);#else    subdir_list = m_view_dir.entryList(wildcardList, QDir::Dirs | QDir::NoDotAndDotDot);    foreach (const QString &subdir, subdir_list)        createListWidgetItem(dir_icon, subdir, g_dir_item_id, ui->m_icon_view);#endif    const QStringList icon_file_list = m_view_dir.entryList(extensionList(), QDir::Files);    foreach (const QString &icon_file, icon_file_list) {        QIcon icon(m_view_dir.filePath(icon_file));        if (!icon.isNull())            createListWidgetItem(icon, icon_file, g_file_item_id, ui->m_icon_view);    }}void FindIconDialog::setFile(const QString &path){    QString file;    QString dir = path;#ifdef Q_OS_WIN    isRoot = false;    if (dir.contains(rootDir, Qt::CaseInsensitive))        isRoot = true;    if (!isRoot)#endif    {        QFileInfo info(path);        if (info.isFile()) {            dir = info.path();            file = info.fileName();        }    }    setViewDir(dir);    const int cursorPos = ui->m_file_input->lineEdit()->cursorPosition();    ui->m_file_input->lineEdit()->setText(path);    ui->m_file_input->lineEdit()->setCursorPosition(cursorPos);    m_file_data.file.clear();    ui->m_icon_view->clearSelection();    if (!file.isEmpty()) {        const QList<QListWidgetItem*> item_list = ui->m_icon_view->findItems(file, Qt::MatchExactly);        if (!item_list.isEmpty()) {            ui->m_icon_view->setItemSelected(item_list.first(), true);            m_file_data.file = path;        }    }    updateButtons();}FindIconDialog::~FindIconDialog(){    delete ui;    ui = 0;}void FindIconDialog::setQrc(const QString &qrc_path, const QString &file_name){    if (!m_resource_editor)        return;    m_resource_editor->setCurrentFile(qrc_path, file_name);    m_resource_data.file = file_name;    m_resource_data.qrc = qrc_path;    updateButtons();}void FindIconDialog::setLanguagePath(const QString &file_name){    if (!m_language_editor)        return;    m_language_editor->setCurrentPath(file_name);    m_language_data.file = file_name;    updateButtons();}void FindIconDialog::setPaths(const QString &qrcPath, const QString &filePath){    if (!qrcPath.isEmpty()) {        setFile(defaultFilePath(m_form));        setActiveBox(ResourceBox);        setQrc(qrcPath, filePath);        return;    }    if (!filePath.isEmpty()) {        QDesignerFormEditorInterface *core = m_form->core();        QDesignerLanguageExtension *lang = qt_extension<QDesignerLanguageExtension*>(core->extensionManager(), core);        if (lang && lang->isLanguageResource(filePath)) {            setActiveBox(LanguageBox);            m_language_editor->setCurrentPath(filePath);        } else {            setActiveBox(FileBox);            setFile(filePath);        }        return;    }    // both empty, default    const InputBox previousBox = previousInputBox();    switch (previousBox) {    case LanguageBox:    case ResourceBox:         if (m_language_editor) {             setLanguagePath(defaultLanguagePath());             setActiveBox(LanguageBox);         } else {             setFile(defaultFilePath(m_form));             setQrc(defaultQrcPath(), QString());             setActiveBox(ResourceBox);         }         break;    case FileBox:         setFile(defaultFilePath(m_form));         break;    }}void FindIconDialog::updateButtons(){    ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(isIconValid(filePath()));}void FindIconDialog::setActiveBox(){    InputBox inputBox = FileBox;    if (sender() != ui->m_specify_file_input) {        if (m_language_editor)            inputBox = LanguageBox;        else            inputBox = ResourceBox;    }    setActiveBox(inputBox);}void FindIconDialog::setActiveBox(int box){    switch (box) {    case  FileBox:        ui->m_specify_file_input->setChecked(true);        ui->m_widget_stack->setCurrentIndex(1);         break;    default:         ui->m_widget_stack->setCurrentIndex(m_language_editor ? 2 : 0);         break;    }    updateButtons();}FindIconDialog::InputBox FindIconDialog::activeBox() const{    const int page = ui->m_widget_stack->currentIndex();    switch (page) {        case 2:  return LanguageBox;        case 1:  return FileBox;        case 0:        default: return ResourceBox;    }    return FileBox;}QString FindIconDialog::qrcPath() const{    return activeBox() == ResourceBox ? m_resource_data.qrc : QString();}QString FindIconDialog::filePath() const{    switch (activeBox()) {        case FileBox:     return m_file_data.file;        case ResourceBox: return m_resource_data.file;        case LanguageBox: return m_language_data.file;    }    return QString();}QString FindIconDialog::defaultQrcPath(){    QSettings settings;    return settings.value(QLatin1String("FindIconDialog/defaultQrcPath")).toString();}QString FindIconDialog::defaultFilePath(QDesignerFormWindowInterface *form){    QSettings settings;    const QString path = settings.value(QLatin1String("FindIconDialog/defaultFilePath")).toString();    if (path.isEmpty())         return form->absoluteDir().path();    return path;}QString FindIconDialog::defaultLanguagePath(){    QSettings settings;    return settings.value(QLatin1String("FindIconDialog/defaultLanguagePath")).toString();}void FindIconDialog::setDefaultQrcPath(const QString &path){    QSettings settings;    settings.setValue(QLatin1String("FindIconDialog/defaultQrcPath"), path);}void FindIconDialog::setDefaultFilePath(const QString &path){    QSettings settings;    settings.setValue(QLatin1String("FindIconDialog/defaultFilePath"), path);}void FindIconDialog::setDefaultLanguagePath(const QString &path){    QSettings settings;    settings.setValue(QLatin1String("FindIconDialog/defaultLanguagePath"), path);}FindIconDialog::InputBox FindIconDialog::previousInputBox(){    QSettings settings;    const QString box = settings.value(QLatin1String("FindIconDialog/previousInputBox")).toString();    if (box == QLatin1String("language"))        return LanguageBox;    if (box == QLatin1String("file"))        return FileBox;    return ResourceBox;}void FindIconDialog::setPreviousInputBox(InputBox box){    QSettings settings;    QString val;    switch (box) {        case FileBox:     val = QLatin1String("file"); break;        case ResourceBox: val = QLatin1String("resource"); break;        case LanguageBox: val = QLatin1String("language"); break;    }    settings.setValue(QLatin1String("FindIconDialog/previousInputBox"), val);}} // namespace qdesigner_internal

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?