⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 resourceeditor.cpp

📁 qt-x11-opensource-src-4.1.4.tar.gz源码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
    return m_qrc_stack->count();}QTreeView *ResourceEditor::view(int i) const{    if (i >= qrcCount() || i < 0)        return 0;    return qobject_cast<QTreeView*>(m_qrc_stack->widget(i));}ResourceModel *ResourceEditor::model(int i) const{    if (i >= qrcCount() || i < 0)        return 0;    return qobject_cast<ResourceModel*>(view(i)->model());}QTreeView *ResourceEditor::currentView() const{    int idx = currentIndex();    if (idx == -1)        return 0;    return view(idx);}ResourceModel *ResourceEditor::currentModel() const{    int idx = currentIndex();    if (idx == -1)        return 0;    return model(idx);}void ResourceEditor::getCurrentItem(QString &prefix, QString &file){    prefix.clear();    file.clear();    QTreeView *view = currentView();    if (view == 0)        return;    ResourceModel *model = currentModel();    if (model == 0)        return;    model->getItem(view->currentIndex(), prefix, file);}void ResourceEditor::addPrefix(){    QTreeView *view = currentView();    if (view == 0)        return;    ResourceModel *model = currentModel();    if (model == 0)        return;    QModelIndex idx = model->addNewPrefix();    view->selectionModel()->setCurrentIndex(idx, QItemSelectionModel::ClearAndSelect);    model->save();    updateUi();}void ResourceEditor::addFiles(){    QTreeView *view = currentView();    if (view == 0)        return;    ResourceModel *model = currentModel();    if (model == 0)        return;    QStringList file_list = QFileDialog::getOpenFileNames(this, tr("Open file"),                                                            model->absolutePath(QString()),                                                            tr("All files (*)"));    if (file_list.isEmpty())        return;    QModelIndex idx = model->addFiles(view->currentIndex(), file_list);    if (idx.isValid()) {        view->setExpanded(model->prefixIndex(view->currentIndex()), true);        view->selectionModel()->setCurrentIndex(idx, QItemSelectionModel::ClearAndSelect);    }    model->save();    updateUi();}void ResourceEditor::deleteItem(){    QTreeView *view = currentView();    if (view == 0)        return;    ResourceModel *model = currentModel();    if (model == 0)        return;    QModelIndex cur_idx = view->currentIndex();    if (!cur_idx.isValid())        return;    QModelIndex idx = model->deleteItem(cur_idx);    if (idx.isValid()) {        QModelIndex pref_idx = model->prefixIndex(idx);        if (pref_idx != idx)            view->setExpanded(pref_idx, true);        view->selectionModel()->setCurrentIndex(idx, QItemSelectionModel::ClearAndSelect);    }    model->save();    updateUi();}void ResourceEditor::updateUi(){    QString prefix, file;    getCurrentItem(prefix, file);    m_add_button->setEnabled(currentModel() != 0);    m_remove_button->setEnabled(!prefix.isEmpty());    m_add_files_button->setEnabled(!prefix.isEmpty());    m_remove_qrc_button->setEnabled(currentModel() != 0);    QString name;    if (m_form != 0)        name = QFileInfo(m_form->fileName()).fileName();    if (name.isEmpty())        name = tr("Untitled");    setWindowTitle(tr("Resource Editor: %1").arg(name));}int ResourceEditor::currentIndex() const{    return m_qrc_stack->currentIndex();}void ResourceEditor::setCurrentIndex(int i){    QVariant v = m_qrc_combo->itemData(i);    if (v.type() == QVariant::Int) {        switch (v.toInt()) {            case COMBO_EMPTY_DATA: {                    bool blocked = m_qrc_combo->blockSignals(true);                    m_qrc_combo->setCurrentIndex(i);                    m_qrc_combo->blockSignals(blocked);                }                break;            case COMBO_OPEN_DATA:                openView();                break;            case COMBO_NEW_DATA:                newView();                break;            default:                break;        }    } else {        bool blocked = m_qrc_combo->blockSignals(true);        m_qrc_combo->setCurrentIndex(i);        m_qrc_combo->blockSignals(blocked);        m_qrc_stack->setCurrentIndex(i);    }    QAbstractItemView *view = currentView();    if (view != 0)        itemChanged(view->currentIndex());    updateUi();}void ResourceEditor::updateQrcStack(){    if (m_ignore_update)        return;    m_qrc_combo->clear();    while (m_qrc_stack->count() > 0) {        QWidget *w = m_qrc_stack->widget(0);        m_qrc_stack->removeWidget(w);        delete w;    }    bool empty_list = true;    QStringList qrc_file_list;    if (m_form != 0) {        qrc_file_list = m_form->resourceFiles();        foreach (QString qrc_file, qrc_file_list) {            if (QFile::exists(qrc_file)) {                addView(qrc_file);                empty_list = false;            }        }    }    m_qrc_combo->addItem(QIcon(), tr("New..."), QVariant(COMBO_NEW_DATA));    m_qrc_combo->addItem(QIcon(), tr("Open..."), QVariant(COMBO_OPEN_DATA));    if (empty_list)        insertEmptyComboItem();    updateUi();}QString ResourceEditor::qrcName(const QString &path) const{    if (m_form == 0 || path.isEmpty())        return tr("Untitled");    return m_form->absoluteDir().relativeFilePath(path);}void ResourceEditor::updateQrcPaths(){    for (int i = 0; i < m_qrc_stack->count(); ++i) {        ResourceModel *model = this->model(i);        m_qrc_combo->setItemText(i, qrcName(model->fileName()));    }    updateUi();}void ResourceEditor::addView(const QString &qrc_file){    int idx = qrcCount();    QTreeView *view = new QrcView;    ResourceModel *model = g_model_cache()->model(qrc_file);    if (model == 0)        return;    removeEmptyComboItem();    view->setModel(model);    m_qrc_combo->insertItem(idx, qrcName(qrc_file));    m_qrc_stack->addWidget(view);    connect(view->selectionModel(), SIGNAL(currentChanged(QModelIndex,QModelIndex)),            this, SLOT(updateUi()));    connect(view, SIGNAL(activated(QModelIndex)), this, SLOT(itemActivated(QModelIndex)));    connect(view->selectionModel(), SIGNAL(currentChanged(QModelIndex, QModelIndex)),            this, SLOT(itemChanged(QModelIndex)));//    connect(model, SIGNAL(dirtyChanged(bool)), this, SLOT(updateUi()));    setCurrentIndex(idx);    m_ignore_update = true;    if (m_form && !qrc_file.isEmpty())        m_form->addResourceFile(qrc_file);    m_ignore_update = false;    updateUi();}void ResourceEditor::setCurrentFile(const QString &_qrc_path, const QString &file_path){    QDir form_dir = m_form->absoluteDir();    QString qrc_path = form_dir.relativeFilePath(_qrc_path);    for (int i = 0; i < m_qrc_stack->count(); ++i) {        ResourceModel *model = this->model(i);        if (qrc_path == form_dir.relativeFilePath(model->fileName())) {            setCurrentIndex(i);            QModelIndex index = model->getIndex(file_path);            view(i)->setCurrentIndex(index);            break;        }    }    updateUi();}void ResourceEditor::itemChanged(const QModelIndex &index){    QString file_name, qrc_path;    if (ResourceModel *model = currentModel()) {        QString prefix, file;        model->getItem(index, prefix, file);        if (!file.isEmpty()) {            file_name = QLatin1Char(':')                        + prefix                        + QLatin1Char('/')                        + file;            file_name = QDir::cleanPath(file_name);            qrc_path = m_form->absoluteDir().absoluteFilePath(model->fileName());        }    }    emit currentFileChanged(qrc_path, file_name);}void ResourceEditor::itemActivated(const QModelIndex &index){    ResourceModel *model = currentModel();    if (!model)        return;    QString prefix, file;    model->getItem(index, prefix, file);    if (file.isEmpty())        return;    QString file_name = QLatin1Char(':')                        + prefix                        + QLatin1Char('/')                        + file;    file_name = QDir::cleanPath(file_name);    QString qrc_path = m_form->absoluteDir().absoluteFilePath(model->fileName());    emit fileActivated(qrc_path, file_name);}void ResourceEditor::saveCurrentView(){    ResourceModel *model = currentModel();    if (model == 0)        return;    if (model->fileName().isEmpty()) {        QString file_name = QFileDialog::getSaveFileName(this, tr("Save resource file"),                                                            m_form->absoluteDir().absolutePath(),                                                            tr("Resource files (*.qrc)"));        if (file_name.isEmpty())            return;        model->setFileName(file_name);        m_ignore_update = true;        m_form->addResourceFile(file_name);        m_ignore_update = false;        QString s = QFileInfo(file_name).fileName();        bool blocked = m_qrc_combo->blockSignals(true);        m_qrc_combo->setItemText(currentIndex(), s);        m_qrc_combo->setCurrentIndex(-1);        m_qrc_combo->setCurrentIndex(currentIndex());        m_qrc_combo->blockSignals(blocked);    }    model->save();    updateUi();}int ResourceEditor::indexOfView(QTreeView *view){    for (int i = 0; i < m_qrc_stack->count(); ++i) {        if (view == m_qrc_stack->widget(i))            return i;    }    return -1;}void ResourceEditor::removeCurrentView(){    QTreeView *view = currentView();    if (view == 0)        return;    ResourceModel *model = currentModel();    if (model == 0)        return;    QString file_name = model->fileName();    int idx = indexOfView(view);    if (idx == -1)        return;    m_qrc_combo->removeItem(idx);    m_qrc_stack->removeWidget(view);    delete view;    disconnect(model, SIGNAL(dirtyChanged(bool)), this, SLOT(updateUi()));    m_ignore_update = true;    if (m_form != 0 && !file_name.isEmpty())        m_form->removeResourceFile(file_name);    m_ignore_update = false;    if (qrcCount() == 0) {        insertEmptyComboItem();    } else {        if (idx < qrcCount())            setCurrentIndex(idx);        else if (idx > 0)            setCurrentIndex(idx - 1);    }    updateUi();}void ResourceEditor::reloadCurrentView(){    ResourceModel *model = currentModel();    if (model == 0)        return;    model->reload();    updateUi();}void ResourceEditor::newView(){    QString file_name = QFileDialog::getSaveFileName(this, tr("New resource file"),                                                        m_form->absoluteDir().absolutePath(),                                                        tr("Resource files (*.qrc)"));    if (file_name.isEmpty()) {        setCurrentIndex(m_qrc_stack->count() == 0 ? 0 : m_qrc_stack->currentIndex());        return;    }    ResourceFile rf(file_name);    rf.save();    addView(file_name);}void ResourceEditor::openView(){    QString file_name = QFileDialog::getOpenFileName(this, tr("Open resource file"),                                                        m_form->absoluteDir().absolutePath(),                                                        tr("Resource files (*.qrc)"));    if (file_name.isEmpty()) {        setCurrentIndex(m_qrc_stack->count() == 0 ? 0 : m_qrc_stack->currentIndex());        return;    }    addView(file_name);}void ResourceEditor::setActiveForm(QDesignerFormWindowInterface *form){    if (form == m_form)        return;    if (m_form != 0) {        disconnect(m_form, SIGNAL(fileNameChanged(QString)),                    this, SLOT(updateQrcPaths()));        disconnect(m_form, SIGNAL(resourceFilesChanged()),                    this, SLOT(updateQrcStack()));    }    m_form = form;    updateQrcStack();    if (m_form != 0) {        connect(m_form, SIGNAL(fileNameChanged(QString)),                    this, SLOT(updateQrcPaths()));        connect(m_form, SIGNAL(resourceFilesChanged()),                    this, SLOT(updateQrcStack()));    }    setEnabled(m_form != 0);}} // namespace qdesigner_internal#include "resourceeditor.moc"

⌨️ 快捷键说明

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