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 + -
显示快捷键?