forked from qt-creator/qt-creator
QmlDesigner.ItemLibrary: Fix crash for import change
This commit is contained in:
@@ -41,6 +41,7 @@
|
|||||||
#include "customdraganddrop.h"
|
#include "customdraganddrop.h"
|
||||||
#include <model.h>
|
#include <model.h>
|
||||||
#include <metainfo.h>
|
#include <metainfo.h>
|
||||||
|
#include "rewritingexception.h"
|
||||||
|
|
||||||
#include <QFileInfo>
|
#include <QFileInfo>
|
||||||
#include <QFileIconProvider>
|
#include <QFileIconProvider>
|
||||||
@@ -355,6 +356,33 @@ void ItemLibraryWidget::setModel(Model *model)
|
|||||||
updateModel();
|
updateModel();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ItemLibraryWidget::emitImportChecked()
|
||||||
|
{
|
||||||
|
if (!m_d->model)
|
||||||
|
return;
|
||||||
|
|
||||||
|
bool qtOnlyImport = false;
|
||||||
|
bool meegoImport = false;
|
||||||
|
bool symbianImport = false;
|
||||||
|
|
||||||
|
foreach (const Import &import, m_d->model->imports()) {
|
||||||
|
if (import.isLibraryImport()) {
|
||||||
|
if (import.url().contains(QString("meego"), Qt::CaseInsensitive))
|
||||||
|
meegoImport = true;
|
||||||
|
if (import.url().contains(QString("Qt"), Qt::CaseInsensitive) || import.url().contains(QString("QtQuick"), Qt::CaseInsensitive))
|
||||||
|
qtOnlyImport = true;
|
||||||
|
if (import.url().contains(QString("symbian"), Qt::CaseInsensitive))
|
||||||
|
symbianImport = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (meegoImport || symbianImport)
|
||||||
|
qtOnlyImport = false;
|
||||||
|
|
||||||
|
emit qtBasicOnlyChecked(qtOnlyImport);
|
||||||
|
emit meegoChecked(meegoImport);
|
||||||
|
emit symbianChecked(symbianImport);
|
||||||
|
}
|
||||||
|
|
||||||
void ItemLibraryWidget::setImportFilter(FilterChangeFlag flag)
|
void ItemLibraryWidget::setImportFilter(FilterChangeFlag flag)
|
||||||
{
|
{
|
||||||
@@ -368,31 +396,33 @@ void ItemLibraryWidget::setImportFilter(FilterChangeFlag flag)
|
|||||||
if (block == true)
|
if (block == true)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
|
|
||||||
|
|
||||||
|
FilterChangeFlag oldfilterFlag = m_filterFlag;
|
||||||
|
|
||||||
|
QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
|
||||||
|
try {
|
||||||
block = true;
|
block = true;
|
||||||
if (flag == QtBasic) {
|
if (flag == QtBasic) {
|
||||||
removeImport(QLatin1String("com.meego"));
|
removeImport(QLatin1String("com.meego"));
|
||||||
removeImport(QLatin1String("com.nokia.symbian"));
|
removeImport(QLatin1String("com.nokia.symbian"));
|
||||||
emit qtBasicOnlyChecked(true);
|
|
||||||
emit meegoChecked(false);
|
|
||||||
emit symbianChecked(false);
|
|
||||||
} else if (flag == Symbian) {
|
} else if (flag == Symbian) {
|
||||||
removeImport(QLatin1String("com.meego"));
|
removeImport(QLatin1String("com.meego"));
|
||||||
addImport(QLatin1String("com.nokia.symbian"), QLatin1String("1.0"));
|
addImport(QLatin1String("com.nokia.symbian"), QLatin1String("1.0"));
|
||||||
emit qtBasicOnlyChecked(false);
|
|
||||||
emit meegoChecked(false);
|
|
||||||
emit symbianChecked(true);
|
|
||||||
} else if (flag == Meego) {
|
} else if (flag == Meego) {
|
||||||
removeImport(QLatin1String("com.nokia.symbian"));
|
removeImport(QLatin1String("com.nokia.symbian"));
|
||||||
addImport(QLatin1String("com.meego"), QLatin1String("1.0"));
|
addImport(QLatin1String("com.meego"), QLatin1String("1.0"));
|
||||||
emit qtBasicOnlyChecked(false);
|
|
||||||
emit meegoChecked(true);
|
|
||||||
emit symbianChecked(false);
|
|
||||||
}
|
}
|
||||||
QApplication::restoreOverrideCursor();
|
QApplication::restoreOverrideCursor();
|
||||||
block = false;
|
block = false;
|
||||||
m_filterFlag = flag;
|
m_filterFlag = flag;
|
||||||
|
} catch (RewritingException &xcetion) {
|
||||||
|
QApplication::restoreOverrideCursor();
|
||||||
|
m_filterFlag = oldfilterFlag;
|
||||||
|
block = false;
|
||||||
|
// do something about it
|
||||||
|
}
|
||||||
|
|
||||||
|
emitImportChecked();
|
||||||
}
|
}
|
||||||
|
|
||||||
void ItemLibraryWidget::onQtBasicOnlyChecked(bool b)
|
void ItemLibraryWidget::onQtBasicOnlyChecked(bool b)
|
||||||
|
|||||||
@@ -87,6 +87,7 @@ protected:
|
|||||||
void wheelEvent(QWheelEvent *event);
|
void wheelEvent(QWheelEvent *event);
|
||||||
void removeImport(const QString &name);
|
void removeImport(const QString &name);
|
||||||
void addImport(const QString &name, const QString &version);
|
void addImport(const QString &name, const QString &version);
|
||||||
|
void emitImportChecked();
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void itemActivated(const QString& itemName);
|
void itemActivated(const QString& itemName);
|
||||||
|
|||||||
Reference in New Issue
Block a user